diff --git a/documentation/babel.config.js b/documentation/babel.config.js deleted file mode 100644 index e00595dae7..0000000000 --- a/documentation/babel.config.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - presets: [require.resolve('@docusaurus/core/lib/babel/preset')], -}; diff --git a/documentation/docusaurus.config.js b/documentation/docusaurus.config.js index 6ced08f8b7..f067d5a80c 100644 --- a/documentation/docusaurus.config.js +++ b/documentation/docusaurus.config.js @@ -47,7 +47,7 @@ const config = { editUrl: 'https://github.com/gabber235/TypeWriter/tree/develop/documentation/', routeBasePath: '/', - lastVersion: '0.5.1', + lastVersion: '0.6.0', showLastUpdateAuthor: true, showLastUpdateTime: true, versions: { @@ -76,9 +76,9 @@ const config = { announcementBar: { id: 'support_us', content: - 'TypeWriter 0.5.1 is out!', + 'TypeWriter 0.6.0 is out!', isCloseable: true, - }, + }, mermaid: { theme: { light: 'base', dark: 'base' }, options: { diff --git a/documentation/package-lock.json b/documentation/package-lock.json index 125dabc6c9..b588c1044e 100644 --- a/documentation/package-lock.json +++ b/documentation/package-lock.json @@ -9,10 +9,10 @@ "version": "0.0.0", "dependencies": { "@dagrejs/dagre": "^1.1.3", - "@docusaurus/core": "^3.6.0", - "@docusaurus/faster": "^3.5.2", - "@docusaurus/preset-classic": "^3.6.0", - "@docusaurus/theme-mermaid": "^3.6.0", + "@docusaurus/core": "^3.6.1", + "@docusaurus/faster": "^3.6.1", + "@docusaurus/preset-classic": "^3.6.1", + "@docusaurus/theme-mermaid": "^3.6.1", "@mdx-js/react": "^3.1.0", "@rive-app/react-canvas": "^4.16.0", "clsx": "^2.1.1", @@ -27,10 +27,10 @@ "screenfull": "^6.0.2" }, "devDependencies": { - "@docusaurus/lqip-loader": "^3.6.0", - "@docusaurus/module-type-aliases": "^3.6.0", - "@docusaurus/tsconfig": "^3.6.0", - "@docusaurus/types": "^3.6.0", + "@docusaurus/lqip-loader": "^3.6.1", + "@docusaurus/module-type-aliases": "^3.6.1", + "@docusaurus/tsconfig": "^3.6.1", + "@docusaurus/types": "^3.6.1", "@iconify/react": "^5.0.2", "@types/react": "^18.3.12", "autoprefixer": "^10.4.20", @@ -45,22 +45,22 @@ } }, "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.17.6.tgz", + "integrity": "sha512-lkDoW4I7h2kKlIgf3pUt1LqvxyYKkVyiypoGLlUnhPSnCpmeOwudM6rNq6YYsCmdQtnDQoW5lUNNuj6ASg3qeg==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" + "@algolia/autocomplete-plugin-algolia-insights": "1.17.6", + "@algolia/autocomplete-shared": "1.17.6" } }, "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "version": "1.17.6", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.17.6.tgz", + "integrity": "sha512-17NnaacuFzSWVuZu4NKzVeaFIe9Abpw8w+/gjc7xhZFtqj+GadufzodIdchwiB2eM2cDdiR3icW7gbNTB3K2YA==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" + "@algolia/autocomplete-shared": "1.17.6" }, "peerDependencies": { "search-insights": ">= 1 < 3" @@ -79,7 +79,7 @@ "algoliasearch": ">= 4.9.1 < 6" } }, - "node_modules/@algolia/autocomplete-preset-algolia/node_modules/@algolia/autocomplete-shared": { + "node_modules/@algolia/autocomplete-shared": { "version": "1.17.6", "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.17.6.tgz", "integrity": "sha512-aq/3V9E00Tw2GC/PqgyPGXtqJUlVc17v4cn1EUhSc+O/4zd04Uwb3UmPm8KDaYQQOrkt1lwvCj2vG2wRE5IKhw==", @@ -89,16 +89,6 @@ "algoliasearch": ">= 4.9.1 < 6" } }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "license": "MIT", - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, "node_modules/@algolia/cache-browser-local-storage": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", @@ -124,15 +114,15 @@ } }, "node_modules/@algolia/client-abtesting": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.12.0.tgz", - "integrity": "sha512-hx4eVydkm3yrFCFxmcBtSzI/ykt0cZ6sDWch+v3JTgKpD2WtosMJU3Upv1AjQ4B6COSHCOWEX3vfFxW6OoH6aA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.13.0.tgz", + "integrity": "sha512-6CoQjlMi1pmQYMQO8tXfuGxSPf6iKX5FP9MuMe6IWmvC81wwTvOehnwchyBl2wuPVhcw2Ar53K53mQ60DAC64g==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -204,24 +194,24 @@ } }, "node_modules/@algolia/client-common": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.12.0.tgz", - "integrity": "sha512-od3WmO8qxyfNhKc+K3D17tvun3IMs/xMNmxCG9MiElAkYVbPPTRUYMkRneCpmJyQI0hNx2/EA4kZgzVfQjO86Q==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.13.0.tgz", + "integrity": "sha512-2SP6bGGWOTN920MLZv8s7yIR3OqY03vEe4U+vb2MGdL8a/8EQznF3L/nTC/rGf/hvEfZlX2tGFxPJaF2waravg==", "license": "MIT", "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-insights": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.12.0.tgz", - "integrity": "sha512-8alajmsYUd+7vfX5lpRNdxqv3Xx9clIHLUItyQK0Z6gwGMbVEFe6YYhgDtwslMAP0y6b0WeJEIZJMLgT7VYpRw==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.13.0.tgz", + "integrity": "sha512-ldHTe+LVgC6L4Wr6doAQQ7Ku0jAdhaaPg1T+IHzmmiRZb2Uq5OsjW2yC65JifOmzPCiMkIZE2mGRpWgkn5ktlw==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -249,30 +239,30 @@ } }, "node_modules/@algolia/client-query-suggestions": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.12.0.tgz", - "integrity": "sha512-Q5CszzGWfxbIDs9DJ/QJsL7bP6h+lJMg27KxieEnI9KGCu0Jt5iFA3GkREkgRZxRdzlHbZKkrIzhtHVbSHw/rg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.13.0.tgz", + "integrity": "sha512-pYo0jbLUtPDN1r341UHTaF2fgN5rbaZfDZqjPRKPM+FRlRmxFxqFQm1UUfpkSUWYGn7lECwDpbKYiKUf81MTwA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/client-search": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.12.0.tgz", - "integrity": "sha512-R3qzEytgVLHOGNri+bpta6NtTt7YtkvUe/QBcAmMDjW4Jk1P0eBYIPfvnzIPbINRsLxIq9fZs9uAYBgsrts4Zg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.13.0.tgz", + "integrity": "sha512-s2ge3uZ6Zg2sPSFibqijgEYsuorxcc8KVHg3I95nOPHvFHdnBtSHymhZvq4sp/fu8ijt/Y8jLwkuqm5myn+2Sg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -285,15 +275,15 @@ "license": "MIT" }, "node_modules/@algolia/ingestion": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.12.0.tgz", - "integrity": "sha512-zpHo6qhR22tL8FsdSI4DvEraPDi/019HmMrCFB/TUX98yzh5ooAU7sNW0qPL1I7+S++VbBmNzJOEU9VI8tEC8A==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.13.0.tgz", + "integrity": "sha512-fm5LEOe4FPDOc1D+M9stEs8hfcdmbdD+pt9og5shql6ueTZJANDbFoQhDOpiPJizR/ps1GwmjkWfUEywx3sV+Q==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -315,15 +305,15 @@ } }, "node_modules/@algolia/monitoring": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.12.0.tgz", - "integrity": "sha512-i2AJZED/zf4uhxezAJUhMKoL5QoepCBp2ynOYol0N76+TSoohaMADdPnWCqOULF4RzOwrG8wWynAwBlXsAI1RQ==", + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.13.0.tgz", + "integrity": "sha512-e8Hshlnm2G5fapyUgWTBwhJ22yXcnLtPC4LWZKx7KOvv35GcdoHtlUBX94I/sWCJLraUr65JvR8qOo3LXC43dg==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -388,12 +378,12 @@ } }, "node_modules/@algolia/requester-browser-xhr": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.12.0.tgz", - "integrity": "sha512-KxwleraFuVoEGCoeW6Y1RAEbgBMS7SavqeyzWdtkJc6mXeCOJXn1iZitb8Tyn2FcpMNUKlSm0adrUTt7G47+Ow==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.13.0.tgz", + "integrity": "sha512-NV6oSCt5lFuzfsVQoSBpewEWf/h4ySr7pv2bfwu9yF/jc/g39pig8+YpuqsxlRWBm/lTGVA2V0Ai9ySwrNumIA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -406,24 +396,24 @@ "license": "MIT" }, "node_modules/@algolia/requester-fetch": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.12.0.tgz", - "integrity": "sha512-FuDZXUGU1pAg2HCnrt8+q1VGHKChV/LhvjvZlLOT7e56GJie6p+EuLu4/hMKPOVuQQ8XXtrTHKIU3Lw+7O5/bQ==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.13.0.tgz", + "integrity": "sha512-094bK4rumf+rXJazxv3mq6eKRM0ep5AxIo8T0YmOdldswQt79apeufFiPLN19nHEWH22xR2FelimD+T/wRSP+Q==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@algolia/requester-node-http": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.12.0.tgz", - "integrity": "sha512-ncDDY7CxZhMs6LIoPl+vHFQceIBhYPY5EfuGF1V7beO0U38xfsCYEyutEFB2kRzf4D9Gqppn3iWX71sNtrKcuw==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.13.0.tgz", + "integrity": "sha512-JY5xhEYMgki53Wm+A6R2jUpOUdD0zZnBq+PC5R1TGMNOYL1s6JjDrJeMsvaI2YWxYMUSoCnRoltN/yf9RI8n3A==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0" + "@algolia/client-common": "5.13.0" }, "engines": { "node": ">= 14.0.0" @@ -2275,21 +2265,21 @@ } }, "node_modules/@docsearch/css": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.3.tgz", - "integrity": "sha512-3uvbg8E7rhqE1C4oBAK3tGlS2qfhi9zpfZgH/yjDPF73vd9B41urVIKujF4rczcF4E3qs34SedhehiDJ4UdNBA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.7.0.tgz", + "integrity": "sha512-1OorbTwi1eeDmr0v5t+ckSRlt1zM5GHjm92iIl3kUu7im3GHuP+csf6E0WBg8pdXQczTWP9J9+o9n+Vg6DH5cQ==", "license": "MIT" }, "node_modules/@docsearch/react": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.3.tgz", - "integrity": "sha512-2munr4uBuZq1PG+Ge+F+ldIdxb3Wi8OmEIv2tQQb4RvEvvph+xtQkxwHzVIEnt5s+HecwucuXwB+3JhcZboFLg==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.7.0.tgz", + "integrity": "sha512-8e6tdDfkYoxafEEPuX5eE1h9cTkLvhe4KgoFkO5JCddXSQONnN1FHcDZRI4r8894eMpbYq6rdJF0dVYh8ikwNQ==", "license": "MIT", "dependencies": { - "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-core": "1.17.6", "@algolia/autocomplete-preset-algolia": "1.17.6", - "@docsearch/css": "3.6.3", - "algoliasearch": "^5.11.0" + "@docsearch/css": "3.7.0", + "algoliasearch": "^5.12.0" }, "peerDependencies": { "@types/react": ">= 16.8.0 < 19.0.0", @@ -2313,78 +2303,78 @@ } }, "node_modules/@docsearch/react/node_modules/@algolia/client-analytics": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.12.0.tgz", - "integrity": "sha512-EpTsSv6IW8maCfXCDIptgT7+mQJj7pImEkcNUnxR8yUKAHzTogTXv9yGm2WXOZFVuwstd2i0sImhQ1Vz8RH/hA==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.13.0.tgz", + "integrity": "sha512-pS3qyXiWTwKnrt/jE79fqkNqZp7kjsFNlJDcBGkSWid74DNc6DmArlkvPqyLxnoaYGjUGACT6g56n7E3mVV2TA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@docsearch/react/node_modules/@algolia/client-personalization": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.12.0.tgz", - "integrity": "sha512-bUV9HtfkTBgpoVhxFrMkmVPG03ZN1Rtn51kiaEtukucdk3ggjR9Qu1YUfRSU2lFgxr9qJc8lTxwfvhjCeJRcqw==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.13.0.tgz", + "integrity": "sha512-RnCfOSN4OUJDuMNHFca2M8lY64Tmw0kQOZikge4TknTqHmlbKJb8IbJE7Rol79Z80W2Y+B1ydcjV7DPje4GMRA==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@docsearch/react/node_modules/@algolia/recommend": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.12.0.tgz", - "integrity": "sha512-0jmZyKvYnB/Bj5c7WKsKedOUjnr0UtXm0LVFUdQrxXfqOqvWv9n6Vpr65UjdYG4Q49kRQxhlwtal9WJYrYymXg==", + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.13.0.tgz", + "integrity": "sha512-53/wW96oaj1FKMzGdFcZ/epygfTppLDUvgI1thLkd475EtVZCH3ZZVUNCEvf1AtnNyH1RnItkFzX8ayWCpx2PQ==", "license": "MIT", "dependencies": { - "@algolia/client-common": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "@algolia/client-common": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@docsearch/react/node_modules/algoliasearch": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.12.0.tgz", - "integrity": "sha512-psGBRYdGgik8I6m28iAB8xpubvjEt7UQU+w5MAJUA2324WHiGoHap5BPkkjB14rMaXeRts6pmOsrVIglGyOVwg==", - "license": "MIT", - "dependencies": { - "@algolia/client-abtesting": "5.12.0", - "@algolia/client-analytics": "5.12.0", - "@algolia/client-common": "5.12.0", - "@algolia/client-insights": "5.12.0", - "@algolia/client-personalization": "5.12.0", - "@algolia/client-query-suggestions": "5.12.0", - "@algolia/client-search": "5.12.0", - "@algolia/ingestion": "1.12.0", - "@algolia/monitoring": "1.12.0", - "@algolia/recommend": "5.12.0", - "@algolia/requester-browser-xhr": "5.12.0", - "@algolia/requester-fetch": "5.12.0", - "@algolia/requester-node-http": "5.12.0" + "version": "5.13.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.13.0.tgz", + "integrity": "sha512-04lyQX3Ev/oLYQx+aagamQDXvkUUfX1mwrLrus15+9fNaYj28GDxxEzbwaRfvmHFcZyoxvup7mMtDTTw8SrTEQ==", + "license": "MIT", + "dependencies": { + "@algolia/client-abtesting": "5.13.0", + "@algolia/client-analytics": "5.13.0", + "@algolia/client-common": "5.13.0", + "@algolia/client-insights": "5.13.0", + "@algolia/client-personalization": "5.13.0", + "@algolia/client-query-suggestions": "5.13.0", + "@algolia/client-search": "5.13.0", + "@algolia/ingestion": "1.13.0", + "@algolia/monitoring": "1.13.0", + "@algolia/recommend": "5.13.0", + "@algolia/requester-browser-xhr": "5.13.0", + "@algolia/requester-fetch": "5.13.0", + "@algolia/requester-node-http": "5.13.0" }, "engines": { "node": ">= 14.0.0" } }, "node_modules/@docusaurus/babel": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.0.tgz", - "integrity": "sha512-7CsoQFiadoq7AHSUIQNkI/lGfg9AQ2ZBzsf9BqfZGXkHwWDy6twuohEaG0PgQv1npSRSAB2dioVxhRSErnqKNA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/babel/-/babel-3.6.1.tgz", + "integrity": "sha512-JcKaunW8Ml2nTnfnvFc55T00Y+aCpNWnf1KY/gG+wWxHYDH0IdXOOz+k6NAlEAerW8+VYLfUqRIqHZ7N/DVXvQ==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", @@ -2397,8 +2387,8 @@ "@babel/runtime": "^7.25.9", "@babel/runtime-corejs3": "^7.25.9", "@babel/traverse": "^7.25.9", - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", + "@docusaurus/logger": "3.6.1", + "@docusaurus/utils": "3.6.1", "babel-plugin-dynamic-import-node": "^2.3.3", "fs-extra": "^11.1.1", "tslib": "^2.6.0" @@ -2408,17 +2398,17 @@ } }, "node_modules/@docusaurus/bundler": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.0.tgz", - "integrity": "sha512-o5T9HXkPKH0OQAifTxEXaebcO8kaz3tU1+wlIShZ2DKJHlsyWX3N4rToWBHroWnV/ZCT2XN3kLRzXASqrnb9Tw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/bundler/-/bundler-3.6.1.tgz", + "integrity": "sha512-vHSEx8Ku9x/gfIC6k4xb8J2nTxagLia0KvZkPZhxfkD1+n8i+Dj4BZPWTmv+kCA17RbgAvECG0XRZ0/ZEspQBQ==", "license": "MIT", "dependencies": { "@babel/core": "^7.25.9", - "@docusaurus/babel": "3.6.0", - "@docusaurus/cssnano-preset": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", + "@docusaurus/babel": "3.6.1", + "@docusaurus/cssnano-preset": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", "autoprefixer": "^10.4.14", "babel-loader": "^9.2.1", "clean-css": "^5.3.2", @@ -2443,7 +2433,7 @@ "node": ">=18.0" }, "peerDependencies": { - "@docusaurus/faster": "3.5.2" + "@docusaurus/faster": "*" }, "peerDependenciesMeta": { "@docusaurus/faster": { @@ -2452,18 +2442,18 @@ } }, "node_modules/@docusaurus/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.0.tgz", - "integrity": "sha512-lvRgMoKJJSRDt9+HhAqFcICV4kp/mw1cJJrLxIw4Q2XZnFGM1XUuwcbuaqWmGog+NcOLZaPCcCtZbn60EMCtjQ==", - "license": "MIT", - "dependencies": { - "@docusaurus/babel": "3.6.0", - "@docusaurus/bundler": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/core/-/core-3.6.1.tgz", + "integrity": "sha512-cDKxPihiM2z7G+4QtpTczS7uxNfNG6naSqM65OmAJET0CFRHbc9mDlLFtQF0lsVES91SHqfcGaaLZmi2FjdwWA==", + "license": "MIT", + "dependencies": { + "@docusaurus/babel": "3.6.1", + "@docusaurus/bundler": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "boxen": "^6.2.1", "chalk": "^4.1.2", "chokidar": "^3.5.3", @@ -2514,9 +2504,9 @@ } }, "node_modules/@docusaurus/cssnano-preset": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.0.tgz", - "integrity": "sha512-h3jlOXqqzNSoU+C4CZLNpFtD+v2xr1UBf4idZpwMgqid9r6lb5GS7tWKnQnauio6OipacbHbDXEX3JyT1PlDkg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/cssnano-preset/-/cssnano-preset-3.6.1.tgz", + "integrity": "sha512-ZxYUmNeyQHW2w4/PJ7d07jQDuxzmKr9uPAQ6IVe5dTkeIeV0mDBB3jOLeJkNoI42Ru9JKEqQ9aVDtM9ct6QHnw==", "license": "MIT", "dependencies": { "cssnano-preset-advanced": "^6.1.2", @@ -2529,30 +2519,29 @@ } }, "node_modules/@docusaurus/faster": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.5.2.tgz", - "integrity": "sha512-ALeXHDiHv3WQ+/61Da5SKf0ceRVZ3BXJRCcgGXqOPrYCsTXD+LhyFcYZc27FlfzInWlq95546YZbAEWKEARAFw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/faster/-/faster-3.6.1.tgz", + "integrity": "sha512-W3a9m7Q/fEeOpOw9/XktLCHRtp1sV2AdZWMCjH3kP1jY1TDyLFFiHJ0+1uwVpOw4/oPJqZSTRKP+IdW4+65NgQ==", "license": "MIT", "dependencies": { + "@docusaurus/types": "3.6.1", "@rspack/core": "^1.0.14", "@swc/core": "^1.7.39", "@swc/html": "^1.7.39", "browserslist": "^4.24.2", "lightningcss": "^1.27.0", "swc-loader": "^0.2.6", + "tslib": "^2.6.0", "webpack": "^5.95.0" }, "engines": { "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" } }, "node_modules/@docusaurus/logger": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.0.tgz", - "integrity": "sha512-BcQhoXilXW0607cH/kO6P5Gt5KxCGfoJ+QDKNf3yO2S09/RsITlW+0QljXPbI3DklTrHrhRDmgGk1yX4nUhWTA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/logger/-/logger-3.6.1.tgz", + "integrity": "sha512-OvetI/nnOMBSqCkUzKAQhnIjhxduECK4qTu3tq/8/h/qqvLsvKURojm04WPE54L+Uy+UXMas0hnbBJd8zDlEOw==", "license": "MIT", "dependencies": { "chalk": "^4.1.2", @@ -2563,13 +2552,13 @@ } }, "node_modules/@docusaurus/lqip-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/lqip-loader/-/lqip-loader-3.6.0.tgz", - "integrity": "sha512-jEQjnKAjhgyZ/aQf0Tbl3eDpp1j0C/GojE/cv2Bad89o+luV1OAOs9UHDRyKwWQfN+se0D9kFxkfsfwYxMpI8A==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/lqip-loader/-/lqip-loader-3.6.1.tgz", + "integrity": "sha512-H/VVvnvFupFhQ81FuTyA/XHxEZPKh99T6Wg6KgN+/yvcn7869RdgrlDhKDnXZ7j2u80eFsVNjAcPfW1cSAtK6A==", "dev": true, "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", + "@docusaurus/logger": "3.6.1", "file-loader": "^6.2.0", "lodash": "^4.17.21", "sharp": "^0.32.3", @@ -2604,14 +2593,14 @@ } }, "node_modules/@docusaurus/mdx-loader": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.0.tgz", - "integrity": "sha512-GhRzL1Af/AdSSrGesSPOU/iP/aXadTGmVKuysCxZDrQR2RtBtubQZ9aw+KvdFVV7R4K/CsbgD6J5oqrXlEPk3Q==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/mdx-loader/-/mdx-loader-3.6.1.tgz", + "integrity": "sha512-KPIsYi0S3X3/rNrW3V1fgOu5t6ahYWc31zTHHod8pacFxdmk9Uf6uuw+Jd6Cly1ilgal+41Ku+s0gmMuqKqiqg==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/logger": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "@mdx-js/mdx": "^3.0.0", "@slorber/remark-comment": "^1.0.0", "escape-html": "^1.0.3", @@ -2643,12 +2632,12 @@ } }, "node_modules/@docusaurus/module-type-aliases": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.0.tgz", - "integrity": "sha512-szTrIN/6/fuk0xkf3XbRfdTFJzRQ8d1s3sQj5++58wltrT7v3yn1149oc9ryYjMpRcbsarGloQwMu7ofPe4XPg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/module-type-aliases/-/module-type-aliases-3.6.1.tgz", + "integrity": "sha512-J+q1jgm7TnEfVIUZImSFeLA1rghb6nwtoB9siHdcgKpDqFJ9/S7xhQL2aEKE7iZMZYzpu+2F390E9A7GkdEJNA==", "license": "MIT", "dependencies": { - "@docusaurus/types": "3.6.0", + "@docusaurus/types": "3.6.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2662,19 +2651,19 @@ } }, "node_modules/@docusaurus/plugin-content-blog": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.0.tgz", - "integrity": "sha512-o4aT1/E0Ldpzs/hQff5uyoSriAhS/yqBhqSn+fvSw465AaqRsva6O7CZSYleuBq6x2bewyE3QJq2PcTiHhAd8g==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-blog/-/plugin-content-blog-3.6.1.tgz", + "integrity": "sha512-FUmsn3xg/XD/K/4FQd8XHrs92aQdZO5LUtpHnRvO1/6DY87SMz6B6ERAN9IGQQld//M2/LVTHkZy8oVhQZQHIQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "cheerio": "1.0.0-rc.12", "feed": "^4.2.2", "fs-extra": "^11.1.1", @@ -2696,20 +2685,20 @@ } }, "node_modules/@docusaurus/plugin-content-docs": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.0.tgz", - "integrity": "sha512-c5gZOxocJKO/Zev2MEZInli+b+VNswDGuKHE6QtFgidhAJonwjh2kwj967RvWFaMMk62HlLJLZ+IGK2XsVy4Aw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-docs/-/plugin-content-docs-3.6.1.tgz", + "integrity": "sha512-Uq8kyn5DYCDmkUlB9sWChhWghS4lUFNiQU+RXcAXJ3qCVXsBpPsh6RF+npQG1N+j4wAbjydM1iLLJJzp+x3eMQ==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/module-type-aliases": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "@types/react-router-config": "^5.0.7", "combine-promises": "^1.1.0", "fs-extra": "^11.1.1", @@ -2728,16 +2717,16 @@ } }, "node_modules/@docusaurus/plugin-content-pages": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.0.tgz", - "integrity": "sha512-RKHhJrfkadHc7+tt1cP48NWifOrhkSRMPdXNYytzhoQrXlP6Ph+3tfQ4/n+nT0S3Y9+wwRxYqRqA380ZLt+QtQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-content-pages/-/plugin-content-pages-3.6.1.tgz", + "integrity": "sha512-TZtL+2zq20gqGalzoIT2rEF1T4YCZ26jTvlCJXs78+incIajfdHtmdOq7rQW0oV7oqTjpGllbp788nY/vY9jgw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "fs-extra": "^11.1.1", "tslib": "^2.6.0", "webpack": "^5.88.1" @@ -2751,14 +2740,14 @@ } }, "node_modules/@docusaurus/plugin-debug": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.0.tgz", - "integrity": "sha512-o8T1Rl94COLdSlKvjYLQpRJQRU8WWZ8EX1B0yV0dQLNN8reyH7MQW+6z1ig4sQFfH3pnjPWVGHfuEjcib5m7Eg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-debug/-/plugin-debug-3.6.1.tgz", + "integrity": "sha512-DeKPZtoVExDSYCbzoz7y5Dhc6+YPqRWfVGwEEUyKopSyQYefp0OV8hvASmbJCn2WyThRgspOUhog3FSEhz+agw==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", "fs-extra": "^11.1.1", "react-json-view-lite": "^1.2.0", "tslib": "^2.6.0" @@ -2772,14 +2761,14 @@ } }, "node_modules/@docusaurus/plugin-google-analytics": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.0.tgz", - "integrity": "sha512-kgRFbfpi6Hshj75YUztKyEMtI/kw0trPRwoTN4g+W1NK99R/vh8phTvhBTIMnDbetU79795LkwfG0rZ/ce6zWQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-analytics/-/plugin-google-analytics-3.6.1.tgz", + "integrity": "sha512-ZEoERiDHxSfhaEeT35ukQ892NzGHWiUvfxUsnPiRuGEhMoQlxMSp60shBuSZ1sUKuZlndoEl5qAXJg09Wls/Sg==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "tslib": "^2.6.0" }, "engines": { @@ -2791,14 +2780,14 @@ } }, "node_modules/@docusaurus/plugin-google-gtag": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.0.tgz", - "integrity": "sha512-nqu4IfjaO4UX+dojHL2BxHRS+sKj31CIMWYo49huQ3wTET0Oc3u/WGTaKd3ShTPDhkgiRhTOSTPUwJWrU55nHg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-gtag/-/plugin-google-gtag-3.6.1.tgz", + "integrity": "sha512-u/E9vXUsZxYaV6Brvfee8NiH/iR0cMml9P/ifz4EpH/Jfxdbw8rbCT0Nm/h7EFgEY48Uqkl5huSbIvFB9n8aTQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "@types/gtag.js": "^0.0.12", "tslib": "^2.6.0" }, @@ -2811,14 +2800,14 @@ } }, "node_modules/@docusaurus/plugin-google-tag-manager": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.0.tgz", - "integrity": "sha512-OU6c5xI0nOVbEc9eImGvvsgNWe4vGm97t/W3aLHjWsHyNk3uwFNBQMHRvBUwAi9k/K3kyC5E7DWnc67REhdLOw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-google-tag-manager/-/plugin-google-tag-manager-3.6.1.tgz", + "integrity": "sha512-By+NKkGYV8tSo8/RyS1OXikOtqsko5jJZ/uioJfBjsBGgSbiMJ+Y/HogFBke0mgSvf7NPGKZTbYm5+FJ8YUtPQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "tslib": "^2.6.0" }, "engines": { @@ -2830,17 +2819,17 @@ } }, "node_modules/@docusaurus/plugin-sitemap": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.0.tgz", - "integrity": "sha512-YB5XMdf9FjLhgbHY/cDbYhVxsgcpPIjxY9769HUgFOB7GVzItTLOR71W035R1BiR2CA5QAn3XOSg36WLRxlhQQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/plugin-sitemap/-/plugin-sitemap-3.6.1.tgz", + "integrity": "sha512-i8R/GTKew4Cufb+7YQTwfPcNOhKTJzZ1VZ5OqQwI9c3pZK2TltQyhqKDVN94KCTbSSKvOYYytYfRAB2uPnH1/A==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "fs-extra": "^11.1.1", "sitemap": "^7.1.1", "tslib": "^2.6.0" @@ -2854,24 +2843,24 @@ } }, "node_modules/@docusaurus/preset-classic": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.0.tgz", - "integrity": "sha512-kpGNdQzr/Dpm7o3b1iaQrz4DMDx3WIeBbl4V4P4maa2zAQkTdlaP4CMgA5oKrRrpqPLnQFsUM/b+qf2glhl2Tw==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/plugin-content-blog": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/plugin-content-pages": "3.6.0", - "@docusaurus/plugin-debug": "3.6.0", - "@docusaurus/plugin-google-analytics": "3.6.0", - "@docusaurus/plugin-google-gtag": "3.6.0", - "@docusaurus/plugin-google-tag-manager": "3.6.0", - "@docusaurus/plugin-sitemap": "3.6.0", - "@docusaurus/theme-classic": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-search-algolia": "3.6.0", - "@docusaurus/types": "3.6.0" + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/preset-classic/-/preset-classic-3.6.1.tgz", + "integrity": "sha512-b90Y1XRH9e+oa/E3NmiFEFOwgYUd+knFcZUy81nM3FJs038WbEA0T55NQsuPW0s7nOsCShQ7dVFyKxV+Wp31Nw==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.6.1", + "@docusaurus/plugin-content-blog": "3.6.1", + "@docusaurus/plugin-content-docs": "3.6.1", + "@docusaurus/plugin-content-pages": "3.6.1", + "@docusaurus/plugin-debug": "3.6.1", + "@docusaurus/plugin-google-analytics": "3.6.1", + "@docusaurus/plugin-google-gtag": "3.6.1", + "@docusaurus/plugin-google-tag-manager": "3.6.1", + "@docusaurus/plugin-sitemap": "3.6.1", + "@docusaurus/theme-classic": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/theme-search-algolia": "3.6.1", + "@docusaurus/types": "3.6.1" }, "engines": { "node": ">=18.0" @@ -2882,24 +2871,24 @@ } }, "node_modules/@docusaurus/theme-classic": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.0.tgz", - "integrity": "sha512-sAXNfwPL6uRD+BuHuKXZfAXud7SS7IK/JdrPuzyQxdO1gJKzI5GFfe1ED1QoJDNWJWJ01JHE5rSnwYLEADc2rQ==", - "license": "MIT", - "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/plugin-content-blog": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/plugin-content-pages": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-translations": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-classic/-/theme-classic-3.6.1.tgz", + "integrity": "sha512-5lVUmIXk7zp+n9Ki2lYWrmhbd6mssOlKCnnDJvY4QDi3EgjRisIu5g4yKXoWTIbiqE7m7q/dS9cbeShEtfkKng==", + "license": "MIT", + "dependencies": { + "@docusaurus/core": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/module-type-aliases": "3.6.1", + "@docusaurus/plugin-content-blog": "3.6.1", + "@docusaurus/plugin-content-docs": "3.6.1", + "@docusaurus/plugin-content-pages": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/theme-translations": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "@mdx-js/react": "^3.0.0", "clsx": "^2.0.0", "copy-text-to-clipboard": "^3.2.0", @@ -2923,15 +2912,15 @@ } }, "node_modules/@docusaurus/theme-common": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.0.tgz", - "integrity": "sha512-frjlYE5sRs+GuPs4XXlp9aMLI2O4H5FPpznDAXBrCm+8EpWRiIb443ePMxM3IyMCQ5bwFlki0PI9C+r4apstnw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-common/-/theme-common-3.6.1.tgz", + "integrity": "sha512-18iEYNpMvarGfq9gVRpGowSZD24vZ39Iz4acqaj64180i54V9el8tVnhNr/wRvrUm1FY30A1NHLqnMnDz4rYEQ==", "license": "MIT", "dependencies": { - "@docusaurus/mdx-loader": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", + "@docusaurus/mdx-loader": "3.6.1", + "@docusaurus/module-type-aliases": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", "@types/history": "^4.7.11", "@types/react": "*", "@types/react-router-config": "*", @@ -2951,16 +2940,16 @@ } }, "node_modules/@docusaurus/theme-mermaid": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.6.0.tgz", - "integrity": "sha512-5t7zzBnnJa4BBcGo9bEfTM48DxD/+CVbFkfiRnFXheWjMrMm5a+IP10igEQ4zyDC+QgatbzLAxkj4GRYpYTauA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-mermaid/-/theme-mermaid-3.6.1.tgz", + "integrity": "sha512-ke00/VSFibzucbr64JXwPWsiu66zcqI8mnEbbmPSV1Yby5FRsfGQqcE+1cvUkAOVCl+zX8RNjv8vrRb4ilQDLQ==", "license": "MIT", "dependencies": { - "@docusaurus/core": "3.6.0", - "@docusaurus/module-type-aliases": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/types": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/module-type-aliases": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "mermaid": ">=10.4", "tslib": "^2.6.0" }, @@ -2973,19 +2962,19 @@ } }, "node_modules/@docusaurus/theme-search-algolia": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.0.tgz", - "integrity": "sha512-4IwRUkxjrisR8LXBHeE4d2btraWdMficbgiVL3UHvJURmyvgzMBZQP8KrK8rjdXeu8SuRxSmeV6NSVomRvdbEg==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-search-algolia/-/theme-search-algolia-3.6.1.tgz", + "integrity": "sha512-BjmuiFRpQP1WEm8Mzu1Bb0Wdas6G65VHXDDNr7XTKgbstxalE6vuxt0ioXTDFS2YVep5748aVhKvnxR9gm2Liw==", "license": "MIT", "dependencies": { "@docsearch/react": "^3.5.2", - "@docusaurus/core": "3.6.0", - "@docusaurus/logger": "3.6.0", - "@docusaurus/plugin-content-docs": "3.6.0", - "@docusaurus/theme-common": "3.6.0", - "@docusaurus/theme-translations": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-validation": "3.6.0", + "@docusaurus/core": "3.6.1", + "@docusaurus/logger": "3.6.1", + "@docusaurus/plugin-content-docs": "3.6.1", + "@docusaurus/theme-common": "3.6.1", + "@docusaurus/theme-translations": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-validation": "3.6.1", "algoliasearch": "^4.18.0", "algoliasearch-helper": "^3.13.3", "clsx": "^2.0.0", @@ -3004,9 +2993,9 @@ } }, "node_modules/@docusaurus/theme-translations": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.0.tgz", - "integrity": "sha512-L555X8lWE3fv8VaF0Bc1VnAgi10UvRKFcvADHiYR7Gj37ItaWP5i7xLHsSw7fi/SHTXe5wfIeCFNqUYHyCOHAQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/theme-translations/-/theme-translations-3.6.1.tgz", + "integrity": "sha512-bNm5G6sueUezvyhsBegA1wwM38yW0BnqpZTE9KHO2yKnkERNMaV5x/yPJ/DNCOHjJtCcJ5Uz55g2AS75Go31xA==", "license": "MIT", "dependencies": { "fs-extra": "^11.1.1", @@ -3017,16 +3006,16 @@ } }, "node_modules/@docusaurus/tsconfig": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.6.0.tgz", - "integrity": "sha512-1nHsSMlNgEifnvsL4ql9wx7I1xXhrrNZl65IKD11pdo/749oI9fMcvm47dDwgS57x1WEteIAxJjzidffa5J9TQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/tsconfig/-/tsconfig-3.6.1.tgz", + "integrity": "sha512-RvjMG9M9YK8N/I5oudqJed8jjfWGI7csr4XCkGXBToNkkoi2QgkTz2DxH+obKdfLejQaASdIMynYaE5Lv7Qw9Q==", "dev": true, "license": "MIT" }, "node_modules/@docusaurus/types": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.0.tgz", - "integrity": "sha512-jADLgoZGWhAzThr+mRiyuFD4OUzt6jHnb7NRArRKorgxckqUBaPyFOau9hhbcSTHtU6ceyeWjN7FDt7uG2Hplw==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/types/-/types-3.6.1.tgz", + "integrity": "sha512-hCB1hj9DYutVYBisnPNobz9SzEmCcf1EetJv09O49Cov3BqOkm+vnnjB3d957YJMtpLGQoKBeN/FF1DZ830JwQ==", "license": "MIT", "dependencies": { "@mdx-js/mdx": "^3.0.0", @@ -3059,13 +3048,14 @@ } }, "node_modules/@docusaurus/utils": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.0.tgz", - "integrity": "sha512-VKczAutI4mptiAw/WcYEu5WeVhQ6Q1zdIUl64SGw9K++9lziH+Kt10Ee8l2dMpRkiUk6zzK20kMNlX2WCUwXYQ==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils/-/utils-3.6.1.tgz", + "integrity": "sha512-nS3WCvepwrnBEgSG5vQu40XG95lC9Jeh/odV5u5IhU1eQFEGDst9xBi6IK5yZdsGvbuaXBZLZtOqWYtuuFa/rQ==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils-common": "3.6.0", + "@docusaurus/logger": "3.6.1", + "@docusaurus/types": "3.6.1", + "@docusaurus/utils-common": "3.6.1", "@svgr/webpack": "^8.1.0", "escape-string-regexp": "^4.0.0", "file-loader": "^6.2.0", @@ -3087,45 +3077,30 @@ }, "engines": { "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } } }, "node_modules/@docusaurus/utils-common": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.0.tgz", - "integrity": "sha512-diUDNfbw33GaZMmKwdTckT2IBfVouXLXRD+zphH9ywswuaEIKqixvuf5g41H7MBBrlMsxhna3uTMoB4B/OPDcA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-common/-/utils-common-3.6.1.tgz", + "integrity": "sha512-LX1qiTiC0aS8c92uZ+Wj2iNCNJyYZJIKY8/nZDKNMBfo759VYVS3RX3fKP3DznB+16sYp7++MyCz/T6fOGaRfw==", "license": "MIT", "dependencies": { + "@docusaurus/types": "3.6.1", "tslib": "^2.6.0" }, "engines": { "node": ">=18.0" - }, - "peerDependencies": { - "@docusaurus/types": "*" - }, - "peerDependenciesMeta": { - "@docusaurus/types": { - "optional": true - } } }, "node_modules/@docusaurus/utils-validation": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.0.tgz", - "integrity": "sha512-CRHiKKJEKA0GFlfOf71JWHl7PtwOyX0+Zg9ep9NFEZv6Lcx3RJ9nhl7p8HRjPL6deyYceavM//BsfW4pCI4BtA==", + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@docusaurus/utils-validation/-/utils-validation-3.6.1.tgz", + "integrity": "sha512-+iMd6zRl5cJQm7nUP+7pSO/oAXsN79eHO34ME7l2YJt4GEAr70l5kkD58u2jEPpp+wSXT70c7x2A2lzJI1E8jw==", "license": "MIT", "dependencies": { - "@docusaurus/logger": "3.6.0", - "@docusaurus/utils": "3.6.0", - "@docusaurus/utils-common": "3.6.0", + "@docusaurus/logger": "3.6.1", + "@docusaurus/utils": "3.6.1", + "@docusaurus/utils-common": "3.6.1", "fs-extra": "^11.2.0", "joi": "^17.9.2", "js-yaml": "^4.1.0", @@ -4503,9 +4478,9 @@ } }, "node_modules/@swc/core": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.8.0.tgz", - "integrity": "sha512-EF8C5lp1RKMp3426tAKwQyVbg4Zcn/2FDax3cz8EcOXYQJM/ctB687IvBm9Ciej1wMcQ/dMRg+OB4Xl8BGLBoA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.9.1.tgz", + "integrity": "sha512-OnPc+Kt5oy3xTvr/KCUOqE9ptJcWbyQgAUr1ydh9EmbBcmJTaO1kfQCxm/axzJi6sKeDTxL9rX5zvLOhoYIaQw==", "hasInstallScript": true, "license": "Apache-2.0", "dependencies": { @@ -4520,16 +4495,16 @@ "url": "https://opencollective.com/swc" }, "optionalDependencies": { - "@swc/core-darwin-arm64": "1.8.0", - "@swc/core-darwin-x64": "1.8.0", - "@swc/core-linux-arm-gnueabihf": "1.8.0", - "@swc/core-linux-arm64-gnu": "1.8.0", - "@swc/core-linux-arm64-musl": "1.8.0", - "@swc/core-linux-x64-gnu": "1.8.0", - "@swc/core-linux-x64-musl": "1.8.0", - "@swc/core-win32-arm64-msvc": "1.8.0", - "@swc/core-win32-ia32-msvc": "1.8.0", - "@swc/core-win32-x64-msvc": "1.8.0" + "@swc/core-darwin-arm64": "1.9.1", + "@swc/core-darwin-x64": "1.9.1", + "@swc/core-linux-arm-gnueabihf": "1.9.1", + "@swc/core-linux-arm64-gnu": "1.9.1", + "@swc/core-linux-arm64-musl": "1.9.1", + "@swc/core-linux-x64-gnu": "1.9.1", + "@swc/core-linux-x64-musl": "1.9.1", + "@swc/core-win32-arm64-msvc": "1.9.1", + "@swc/core-win32-ia32-msvc": "1.9.1", + "@swc/core-win32-x64-msvc": "1.9.1" }, "peerDependencies": { "@swc/helpers": "*" @@ -4541,9 +4516,9 @@ } }, "node_modules/@swc/core-darwin-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.8.0.tgz", - "integrity": "sha512-TIus1/SE/Ud4g84hCnchcagu+LfyndSDy5r5qf64nflojejDidPU9Fp1InzQhQpEgIpntnZID/KFCP5rQnvsIw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.9.1.tgz", + "integrity": "sha512-2/ncHSCdAh5OHem1fMITrWEzzl97OdMK1PHc9CkxSJnphLjRubfxB5sbc5tDhcO68a5tVy+DxwaBgDec3PXnOg==", "cpu": [ "arm64" ], @@ -4557,9 +4532,9 @@ } }, "node_modules/@swc/core-darwin-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.8.0.tgz", - "integrity": "sha512-yCb1FHCX/HUmNRGB1X3CFJ1WPKXMosZVUe3K2TrosCGvytwgaLoW5FS0bZg5Qv6cEUERQBg75cJnOUPwLLRCVg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.9.1.tgz", + "integrity": "sha512-4MDOFC5zmNqRJ9RGFOH95oYf27J9HniLVpB1pYm2gGeNHdl2QvDMtx2QTuMHQ6+OTn/3y1BHYuhBGp7d405oLA==", "cpu": [ "x64" ], @@ -4573,9 +4548,9 @@ } }, "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.8.0.tgz", - "integrity": "sha512-6TdjVdiLaSW+eGiHKEojMDlx673nowrPHa6nM6toWgRzy8tIZgjPOguVKJDoMnoHuvO7SkOLCUiMRw0rTskypA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.9.1.tgz", + "integrity": "sha512-eVW/BjRW8/HpLe3+1jRU7w7PdRLBgnEEYTkHJISU8805/EKT03xNZn6CfaBpKfeAloY4043hbGzE/NP9IahdpQ==", "cpu": [ "arm" ], @@ -4589,9 +4564,9 @@ } }, "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.8.0.tgz", - "integrity": "sha512-TU2YcTornnyZiJUabRuk7Xtvzaep11FwK77IkFomjN9/Os5s25B8ea652c2fAQMe9RsM84FPVmX303ohxavjKQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.9.1.tgz", + "integrity": "sha512-8m3u1v8R8NgI/9+cHMkzk14w87blSy3OsQPWPfhOL+XPwhyLPvat+ahQJb2nZmltjTgkB4IbzKFSfbuA34LmNA==", "cpu": [ "arm64" ], @@ -4605,9 +4580,9 @@ } }, "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.8.0.tgz", - "integrity": "sha512-2CdPTEKxx2hJIj/B0fn8L8k2coo/FDS95smzXyi2bov5FcrP6Ohboq8roFBYgj38fkHusXjY8qt+cCH7yXWAdg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.9.1.tgz", + "integrity": "sha512-hpT0sQAZnW8l02I289yeyFfT9llGO9PzKDxUq8pocKtioEHiElRqR53juCWoSmzuWi+6KX7zUJ0NKCBrc8pmDg==", "cpu": [ "arm64" ], @@ -4621,9 +4596,9 @@ } }, "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.8.0.tgz", - "integrity": "sha512-14StQBifCs/AMsySdU95OmwNJr9LOVqo6rcTFt2b7XaWpe/AyeuMJFxcndLgUewksJHpfepzCTwNdbcYmuNo6A==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.9.1.tgz", + "integrity": "sha512-sGFdpdAYusk/ropHiwtXom2JrdaKPxl8MqemRv6dvxZq1Gm/GdmOowxdXIPjCgBGMgoXVcgNviH6CgiO5q+UtA==", "cpu": [ "x64" ], @@ -4637,9 +4612,9 @@ } }, "node_modules/@swc/core-linux-x64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.8.0.tgz", - "integrity": "sha512-qemJnAQlYqKCfWNqVv5SG8uGvw8JotwU86cuFUkq35oTB+dsSFM3b83+B1giGTKKFOh2nfWT7bvPXTKk+aUjew==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.9.1.tgz", + "integrity": "sha512-YtNLNwIWs0Z2+XgBs6+LrCIGtfCDtNr4S4b6Q5HDOreEIGzSvhkef8eyBI5L+fJ2eGov4b7iEo61C4izDJS5RA==", "cpu": [ "x64" ], @@ -4653,9 +4628,9 @@ } }, "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.8.0.tgz", - "integrity": "sha512-fXt5vZbnrVdXZzGj2qRnZtY3uh+NtLCaFjS2uD9w8ssdbjhbDZYlJCj2JINOjv35ttEfAD2goiYmVa5P/Ypl+g==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.9.1.tgz", + "integrity": "sha512-qSxD3uZW2vSiHqUt30vUi0PB92zDh9bjqh5YKpfhhVa7h1vt/xXhlid8yMvSNToTfzhRrTEffOAPUr7WVoyQUA==", "cpu": [ "arm64" ], @@ -4669,9 +4644,9 @@ } }, "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.8.0.tgz", - "integrity": "sha512-W4FA2vSJ+bGYiTj6gspxghSdKQNLfLMo65AH07u797x7I+YJj8amnFY/fQRlroDv5Dez/FHTv14oPlTlNFUpIw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.9.1.tgz", + "integrity": "sha512-C3fPEwyX/WRPlX6zIToNykJuz1JkZX0sk8H1QH2vpnKuySUkt/Ur5K2FzLgSWzJdbfxstpgS151/es0VGAD+ZA==", "cpu": [ "ia32" ], @@ -4685,9 +4660,9 @@ } }, "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.8.0.tgz", - "integrity": "sha512-Il4y8XwKDV0Bnk0IpA00kGcSQC6I9XOIinW5egTutnwIDfDE+qsD0j+0isW5H76GetY3/Ze0lVxeOXLAUgpegA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.9.1.tgz", + "integrity": "sha512-2XZ+U1AyVsOAXeH6WK1syDm7+gwTjA8fShs93WcbxnK7HV+NigDlvr4124CeJLTHyh3fMh1o7+CnQnaBJhlysQ==", "cpu": [ "x64" ], @@ -4707,9 +4682,9 @@ "license": "Apache-2.0" }, "node_modules/@swc/html": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.8.0.tgz", - "integrity": "sha512-BpfcNylJCIxnV3h8jjuBWlY05JJ3luPskiDgRMljyiQUW7Ll0vZp8J6Jizyrgrsud6XTq4q88RMWGJoWQQiiTw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html/-/html-1.9.1.tgz", + "integrity": "sha512-b/5GqsI6xF55/GU95FrItW1+EdvBs4uojPJcBSkmbFcetdmHPZyprA45VpPUYyJeRWebu4lesZrTOU2GGSIsow==", "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.3" @@ -4718,22 +4693,22 @@ "node": ">=14" }, "optionalDependencies": { - "@swc/html-darwin-arm64": "1.8.0", - "@swc/html-darwin-x64": "1.8.0", - "@swc/html-linux-arm-gnueabihf": "1.8.0", - "@swc/html-linux-arm64-gnu": "1.8.0", - "@swc/html-linux-arm64-musl": "1.8.0", - "@swc/html-linux-x64-gnu": "1.8.0", - "@swc/html-linux-x64-musl": "1.8.0", - "@swc/html-win32-arm64-msvc": "1.8.0", - "@swc/html-win32-ia32-msvc": "1.8.0", - "@swc/html-win32-x64-msvc": "1.8.0" + "@swc/html-darwin-arm64": "1.9.1", + "@swc/html-darwin-x64": "1.9.1", + "@swc/html-linux-arm-gnueabihf": "1.9.1", + "@swc/html-linux-arm64-gnu": "1.9.1", + "@swc/html-linux-arm64-musl": "1.9.1", + "@swc/html-linux-x64-gnu": "1.9.1", + "@swc/html-linux-x64-musl": "1.9.1", + "@swc/html-win32-arm64-msvc": "1.9.1", + "@swc/html-win32-ia32-msvc": "1.9.1", + "@swc/html-win32-x64-msvc": "1.9.1" } }, "node_modules/@swc/html-darwin-arm64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.8.0.tgz", - "integrity": "sha512-J2idsDLZjsuzExyyCiS1xutpgkHI/8TTPlUfr54jipF0VNGWTa85zBw/pLkNPnU5pInZweV87rj4dY/rekNXAA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-arm64/-/html-darwin-arm64-1.9.1.tgz", + "integrity": "sha512-RBMLup2je+6yUlnbXy1iZDo8H8tXkVwsXBCqj1Iac6RVNhSg/prG+facSLZQMpmyerILE3A02kGpTXUjpi/a6A==", "cpu": [ "arm64" ], @@ -4747,9 +4722,9 @@ } }, "node_modules/@swc/html-darwin-x64": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.8.0.tgz", - "integrity": "sha512-lTwC/j9ahtqwQxTFiiCcTrXt2a9DhxRD/CBSZv7193VX3tDT9bil1hlyJcjd7ps6YETszoJmL1Bz83XEvkQ2dA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-darwin-x64/-/html-darwin-x64-1.9.1.tgz", + "integrity": "sha512-VUa4itQHWCteFdFoAZP+dEWsfaVtgt54btV1miSjVvHAdyjAOO9S5RkjdW45Oz0C5XDzR7EIz2+oLZlYtEnpAw==", "cpu": [ "x64" ], @@ -4763,9 +4738,9 @@ } }, "node_modules/@swc/html-linux-arm-gnueabihf": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.8.0.tgz", - "integrity": "sha512-W0uDzlhaIjp4GZc261ZfTQR3URoB30/hGc0krb2O9Ef9H0gR3/qF4tmVsca4LmYlxKQjJ1j9ziYjRYtCvU+IYQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm-gnueabihf/-/html-linux-arm-gnueabihf-1.9.1.tgz", + "integrity": "sha512-DAGJbgf0Fl6VcOcYvdiP+NOg2WITe7SlX+gE/o3ROEW1m5wAFB8kWbqQHDPJ3hNEjZyIx+rE+gEj9u7Ebuzblg==", "cpu": [ "arm" ], @@ -4779,9 +4754,9 @@ } }, "node_modules/@swc/html-linux-arm64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.8.0.tgz", - "integrity": "sha512-jr2Fd0gGPNZudspZQRSUqKikeAZ9VCWB+w5LwEEZ1NuQMyyXxXnEporS9AqfQc5FPdgDbOOE2ct5iU4bmv8ENQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-gnu/-/html-linux-arm64-gnu-1.9.1.tgz", + "integrity": "sha512-4YnV9SJYC/goH7Y1xAmUj39KcpU6/tMrThbLE+MisiA0xJGwZBa+uc1FczMknzNm91ga5aQMUmy7LPKS2OwJzg==", "cpu": [ "arm64" ], @@ -4795,9 +4770,9 @@ } }, "node_modules/@swc/html-linux-arm64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.8.0.tgz", - "integrity": "sha512-MVdXyF4QZtVM2RpoSbpKTyn4NHYQmmoj+hbIgqEnce+UH/+lly/xyqtObOcZ05a/UKOx93lL9e8zY48tSRNAsg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-linux-arm64-musl/-/html-linux-arm64-musl-1.9.1.tgz", + "integrity": "sha512-y36k7DiFghomJhlzhWhSeskxxFwb0xiAumjMzLgqFbrCa4krCpwW/LPnImT2sw2joJFOSpuFG1CrtMekGNTjvw==", "cpu": [ "arm64" ], @@ -4811,9 +4786,9 @@ } }, "node_modules/@swc/html-linux-x64-gnu": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.8.0.tgz", - "integrity": "sha512-+RhgpJSqLDBySQClmPb1esdHvylyNPmUDZSCbxW2UB2X1PyJk+a6u9c6T4bacpGj+kSYxWJTpm8NUMP5O8TJlQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-gnu/-/html-linux-x64-gnu-1.9.1.tgz", + "integrity": "sha512-AvyWPZK1uhixFS5fDPTBK349/oklZJOs9dWvb6WCIB82wybLytofmHqZMJkhD5yS69FfjIljrC8QYzx2ARjUzQ==", "cpu": [ "x64" ], @@ -4827,9 +4802,9 @@ } }, "node_modules/@swc/html-linux-x64-musl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.8.0.tgz", - "integrity": "sha512-IwQ9PwroFUtMiRbul1EVgYKvt7f8fV6IcG2dXypf4nT88WSR4EBGIdHglbt1CvkfN1kV+Fd3XlyZ8HTlqqmcxg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-linux-x64-musl/-/html-linux-x64-musl-1.9.1.tgz", + "integrity": "sha512-X2LA/0tCkpuRBAH8mF4w20z2yAnwc8TrH4GAZ0kJkJB+6KHN5BwN9grEydMTKOzBT3zBAlQvkohq4Vxb4uO0OA==", "cpu": [ "x64" ], @@ -4843,9 +4818,9 @@ } }, "node_modules/@swc/html-win32-arm64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.8.0.tgz", - "integrity": "sha512-WYl9exCDEVB5zFAewjDMs+Fkjv1uwY2uh3qu5KqVe6A60g0SDZxut1K3yCEt4fm6cGU/0cmpHVngenl8A87jZw==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-win32-arm64-msvc/-/html-win32-arm64-msvc-1.9.1.tgz", + "integrity": "sha512-eLLP/MJQc6GY9JsOaDKR4TduFQ4mKs50MRsMHetaqnwMhS5TPTn6yhQldbe7ivouYwnCpWhs+62W89wa7AGQYw==", "cpu": [ "arm64" ], @@ -4859,9 +4834,9 @@ } }, "node_modules/@swc/html-win32-ia32-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.8.0.tgz", - "integrity": "sha512-Ul+wT7GiwK/rztQicJy4luhM0Vx3r2YafT7UaSVDYZ/dI2+RH6et+rDPsfnYU+M9j9cKPrOdNkb8lu8NATfooA==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-win32-ia32-msvc/-/html-win32-ia32-msvc-1.9.1.tgz", + "integrity": "sha512-yZDtJTxok7drMZFUL7d5PfLmVXDZ6XFS/DnpOU0PWZAMxXkp38ep5YP7Z+2O/SAtGJAJediUbNc0QFnaQ+DgxA==", "cpu": [ "ia32" ], @@ -4875,9 +4850,9 @@ } }, "node_modules/@swc/html-win32-x64-msvc": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.8.0.tgz", - "integrity": "sha512-+7dUidfNeVC45BB1B4AeZ060C9pcbYRv+6HmcYcNaAaHCabjIuaLduAirPNfMAxCwcGG8v3q3sIVI257gDVUmQ==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@swc/html-win32-x64-msvc/-/html-win32-x64-msvc-1.9.1.tgz", + "integrity": "sha512-khcL6xk2j5YceJgrDLuSQqfjj/6JB81yOFQT6r2Vt4+6qeNNKCvqf5l9DMrK2KtQ+L0n50yVW6sjCBUULltbRQ==", "cpu": [ "x64" ], @@ -18190,9 +18165,9 @@ } }, "node_modules/std-env": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.7.0.tgz", - "integrity": "sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==", + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", + "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", "license": "MIT" }, "node_modules/streamx": { diff --git a/documentation/package.json b/documentation/package.json index e991f81deb..940950a8e9 100644 --- a/documentation/package.json +++ b/documentation/package.json @@ -16,10 +16,10 @@ }, "dependencies": { "@dagrejs/dagre": "^1.1.3", - "@docusaurus/core": "^3.6.0", - "@docusaurus/faster": "^3.5.2", - "@docusaurus/preset-classic": "^3.6.0", - "@docusaurus/theme-mermaid": "^3.6.0", + "@docusaurus/core": "^3.6.1", + "@docusaurus/faster": "^3.6.1", + "@docusaurus/preset-classic": "^3.6.1", + "@docusaurus/theme-mermaid": "^3.6.1", "@mdx-js/react": "^3.1.0", "@rive-app/react-canvas": "^4.16.0", "clsx": "^2.1.1", @@ -34,10 +34,10 @@ "screenfull": "^6.0.2" }, "devDependencies": { - "@docusaurus/lqip-loader": "^3.6.0", - "@docusaurus/module-type-aliases": "^3.6.0", - "@docusaurus/tsconfig": "^3.6.0", - "@docusaurus/types": "^3.6.0", + "@docusaurus/lqip-loader": "^3.6.1", + "@docusaurus/module-type-aliases": "^3.6.1", + "@docusaurus/tsconfig": "^3.6.1", + "@docusaurus/types": "^3.6.1", "@iconify/react": "^5.0.2", "@types/react": "^18.3.12", "autoprefixer": "^10.4.20", diff --git a/documentation/plugins/code-snippets/snippets.json b/documentation/plugins/code-snippets/snippets.json index 0dcc8c4c1c..199e4f9a60 100644 --- a/documentation/plugins/code-snippets/snippets.json +++ b/documentation/plugins/code-snippets/snippets.json @@ -1,98 +1,98 @@ { + "initializer": { + "file": "src/main/kotlin/com/typewritermc/example/ExampleInitializer.kt", + "content": "import com.typewritermc.core.extension.Initializable\nimport com.typewritermc.core.extension.annotations.Initializer\n\n@Initializer\nobject ExampleInitializer : Initializable {\n override fun initialize() {\n // Do something when the extension is initialized\n }\n\n override fun shutdown() {\n // Do something when the extension is shutdown\n }\n}" + }, "cinematic_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": "@Entry(\"example_cinematic\", \"An example cinematic entry\", Colors.BLUE, \"material-symbols:cinematic-blur\")\nclass ExampleCinematicEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n @Segments(Colors.BLUE, \"material-symbols:cinematic-blur\")\n val segments: List = emptyList(),\n) : CinematicEntry {\n override fun create(player: Player): CinematicAction {\n return ExampleCinematicAction(player, this)\n }\n}" }, "cinematic_segment_with_min_max": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": " @Segments(Colors.BLUE, \"material-symbols:cinematic-blur\")\n @InnerMin(Min(10))\n @InnerMax(Max(20))\n val segments: List = emptyList()," }, "cinematic_create_actions": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": " // This will be used when the cinematic is normally displayed to the player.\n override fun create(player: Player): CinematicAction {\n return DefaultCinematicAction(player, this)\n }\n\n // This is used during content mode to display the cinematic to the player.\n // It may be null to not show it during simulation.\n override fun createSimulating(player: Player): CinematicAction? {\n return SimulatedCinematicAction(player, this)\n }\n\n // This is used during content mode to record the cinematic.\n // It may be null to not record it during simulation.\n override fun createRecording(player: Player): CinematicAction? {\n return RecordingCinematicAction(player, this)\n }" }, "cinematic_segment": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": "data class ExampleSegment(\n override val startFrame: Int = 0,\n override val endFrame: Int = 0,\n) : Segment" }, "cinematic_action": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": "class ExampleCinematicAction(\n val player: Player,\n val entry: ExampleCinematicEntry,\n) : CinematicAction {\n override suspend fun setup() {\n // Initialize variables, spawn entities, etc.\n }\n\n override suspend fun tick(frame: Int) {\n val segment = entry.segments activeSegmentAt frame\n // Can be null if no segment is active\n\n // The `frame` parameter is not necessarily next frame: `frame != old(frame)+1`\n\n // Execute tick logic for the segment\n }\n\n override suspend fun teardown() {\n // Remove entities, etc.\n }\n\n override fun canFinish(frame: Int): Boolean = entry.segments canFinishAt frame\n}" }, "cinematic_simple_action": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\cinematic\\ExampleCinematicEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", "content": "class ExampleSimpleCinematicAction(\n val player: Player,\n entry: ExampleCinematicEntry,\n) : SimpleCinematicAction() {\n override val segments: List = entry.segments\n\n override suspend fun startSegment(segment: ExampleSegment) {\n super.startSegment(segment) // Keep this\n // Called when a segment starts\n }\n\n override suspend fun tickSegment(segment: ExampleSegment, frame: Int) {\n super.tickSegment(segment, frame) // Keep this\n // Called every tick while the segment is active\n // Will always be called after startSegment and never after stopSegment\n\n // The `frame` parameter is not necessarily next frame: `frame != old(frame)+1`\n }\n\n override suspend fun stopSegment(segment: ExampleSegment) {\n super.stopSegment(segment) // Keep this\n // Called when the segment ends\n // Will also be called if the cinematic is stopped early\n }\n}" }, "audience_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\manifest\\ExampleAudienceEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", "content": "@Entry(\"example_audience\", \"An example audience entry.\", Colors.GREEN, \"material-symbols:chat-rounded\")\nclass ExampleAudienceEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n) : AudienceEntry {\n override fun display(): AudienceDisplay {\n return ExampleAudienceDisplay()\n }\n}" }, "audience_display": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\manifest\\ExampleAudienceEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", "content": "class ExampleAudienceDisplay : AudienceDisplay() {\n override fun initialize() {\n // This is called when the first player is added to the audience.\n super.initialize()\n // Do something when the audience is initialized\n }\n\n override fun onPlayerAdd(player: Player) {\n // Do something when a player gets added to the audience\n }\n\n override fun onPlayerRemove(player: Player) {\n // Do something when a player gets removed from the audience\n }\n\n override fun dispose() {\n super.dispose()\n // Do something when the audience is disposed\n // It will always call onPlayerRemove for all players.\n // So no player cleanup is needed here.\n }\n}" }, "tickable_audience_display": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\manifest\\ExampleAudienceEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", "content": "// highlight-next-line\nclass TickableAudienceDisplay : AudienceDisplay(), TickableDisplay {\n override fun onPlayerAdd(player: Player) {}\n override fun onPlayerRemove(player: Player) {}\n\n // highlight-start\n override fun tick() {\n // Do something when the audience is ticked\n players.forEach { player ->\n // Do something with the player\n }\n\n // This is running asynchronously\n // If you need to do something on the main thread\n ThreadType.SYNC.launch {\n // Though this will run a tick later, to sync with the bukkit scheduler.\n }\n }\n // highlight-end\n}" }, "audience_display_with_events": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\manifest\\ExampleAudienceEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", "content": "class AudienceDisplayWithEvents : AudienceDisplay() {\n override fun onPlayerAdd(player: Player) {}\n override fun onPlayerRemove(player: Player) {}\n\n // highlight-start\n @EventHandler\n fun onSomeEvent(event: SomeBukkitEvent) {\n // Do something when the event is triggered\n // This will trigger for all players, not just the ones in the audience.\n // So we need to check if the player is in the audience.\n if (event.player in this) {\n // Do something with the player\n }\n }\n // highlight-end\n}" }, "artifact_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleArtifactEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleArtifactEntry.kt", "content": "@Entry(\"example_artifact\", \"An example artifact entry.\", Colors.BLUE, \"material-symbols:home-storage-rounded\")\nclass ExampleArtifactEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val artifactId: String = \"\",\n) : ArtifactEntry" }, "artifact_access": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleArtifactEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleArtifactEntry.kt", "content": "suspend fun accessArtifactData(ref: Ref) {\n val assetManager = KoinJavaComponent.get(AssetManager::class.java)\n val entry = ref.get() ?: return\n val content: String? = assetManager.fetchAsset(entry)\n // Do something with the content\n}" }, "asset_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleAssetEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleAssetEntry.kt", "content": "@Entry(\"example_asset\", \"An example asset entry.\", Colors.BLUE, \"material-symbols:home-storage-rounded\")\nclass ExampleAssetEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val path: String = \"\",\n) : AssetEntry" }, "asset_access": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleAssetEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleAssetEntry.kt", "content": "suspend fun accessAssetData(ref: Ref) {\n val assetManager = KoinJavaComponent.get(AssetManager::class.java)\n val entry = ref.get() ?: return\n val content: String? = assetManager.fetchAsset(entry)\n // Do something with the content\n}" }, "sound_id_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleSoundIdEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSoundIdEntry.kt", "content": "@Entry(\"example_sound\", \"An example sound entry.\", Colors.BLUE, \"icon-park-solid:volume-up\")\nclass ExampleSoundIdEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val soundId: String = \"\",\n) : SoundIdEntry" }, "sound_source_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleSoundSourceEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSoundSourceEntry.kt", "content": "@Entry(\"example_sound_source\", \"An example sound source entry.\", Colors.BLUE, \"ic:round-spatial-audio-off\")\nclass ExampleSoundSourceEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n) : SoundSourceEntry {\n override fun getEmitter(player: Player): SoundEmitter {\n // Return the emitter that should be used for the sound.\n // An entity should be provided.\n return SoundEmitter(player.entityId)\n }\n}" }, "speaker_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\static\\ExampleSpeakerEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSpeakerEntry.kt", "content": "@Entry(\"example_speaker\", \"An example speaker entry.\", Colors.BLUE, \"ic:round-spatial-audio-off\")\nclass ExampleSpeakerEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val displayName: String = \"\",\n override val sound: Sound = Sound.EMPTY,\n) : SpeakerEntry" }, "action_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleActionEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleActionEntry.kt", "content": "@Entry(\"example_action\", \"An example action entry.\", Colors.RED, \"material-symbols:touch-app-rounded\")\nclass ExampleActionEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n override val triggers: List> = emptyList(),\n) : ActionEntry {\n override fun execute(player: Player) {\n super.execute(player) // This will apply all the modifiers.\n // Do something with the player\n }\n}" }, "custom_triggering_action_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleCustomTriggeringActionEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleCustomTriggeringActionEntry.kt", "content": "@Entry(\n \"example_custom_triggering_action\",\n \"An example custom triggering entry.\",\n Colors.RED,\n \"material-symbols:touch-app-rounded\"\n)\nclass ExampleCustomTriggeringActionEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n @SerializedName(\"triggers\")\n override val customTriggers: List> = emptyList(),\n) : CustomTriggeringActionEntry {\n override fun execute(player: Player) {\n super.execute(player) // This will apply the modifiers.\n // Do something with the player\n player.triggerCustomTriggers() // Can be called later to trigger the next entries.\n }\n}" }, "dialogue_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleDialogueEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleDialogueEntry.kt", "content": "@Entry(\"example_dialogue\", \"An example dialogue entry.\", Colors.BLUE, \"material-symbols:chat-rounded\")\nclass ExampleDialogueEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n override val triggers: List> = emptyList(),\n override val speaker: Ref = emptyRef(),\n @MultiLine\n @Placeholder\n @Colored\n @Help(\"The text to display to the player.\")\n val text: String = \"\",\n) : DialogueEntry" }, "dialogue_messenger": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleDialogueEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleDialogueEntry.kt", "content": "@Messenger(ExampleDialogueEntry::class)\nclass ExampleDialogueDialogueMessenger(player: Player, entry: ExampleDialogueEntry) :\n DialogueMessenger(player, entry) {\n\n companion object : MessengerFilter {\n override fun filter(player: Player, entry: DialogueEntry): Boolean = true\n }\n\n // Called every game tick (20 times per second).\n // The cycle is a parameter that is incremented every tick, starting at 0.\n override fun tick(context: TickContext) {\n super.tick(context)\n if (state != MessengerState.RUNNING) return\n\n player.sendMessage(\"${entry.speakerDisplayName}: ${entry.text}\".parsePlaceholders(player).asMini())\n\n // When we want the dialogue to end, we can set the state to FINISHED.\n state = MessengerState.FINISHED\n }\n}" }, "event_entry": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleEventEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleEventEntry.kt", "content": "@Entry(\"example_event\", \"An example event entry.\", Colors.YELLOW, \"material-symbols:bigtop-updates\")\nclass ExampleEventEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val triggers: List> = emptyList(),\n) : EventEntry" }, "event_entry_listener": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\entries\\trigger\\ExampleEventEntry.kt", + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleEventEntry.kt", "content": "// Must be scoped to be public\n@EntryListener(ExampleEventEntry::class)\nfun onEvent(event: SomeBukkitEvent, query: Query) {\n // Do something\n val entries = query.find() // Find all the entries of this type, for more information see the Query section\n // Do something with the entries, for example trigger them\n entries triggerAllFor event.player\n}" - }, - "initializer": { - "file": "src\\main\\kotlin\\com\\typewritermc\\example\\ExampleInitializer.kt", - "content": "import com.typewritermc.core.extension.Initializable\nimport com.typewritermc.core.extension.annotations.Initializer\n\n@Initializer\nobject ExampleInitializer : Initializable {\n override fun initialize() {\n // Do something when the extension is initialized\n }\n\n override fun shutdown() {\n // Do something when the extension is shutdown\n }\n}" } } \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/BasicAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/BasicAdapter.mdx new file mode 100644 index 0000000000..d77b38bb95 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/BasicAdapter.mdx @@ -0,0 +1,171 @@ +# Basic Adapter + +The Basic Adapter contains all the essential entries for Typewriter. +In most cases, it should be installed with Typewriter. +If you haven't installed Typewriter or the adapter yet, +please follow the [Installation Guide](../../docs/02-getting-started/01-installation.mdx) +first. + +## Entries + +### Actions + +| Name | Description | +| ---- | ----------- | +| [Add Potion Effect Action](./entries/action/add_potion_effect.mdx) | Add a potion effect to the player | +| [Apply Velocity Action](./entries/action/apply_velocity.mdx) | Apply a velocity to the player | +| [Cinematic](./entries/action/cinematic.mdx) | Start a new cinematic | +| [Console Command Action](./entries/action/console_run_command.mdx) | Run command from console | +| [Delayed Action](./entries/action/delayed_action.mdx) | Delay an action for a certain amount of time | +| [Drop Item Action](./entries/action/drop_item.mdx) | Drop an item at location, or on player | +| [Firework Action](./entries/action/firework.mdx) | Spawns a firework | +| [Give Item Action](./entries/action/give_item.mdx) | Give an item to the player | +| [Group Trigger Action](./entries/action/group_trigger_action.mdx) | Trigger the next entries for everyone in the same group as the player | +| [Message Action](./entries/action/send_message.mdx) | Send a message to a player | +| [Play Sound Action](./entries/action/play_sound.mdx) | Play sound at player, or location | +| [Player Command Action](./entries/action/player_run_command.mdx) | Make player run command | +| [Random Trigger Gate](./entries/action/random_trigger.mdx) | Randomly selects its connected triggers | +| [Remove Item Action](./entries/action/remove_item.mdx) | Remove an item from the players inventory | +| [Set Block Action](./entries/action/set_block.mdx) | Set a block at a location | +| [Set Item Action](./entries/action/set_item.mdx) | Set an item in a specific slot | +| [Show Title Action](./entries/action/show_title.mdx) | Show a title to a player | +| [Simple Action](./entries/action/simple_action.mdx) | Simple action to modify facts | +| [Spawn Particle Action](./entries/action/spawn_particles.mdx) | Spawn particles at location | +| [Stop Sound Action](./entries/action/stop_sound.mdx) | Stop a or all sounds for a player | +| [Switch Server Action](./entries/action/switch_server_action.mdx) | Switches the player to another server | +| [Teleport Action](./entries/action/teleport.mdx) | Teleport a player | +| [Track Quest Action](./entries/action/track_quest.mdx) | Start tracking a quest for a player | + +### Audiences + +| Name | Description | +| ---- | ----------- | +| [Boss Bar](./entries/audience/boss_bar.mdx) | Boss Bar | +| [Cinematic Audience](./entries/audience/cinematic_audience.mdx) | Filters an audience based on if they are in a cinematic | +| [Closest Group Member Path Stream](./entries/audience/closest_group_member_path_stream.mdx) | A Path Stream to the Closest Group Member | +| [Criteria Audience](./entries/audience/criteria_audience.mdx) | An audience filter based on criteria | +| [Cron Audience](./entries/audience/cron_audience.mdx) | Filters an audience based if the time matches a cron expression | +| [Direct Location Path Stream](./entries/audience/direct_location_path_stream.mdx) | A Path Stream to a Direct Location | +| [Game Time Audience](./entries/audience/game_time_audience.mdx) | Filters an audience based on the game time | +| [Group Members Path Stream](./entries/audience/group_members_path_stream.mdx) | A Path Stream to Group Members | +| [Holding Item Audience](./entries/audience/holding_item_audience.mdx) | Filters an audience based on if they are holding a specific item | +| [Item In Inventory Audience](./entries/audience/item_in_inventory_audience.mdx) | Filters an audience based on if they have a specific item in their inventory | +| [Item In Slot Audience](./entries/audience/item_in_slot_audience.mdx) | Filters an audience based on if they have a specific item in a specific slot | +| [Location Objectives Path Stream](./entries/audience/location_objectives_path_stream.mdx) | A Path Stream to tracked Location Objectives | +| [Looping Cinematic Audience](./entries/audience/looping_cinematic_audience.mdx) | Show the audience members a cinematic that loops | +| [Simple Lines](./entries/audience/simple_lines.mdx) | Statically determined lines of text | +| [Simple Sidebar](./entries/audience/sidebar.mdx) | Display a sidebar for players | +| [Tab List Header Footer](./entries/audience/tab_list_header_footer.mdx) | Set the header and footer of the tab list | +| [Timer Audience](./entries/audience/timer_audience.mdx) | Triggers an action every specified duration when the player is in the audience | +| [Trigger Audience](./entries/audience/trigger_audience.mdx) | Triggers a sequence when the player enters or exits the audience | + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Action Bar Dialogue Cinematic](./entries/cinematic/actionbar_dialogue_cinematic.mdx) | Show an action bar typed dialogue | +| [Blinding Cinematic](./entries/cinematic/blinding_cinematic.mdx) | Blind the player so the screen looks black | +| [Camera Cinematic](./entries/cinematic/camera_cinematic.mdx) | Create a cinematic camera path | +| [Cinematic Console Command](./entries/cinematic/cinematic_console_command.mdx) | Runs command as the console at a specific frame. | +| [Cinematic Player Command](./entries/cinematic/cinematic_player_command.mdx) | Runs command as the player at a specific frame. | +| [Particle Cinematic](./entries/cinematic/particle_cinematic.mdx) | Spawn particles for a cinematic | +| [Potion Effect Cinematic](./entries/cinematic/potion_effect_cinematic.mdx) | Apply different potion effects to the player during a cinematic | +| [Pumpkin Hat Cinematic](./entries/cinematic/pumpkin_hat_cinematic.mdx) | Show a pumpkin hat during a cinematic | +| [Random Action Bar Dialogue Cinematic](./entries/cinematic/random_actionbar_dialogue_cinematic.mdx) | Show a random action bar typed dialogue | +| [Random Spoken Dialogue Cinematic](./entries/cinematic/random_spoken_dialogue_cinematic.mdx) | Play a random spoken dialogue cinematic | +| [Random Subtitle Dialogue Cinematic](./entries/cinematic/random_subtitle_dialogue_cinematic.mdx) | Show a random action bar message | +| [Screen Shake Cinematic](./entries/cinematic/screen_shake_cinematic.mdx) | Shake the screen | +| [Set Fake Block Cinematic](./entries/cinematic/set_fake_block_cinematic.mdx) | Set a fake block | +| [Sound Cinematic](./entries/cinematic/sound_cinematic.mdx) | Play a sound during a cinematic | +| [Spoken Dialogue Cinematic](./entries/cinematic/spoken_dialogue_cinematic.mdx) | Play a spoken dialogue cinematic | +| [Subtitle Dialogue Cinematic](./entries/cinematic/subtitle_dialogue_cinematic.mdx) | Show an subtitle message | +| [Title Cinematic](./entries/cinematic/title_cinematic.mdx) | Show a title during a cinematic | +| [Trigger Sequence Cinematic](./entries/cinematic/trigger_sequence_cinematic.mdx) | A sequence of triggers to run | + +### Dialogues + +| Name | Description | +| ---- | ----------- | +| [Message Dialogue](./entries/dialogue/message.mdx) | Display a single message to the player | +| [Option Dialogue](./entries/dialogue/option.mdx) | Display a list of options to the player | +| [Random Message Dialogue](./entries/dialogue/random_message.mdx) | Display a random message from a list to a player | +| [Random Spoken Dialogue](./entries/dialogue/random_spoken.mdx) | Display a random selected animated message to the player | +| [Spoken Dialogue](./entries/dialogue/spoken.mdx) | Display a animated message to the player | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Block Break Event](./entries/event/on_block_break.mdx) | When the player breaks a block | +| [Block Place Event](./entries/event/on_place_block.mdx) | When the player places a block | +| [Chat Contains Text Event](./entries/event/on_message_contains_text.mdx) | When the player sends a chat message containing certain text | +| [Craft Item Event](./entries/event/craft_item_event.mdx) | Called when a player crafts an item | +| [Detect Command Ran Event](./entries/event/on_detect_command_ran.mdx) | When a player runs an existing command | +| [Fire Trigger Event](./entries/event/fire_trigger_event.mdx) | Trigger the event when a player runs `/tw fire [player]` | +| [Fish Event](./entries/event/on_fish.mdx) | When the a player caught a fish or an item | +| [Interact Block Event](./entries/event/on_interact_with_block.mdx) | When the player interacts with a block | +| [Pickup Item Event](./entries/event/on_item_pickup.mdx) | When the player picks up an item | +| [Player Death Event](./entries/event/on_player_death.mdx) | When a player dies | +| [Player Hit Entity Event](./entries/event/on_player_hit_entity.mdx) | When a player hits an entity | +| [Player Join Event](./entries/event/on_player_join.mdx) | When the player joins the server | +| [Player Kill Entity Event](./entries/event/on_player_kill_entity.mdx) | When a player kills an entity | +| [Player Kill Player Event](./entries/event/on_player_kill_player.mdx) | When a player kills a player | +| [Player Near Location Event](./entries/event/on_player_near_location.mdx) | When the player is near a certain location | +| [Player Quit Event](./entries/event/on_player_quit.mdx) | When the player quits the server | +| [Run Command Event](./entries/event/on_run_command.mdx) | When a player runs a custom command | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [Countdown Fact](./entries/fact/countdown_fact.mdx) | A fact that counts down from the set value | +| [Cron Fact](./entries/fact/cron_fact.mdx) | Saved until a specified date, like (0 0 * * 1 | +| [In Audience Fact](./entries/fact/in_audience_fact.mdx) | The fact that the player is in the audience | +| [In Cinematic Fact](./entries/fact/in_cinematic_fact.mdx) | If the player is in a cinematic | +| [Inventory Item Count Fact](./entries/fact/inventory_item_count_fact.mdx) | The amount of a specific item in the player's inventory | +| [Item Holding Fact](./entries/fact/item_holding_fact.mdx) | The amount of a specific item the player is currently holding | +| [Item In Slot Fact](./entries/fact/item_in_slot_fact.mdx) | Check if a specific item is in a specific slot for the player | +| [Number Placeholder Fact](./entries/fact/number_placeholder.mdx) | Computed Fact for a placeholder number | +| [Permanent Fact](./entries/fact/permanent_fact.mdx) | Saved permanently, it never gets removed | +| [Quest Status Fact](./entries/fact/quest_status_fact.mdx) | The status of a specific quest | +| [Session Fact](./entries/fact/session_fact.mdx) | Saved until a player logouts of the server | +| [Timed Fact](./entries/fact/timed_fact.mdx) | Saved for a specified duration, like 20 minutes | +| [Value Placeholder Fact](./entries/fact/value_placeholder.mdx) | Fact for a placeholder value | + +### Groups + +| Name | Description | +| ---- | ----------- | +| [Global Group](./entries/group/global_group.mdx) | One group with all the online players | +| [Player Group](./entries/group/player_group.mdx) | Group for every individual player | +| [World Group](./entries/group/world_group.mdx) | Group for the whole world | + +### Quests + +| Name | Description | +| ---- | ----------- | +| [Completable Objective](./entries/quest/completable_objective.mdx) | An objective that can show a completed stage | +| [Location Objective](./entries/quest/location_objective.mdx) | A location objective definition | +| [Objective Lines](./entries/quest/objective_lines.mdx) | Display all the current objectives | +| [Quest Complete Event](./entries/quest/quest_complete_event.mdx) | Triggered when a quest is completed for a player | +| [Quest Start Event](./entries/quest/quest_start_event.mdx) | Triggered when a quest is started for a player | +| [Quest Status Update Event](./entries/quest/quest_status_update_event.mdx) | Triggered when a quest status is updated for a player | +| [Simple Objective](./entries/quest/objective.mdx) | An objective definition | +| [Simple Quest](./entries/quest/quest.mdx) | A quest definition | +| [Tracked Objective Audience](./entries/quest/tracked_objective_audience.mdx) | Filters an audience based on if they have a tracked objective | +| [Tracked Quest Audience](./entries/quest/tracked_quest_audience.mdx) | Filters an audience based on if they have a quest tracked | + +### Sounds + +| Name | Description | +| ---- | ----------- | +| [Custom Sound](./entries/sound/custom_sound.mdx) | A custom sound | + +### Statics + +| Name | Description | +| ---- | ----------- | +| [Base Road Network](./entries/static/base_road_network.mdx) | A definition of the words road network | +| [Self Speaker](./entries/static/self_speaker.mdx) | The player themself | +| [Simple Speaker](./entries/static/simple_speaker.mdx) | The most basic speaker | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/_category_.yml new file mode 100644 index 0000000000..ab04e22579 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/_category_.yml @@ -0,0 +1 @@ +label: Basic Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/_category_.yml new file mode 100644 index 0000000000..d69558cd9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/_category_.yml @@ -0,0 +1 @@ +label: Actions \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/add_potion_effect.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/add_potion_effect.mdx new file mode 100644 index 0000000000..5382d680ac --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/add_potion_effect.mdx @@ -0,0 +1,37 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Add Potion Effect Action + +The `Add Potion Effect Action` is an action that adds a potion effect to the player. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to provide players with buffs or debuffs, such as speed or slowness, or to create custom effects. + + +## Fields + + + + + + + The potion effect to add. + + + The duration of the potion effect. + + + The amplifier of the potion effect. + + + Whether or not the effect is ambient + + + Whether or not to show the potion effect particles. + + + Whether or not to show the potion effect icon in the player's inventory. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/apply_velocity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/apply_velocity.mdx new file mode 100644 index 0000000000..5058183364 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/apply_velocity.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Apply Velocity Action + +The `ApplyVelocityActionEntry` is an action that applies a velocity to the player. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to simulate wind, explosions, or any other force that would move the player. + + +## Fields + + + + + + + The force to apply to the player. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/cinematic.mdx new file mode 100644 index 0000000000..0b6e63faed --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/cinematic.mdx @@ -0,0 +1,26 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cinematic + +The `Cinematic` action is used to start a new cinematic. + +A cinematic can only be overridden +if another cinematic is triggered with a higher page priority than the current one. + +## How could this be used? + +This action can be useful in situations where you want to start a cinematic. +See the [Cinematic](/docs/creating-stories/cinematics) tutorial for more information. + + +## Fields + + + + + + + The cinematic page to start. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/console_run_command.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/console_run_command.mdx new file mode 100644 index 0000000000..145d7e11d1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/console_run_command.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Console Command Action + +The Console Command Action is an action that sends a command to the server console. This action provides you with the ability to execute console commands on the server in response to specific events. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to perform administrative tasks, such as sending a message to all players on the server, or to automate server tasks, such as setting the time of day or weather conditions. The possibilities are endless! + + +## Fields + + + + + + + Every line is a different command. Commands should not be prefixed with /. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/delayed_action.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/delayed_action.mdx new file mode 100644 index 0000000000..730515cea2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/delayed_action.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Delayed Action + +The `Delayed Action Entry` is an entry that fires its triggers after a specified duration. This entry provides you with the ability to create time-based actions and events. + +## How could this be used? + +This entry can be useful in a variety of situations where you need to delay an action or event. +You can use it to create countdown timers, to perform actions after a certain amount of time has elapsed, or to schedule events in the future. + + +## Fields + + + + + + + The duration before the next triggers are fired. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/drop_item.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/drop_item.mdx new file mode 100644 index 0000000000..159e963560 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/drop_item.mdx @@ -0,0 +1,28 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Drop Item Action + +The `Drop Item Action` is an action that drops an item in the world. +This action provides you with the ability to drop an item with a specified Minecraft material, amount, display name, lore, and location. + +## How could this be used? + +This action can be useful in a variety of situations. +You can use it to create treasure chests with randomized items, drop loot from defeated enemies, or spawn custom items in the world. +The possibilities are endless! + + +## Fields + + + + + + + The item to drop. + + + The location to drop the item at. If this field is left blank, the item will be dropped at the location of the player triggering the action. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/firework.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/firework.mdx new file mode 100644 index 0000000000..a05249455e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/firework.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Firework Action + +The `Firework Action Entry` is an action that spawns a firework. + +## How could this be used? +This could be used to create a firework that displays a specific effect. + + +## Fields + + + + + + + The location to spawn the firework. + + + The effects to display on the firework. + + + The power of the firework. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/give_item.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/give_item.mdx new file mode 100644 index 0000000000..ad87bbd095 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/give_item.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Give Item Action + +The `Give Item Action` is an action that gives a player an item. This action provides you with the ability to give an item with a specified Minecraft material, amount, display name, and lore. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to give players rewards for completing quests, unlockables for reaching certain milestones, or any other custom items you want to give players. The possibilities are endless! + + +## Fields + + + + + + + The item to give. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/group_trigger_action.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/group_trigger_action.mdx new file mode 100644 index 0000000000..93b7239bb4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/group_trigger_action.mdx @@ -0,0 +1,29 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Group Trigger Action + +The `Group Trigger Action` is an action that triggers the next entries for everyone in the same group as the player. + +:::caution +The modifiers will only be applied to the player that triggered the action. +If you want to modify the other players, you will need to do it in the next entries. +::: + +## How could this be used? +This could be used to trigger the next entries for everyone in the same group as the player, +when a player joins a faction, all the other players in the same faction could be notified. + + +## Fields + + + + + + + + + The group to trigger the next entries for. If not set, the action will trigger for the group of the player that triggered the action. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/play_sound.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/play_sound.mdx new file mode 100644 index 0000000000..5b1ed2bfd0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/play_sound.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Play Sound Action + +The `Play Sound Action` is an action that plays a sound for the player. This action provides you with the ability to play any sound that is available in Minecraft, at a specified location. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to provide audio feedback to players, such as when they successfully complete a challenge, or to create ambiance in your Minecraft world, such as by playing background music or sound effects. The possibilities are endless! + + +## Fields + + + + + + + The sound to play. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/player_run_command.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/player_run_command.mdx new file mode 100644 index 0000000000..e4dd7c0f3b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/player_run_command.mdx @@ -0,0 +1,28 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Command Action + +The `Player Command Action` is an action that runs a command as if the player entered it. +This action provides you with the ability to execute commands on behalf of the player in response to specific events. + +## How could this be used? + +This action can be useful in a variety of situations. +You can use it to provide players with a custom command that triggers a specific action, +such as teleporting the player to a specific location or giving them an item. +You can also use it to automate repetitive tasks, +such as sending a message to the player when they complete a quest or achievement. +The possibilities are endless! + + +## Fields + + + + + + + Every line is a different command. Commands should not be prefixed with /. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/random_trigger.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/random_trigger.mdx new file mode 100644 index 0000000000..f38b0fa7c0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/random_trigger.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Trigger Gate + +The `Random Trigger Gate` is a gate that triggers a specified number of entries randomly. This gate provides you with the ability to randomly select and trigger a set number of entries in response to a specific event. + +## How could this be used? + +This gate can be useful in a variety of situations. You can use it to create a mini-game that randomly selects events to occur, or to trigger a set number of actions randomly in response to a specific event. The possibilities are endless! + + +## Fields + + + + + + + The amount of triggers to fire. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/remove_item.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/remove_item.mdx new file mode 100644 index 0000000000..06a8fbb4bd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/remove_item.mdx @@ -0,0 +1,29 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Remove Item Action + +The `Remove Item Action` is an action that removes an item from the player's inventory. +This action provides you with the ability to remove items from the player's inventory in response to specific events. + +This action will try to remove "as much as possible" but does not verify if the player has enough items in their inventory. +If you want to guarantee that the player has enough items in their inventory, add an +Inventory Item Count Fact to the criteria. + + +## How could this be used? + +This can be used when `giving` an NPC an item, and you want to remove the item from the player's inventory. +Or when you want to remove a key from the player's inventory after they use it to unlock a door. + + +## Fields + + + + + + + The item to remove. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/send_message.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/send_message.mdx new file mode 100644 index 0000000000..ec61ec9db5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/send_message.mdx @@ -0,0 +1,31 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Message Action + +The `Send Message Action` is an action that sends a message to a player. +You can specify the speaker, and the message to send. + +This should not be confused with the (Message Dialogue)[../dialogue/message]. +(Message Dialogue)[../dialogue/message] will replace the current dialogue with the message, while this action will not. + +## How could this be used? + +This action can be useful in a variety of situations. +You can use it to create text effects in response to specific events, such as completing actions or anything else. +The possibilities are endless! + + +## Fields + + + + + + + The speaker of the message + + + The message to send + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_block.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_block.mdx new file mode 100644 index 0000000000..17fcc2e69f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_block.mdx @@ -0,0 +1,30 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Set Block Action + +The `SetBlockActionEntry` is an action that sets a block at a specific location. + +:::caution +This will set the block for all the players on the server, not just the player who triggered the action. +It will modify the world, so be careful when using this action. +::: + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create structures, set traps, or any other custom block placements you want to make. The possibilities are endless! + + +## Fields + + + + + + + The material of the block to set. + + + The location to set the block at. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_item.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_item.mdx new file mode 100644 index 0000000000..7f587e5580 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/set_item.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Set Item Action + +The `Set Item Action` is an action that sets an item in a specific slot in the player's inventory. + +## How could this be used? + +This can be used to equip a player with an elytra, or give them a weapon. + + +## Fields + + + + + + + The item to set. + + + The slot to set the item in. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/show_title.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/show_title.mdx new file mode 100644 index 0000000000..a8c2090c3d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/show_title.mdx @@ -0,0 +1,28 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Show Title Action + +The `Show Title Action` is an action that shows a title to a player. You can specify the subtitle, and durations if needed. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create text effects in response to specific events, such as completing questions or anything else. The possibilities are endless! + + +## Fields + + + + + + + The title text to show. + + + The subtitle text to show. + + + Duration of the title: Fade in, how long it stays, fade out. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/simple_action.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/simple_action.mdx new file mode 100644 index 0000000000..e4397b0667 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/simple_action.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Action + +The `Simple Action` is an empty action that can be used to modify facts. + +## How could this be used? + +This action can be useful in situations where you need to modify facts, or want to filter different actions based om some criteria, +but don't need to perform any additional actions. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/spawn_particles.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/spawn_particles.mdx new file mode 100644 index 0000000000..bab1f7d692 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/spawn_particles.mdx @@ -0,0 +1,40 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Spawn Particle Action + +The `Spawn Particle Action` is an action that spawns a specific particle at a given location. This action provides you with the ability to spawn particles with a specified type, count, and location. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create visual effects in response to specific events, such as explosions or magical spells. The possibilities are endless! + + +## Fields + + + + + + + The location to spawn the particles at. (Defaults to player's location + + + The particle to spawn. + + + The amount of particles to spawn. + + + The offset from the location on the X axis. + + + The offset from the location on the Y axis. + + + The offset from the location on the Z axis. + + + The speed of the particles. For some particles, this is the \"extra\" data value to control particle behavior. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/stop_sound.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/stop_sound.mdx new file mode 100644 index 0000000000..4e95ad5850 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/stop_sound.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Stop Sound Action + +The `Stop Sound` action is used to stop a or all sounds for a player. + +## How could this be used? + +This action can be useful in situations where you want to stop a sound for a player. +For example, when leaving a certain area, you might want to stop the music that was playing. + + +## Fields + + + + + + + The sound to stop. If this field is left blank, all sounds will be stopped. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/switch_server_action.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/switch_server_action.mdx new file mode 100644 index 0000000000..7bd5c7e235 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/switch_server_action.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Switch Server Action + +The `Switch Server Action` is an action that switches the player to another server. + +## How could this be used? + +This could be used to switch a player from one server to another when interacting with an entity, maybe clicking a button. + + +## Fields + + + + + + + The server the player has switched to + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/teleport.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/teleport.mdx new file mode 100644 index 0000000000..179a7ad248 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/teleport.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Teleport Action + +The `Teleport Action` entry is used to teleport a player to a location. + +## How could this be used? +This could be used to teleport a player to a location when they click a button. +Or it could be used for a fast travel system where players talk to an NPC and are teleported to a location. + + +## Fields + + + + + + + The location to teleport the player to. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/track_quest.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/track_quest.mdx new file mode 100644 index 0000000000..29bff7716f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/action/track_quest.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Track Quest Action + +The `Track Quest Action` is an action that tracks a quest when triggered. + +Though quests are tracked automatically, this action can force a quest to be tracked. + +## How could this be used? + +Start tacking a quest, so it displays in the player's quest tracker. + + +## Fields + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/_category_.yml new file mode 100644 index 0000000000..62dd6a6647 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/_category_.yml @@ -0,0 +1 @@ +label: Audiences \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/boss_bar.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/boss_bar.mdx new file mode 100644 index 0000000000..064f6c5e63 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/boss_bar.mdx @@ -0,0 +1,29 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Boss Bar + +The `BossBarEntry` is a display that shows a bar at the top of the screen. + +## How could this be used? +This could be used to show objectives in a quest, or to show the progress of a task. + + +## Fields + + + The title of the boss bar + + + How filled up the bar is. 0.0 is empty, 1.0 is full. + + + The color of the boss bar + + + If the bossbar has notches + + + Any flags to apply to the boss bar + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cinematic_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cinematic_audience.mdx new file mode 100644 index 0000000000..e199aa1799 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cinematic_audience.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cinematic Audience + +The `Cinematic Audience` entry filters an audience based on if they are in a cinematic. + +If no cinematic is referenced, it will filter based on if any cinematic is active. + +## How could this be used? +This could be used to hide the sidebar or boss bar when a cinematic is playing. + + +## Fields + + + + + When not set it will filter based on if any cinematic is active. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/closest_group_member_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/closest_group_member_path_stream.mdx new file mode 100644 index 0000000000..f79d7b80f1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/closest_group_member_path_stream.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Closest Group Member Path Stream + +The `Closest Group Member Path Stream` entry is a path stream that shows the path to the closest group member. +The 'Closest Group Member' is determined by the group member that is closest to the player geographically, +**Not based on the path distance.** + +When the group is not set, the path stream will not display anything. +Players must be in the same world for the path stream to consider them. + +## How could this be used? +This could be used to show a path to the closest group member in a group of players. +When a player is lost, they can follow the path to the closest group member. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/criteria_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/criteria_audience.mdx new file mode 100644 index 0000000000..e646f99210 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/criteria_audience.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Criteria Audience + +The `Criteria Audience` entry filters an audience based on criteria. + +## How could this be used? +This could be used to show a boss bar or npc when the player is in a certain quest stage. + + +## Fields + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cron_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cron_audience.mdx new file mode 100644 index 0000000000..939b182f76 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/cron_audience.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cron Audience + +The `Cron Audience` entry filters an audience based on if the real-world time matches a cron expression. +This will use the server's time, not the player's time. + +## How could this be used? +This could be used for limited time events, like a holiday. + + +## Fields + + + + + The Cron Expression when the fact expires. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/direct_location_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/direct_location_path_stream.mdx new file mode 100644 index 0000000000..a831b24374 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/direct_location_path_stream.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Direct Location Path Stream + +The `Direct Location Path Stream` entry is a path stream that shows the path to a specific location. +When the player has this entry, a path stream will be displayed to the specified location. + +## How could this be used? +This could be used to show a path to a specific location in the world. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/game_time_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/game_time_audience.mdx new file mode 100644 index 0000000000..94a8f63e96 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/game_time_audience.mdx @@ -0,0 +1,35 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Game Time Audience + +The `GameTimeAudienceEntry` filters an audience based on the game time. + +The total time of a Minecraft day is `24000` ticks. +Some examples of times are: +------------------------------ +| Time of day | Ticks | +|-------------|--------------| +| Dawn | 0 | +| Noon | 6000 | +| Dusk | 12000 | +| Midnight | 18000 | +------------------------------ + +## How could this be used? +This can be used to only allow passage to a certain area at night. +For example, a vampire castle that only opens its doors at night. +Or a market that only opens during the day. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/group_members_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/group_members_path_stream.mdx new file mode 100644 index 0000000000..6462b6697a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/group_members_path_stream.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Group Members Path Stream + +The `Group Members Path Stream` entry is a path stream that shows the path to each group member. +The 'Group Members' are determined by the group members that are in the same group as the player. + +When the group is not set, the path stream will not display anything. + +## How could this be used? +This could be used to show a path to each group member in a group of players. +When a player wants to find any other group member, they can follow the respective path. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/holding_item_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/holding_item_audience.mdx new file mode 100644 index 0000000000..c587215674 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/holding_item_audience.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Holding Item Audience + +The `Holding Item Audience` entry is an audience filter that filters an audience based on if they are holding a specific item. +The audience will only contain players that are holding the specified item. + +## How could this be used? +Could show a path stream to a location when the player is holding a map. + + +## Fields + + + + + The item to check for. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_inventory_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_inventory_audience.mdx new file mode 100644 index 0000000000..095dafa98c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_inventory_audience.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Item In Inventory Audience + +The `Item In Inventory Audience` entry filters an audience based on if they have a specific item in their inventory. + +## How could this be used? +This could show a boss bar or sidebar based on if a player has a specific item in their inventory. + + +## Fields + + + + + The item to check for in the inventory. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_slot_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_slot_audience.mdx new file mode 100644 index 0000000000..ab77ce1949 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/item_in_slot_audience.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Item In Slot Audience + +The `Item In Slot Audience` entry filters an audience based on if they have a specific item in a specific slot. + +## How could this be used? +It can be used to have magnet boots which allow players to move in certain areas. + + +## Fields + + + + + The item to check for. + + + The slot to check. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/location_objectives_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/location_objectives_path_stream.mdx new file mode 100644 index 0000000000..c0e11ebff3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/location_objectives_path_stream.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Location Objectives Path Stream + +The `Location Objectives Path Stream` entry is a path stream that shows the path to each tracked location objective. +When the player has a location objective, and the quest for the objective is tracked, a path stream will be displayed. + +## How could this be used? +This could be used to show a path to each location objective in a quest. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/looping_cinematic_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/looping_cinematic_audience.mdx new file mode 100644 index 0000000000..e09431622e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/looping_cinematic_audience.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Looping Cinematic Audience + +The `Looping Cinematic Audience` entry is used to show the audience members a cinematic that loops. + +**It is recommended that this entry is bounded by location or region, +to prevent players from receiving packets for cinematics they cannot see.** + +:::caution +The Cinematic can only have entries that are compatible with looping (non-primary entries). +Anything that cannot have two or more instances active at once will not work. +::: + +## How could this be used? +To display particles on a loop, such as a fountain. +Or sparks that come from a broken wire. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/sidebar.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/sidebar.mdx new file mode 100644 index 0000000000..ac90aa1592 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/sidebar.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Sidebar + +The `SidebarEntry` is a display that shows a sidebar to players. + +To display lines on the sidebar, use the `SidebarLinesEntry` as its descendants. + +## How could this be used? +This could be used to show a list of objectives, or the region a player is in. + + +## Fields + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/simple_lines.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/simple_lines.mdx new file mode 100644 index 0000000000..f4b2385da4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/simple_lines.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Lines + +The `SimpleSidebarLinesEntry` is a display that shows lines. + +Separating lines with a newline character will display them on separate lines. + +## How could this be used? +This could be used to show a list of objectives, or the region a player is in. + + +## Fields + + + The lines to display on the sidebar. Separate lines with a newline character. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/tab_list_header_footer.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/tab_list_header_footer.mdx new file mode 100644 index 0000000000..f2d9424ced --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/tab_list_header_footer.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Tab List Header Footer + +The `TabListHeaderFooterEntry` is an entry that sets the header and footer of the tab list. +It takes in lines for the header and footer. +And shows them to the players in the tab list. + + +## Fields + + + The lines to display in the header of the tab list + + + The lines to display in the footer of the tab list + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/timer_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/timer_audience.mdx new file mode 100644 index 0000000000..7b42b8570b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/timer_audience.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Timer Audience + +The `Timer Audience` entry is an audience filter that triggers an action every specified duration when the player is in the audience. + +:::caution +Very short durations can cause performance issues, and may be inaccurate. +::: + +## How could this be used? +This can be used to trigger a sequence every few seconds. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/trigger_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/trigger_audience.mdx new file mode 100644 index 0000000000..7f18b671a7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/audience/trigger_audience.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Trigger Audience + +The `Trigger Audience` entry is an audience filter that triggers a sequence when the player enters or exits the audience. + +## How could this be used? +This can be used to bridge the gap between audiences and sequence pages. + + +## Fields + + + The sequence to trigger when the player enters the audience. + + + The sequence to trigger when the player exits the audience. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/actionbar_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/actionbar_dialogue_cinematic.mdx new file mode 100644 index 0000000000..c9cb259618 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/actionbar_dialogue_cinematic.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Action Bar Dialogue Cinematic + +The `Action Bar Dialogue Cinematic` is a cinematic that shows a dialogue in the action bar. +You can specify the speaker and the dialogue. + +## How could this be used? + +This cinematic is useful to display dialogue in combination with a camera path. +As the dialogue is displayed in the action bar, the player can still move around and look at the camera path. + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/blinding_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/blinding_cinematic.mdx new file mode 100644 index 0000000000..010d44004e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/blinding_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Blinding Cinematic + +The `Blinding Cinematic` entry is used to blind the player so the screen looks black. + +## How could this be used? +Make the screen look black for the player during a cinematic. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/camera_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/camera_cinematic.mdx new file mode 100644 index 0000000000..d9fac28526 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/camera_cinematic.mdx @@ -0,0 +1,34 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Camera Cinematic + +The `Camera Cinematic` entry is used to create a cinematic camera path. + +Durations for path points calculated based on the total duration of each segment and specified path point's duration. +Suppose you have a segment with a duration of 300 ticks, and it has 3 path points. +Then we specify the duration on the second path point as 200 ticks. +The resulting durations between path points are as follows: + +| From | To | Duration | +|------|----|----------| +| 1 | 2 | 100 | +| 2 | 3 | 200 | + +::: warning +Since the duration of a path point is the duration from that point to the next point, +the last path point will always have a duration of `0`. +Regardless of the duration specified on the last path point. +::: + +## How could this be used? +When you want to direct the player's attention to a specific object/location. +Or when you want to show off a build. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_console_command.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_console_command.mdx new file mode 100644 index 0000000000..8211c5332b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_console_command.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cinematic Console Command + +The `Cinematic Console Command` entry runs a command as the console at a specific frame. + +## How could this be used? + +You can use a different plugin to animate blocks, hide a scoreboard, or trigger something in another plugin. + + +## Fields + + + + Run commands on different segments + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_player_command.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_player_command.mdx new file mode 100644 index 0000000000..9dfdf1c65c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/cinematic_player_command.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cinematic Player Command + +The `Cinematic Player Command` entry runs a command as the player at a specific frame. + +## How could this be used? + +You can use a different plugin to animate blocks, hide a scoreboard, or trigger something in another plugin. + + +## Fields + + + + Run commands on different segments + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/particle_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/particle_cinematic.mdx new file mode 100644 index 0000000000..ae011e0404 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/particle_cinematic.mdx @@ -0,0 +1,41 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Particle Cinematic + +The `Particle Cinematic` entry is used to spawn particles for a cinematic. + +## How could this be used? + +This can be used to add dramatic effects to a cinematic. +Like, blowing up a building and spawning a bunch of particles. +Or, adding focus to a certain area by spawning particles around it. + + +## Fields + + + + The location to spawn the particles at. + + + The particle to spawn. + + + The amount of particles to spawn. + + + The offset from the location on the X axis. + + + The offset from the location on the Y axis. + + + The offset from the location on the Z axis. + + + The speed of the particles. For some particles, this is the "extra" data value to control particle behavior. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/potion_effect_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/potion_effect_cinematic.mdx new file mode 100644 index 0000000000..93518a6291 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/potion_effect_cinematic.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Potion Effect Cinematic + +The `PotionEffectCinematicEntry` is used to apply different potion effects to the player during a cinematic. + +## How could this be used? +This can be used to dynamically apply effects like blindness, slowness, etc., at different times +during a cinematic, enhancing the storytelling or gameplay experience. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/pumpkin_hat_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/pumpkin_hat_cinematic.mdx new file mode 100644 index 0000000000..22f4329388 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/pumpkin_hat_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Pumpkin Hat Cinematic + +The `Pumpkin Hat Cinematic` is a cinematic that shows a pumpkin hat on the player's head. + +## How could this be used? +When you have a resource pack, you can re-texture the pumpkin overlay to make it look like cinematic black bars. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_actionbar_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_actionbar_dialogue_cinematic.mdx new file mode 100644 index 0000000000..7afd240665 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_actionbar_dialogue_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Action Bar Dialogue Cinematic + +Show a random action bar typed dialogue + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_spoken_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_spoken_dialogue_cinematic.mdx new file mode 100644 index 0000000000..e62cd24570 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_spoken_dialogue_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Spoken Dialogue Cinematic + +Play a random spoken dialogue cinematic + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_subtitle_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_subtitle_dialogue_cinematic.mdx new file mode 100644 index 0000000000..ddb78a46da --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/random_subtitle_dialogue_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Subtitle Dialogue Cinematic + +Show a random action bar message + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/screen_shake_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/screen_shake_cinematic.mdx new file mode 100644 index 0000000000..18ae007b90 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/screen_shake_cinematic.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Screen Shake Cinematic + +The `Screen Shake Cinematic` entry is used to shake the screen. + +## How could this be used? +It could be used to simulate an earthquake or a sudden impact. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/set_fake_block_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/set_fake_block_cinematic.mdx new file mode 100644 index 0000000000..0a04415f81 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/set_fake_block_cinematic.mdx @@ -0,0 +1,15 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Set Fake Block Cinematic + +Set a fake block + + +## Fields + + + + The segments that will be displayed in the cinematic + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/sound_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/sound_cinematic.mdx new file mode 100644 index 0000000000..db8cd89e51 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/sound_cinematic.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Sound Cinematic + +The `Sound Cinematic` entry plays a sound during a cinematic. + +## How could this be used? + +This entry could be used to play a sound during a cinematic, such as a sound effect for a cutscene. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/spoken_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/spoken_dialogue_cinematic.mdx new file mode 100644 index 0000000000..a5e365a85b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/spoken_dialogue_cinematic.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Spoken Dialogue Cinematic + +The `Spoken Dialogue Cinematic` is a cinematic that displays an animated message in chat. + +## How could this be used? + +When a NPC is talking to the player, this can be used to display the NPC's dialogue. + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/subtitle_dialogue_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/subtitle_dialogue_cinematic.mdx new file mode 100644 index 0000000000..2fee1b8562 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/subtitle_dialogue_cinematic.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Subtitle Dialogue Cinematic + +The `Subtitle Dialogue Cinematic Entry` is a cinematic entry that displays an animated subtitle message. +The speaker is displayed in the action bar, and the dialogue is displayed in the subtitle. + +## How could this be used? + +This could be used to display a dialogue between two characters, where the speaker is displayed in the action bar, and the dialogue is displayed in the subtitle. + + +## Fields + + + + The speaker of the dialogue + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/title_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/title_cinematic.mdx new file mode 100644 index 0000000000..328af61c24 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/title_cinematic.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Title Cinematic + +The `Title Cinematic` entry shows a title during a cinematic. + +## How could this be used? + +This entry could be used to show a title during a cinematic, such as a title for a cutscene. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/trigger_sequence_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/trigger_sequence_cinematic.mdx new file mode 100644 index 0000000000..532acfc01a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/cinematic/trigger_sequence_cinematic.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Trigger Sequence Cinematic + +The `Trigger Sequence Cinematic` entry that runs a sequence of triggers. It is very powerful but also very dangerous. + +:::caution +Be aware of which triggers are running. If you run a trigger that is viewable by everyone, it will be visible to everyone. +Also, **never trigger dialogues**, they should not be triggered from a cinematic. +If you want to trigger a dialogue after the cinematic, connect it to the [CinematicEntry](../action/cinematic.mdx) +::: + +## How could this be used? +When you want to use any triggerable entry. Like giving an item to the player at a specific frame. + + +## Fields + + + + The sequence of triggers to run + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/_category_.yml new file mode 100644 index 0000000000..024c5871e5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/_category_.yml @@ -0,0 +1 @@ +label: Dialogues \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/message.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/message.mdx new file mode 100644 index 0000000000..6258b8024c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/message.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Message Dialogue + +The `Message Dialogue Action` is an action that displays a single message to the player. This action provides you with the ability to show a message to the player in response to specific events. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to give the player information about their surroundings, provide them with tips, or add flavor to your adventure. The possibilities are endless! + + +## Fields + + + + + + + + + The text to display to the player. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/option.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/option.mdx new file mode 100644 index 0000000000..1ee3922584 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/option.mdx @@ -0,0 +1,30 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Option Dialogue + +The `Option Dialogue` action displays a list of options to the player to choose from. This action provides you with the ability to give players choices that affect the outcome of the game. + +## How could this be used? + +This action can be useful in a variety of situations, such as presenting the player with dialogue choices that determine the course of a story or offering the player a choice of rewards for completing a quest. + + +## Fields + + + + + + + + + The text to display to the player. + + + The options for the player to choose from. + + + The duration it takes to type out the message. If the duration is zero, the message will be displayed instantly. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_message.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_message.mdx new file mode 100644 index 0000000000..750d286005 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_message.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Message Dialogue + +The `Random Message Dialogue` action displays a random message from a list to the player. This action provides you with the ability to create interactive dialogues with randomized responses. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create randomized NPC dialogue, quests with multiple randomized outcomes, or to add a level of unpredictability to your game. The possibilities are endless! + + +## Fields + + + + + + + + + The text to display to the player. One will be picked at random. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_spoken.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_spoken.mdx new file mode 100644 index 0000000000..198279cfdd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/random_spoken.mdx @@ -0,0 +1,30 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Spoken Dialogue + +The `Random Spoken Dialogue` action displays a randomly selected animated message to the player. + +## How could this be used? + +Let's say you have an NPC in your game who tells jokes to the player. +You could use the Random Spoken Dialogue action +to randomly select a joke from a list of possible jokes and have the NPC "tell" +it to the player using an animated message. + + +## Fields + + + + + + + + + A list of messages to display to the player. Every time the dialogue is triggered, one of these messages will be picked at random. + + + The duration it takes to type out the message. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/spoken.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/spoken.mdx new file mode 100644 index 0000000000..df6bd62288 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/dialogue/spoken.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Spoken Dialogue + +The `Spoken Dialogue Action` is an action that displays an animated message to the player. This action provides you with the ability to display a message with a specified speaker, text, and duration. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create storylines, provide instructions to players, or create immersive roleplay experiences. The possibilities are endless! + + +## Fields + + + + + + + + + The text to display to the player. + + + The duration it takes to type out the message. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/craft_item_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/craft_item_event.mdx new file mode 100644 index 0000000000..93bbe4fc62 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/craft_item_event.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Craft Item Event + +The `Craft Item Event` is triggered when a player crafts an item. +This can be from a crafting table, a furnace, smiting table, campfire, or any other crafting method. + +## How could this be used? +This could be used to complete a quest where the player has to craft a certain item, or to give the player a reward when they craft a certain item. + + +## Fields + + + + + The item that was crafted. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/fire_trigger_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/fire_trigger_event.mdx new file mode 100644 index 0000000000..eb8ba8588e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/fire_trigger_event.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Fire Trigger Event + +The `FireTriggerEventEntry` is an event that fires its triggers when the player runs `/tw fire [player]` + +## How could this be used? +This could be used to trigger an event when a player runs `/tw fire [player]` + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_block_break.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_block_break.mdx new file mode 100644 index 0000000000..96428cc171 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_block_break.mdx @@ -0,0 +1,26 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Block Break Event + +The `Block Break Event` is triggered when a player breaks a block. + +## How could this be used? + +This could allow you to make custom ores with custom drops, give the player a reward after breaking a certain amount of blocks. + + +## Fields + + + + + The block that was broken. + + + The location of the block that was broken. + + + The item the player must be holding when the block is broken. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_detect_command_ran.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_detect_command_ran.mdx new file mode 100644 index 0000000000..3feb6cf3e9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_detect_command_ran.mdx @@ -0,0 +1,39 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Detect Command Ran Event + +The `Detect Command Ran Event` event is triggered when an **already existing** command is ran. + +:::caution +This event only works if the command already exists. If you are trying to make a new command that does not exist already, use the [`Run Command Event`](on_run_command) instead. +::: + +## How could this be used? + +This event could be used to trigger a response when a specific command has been run. +For example, you could have a command that sends a message to a channel when a command has been run, +which could be used as an audit log for your admins. + + +## Fields + + + + + The command to listen for. +This can be partial, so if you wanted to listen for any warp command, +you could use warp as the command. +However, this can also include parameters, so if you +wanted to listen if the player warps to spawn, you could use +warp spawn as the command. +
+ +Do not include the / at the start of the command. +This will be added automatically. + +
+ + Cancel the event when triggered + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_fish.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_fish.mdx new file mode 100644 index 0000000000..8fcda3f087 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_fish.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Fish Event + +The `Player Fish Event` is triggered when a player catches a fish or an item. + +## How could this be used? +You can create custom fishing mechanics, such as catching a specific item when fishing in a specific location. + + +## Fields + + + + + The item the player must be holding when the fish or item is caught. + + + The item that the player caught. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_interact_with_block.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_interact_with_block.mdx new file mode 100644 index 0000000000..7e788d21b3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_interact_with_block.mdx @@ -0,0 +1,37 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Interact Block Event + +The `Interact Block Event` is triggered when a player interacts with a block by right-clicking it. + +## How could this be used? + +This could be used to create special interactions with blocks, such as opening a secret door when you right-click a certain block, or a block that requires a key to open. + + +## Fields + + + + + The block that was interacted with. + + + The location of the block that was interacted with. + + + The item the player must be holding when the block is interacted with. + + + Cancel the event when triggered. +It will only cancel the event if all the criteria are met. +If set to false, it will not modify the event. + + + The type of interaction that should trigger the event. + + + The type of shift that should trigger the event. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_item_pickup.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_item_pickup.mdx new file mode 100644 index 0000000000..7716c79255 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_item_pickup.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Pickup Item Event + +The `Pickup Item Event` is triggered when the player picks up an item. + +## How could this be used? + +This event could be used to trigger a quest or to trigger a cutscene, when the player picks up a specific item. + + +## Fields + + + + + The item to listen for. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_message_contains_text.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_message_contains_text.mdx new file mode 100644 index 0000000000..e497f9c405 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_message_contains_text.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Chat Contains Text Event + +The `Chat Contains Text Event` is called when a player sends a chat message containing certain text. + +## How could this be used? + +When a player mentions something, you could display dialogue to them. + + +## Fields + + + + + The text to look for in the message. + + + If the text should be matched exactly or not. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_place_block.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_place_block.mdx new file mode 100644 index 0000000000..cda0c402e0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_place_block.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Block Place Event + +The `Block Place Event` is called when a block is placed in the world. + +## How could this be used? + +This event could be used to create a custom block that has special properties when placed in the world, like particles or sounds that play. It could also be used to create a block that when placed, can turn itself into a cool structure. + + +## Fields + + + + + The location of the block that was placed. + + + The block that is placed. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_death.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_death.mdx new file mode 100644 index 0000000000..72ece500e9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_death.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Death Event + +The `Player Death Event` is fired when any player dies. This event allows you to select the cause of death if you wish. If you want to detect when another player kills a player, use the [`Player Kill Player Event`](on_player_kill_player). + +## How could this be used? + +You can create custom death messages for certain types of deaths, such as falling, drowning, or being killed by another player. + + +## Fields + + + + + If specified, the death cause must match the cause of death in order for the event to trigger. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_hit_entity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_hit_entity.mdx new file mode 100644 index 0000000000..7c81a327ef --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_hit_entity.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Hit Entity Event + +The `Player Hit Entity Event` event is fired when a player hits an entity. If you want to detect when a player kills an entity, use the [`Player Kill Entity Event`](on_player_kill_entity) event. + +## How could this be used? + +This event could be used to create a custom game mode where players have to hit a certain number of entities to win. It could also be used to detect when you hit a certain entity, and make it be aggresive towards you. + + +## Fields + + + + + If specified, the entity type must match the entity type that was hit in order for the event to trigger. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_join.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_join.mdx new file mode 100644 index 0000000000..4a7bbbdb8b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_join.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Join Event + +The `Player Join Event` event is called when a player joins the server. + +## How could this be used? + +This could be used with [facts](/docs/creating-stories/facts) to give a new player a welcome message, or welcome back new players. You can also use it to give new players a starting item, or to give them a starting amount of money with the [Vault adapter](/adapters/VaultAdapter). + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_entity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_entity.mdx new file mode 100644 index 0000000000..79c73a8a04 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_entity.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Kill Entity Event + +The `Player Kill Entity Event` is fired when a player kills an entity. If you want to detect when a player kills another player, use the [`Player Kill Player Event`](on_player_kill_player) instead. + +## How could this be used? + +This event could be used to detect when a player kills a boss, and give them some rewards. It could also be used to create a custom mob that drops items when killed by a player. + + +## Fields + + + + + If specified, the entity type must match the entity type that was killed in order for the event to trigger. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_player.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_player.mdx new file mode 100644 index 0000000000..a7ff2ceade --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_kill_player.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Kill Player Event + +The `Player Kill Player Event` is triggered when a player kills another player. If you want to detect when a player kills some thing else, use the [`Player Kill Entity Event`](on_player_kill_entity) instead. + +## How could this be used? + +This could be used to create a bounty system, where someone places a bounty on another player, and when that player is killed, the bounty is paid out to the player who kills them. + + +## Fields + + + + + The entries connected tho this field will be triggered for the player who was killed. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_near_location.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_near_location.mdx new file mode 100644 index 0000000000..3e8a3c165a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_near_location.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Near Location Event + +The `PlayerNearLocationEventEntry` class represents an event that is triggered when a player is within a certain range of a location. + +## How could this be used? + +This could be used to create immersive gameplay experiences such as triggering a special event or dialogue when a player approaches a specific location. +For example, when a player gets close to a hidden treasure, a hint could be revealed or a guardian could spawn. + + +## Fields + + + + + The location the player should be near. + + + The range within which the event should trigger. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_quit.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_quit.mdx new file mode 100644 index 0000000000..269d4c7d18 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_player_quit.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Quit Event + +The `Player Quit Event` event is called when a player quits the server. + +## How could this be used? + +This could be used to reset a boss when they leave or to teleport them outside a dungeon. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_run_command.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_run_command.mdx new file mode 100644 index 0000000000..09c0102de7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/event/on_run_command.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Run Command Event + +The `Run Command Event` event is triggered when a command is run. This event can be used to add custom commands to the server. + +:::caution +This event is used for commands that **do not** already exist. If you are trying to detect when a player uses an already existing command, use the [`Detect Command Ran Event`](on_detect_command_ran) instead. +::: + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/countdown_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/countdown_fact.mdx new file mode 100644 index 0000000000..4bbd63d244 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/countdown_fact.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Countdown Fact + +The `Cooldown Fact` is a fact reflects the time since the last set value. + +When the value is set, it will count every second down from the set value. + +Suppose the value is set to 10. +Then after 3 seconds, the value will be 7. + +The countdown will continue regardless if the player is online/offline or if the server is online/offline. + +## How could this be used? +This can be used to create a cooldown on a specific action. +For example, daily rewards that the player can only get once a day. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/cron_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/cron_fact.mdx new file mode 100644 index 0000000000..a314afe415 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/cron_fact.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cron Fact + +A [fact](/docs/creating-stories/facts) that is saved until a specified date, like (0 0 \* \* 1). + +## How could this be used? + +This fact could be used to create weekly rewards, which are reset every week. Or to simulate the opening hours of a shop. + + +## Fields + + + + + + The Cron Expression when the fact expires. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_audience_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_audience_fact.mdx new file mode 100644 index 0000000000..35bef352ac --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_audience_fact.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# In Audience Fact + +The `In Audience Fact` is a fact that the value specified if the player is in the audience. + + + +## How could this be used? +This can be used to filter players if they are in a specific audience. + + +## Fields + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_cinematic_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_cinematic_fact.mdx new file mode 100644 index 0000000000..d93c2945a4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/in_cinematic_fact.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# In Cinematic Fact + +The 'In Cinematic Fact' is a fact that returns 1 if the player has an active cinematic, and 0 if not. + +If no cinematic is referenced, it will filter based on if any cinematic is active. + + + +## How could this be used? +With this fact, it is possible to make an entry only take action if the player does not have an active cinematic. + + +## Fields + + + + + + When not set it will filter based on if any cinematic is active. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/inventory_item_count_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/inventory_item_count_fact.mdx new file mode 100644 index 0000000000..282e42d315 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/inventory_item_count_fact.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Inventory Item Count Fact + +The `Inventory Item Count Fact` is a fact that returns the amount of a specific item in the player's inventory. + + + +## How could this be used? + +This could be used to check if the player has a specific item in their inventory, or to check if they have a specific amount of an item. +Like giving the player a quest to collect 10 apples, and then checking if they have 10 apples in their inventory. + + +## Fields + + + + + + The item to check for. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_holding_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_holding_fact.mdx new file mode 100644 index 0000000000..ae37d94c9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_holding_fact.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Item Holding Fact + +The `Item Holding Fact` is a fact that returns the amount of a specific item the player is currently holding. +When no properties for the item are set, the fact will return the amount of the item the player is holding. + + + +## How could this be used? +Show PathStreams when the player is holding a specific item. +Like showing a path to a location when the player is holding a map. + + +## Fields + + + + + + The item to check for. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_in_slot_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_in_slot_fact.mdx new file mode 100644 index 0000000000..26674928ef --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/item_in_slot_fact.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Item In Slot Fact + +The `Item In Slot Fact` is a fact that returns the amount of a specific item the player has in a specific slot. + + + +## How could this be used? +Check if the player is wearing a specific armor piece. + + +## Fields + + + + + + The item to check for. + + + The slot to check. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/number_placeholder.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/number_placeholder.mdx new file mode 100644 index 0000000000..b141bffe43 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/number_placeholder.mdx @@ -0,0 +1,32 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Number Placeholder Fact + +A [fact](/docs/creating-stories/facts) that is computed from a placeholder. +This placeholder is evaluated when the fact is read and must return a number or boolean. + + + +## How could this be used? + +Make sure the player has a high enough level. +Then allow them to start a quest or enter a dungeon. + + +## Fields + + + + + + The placeholder to parse. +For example %player_level%. + + +Only placeholders that return a number or boolean are supported! +If you want to use a placeholder that returns a string, +use the ValuePlaceholderFactEntry instead. + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/permanent_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/permanent_fact.mdx new file mode 100644 index 0000000000..e356ca3e5d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/permanent_fact.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Permanent Fact + +This [fact](/docs/creating-stories/facts) is permanent and never expires. + +## How could this be used? + +This could be used to store if a player joined the server before. If the player has completed a quest. Maybe if the player has received a reward already to prevent them from receiving it again. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/quest_status_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/quest_status_fact.mdx new file mode 100644 index 0000000000..ff839c4ce2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/quest_status_fact.mdx @@ -0,0 +1,34 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Quest Status Fact + +The `QuestStatusFact` is a fact that returns the status of a specific quest. + + + +| Status | Value | +|--------|-------| +| Inactive | 0 | +| Active | 1 | +| Active and Tracked | 2 | +| Completed | -1 | + +:::warning +The __completed__ status has a value of **-1**, this is to make it easy to query if the quest is active by `>= 1`. +::: + +## How could this be used? + +This can be used to abstract the status of a quest. +If a quest has multiple criteria, you can check for this fact instead of checking for each criterion. + + +## Fields + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/session_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/session_fact.mdx new file mode 100644 index 0000000000..ef526637ad --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/session_fact.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Session Fact + +This [fact](/docs/creating-stories/facts) is stored until the player logs out. + +## How could this be used? + +This could be used to slowly add up a player's total time played, and reward them with a badge or other reward when they reach a certain amount of time. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/timed_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/timed_fact.mdx new file mode 100644 index 0000000000..ea5fbc17b7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/timed_fact.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Timed Fact + +This fact is stored for a certain amount of time. +After that time, it is reset. + +## How could this be used? + +This fact could serve as a timer, and when the fact runs out, it could be used to trigger an action. + + +## Fields + + + + + + The duration after which the fact expires. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/value_placeholder.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/value_placeholder.mdx new file mode 100644 index 0000000000..2a8ac1afff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/fact/value_placeholder.mdx @@ -0,0 +1,41 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Value Placeholder Fact + +A [fact](/docs/creating-stories/facts) that is computed from a placeholder. +This placeholder is evaluated when the fact is read and can return anything. +The value will be computed based on the `values` specified. + + +## How could this be used? + +If you only want to run certain actions if the player is in creative mode. +Or depending on the weather, change the dialogue of the NPC. + + +## Fields + + + + + + Placeholder to parse (e.g. %player_gamemode% + + + The values to match the placeholder with and their corresponding fact value. + +An example would be: +```yaml +values: +SURVIVAL: 0 +CREATIVE: 1 +ADVENTURE: 2 +SPECTATOR: 3 +``` +If the placeholder returns `CREATIVE`, the fact value will be `1`. +If no value matches, the fact value will be `0`. + +Values can have placeholders inside them. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/_category_.yml new file mode 100644 index 0000000000..460a5324be --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/_category_.yml @@ -0,0 +1 @@ +label: Groups \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/global_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/global_group.mdx new file mode 100644 index 0000000000..cf289636b5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/global_group.mdx @@ -0,0 +1,15 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Global Group + +The `Global Group` is a group that includes all the online players. + +## How could this be used? +This could be used to have facts that are the same for all the players, +like a global objective that all the players have to work together to achieve. + + +## Fields + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/player_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/player_group.mdx new file mode 100644 index 0000000000..0accd8957b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/player_group.mdx @@ -0,0 +1,14 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Group + +The `Player Group` is a group that is specific to each individual player. + +## How could this be used? +This could be used to have facts that are specific to each player, like their progress in a quest or their reputation with a faction. + + +## Fields + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/world_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/world_group.mdx new file mode 100644 index 0000000000..4eb76fd306 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/group/world_group.mdx @@ -0,0 +1,14 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# World Group + +The `World Group` is a group that includes all the players in a world. + +## How could this be used? +This could be used to have facts that are specific to a world, like the state of a world event or the state of a world boss. + + +## Fields + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/_category_.yml new file mode 100644 index 0000000000..e00ec3f085 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/_category_.yml @@ -0,0 +1 @@ +label: Quests \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/completable_objective.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/completable_objective.mdx new file mode 100644 index 0000000000..89c31187de --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/completable_objective.mdx @@ -0,0 +1,32 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Completable Objective + +The `Completable Objective` entry is an objective that can show a completed stage. +It is shown to the player when the show criteria are met, regardless of if the completed criteria are met. + +## How could this be used? +This is useful when the quest has multiple objectives that can be completed in different orders. +For example, the player needs to collect wheat, eggs, and milk to make a cake. +The order in which the player collects the items does not matter. +But you want to show the player which items they have collected. + + +## Fields + + + + + + + The criteria need to be met for the objective to be able to be shown. + + + The criteria to display the objective as completed. + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/location_objective.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/location_objective.mdx new file mode 100644 index 0000000000..476ca264fc --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/location_objective.mdx @@ -0,0 +1,35 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Location Objective + +The `LocationObjective` entry is a task that the player can complete by reaching a specific location. +It is mainly for displaying the progress to a player. + +It is **not** necessary to use this entry for objectives. +It is just a visual novelty. + +The entry filters the audience based on if the objective is active. +It will show the objective to the player if the criteria are met. + +It allows path streams to be displayed to the target location. + +## How could this be used? +This could be used to guide the players to a specific location. +Showing the players where they need to go with a path stream. + + +## Fields + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective.mdx new file mode 100644 index 0000000000..c757c419c2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective.mdx @@ -0,0 +1,30 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Objective + +The `Objective` entry is a tasks that the player can complete. +It is mainly for displaying the progress to a player. + +It is **not** necessary to use this entry for objectives. +It is just a visual novelty. + +The entry filters the audience based on if the objective is active. +It will show the objective to the player if the criteria are met. + +## How could this be used? +This could be used to show the players what they need to do. + + +## Fields + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective_lines.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective_lines.mdx new file mode 100644 index 0000000000..4f423863be --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/objective_lines.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Objective Lines + +The `ObjectiveLinesEntry` is a display that shows all the current objectives. + +## How could this be used? +This could be used to show a list of tracked objectives + + +## Fields + + + The format for the line. Use <objective> to replace with the objective name. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest.mdx new file mode 100644 index 0000000000..d06448cf02 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest.mdx @@ -0,0 +1,31 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Quest + +The `Quest` entry is a collection of tasks that the player can complete. +It is mainly for displaying the progress to a player. + +It is **not** necessary to use this entry for quests. +It is just a visual novelty. + +The entry filters the audience based on if the quest is active. + +## How could this be used? +This could be used to show the progress of a quest to a player. +Connect objectives to the quest to show a player what they need to do. + + +## Fields + + + + + + + When the criteria is met, it considers the quest to be active. + + + When the criteria is met, it considers the quest to be completed. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_complete_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_complete_event.mdx new file mode 100644 index 0000000000..a285a27a0a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_complete_event.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Quest Complete Event + +The `Quest Complete Event` entry is triggered when a quest is completed for a player. + +When no quest is referenced, it will trigger for all quests. + +## How could this be used? +This could be used to show a title or notification to a player when a quest is completed. + + +## Fields + + + + + When not set it will trigger for all quests. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_start_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_start_event.mdx new file mode 100644 index 0000000000..7f818c8eff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_start_event.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Quest Start Event + +The `Quest Start Event` entry is triggered when a quest is started for a player. + +When no quest is referenced, it will trigger for all quests. + +## How could this be used? +This could be used to show a title or notification to a player when a quest is started. + + +## Fields + + + + + When not set it will trigger for all quests. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_status_update_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_status_update_event.mdx new file mode 100644 index 0000000000..d1e951855e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/quest_status_update_event.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Quest Status Update Event + +The `Quest Status Update Event` entry is triggered when a quest status is updated for a player. + +When no quest is referenced, it will trigger for all quests. + +## How could this be used? +This could be used to show a title or notification to a player when a quest status is updated. + + +## Fields + + + + + When not set it will trigger for all quests. + + + When not set it will trigger for all statuses. + + + The status the quest is updated to. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_objective_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_objective_audience.mdx new file mode 100644 index 0000000000..f3a21ad2cc --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_objective_audience.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Tracked Objective Audience + +The `Tracked Objective Audience` entry filters an audience based on if they have a tracked objective. +It looks if the player has an objective showing from the quest that is being tracked. + +## How could this be used? +This could be used to show a boss bar or sidebar based on if a player has an objective showing. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_quest_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_quest_audience.mdx new file mode 100644 index 0000000000..f08589b9fb --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/quest/tracked_quest_audience.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Tracked Quest Audience + +The `Tracked Quest Audience` entry filters an audience based on if they have a quest tracked. + +If no quest is referenced, it will filter based on if any quest is tracked. + +## How could this be used? + +This could be used to show a boss bar or sidebar based on if a player has a quest tracked. + + +## Fields + + + + + When not set it will filter based on if any quest is tracked. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/_category_.yml new file mode 100644 index 0000000000..e99615ee4a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/_category_.yml @@ -0,0 +1 @@ +label: Sounds \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/custom_sound.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/custom_sound.mdx new file mode 100644 index 0000000000..f65d7dd5ad --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/sound/custom_sound.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Custom Sound + +The `Custom Sound Entry` is an entry that allow you to add sounds from a resource pack. +And use it in other entries. + +## How could this be used? +For npc's, for example, you can add a custom sound to the npc, every time the npc talks, the sound will play. +Or you can use it during cinematics where a ncp talks. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/_category_.yml new file mode 100644 index 0000000000..dde896a04f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/_category_.yml @@ -0,0 +1 @@ +label: Statics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/base_road_network.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/base_road_network.mdx new file mode 100644 index 0000000000..e3490ab114 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/base_road_network.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Base Road Network + +The `Simple Road Network` is a definition of a road network. +The road network is a system of interconnected nodes and edges that represent a network in the world. + +## How could this be used? +To let npc's navigate the world. +And to let players navigate the world by showing them the way to go. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/self_speaker.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/self_speaker.mdx new file mode 100644 index 0000000000..223b23b35f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/self_speaker.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Self Speaker + +The `Self Speaker` is a speaker that represents the player themselves. +This speaker is used to display messages from the player's perspective. + +## How could this be used? +This speaker could be used to display messages from the player's perspective, +such as thoughts or internal dialogue. +It can also be used as a sound source for the player's voice. + + +## Fields + + + + + Overrides the display name of the speaker + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/simple_speaker.mdx b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/simple_speaker.mdx new file mode 100644 index 0000000000..d60e8e6ca1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/BasicAdapter/entries/static/simple_speaker.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Simple Speaker + +The `Spoken Dialogue Action` is an action that displays an animated message to the player. This action provides you with the ability to display a message with a specified speaker, text, and duration. + +## How could this be used? + +This action can be useful in a variety of situations. You can use it to create storylines, provide instructions to players, or create immersive roleplay experiences. The possibilities are endless! + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/CitizensAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/CitizensAdapter.mdx new file mode 100644 index 0000000000..8d424eb6ff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/CitizensAdapter.mdx @@ -0,0 +1,29 @@ +import UnsupportedWarning from '@site/src/components/UnsupportedWarning'; + + + +# Citizens Adapter + +The Citizens adapter allows you to create custom interactions with NPCs. + +## Entries + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Reference Npc Cinematic](./entries/cinematic/reference_npc_cinematic.mdx) | A reference to an existing npc specifically for cinematic | +| [Self Npc Cinematic](./entries/cinematic/self_npc_cinematic.mdx) | The player itself as an cinematic npc | + +### Entitys + +| Name | Description | +| ---- | ----------- | +| [Reference Npc](./entries/entity/reference_npc.mdx) | When the npc is not managed by TypeWriter | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Npc Interact Event](./entries/event/on_npc_interact.mdx) | When a player clicks on an NPC | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/_category_.yml new file mode 100644 index 0000000000..245d3322f5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/_category_.yml @@ -0,0 +1 @@ +label: Citizens Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/reference_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/reference_npc_cinematic.mdx new file mode 100644 index 0000000000..2987c15841 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/reference_npc_cinematic.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Reference NPC Cinematic` entry that plays a recorded animation back on a reference NPC. +When active, the original NPC will be hidden and a clone will be spawned in its place. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + + + Reference npc to clone + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/self_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/self_npc_cinematic.mdx new file mode 100644 index 0000000000..93c39bf207 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/cinematic/self_npc_cinematic.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Self Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Self NPC Cinematic` entry that plays a recorded animation back on the player with an NPC with the player's skin. +If the NPC recording does not have any armor, the player's armor when starting the cinematic will be used. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/_category_.yml new file mode 100644 index 0000000000..24356b74c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/_category_.yml @@ -0,0 +1 @@ +label: Entitys \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/reference_npc.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/reference_npc.mdx new file mode 100644 index 0000000000..df4a8837d0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/entity/reference_npc.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc + +An identifier that references an NPC in the Citizens plugin. But does not manage the NPC. + +## How could this be used? + +This can be used to reference an NPC which is already in the world. This could be used to create a quest that requires the player to talk to an NPC. + + +## Fields + + + + + + + The id of the NPC in the Citizens plugin. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/on_npc_interact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/on_npc_interact.mdx new file mode 100644 index 0000000000..5037f50b2f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CitizensAdapter/entries/event/on_npc_interact.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Npc Interact Event + +The `NPC Interact Event` is fired when a player interacts with an NPC. + +## How could this be used? + +This can be used to create a variety of interactions that can occur between an NPC and a player. For example, you could create an NPC that gives the player an item when they interact with it. + + +## Fields + + + + + The NPC that needs to be interacted with. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/CombatLogXAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/CombatLogXAdapter.mdx new file mode 100644 index 0000000000..fdc5f64b6b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/CombatLogXAdapter.mdx @@ -0,0 +1,23 @@ +# Combat Log X Adapter + +The CombatLogX Adapter allows you to create entries that are triggered when a player enters or leaves combat. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Events + +| Name | Description | +| ---- | ----------- | +| [Player Enter Combat Event](./entries/event/on_player_enter_combat.mdx) | When a player enters combat | +| [Player Exit Combat Event](./entries/event/on_player_exit_combat.mdx) | When a player is no longer in combat | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [Combat Fact](./entries/fact/combat_fact.mdx) | If the player is in combat | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/_category_.yml new file mode 100644 index 0000000000..64cc859c0d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/_category_.yml @@ -0,0 +1 @@ +label: Combat Log X Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_enter_combat.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_enter_combat.mdx new file mode 100644 index 0000000000..3208035860 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_enter_combat.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Enter Combat Event + +The `Player Enter Combat Event` is triggered when a player enters combat with another player. + +## How could this be used? + +This could be used to play a sound effect when a player enters combat with another player. + + +## Fields + + + + + Triggers to fire for the aggressor who made the attack. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_exit_combat.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_exit_combat.mdx new file mode 100644 index 0000000000..5ca2795829 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/event/on_player_exit_combat.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Exit Combat Event + +The `Player Exit Combat Event` is fired when a player exits combat. + +## How could this be used? + +This could be used to trigger a message when a player exits combat. Or count the number of times a player exits combat in a certain area and change the behavior of NPCs. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/combat_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/combat_fact.mdx new file mode 100644 index 0000000000..59c6983096 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/CombatLogXAdapter/entries/fact/combat_fact.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Combat Fact + +A [fact](/docs/creating-stories/facts) that tells whether a player is in combat. + + + +## How could this be used? + +This could be used to disable certain actions when the player is in combat. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/EntityAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/EntityAdapter.mdx new file mode 100644 index 0000000000..351d0d41c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/EntityAdapter.mdx @@ -0,0 +1,121 @@ +# Entity Adapter + +The Entity Adapter contains all the essential entries working with entities. +It allows you to create dynamic entities such as NPC's or Holograms. + +In most cases, it should be installed with Typewriter. +If you haven't installed Typewriter or the adapter yet, +please follow the [Installation Guide](../../docs/02-getting-started/01-installation.mdx) +first. + +## Entries + +### Activitys + +| Name | Description | +| ---- | ----------- | +| [Audience Activity](./entries/activity/audience_activity.mdx) | Select activity based on the audience a player is in | +| [Game Time Activity](./entries/activity/game_time_activity.mdx) | A game time activity | +| [In Dialogue Activity](./entries/activity/in_dialogue_activity.mdx) | An in dialogue activity | +| [Look Close Activity](./entries/activity/look_close_activity.mdx) | A look close activity | +| [Path Activity](./entries/activity/path_activity.mdx) | Moving along a predefined path | +| [Patrol Activity](./entries/activity/patrol_activity.mdx) | Moving around a set of locations | +| [Player Close By Activity](./entries/activity/player_close_by_activity.mdx) | A player close by activity | +| [Random Look Activity](./entries/activity/random_look_activity.mdx) | A random look activity | +| [Target Location Activity](./entries/activity/target_location_activity.mdx) | A location activity | +| [Timed Activity](./entries/activity/timed_activity.mdx) | Allows child activities for a limited amount of time | +| [Trigger Activity](./entries/activity/trigger_activity.mdx) | Triggers a sequence when the activity active or inactive | + +### Audiences + +| Name | Description | +| ---- | ----------- | +| [Direct Entity Instance Path Stream](./entries/audience/direct_entity_instance_path_stream.mdx) | A Path Stream to a Direct Entity Instance | + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Entity Cinematic](./entries/cinematic/entity_cinematic.mdx) | Use an animated entity in a cinematic | + +### Datas + +| Name | Description | +| ---- | ----------- | +| [Ageable Data](./entries/data/ageable_data.mdx) | An ageable data | +| [Arrow Count Data](./entries/data/arrow_count_data.mdx) | The amount of arrows in a entity | +| [Cat Variant Data](./entries/data/cat_variant_data.mdx) | The variant of a cat. | +| [Chested Horse Chest Data](./entries/data/chested_horse_chest_meta.mdx) | If the horse has a chest. | +| [Collar Color Data](./entries/data/collar_color_data.mdx) | The color of the cat's or wolfs collar | +| [Custom Name Data](./entries/data/custom_name_data.mdx) | The custom name of the entity | +| [Dancing Data](./entries/data/dancing_data.mdx) | Whether an entity is dancing | +| [Glowing Effect Data](./entries/data/glowing_effect_data.mdx) | If the entity is glowing | +| [Horse Variant Data](./entries/data/horse_variant_dat.mdx) | The variant of the horse. | +| [Llama Carpet Color Data](./entries/data/llama_carpet_color_data.mdx) | The color of the llama's carpet. | +| [Llama Variant Data](./entries/data/llama_variant_data.mdx) | The variant of the Llama. | +| [Marker Data](./entries/data/marker_data.mdx) | Whether the entity is a marker | +| [On Fire Data](./entries/data/on_fire_data.mdx) | If the entity is on fire | +| [Parrot Color Data](./entries/data/parrot_color_data.mdx) | The color of the parrot | +| [Pose Data](./entries/data/pose_data.mdx) | The pose of the entity | +| [Potion Effect Color Data](./entries/data/potion_effect_color_data.mdx) | The color of the potion effect particles | +| [Puff State Data](./entries/data/puff_state_data.mdx) | State of the Puf entity | +| [Rabbit Type Data](./entries/data/rabbit_type_data.mdx) | The type of the rabbit | +| [Saddled Data](./entries/data/saddled_data.mdx) | If the entity has a saddle. | +| [Size Data](./entries/data/size_data.mdx) | Size of the entity | +| [Skin Data](./entries/data/skin_data.mdx) | Skin data for players | +| [Small Data](./entries/data/small_data.mdx) | Whether the entity is small | +| [Villager Data](./entries/data/villager_data.mdx) | A villager data | + +### Entitys + +| Name | Description | +| ---- | ----------- | +| [Allay Instance](./entries/entity/allay_instance.mdx) | An instance of a allay entity | +| [Cat Instance](./entries/entity/cat_instance.mdx) | An instance of a cat entity | +| [Chicken Instance](./entries/entity/chicken_instance.mdx) | An instance of a chicken entity | +| [Cow Instance](./entries/entity/cow_instance.mdx) | An instance of a cow entity | +| [Enderman Instance](./entries/entity/enderman_instance.mdx) | An instance of a enderman entity | +| [Frog Instance](./entries/entity/frog_instance.mdx) | An instance of a frog entity | +| [Hit Box Definition](./entries/entity/hit_box_definition.mdx) | A hit box for an entity to allow interaction with a different entity | +| [Hoglin Instance](./entries/entity/hoglin_instance.mdx) | An instance of a hoglin entity | +| [Husk Instance](./entries/entity/husk_instance.mdx) | An instance of a husk entity | +| [Interaction Indicator Definition](./entries/entity/interaction_indicator_definition.mdx) | Interaction Indicator | +| [Iron Golem Instance](./entries/entity/iron_golem_instance.mdx) | An instance of an iron golem entity | +| [Item Display Instance](./entries/entity/item_display_instance.mdx) | An instance of an item display entity | +| [Magma Cube Instance](./entries/entity/magma_cube_instance.mdx) | An instance of a magma cube entity | +| [Named Entity Definition](./entries/entity/named_entity_definition.mdx) | An entity with a name above it's head and the indicator | +| [Npc Instance](./entries/entity/npc_instance.mdx) | An instance of a simplified premade npc | +| [Piglin Brute Instance](./entries/entity/piglin_brute_instance.mdx) | An instance of a piglin brute entity | +| [Piglin Instance](./entries/entity/piglin_instance.mdx) | An instance of a piglin entity | +| [Player Instance](./entries/entity/player_instance.mdx) | An instance of a player entity | +| [Self Npc Definition](./entries/entity/self_npc_definition.mdx) | The definition of the self NPC | +| [Skeleton Instance](./entries/entity/skeleton_instance.mdx) | An instance of a skeleton entity | +| [Slime Instance](./entries/entity/slime_instance.mdx) | An instance of a slime entity | +| [Stacked Entity Definition](./entries/entity/stacked_entity_definition.mdx) | A stacking of entities | +| [Text Display Instance](./entries/entity/text_display_instance.mdx) | An instance of a text display entity | +| [Villager Instance](./entries/entity/villager_instance.mdx) | An instance of a villager entity | +| [Warden Instance](./entries/entity/warden_instance.mdx) | An instance of a warden entity | +| [Witch Instance](./entries/entity/witch_instance.mdx) | An instance of a witch entity | +| [Zombie Instance](./entries/entity/zombie_instance.mdx) | An instance of a zombie entity | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Entity Interact Event](./entries/event/entity_interact_event.mdx) | When the player clicks on an entity | + +### Instances + +| Name | Description | +| ---- | ----------- | +| [Group Advanced Entity Instance](./entries/instance/group_advanced_entity_instance.mdx) | An advanced instance of an entity | +| [Individual Advanced Entity Instance](./entries/instance/individual_advanced_entity_instance.mdx) | An advanced instance of an entity | +| [Shared Advanced Entity Instance](./entries/instance/shared_advanced_entity_instance.mdx) | An advanced instance of an entity | + +### Quests + +| Name | Description | +| ---- | ----------- | +| [Interact Entity Objective](./entries/quest/interact_entity_objective.mdx) | Interact with an entity | +| [Interact Entity Objectives Path Stream](./entries/quest/interact_entity_objectives_path_stream.mdx) | A Path Stream to Interact Entity Objectives | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/_category_.yml new file mode 100644 index 0000000000..f40aaa625f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/_category_.yml @@ -0,0 +1 @@ +label: Entity Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/_category_.yml new file mode 100644 index 0000000000..ce078dfb88 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/_category_.yml @@ -0,0 +1 @@ +label: Activitys \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/audience_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/audience_activity.mdx new file mode 100644 index 0000000000..c61752a522 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/audience_activity.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Audience Activity + +The `Audience Activity` is an activity that filters an audience based on the audience a player is in. +The activity will go through the audiences in order and the first one +where the player is part of the audience will have the activity selected. + +This can only be used on an individual entity instance. + +## How could this be used? +This could be used to make a bodyguard distracted by something and walk away just for the player. + + +## Fields + + + + + The activity that will be used when the player is not in any audience. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/game_time_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/game_time_activity.mdx new file mode 100644 index 0000000000..7cb37086ff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/game_time_activity.mdx @@ -0,0 +1,33 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Game Time Activity + +The `GameTimeActivityEntry` is an activity that activates child activities at specific times in the game. + +The total time of a Minecraft day is `24000` ticks. +Some examples of times are: +------------------------------ +| Time of day | Ticks | +|-------------|--------------| +| Dawn | 0 | +| Noon | 6000 | +| Dusk | 12000 | +| Midnight | 18000 | +------------------------------ + +## How could this be used? + +This can be used to create schedules for npc's to follow. +For example, going to the market in the morning, going to the tavern at night. + + +## Fields + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/in_dialogue_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/in_dialogue_activity.mdx new file mode 100644 index 0000000000..de25b9a234 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/in_dialogue_activity.mdx @@ -0,0 +1,32 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# In Dialogue Activity + +The `InDialogueActivityEntry` is an activity that activates child activities when a player is in a dialogue with the NPC. + +The activity will only activate when the player is in a dialogue with the NPC. + +## How could this be used? +This can be used to stop a npc from moving when a player is in a dialogue with it. + + +## Fields + + + The duration a player can be idle in the same dialogue before the activity deactivates. + +When set to 0, it won't use the timer. + + +When the dialogue priority is higher than this activity's priority, this timer will be ignored. +And will only exit when the dialogue is finished. + + + + The activity that will be used when the npc is in a dialogue + + + The activity that will be used when the npc is not in a dialogue + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/look_close_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/look_close_activity.mdx new file mode 100644 index 0000000000..f92080dffd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/look_close_activity.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Look Close Activity + +The `LookCloseActivityEntry` is an activity that makes the entity look to the player closest to it. + +The activity is specific to the player, then the entity will look at that player. + +## How could this be used? +This could be used to make an entity look at the player closest to it. + + +## Fields + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/path_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/path_activity.mdx new file mode 100644 index 0000000000..0dd9dc783a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/path_activity.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Path Activity + +The `Path Activity` is an activity that moves along a predefined path. +The entity will move to each location in the set in order. +Once the entity reaches the last location, it will do the idle activity. + +## How could this be used? +This could be used to have a tour guide that moves along the post-important paths. + + +## Fields + + + + + + + The activity that will be used when the entity is at the final location. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/patrol_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/patrol_activity.mdx new file mode 100644 index 0000000000..611fd5c6e0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/patrol_activity.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Patrol Activity + +The `PatrolActivity` is an activity that makes the entity move around a set of locations. +The entity will move to each location in the set in order. +Once the entity reaches the last location, it will start back at the first location. + +## How could this be used? +This could be used to make guards patrol around a set of locations. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/player_close_by_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/player_close_by_activity.mdx new file mode 100644 index 0000000000..481184dd31 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/player_close_by_activity.mdx @@ -0,0 +1,33 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Close By Activity + +The `PlayerCloseByActivityEntry` is an activity that activates child activities when a viewer is close by. + +The activity will only activate when the viewer is within the defined range. + +When the maximum idle duration is reached, the activity will deactivate. +If the maximum idle duration is set to 0, then it won't use the timer. + +## How could this be used? +When the player has to follow the NPC and walks away, let the NPC wander around (or stand still) around the point the player walked away. When the player returns, resume its path. + +When the npc is walking, and a player comes in range Stand still. + + +## Fields + + + The range in which the player has to be close by to activate the activity. + + + The maximum duration a player can be idle in the same range before the activity deactivates. + + + The activity that will be used when there is a player close by. + + + The activity that will be used when there is no player close by. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/random_look_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/random_look_activity.mdx new file mode 100644 index 0000000000..078ff38c42 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/random_look_activity.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Random Look Activity + +The `Random Look Activity` is used to make the entity look in random directions. + +## How could this be used? +This could be used to make the entity look distracted. + + +## Fields + + + + + + + The duration between each look + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/target_location_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/target_location_activity.mdx new file mode 100644 index 0000000000..1740b7c2c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/target_location_activity.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Target Location Activity + +The `TargetLocationActivityEntry` is an activity that makes the entity navigate to a specific location. + +The activity will only activate when the entity is outside a certain range. + +## How could this be used? +This could be used to make an entity navigate to a specific location. + + +## Fields + + + + + + + The activity that will be used when the entity is at the target location. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/timed_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/timed_activity.mdx new file mode 100644 index 0000000000..985b50944f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/timed_activity.mdx @@ -0,0 +1,29 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Timed Activity + +The `TimedActivityEntry` is an activity that allows child activities for a limited amount of time. + +When the duration is up, the activity will deactivate. +Then the activity will be on cooldown for a set amount of time before it can be activated again. + +## How could this be used? +This could be used to make an entity do something for a limited amount of time. + + +## Fields + + + The duration child activities will be active for. + + + The cooldown time before the activity can be activated again. + + + The activity that will be used when the duration is active. + + + The activity that will be used when it is on cooldown. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/trigger_activity.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/trigger_activity.mdx new file mode 100644 index 0000000000..f8452d357c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/activity/trigger_activity.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Trigger Activity + +The `Trigger Activity` entry is an activity that triggers a sequence when the activity starts or stops. + +## How could this be used? +This could be used to trigger dialogue when the entity arrives at a certain location. +Like a tour guide that triggers dialogue when the entity arrives at a point of interest. + + +## Fields + + + The activity to use when this is active. + + + The sequence to trigger when the activity starts. + + + The sequence to trigger when the activity stops. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/_category_.yml new file mode 100644 index 0000000000..62dd6a6647 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/_category_.yml @@ -0,0 +1 @@ +label: Audiences \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/direct_entity_instance_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/direct_entity_instance_path_stream.mdx new file mode 100644 index 0000000000..31796e583f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/audience/direct_entity_instance_path_stream.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Direct Entity Instance Path Stream + +The `Direct Entity Instance Path Stream` entry is a path stream that shows the path to a specific entity instance. +When the player has this entry, a path stream will be displayed to the specified entity instance. + +## How could this be used? +This could be used to show a path to a specific entity instance in the world. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/entity_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/entity_cinematic.mdx new file mode 100644 index 0000000000..ef79d984c7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/cinematic/entity_cinematic.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Entity Cinematic + +The `Entity Cinematic` entry that plays a recorded animation on an Entity back on the player. + +## How could this be used? + +This could be used to create a cinematic entities that are animated. + + +## Fields + + + + The entity that will be used in the cinematic + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/_category_.yml new file mode 100644 index 0000000000..4c6096db12 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/_category_.yml @@ -0,0 +1 @@ +label: Datas \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/ageable_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/ageable_data.mdx new file mode 100644 index 0000000000..e8bff17220 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/ageable_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Ageable Data + +An ageable data + + +## Fields + + + Whether the entity is a baby. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/arrow_count_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/arrow_count_data.mdx new file mode 100644 index 0000000000..60b89cb0e5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/arrow_count_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Arrow Count Data + +The amount of arrows in a entity + + +## Fields + + + The amount of arrows in a entity. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/cat_variant_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/cat_variant_data.mdx new file mode 100644 index 0000000000..e670118d3f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/cat_variant_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cat Variant Data + +The variant of a cat. + + +## Fields + + + The variant of the cat. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/chested_horse_chest_meta.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/chested_horse_chest_meta.mdx new file mode 100644 index 0000000000..8723e6f828 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/chested_horse_chest_meta.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Chested Horse Chest Data + +If the horse has a chest. + + +## Fields + + + If the horse has a chest. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/collar_color_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/collar_color_data.mdx new file mode 100644 index 0000000000..c53f24ed45 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/collar_color_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Collar Color Data + +The color of the cat's or wolfs collar + + +## Fields + + + The color of the cat's collar. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/custom_name_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/custom_name_data.mdx new file mode 100644 index 0000000000..62ba4f3e55 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/custom_name_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Custom Name Data + +The custom name of the entity + + +## Fields + + + The custom name of the entity. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/dancing_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/dancing_data.mdx new file mode 100644 index 0000000000..74c7617fc9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/dancing_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Dancing Data + +Whether an entity is dancing + + +## Fields + + + Whether the piglin is dancing. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/glowing_effect_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/glowing_effect_data.mdx new file mode 100644 index 0000000000..96ae0e9c94 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/glowing_effect_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Glowing Effect Data + +If the entity is glowing + + +## Fields + + + Whether the entity is glowing. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/horse_variant_dat.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/horse_variant_dat.mdx new file mode 100644 index 0000000000..89607ab009 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/horse_variant_dat.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Horse Variant Data + +The variant of the horse. + + +## Fields + + + The variant of the horse. + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_carpet_color_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_carpet_color_data.mdx new file mode 100644 index 0000000000..b086da4e07 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_carpet_color_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Llama Carpet Color Data + +The color of the llama's carpet. + + +## Fields + + + The color of the llama's carpet. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_variant_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_variant_data.mdx new file mode 100644 index 0000000000..b6dbd8e8bb --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/llama_variant_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Llama Variant Data + +The variant of the Llama. + + +## Fields + + + The variant of the Llama. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/marker_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/marker_data.mdx new file mode 100644 index 0000000000..11c57b8655 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/marker_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Marker Data + +Whether the entity is a marker + + +## Fields + + + Whether the entity is a marker. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/on_fire_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/on_fire_data.mdx new file mode 100644 index 0000000000..3de287aa8a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/on_fire_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# On Fire Data + +If the entity is on fire + + +## Fields + + + Whether the entity is on fire. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/parrot_color_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/parrot_color_data.mdx new file mode 100644 index 0000000000..bb95692875 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/parrot_color_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Parrot Color Data + +The color of the parrot + + +## Fields + + + The color of the parrot. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/pose_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/pose_data.mdx new file mode 100644 index 0000000000..19ca31d000 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/pose_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Pose Data + +The pose of the entity + + +## Fields + + + The pose of the entity. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/potion_effect_color_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/potion_effect_color_data.mdx new file mode 100644 index 0000000000..6d8c66b5d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/potion_effect_color_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Potion Effect Color Data + +The color of the potion effect particles + + +## Fields + + + The color of the potion effect particles. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/puff_state_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/puff_state_data.mdx new file mode 100644 index 0000000000..990c7571e6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/puff_state_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Puff State Data + +State of the Puf entity + + +## Fields + + + The state of the Puf entity. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/rabbit_type_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/rabbit_type_data.mdx new file mode 100644 index 0000000000..d2d4e3f84f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/rabbit_type_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Rabbit Type Data + +The type of the rabbit + + +## Fields + + + The type of the rabbit. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/saddled_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/saddled_data.mdx new file mode 100644 index 0000000000..b24ec3c859 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/saddled_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Saddled Data + +If the entity has a saddle. + + +## Fields + + + If the entity has a saddle. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/size_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/size_data.mdx new file mode 100644 index 0000000000..e1cd9913a1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/size_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Size Data + +Size of the entity + + +## Fields + + + The size of the entity. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/skin_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/skin_data.mdx new file mode 100644 index 0000000000..e876f9dba8 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/skin_data.mdx @@ -0,0 +1,15 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Skin Data + +Skin data for players + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/small_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/small_data.mdx new file mode 100644 index 0000000000..0ce3f10681 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/small_data.mdx @@ -0,0 +1,16 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Small Data + +Whether the entity is small + + +## Fields + + + Whether the entity is small. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/villager_data.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/villager_data.mdx new file mode 100644 index 0000000000..b8aa91adae --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/data/villager_data.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Villager Data + +A villager data + + +## Fields + + + The type of villager + + + Profession of the villager + + + The level of the villager + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/_category_.yml new file mode 100644 index 0000000000..24356b74c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/_category_.yml @@ -0,0 +1 @@ +label: Entitys \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/allay_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/allay_instance.mdx new file mode 100644 index 0000000000..1daafc1db2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/allay_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Allay Instance + +The `Allay Instance` class is an entry that represents an instance of an allay entity. + +## How could this be used? + +This could be used to create an allay entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cat_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cat_instance.mdx new file mode 100644 index 0000000000..23d128eb31 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cat_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cat Instance + +The `Cat Instance` class is an entry that represents an instance of a cat entity. + +## How could this be used? + +This could be used to create a cat entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/chicken_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/chicken_instance.mdx new file mode 100644 index 0000000000..de7979e5af --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/chicken_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Chicken Instance + +The `ChickenInstance` class is an entry that represents an instance of a chicken entity. + +## How could this be used? + +This could be used to create a chicken entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cow_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cow_instance.mdx new file mode 100644 index 0000000000..b276b92c1a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/cow_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Cow Instance + +An instance of a cow entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/enderman_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/enderman_instance.mdx new file mode 100644 index 0000000000..e82d8dc133 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/enderman_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Enderman Instance + +An instance of a enderman entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/frog_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/frog_instance.mdx new file mode 100644 index 0000000000..7d6d05d43d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/frog_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Frog Instance + +The `FrogInstance` class is an entry that represents an instance of a frog entity. + +## How could this be used? + +This could be used to create a frog entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hit_box_definition.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hit_box_definition.mdx new file mode 100644 index 0000000000..f08fed75a1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hit_box_definition.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Hit Box Definition + +The `HitBoxDefinition` class is an entry that represents a hit box for an entity to allow interaction with a different entity. + +## How could this be used? +This could be when using a display entity since they don't have a hit box to allow interaction with. + + +## Fields + + + + + The offset of the hit box relative to the base entity. + + + The width of the hit box. + + + The height of the hit box. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hoglin_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hoglin_instance.mdx new file mode 100644 index 0000000000..410e74fa2d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/hoglin_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Hoglin Instance + +An instance of a hoglin entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/husk_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/husk_instance.mdx new file mode 100644 index 0000000000..6159903397 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/husk_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Husk Instance + +An instance of a husk entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/interaction_indicator_definition.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/interaction_indicator_definition.mdx new file mode 100644 index 0000000000..96b11afd93 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/interaction_indicator_definition.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Interaction Indicator Definition + +The `InteractionIndicator` class is an entry that represents an interaction indicator. +When such an indicator is active, it will show an icon above any NPC. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/iron_golem_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/iron_golem_instance.mdx new file mode 100644 index 0000000000..a17c27c213 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/iron_golem_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Iron Golem Instance + +An instance of an iron golem entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/item_display_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/item_display_instance.mdx new file mode 100644 index 0000000000..e9aa69edf7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/item_display_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Item Display Instance + +An instance of an item display entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/magma_cube_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/magma_cube_instance.mdx new file mode 100644 index 0000000000..c0be4a4745 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/magma_cube_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Magma Cube Instance + +The `MagmaCubeInstance` class is an entry that represents an instance of a magma cube entity. + +## How could this be used? + +This could be used to create a magma cube entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/named_entity_definition.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/named_entity_definition.mdx new file mode 100644 index 0000000000..0954532a40 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/named_entity_definition.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Named Entity Definition + +The `NamedEntityDefinition` is an entity that has the other defined entity as the base, +shows the name and the indicator above its head. + +## How could this be used? +This can be used to allow for all entities to have a name and an indicator. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/npc_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/npc_instance.mdx new file mode 100644 index 0000000000..e46a425a2a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/npc_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Npc Instance + +The `NpcInstance` class is an entry that represents an instance of a simplified premade npc. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_brute_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_brute_instance.mdx new file mode 100644 index 0000000000..80ea95aa5c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_brute_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Piglin Brute Instance + +An instance of a piglin brute entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_instance.mdx new file mode 100644 index 0000000000..f6a3d2aeac --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/piglin_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Piglin Instance + +An instance of a piglin entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/player_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/player_instance.mdx new file mode 100644 index 0000000000..04420ef4c2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/player_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Player Instance + +The `PlayerInstance` class is an entry that represents an instance of a player entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/self_npc_definition.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/self_npc_definition.mdx new file mode 100644 index 0000000000..e1db18ffac --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/self_npc_definition.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Self Npc Definition + +The `Self NPC Definition` entry that defines a player entity with the skin of the viewer. + +## How could this be used? +Showing the player themselves during a cinematic. + + +## Fields + + + Overrides the display name of the speaker + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/skeleton_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/skeleton_instance.mdx new file mode 100644 index 0000000000..4e999ccd09 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/skeleton_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Skeleton Instance + +An instance of a skeleton entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/slime_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/slime_instance.mdx new file mode 100644 index 0000000000..32e6540831 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/slime_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Slime Instance + +The `SlimeInstance` class is an entry that represents an instance of a slime entity. + +## How could this be used? + +This could be used to create a slime entity. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/stacked_entity_definition.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/stacked_entity_definition.mdx new file mode 100644 index 0000000000..fdd1471c4b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/stacked_entity_definition.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Stacked Entity Definition + +The `StackedEntityDefinition` class is an entry that represents a stacking of entities. + +:::caution +All properties will be shared between all entities. +Even if it is defined on only one entity. +::: + +Only the bottom entity will have the location of the `StackedEntity` instance. + +## How could this be used? +This could be used to stack entities on top of each other. +Like having a hologram above a mob. + + +## Fields + + + The entities that will be stacked on top of each other. First entity will be the bottom entity. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/text_display_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/text_display_instance.mdx new file mode 100644 index 0000000000..8a0870d4b3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/text_display_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Text Display Instance + +An instance of a text display entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/villager_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/villager_instance.mdx new file mode 100644 index 0000000000..6934cceb6e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/villager_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Villager Instance + +An instance of a villager entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/warden_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/warden_instance.mdx new file mode 100644 index 0000000000..f251e5a284 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/warden_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Warden Instance + +An instance of a warden entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/witch_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/witch_instance.mdx new file mode 100644 index 0000000000..7540cb37a2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/witch_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Witch Instance + +An instance of a witch entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/zombie_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/zombie_instance.mdx new file mode 100644 index 0000000000..373833700b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/entity/zombie_instance.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Zombie Instance + +An instance of a zombie entity + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/entity_interact_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/entity_interact_event.mdx new file mode 100644 index 0000000000..5430c925ef --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/event/entity_interact_event.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Entity Interact Event + +The `EntityInteractEvent` entry is an event that is triggered when a player interacts with a specific entity. + +## How could this be used? +This could be used to start dialogue when a player interacts with an entity. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/_category_.yml new file mode 100644 index 0000000000..56278cad5c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/_category_.yml @@ -0,0 +1 @@ +label: Instances \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/group_advanced_entity_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/group_advanced_entity_instance.mdx new file mode 100644 index 0000000000..dfc0491745 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/group_advanced_entity_instance.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Group Advanced Entity Instance + +The `Group Advanced Entity Instance` entry is an entity instance +that has the activity shared between a group of players viewing the instance. + +## How could this be used? +For example, having a party sees the npc in the same place. + + +## Fields + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/individual_advanced_entity_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/individual_advanced_entity_instance.mdx new file mode 100644 index 0000000000..70562e78bb --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/individual_advanced_entity_instance.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Individual Advanced Entity Instance + +The `Individual Advanced Entity Instance` entry is an entity instance +that has the activity unique to each player viewing the instance. + +It means that two players can see the same instance in different places. + +## How could this be used? +For escort quests where the player needs to follow the npc such as a guide. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/shared_advanced_entity_instance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/shared_advanced_entity_instance.mdx new file mode 100644 index 0000000000..7a484591f0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/instance/shared_advanced_entity_instance.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Shared Advanced Entity Instance + +The `Shared Advanced Entity Instance` entry is an entity instance +that has the activity shared between all players viewing the instance. + +## How could this be used? +Simple npc's where everyone needs to see the same npc. + + +## Fields + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/_category_.yml new file mode 100644 index 0000000000..e00ec3f085 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/_category_.yml @@ -0,0 +1 @@ +label: Quests \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx new file mode 100644 index 0000000000..4a73ee99e6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Interact Entity Objective + +The `InteractEntityObjective` class is an entry that represents an objective to interact with an entity. +When such an objective is active, it will show an icon above any NPC. + + +## Fields + + + + + + + + The entity that the player needs to interact with. + + + The objective display that will be shown to the player. Use <entity> to replace the entity name. + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objectives_path_stream.mdx b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objectives_path_stream.mdx new file mode 100644 index 0000000000..f40c0d00ba --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/EntityAdapter/entries/quest/interact_entity_objectives_path_stream.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Interact Entity Objectives Path Stream + +The `Interact Entity Objectives Path Stream` entry is a path stream that shows the path to each interact entity objective. +When the player has an interact entity objective, and the quest for the objective is tracked, a path stream will be displayed. + +The `Ignore Instances` field is a list of entity instances that should be ignored when showing the path. + +## How could this be used? +This could be used to show a path to each interacting entity objective in a quest. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/FancyNpcsAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/FancyNpcsAdapter.mdx new file mode 100644 index 0000000000..ad5e4d7597 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/FancyNpcsAdapter.mdx @@ -0,0 +1,33 @@ +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + +# Fancy Npcs Adapter + +The FancyNpcs adapter allows you to create custom interactions with NPCs. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Reference Npc Cinematic](./entries/cinematic/fancy_reference_npc_cinematic.mdx) | A reference to an existing npc specifically for cinematic | +| [Self Npc Cinematic](./entries/cinematic/fancy_self_npc_cinematic.mdx) | The player itself as an cinematic npc | + +### Entitys + +| Name | Description | +| ---- | ----------- | +| [Reference Npc](./entries/entity/fancy_reference_npc.mdx) | When the npc is not managed by TypeWriter | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Npc Interact Event](./entries/event/fancy_on_npc_interact.mdx) | When a player clicks on an NPC | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/_category_.yml new file mode 100644 index 0000000000..7ff0cc28fb --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/_category_.yml @@ -0,0 +1 @@ +label: Fancy Npcs Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_reference_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_reference_npc_cinematic.mdx new file mode 100644 index 0000000000..2987c15841 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_reference_npc_cinematic.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Reference NPC Cinematic` entry that plays a recorded animation back on a reference NPC. +When active, the original NPC will be hidden and a clone will be spawned in its place. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + + + Reference npc to clone + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_self_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_self_npc_cinematic.mdx new file mode 100644 index 0000000000..93c39bf207 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/cinematic/fancy_self_npc_cinematic.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Self Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Self NPC Cinematic` entry that plays a recorded animation back on the player with an NPC with the player's skin. +If the NPC recording does not have any armor, the player's armor when starting the cinematic will be used. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/_category_.yml new file mode 100644 index 0000000000..24356b74c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/_category_.yml @@ -0,0 +1 @@ +label: Entitys \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/fancy_reference_npc.mdx b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/fancy_reference_npc.mdx new file mode 100644 index 0000000000..052ef34374 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/entity/fancy_reference_npc.mdx @@ -0,0 +1,26 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +An identifier that references an NPC in the FancyNpcs plugin. But does not manage the NPC. + +## How could this be used? + +This can be used to reference an NPC which is already in the world. This could be used to create a quest that requires the player to talk to an NPC. + + +## Fields + + + + + + + The id of the NPC in the FancyNpcs plugin. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/fancy_on_npc_interact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/fancy_on_npc_interact.mdx new file mode 100644 index 0000000000..78933f80e2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/FancyNpcsAdapter/entries/event/fancy_on_npc_interact.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Npc Interact Event +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `NPC Interact Event` is fired when a player interacts with an NPC. + +## How could this be used? + +This can be used to create a variety of interactions that can occur between an NPC and a player. For example, you could create an NPC that gives the player an item when they interact with it. + + +## Fields + + + + + The NPC that needs to be interacted with. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/MythicMobsAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/MythicMobsAdapter.mdx new file mode 100644 index 0000000000..4f72c9fe63 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/MythicMobsAdapter.mdx @@ -0,0 +1,38 @@ +# Mythic Mobs Adapter + +The MythicMobs Adapter is an adapter for the MythicMobs plugin. It allows you handle mob-related things in TypeWriter. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Actions + +| Name | Description | +| ---- | ----------- | +| [Despawn Mob Action](./entries/action/despawn_mythicmobs_mob.mdx) | Despawn a mob from MythicMobs | +| [Execute Skill Action](./entries/action/execute_mythicmob_skill.mdx) | Executes a MythicMobs skill | +| [Spawn Mob Action](./entries/action/spawn_mythicmobs_mob.mdx) | Spawn a mob from MythicMobs | + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Mythic Mob Cinematic](./entries/cinematic/mythicmob_cinematic.mdx) | Spawn a MythicMob during a cinematic | +| [Mythic Skill Cinematic](./entries/cinematic/mythicskill_cinematic.mdx) | Trigger a MythicSkill during a cinematic | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Mythic Mob Death Event](./entries/event/on_mythic_mob_die.mdx) | When a player kill a MythicMobs mob. | +| [Mythic Mob Interact Event](./entries/event/mythicmobs_interact_event.mdx) | MythicMob Interact Event | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [Mob Count Fact](./entries/fact/mythic_mob_count_fact.mdx) | Count the number of active Mythic Mobs of the specified type | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/_category_.yml new file mode 100644 index 0000000000..22ebbae798 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/_category_.yml @@ -0,0 +1 @@ +label: Mythic Mobs Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/_category_.yml new file mode 100644 index 0000000000..d69558cd9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/_category_.yml @@ -0,0 +1 @@ +label: Actions \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/despawn_mythicmobs_mob.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/despawn_mythicmobs_mob.mdx new file mode 100644 index 0000000000..cf7f115b6f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/despawn_mythicmobs_mob.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Despawn Mob Action + +The `Despawn Mob Action` action removes MythicMobs mobs from the world. + +## How could this be used? + +This action could be used in stories or quests in various ways. For instance, if a player fails a quest to kill 10 zombies, then the zombies could be despawned to signal that the quest is no longer active. One could even use this action for a quest to kill a certain amount of mobs within a time limit! + + +## Fields + + + + + + + The mob's name + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/execute_mythicmob_skill.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/execute_mythicmob_skill.mdx new file mode 100644 index 0000000000..bd128af4ab --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/execute_mythicmob_skill.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Execute Skill Action + +The `Execute Skill Action` action executes a MythicMobs skill. + +## How could this be used? +Create fancy particle animations. +For example, you can create a little animation when a player opens a door. + + +## Fields + + + + + + + The name of the skill to execute + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/spawn_mythicmobs_mob.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/spawn_mythicmobs_mob.mdx new file mode 100644 index 0000000000..e469590888 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/action/spawn_mythicmobs_mob.mdx @@ -0,0 +1,31 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Spawn Mob Action + +The `Spawn Mob Action` action spawn MythicMobs mobs to the world. + +## How could this be used? + +This action could be used in a plethora of scenarios. From simple quests requiring you to kill some spawned mobs, to complex storylines that simulate entire battles, this action knows no bounds! + + +## Fields + + + + + + + The mob's name + + + The mob's level + + + Whether the mob should be only seen by the player + + + The mob's spawn location + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicmob_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicmob_cinematic.mdx new file mode 100644 index 0000000000..af3a1e7f3d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicmob_cinematic.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mythic Mob Cinematic + +The `Spawn MythicMob Cinematic` cinematic entry spawns a MythicMob during a cinematic. + +## How could this be used? + +This can be used to animate a MythicMob spawning during a cinematic. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicskill_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicskill_cinematic.mdx new file mode 100644 index 0000000000..4c6f766fcd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/cinematic/mythicskill_cinematic.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mythic Skill Cinematic + +The `Mythic Skill Cinematic` cinematic entry triggers a skill during a cinematic. + +:::caution +A skill itself needs to define the group to be self using `group=self` + +### Example: +``` +- effect:particlesphere{particle=flame;amount=200;radius=2;group=self} @self +``` +::: + +## How could this be used? + +This can be used to animate fancy particle effects during a cinematic. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/mythicmobs_interact_event.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/mythicmobs_interact_event.mdx new file mode 100644 index 0000000000..267eee0c7f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/mythicmobs_interact_event.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mythic Mob Interact Event + +The `MythicMob Interact Event` is fired when a player interacts with a MythicMob. + +## How could this be used? + +This can be used to create a variety of interactions that can occur between a MythicMob and a player. For example, you could create a MythicMob that gives the player an item when they interact with it. + + +## Fields + + + + + The specific MythicMob type to listen for + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/on_mythic_mob_die.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/on_mythic_mob_die.mdx new file mode 100644 index 0000000000..586dd180a3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/event/on_mythic_mob_die.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mythic Mob Death Event + +The `Mob Death Event` event is triggered when a player kill a mob. + +## How could this be used? + +After killing a final boss, a dialogue or cinematic section can start. The player could also get a special reward the first time they kill a specific mob. + + +## Fields + + + + + Only trigger when a specific mob dies. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/mythic_mob_count_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/mythic_mob_count_fact.mdx new file mode 100644 index 0000000000..9d6211c550 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/MythicMobsAdapter/entries/fact/mythic_mob_count_fact.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mob Count Fact + +A [fact](/docs/creating-stories/facts) that represents how many specific MythicMobs mob are in the world. + + + +## How could this be used? + +This fact could be used to change dialogue sent by an NPC or mob when a boss exists. It could also be used in conjunction with the Spawn Mob action to spawn specific mobs if one or more mobs exist/doesn't exist. + + +## Fields + + + + + + The id of the mob to count + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/README.mdx b/documentation/versioned_docs/version-0.6.0/adapters/README.mdx new file mode 100644 index 0000000000..c4b7d13e88 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/README.mdx @@ -0,0 +1,10 @@ +--- +sidebar_position: 1 +--- + +# Extensions +Typewriter allows developers to create extensions to use with their own custom entries. This allows Typewriter to be used with different plugins and can be extended to what ever you need. + +:::danger Outdated +These pages are outdated. As Typewriter is moving from `Adapters` to `Extensions`, the documentation generator needs to be updated. +::: diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/RPGRegionsAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/RPGRegionsAdapter.mdx new file mode 100644 index 0000000000..5a7e41bd19 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/RPGRegionsAdapter.mdx @@ -0,0 +1,29 @@ +# Rpg Regions Adapter + +The RPGRegions Adapter is an adapter for the RPGRegions plugin. It allows you to use RPGRegions's discovery system in your dialogue. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Actions + +| Name | Description | +| ---- | ----------- | +| [Discover Region Action](./entries/action/discover_rpg_region.mdx) | Create a discover for an RPGRegions region | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Discover Region Event](./entries/event/on_discover_rpg_region.mdx) | When a player discovers an RPGRegions region | +| [Enter Region Event](./entries/event/on_enter_rpg_region.mdx) | When a player enters a RPGRegions region | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [In Region Fact](./entries/fact/in_rpg_region_fact.mdx) | If the player is in a RPGRegions region | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/_category_.yml new file mode 100644 index 0000000000..b361c90433 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/_category_.yml @@ -0,0 +1 @@ +label: Rpg Regions Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/_category_.yml new file mode 100644 index 0000000000..d69558cd9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/_category_.yml @@ -0,0 +1 @@ +label: Actions \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/discover_rpg_region.mdx b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/discover_rpg_region.mdx new file mode 100644 index 0000000000..bdf5dbc4b7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/action/discover_rpg_region.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Discover Region Action + +The `Discover Region Action` is used to add a discovery into a user's account. + +## How could this be used? + +This action could be used to reward the player for completing a task/quest. For example, there could exist a quest where an NPC asks for help from the player in exchange for their knowledge of the whereabouts of some important location. This action could be used as the reward when the quest is completed. + + +## Fields + + + + + + + The region to discover. Make sure that this is the region ID, not the region's display name. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_discover_rpg_region.mdx b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_discover_rpg_region.mdx new file mode 100644 index 0000000000..3a749fb395 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_discover_rpg_region.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Discover Region Event + +The `Discover Region Event` is triggered when a player discovers a region. + +## How could this be used? + +This event could be used to trigger a message to the player when they discover a region, like a welcome. +Or when they discover a region, it could trigger a quest to start and start a dialogue or cinematic. + + +## Fields + + + + + The region to check for. Make sure that this is the region ID, not the region's display name. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_enter_rpg_region.mdx b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_enter_rpg_region.mdx new file mode 100644 index 0000000000..f1c1a5b6ff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/event/on_enter_rpg_region.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Enter Region Event + +The `Enter Region Event` is triggered when a player enters a region. + +## How could this be used? + +This event could be used to trigger a message to the player when they enter a region, like a welcome. +Or when they enter a region, it could trigger a quest to start and start a dialogue or cinematic. + + +## Fields + + + + + The region to check for. Make sure that this is the region ID, not the region's display name. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/in_rpg_region_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/in_rpg_region_fact.mdx new file mode 100644 index 0000000000..dc9cd85be3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/RPGRegionsAdapter/entries/fact/in_rpg_region_fact.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# In Region Fact + +A [fact](/docs/creating-stories/facts) that checks if the player is in a specific region. The value will be `0` if the player is not in the region, and `1` if the player is in the region. + + + +## How could this be used? + +This fact could be used to make a quest only available in a specific region, or could even be used as a condition for player abilities that only work in specific areas! + + +## Fields + + + + + + The name of the region which the player must be in. Make sure that this is the region ID, not the region's display name. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/SuperiorSkyblockAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/SuperiorSkyblockAdapter.mdx new file mode 100644 index 0000000000..7480c25c9d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/SuperiorSkyblockAdapter.mdx @@ -0,0 +1,45 @@ +# Superior Skyblock Adapter + +The Superior Skyblock Adapter allows you to use the Superior Skyblock plugin with TypeWriter. +It includes many events for you to use in your dialogue, as well as a few actions and conditions. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Actions + +| Name | Description | +| ---- | ----------- | +| [Island Bank Deposit Action](./entries/action/island_bank_deposit.mdx) | Deposit into a player's Island bank | +| [Island Bank Withdraw Action](./entries/action/island_bank_withdraw.mdx) | Withdraw into a player's Island bank | +| [Island Disband Action](./entries/action/island_disband.mdx) | Disbands player's island | +| [Island Set Biome Action](./entries/action/island_set_biome.mdx) | Set a player's island's biome | +| [Island Set Border Size Action](./entries/action/island_set_border_size.mdx) | Set a player's island's border size | +| [Island Set Member Limit Action](./entries/action/island_set_member_limit.mdx) | Set a player's island's member limit | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Island Create Event](./entries/event/on_island_create.mdx) | When a player creates an Island | +| [Island Disband Event](./entries/event/on_island_disband.mdx) | When a player disbands an Island | +| [Island Invite Event](./entries/event/on_island_invite.mdx) | When a player is invited to a Skyblock island | +| [Island Join Event](./entries/event/on_island_join.mdx) | When a player joins a Skyblock island | +| [Island Upgrade Event](./entries/event/on_island_upgrade.mdx) | When a player upgrades their Skyblock island | +| [Mission Complete Event](./entries/event/on_mission_complete.mdx) | When a player completes a mission | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [Island Fact](./entries/fact/island_fact.mdx) | Various facts about a player's island | + +### Groups + +| Name | Description | +| ---- | ----------- | +| [Island Group](./entries/group/island_group.mdx) | Group for the whole island | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/_category_.yml new file mode 100644 index 0000000000..f7dac38d62 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/_category_.yml @@ -0,0 +1 @@ +label: Superior Skyblock Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/_category_.yml new file mode 100644 index 0000000000..d69558cd9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/_category_.yml @@ -0,0 +1 @@ +label: Actions \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_deposit.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_deposit.mdx new file mode 100644 index 0000000000..3624cd5f47 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_deposit.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Bank Deposit Action + +The `Island Bank Deposit Action` is used to deposit money into the player's Island bank. + +## How could this be used? + +This could be used to reward players for completing a challenge or quest. + + +## Fields + + + + + + + The amount to deposit into the player's Island bank + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_withdraw.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_withdraw.mdx new file mode 100644 index 0000000000..924df9b1e1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_bank_withdraw.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Bank Withdraw Action + +The `Island Bank Withdraw` action allows you to withdraw money from the player's Island bank. + +## How could this be used? + +This could be used to allow players to buy items from a shop. + + +## Fields + + + + + + + The amount to withdraw from the player's Island bank + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_disband.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_disband.mdx new file mode 100644 index 0000000000..a996800c0d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_disband.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Disband Action + +The `Island Disband Action` disbands a player's island. + +## How could this be used? + +This could be used to make a system of "re-birthing," +where a player can disband their island and start over with benefits. + + +## Fields + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_biome.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_biome.mdx new file mode 100644 index 0000000000..9f702d9f1b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_biome.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Set Biome Action + +The `Island Set Biome` action is used to set a player's island's biome. + +## How could this be used? + +This could be used to simulate the seasons of the year, or to change the biome of the island to match the theme of the island. + + +## Fields + + + + + + + The biome to set the island to + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_border_size.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_border_size.mdx new file mode 100644 index 0000000000..a3f92926b2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_border_size.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Set Border Size Action + +The `Island Set Border Size` action is used to set a player's island's border size. + +## How could this be used? + +It could be used to reward the player for completing a quest, or upon reaching a certain level. + + +## Fields + + + + + + + The size to set the island's border to + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_member_limit.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_member_limit.mdx new file mode 100644 index 0000000000..7f4b2e4cfd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/action/island_set_member_limit.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Set Member Limit Action + +The `Island Set Member Limit Action` is an action that sets the member limit of an island. + +## How could this be used? + +This could be used as a reward for a quest or as if they reach a certain level. + + +## Fields + + + + + + + The new limit to set the island's member limit to + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_create.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_create.mdx new file mode 100644 index 0000000000..1dc7f8e55b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_create.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Create Event + +The `Island Create Event` is triggered when an island is created. + +## How could this be used? + +This event could be used to give the player starting items when they create an island. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_disband.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_disband.mdx new file mode 100644 index 0000000000..37bcf21f07 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_disband.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Disband Event + +The `Island Disband Event` is triggered when an island is disbanded. + +## How could this be used? + +This could be used to allow for some "re-birthing". So that the next time the players have bonuses or something. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_invite.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_invite.mdx new file mode 100644 index 0000000000..f8d9420518 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_invite.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Invite Event + +The `Island Invite Event` is an event that is triggered when a player is invited to an island. + +## How could this be used? + +This event could be used to give the player who got invited a reward. + + +## Fields + + + + + The triggers for the player who got invited + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_join.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_join.mdx new file mode 100644 index 0000000000..85c0bf5bfe --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_join.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Join Event + +The `Island Join Event` is fired when a player joins an island. + +## How could this be used? + +This event could be used for a "better together" system, where players can join islands and get rewards for doing so. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_upgrade.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_upgrade.mdx new file mode 100644 index 0000000000..c16366a0b7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_island_upgrade.mdx @@ -0,0 +1,17 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Upgrade Event + +The `Island Upgrade Event` is fired when a player upgrades their island. + +## How could this be used? + +This event could be used to give players a reward when they upgrade their island. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_mission_complete.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_mission_complete.mdx new file mode 100644 index 0000000000..205b1fae4c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/event/on_mission_complete.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Mission Complete Event + +The `Mission Complete` event is triggered when a player completes a mission. + +## How could this be used? + +This event could be used to reward players for completing missions. + + +## Fields + + + + + The name of the mission that needs to be completed + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/island_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/island_fact.mdx new file mode 100644 index 0000000000..ad0f0ffda0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/fact/island_fact.mdx @@ -0,0 +1,25 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Fact + +A [fact](/docs/creating-stories/facts) that can retrieve various information about an island. + + + +Be aware that this fact will return -1 if the player is not in an island. + +## How could this be used? + +This fact could be used to get the island's level and only allow some actions if the island is a certain level. + + +## Fields + + + + + + The specific piece of information to retrieve about the island. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/_category_.yml new file mode 100644 index 0000000000..460a5324be --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/_category_.yml @@ -0,0 +1 @@ +label: Groups \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/island_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/island_group.mdx new file mode 100644 index 0000000000..2219a3cd6a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/SuperiorSkyblockAdapter/entries/group/island_group.mdx @@ -0,0 +1,14 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Island Group + +The `Island Group` is a group that includes all the players on an island. + +## How could this be used? +This could be used to have facts that are specific to an island, like challenges for an island. + + +## Fields + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/VaultAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/VaultAdapter.mdx new file mode 100644 index 0000000000..8d5f98c72c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/VaultAdapter.mdx @@ -0,0 +1,28 @@ +# Vault Adapter + +The Vault Adapter is an adapter for the Vault plugin. It allows you to use Vault's economy system in your dialogue. + +## Entries + +### Actions + +| Name | Description | +| ---- | ----------- | +| [Deposit Balance Action](./entries/action/deposit_balance.mdx) | Deposit Balance | +| [Set Prefix Action](./entries/action/set_prefix.mdx) | Set Prefix | +| [Withdraw Balance Action](./entries/action/withdraw_balance.mdx) | Withdraw Balance | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [Balance Fact](./entries/fact/balance_fact.mdx) | The balance of a player's account | +| [Permission Fact](./entries/fact/permission_fact.mdx) | If the player has a permission | + +### Groups + +| Name | Description | +| ---- | ----------- | +| [Balance Group](./entries/group/balance_audience.mdx) | Audiences grouped by balance | +| [Permission Group](./entries/group/permission_group.mdx) | Groups grouped by permission | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/_category_.yml new file mode 100644 index 0000000000..c6edbb9387 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/_category_.yml @@ -0,0 +1 @@ +label: Vault Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/_category_.yml new file mode 100644 index 0000000000..d69558cd9e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/_category_.yml @@ -0,0 +1 @@ +label: Actions \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/deposit_balance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/deposit_balance.mdx new file mode 100644 index 0000000000..07de5bb350 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/deposit_balance.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Deposit Balance Action + +The `Deposit Balance Action` is used to deposit money into a user's balance. + +## How could this be used? + +This action could be used to reward the player for completing a task/quest. + + +## Fields + + + + + + + The amount of money to deposit. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/set_prefix.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/set_prefix.mdx new file mode 100644 index 0000000000..73fac8b83b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/set_prefix.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Set Prefix Action + +The `Set Prefix Action` action sets the prefix of a player's message + +## How could this be used? + +This could be used for a badge system. +When a player completes a certain task, like killing a boss, +they could be given a prefix that shows up in chat, like `[Deamon Slayer]` + + +## Fields + + + + + + + The prefix to set. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/withdraw_balance.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/withdraw_balance.mdx new file mode 100644 index 0000000000..f4565bc417 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/action/withdraw_balance.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Withdraw Balance Action + +The `Withdraw Balance Action` is used to withdraw money from a user's balance. + +## How could this be used? + +This action could be used to withdraw money from a user's balance if they lose a bet, or get killed. + + +## Fields + + + + + + + The amount of money to withdraw. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/balance_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/balance_fact.mdx new file mode 100644 index 0000000000..88417e0ad0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/balance_fact.mdx @@ -0,0 +1,20 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Balance Fact + +A [fact](/docs/creating-stories/facts) that represents a player's balance. + + + +## How could this be used? + +This fact could be used to track a player's balance in a game. For example, if the player is rich, allow them to access to a VIP area. If the player is poor, they can't afford to enter. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/permission_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/permission_fact.mdx new file mode 100644 index 0000000000..c94bbc1036 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/fact/permission_fact.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Permission Fact + +A [fact](/docs/creating-stories/facts) that checks if the player has a certain permission. + +## How could this be used? + +This fact could be used to check if the player has a certain permission, for example to check if the player is an admin. + + +## Fields + + + + + + The permission to check for + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/_category_.yml new file mode 100644 index 0000000000..460a5324be --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/_category_.yml @@ -0,0 +1 @@ +label: Groups \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/balance_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/balance_audience.mdx new file mode 100644 index 0000000000..2d3793e793 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/balance_audience.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Balance Group + +The `Balance Audience` is an group for which a player's balance meets a certain condition. +To determine if a player is part of this group, the balance of the player is checked for each condition. +The first condition that is met determines the group the player is part of. + +## How could this be used? +This could be used to have facts that are specific to a player's balance, like a VIPs where all share some balance threshold. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/permission_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/permission_group.mdx new file mode 100644 index 0000000000..133f4bcab8 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/VaultAdapter/entries/group/permission_group.mdx @@ -0,0 +1,18 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Permission Group + +The `Permission Group` is a group for which a player has a certain permission. +To determine if a player is part of this group, the permissions of the player are checked. +If the player has all the permissions, they are part of the group. + +## How could this be used? +To send a message to all the donators. + + +## Fields + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/WorldGuardAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/WorldGuardAdapter.mdx new file mode 100644 index 0000000000..07a1df2883 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/WorldGuardAdapter.mdx @@ -0,0 +1,31 @@ +# World Guard Adapter + +The WorldGuard Adapter allows you to create dialogue that is triggered by WorldGuard regions. + +## Entries + +### Audiences + +| Name | Description | +| ---- | ----------- | +| [Region Audience](./entries/audience/region_audience.mdx) | Filter players based on if they are in a region | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Enter Region Event](./entries/event/on_enter_region.mdx) | When a player enters a WorldGuard region | +| [Exit Region Event](./entries/event/on_exit_region.mdx) | When a player exits a WorldGuard region | + +### Facts + +| Name | Description | +| ---- | ----------- | +| [In Region Fact](./entries/fact/in_region_fact.mdx) | If the player is in a WorldGuard region | + +### Groups + +| Name | Description | +| ---- | ----------- | +| [Region Group](./entries/group/region_group.mdx) | All players grouped by WorldGuard regions | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/_category_.yml new file mode 100644 index 0000000000..109a30486c --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/_category_.yml @@ -0,0 +1 @@ +label: World Guard Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/_category_.yml new file mode 100644 index 0000000000..62dd6a6647 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/_category_.yml @@ -0,0 +1 @@ +label: Audiences \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/region_audience.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/region_audience.mdx new file mode 100644 index 0000000000..5bd849d103 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/audience/region_audience.mdx @@ -0,0 +1,22 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Region Audience + +The `Region Audience` is used to filter players based on if they are in a specific WorldGuard region. + +## How could this be used? +To show players information when they enter a specific region. +For example, when a player enters a town, you could show them information about the town. + + +## Fields + + + + + The region to filter players based on + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_enter_region.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_enter_region.mdx new file mode 100644 index 0000000000..5fd57b8a07 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_enter_region.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Enter Region Event + +The `Enter Region Event` is triggered when a player enters a region. + +## How could this be used? + +This event could be used to trigger a message to the player when they enter a region, like a welcome. +Or when they enter a region, it could trigger a quest to start and start a dialogue or cinematic. + + +## Fields + + + + + The region that the player must enter to trigger the event. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_exit_region.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_exit_region.mdx new file mode 100644 index 0000000000..a131e9e784 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/event/on_exit_region.mdx @@ -0,0 +1,21 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Exit Region Event + +The `Exit Region Event` is triggered when a player leaves a region. + +## How could this be used? + +This event could be used to trigger a message when a player leaves a region, and give them a farewell message. +Or if you wanted to make a region that is a "safe zone" where players can't be attacked, you could use this event to trigger a message when a player leaves the region. + + +## Fields + + + + + The region the player must leave to trigger the event. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/_category_.yml new file mode 100644 index 0000000000..b404c13bd6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/_category_.yml @@ -0,0 +1 @@ +label: Facts \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/in_region_fact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/in_region_fact.mdx new file mode 100644 index 0000000000..f6b5cc11a9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/fact/in_region_fact.mdx @@ -0,0 +1,23 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# In Region Fact + +A [fact](/docs/creating-stories/facts) that checks if the player is in a specific region. The value will be `0` if the player is not in the region, and `1` if the player is in the region. + + + +## How could this be used? + +This fact could be used to make a quest only available in a specific region. + + +## Fields + + + + + + The name of the region which the player must be in. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/_category_.yml new file mode 100644 index 0000000000..460a5324be --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/_category_.yml @@ -0,0 +1 @@ +label: Groups \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/region_group.mdx b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/region_group.mdx new file mode 100644 index 0000000000..7570d00ab5 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/WorldGuardAdapter/entries/group/region_group.mdx @@ -0,0 +1,19 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Region Group + +The `WorldGuardRegionGroup` is a group that includes all the players in a specific WorldGuard region. +Only the given region will be considered for the group. + +## How could this be used? +This could be used to have facts that are specific to a region, like the state of a boss fight. +It could also be used to send a title to all the players in the region. + + +## Fields + + + The names of regions to consider for the group + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/ZNPCsPlusAdapter.mdx b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/ZNPCsPlusAdapter.mdx new file mode 100644 index 0000000000..60845ae4b8 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/ZNPCsPlusAdapter.mdx @@ -0,0 +1,33 @@ +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + +# Znp Cs Plus Adapter + +The ZNPCsPlus adapter allows you to create custom interactions with NPCs. + +:::caution Untested +This adapter is untested. It may not work as expected. Please report any issues you find. +::: + +## Entries + +### Cinematics + +| Name | Description | +| ---- | ----------- | +| [Reference Npc Cinematic](./entries/cinematic/znpc_reference_npc_cinematic.mdx) | A reference to an existing npc specifically for cinematic | +| [Self Npc Cinematic](./entries/cinematic/znpc_self_npc_cinematic.mdx) | The player itself as an cinematic npc | + +### Entitys + +| Name | Description | +| ---- | ----------- | +| [Reference Npc](./entries/entity/znpc_reference_npc.mdx) | When the npc is not managed by TypeWriter | + +### Events + +| Name | Description | +| ---- | ----------- | +| [Npc Interact Event](./entries/event/znpc_on_npc_interact.mdx) | When a player clicks on an NPC | + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/_category_.yml new file mode 100644 index 0000000000..c1ca3f9f48 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/_category_.yml @@ -0,0 +1 @@ +label: Znp Cs Plus Adapter \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/_category_.yml new file mode 100644 index 0000000000..2cdb7c56b6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/_category_.yml @@ -0,0 +1 @@ +label: Entries \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/_category_.yml new file mode 100644 index 0000000000..fd78b117d4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/_category_.yml @@ -0,0 +1 @@ +label: Cinematics \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_reference_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_reference_npc_cinematic.mdx new file mode 100644 index 0000000000..2987c15841 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_reference_npc_cinematic.mdx @@ -0,0 +1,27 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Reference NPC Cinematic` entry that plays a recorded animation back on a reference NPC. +When active, the original NPC will be hidden and a clone will be spawned in its place. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + + + Reference npc to clone + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_self_npc_cinematic.mdx b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_self_npc_cinematic.mdx new file mode 100644 index 0000000000..93c39bf207 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/cinematic/znpc_self_npc_cinematic.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Self Npc Cinematic +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `Self NPC Cinematic` entry that plays a recorded animation back on the player with an NPC with the player's skin. +If the NPC recording does not have any armor, the player's armor when starting the cinematic will be used. + +## How could this be used? + +This could be used to create a cinematic where the player is talking to an NPC. +Like going in to a store and talking to the shopkeeper. + + +## Fields + + + + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/_category_.yml new file mode 100644 index 0000000000..24356b74c4 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/_category_.yml @@ -0,0 +1 @@ +label: Entitys \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/znpc_reference_npc.mdx b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/znpc_reference_npc.mdx new file mode 100644 index 0000000000..521bd233a2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/entity/znpc_reference_npc.mdx @@ -0,0 +1,26 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Reference Npc +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +An identifier that references an NPC in the ZNPCsPlus plugin. But does not manage the NPC. + +## How could this be used? + +This can be used to reference an NPC which is already in the world. This could be used to create a quest that requires the player to talk to an NPC. + + +## Fields + + + + + + + The id of the NPC in the ZNPCsPlus plugin. + diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/_category_.yml b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/_category_.yml new file mode 100644 index 0000000000..524a9d174f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/_category_.yml @@ -0,0 +1 @@ +label: Events \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/znpc_on_npc_interact.mdx b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/znpc_on_npc_interact.mdx new file mode 100644 index 0000000000..78933f80e2 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/adapters/ZNPCsPlusAdapter/entries/event/znpc_on_npc_interact.mdx @@ -0,0 +1,24 @@ +import * as fields from '@site/src/components/EntryField'; +import Admonition from '@theme/Admonition'; +import Link from '@docusaurus/Link'; + +# Npc Interact Event +import DeprecationWarning from '@site/src/components/DeprecationWarning'; + + + + +The `NPC Interact Event` is fired when a player interacts with an NPC. + +## How could this be used? + +This can be used to create a variety of interactions that can occur between an NPC and a player. For example, you could create an NPC that gives the player an item when they interact with it. + + +## Fields + + + + + The NPC that needs to be interacted with. + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/02-getting_started.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/02-getting_started.mdx new file mode 100644 index 0000000000..7d7bebf888 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/02-getting_started.mdx @@ -0,0 +1,142 @@ +--- +title: Getting Started +--- + +import CodeSnippet from "@site/src/components/CodeSnippet"; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +# Creating an Extension +## Introduction +Typewriter is a dynamic platform that supports the development of extensions, which are modular components enhancing the overall functionality. +Extensions are self-contained, easily shareable, and integrate smoothly into the TypeWriter system. +They allow you to create custom entries and have them show up in the web panel. +This guide is tailored to guide you through the process of creating an extension. + +## Prerequisites + - Java Development Kit (JDK) 21 or higher. + - An Integrated Development Environment (IDE) such as IntelliJ IDEA or Eclipse. + - A basic understanding of Gradle and the Spigot API. + +## Setting Up a Gradle Project +Begin by establishing a Gradle project for your Typewriter extension. Below is a comprehensive setup for your Gradle project: + + + + Add the following to your `settings.gradle.kts` file: + ```kotlin title="settings.gradle.kts" + pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven("https://maven.typewritermc.com/releases") + } + } + ``` + + Add the following to your `build.gradle.kts` file: + ```kotlin title="build.gradle.kts" + import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + + plugins { + kotlin("jvm") version "2.0.20" + id("com.typewritermc.module-plugin") version "" + } + + // Replace with your own information + group = "me.yourusername" + version = "0.0.1" + + typewriter { + engine { + version = "" + } + namespace = "" + + extension { + name = "" + shortDescription = "" + description = "" + + paper { + // Optional - If you want to make sure a plugin is required to be installed to use this extension + dependency("") + } + } + } + + kotlin { + jvmToolchain(21) + } + ``` + + + Add the following to your `settings.gradle.kts` file: + ```kotlin title="settings.gradle.kts" + pluginManagement { + repositories { + mavenCentral() + gradlePluginPortal() + maven("https://maven.typewritermc.com/beta") + } + } + ``` + + Add the following to your `build.gradle.kts` file: + ```kotlin title="build.gradle.kts" + import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar + + plugins { + kotlin("jvm") version "2.0.20" + id("com.typewritermc.module-plugin") version "" + } + + typewriter { + engine { + version = "" + channel = com.typewritermc.moduleplugin.ReleaseChannel.BETA + } + namespace = "" + + extension { + name = "" + shortDescription = "" + description = "" + + paper { + // Optional - If you want to make sure a plugin is required to be installed to use this extension + dependency("") + } + } + } + + kotlin { + jvmToolchain(21) + } + ``` + + + +:::info Replace your information +Ensure to replace placeholders like `me.yourusername` with your project details. +::: + +## Building the Extension +After creating the extension class, build the extension. This can be done by running the `build` Gradle task. +This will generate a JAR file in the `build/libs` directory. +This JAR file can be used as an extension in TypeWriter. +Place the JAR file in the `plugins/TypeWriter/extensions` directory. +Typewriter will automatically load the extension and run it. + +:::tip Reloading Extensions +You can either restart the Minecraft server or reload Typewriter with `/typewriter reload` to reload the extensions. +::: + + +If any problems occur, check the console for errors and ensure that the extension is properly configured. +If you need help, join the [Discord server](https://discord.gg/HtbKyuDDBw) and ask for help. + +## What's Next? +After creating an extension, you can start adding features to it. +Check out the [Creating Entries](entries) guide to learn how to add entries to your extension. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/03-initializers.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/03-initializers.mdx new file mode 100644 index 0000000000..9da369be5b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/03-initializers.mdx @@ -0,0 +1,19 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# Initializers + +Sometimes your extension needs to do some initialization before it can be used. +For example, you might need to add a hook to a plugin to make it work with your extension. + +## Declaring an Initializer +To declare an initializer, you need to create a **object** that implements the `Initializable` interface. +And add the `@Initializer` annotation to the class. + + + +:::danger Ensure Cleanup +The `shutdown` method is called when the extension is unloaded. +You should make sure that no resources are leaked when the extension is unloaded. +::: + +Typewriter will automatically register and call the control flow methods when the extension is loaded and unloaded. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/cinematic/index.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/cinematic/index.mdx new file mode 100644 index 0000000000..7295911c41 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/cinematic/index.mdx @@ -0,0 +1,72 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# CinematicEntry + +The `CinematicEntry` does not have any decentends, but is very customizable. When a entry is needed in a cinematic page, it needs to inherit this. + +`CinematicEntry` works by having at least 1 list of `Segment`'s. Segments are the parts of the cinematic and may have sub-properties defined. A segment needs to have at least a `startFrame` and `endFrame` which are the integers of the frames. + +Frames are the ticks in a second. So there are 20 frames in a second. A cinematic takes as long as the latest `endFrame` of a segment from all it's entries. + +Segments are defined in the entry using the `@Segments` annotation. And it needs to be a list of `Segment`'s. + + +:::info +A `CinematicEntry` can have multiple different segment tracks. +For example, a cinematic entry may have a `TextSegment` and a `SoundSegment`. + +Though this is supported in the plugin, it is not yet implemented in the cinematic editor. +If you need this, reach out to me on [Discord](https://discord.gg/HtbKyuDDBw). +::: + +As entries are not allowed to have any state, we create a `CinematicAction` everytime a entry is used in a cinematic for a player. + +## Usage + + +Segments sometimes need a minimum or maximum duration. This can be done using the `@InnerMin` and `@InnerMax` annotations. + + + +This will make sure that the segment will be at least 10 frames long and at most 20 frames long. + +### ExampleSegment + + +### ExampleCinematicAction + +The `CinematicAction` is the action that is created when a cinematic is started. It is used to keep track of the current frame and to execute the segments. +There are a few different lifecycle methods that can be used. + +- `setup()` is called when the cinematic is created. This is the place to initialize any variables, spawn entities, etc. +- `tick(frame: Int)` is called every frame. This is the place to execute the segments. It is even executed when no segments are active. +- `teardown()` is called when the cinematic is finished. This is the place to remove any entities, etc. +- `canFinish(frame: Int)` the only method that needs to be implemented. It is used by the `CinematicSequence` to determine if the cinematic is finished. + +If you need all the customization, you can can implement the `CinematicAction` directly: + + + +### SimpleCinematicAction +Sometimes you don't need all the customization and flexiblity. If you only care about 1 segment track, and only need to do something when a segment starts or ends, you can use the `SimpleCinematicAction`. + + + +## Ticking + +One important detail is that the `tick` methods are not necessarily called in order. +It is important that the tick method should show the state of the action at the given frame. + +One place where this is definitely the case is when the player is viewing the cinematic in content mode. +As the player is able to scroll through the cinematic, it might be the case that multiple frames are skipped, or rewinded. + +## Simulation & Recording + +Sometimes the cinematic should be different when it is being recorded or simulated. +Like the blinding cinematic, where you don't want to be blinded during simulation/recording. +Or you want to show a different thing during simulation/recording. +Like the camera which displays the camera in the world, instead of setting the player's camera. + +To do this, there are 2 additional methods that can be implemented on the `CinematicEntry` that can return a different `CinematicAction` for recording and simulation. + + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/index.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/index.mdx new file mode 100644 index 0000000000..d24882924a --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/index.mdx @@ -0,0 +1,87 @@ +# Create Entries +Creating extensions for the TypeWriter plugin involves working with various entry types, each serving a specific purpose in crafting immersive player experiences. +This documentation explains the roles and functionalities of these entry types, providing clear guidance for developers on how to effectively use them. + +## Base Entry Interfaces +There are four base interfaces that all entries extend one of. These are: +1. **StaticEntry**: Represents static pages. These are used for content that does not change dynamically or trigger any actions. Examples include static text or images. +2. **TriggerEntry**: Designed for entries that initiate other actions or events. These entries can trigger one or more additional entries, making them crucial for interactive sequences. +3. **CinematicEntry**: Used for cinematic experiences. These entries are ideal for creating immersive story-driven sequences that engage players in a more visually dynamic way. +4. **ManifestEntry**: Used for creating manifest pages, which are used to display statful content to the player. + + +### 1. StaticEntry + - **AssetEntry**: Handles external assets, like images or files. + - **ArtifactEntry**: Manages plugin-generated assets, such as JSON files. + - **EntityEntry**: Serves as a base for static entities in the game. + - **SpeakerEntry**: Extends EntityEntry for entities capable of speaking, with defined display names and sounds. + - **FactEntry**: Represents static facts or data points. + - **SoundIdEntry**: Holds identifiers for specific sounds. + - **SoundSourceEntry**: Deals with the sources of sound emissions. + +### 2. TriggerEntry + - **EventEntry**: A base for entries that are event-driven. + - **CustomCommandEntry**: Extends EventEntry to allow for the creation of custom in-game commands. + +#### 2a. TriggerableEntry (an extension of TriggerEntry) +These are entries that can be triggered by other entries. They are the most common type of entry, and are used for creating interactive sequences. + - **DialogueEntry**: Specialized for dialogues with specific speakers, enhancing NPC interactions. + - **ActionEntry**: Executes actions based on player interactions, capable of modifying facts or triggering events. + - **CustomTriggeringActionEntry**: A variant of ActionEntry, allowing for custom trigger mechanisms and manual triggering of actions. + +### 3. CinematicEntry + - Primarily used for crafting cinematic experiences in-game, this base interface doesn't have listed specialized interfaces, but it's pivotal for creating story-driven, visually dynamic sequences. + +### 4. ManifestEntry +The biggest `ManifestEntry` is the `AudienceEntry`. +It is used to define audiences that can be used to show stateful content to players. +Almost all other `ManifestEntry` are sub-types of `AudienceEntry`. +Though this is not required. +An example of an entry that is not a sub-type of `AudienceEntry` is the `EntityDefinitionEntry`. + +The following are the sub-types of `AudienceEntry`: + - **AudienceFilterEntry**: A variant of AudienceEntry that filters the audience passed to the children of the entry. + - **QuestEntry**: Specifies quest types. + - **ObjectiveEntry**: Base for objectives in quests. + - **LinesEntry**: Displays lines of text in things like sidebars or tablist. + +A whole nother category of `ManifestEntry` is meant for **Entities**. +This has it's seperate page in the documentation. + + +## Implementation and Usage +Each interface is designed with specific tags and methods to facilitate unique interactions within the TypeWriter plugin. +Implementing these interfaces allows developers to craft a wide range of player experiences, from simple static displays to complex, multi-step interactive quests and dialogues. + +For instance, a TriggerableEntry can be used to set up a quest that only activates under certain conditions, while a DialogueEntry can bring an NPC to life with personalized dialogues. +Similarly, an ActionEntry can be used to create dynamic effects that change based on player actions, and a CinematicEntry can be used to create a visually dynamic story sequence. + + +### Defining a Entry +Typewriter takes care of the heavy lifting when it comes to creating and using entries. +Developers only need to define the entry's class and its fields (and sometimes additional methods). +The rest is handled by Typewriter. +From scanning the extensions jar file for all the different entry classes to triggering them. + +To define an entry, it needs to meet the following requirements: +1. It must be a class that implements one of the base entry interfaces. +2. It must have a no-args constructor. +3. It must have a `@Entry` annotation with all the required fields. + +The `@Entry` annotation is used to define the entry's type, name, and other properties. It has the following fields: +- **name**: The name of the entry. This is used to identify the entry. +- **description**: A short description of the entry. +- **color**: The color of the entry in the editor. It can be one from the `Colors` class or a hex color code string. +- **icon**: The icon of the entry in the editor. All available icons can be found on [Iconify](https://icones.js.org/). It needs to be the name of the icon. + +To find out specific requirements for each entry type, check the documentation for the entry's interface. + +:::caution +Enties are not allowed to have any state. This means that there can't be any fields that are not final. +If you need to have state, use a `AudienceEntry`. +::: + +--- + +In summary, these entry interfaces form the backbone of the TypeWriter plugin's functionality, offering a robust framework for creating immersive and interactive content within Minecraft. +By understanding and utilizing these interfaces, developers can greatly enhance the player experience, making it more engaging and dynamic. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/_category_.yml b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/_category_.yml new file mode 100644 index 0000000000..9e66dcf9ef --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/_category_.yml @@ -0,0 +1 @@ +label: Manifest Entries diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/audience.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/audience.mdx new file mode 100644 index 0000000000..5e75fef618 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/manifest/audience.mdx @@ -0,0 +1,76 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# AudienceEntry + +`AudienceEntry` is a crucial component in Typewriter that allows extension developers to display content to a group of players. +Typewriter manages the players in the audience, providing hooks that developers can use to show information or interact with the players in the audience. + +The `AudienceEntry` is the most used `ManifestEntry` in Typewriter. + + +## Key Concepts + +1. **Stateful Displays**: In Typewriter, entries are not allowed to have any state. `AudienceEntry` bridges this gap by providing a way to have stateful displays. + +2. **Audience Management**: Typewriter takes care of managing the players in the audience. Developers can focus on defining how to display content and interact with the audience. + +3. **Display Lifecycle**: The `AudienceDisplay` class manages the lifecycle of the audience, including initialization, player addition/removal, and disposal. + +## Implementation + +### Basic AudienceEntry + +Here's an example of a basic `AudienceEntry` implementation: + + + +In this example, we define an `ExampleAudienceEntry` class that implements the `AudienceEntry` interface. +The `display()` function returns an `AudienceDisplay` object, which defines how the content is presented to the audience. + +### AudienceDisplay + +The `AudienceDisplay` class is responsible for displaying content to the audience. +It has lifecycle hooks to accomplish this. +Here's an example implementation: + + + +Key methods in `AudienceDisplay`: + +1. `initialize()`: Called when the first player is added to the audience. Use this method for any setup tasks. +2. `onPlayerAdd(player: Player)`: Invoked when a player joins the audience. Use this to set up player-specific content or effects. +3. `onPlayerRemove(player: Player)`: Called when a player leaves the audience. Use this for cleanup of player-specific resources. +4. `dispose()`: Invoked when the audience is being disposed of. Use this for general cleanup tasks. Note that `onPlayerRemove` will be called for all players, so player-specific cleanup is not needed here. + +### Tickable Audience Display + +For audiences that need to update regularly, you can implement the `TickableDisplay` interface: + + + +The `tick()` method will be called every Minecraft tick (20 times per second, or every 50ms) on an asynchronous thread. +This allows you to update the display or perform regular actions for all players in the audience. + +### Event Handling + +Every `AudienceDisplay` is also a Bukkit listener. +Event listeners will only be active when at least one player is in the audience. +Here's an example of how to handle events: + + + +:::caution Events for All Players +Events will trigger for _**all**_ players, not just those in the audience. + +**Always check if the player is in the audience before performing audience-specific actions.** +::: + +## Best Practices + +1. **State Management**: While state is allowed within the `AudienceDisplay`, ensure that all used state is contained within the display and does not leak outside. + +2. **Resource Management**: Ensure proper resource management to avoid memory leaks, especially when players leave the audience. + +3. **Event Handling**: When handling Bukkit events, always check if the player is in the audience before performing audience-specific actions. + +4. **Asynchronous Operations**: Be mindful that the `tick()` method runs on an asynchronous thread. Ensure thread safety when interacting with Bukkit API or shared resources. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/_category_.yml b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/_category_.yml new file mode 100644 index 0000000000..f7c5477be3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/_category_.yml @@ -0,0 +1 @@ +label: Static Entries diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/artifact.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/artifact.mdx new file mode 100644 index 0000000000..5cc65234cf --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/artifact.mdx @@ -0,0 +1,26 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# ArtifactEntry + +The `ArtifactEntry` is a specialized interface derived from `AssetEntry`. +Its primary purpose is to handle artifacts, which are assets generated by the extensions. +Unlike standard assets, artifacts are usually dynamic and created during runtime. +This makes them particularly useful for storing data that changes based on player interactions or game events. + +An essential feature of `ArtifactEntry` is its unique `artifactId`. +This identifier must remain constant once assigned and is used to reference the artifact within the plugin. + +## Usage + +Here's a generic example of creating and using an `ArtifactEntry`: + +### Defining an ArtifactEntry + + + +### Accessing the Artifact's Content + + +In this example, we get the content of the given artifact reference by using the `AssetManager`. +The `assetManager.fetchAsset` method is then used to retrieve the content of the artifact, based the `entry`. + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/asset.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/asset.mdx new file mode 100644 index 0000000000..eefd980f60 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/asset.mdx @@ -0,0 +1,19 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# AssetEntry +The AssetEntry is a specialized interface that extends the `StaticEntry`. +It is primarily used for handling static assets within the game. +Assets can include various types of files such as images, sounds, or other external resources that are crucial to enhancing the game environment and player experience. +The key attribute of AssetEntry is the path, which specifies the location of the asset. + +## Usage +Here's a generic example of creating and using an `AssetEntry`: + +### Defining an AssetEntry + + +### Accessing the Artifact's Content + +To get the asset from the entry, you can use the following code: + + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_id.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_id.mdx new file mode 100644 index 0000000000..85c80466dd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_id.mdx @@ -0,0 +1,11 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# SoundIdEntry + +The `SoundIdEntry` is an interface derived from `StaticEntry`, specifically designed for managing custom sounds within the TypeWriter Spigot plugin. +If a server is using a custom resource pack, the `SoundIdEntry` can be used to add a reference to a custom sound within the resource pack. + +## Usage + + +A `SoundIdEntry` handled by the interface when an entry needs a sound. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_source.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_source.mdx new file mode 100644 index 0000000000..eaaf9c95b7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/sound_source.mdx @@ -0,0 +1,10 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# SoundSourceEntry + +The `SoundSourceEntry` class is used to have a sound play at a specific entity in the world. This can be a moving target like an NPC. The sound source can be used in an entry with a `Sound` parameter. + +## Usage + + +This can be combined with other entry types like `Speaker`. For example, an NPC that speaks can also be a sound emitter. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/speaker.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/speaker.mdx new file mode 100644 index 0000000000..cf534598dc --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/static/speaker.mdx @@ -0,0 +1,13 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# SpeakerEntry + +The `SpeakerEntry` is a specialized interface extending the `EntityEntry`. +It is designed to enhance dialogues in the game by associating non-player characters (NPCs) with specific names and sounds. +This feature is pivotal for creating more immersive and interactive storytelling experiences in Minecraft. + +## Usage + + +This speaker can be used by users in various dialogues and interactions within the game. +You almost never need to access the `SpeakerEntry` directly, as it is automatically handled by the `DialogueSequence`. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/_category_.yml b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/_category_.yml new file mode 100644 index 0000000000..60b6731446 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/_category_.yml @@ -0,0 +1 @@ +label: Trigger Entries diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/action.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/action.mdx new file mode 100644 index 0000000000..e316378b45 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/action.mdx @@ -0,0 +1,17 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# ActionEntry + +The `ActionEntry` defines an action to take. When it is triggered, it will run it's `execute` method. +After which it will trigger all the next entries in the chain. + +:::danger Immutable Entry +It is important to stress that the entry must be immutable. +**It cannot have any mutable state.** +::: + +## Usage + + +Typewriter will automatically trigger the next entries in the chain after the `execute` method is called. +If you want to call the next entries in the chain manually, you can should the [CustomTriggeringActionEntry](./custom_triggering_action.mdx). diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/custom_triggering_action.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/custom_triggering_action.mdx new file mode 100644 index 0000000000..9cfaf98dd0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/custom_triggering_action.mdx @@ -0,0 +1,9 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# CustomTriggeringActionEntry + +The `CustomTriggeringActionEntry` is a specialised verion of the `ActionEntry` that allows you to trigger the next entries when you want. Or just call a subset of entries. + +## Usage + + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/dialogue.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/dialogue.mdx new file mode 100644 index 0000000000..9139189567 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/dialogue.mdx @@ -0,0 +1,33 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# DialogueEntry + +The `DialogueEntry` is used to define a type of dialogue. When a `DialogueEntry` is triggered it's associated `DialogueMessenger` will be used to display the dialogue to the player. +Multiple `DialogueMessenger`'s can be associated with a single `DialogueEntry` and the `DialogueMessenger` that is used is determined by the `DialogueMessenger`'s `MessengerFilter`. + +:::info +There can always be at most one `DialogueEntry` active for a player. +This is automatically handled by Typewriter. +::: + +## Usage + + +To define the messenger that will be used to display the dialogue to the player, you must create a class that implements the `DialogueMessenger` interface. + + +### Multiple Messengers +The `DialogueMessenger` has a `MessengerFilter` that is used to determine if the messenger should be used to display the dialogue to the player. When having multiple `MessageFilter`'s make sure that they are deterministic. So if you have some condition, such as if they are bedrock players. One message check that the player is a bedrock player and the other filter check that they are not. + +### Lifecycle +The `state` of the messenger determines what happens to the messenger. +- `MessengerState.FINISHED` - The dialogue is finished and the next dialogue in the chain will be triggered. +- `MessengerState.CANCELLED` - The dialogue is cancelled and dialogue chain is stopped, even if there are more dialogues in the chain. +- `MessengerState.RUNNING` - The dialogue is still running and will continue to run until the state is changed. + +The state object can be changed inside the `tick` method or from outside. It can even be changed from the plugin itself. For example when the user runs a command the dialogue will be cancelled. + +There are some additional lifecycle methods that can be overridden. +- `init` - Called when the messenger is initialized. Will be called before the first `tick` call. +- `dispose` - Called when the messenger is disposed. By default this will unregister any listeners that were registered by the messenger. +- `end` - Normally this does not need to be overwritten. Only if you do not want to resend the chat history for some reason. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/event.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/event.mdx new file mode 100644 index 0000000000..90f9c5f825 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/04-entries/trigger/event.mdx @@ -0,0 +1,21 @@ +import CodeSnippet from "@site/src/components/CodeSnippet"; + +# EventEntry + +The `EventEntry` is used as a starting point for any sequence. It can have external event listeners listening to events and trigger based on that. + +## Usage + + +To listen to an event, you must create a function that is annotated with `@EntryListener`. +The great thing about kotlin, is that this can be done in the same file as the entry. + + +:::warning Public Function +If the function is not scoped to be public, it will not be registered as a listener. +::: + +The function will automatically be registered as a listener for the event by Typewriter and be called when the Bukkit event is trigger. +An optional `Query` parameter can be added to easily fetch all the different event entries. + + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/05-querying.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/05-querying.mdx new file mode 100644 index 0000000000..0d1bda4546 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/05-querying.mdx @@ -0,0 +1,35 @@ +# Query Entries + +Sometimes you need to find an entry by any of it's fields or by type. This can be done with the `Query` class. + +If you need to find all entries of a specific type: +```kotlin +val entries = Query.find() +``` + +Sometimes you need it by a specific criteria: +```kotlin +val entries = Query.findWhere { + it.someField == "some value" +} +``` + +You can also find a single entry: +```kotlin +val entry = Query.findFirstWhere { + it.someField == "some value" +} +``` + +Sometimes you need to find an entry by it's id: +```kotlin +val entry = Query.findById(id) +``` + +Other times you need to find entries by their page: +```kotlin +val entries = Query.findWhereFromPage(pageId) { + it.someField == "some value" +} +``` + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/06-triggering.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/06-triggering.mdx new file mode 100644 index 0000000000..4303656aa0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/06-triggering.mdx @@ -0,0 +1,77 @@ +# Triggering Entries + +There are easy ways to trigger all the next entries in a `TriggerEntry`. +The most important is that you have a `player` to trigger the entries on. + +:::info +Typewriter takes care of only triggering the entries that should be triggered. +If criteria are not met, the entries are not triggered. +::: + +If you have a single `TriggerEntry`: +```kotlin +val triggerEntry: TriggerEntry = ... +val player: Player = ... +triggerEntry triggerAllFor player +``` + +If you have list of `TriggerEntry`: +```kotlin +val triggerEntries: List = ... +val player: Player = ... +triggerEntries triggerAllFor player +``` + +If you have a list of id's of `TriggerEntry`: +```kotlin +val triggerEntryIds: List = ... +val player: Player = ... +triggerEntryIds triggerEntriesFor player +``` + +Sometimes you don't want to trigger the entries when the player is in a dialogue. +For example, when the player is in a dialogue with a NPC, you don't want to trigger the first entry of the NPC again. +You expect when the player clicks on the NPC again, the next dialogue is triggered. +To facilitate this, you can use the `startDialogueWithOrNextDialogue` function. + +```kotlin +val triggerEntries: List = ... +val player: Player = ... +triggerEntries startDialogueWithOrNextDialogue player +``` + +Or if you want to trigger something completely different when the player is in a dialogue: +```kotlin +val triggerEntries: List = ... +val player: Player = ... +val customTrigger: EventTrigger = ... +triggerEntries.startDialogueWithOrTrigger(player, customTrigger) +``` + + +## Custom triggers +Typewriter triggers based on the `EventTrigger` interface. +So all the entries that are triggered are wrapped in a `EntryTrigger`. + +There are some triggers that are defined in Typewriter. +The two are `SystemTrigger` and `CinematicStartTrigger`. + +### SystemTrigger + +`SystemTrigger`'s can be used to indicate to either the `DialogueSequence` or the `CinematicSequence` that something needs to happen. + +- `SystemTrigger.DIALOGUE_NEXT` indicates that the next dialogue should be triggered. +- `SystemTrigger.DIALOGUE_END` indicates that the dialogue should end. +- `SystemTrigger.CINEMATIC_END` indicates that the cinematic should end. + +### CinematicStartTrigger + +`CinematicStartTrigger`'s can be used to indicate to the `CinematicSequence` that a cinematic should start. + +It has several properties that can be set: +- `pageId: String` is the id of the cinematic page that should be shown. This is required. +- `triggers: List` is a list of trigger id's that should be triggered when the cinematic is finished. This is optional. +- `override: Boolean` indicates if the cinematic should override the current cinematic. This is optional and defaults to `false`. +- `simulate: Boolean` is used to run a cinematic for recording purposes. When this is enable it disables some entries from running. This is optional and defaults to `false`. +- `ignoreEntries: List` is a list of entry id's that should not be triggered. This is optional. +- `minEndTime: Optional` is the minimum amount of frames the cinematic should run. If the cinematic is shorter than this, it will be extended. This is optional. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.5.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.5.mdx new file mode 100644 index 0000000000..de07510129 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.5.mdx @@ -0,0 +1,108 @@ +--- +title: 0.5.X API Changes +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# All API changes to 0.5.X + +This document lists all the API changes introduced in version `0.5` of the TypeWriter plugin. If you are upgrading from an older version, please read this document before upgrading. + +## New type: Ref + +To streamline the api more, I created a new type called Ref. +It provides a much nicer api for referencing entries. + + + + ```kotlin showLineNumbers + class ExampleEntry( + // ... + override val triggers: List = emptyList(), + @EntryIdentifier(OtherEntry::class) + val identifier: String = "", + // ... + ) : TriggerableEntry + ``` + Getting entry: + ```kotlin showLineNumbers + val otherEntry = Query.findById(entry.identifier) + ``` + + + ```kotlin showLineNumbers + class ExampleEntry( + // ... + override val triggers: List> = emptyList(), + val identifier: Ref = emptyRef(), + // ... + ) : TriggerableEntry + ``` + Getting entry: + ```kotlin showLineNumbers + val otherEntry = entry.identifier.get() + ``` + + + +## Change to facts interface + +Since `Facts` can now be applied to groups of players, the `read` function no longer works. +A simple migration is to use the `readSinglePlayer` function instead. + + + + ```kotlin showLineNumbers + class InventoryItemCountFact( + override val id: String = "", + override val name: String = "", + override val comment: String = "", + @Help("The item to check for.") + val item: Item = Item.Empty, + ) : ReadableFactEntry { + override fun read(playerId: UUID): Fact { + val player = server.getPlayer(playerId) ?: return Fact(id, 0) + val amount = player.inventory.contents.filterNotNull().filter { item.isSameAs(player, it) }.sumOf { it.amount } + return Fact(id, amount) + } + } + ``` + + + ```kotlin showLineNumbers + class InventoryItemCountFact( + override val id: String = "", + override val name: String = "", + override val comment: String = "", + override val group: Ref = emptyRef(), + @Help("The item to check for.") + val item: Item = Item.Empty, + ) : ReadableFactEntry { + override fun readSinglePlayer(player: Player): FactData { + val amount = player.inventory.contents.filterNotNull().filter { item.isSameAs(player, it) }.sumOf { it.amount } + return FactData(amount) + } + } + ``` + + + +## Entry Icon Changes + +The icon set has changed from only allowing Font Awesome icons, to allowing any icon from [Iconify](https://iconify.design/). +This means that entries can use any icon from [Iconify](https://iconify.design/). +Since the icon set is so big, there no longer is a nice `Icon` class. Instead, you just pass the icon name to the icon parameter. + + + + ```kotlin showLineNumbers + @Entry("add_potion_effect", "Add a potion effect to the player", Colors.RED, Icons.FLASK_VIAL) + ``` + + + ```kotlin showLineNumbers + @Entry("add_potion_effect", "Add a potion effect to the player", Colors.RED, "fa6-solid:flask-vial") + ``` + + diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.6.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.6.mdx new file mode 100644 index 0000000000..c2634f1eb3 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/0.6.mdx @@ -0,0 +1,34 @@ +--- +title: 0.6.X API Changes +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# All API changes to 0.6.X + +As Typewriter changed from `Adapters` to `Extensions`, the API has changed significantly. +It is recommended to reread the [Getting Started](../02-getting_started.mdx) guide to get a better understanding of how to create extensions. + +## Messager Tick Parameter + + + + ```kotlin showLineNumbers + override fun tick(playTime: Duration) { + super.tick(playTime) + // Do something to show the message + } + ``` + + + ```kotlin showLineNumbers + override fun tick(context: TickContext) { + super.tick(context) + // Do something to show the message + } + ``` + + + +The `tick` parameter has been changed to `context` to allow for more context to be passed to the `tick` method. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/index.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/index.mdx new file mode 100644 index 0000000000..fc36030005 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/07-api-changes/index.mdx @@ -0,0 +1,2 @@ +# API Changes +The TypeWriter plugin frequently undergoes updates, and these changes can impact the functionality of the API. Here, you can find a list of API changes for each version of TypeWriter, providing info about the modifications made to improve development experiences. diff --git a/documentation/versioned_docs/version-0.6.0/develop/02-extensions/index.mdx b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/index.mdx new file mode 100644 index 0000000000..20ce53ea52 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/02-extensions/index.mdx @@ -0,0 +1,10 @@ +# Extensions +## Introduction +TypeWriter is a dynamic platform that supports the development of extensions, which are modular components enhancing the overall functionality. +Extensions are self-contained, easily shareable, and integrate smoothly into the TypeWriter system. +They allow you to create custom entries and have them show up in the web panel. +This guide is tailored to guide you through the process of creating an extension, suitable for both beginners and experienced developers. + +:::info +It is required to write extensions in Kotlin, as it is the primary language of TypeWriter. **It is not possible to create extensions in Java.** +::: diff --git a/documentation/versioned_docs/version-0.6.0/develop/README.mdx b/documentation/versioned_docs/version-0.6.0/develop/README.mdx new file mode 100644 index 0000000000..f55c44f5c6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/README.mdx @@ -0,0 +1,13 @@ +--- +sidebar_position: 1 +--- +# Development +Typewriter has different parts that can be developed upon. + +- **Extensions:** These are self-containted building blocks that can easaly be shared and added to the system. +- **Plugin:** These are core parts of how Typewriter works. All help is welcome, but please discuss it first as there changes might impact a lot of users. +- **UI:** This is written in Flutter and is the most complex part of Typewriter. It is also the most fun to work on, as this is where you can really see the results of your work. + +:::danger important +This part of the documentation is still under construction. If you want to help, please contact us on [Discord](https://discord.gg/HtbKyuDDBw). +::: diff --git a/documentation/versioned_docs/version-0.6.0/develop/snippets.json b/documentation/versioned_docs/version-0.6.0/develop/snippets.json new file mode 100644 index 0000000000..199e4f9a60 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/develop/snippets.json @@ -0,0 +1,98 @@ +{ + "initializer": { + "file": "src/main/kotlin/com/typewritermc/example/ExampleInitializer.kt", + "content": "import com.typewritermc.core.extension.Initializable\nimport com.typewritermc.core.extension.annotations.Initializer\n\n@Initializer\nobject ExampleInitializer : Initializable {\n override fun initialize() {\n // Do something when the extension is initialized\n }\n\n override fun shutdown() {\n // Do something when the extension is shutdown\n }\n}" + }, + "cinematic_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": "@Entry(\"example_cinematic\", \"An example cinematic entry\", Colors.BLUE, \"material-symbols:cinematic-blur\")\nclass ExampleCinematicEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n @Segments(Colors.BLUE, \"material-symbols:cinematic-blur\")\n val segments: List = emptyList(),\n) : CinematicEntry {\n override fun create(player: Player): CinematicAction {\n return ExampleCinematicAction(player, this)\n }\n}" + }, + "cinematic_segment_with_min_max": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": " @Segments(Colors.BLUE, \"material-symbols:cinematic-blur\")\n @InnerMin(Min(10))\n @InnerMax(Max(20))\n val segments: List = emptyList()," + }, + "cinematic_create_actions": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": " // This will be used when the cinematic is normally displayed to the player.\n override fun create(player: Player): CinematicAction {\n return DefaultCinematicAction(player, this)\n }\n\n // This is used during content mode to display the cinematic to the player.\n // It may be null to not show it during simulation.\n override fun createSimulating(player: Player): CinematicAction? {\n return SimulatedCinematicAction(player, this)\n }\n\n // This is used during content mode to record the cinematic.\n // It may be null to not record it during simulation.\n override fun createRecording(player: Player): CinematicAction? {\n return RecordingCinematicAction(player, this)\n }" + }, + "cinematic_segment": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": "data class ExampleSegment(\n override val startFrame: Int = 0,\n override val endFrame: Int = 0,\n) : Segment" + }, + "cinematic_action": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": "class ExampleCinematicAction(\n val player: Player,\n val entry: ExampleCinematicEntry,\n) : CinematicAction {\n override suspend fun setup() {\n // Initialize variables, spawn entities, etc.\n }\n\n override suspend fun tick(frame: Int) {\n val segment = entry.segments activeSegmentAt frame\n // Can be null if no segment is active\n\n // The `frame` parameter is not necessarily next frame: `frame != old(frame)+1`\n\n // Execute tick logic for the segment\n }\n\n override suspend fun teardown() {\n // Remove entities, etc.\n }\n\n override fun canFinish(frame: Int): Boolean = entry.segments canFinishAt frame\n}" + }, + "cinematic_simple_action": { + "file": "src/main/kotlin/com/typewritermc/example/entries/cinematic/ExampleCinematicEntry.kt", + "content": "class ExampleSimpleCinematicAction(\n val player: Player,\n entry: ExampleCinematicEntry,\n) : SimpleCinematicAction() {\n override val segments: List = entry.segments\n\n override suspend fun startSegment(segment: ExampleSegment) {\n super.startSegment(segment) // Keep this\n // Called when a segment starts\n }\n\n override suspend fun tickSegment(segment: ExampleSegment, frame: Int) {\n super.tickSegment(segment, frame) // Keep this\n // Called every tick while the segment is active\n // Will always be called after startSegment and never after stopSegment\n\n // The `frame` parameter is not necessarily next frame: `frame != old(frame)+1`\n }\n\n override suspend fun stopSegment(segment: ExampleSegment) {\n super.stopSegment(segment) // Keep this\n // Called when the segment ends\n // Will also be called if the cinematic is stopped early\n }\n}" + }, + "audience_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", + "content": "@Entry(\"example_audience\", \"An example audience entry.\", Colors.GREEN, \"material-symbols:chat-rounded\")\nclass ExampleAudienceEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n) : AudienceEntry {\n override fun display(): AudienceDisplay {\n return ExampleAudienceDisplay()\n }\n}" + }, + "audience_display": { + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", + "content": "class ExampleAudienceDisplay : AudienceDisplay() {\n override fun initialize() {\n // This is called when the first player is added to the audience.\n super.initialize()\n // Do something when the audience is initialized\n }\n\n override fun onPlayerAdd(player: Player) {\n // Do something when a player gets added to the audience\n }\n\n override fun onPlayerRemove(player: Player) {\n // Do something when a player gets removed from the audience\n }\n\n override fun dispose() {\n super.dispose()\n // Do something when the audience is disposed\n // It will always call onPlayerRemove for all players.\n // So no player cleanup is needed here.\n }\n}" + }, + "tickable_audience_display": { + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", + "content": "// highlight-next-line\nclass TickableAudienceDisplay : AudienceDisplay(), TickableDisplay {\n override fun onPlayerAdd(player: Player) {}\n override fun onPlayerRemove(player: Player) {}\n\n // highlight-start\n override fun tick() {\n // Do something when the audience is ticked\n players.forEach { player ->\n // Do something with the player\n }\n\n // This is running asynchronously\n // If you need to do something on the main thread\n ThreadType.SYNC.launch {\n // Though this will run a tick later, to sync with the bukkit scheduler.\n }\n }\n // highlight-end\n}" + }, + "audience_display_with_events": { + "file": "src/main/kotlin/com/typewritermc/example/entries/manifest/ExampleAudienceEntry.kt", + "content": "class AudienceDisplayWithEvents : AudienceDisplay() {\n override fun onPlayerAdd(player: Player) {}\n override fun onPlayerRemove(player: Player) {}\n\n // highlight-start\n @EventHandler\n fun onSomeEvent(event: SomeBukkitEvent) {\n // Do something when the event is triggered\n // This will trigger for all players, not just the ones in the audience.\n // So we need to check if the player is in the audience.\n if (event.player in this) {\n // Do something with the player\n }\n }\n // highlight-end\n}" + }, + "artifact_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleArtifactEntry.kt", + "content": "@Entry(\"example_artifact\", \"An example artifact entry.\", Colors.BLUE, \"material-symbols:home-storage-rounded\")\nclass ExampleArtifactEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val artifactId: String = \"\",\n) : ArtifactEntry" + }, + "artifact_access": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleArtifactEntry.kt", + "content": "suspend fun accessArtifactData(ref: Ref) {\n val assetManager = KoinJavaComponent.get(AssetManager::class.java)\n val entry = ref.get() ?: return\n val content: String? = assetManager.fetchAsset(entry)\n // Do something with the content\n}" + }, + "asset_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleAssetEntry.kt", + "content": "@Entry(\"example_asset\", \"An example asset entry.\", Colors.BLUE, \"material-symbols:home-storage-rounded\")\nclass ExampleAssetEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val path: String = \"\",\n) : AssetEntry" + }, + "asset_access": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleAssetEntry.kt", + "content": "suspend fun accessAssetData(ref: Ref) {\n val assetManager = KoinJavaComponent.get(AssetManager::class.java)\n val entry = ref.get() ?: return\n val content: String? = assetManager.fetchAsset(entry)\n // Do something with the content\n}" + }, + "sound_id_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSoundIdEntry.kt", + "content": "@Entry(\"example_sound\", \"An example sound entry.\", Colors.BLUE, \"icon-park-solid:volume-up\")\nclass ExampleSoundIdEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val soundId: String = \"\",\n) : SoundIdEntry" + }, + "sound_source_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSoundSourceEntry.kt", + "content": "@Entry(\"example_sound_source\", \"An example sound source entry.\", Colors.BLUE, \"ic:round-spatial-audio-off\")\nclass ExampleSoundSourceEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n) : SoundSourceEntry {\n override fun getEmitter(player: Player): SoundEmitter {\n // Return the emitter that should be used for the sound.\n // An entity should be provided.\n return SoundEmitter(player.entityId)\n }\n}" + }, + "speaker_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/static/ExampleSpeakerEntry.kt", + "content": "@Entry(\"example_speaker\", \"An example speaker entry.\", Colors.BLUE, \"ic:round-spatial-audio-off\")\nclass ExampleSpeakerEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val displayName: String = \"\",\n override val sound: Sound = Sound.EMPTY,\n) : SpeakerEntry" + }, + "action_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleActionEntry.kt", + "content": "@Entry(\"example_action\", \"An example action entry.\", Colors.RED, \"material-symbols:touch-app-rounded\")\nclass ExampleActionEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n override val triggers: List> = emptyList(),\n) : ActionEntry {\n override fun execute(player: Player) {\n super.execute(player) // This will apply all the modifiers.\n // Do something with the player\n }\n}" + }, + "custom_triggering_action_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleCustomTriggeringActionEntry.kt", + "content": "@Entry(\n \"example_custom_triggering_action\",\n \"An example custom triggering entry.\",\n Colors.RED,\n \"material-symbols:touch-app-rounded\"\n)\nclass ExampleCustomTriggeringActionEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n @SerializedName(\"triggers\")\n override val customTriggers: List> = emptyList(),\n) : CustomTriggeringActionEntry {\n override fun execute(player: Player) {\n super.execute(player) // This will apply the modifiers.\n // Do something with the player\n player.triggerCustomTriggers() // Can be called later to trigger the next entries.\n }\n}" + }, + "dialogue_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleDialogueEntry.kt", + "content": "@Entry(\"example_dialogue\", \"An example dialogue entry.\", Colors.BLUE, \"material-symbols:chat-rounded\")\nclass ExampleDialogueEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val criteria: List = emptyList(),\n override val modifiers: List = emptyList(),\n override val triggers: List> = emptyList(),\n override val speaker: Ref = emptyRef(),\n @MultiLine\n @Placeholder\n @Colored\n @Help(\"The text to display to the player.\")\n val text: String = \"\",\n) : DialogueEntry" + }, + "dialogue_messenger": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleDialogueEntry.kt", + "content": "@Messenger(ExampleDialogueEntry::class)\nclass ExampleDialogueDialogueMessenger(player: Player, entry: ExampleDialogueEntry) :\n DialogueMessenger(player, entry) {\n\n companion object : MessengerFilter {\n override fun filter(player: Player, entry: DialogueEntry): Boolean = true\n }\n\n // Called every game tick (20 times per second).\n // The cycle is a parameter that is incremented every tick, starting at 0.\n override fun tick(context: TickContext) {\n super.tick(context)\n if (state != MessengerState.RUNNING) return\n\n player.sendMessage(\"${entry.speakerDisplayName}: ${entry.text}\".parsePlaceholders(player).asMini())\n\n // When we want the dialogue to end, we can set the state to FINISHED.\n state = MessengerState.FINISHED\n }\n}" + }, + "event_entry": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleEventEntry.kt", + "content": "@Entry(\"example_event\", \"An example event entry.\", Colors.YELLOW, \"material-symbols:bigtop-updates\")\nclass ExampleEventEntry(\n override val id: String = \"\",\n override val name: String = \"\",\n override val triggers: List> = emptyList(),\n) : EventEntry" + }, + "event_entry_listener": { + "file": "src/main/kotlin/com/typewritermc/example/entries/trigger/ExampleEventEntry.kt", + "content": "// Must be scoped to be public\n@EntryListener(ExampleEventEntry::class)\nfun onEvent(event: SomeBukkitEvent, query: Query) {\n // Do something\n val entries = query.find() // Find all the entries of this type, for more information see the Query section\n // Do something with the entries, for example trigger them\n entries triggerAllFor event.player\n}" + } +} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/01-home.md b/documentation/versioned_docs/version-0.6.0/docs/01-home.md new file mode 100644 index 0000000000..c39b5d8ffd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/01-home.md @@ -0,0 +1,13 @@ +# What is Typewriter? + +Typewriter is a plugin that allows you to create and manage player interactions on your server. It allows you to create +quests, NPC dialogues, and more. It also allows you to manage your server's existing player interactions. + +In this wiki there are several pages that will help you get started with Typewriter. The first page is +the [Installation Guide](./02-getting-started/01-installation.mdx). This page will help you install Typewriter and the `BasicExtension`. +Then you can follow the [First Interaction](./03-creating-stories/01-interactions/index.mdx) guide to create your first interaction. + +:::caution[In beta] +Typewriter is currently in beta. This means that the plugin is still in development and may contain bugs. If you find +any bugs, please report them in our [discord](https://discord.gg/HtbKyuDDBw) +::: diff --git a/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/01-installation.mdx b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/01-installation.mdx new file mode 100644 index 0000000000..06fe2abe35 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/01-installation.mdx @@ -0,0 +1,114 @@ +--- +difficulty: Easy +--- + +import DownloadVersion from "@site/src/components/DownloadVersion"; +import Image from "@site/src/components/Image"; + +# Installation Guide + +:::danger[Platform Compatibility] +TypeWriter only works on **paper** servers. It will not work on Spigot or Bukkit servers. +::: + +## Installing the TypeWriter Plugin + +Ensure a smooth installation process for the TypeWriter plugin on your Paper Minecraft server by following these steps: + +### Plugin Installation + +1. Start by downloading . +2. Place the downloaded plugin into your server's `plugins` folder. + +### Handling Dependencies + +TypeWriter relies on additional plugins that need to be installed for proper functioning. + +3. Download and add TypeWriter's dependency, [PacketEvents](https://modrinth.com/plugin/packetevents/versions?l=paper), to your `plugins` directory. + +4. Verify that you **don't** have the [InteractiveChat](https://www.spigotmc.org/resources/interactivechat-show-items-inventory-in-chat-custom-chat-keywords-bungee-velocity-support.75870/) or [Eco](https://polymart.org/resource/eco.773) plugin installed, as it may cause conflicts with TypeWriter. + +### Basic Extension + +The TypeWriter offers various extensions for customization, but it's crucial to have the `BasicExtension` installed. + +5. Download the latest `BasicExtension` from and add it to the `plugins/TypeWriter/extensions` folder. + +For a comprehensive list of available extensions, refer to the [extensions section](../../adapters). + +6. With all components in place, restart your Minecraft server to complete the TypeWriter installation. + +:::danger[Out of Sync] +When updating the plugin, it's crucial to **always** install the corresponding extensions for that update. Failure to match the versions of the extension and plugin can result in the plugin not functioning correctly! +::: + +## Configuring the Web Panel + +:::caution[External Server Providers] +Typewriter's web panel is **not compatible** with some external server providers, including **Minehut**, **Aternos**, and **Apex**. These providers typically don’t support multiple ports, though their support team may be able to open additional ports upon request. + +If this isn't possible, you can still use all other features in Typewriter or consider setting up a local server with Typewriter installed. + +For further assistance, feel free to reach out with questions on our [Discord](https://discord.gg/HtbKyuDDBw). +::: + +:::info[Resource consumption] +Please note that the web panel and web socket use precious resources on your server, and it is best to host the panel on your development server instead of on a production server. +::: + +Now that we have installed the plugin, we need to configure the web panel. + +The web panel needs two ports to be open. These can be changed, but it does need at least two new ports to be open. The +The default ports are `8080` and `9092`. + +To enable the web panel, please follow these steps: + +### Enabling the Web Panel + +1. Open the `plugins/Typewriter/config.yml` file. +2. Change the settings to the following: + +```yaml title="plugins/Typewriter/config.yml" +# Whether the web panel and web sockets are enabled. +enabled: true +# The hostname of the server. CHANGE THIS to your server's IP. +hostname: "127.0.0.1" +# The panel uses web sockets to sync changes to the server and allows you to work with multiple people at the same time. +websocket: + # The port of the websocket server. Make sure this port is open. + port: 9092 + # The authentication that is used. Leave unchanged if you don't know what you are doing. + auth: "session" +panel: + # The panel can be disabled while the sockets are still open. Only disable this if you know what you are doing. + # If the web sockets are disabled, then the panel will always be disabled. + enabled: true + # The port of the web panel. Make sure this port is open. + port: 8080 +``` + +3. Please use [portchecker](https://portchecker.co/) to check if your ports are open. If not, please open the ports yourself or contact your hosting company. +4. Restart your server to complete the installation. + +## Connecting to the Web Panel + +To connect to the web panel, follow these steps: + +1. Run the command `/typewriter connect` in-game. This will provide you with a link to access the web panel. + +![Connect-command](../assets/installation/connect-command.gif) + +2. Open the link in your preferred web browser. + +Connect to the web panel in the book + +Once you've successfully connected, you can use the web panel to create and configure quests, NPC dialogues, and more. The panel also allows you to view and edit your server's existing player interactions. + +## Troubleshooting + +Encountering problems? Check out the [troubleshooting](../06-troubleshooting/index.mdx) page for solutions to common issues. +If you still have issues, feel free to ask for help in the [Discord](https://discord.gg/HtbKyuDDBw). + +## What's Next? + +Try creating your first interaction by following the [Interactions](../03-creating-stories/01-interactions/index.mdx) guide. If you have any questions, feel free to ask them in the [Discord](https://discord.gg/HtbKyuDDBw). diff --git a/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/02-layout.mdx b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/02-layout.mdx new file mode 100644 index 0000000000..67c10d26c9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/02-layout.mdx @@ -0,0 +1,53 @@ +--- +difficulty: Easy +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; + +# Layout + +On this page, you will learn how to use the TypeWriter Web panel and create certain things. + +## Creating a page + +To create a page, simply click the button `Add Page` then enter the name of the page. It can't be a duplicate name of an already existing page. Select one of the four types: +* **Sequence**: Create interactions that can be played after each other. +* **Static** : Referencing to data that doesn't change over the lifetime of the program. +* **Cinematic**: Timed sequences of actions. +* **Manifest**: In the runtime calculated state of the interaction. + + + +Now that we have created a sequence page, I will explain how the different layouts works. + +## Base Layout + +Sequence Page Layout + +1. **Page list**: This is where you can see all the pages that you have created. You can also create new pages here. +2. **Action bar**: There are multiple actions that you can perform by clicking on the buttons from left to right: + - **Staging Indicator**: orange indicates that changes are not active on the server, and green means they are. Just hover over it to reveal the "Publish" button, and click it if you want to publish your staged pages to the server. + - **Search bar**: Use this to search for entries or create new ones. + - **+ button**: Click here to create new entries. + +**Inspector**: This is where you can edit the properties of the selected entry. + +3. **Entry Information**: Here you can view all the information about an entry, such as the ID and name. +4. **Fields**: Use this section to edit the properties of the entries. +5. **Operations**: This section contains various actions that you can perform with the entry. + +## Sequence, static and manifest layout + +- In the center, all your entries are shown. +- Use your mouse's scroll wheel to zoom in or out. +- Click on an entry to open it in the inspector. +- When holding an entry for a few seconds, it makes it drag and drop so you can connect it with other entries. + +## Cinematic layout + +Cinematic Page Layout + +1. **Segments**: Inside a cinematic entry, you can create segments, which are displayed on your track. Segments can't overlap each other. +2. **Track**: This is where you can see all the segments that you have created and edit their show duration. +3. **Track Duration**: Here, you can edit the duration of the track. The track duration is in Minecraft ticks, so 20 ticks equals 1 second. diff --git a/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/index.mdx new file mode 100644 index 0000000000..f350266f74 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/02-getting-started/index.mdx @@ -0,0 +1,2 @@ +# Getting Started +Welcome to TypeWriter, the dynamic and versatile plugin for enhancing your paper Minecraft server with player interactions such as: branching quests, Cinematics, and much more! This guide will walk you through the essential steps to install and configure TypeWriter, ensuring a seamless integration into your gaming experience. \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/01-options.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/01-options.mdx new file mode 100644 index 0000000000..f589844f04 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/01-options.mdx @@ -0,0 +1,49 @@ +--- +difficulty: Easy +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# Adding Options + +:::info[Before starting] +It's best to first read [First Interaction](./index.mdx) before starting this tutorial. +::: + +In this tutorial, you will learn how to create and use options in your interactions. + +## Creating an Option + +To create an option, follow these steps: + +1. Right-click on your entry and select `+ Link with ...`. +2. Search for `Add Option` and click on the + icon to add it to your sequence. + + + +## Configuring a Option + +Let's configure the option by doing the following steps: + +1. Enter the field `Text` your question that you want to ask the player, like `Am i a beautiful flower?`. +2. Select the correct [speaker](./index.mdx#configuring-the-speaker) for the option. + +Configuring an option entry + +### Adding options + +1. Click on the + icon by the field `Options` and expand `Options #1`. +2. Enter the question answer of option 1 in the Field `Text` like `Yes you are!`. +3. Press the + icon in the field triggers inside `Options #1` and expand `Triggers #1`. +4. Click on `Select a triggerable` and in the search menu, create the entry that you want to trigger after the player selected that Option. Like a spoken with `Yay thank you!` +5. Repeat these steps to create more options like `No you are not.`. + +Adding options to an option entry + +## Result + +After you have created the options, you can test your interaction by clicking the publish button and it should look like this: + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/02-items.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/02-items.mdx new file mode 100644 index 0000000000..d327509174 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/02-items.mdx @@ -0,0 +1,68 @@ +--- +difficulty: Normal +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +# Giving items + +:::info[Before starting] +It's best to first read [First Interaction](./index.mdx) before starting this tutorial. +::: + +In this tutorial, you will learn how to give items in your interactions. + +## Adding the give item + +To add a give item entry, follow these steps: + +1. Right-click on your entry and select `+ Link with ...`. +2. Search for `Add give item` and click on the + icon to add it to your sequence. + + + +## Configuring the give item + +The giving item entry has two types of giving an item: A custom item and a Serialized item. + +### Differences + + + The custom item allows you to customize almost all the aspects of the item. + :::warning[NBT] + A custom item can't contain NBT data. + ::: + + + The serialized item gives you the ability to use the Item Capturer and capture the item from in-game. + :::warning[Not Editable] + You can't edit a serialized item. Only the name can be changed. + ::: + + + +### Using the Item Capturer(Serialized Item) + +The easy way is to use the item capture because it just copies the item that you are currently holding in-game to the panel. To do this, just click on the blue-white camera icon next to the `item` field. + + + +### Configuring it yourself(Custom Item) + +You can also configure the item yourself. Inside the item field select `Custom Item`. Press the + icon right next to the `Components(0)` text to add one of the following components: +1. **Amount**: The amount of items given to the player. +2. **Flag**: Specific options for the item. +3. **Lore**: The lore of the item. +4. **Material**: This is the item that the player will get. +5. **Item Name**: This is the name of the item. + +## Result + +After you configured your item, you can test your interaction by clicking the publish button, and then it should look something like this: + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/03-conditional-dialogue.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/03-conditional-dialogue.mdx new file mode 100644 index 0000000000..d8a79f2708 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/03-conditional-dialogue.mdx @@ -0,0 +1,50 @@ +--- +difficulty: Normal +--- + +import Image from "@site/src/components/Image"; +import Player from "@site/src/components/Player"; + +# Conditional dialogue +:::info[Before starting] +It's best to first read [First Interaction](./index.mdx) [Facts](../03-facts/index.mdx) before starting this tutorial. +Also, make sure you have created a **sequence** page. +::: + +In this tutorial, you will learn how to create conditional dialogue. This means that if the player has a certain fact set to a specific value, it will then display the correct dialogue. + +## Adding a spoken +First we need to add a spoken. This can be learned by following the [First Interaction](./index.mdx) tutorial. + +## Configuring the spoken +In the spoken we will set the field text to `Hey you clicked me for the first time.` + +### Setting the Criteria +Now we need to configure the criteria for the spoken. This can be done by clicking on the + icon in the inspector next to the criteria field. Then, you can select the fact you want to use. For this tutorial, we will use a permanent fact called `Flower Clicked` with the group set to a player group. + +Flower Clicked Fact + +Inside the criteria, set the operator to `==` and the value to `0`. + +### Configuring the Modifier +You have configured the criteria, but now we need to modify the fact so that when you click the flower again, a different spoken is displayed. This can be done by clicking on the + icon in the inspector next to the modifier field. Then, you can select the fact you want to modify. For this tutorial, we will use the same fact as the criteria. Inside the modifier, set the operator to `=` and the value to `1`. + +Add Spoken Fields + +## Adding the second spoken +Now we need to add the second spoken. This can be done by right-clicking on the `On Interact Block Event` entry and selecting `+ Link with ...`. Then, search for `Add Spoken` and click on the + icon to add it to your sequence.\ +In the text field we will set `Wow you clicked me again!` +Your sequence page should look like this: + +Conditional dialogue sequence + +### Configuring the second spoken Criteria +Now we need to configure the criteria for the second spoken. This can be done by clicking on the + icon in the inspector next to the criteria field. Then, select the `Flower Clicked` fact again. Inside the criteria, set the operator to `==` and the value to `1`. + +### Additional dialogue +To add more dialogues or interactions when you click the flower, set another modifier with the operator to `=` and the value to `2` (or any other value), then repeat the previous steps. + +## Result +Now, when you click the flower for the first time, the first spoken will be displayed. When you click the flower again, the second spoken will be displayed. + + \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/index.mdx new file mode 100644 index 0000000000..39b9021d12 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/01-interactions/index.mdx @@ -0,0 +1,62 @@ +--- +difficulty: Easy +--- +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# First Interaction + +:::info[Before starting] +This guide assumes that you have already installed the [Basic Extension](../../02-getting-started/01-installation.mdx#basic-extension).\ +Also, make sure you have read the [layout](../../02-getting-started/02-layout.mdx) documentation and created a **sequence** page. +::: + +Let's create our first interaction. Our example interaction will have the following steps: + +1. The player clicks on a flower. +2. A chat dialogue opens. + +If you need any assistance during the process, feel free to ask for help on our [Discord](https://discord.gg/HtbKyuDDBw). + +## What are interactions? + +An interaction occurs when the player interacts with something and triggers an event. In this tutorial, the player clicking on the flower is the interaction, and the chat dialogue is the event that gets triggered. + +## Creating an interaction + +Let's get started by creating an entry. Click on the + icon in the top right corner of the panel and search for `on interact with block`. Add it to your page by clicking on the + icon. + + + +### Configuring the interaction + +In the inspector, set the block to `Red Tulip` (1) and the name to `on flower click` (2) + +Configuring an interact with flow entry + +## Creating an event + +Now we need to create an event that gets triggered when the player clicks on the flower. Right-click on the `On Flower Click` entry and click on `+ link with ...` to open the search menu. Search for `Add Spoken` and add it to the page. + + + +### Configuring the event + +In the inspector, set the text to `Hello! I am a flower.` and set the duration to `1s`. + +### Configuring the speaker + +Follow these steps to configure the speaker: +1. Click on the text `Select a speaker` and in the search menu, click on `Add Simple Speaker`. +2. Select `Add static` and give that static page a name. +3. Click on the simple speaker. +4. Inside the inspector, set the Display Name to `A beautiful flower`. + + + +## Result + +You can now publish your pages, and in-game, it should look like this when clicking on the flower: + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/01-dialogue.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/01-dialogue.mdx new file mode 100644 index 0000000000..93bc67a5a1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/01-dialogue.mdx @@ -0,0 +1,35 @@ +--- +difficulty: Easy +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# Adding dialogues + +:::info[Before starting] +It's best to first read [Cinematics](./index.mdx) before starting this tutorial. +::: +In this tutorial, you will learn how to add dialogues to your interactions. + +## Adding a dialogue +In cinematic their are a variety of dialogues available like: `spoken`, `actionbar`, `title`, `subtitle`. For this tutorial we will use actionbar but all others have similar features. + +First click on the + icon in the top right corner of the panel and search for `Add Actionbar Dialogue Cinematic`. Add it to your page by clicking on the + icon. + + +### Configuring the dialogue +Now we need to configure the dialogue. + +First we need to add a [speaker](../01-interactions/index.mdx#configuring-the-speaker) to the dialogue. After that we need to add a segment this can be done by going to the operations and clicking on `Add Segment`. + +### Configuring the dialogue segment +Now inside the segment you can go to the Text field and adding a text like `This is a cool actionbar text!`. + +Adding a dialogue segment + +## Result +Now you have successfully added the dialogue you can view it in your cinematic. + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/03-entities.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/03-entities.mdx new file mode 100644 index 0000000000..0f5f9536cc --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/03-entities.mdx @@ -0,0 +1,51 @@ +--- +difficulty: Normal +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# Adding entities + +:::info[Before starting] +It's best to first read [Cinematics](./index.mdx) before starting this tutorial. +::: + +In this tutorial, you will learn how to add entities to your interactions. + +## Adding an entity +Firstly click on the + icon in the top right corner of the panel and search for `Add Entity Cinematic`. Add it to your page by clicking on the + icon. + + +### Selecting the definition +Now in the inspector, click on `Select a entity_definition` and select the type of entity you want to have as an NPC, but for this tutorial, we will use the `Add Npc Definition`. Now you will need to select a manifest page or create one by clicking on `Add manifest`. + + + +Then inside that NPC Definition you can follow the [entity-extension](../04-entity-extension/index.mdx) Tutorial to create a Beautiful NPC. + +### Adding segments +Now we need to add a segment to our track. You can do this by clicking in the inspector at Operations on `Add Segment`. This will add a segment to your track. + +### Configuring the segment +In the segment, we now need to add an artifact. You can do this by clicking on `Select a entity_cinematic_artifact` and selecting your artifact, or create one by clicking on `Add Entity Cinematic Artifact`. Then select or create your static page. + +### Requesting the content mode. +Now, back on the cinematic page, click on the camera icon in the inspector just above the artifact. This will open the content mode in Minecraft. If you like, you can read what the items do in your inventory just by hovering over them with your mouse, but we will just use the book for now. +By clicking on the book, TypeWriter will start recording your movements and items that you were holding before you requested the content mode. + +#### Recording the NPC +:::warning[Items in inventory] +The items you were holding before you requested the content mode will be the items that the NPC will be holding. +::: + + +#### Using the playback items + + + +## result +Now that you have successfully added the entity, you can view it in your cinematic. + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/04-first-join.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/04-first-join.mdx new file mode 100644 index 0000000000..91687ed985 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/04-first-join.mdx @@ -0,0 +1,52 @@ +--- +difficulty: Normal +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# First Join Cinematic + +:::info[Before Starting] +Before starting, it's recommended to read the following sections: [Interactions](../01-interactions/index.mdx), [Cinematics](./index.mdx), and [Facts](../03-facts/index.mdx). Ensure you have a sequence and a cinematic page created. +::: + +In this tutorial, you'll learn how to create a cinematic that plays when a player joins the server for the first time. + +## Adding the Join Entry +First, we need to add the `Add On Player Join` entry to our sequence. This can be done by clicking on the + icon in the top right corner of the panel and searching for `Add On Player Join`. Add it to your page by clicking on the + icon. + + + +## Waiting for Interaction +:::danger[Early Start Cinematic] +Before a player fully loads the server, it is possible for TypeWriter to start the cinematic prematurely. This can occur if the player has a slow internet connection or a low-performance computer. In such cases, the player may join the server in the middle of the cinematic instead of at the beginning. To address this, it is recommended to add an option or a delay where the player needs to perform an action before the cinematic starts. +::: +To add an option to your sequence, it's best to read the [Options](../01-interactions/01-options.mdx) page. For this tutorial, we will have a `New Option` with a `Start Cinematic` option. + +### Configuring the Criteria +Now we need to configure the criteria for the cinematic. This can be done by clicking on the `+` icon in the inspector next to the criteria field. Then, you can select the fact you want to use. For this tutorial, we will use a permanent fact called `First Join` with the group set to a player group. + +first-join-fact + +Inside the criteria, set the operator to `==` and the value to `0`. + +### Configuring the Modifier +You have configured the criteria, but now we need to modify the fact so that when you join again, the cinematic is not played. This can be done by clicking on the `+` icon in the inspector next to the modifier field. Then, you can select the fact you want to modify. For this tutorial, we will use the same fact as the criteria. Inside the modifier, set the operator to `=` and the value to `1`. + +Now your inspector should look like this: + +add-cinematic-fields + +## Adding the `Add Cinematic` Entry +Now we need to add the `Add Cinematic` entry to our sequence. This can be done by right-clicking on the `New On Player Join` entry and selecting `+ Link with ...`. Then, search for `Add Cinematic` and click on the + icon to add it to your sequence. Now your sequence page should look like this: + +Add-Cinematic + +Inside the `New Cinematic`, select the cinematic you want to trigger via the inspector at the page field. For this tutorial, we will use the `Tutorial_Cin` cinematic. + +## Result +Now, when a player joins the server for the first time, the cinematic will play. When the player joins again, the cinematic will not play. + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/index.mdx new file mode 100644 index 0000000000..54a2488d47 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/02-cinematics/index.mdx @@ -0,0 +1,63 @@ +--- +difficulty: Easy +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# Cinematics + +:::info[Before starting] +This guide assumes that you have already installed the [Basic Extension](../../02-getting-started/01-installation.mdx#basic-extension).\ +Also, make sure you have read the [layout](../../02-getting-started/02-layout.mdx) documentation and created a **cinematic** page. +::: + +In this tutorial, you will learn how to create and view cinematics in your interactions! + +## What are cinematics? +Cinematics are timed sequences of actions that can be played in your interactions. They are used to create cutscenes or other timed events. + +## Creating a cinematic +Let's get started by creating a simple camera cinematic. + +### Adding a camera cinematic +Firstly click on the + icon in the top right corner of the panel and search for `Add Camera Cinematic`. Add it to your page by clicking on the + icon. + + + +### Creating a segment +Now we need to add a segment to our track. You can do this by clicking on the `New Camera Cinematic` entry in your page and by operations clicking on `Add Segment`(1). + +Adding a camera cinematic segment + +After you create the segment, you can click on it (2). This opens the inspector of the segment. + +### Modifying the camera segment +In a camera cinematic segment, you have a path. Each path contains a list of locations in a world of your server. When multiple locations are specified on a path, the player will move between them. If only one is specified, the player will stay stationary. +To create a path, click on the + icon in the inspector at `path(0)`. + +To set a location in a path, you have 2 options: using the content mode or configuring it yourself. +#### Using the content mode +The content mode allows you to get the player's current location and fill in the fields for you. + + +#### Configuring it yourself +You can also configure the paths yourself. This can be done by opening the `Path #1` field. In there, you can configure the location of the path. These are: +* **World**: The world where the cinematic happens. +* **X**: The x coordinate of the location. +* **Y**: The y coordinate of the location. +* **Z**: The z coordinate of the location. +* **Pitch**: The pitch of the camera. +* **Yaw**: The yaw of the camera. + +**Duration**: The duration of the location to the next location in ticks. If not specified, the duration will be calculated based on the left-over duration.\ +For example, if you have a segment of *300* frames with 3 locations, and the 2nd location has a **duration** of *200* frames, the duration from the 1st to the 2nd location will be *100* ticks, and from the 2nd to the 3rd location, *200* ticks. + +Repeat this process to make more locations in the path. + +## result +For the result we are going to use the example for the duration. You can easily view your cinematic by running the command:\ + `/tw cinematic start (page name)` or adding an `Add cinematic` to a sequence page. + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/03-facts/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/03-facts/index.mdx new file mode 100644 index 0000000000..9b7510c0f6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/03-facts/index.mdx @@ -0,0 +1,140 @@ +--- +difficulty: Normal +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; +import Image from "@site/src/components/Image"; + +# Facts + +Facts are essentially variables. They store information that can be modified by other entries. All facts are numbers and are treated as such. + +The [`Basic Extension`](../../../adapters/BasicAdapter/BasicAdapter.mdx) encompasses numerous facts available for use. However, it's important to note that [`extensions`](../../../adapters/README.mdx) have the capability to further augment the array of available facts. + +## Why Use Facts? + +Facts play a crucial role in dynamic content creation and system behavior customization. Here are some reasons to consider using facts: + +- **Dynamic Quests:** Track player progress in quests by using facts to store and modify completion status. + +- **Customization:** Personalize player experiences by utilizing facts to adjust in-game parameters, such as difficulty levels or character attributes. + +- **Interactive Storytelling:** Enhance narrative elements by employing facts to remember player choices and actions, shaping the evolving story. + +- **Achievement Systems:** Implement achievement tracking by using facts to record specific milestones and accomplishments. + +### Types of facts + +Facts have two types: readable and writable. + +- **Readable Facts:** Used in the criteria of an entry. For example, checking if a player has a certain item in their inventory. +- **Writable Facts:** Used in modifiers to modify the fact's value. For instance, updating a player's quest progression. + +:::info +Some facts are both readable and writable. For example, the [permanent fact](../../../adapters/BasicAdapter/entries/fact/permanent_fact) can be used in both criteria and modifiers. +But some facts are only readable. For example, the [inventory item count fact](../../../adapters/BasicAdapter/entries/fact/inventory_item_count_fact) can only be used in criteria. +::: + +## Groups + +In a fact you can select a group. There are 3 types of groups: + +- **Global**: Sets a fact for all players. +- **World**: Sets a fact for all players in a specific world. +- **Player**: Sets a fact for a specific player. + +## Fields + +In some entries, there are fields that influence the way facts are handled. + +Criteria and modifiers fields + +### Criteria + +Criteria is the condition for an entry, e.g., `if fact = 10 then...`. It controls whether an entry will occur. + +Criteria field + +When using criteria, follow these steps: + +1. Select the fact to check. +2. Choose the operator. +3. Insert the value for the operator to check. + +### Modifiers + +Modifiers, as the name suggests, modify a fact. + +Modifier field + +When using modifiers, follow these steps: + +1. Select the fact to modify. +2. Select the operator. You can change the value directly (=) or add to it (+). +3. Insert the value for the operator to modify. + +:::warning +Modifiers only run when the entry is executed. +If the entry has criteria and **one of the criteria** is `false`, then the entry won't be executed, and the fact won't be modified. +::: + +## Tutorial + +To get you started with facts, we will use a permanent fact to track progression in a quest. + +1. Create a new page and select it as `static`. Give it the name `Playerprogress` +2. Click on the + icon and select `Add Permanent Fact`. Rename it to `Playerprogress` and give it a nice comment. + Static page button +3. Select the player group. +4. On the sequence page, click on an action. + - Set a **Criteria:** Check if `Playerprogress` == 0. + - Set a **Modifier:** If criteria are met, update `Playerprogress` to 1. +5. Create additional actions to represent different quest stages, modifying `Playerprogress` accordingly. + +## Examples + +There are many possibilities with the fact's system. Here are some examples: + + + + **Objective:** A player talks to an NPC and needs to gather items. + + **Fact Used:** + - **Readable Fact:** [Inventory Item Count](../../../adapters/BasicAdapter/entries/fact/inventory_item_count_fact) + + **Scenario:** + 1. The player talks to the NPC. + 2. Check the criteria using the Inventory Item Count Fact to verify if the player has the required items. + + + + **Objective:** Track a player's progression through different quest stages. + + **Fact Used:** + - **Writable Fact:** [Permanent Fact](../../../adapters/BasicAdapter/entries/fact/permanent_fact) + + **Scenario:** + 1. The player talks to an NPC (progression set to 1). + 2. Completes a specific action (progression set to 2). + 3. Finishes the quest (progression set to 3). + + + + **Objective:** See if a player has enough money to buy an item. + + **Fact Used:** + - **Readable Fact:** [Balance Fact](../../../adapters/VaultAdapter/entries/fact/balance_fact.mdx) + + **Scenario:** + 1. The player talks to an NPC. + 2. Check the criteria using the balance fact to see if the player has enough balance. + 3. If the player has enough balance, they can buy the item. + 4. If the player doesn't have enough balance, show a message to the player. + + + + +:::tip +To see all the available facts, check out the [Extensions section](../../../adapters/README.mdx). +::: diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/02-interacting.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/02-interacting.mdx new file mode 100644 index 0000000000..1b99e746bc --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/02-interacting.mdx @@ -0,0 +1,37 @@ +--- +difficulty: Easy +--- + +import EntrySearch from "@site/src/components/EntrySearch"; +import Image from "@site/src/components/Image"; + +# Interacting with an entity +:::info[Before starting] +It's best to first read [Entities & NPC's](./index.mdx) before starting this tutorial. +::: + +In this tutorial, you will learn how to interact with an entity. + +## Adding the entity interact event +First, we need to add the `Add On Entity Interact Event` entry to our sequence. This can be done by clicking on the + icon in the top right corner of the panel and searching for `Add On Entity Interact Event`. Add it to your page by clicking on the + icon. + + + +### Selecting the definition +Now inside the inspector of the `New Entity Interact Event` at the definition field, select the definition of the entity you want to interact with. (For this tutorial that will be Oliver) + +Entity Interact Event Fields + +## Adding the event. +Now we need to add an event that gets triggered when the player interacts with the entity (For this tutorial we will use a spoken). Right-click on the `New Entity Interact Event` entry and click on `+ link with ...` to open the search menu. Search for `Add Spoken` and add it to the page. + + + +Set the speaker to the oliver definition and text field to `Hello I am Oliver.`. + +## Result +You can now publish your pages, and in-game, it should look like this when interacting with Oliver: + +:::warning[Mc-Auth servers] +So while writing this page the auth servers of minecraft are down and i couldn't access my tw server. So i can't provide a video of the result as of right now.(This will hopefully be fixed soon) +::: diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/index.mdx new file mode 100644 index 0000000000..220c1554e1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/04-entity-extension/index.mdx @@ -0,0 +1,103 @@ +--- +difficulty: Normal +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; +import EntrySearch from "@site/src/components/EntrySearch"; + +# Entities & NPC's +:::danger[Entity Extension] +You must have installed the Entity Extension before starting this tutorial. +::: + + +Any good storytelling requires other characters to be present in the world. +Typewriter has its own entity extension, that allows you to create and control entities like NPCs. + +## What is the Entity Extension? +The Entity Extension is a feature that makes it easy to spawn, manage and control entities like NPCs on your server. + +These are some of the features: +- **Defining an entity**: create a new entity with custom data and spawn it in the world, which can be re-used across multiple servers +- **Conditional showing of entities**: have an NPC appear only when the player is in a certain quest stage +- **Activities**: add custom actions to an entity, like walking to a tavern at night or patrolling the city + +## Creating an NPC +Entities in typewriter have to be defined an a `Manifest` page. +This is done by creating a new definition of the type of entity you want to use. +This definition can be spawned many times using an entity instance. + +An **NPC** is a special type of entity that is a player and has a nametag and indicator above their head. +This makes it easy to use and is likely to be the most common type of entity you will use. + +### Creating a new NPC definition +To create an NPC definition, you have to create a manifest page and define the NPC inside it. Here is an example of how to define an NPC: + +Start off by clicking **add page**. +Here, choose the **Manifest** type in the dropdown menu and name the page whatever you want. +In this example, we will name it `Characters`. + +If you need more information on how to create a page, see the [Layout](../../02-getting-started/02-layout.mdx) section. + +Next, you have to define the NPC. Click the `Add Entry` button or the `+` in the top right corner, +then search for `Add NPC Definition`, and add it to the page. You should now see the entry on your screen. + + + +# Customizing the entity +Now that you have defined the entity, you can customize it to your liking. + +## Setting the entity's name +Let's rename the entry to `Oliver Definition`. + +To change the display name above the head, we can change the `Display Name` field to `Oliver`. + +Rename Entry and Entity + +## Setting the NPC's skin + +To change the skin of the NPC, we can change the `Skin` field. +These take in a texture and a signature. +These need to be generated by Minecraft and are not easily editable. +Luckily, Typewriter provides a way to generate these for you from a player uuid or an url. + +Let's change olivers skin to this one I found on [NameMC](https://s.namemc.com/i/b2319359e305d7a2.png) +We can click on the chain icon to the right of the `Skin` field to `Fetch from url`. + +Then, we can enter the url `https://s.namemc.com/i/b2319359e305d7a2.png` and click `Fetch`. + + + +## Creating an npc instance +We have now defined the NPC, but it has not yet spawned in the world. +To spawn the entity, we have to add an `Entity Instance` entry. +Each type of entity has a different `Entity Instance` definition. +For NPCs, we can use the `NPC Instance` definition. + + + +First, select the NPC definition you want to spawn from the `Definition` dropdown. +In this case, we will select the `Oliver Definition` we just created. +This will act as a base for our NPC instance + +Definition Select + +Finally, we need to set the spawn location of the NPC. +This is the location where the NPC will always spawn when the first player may view the NPC. + +We can do this with the content mode selector and fetch the location of your logged-in Minecraft client. + + + + +That's it! +You have now created an entity definition and spawned an instance of it in the world. +You can now see the NPC in-game with the custom name, skin and data you provided! + +The same principle applies to all other entities, such as **Cows** or **Villagers**. +You can define and spawn any entity you want using the Entity Extension; just make sure the type of your definition matches the type of instance you want to spawn. + +:::info +Since not all entities have a definition or instance, when you need to create an entity with a type that has no definition or instance, request it from the [Discord](https://discord.gg/HtbKyuDDBw). +::: diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/01-dynamic-objectives.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/01-dynamic-objectives.mdx new file mode 100644 index 0000000000..27fe66c011 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/01-dynamic-objectives.mdx @@ -0,0 +1,37 @@ +--- +difficulty: Normal +--- + +import Player from "@site/src/components/Player"; +import EntryDisplay from "@site/src/components/EntryDisplay"; + +# Dynamic Objectives + +In some quests, the objectives need to progress forward and backwards based on the player's state. +For example, the player needs to be in a certain region to continue. + +:::info[Before starting] +It's best to first read [Questing](./index.mdx) before starting this tutorial. +As this tutorial builds upon the quest tutorial. +::: + +## Adding the objective + +For our quest, we want to change the objective based on if the player has the magnet boots equipped. + +Since objectives are `Audience` entries, we can use the various `Audience` entries to show and hide the objectives. + +To expand our quest, we will have the following objectives: + +- When the player has not found the magnet boots, the objective is to __find a way to cross the chasm__. +- When the player has found the magnet boots, the objective is to __equip the magnet boots__. +- When the player has equipped the magnet boots, the objective is to __walk across the chasm__. + + + +This is what it looks like to play the quest: + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/02-entity-objectives.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/02-entity-objectives.mdx new file mode 100644 index 0000000000..624bb08db8 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/02-entity-objectives.mdx @@ -0,0 +1,195 @@ +--- +difficulty: Hard +--- + +import Player from "@site/src/components/Player"; +import EntryDisplay from "@site/src/components/EntryDisplay"; +import EntrySearch from "@site/src/components/EntrySearch"; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Figure from "@site/src/components/Figure"; + +# Entity Objectives + +:::info[Before starting] +We recommend reading the [Questing](./index.mdx) guide before starting this tutorial, as it provides essential background knowledge for understanding [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx). +::: + +In this tutorial, you'll learn how to create and implement [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx), a powerful feature that enhances player guidance to Non-Player Characters (NPCs) in your Minecraft Server. + +## Understanding [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) + +[Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) are a specific quest objective that involve player interaction with NPCs. +These objectives add depth to Typewriters questing system by creating meaningful encounters and dialogues with characters in your world. +They can range from simple conversations to complex multi-stage interactions that drive your game's narrative forward. + +Key benefits of using [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) include: +- Creating more immersive and interactive quest lines +- Guiding players through the game world in a natural, story-driven manner +- Providing visual cues to help players identify important NPCs + +## Story Overview + +Let's create a quest called _**"A Sip of Memories"**_ that showcases the use of entity objectives. This quest will guide the player through interactions with different NPCs to complete a heartwarming task. + + + + + **Location**: Town square, near a large oak tree + + **Character**: Elias Thornberry (elderly man) + + **Player Actions**: + - Approach and speak to Elias + - Listen to his reminiscence about the tree and his late wife, Rosemary + - Receive the request to fetch water + + **Outcome**: Quest initiated, player directed fetch water from Mira + + **Note**: Players can interact with Mira before meeting Elias, establishing her character and the kiosk's presence in the game world. + + + + + **Location**: Mira's kiosk in the town + + **Character**: Mira Swiftwater (kiosk owner) + + **Player Actions**: + - Approach Mira's kiosk + - Request water for Elias + - Learn the price (20 emeralds) + + **Possible Outcomes**: + 1. If player has 20 emeralds: + - Purchase water + - Proceed to Stage 4 + 2. If player lacks 20 emeralds: + - Cannot purchase water + - Proceed to Stage 3 + + **Note**: If players return to Elias without water, he responds kindly, maintaining the option to complete the quest later. + + + + + **Location**: Various locations in the game world + + **Player Actions**: + - Explore and complete other tasks to earn emeralds + - Return to Mira's kiosk once 20 emeralds are collected + + **Outcome**: Player can purchase water and proceed to Stage 4 + + **Note**: If players return to Elias without water, he responds kindly, maintaining the option to complete the quest later. + + + + + **Location**: Back at the oak tree in the town square + + **Character**: Elias Thornberry + + **Player Actions**: + - Return to Elias + - Give him the water + + **Outcome**: + - Elias expresses gratitude + - Shares another memory + - Gives player a small reward + - Quest completed + + + + + **Location**: Oak tree in the town square + + **Character**: Elias Thornberry + + **Player Actions**: + - Return to Elias at any time + - Listen to one of his random monologues about memories, the tree, or life observations + + **Outcome**: Adds depth to the game world and Elias's character + + + +## Configuring the Quest + +### Setup Pages +To bring our quest to life, we need to configure several pages that define the NPCs, their dialogues, and the quest structure. +These pages work together to create a cohesive quest experience: + + + +## Interact Entity Objective + +[Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) are a powerful tool that allows you to create objectives that require players to interact with specific NPCs. +Here's how to set it up: + + + +In our _**"A Sip of Memories"**_ quest, we use multiple Interact Entity Objectives for different NPCs at various stages. +For example, we have separate objectives for talking to Elias at the beginning of the quest and when the player returns with the water. + +### Visual Indicators + +The [Interact Entity Objective](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) comes with built-in visual cues to guide players: + +- When an objective is active for an NPC, an indicator appears above their head. +- The indicator changes based on whether the player has the quest tracked or not. + +
+
+
+
+ +You can customize these indicators using [Snippets](../../05-helpfull-features/05-snippets.mdx) to match your game's aesthetic. + +## Interact Entity Objectives Path Stream + +To further assist players in navigating your game world, you can implement the [Interact Entity Objectives Path Stream](../../../adapters/EntityAdapter/entries/quest/interact_entity_objectives_path_stream.mdx). +This feature creates a visual path, guiding players to NPCs with active [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) to those NPCs. + + + +Key features of the Path Stream: +- Automatically generates paths to all NPCs with active [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx). +- Only shows paths for objectives in currently tracked quests. +- Helps players navigate complex game environments more easily. + +Here's a visual demonstration of the Path Stream in action: + + + +## Quest Setup + +To bring all these elements together and create our _**"A Sip of Memories"**_ quest, we use the following quest configuration: + + + +This configuration ties together the quest stages and objectives. + +## Quest Demo + +To see how all these elements come together in practice, check out this demonstration of the _**"A Sip of Memories"**_ quest: + + + +This demo showcases: +- How players interact with NPCs and their dialogues +- The visual indicators guiding players to objectives +- The flow of the quest from start to finish + +By implementing [Interact Entity Objectives](../../../adapters/EntityAdapter/entries/quest/interact_entity_objective.mdx) in your quests, you can create rich, interactive experiences that helps guide players to where they need to go. diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/05-displaying_quests.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/05-displaying_quests.mdx new file mode 100644 index 0000000000..da743d7667 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/05-displaying_quests.mdx @@ -0,0 +1,57 @@ +--- +difficulty: Normal +--- + +import EntryDisplay from "@site/src/components/EntryDisplay"; + +# Displaying Quests + +Now that we've created our quest, we want to display it to the player. +First, we need to track the quest. + +## Quest Tracking + +Tracking a quest is for displaying the quest progress to the player. +Other entries can use the tracked quest to display information to the player. + +:::warning Important +While many quests can be active at the same time, only **one** quest can be tracked at a time. +::: + +You can manually track a quest with the `/tw quest track ` command. +Or with the [Track Quest Action](../../../adapters/BasicAdapter/entries/action/track_quest.mdx) entry. + +Additionally, Typewriter will automatically track quests when the quest becomes active. +Or when a objective becomes active and has a higher priority than the currently tracked quest. + +## Placeholders + +There are a few custom placeholders that can be used to display information to the player. + +| Placeholder | Description | +| ----------- | ----------- | +| `%typewriter_tracked_quest%` | The name of the tracked quest. | +| `%typewriter_tracked_objectives%` | A list of the objecteves of the tracked quest joined by a comma. | + +## Sidebar + +If Typewriter is managing your sidebar, you can use the [Objective Lines Entry](../../../adapters/BasicAdapter/entries/quest/objective_lines.mdx) to display the objectives of the tracked quest. + +A possible setup for the sidebar could be: + + + + + +## Quest Status Changes +# +You can also display when a quest becomes active or is completed. +Maybe by showing a title or particles. + +A possible setup for this could be: + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_manifest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_manifest.json new file mode 100644 index 0000000000..f6df85d87e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_manifest.json @@ -0,0 +1 @@ +{"name":"quest_display_manifest","type":"manifest","entries":[{"id":"eu3cBGGKI7jqs5O","name":"has_tracked_quest","children":["H94avRuFMUIwZK3"],"quest":"","type":"tracked_quest_audience"},{"id":"H94avRuFMUIwZK3","name":"questing_sidebar","children":["0S0PaOtaLYQlbNN"],"title":"%typewriter_tracked_quest%","type":"sidebar"},{"id":"0S0PaOtaLYQlbNN","name":"has_tracked_objective","children":["Nyg3yeElQAaAWpe","7myq30aJVcJlwRN"],"type":"tracked_objective_audience"},{"id":"Nyg3yeElQAaAWpe","name":"objectives_heading","lines":"\nObjectives:","type":"simple_lines"},{"id":"7myq30aJVcJlwRN","name":"objectives_line","format":"- ","type":"objective_lines"},{"id":"TpFOvWQDc27EEkp","name":"not_in_cinematic","children":["eu3cBGGKI7jqs5O"],"cinematic":"","inverted":true,"type":"cinematic_audience"}],"chapter":"","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_sequence.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_sequence.json new file mode 100644 index 0000000000..87ad9ce15b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/display/quest_display_sequence.json @@ -0,0 +1 @@ +{"name":"quest_display_sequence","type":"sequence","entries":[{"id":"8BXrheU2vFG38BA","name":"quest_start_event","triggers":["qGlJLpsPpM6x7LJ"],"quest":"","type":"quest_start_event"},{"id":"qGlJLpsPpM6x7LJ","name":"show_quest_start_title","criteria":[],"modifiers":[],"triggers":["SAcC4X4qEvgafu7"],"title":"Quest Started","subtitle":"%typewriter_tracked_quest%","durations":{"enabled":true,"value":{"fadeIn":200,"stay":2000,"fadeOut":200}},"type":"show_title"},{"id":"SAcC4X4qEvgafu7","name":"quest_sound","criteria":[],"modifiers":[],"triggers":[],"sound":{"soundId":{"value":"ui.toast.challenge_complete","type":"default"},"soundSource":{"type":"self","entryId":"","location":{"world":"","x":0.0,"y":0.0,"z":0.0,"yaw":0.0,"pitch":0.0}},"track":"VOICE","volume":0.5,"pitch":1.0},"type":"play_sound"},{"id":"xcmaNZW71iV5Q0I","name":"quest_complete_event","triggers":["c9HHVfUsUGyaTMm"],"quest":"","type":"quest_complete_event"},{"id":"c9HHVfUsUGyaTMm","name":"show_quest_complete_title","criteria":[],"modifiers":[],"triggers":["1sszZLEqSuHzAX3"],"title":"Quest Completed","subtitle":"","durations":{"enabled":true,"value":{"fadeIn":200,"stay":2000,"fadeOut":200}},"type":"show_title"},{"id":"1sszZLEqSuHzAX3","name":"spawn_totem_particles","criteria":[],"modifiers":[],"triggers":["SAcC4X4qEvgafu7"],"location":{"enabled":false,"value":{"world":"","x":0.0,"y":0.0,"z":0.0,"yaw":0.0,"pitch":0.0}},"particle":"TOTEM_OF_UNDYING","count":100,"offsetX":1.0,"offsetY":1.0,"offsetZ":1.0,"type":"spawn_particles"}],"chapter":"","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_demo.webm b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_demo.webm new file mode 100644 index 0000000000..45423d3bf2 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_demo.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_manifest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_manifest.json new file mode 100644 index 0000000000..c06d047f50 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/dynamic_objectives/quest_manifest.json @@ -0,0 +1 @@ +{"name":"quest_manifest","type":"manifest","entries":[{"id":"Pd5ZLgeKRhbylic","name":"great_chasm","children":["bPMuR8nqwrqipmv","Xjnqaoj38lvi6EY","bMNFap5GFd9qF7i"],"displayName":"Great Chasm","activeCriteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":">=","value":1}],"completedCriteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":"==","value":2}],"type":"quest"},{"id":"jE0Rv5oUP8kXNGV","name":"find_a_way_across","quest":"Pd5ZLgeKRhbylic","children":[],"criteria":[],"display":"Find a way across the chasm","priorityOverride":{"enabled":false,"value":0},"type":"objective"},{"id":"bPMuR8nqwrqipmv","name":"doesnt_have_boots_in_inv","children":["jE0Rv5oUP8kXNGV"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"inverted":true,"type":"item_in_inventory_audience"},{"id":"WAPOjKPyl6pqXsu","name":"equip_boots","quest":"Pd5ZLgeKRhbylic","children":[],"criteria":[],"display":"Equip the Magnet Boots","priorityOverride":{"enabled":false,"value":0},"type":"objective"},{"id":"VHdXCXYVko3QtsY","name":"bridge_to_the_unkown","quest":"Pd5ZLgeKRhbylic","children":[],"criteria":[],"display":"Bridge to the Unknown","priorityOverride":{"enabled":false,"value":0},"type":"objective"},{"id":"Xjnqaoj38lvi6EY","name":"has_boots_equiped","children":["VHdXCXYVko3QtsY"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"slot":36,"inverted":false,"type":"item_in_slot_audience"},{"id":"bMNFap5GFd9qF7i","name":"has_boots_in_inv","children":["PMoUaufdl0NLFPo"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"inverted":false,"type":"item_in_inventory_audience"},{"id":"PMoUaufdl0NLFPo","name":"doesnt_have_boots_equiped","children":["WAPOjKPyl6pqXsu"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"slot":36,"inverted":true,"type":"item_in_slot_audience"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_manifest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_manifest.json new file mode 100644 index 0000000000..474fb04d8b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_manifest.json @@ -0,0 +1,291 @@ +{ + "name": "entities_manifest", + "type": "manifest", + "entries": [ + { + "id": "AcOFr8lbHZETBry", + "name": "elias_thornberry_definition", + "displayName": "Elias", + "sound": { + "soundId": { + "type": "default", + "value": "" + }, + "soundSource": { + "type": "self", + "entryId": "", + "location": { + "world": "", + "x": 0.0, + "y": 0.0, + "z": 0.0, + "yaw": 0.0, + "pitch": 0.0 + } + }, + "track": "MASTER", + "volume": 0.0, + "pitch": 0.0 + }, + "skin": { + "texture": "ewogICJ0aW1lc3RhbXAiIDogMTcyMTA1NzQ2MDI4NCwKICAicHJvZmlsZUlkIiA6ICJmYjNhZTU0OTU3ODQ0MGVlODIzODJlMDY2MzlhYTkzMiIsCiAgInByb2ZpbGVOYW1lIiA6ICJXZWx0ZXJ3ZWlnaHQiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNDZmYmRjZWIwMGUyNDZiZTE2OGMzNTQwZmIzYTU1NGNjMTdhYTA5YzQ5MWU0YTJhNzk3YjFhZWE5YjkwYTkyMyIKICAgIH0KICB9Cn0=", + "signature": "njHqpvYV3et2z2+EjmE7nTLiTeQQj1cvNhL+ziOayuSuTQGlaSCi8IsYJoT6GHTGuM4D7yR+4rKH3oli7bIFM459wrTYMC0vkr795maHVZscs25vdrhCY+hSipFiThh58DoQwCqQcKZFQR3SrpiAJ9xUYySR78mVsm0teQsH7CnJcKQUqqxT8WUJIUjZ3hNyWBITA8ip/M0p+lEKPJHS+xLXq8ey9YLt/XGbidpmWIySRhv/ldvN0Jl2y5RqYnRPy/KoEz+vEUlN/ZLY1MTJ2OEtySD6YZX0ZSufRlFAnQwQVWxPW3IuWCtd4GilecjDcUtHmj71R/izn5bi7BR0xaYX7+O6sOBi0o+k82AsRoHLOerrVPRFey30EnkxePxtlZ5S/e9CnvUM84ird1KptH8f31erBY5lcxjt4hWhzTB3y45S9VPNqhe4DQujYIzFSmSb9ny6RjnaeeGiTK9+3sUyxTct54Jof6uOYAXqDcdS3uu23ZmHoYuXPH6K+2UIdUHKB6Zk42sHz6WEPOpbkV3V0wTPv3JcuuOCFNWL4PZENJxBWO4h2YIY7QtEyMlsHZQEmwAAvlywnnfO6CneINPc4UTVoP0t2m/HXXdmLMXhE8/Lu0lXJJMxgKjxkecvzqH56fJhpDge4yFHpUK8Sk5cCH551Ed9WBixMXuPuWA=" + }, + "data": [ + "mtcm1rjAOOHcG7r" + ], + "type": "npc_definition" + }, + { + "id": "mtcm1rjAOOHcG7r", + "name": "sitting_pose", + "pose": "SITTING", + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "pose_data" + }, + { + "id": "jviw7FqXAFSsd48", + "name": "in_dialogue_activity", + "dialogueIdleDuration": 0, + "talkingActivity": "p13voY1XPGnXb6m", + "idleActivity": "3JKNV8s5iTtHao1", + "type": "in_dialogue_activity" + }, + { + "id": "Dmu2PWuCg4oS6hI", + "name": "look_close_activity", + "type": "look_close_activity" + }, + { + "id": "3JKNV8s5iTtHao1", + "name": "random_look_activity", + "pitchRange": { + "start": -35.0, + "end": 20.0 + }, + "yawRange": { + "start": 130.0, + "end": 210.0 + }, + "duration": 3000, + "type": "random_look_activity" + }, + { + "id": "tPa4ZPpK4N0G5cM", + "name": "maria_swiftwater_instance", + "definition": "3vqwGstGrMpDUAo", + "spawnLocation": { + "world": "Hub", + "x": -34.46, + "y": 79.06, + "z": -52.65, + "yaw": 1.04, + "pitch": 3.47 + }, + "data": [], + "activity": "BS6cIazS9dJ814S", + "type": "npc_instance" + }, + { + "id": "3vqwGstGrMpDUAo", + "name": "maria_swiftwater_definition", + "displayName": "<#9735e8>Maria", + "sound": { + "soundId": { + "type": "default", + "value": "" + }, + "soundSource": { + "type": "self", + "entryId": "", + "location": { + "world": "", + "x": 0.0, + "y": 0.0, + "z": 0.0, + "yaw": 0.0, + "pitch": 0.0 + } + }, + "track": "MASTER", + "volume": 0.0, + "pitch": 0.0 + }, + "skin": { + "texture": "ewogICJ0aW1lc3RhbXAiIDogMTcyMTExODM2NDYyNiwKICAicHJvZmlsZUlkIiA6ICI4ZjE5NjJmYzE4NzY0MDU3ODYxMmIxMzNjODE4YmY5OSIsCiAgInByb2ZpbGVOYW1lIiA6ICJOaW9uXzkiLAogICJzaWduYXR1cmVSZXF1aXJlZCIgOiB0cnVlLAogICJ0ZXh0dXJlcyIgOiB7CiAgICAiU0tJTiIgOiB7CiAgICAgICJ1cmwiIDogImh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWE5NjdhNjFjMDg3MmVmNDNiMjJhYzU1OTJlOTU3Mzk5YzU5ZGQxOWVhMDAwZDYyYmM5YmRmOGNmMmY1ZDM1OCIsCiAgICAgICJtZXRhZGF0YSIgOiB7CiAgICAgICAgIm1vZGVsIiA6ICJzbGltIgogICAgICB9CiAgICB9CiAgfQp9", + "signature": "TqloYFKifgw6vQratkajayyKoDWIBG+gpU2F+bFVWUafyDRHzkRQE1IZmuY/0uMsoEapJjjVAacN/YAcWxw/iIghqOQK/X6T9iWXJXoVftg2IjOgUe+sXUo+2PEMB1sAr9b252i2W6EkwkduyIXcymWBeflXHsAC+vyK62v7yUEspLRD+cKMdXocr0w0UwTK1xNuJX5EoxFo10A40HO6YDaDxU1/X6HaZSZxer0isYHkYzqwiEti1U5op5a1neJ8W3OgXwRgcI5+0la0QrjL8i7L30+jVargFP5F74vCggdOREMxS66rXsZOfRTz9KbH5Eo2zGKRzHT8tHCeItB97MUu86KjeHiWMKuWWDvWbxbxsQUM0ryFJgR8oG9O7an+1jVfII3iIm5xDdH+l13beCqxV2xwYsBHng0+oo2CGOpozjbQC1+8cXY3QjrM7i2uFqhP9/GglBWU7SjQMRKuRQ8mcjCN4CJRmvDCyt/a0cd6qNd1I68p7c+Nb6JF7qlETgMmTlxNpZwd528/Xnr6Pzgecg4cNbgzwh8+uIb5MESEGQKz+FLtVwt43tOiHMMIq9p+t5GIO00tMknKnevG/dqHXaWtiTz6rh9GFbzELAPoP6nW36vDZ3PiS2/hKpal+4snuG37lqJdgcxXY7MNivw5e828/5XFdJwmDazd10c=" + }, + "data": [], + "type": "npc_definition" + }, + { + "id": "BS6cIazS9dJ814S", + "name": "in_dialogue_activity", + "dialogueIdleDuration": 0, + "talkingActivity": "Dmu2PWuCg4oS6hI", + "idleActivity": "MzC9ILeqFEIPT5H", + "type": "in_dialogue_activity" + }, + { + "id": "MzC9ILeqFEIPT5H", + "name": "random_look_activity", + "pitchRange": { + "start": -18.0, + "end": 18.0 + }, + "yawRange": { + "start": -180.0, + "end": 180.0 + }, + "duration": 2500, + "type": "random_look_activity" + }, + { + "id": "2Wjil5zlHcKzU9P", + "name": "elias_thornberry_instance", + "definition": "AcOFr8lbHZETBry", + "spawnLocation": { + "world": "Hub", + "x": -54.61, + "y": 89.5, + "z": -32.55, + "yaw": 173.43, + "pitch": 7.56 + }, + "children": [ + "a9OQEzw5Hk2Rsum", + "yNq4m0pHSVSfXUP" + ], + "activity": "jviw7FqXAFSsd48", + "type": "shared_advanced_entity_instance" + }, + { + "id": "c7HNrsy4eLc1Pqr", + "name": "not_in_cinematic_audience", + "children": [ + "tPa4ZPpK4N0G5cM", + "2Wjil5zlHcKzU9P" + ], + "cinematic": "", + "inverted": true, + "type": "cinematic_audience" + }, + { + "id": "a9OQEzw5Hk2Rsum", + "name": "given_water", + "children": [ + "1r7fvLqgxRg4zpq" + ], + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 3 + } + ], + "inverted": false, + "type": "criteria_audience" + }, + { + "id": "1r7fvLqgxRg4zpq", + "name": "holding_water_bottle", + "equipment": { + "MAIN_HAND": { + "material": { + "enabled": true, + "value": "POTION" + }, + "amount": { + "enabled": false, + "value": 0 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + } + }, + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "equipment_data" + }, + { + "id": "yNq4m0pHSVSfXUP", + "name": "drank_water", + "children": [ + "QQrZGqo0Nuea0gj" + ], + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 4 + } + ], + "inverted": false, + "type": "criteria_audience" + }, + { + "id": "QQrZGqo0Nuea0gj", + "name": "holding_empty_bottle", + "equipment": { + "MAIN_HAND": { + "material": { + "enabled": true, + "value": "GLASS_BOTTLE" + }, + "amount": { + "enabled": false, + "value": 0 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + } + }, + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "equipment_data" + }, + { + "id": "p13voY1XPGnXb6m", + "name": "look_close_activity", + "type": "look_close_activity" + } + ], + "chapter": "demo.entityobj", + "priority": 0, + "version": "0.5.0" +} diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_quest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_quest.json new file mode 100644 index 0000000000..47411bc1d1 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_quest.json @@ -0,0 +1,148 @@ +{ + "name": "quest_manifest", + "type": "manifest", + "entries": [ + { + "id": "ghUaNzjRrSLwdI2", + "name": "a_sip_of_memories", + "children": [], + "displayName": "A Sip of Memories", + "activeCriteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": ">=", + "value": 1 + } + ], + "completedCriteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 4 + } + ], + "type": "quest" + }, + { + "id": "4y4yN22rNFwER3M", + "name": "get_20_emeralds", + "quest": "ghUaNzjRrSLwdI2", + "children": [], + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + }, + { + "fact": "RC6Fv2csie02PNp", + "operator": "==", + "value": 1 + }, + { + "fact": "zWgxPj2JicOMfoU", + "operator": "<", + "value": 20 + } + ], + "display": "Get 20 Emeralds", + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "objective" + }, + { + "id": "xrV3NLd6hgENXW9", + "name": "talk_to_maria", + "children": [], + "quest": "ghUaNzjRrSLwdI2", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + }, + { + "fact": "RC6Fv2csie02PNp", + "operator": "==", + "value": 0 + } + ], + "entity": "3vqwGstGrMpDUAo", + "overrideDisplay": { + "enabled": true, + "value": "Talk to " + }, + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "interact_entity_objective" + }, + { + "id": "G7y3zj9hdc1jlLX", + "name": "bring_emeralds_to_maria", + "children": [], + "quest": "ghUaNzjRrSLwdI2", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + }, + { + "fact": "RC6Fv2csie02PNp", + "operator": "==", + "value": 1 + }, + { + "fact": "zWgxPj2JicOMfoU", + "operator": ">=", + "value": 20 + } + ], + "entity": "3vqwGstGrMpDUAo", + "overrideDisplay": { + "enabled": true, + "value": "Bring 20 Emeralds to " + }, + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "interact_entity_objective" + }, + { + "id": "aEFSeviLWJ6OL1E", + "name": "talk_to_elias", + "children": [], + "quest": "ghUaNzjRrSLwdI2", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": ">=", + "value": 2 + }, + { + "fact": "VilBumfzrgOnk9l", + "operator": "<=", + "value": 3 + } + ], + "entity": "AcOFr8lbHZETBry", + "overrideDisplay": { + "enabled": true, + "value": "Talk to " + }, + "priorityOverride": { + "enabled": false, + "value": 0 + }, + "type": "interact_entity_objective" + } + ], + "chapter": "demo.entityobj", + "priority": 0, + "version": "0.5.0" +} diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_sequence.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_sequence.json new file mode 100644 index 0000000000..a3b19b18ac --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_sequence.json @@ -0,0 +1,928 @@ +{ + "name": "dialogue_sequence", + "type": "sequence", + "entries": [ + { + "id": "l6OdGb9rCxTwUSK", + "name": "greetings_before_quest", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 0 + } + ], + "modifiers": [], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, hello there, young one. Beautiful day, isn't it?", + "options": [ + { + "text": "It is. What are you looking at, sir?", + "criteria": [], + "modifiers": [], + "triggers": [ + "WVBAx7HLd4c6PnQ" + ] + }, + { + "text": "Hello. Are you alright? You seem lost in thought", + "criteria": [], + "modifiers": [], + "triggers": [ + "EGcHrZ3ZrTTTZvw" + ] + } + ], + "duration": 30, + "type": "option" + }, + { + "id": "PWETukurQaSL3ny", + "name": "interact_with_elias_thornberry", + "triggers": [ + "l6OdGb9rCxTwUSK", + "lA5QfbTEgmP690r", + "2PXP3R7iO84N9cz", + "xW94cYZkOlYSkvr" + ], + "definition": "AcOFr8lbHZETBry", + "type": "entity_interact_event" + }, + { + "id": "WVBAx7HLd4c6PnQ", + "name": "im_am_looking_at", + "criteria": [], + "modifiers": [], + "triggers": [ + "9ulg3J09dP8Iwu3" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Ah, this old tree here. It's been standing longer than I have, you know. *chuckles softly* My Rosemary and I, we used to go here and look at the fish swim under the tree every Sunday. Those were the days...", + "duration": 30, + "type": "spoken" + }, + { + "id": "EGcHrZ3ZrTTTZvw", + "name": "lost_in_thoughs", + "criteria": [], + "modifiers": [], + "triggers": [ + "9ulg3J09dP8Iwu3" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, I'm quite alright, thank you. Just reminiscing. You see that grand oak there? It holds so many memories. My dear Rosemary and I, we'd sit here for hours, watching the world go by.", + "duration": 30, + "type": "spoken" + }, + { + "id": "ODcrfPBJUmycNBu", + "name": "remembering_wife", + "criteria": [], + "modifiers": [], + "triggers": [ + "fZeG5zaXlafd0mJ" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Indeed she was. The love of my life for over fifty years. *sighs* She's gone now, but sitting here, I can almost hear her laugh through the breeze.", + "duration": 30, + "type": "spoken" + }, + { + "id": "Aj4vgMbWTaE7xSw", + "name": "fetch_some_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "OtHu0Lkxc8xT04L" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "That we did, that we did. You know, all this talking has made me quite parched. I don't suppose you could fetch an old man some water, could you? I'd go myself, but these legs aren't what they used to be.", + "duration": 30, + "type": "spoken" + }, + { + "id": "OtHu0Lkxc8xT04L", + "name": "fetch_some_water", + "criteria": [], + "modifiers": [], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "text": "Could fetch an old man some water?", + "options": [ + { + "text": "Of course, I'd be happy to help", + "criteria": [], + "modifiers": [], + "triggers": [ + "KNkeeeAE1sEY37v" + ] + }, + { + "text": "I'm sorry, I'm quite busy", + "criteria": [], + "modifiers": [], + "triggers": [ + "KjHTk507ymvfLyi" + ] + } + ], + "duration": 0, + "type": "option" + }, + { + "id": "KNkeeeAE1sEY37v", + "name": "accepted_quest", + "criteria": [], + "modifiers": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "=", + "value": 1 + } + ], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, bless you, young one. There's a kiosk just down the path. %typewriter_3vqwGstGrMpDUAo% runs it - she's a bit brisk, but she'll sort you out. And don't worry if you can't manage it, I'll be right here enjoying the view.", + "duration": 30, + "type": "spoken" + }, + { + "id": "KjHTk507ymvfLyi", + "name": "denied_quest", + "criteria": [], + "modifiers": [], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "text": "No worries, young one. I understand. Perhaps another time. You run along now, and enjoy this beautiful day.", + "duration": 30, + "type": "spoken" + }, + { + "id": "sXl1Mn0byQ0Dhq3", + "name": "welcome_during_elias", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + } + ], + "modifiers": [], + "triggers": [ + "8o0KRSyDGvDKHQ3" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Welcome to Swiftwater's. What can I get you?", + "duration": 30, + "type": "spoken" + }, + { + "id": "9ulg3J09dP8Iwu3", + "name": "your_wife", + "criteria": [], + "modifiers": [], + "triggers": [ + "ODcrfPBJUmycNBu" + ], + "text": "Rosemary? Was she your wife?", + "duration": 30, + "type": "spoken", + "speaker": "IOJScZCrj9hHirt" + }, + { + "id": "fZeG5zaXlafd0mJ", + "name": "sorry_for_your_loss", + "criteria": [], + "modifiers": [], + "triggers": [ + "Aj4vgMbWTaE7xSw" + ], + "text": "I'm sorry for your loss. It sounds like you had wonderful times together.", + "duration": 30, + "type": "spoken", + "speaker": "IOJScZCrj9hHirt" + }, + { + "id": "8o0KRSyDGvDKHQ3", + "name": "looking_for_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "a6lyktr2DZGOcf5" + ], + "text": "Hello, I'm looking for some water.", + "duration": 30, + "type": "spoken", + "speaker": "IOJScZCrj9hHirt" + }, + { + "id": "a6lyktr2DZGOcf5", + "name": "for_elias_hun", + "criteria": [], + "modifiers": [], + "triggers": [ + "3A3bRthXiRUKCHk" + ], + "text": "Water, huh? Let me guess, old %typewriter_AcOFr8lbHZETBry% sent you? *doesn't wait for an answer* Right, that'll be 20 Emeralds.", + "duration": 30, + "type": "spoken", + "speaker": "3vqwGstGrMpDUAo" + }, + { + "id": "3A3bRthXiRUKCHk", + "name": "buy_water_options", + "criteria": [], + "modifiers": [], + "triggers": [], + "speaker": "3vqwGstGrMpDUAo", + "text": "Right, that'll be 20 Emeralds.", + "options": [ + { + "text": "20 Emeralds? That seems a bit steep for water.", + "criteria": [], + "modifiers": [], + "triggers": [ + "Fpkv5rFiTZMEjoY" + ] + }, + { + "text": "Alright, here you go.", + "criteria": [ + { + "fact": "zWgxPj2JicOMfoU", + "operator": ">=", + "value": 20 + } + ], + "modifiers": [], + "triggers": [ + "Xhj2fII6iwWdXkn" + ] + }, + { + "text": "Oh, I'm afraid I don't have enough Emeralds.", + "criteria": [ + { + "fact": "zWgxPj2JicOMfoU", + "operator": "<", + "value": 20 + } + ], + "modifiers": [], + "triggers": [ + "vmX4zEXw09FQLAb" + ] + } + ], + "duration": 0, + "type": "option" + }, + { + "id": "Fpkv5rFiTZMEjoY", + "name": "bit_to_much", + "criteria": [], + "modifiers": [], + "triggers": [ + "3A3bRthXiRUKCHk" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Look, it's not just any water. This is Premium Spring Water from the Misty Mountains. They have to fly it all the way here which is a 4 month journey. Plus, do you see any other shops around here? Supply and demand, kid.", + "duration": 30, + "type": "spoken" + }, + { + "id": "Xhj2fII6iwWdXkn", + "name": "ill_buy", + "criteria": [], + "modifiers": [], + "triggers": [ + "CGHusjKgDV931W4" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Great! Here's your Premium Spring Water. Make sure %typewriter_AcOFr8lbHZETBry% drinks it slowly, will you? Last thing we need is him getting the hiccups again.", + "duration": 30, + "type": "spoken" + }, + { + "id": "vmX4zEXw09FQLAb", + "name": "cant_buy", + "criteria": [], + "modifiers": [ + { + "fact": "RC6Fv2csie02PNp", + "operator": "=", + "value": 1 + } + ], + "triggers": [], + "speaker": "3vqwGstGrMpDUAo", + "text": "Of course you don't. Listen, I'm not running a charity here. Come back when you've got the Emeralds. And a word of advice? Don't promise things you can't deliver.", + "duration": 30, + "type": "spoken" + }, + { + "id": "GC5Psb7xxNrKPsK", + "name": "found_some_emeralds", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + }, + { + "fact": "RC6Fv2csie02PNp", + "operator": "==", + "value": 1 + } + ], + "modifiers": [], + "triggers": [ + "Q5Emcb9EXz50rBW", + "nZTOLrLmHlBHtfG" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Well, well, look who's back. Found some Emeralds in your couch cushions, did you?", + "duration": 30, + "type": "spoken" + }, + { + "id": "Q5Emcb9EXz50rBW", + "name": "got_the_emeralds", + "criteria": [ + { + "fact": "zWgxPj2JicOMfoU", + "operator": ">=", + "value": 20 + } + ], + "modifiers": [], + "triggers": [ + "CGHusjKgDV931W4" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Excellent. Here's your Premium Spring Water. Tell Elias it's our finest quality. And remind him we have a loyalty program - buy five, get the sixth half off. *smirks* Never hurts to plan ahead.", + "duration": 30, + "type": "spoken" + }, + { + "id": "nZTOLrLmHlBHtfG", + "name": "doesnt_have_emeralds", + "criteria": [ + { + "fact": "zWgxPj2JicOMfoU", + "operator": "<", + "value": 20 + } + ], + "modifiers": [], + "triggers": [], + "speaker": "3vqwGstGrMpDUAo", + "text": "Still coming up short, huh? Look, I admire your persistence, but this isn't a 'buy now, pay later' establishment. Come back when your pockets are a little heavier, alright?", + "duration": 30, + "type": "spoken" + }, + { + "id": "CGHusjKgDV931W4", + "name": "take_emeralds", + "criteria": [], + "modifiers": [], + "triggers": [ + "kOewUqXPRgsmHyi" + ], + "item": { + "material": { + "enabled": true, + "value": "EMERALD" + }, + "amount": { + "enabled": true, + "value": 20 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + }, + "type": "remove_item" + }, + { + "id": "kOewUqXPRgsmHyi", + "name": "new_give_item", + "criteria": [], + "modifiers": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "=", + "value": 2 + } + ], + "triggers": [], + "item": { + "material": { + "enabled": true, + "value": "POTION" + }, + "amount": { + "enabled": false, + "value": 0 + }, + "name": { + "enabled": true, + "value": "Premium Spring Water" + }, + "lore": { + "enabled": true, + "value": "\nHigh quality water from Misty Mountains" + }, + "flags": { + "enabled": true, + "value": [ + "HIDE_ATTRIBUTES" + ] + }, + "nbt": { + "enabled": false, + "value": "" + } + }, + "type": "give_item" + }, + { + "id": "sY5taaCOrYH7tIA", + "name": "interact_with_maria_swiftwatter", + "triggers": [ + "k7OFgJmx5LytM8R", + "sXl1Mn0byQ0Dhq3", + "GC5Psb7xxNrKPsK" + ], + "definition": "3vqwGstGrMpDUAo", + "type": "entity_interact_event" + }, + { + "id": "k7OFgJmx5LytM8R", + "name": "welcome_before_elias", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 0 + } + ], + "modifiers": [], + "triggers": [ + "SNQABJy1phnZ37d" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Welcome to Swiftwater's. What'll it be?", + "duration": 30, + "type": "spoken" + }, + { + "id": "SNQABJy1phnZ37d", + "name": "just_looking_around", + "criteria": [], + "modifiers": [], + "triggers": [ + "WhQWuazww4Y3MHd" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Just looking around. What do you sell here?", + "duration": 30, + "type": "spoken" + }, + { + "id": "WhQWuazww4Y3MHd", + "name": "what_i_sell", + "criteria": [], + "modifiers": [], + "triggers": [ + "QUzb5L2fHlvoIj2" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "We've got all sorts of supplies. Snacks, trinkets, the usual tourist trap fare. Our specialty is Premium Spring Water from the Misty Mountains. Very popular, especially with the locals.", + "duration": 30, + "type": "spoken" + }, + { + "id": "QUzb5L2fHlvoIj2", + "name": "premium_spring_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "zfXumOMF0MKabh0" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Premium Spring Water? What makes it special?", + "duration": 30, + "type": "spoken" + }, + { + "id": "zfXumOMF0MKabh0", + "name": "mysticals_of_the_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "0zV8EbjvBLysO4I" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Oh, it's got minerals you can't find anywhere else. Some say it has rejuvenating properties. *leans in, lowering her voice* Between you and me, I think it's just really good marketing. But hey, people love it, especially old %typewriter_AcOFr8lbHZETBry%.", + "duration": 30, + "type": "spoken" + }, + { + "id": "0zV8EbjvBLysO4I", + "name": "whos_elias", + "criteria": [], + "modifiers": [], + "triggers": [ + "E6MoIkS4GDPtogO" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Who's %typewriter_AcOFr8lbHZETBry%?", + "duration": 30, + "type": "spoken" + }, + { + "id": "E6MoIkS4GDPtogO", + "name": "elias_is", + "criteria": [], + "modifiers": [], + "triggers": [ + "bMNNIN3ukCzLMKJ" + ], + "speaker": "3vqwGstGrMpDUAo", + "text": "Local character. Sweet old man, always sits by the big oak tree in the square. He's my best customer for the water. *pauses, then adds with a smirk* Mostly because he always forgets to bring his own, I think.", + "duration": 30, + "type": "spoken" + }, + { + "id": "bMNNIN3ukCzLMKJ", + "name": "thanks_for_information", + "criteria": [], + "modifiers": [], + "triggers": [ + "yHm5IugOo7VpZNQ" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Thanks for the information.", + "duration": 30, + "type": "spoken" + }, + { + "id": "yHm5IugOo7VpZNQ", + "name": "thats_what_im_here_for", + "criteria": [], + "modifiers": [], + "triggers": [], + "speaker": "3vqwGstGrMpDUAo", + "text": "That's what I'm here for. Well, that and separating tourists from their Emeralds. *winks* Come back anytime!", + "duration": 30, + "type": "spoken" + }, + { + "id": "lA5QfbTEgmP690r", + "name": "return_without_water", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 1 + } + ], + "modifiers": [], + "triggers": [ + "xHc48xGQprp3e9w" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, hello again, young one! Did you manage to fetch some water?", + "duration": 30, + "type": "spoken" + }, + { + "id": "xHc48xGQprp3e9w", + "name": "have_no_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "N91YZrUd7thh1Is" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "I'm sorry, I couldn't get the water yet.", + "duration": 30, + "type": "spoken" + }, + { + "id": "N91YZrUd7thh1Is", + "name": "sharing_apple_for_juice", + "criteria": [], + "modifiers": [], + "triggers": [ + "l38hfTxy9bJC75R" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, don't you worry about that. It's the thought that counts, isn't it? *chuckles softly* You know, this reminds me of the time Rosemary and I were on a picnic and forgot to bring any drinks. We ended up sharing an apple for its juice. *sighs happily* Sometimes the best memories come from little mishaps", + "duration": 30, + "type": "spoken" + }, + { + "id": "l38hfTxy9bJC75R", + "name": "ill_try_to_get_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "sRDC56E4CdkADFQ" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "That's a nice way to look at it. I'll try to get the water for you soon.", + "duration": 30, + "type": "spoken" + }, + { + "id": "sRDC56E4CdkADFQ", + "name": "youre_very_kind", + "criteria": [], + "modifiers": [], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "text": "You're very kind. But please, don't trouble yourself too much. I'm quite content here with my memories and this beautiful view. *gestures to the tree* Though, if you do happen to pass by %typewriter_3vqwGstGrMpDUAo%'s kiosk again, a sip of water would be lovely.", + "duration": 30, + "type": "spoken" + }, + { + "id": "2PXP3R7iO84N9cz", + "name": "returns_with_water", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "==", + "value": 2 + } + ], + "modifiers": [], + "triggers": [ + "OsH6nxSP2K8hHBT" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Well, hello there! Oh, is that... did you bring some water?", + "duration": 30, + "type": "spoken" + }, + { + "id": "OsH6nxSP2K8hHBT", + "name": "heres_water", + "criteria": [], + "modifiers": [], + "triggers": [ + "5a6MR8Goyw5Pd2L", + "vqWGG5QXhU881Ii" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Yes, here you go.", + "duration": 30, + "type": "spoken" + }, + { + "id": "5a6MR8Goyw5Pd2L", + "name": "bless_you", + "criteria": [], + "modifiers": [], + "triggers": [ + "7iHmwe1sbt8rEVl" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Oh, bless you, child. You're as kind as you are thoughtful.\nYou know, Rosemary always said that the simplest gestures often mean the most.", + "duration": 30, + "type": "spoken" + }, + { + "id": "7iHmwe1sbt8rEVl", + "name": "glad_could_help", + "criteria": [], + "modifiers": [], + "triggers": [ + "KvEB0MHE0KK4FVs" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "I'm glad I could help. How are you feeling now?", + "duration": 30, + "type": "spoken" + }, + { + "id": "vqWGG5QXhU881Ii", + "name": "give_water", + "criteria": [], + "modifiers": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "=", + "value": 3 + } + ], + "triggers": [], + "item": { + "material": { + "enabled": true, + "value": "POTION" + }, + "amount": { + "enabled": false, + "value": 0 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + }, + "type": "remove_item" + }, + { + "id": "KvEB0MHE0KK4FVs", + "name": "reminiscing", + "criteria": [], + "modifiers": [], + "triggers": [ + "MuZaNGKpIG4zuYW" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Much better, thank you. You know, sitting here, enjoying this water, it reminds me of the picnics Rosemary and I used to have. We'd sit under this very tree, sharing a drink, watching the world go by. In a way, it feels like she's still here with me.", + "duration": 30, + "type": "spoken" + }, + { + "id": "MuZaNGKpIG4zuYW", + "name": "sounds_wonderful", + "criteria": [], + "modifiers": [], + "triggers": [ + "AW1f53HQNpwfNef" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "It sounds like you have wonderful memories together.", + "duration": 30, + "type": "spoken" + }, + { + "id": "AW1f53HQNpwfNef", + "name": "small_reward", + "criteria": [], + "modifiers": [], + "triggers": [ + "n4XMVN9JP8IxjLr", + "pG3ex8dteVJiP1z" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Indeed I do. And now, thanks to your kindness, I have a new pleasant memory to add to them. *reaches into his pocket* Here, I want you to have this. It's not much, but it's a little token of my appreciation.", + "duration": 30, + "type": "spoken" + }, + { + "id": "n4XMVN9JP8IxjLr", + "name": "loves_company", + "criteria": [], + "modifiers": [], + "triggers": [ + "IT0z6WR3K0T2DCf" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "Feel free to come by and chat anytime. An old man like me always enjoys good company, especially from thoughtful young folks like yourself.", + "duration": 30, + "type": "spoken" + }, + { + "id": "IT0z6WR3K0T2DCf", + "name": "nice_meeting", + "criteria": [], + "modifiers": [], + "triggers": [ + "gRjcE6pDbMzf15F" + ], + "speaker": "IOJScZCrj9hHirt", + "text": "Thank you, %typewriter_AcOFr8lbHZETBry%. It was nice meeting you.", + "duration": 30, + "type": "spoken" + }, + { + "id": "gRjcE6pDbMzf15F", + "name": "take_care_now", + "criteria": [], + "modifiers": [], + "triggers": [ + "otGuCmHIRbsfBBw" + ], + "speaker": "AcOFr8lbHZETBry", + "text": "The pleasure was all mine. Take care now, and remember to appreciate the little things in life. They often turn out to be the big things in the end.", + "duration": 30, + "type": "spoken" + }, + { + "id": "pG3ex8dteVJiP1z", + "name": "give_small_rewards", + "criteria": [], + "modifiers": [], + "triggers": [], + "item": { + "material": { + "enabled": true, + "value": "EMERALD" + }, + "amount": { + "enabled": true, + "value": 30 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + }, + "type": "give_item" + }, + { + "id": "xW94cYZkOlYSkvr", + "name": "returns_after_quest", + "criteria": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": ">=", + "value": 3 + } + ], + "modifiers": [], + "triggers": [], + "speaker": "AcOFr8lbHZETBry", + "messages": [ + "Hello there! You caught me lost in thought. I was pondering how this tree <#4CAF50>starts anew each spring, despite its age. Perhaps there's hope for us old timers yet, eh? *winks*", + "Well, if it isn't my young friend! You know, sitting here, I sometimes feel like I'm looking at a <#FF9800>living history book. This tree's seen more than all of us combined. Makes you wonder what secrets it holds.", + "Oh, hello! I was just thinking about how this old tree has been a <#6079fa>constant in my life. Seasons come and go, but it remains. There's comfort in that, don't you think? Ah, listen to me wax philosophical!", + "Hello there! You know, I've been watching the <#8BC34A>birds in this tree all morning. Reminds me of how Rosemary loved birdwatching. She could name every species just by their song. Remarkable woman, she was.", + "Ah, good to see you! I was just thinking, this tree must have <#ff5f84>countless stories to tell if it could talk. Then again, maybe its silence is a story in itself. What do you think? Oh, never mind an old man's ramblings.", + "Hello, young one! I was just reminiscing about the time Rosemary and I had a picnic here during a meteor shower. We counted stars until dawn. Funny how some memories stay so vivid, isn't it?", + "Well, look who's here! You know, I've been sitting here thinking about how <#c352d7>times change. This tree's seen it all, hasn't it? Yet here it stands, strong as ever. There's a lesson in that, I think.", + "Oh, it's you! Say, have you ever noticed how the bark on this old oak forms <#FF4500>patterns? Sometimes I swear I can see faces in there. Rosemary used to say I had an overactive imagination. *chuckles* Maybe she was right.", + "Ah, hello there! I was just thinking about the time Rosemary and I danced under this very tree during the Harvest Festival. The leaves seemed to dance with us, you know. Magical evening, that was.", + "You know, the kindness you showed me with that water - it gives me <#4CAF50>hope for the future. It's nice to know there are still good-hearted people in this world.", + "I found an <#1fa0ed>old photo of Rosemary and me sitting right here on this bench. We haven't changed a bit! Well, maybe I'm a tad grayer. *chuckles*", + "Did you know this tree is <#FFD700>older than our village? It's seen so much history. Sometimes I wonder what stories it could tell if it could speak.", + "I was remembering our village's summer festival from years ago. The entire square was decorated, and this old tree was draped in <#ee85df>ribbons. Oh, how Rosemary loved to dance under those colorful streamers.", + "Have you ever noticed how the breeze sounds <#4DB6AC>different through leaves than through pine needles? It's like nature's own symphony, playing just for us.", + "I had the strangest dream last night. Rosemary and I were dancing under this tree, but its leaves were made of <#50C878>Emeralds! Imagine that - an <#50C878>Emerald tree. Quite the sight it was!", + "You know, young one, every day I sit here, I notice something new about this old tree. Life's funny that way - always something fresh to discover if you look closely enough." + ], + "duration": 30, + "type": "random_spoken" + }, + { + "id": "otGuCmHIRbsfBBw", + "name": "finish_quest", + "criteria": [], + "modifiers": [ + { + "fact": "VilBumfzrgOnk9l", + "operator": "=", + "value": 4 + } + ], + "triggers": [], + "type": "simple_action" + } + ], + "chapter": "demo.entityobj", + "priority": 0, + "version": "0.5.0" +} diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_static.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_static.json new file mode 100644 index 0000000000..9fed4e6cdd --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/ent_obj_static.json @@ -0,0 +1,56 @@ +{ + "name": "facts_static", + "type": "static", + "entries": [ + { + "id": "zWgxPj2JicOMfoU", + "name": "emerald_count_fact", + "comment": "", + "group": "", + "item": { + "material": { + "enabled": true, + "value": "EMERALD" + }, + "amount": { + "enabled": false, + "value": 0 + }, + "name": { + "enabled": false, + "value": "" + }, + "lore": { + "enabled": false, + "value": "" + }, + "flags": { + "enabled": false, + "value": [] + }, + "nbt": { + "enabled": false, + "value": "" + } + }, + "type": "inventory_item_count_fact" + }, + { + "id": "VilBumfzrgOnk9l", + "name": "elias_quest", + "comment": "0: Not taked to elias\n1: Accepted Quest\n2: Purchased water\n3: Brought back Water\n4: Finished quest", + "group": "", + "type": "permanent_fact" + }, + { + "id": "RC6Fv2csie02PNp", + "name": "talked_to_maria", + "comment": "0: Didn't talk to maria\n1: Talked to maria", + "group": "", + "type": "permanent_fact" + } + ], + "chapter": "demo.entityobj", + "priority": 0, + "version": "0.5.0" +} diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_tracked.png b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_tracked.png new file mode 100644 index 0000000000..9321e09564 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_tracked.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_untracked.png b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_untracked.png new file mode 100644 index 0000000000..79f5eba5fd Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/npc_indicator_untracked.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/path_stream.webm b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/path_stream.webm new file mode 100644 index 0000000000..0af23a370a Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/path_stream.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/quest_demo.webm b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/quest_demo.webm new file mode 100644 index 0000000000..c39b9b5be8 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/entity_objectives/quest_demo.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_demo.webm b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_demo.webm new file mode 100644 index 0000000000..660f1d0f27 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_demo.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_manifest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_manifest.json new file mode 100644 index 0000000000..bea69f2e16 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_manifest.json @@ -0,0 +1 @@ +{"name":"quest_manifest","type":"manifest","entries":[{"id":"Pd5ZLgeKRhbylic","name":"great_chasm","children":["jE0Rv5oUP8kXNGV"],"displayName":"Great Chasm","activeCriteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":">=","value":1}],"completedCriteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":"==","value":2}],"type":"quest"},{"id":"jE0Rv5oUP8kXNGV","name":"find_a_way_across","quest":"Pd5ZLgeKRhbylic","children":[],"criteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":"==","value":1}],"display":"Find a way across the chasm","priorityOverride":{"enabled":false,"value":0},"type":"objective"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_sequence.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_sequence.json new file mode 100644 index 0000000000..d7d5dbe981 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_sequence.json @@ -0,0 +1 @@ +{"name":"quest_sequence","type":"sequence","entries":[{"id":"Q9omvGCsucdh47J","name":"start_great_chasm_quest","criteria":[{"fact":"fTtB7yHVJ6Dkuha","operator":"==","value":0}],"modifiers":[{"fact":"fTtB7yHVJ6Dkuha","operator":"=","value":1}],"triggers":[],"type":"simple_action"},{"id":"L49XUKfH0QNIg3B","name":"chasm_falling","triggers":["Q9omvGCsucdh47J"],"location":{"world":"Hub","x":14.59,"y":13.0,"z":-1.0,"yaw":0.0,"pitch":0.0},"range":6.0,"type":"on_player_near_location"},{"id":"lvfUWBWJ1rBi1Xi","name":"crossed_chasm","triggers":["VBrgiSxxsxMUHaJ"],"location":{"world":"Hub","x":18.5,"y":31.5,"z":-2.42,"yaw":9.39,"pitch":90.0},"range":2.0,"type":"on_player_near_location"},{"id":"VBrgiSxxsxMUHaJ","name":"finish_great_chasm_quest","criteria":[],"modifiers":[{"fact":"fTtB7yHVJ6Dkuha","operator":"=","value":2}],"triggers":[],"type":"simple_action"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_static.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_static.json new file mode 100644 index 0000000000..add556be17 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/quest_static.json @@ -0,0 +1 @@ +{"name":"quest_static","type":"static","entries":[{"id":"fTtB7yHVJ6Dkuha","name":"great_chasm_progress","comment":"Values correspond to the followig\n0: Not started\n1: Started Quest\n2: Completed Quest","group":"","type":"permanent_fact"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_demo.webm b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_demo.webm new file mode 100644 index 0000000000..8bedc57ada Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_demo.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_manifest.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_manifest.json new file mode 100644 index 0000000000..50737077af --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_manifest.json @@ -0,0 +1 @@ +{"name":"setup_manifest","type":"manifest","entries":[{"id":"XpY3yOpqHxDxjXO","name":"in_chasm_region","children":["rntH84NopqfBJhY"],"region":"chasm","type":"region_audience"},{"id":"rntH84NopqfBJhY","name":"apply_velocity_timer","duration":100,"onTimer":"b2HoAxknenQmObk","type":"timer_audience"},{"id":"JsgWYfeDQJoX8FZ","name":"equiping","onEnter":"n0EeZMjEiuzCpuj","onExit":"vnManTMtCWadmjf","type":"trigger_audience"},{"id":"ZZDFrrY9vmVFcjs","name":"has_magnet_boots","children":["JsgWYfeDQJoX8FZ"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":1},"name":{"enabled":false,"value":"Magnet Boots"},"lore":{"enabled":false},"flags":{"enabled":false},"nbt":{"enabled":false,"value":"{Damage:0}"}},"slot":36,"inverted":false,"type":"item_in_slot_audience"},{"id":"3kcCUIhmlc6G1Ge","name":"resting_boots_definition","displayName":"Magnet Boots","sound":{"soundId":{"type":"default","value":""},"soundSource":{"type":"self","entryId":"","location":{"world":"","x":0.0,"y":0.0,"z":0.0,"yaw":0.0,"pitch":0.0}},"track":"MASTER","volume":0.0,"pitch":0.0},"data":["vVW0NVyxvlxxVtw"],"type":"item_display_definition"},{"id":"vVW0NVyxvlxxVtw","name":"item_data","item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"priorityOverride":{"enabled":false,"value":0},"type":"item_data"},{"id":"hDMNGCGkAxmQ0JS","name":"resting_boots_instance","definition":"a0uVsVvTIuQ1YQH","spawnLocation":{"world":"Hub","x":4.3,"y":31.3,"z":-2.7,"yaw":-35.0,"pitch":-20.0},"children":[],"activity":"","type":"shared_advanced_entity_instance"},{"id":"a0uVsVvTIuQ1YQH","name":"resting_boots_hitbox","baseEntity":"3kcCUIhmlc6G1Ge","width":0.7,"height":0.7,"type":"hit_box_definition","offset":{"y":-0.2,"x":0.2,"z":0.2}},{"id":"qDIkHI06Swb9fhh","name":"doesnt_have_magnent_boots_equipped","children":["XpY3yOpqHxDxjXO"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"slot":36,"inverted":true,"type":"item_in_slot_audience"},{"id":"En1sdPhaTuV1voM","name":"doesnt_have_boots_in_inv","children":["hDMNGCGkAxmQ0JS"],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":false,"value":""},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"inverted":true,"type":"item_in_inventory_audience"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_sequence.json b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_sequence.json new file mode 100644 index 0000000000..d58807af99 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/assets/index/setup_sequence.json @@ -0,0 +1 @@ +{"name":"setup_sequence","type":"sequence","entries":[{"id":"b2HoAxknenQmObk","name":"apply_velocity","criteria":[],"modifiers":[],"triggers":[],"force":{"x":0.0,"y":0.08,"z":-0.5},"type":"apply_velocity"},{"id":"nyuwNT3xHYSCOs9","name":"chasm_falling","triggers":["9xMcCanddoY52uK"],"location":{"world":"Hub","x":14.59,"y":13.0,"z":-1.0,"yaw":-9.44,"pitch":-35.2},"range":6.0,"type":"on_player_near_location"},{"id":"9xMcCanddoY52uK","name":"respawn_at_chasm","criteria":[],"modifiers":[],"triggers":[],"location":{"world":"Hub","x":11.03,"y":31.0,"z":-1.95,"yaw":-89.64,"pitch":-0.37},"type":"teleport"},{"id":"n0EeZMjEiuzCpuj","name":"equipmet_sound","criteria":[],"modifiers":[],"triggers":[],"sound":{"soundId":{"value":"block.beacon.activate","type":"default"},"soundSource":{"type":"self","entryId":"","location":{"world":"","x":0.0,"y":0.0,"z":0.0,"yaw":0.0,"pitch":0.0}},"track":"AMBIENT","volume":0.7,"pitch":1.0},"type":"play_sound"},{"id":"vnManTMtCWadmjf","name":"unequipment_sound","criteria":[],"modifiers":[],"triggers":[],"sound":{"soundId":{"value":"block.beacon.deactivate","type":"default"},"soundSource":{"type":"self","entryId":"","location":{"world":"","x":0.0,"y":0.0,"z":0.0,"yaw":0.0,"pitch":0.0}},"track":"AMBIENT","volume":0.7,"pitch":1.0},"type":"play_sound"},{"id":"PXnnfkihgxhyDXy","name":"on_click_boots","triggers":["7q2OPyecxE1nt4j"],"definition":"a0uVsVvTIuQ1YQH","type":"entity_interact_event"},{"id":"7q2OPyecxE1nt4j","name":"give_boots","criteria":[],"modifiers":[],"triggers":[],"item":{"material":{"enabled":true,"value":"IRON_BOOTS"},"amount":{"enabled":false,"value":0},"name":{"enabled":true,"value":"Magnet Boots"},"lore":{"enabled":false,"value":""},"flags":{"enabled":false,"value":[]},"nbt":{"enabled":false,"value":""}},"type":"give_item"}],"chapter":"demo.quest","priority":0,"version":"0.5.0"} \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/index.mdx new file mode 100644 index 0000000000..0dd0f00c3e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/05-questing/index.mdx @@ -0,0 +1,111 @@ +--- +difficulty: Hard +--- + +import Player from "@site/src/components/Player"; +import EntryDisplay from "@site/src/components/EntryDisplay"; +import EntryNodeInspector from "@site/src/components/EntryInspector"; +export const questPages = [ + require("./assets/index/quest_manifest.json"), + require("./assets/index/quest_sequence.json"), + require("./assets/index/quest_static.json"), +]; + +# Questing + +Any interactive storytelling game is going to have quests. +Quests are designed to guide players through the story and provide a sense of progression. + +In Typewriter, quests are purely a visual addition. +While not required to create interactive stories, they can effectively guide players through the narrative. + +## Setting up the Story + +To add quests to your story, we first need a story to work with. +For this guide, we'll create the following quest: + +1. The player encounters a chasm where the wind is too strong to walk across the bridge. +2. The player needs to find a way to cross the chasm. +3. The player discovers magnet boots nearby. +4. When wearing the magnet boots, the player can walk across the chasm. + +Here's the setup for the quest: + + + +Here is a demo of the setup described above: + + +## Creating the Quest + +As you can see in the setup, Typewriter doesn't require questing components to create interactive stories. Unlike most quest plugins where quests are the main feature, in Typewriter, they serve as a visual addition – a way to guide players through the story and provide a sense of progression. + +To create a quest, we first need to create a manifest page. +This page will contain all the entries that make up the quest. + +### How Quests Work + +In Typewriter, two types of entries are used to create quests: `Quest` Entry and `Objective` Entry. + +The `Quest` Entry defines the name of the quest. +The `Objective` Entry defines the objectives of the quest. + +### Quest Entry + +The `Quest` Entry is used to define the quest. +A quest can be in one of three states: +- Inactive: The quest is neither active nor completed. +- Active: The quest is active and not yet completed by the player. +- Completed: The quest has been completed. + +There are three important fields for the `Quest` Entry: +- `Display Name`: The name of the quest. +- `Active Criteria`: The criteria that must be met for the quest to become active. +- `Completed Criteria`: The criteria that must be met for the quest to be considered completed. + +The state of the quest is determined as follows: +1. If all the `Completed Criteria` are met: The quest is completed. +2. If all the `Active Criteria` are met: The quest is active. +3. Otherwise, the quest is inactive. + + +For our quest, we'll use a `Permanent Fact` to hold the state of the quest for the player. +We create the following `Quest` Entry: + + + +### Objective Entry + +The `Objective` Entry defines a task that needs to be completed as part of the quest. +There are various types of objectives, allowing Typewriter to display them in different ways. + +While Quests have three different states, Objectives only have two: +- Hidden: The objective is not visible to the player. +- Visible: The objective is visible to the player. + +These states are influenced by both the `Criteria` field and their `Audience` parent entries. + +For now, we'll only use the `Criteria` field to determine if the objective is visible or not. + +Let's set up the objective for our quest like this: + + + +## Finishing the Quest +For the final step, we need to change the `Permanent Fact` entry to `1` when the player first falls down the chasm and to `2` when they reach the other side. + + + +Here's a demo of the finished quest: + + +## Quest Tracking + +We've seen that `Quests` can be in one of 3 states. +Additionally, we can **Track** one quest at a time. +Tracking a quest is used for displaying the quest progress to the player. + +To learn more about quest display, check out the [Displaying Quests Guide](05-displaying_quests.mdx). diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/06-road-network/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/06-road-network/index.mdx new file mode 100644 index 0000000000..c6184de132 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/06-road-network/index.mdx @@ -0,0 +1,123 @@ +--- +difficulty: Normal +--- + +import EntrySearch from '@site/src/components/EntrySearch'; +import Player from '@site/src/components/Player'; +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import Image from "@site/src/components/Image"; +import Admonition from '@theme/Admonition'; + +# Road Network +:::info[Before starting] +This guide assumes that you have already installed the [Basic Extension](../../02-getting-started/01-installation.mdx#basic-extension).\ +Also, make sure you have read the [layout](../../02-getting-started/02-layout.mdx) documentation and created a **static** page. +::: + +Road Networks are essential if you want to make NPCs move around your map or let the player follow a path. In this guide, we will show you how to create a road network and how to use it in your story. + +## What is the road network +The road network is an internal graph structure that TypeWriter uses to efficiently calculate paths between two distant points. + +## Creating a road network +First, we need to add a `Base Road Network` entry to our page. To add it to our page, click on the + icon in the top right corner of the panel and search for `base road network` then add it to your page by clicking on the + icon. + + + +### Opening the content mode +In the `Base Road Network` entry in the inspector, click the blue camera icon next to the ArtifactId field to open the content mode. + +### Adding a node +Now that we have opened the content mode, we need to add a node. Nodes are points in a world that can be connected to each other using edges. To add a node, in your hotbar select the diamond and right-click it. This will open the node editor. To exit the menu of the node, click the end crystal. + + +### Creating the path +To create a path, you will always need 2 nodes. So create 2 nodes and then select the redstone from your hotbar and right-click it. Now it should look a bit like this: + + +Now you have created a path. You can expand a road network with unlimited nodes and create paths between them. +:::tip[Node placement] +It is recommended that you create nodes at the beginning and end of a road or path in your world. This is to save resources on loading and recalculating the edges. +::: + +### Editing a node +When in the node editor, you have 4 options: + + + #### Why is their radius? + When performing pathfinding from node A, all nodes within a **30-block** radius will be checked, for example, nodes B, C, D, E, F, and G. If it finds that the path to node C requires passing through nodes B radius, it will stop calculating the path to C. This is because the pathfinding avoids paths that need to skip nodes like B. + + road-network radius explanation + + #### How to use? + To change the radius of a node, select the sculk sensor from your hotbar and right-click. + :::warning[Node click] + When right-clicking an item, you must not point your cursor at the node you are editing. This will open the content mode and not trigger the event. + ::: + + Then, with your scroll wheel, you can change the radius of a node. + + + + + #### Why remove an edge? + Removing an edge can be useful when you want a path to skip a node or to make a path one-way only. + + #### How to use? + To remove an edge, select the redstone from your hotbar and right-click it on the node you want to remove the edge from. + + + :::warning[Recalculate] + You must recalculate the edges using the redstone from your hotbar after adding or removing a negative node + ::: + + + #### One way path + To make it one way only, you should, instead of just right-clicking, also hold shift. This will make the edge one-way only. + + + + + #### Why add a fast travel connection? + Fast travel connections are used to make a path teleport the NPC to another node instead of needing to walk to it. + + #### How to use? + To add a fast travel connection, select the emerald from your hotbar and right-click it on the node you want it to teleport to. + + + + #### One way fast travel + To make it one way only, you should, instead of just right-clicking, also hold shift. This will make the fast travel one-way only. + + + To remove a node, select the redstone block from your hotbar and right-click it. + :::warning[Node click] + When right-clicking an item, you must not point your cursor at the node you are editing. This will open the content mode and not trigger the event. + ::: + + + +### Negative Nodes +Sometimes you want pathfinding to not go via a certain path. For example, when you have a place where the pathfinding thinks it can jump down or up 1 block but shouldn't, you can add a negative node to prevent this.\ +Here is an example: + + + + + + + + + +#### How to add a negative node? +You can add a negative node by selecting the netherite ingot from your hotbar in the content mode and right-clicking it. +:::warning[Recalculate] +You must recalculate the edges using the redstone from your hotbar after adding or removing a negative node +::: + +### Highlighting nodes +When you have a lot of nodes, it can be hard to see which nodes are connected to each other. To make this easier, you can highlight the nodes that are connected to each other. To do this, select the glowstone from your hotbar and right-click it. + +## Ending +Now you have learned how to successfully set up the road network. diff --git a/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/_category_.yml b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/_category_.yml new file mode 100644 index 0000000000..2cb46ba66d --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/03-creating-stories/_category_.yml @@ -0,0 +1 @@ +label: Creating Stories diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-blacksmith-hut.svg b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-blacksmith-hut.svg new file mode 100644 index 0000000000..25108409ff --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-blacksmith-hut.svg @@ -0,0 +1,172 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut.svg b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut.svg new file mode 100644 index 0000000000..3d795c7144 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut.svg @@ -0,0 +1,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_2.svg b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_2.svg new file mode 100644 index 0000000000..a7b527ccae --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_2.svg @@ -0,0 +1,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_3.svg b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_3.svg new file mode 100644 index 0000000000..f7ae59154e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_3.svg @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_4.svg b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_4.svg new file mode 100644 index 0000000000..1c5e20f55e --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/a-village-hut_4.svg @@ -0,0 +1,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/manifest.riv b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/manifest.riv new file mode 100644 index 0000000000..b6cf10ae79 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/assets/manifest.riv differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/index.mdx new file mode 100644 index 0000000000..8255711c15 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/03-Manifest/index.mdx @@ -0,0 +1,46 @@ +--- +difficulty: Easy +--- + +import RiveBoard from "@site/src/components/RiveBoard"; + +# Manifest Entries + +In Typewriter, there are multiple types of entries, the main one `Sequence Entries`, these are `Dialogue Entries`, `Event Entries`, and `Action Entries`. The next major type of entry is the `Manifest Entry`. While `Sequence Entries` are imperative, `Manifest Entries` are declarative. Let's explore the difference between these two approaches and how they work. + +## Then vs When + +### Then (`Sequence entries`) +The "Then" logic, represented by `Sequence Entries`, works like a set of instructions: "Do this, then do that, then do this other thing." It's like a sideways directed graph, where each step leads to the next in a linear fashion. + +Example: Let's consider a Minecraft boss bar that needs to be displayed and updated as a player moves through a village. + +With the "Then" logic, you would: +1. Show the boss bar when the player enters the village +2. Update the boss bar text to "Welcome to the village!" +3. Update the boss bar text to "Check out the blacksmith!" when the player enters the blacksmith's building +4. Update the boss bar text back to "Welcome to the village!" when the player exits the blacksmith's building +5. Hide the boss bar when the player leaves the village + +### When (`Manifest Entries`) +The "When" logic, represented by `Manifest Entries`, defines conditions and specifies what should happen when those conditions are met. It's like a tree structure, where different branches represent different conditions and their corresponding actions. + +Example: Using the same village scenario, with the "When" logic, you would: + - When the player is in the village + - Show the boss bar with the text "Welcome to the village!" + - When the player is in the blacksmith's building + - Update the boss bar text to "Check out the blacksmith!" + +In this approach, you define the conditions under which an action should occur, rather than specifying a linear sequence of steps. +Suppose you wanted to add more buildings to the village and have different messages displayed when the player enters each building. +Doing this with the "Then" logic would incur a lot of repetitive entries, while with the "When" logic, you can simply add more conditions and actions and Typewriter will figure out what to display based on the player's location. + +## Interactive Visualization + +To better understand the difference between "Then" and "When" logic, let's explore an interactive visualization. +Try moving your cursor over the village and blacksmith's building to see how the boss bar changes based on the player's location. + +On the bottom you will see how the "Then" and "When" logic is represented in a directed graph and a tree structure respectively. + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/04-concepts/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/index.mdx new file mode 100644 index 0000000000..6045455f38 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/04-concepts/index.mdx @@ -0,0 +1,4 @@ +# Concepts +:::info +This section is currently being written! If you want to help us out with writing this section join the [Discord](https://discord.gg/HtbKyuDDBw) and create a question. +::: diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/01-chapters.mdx b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/01-chapters.mdx new file mode 100644 index 0000000000..13a98d7df9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/01-chapters.mdx @@ -0,0 +1,25 @@ +--- +difficulty: Easy +--- + +import Player from "@site/src/components/Player"; +import Image from "@site/src/components/Image"; + +# Chapters + +Chapters add a touch of convenience to your typewriter workflow, resembling the familiar structure of chapters in a book. Similar to files forming folders on a PC, TypeWriter's chapter system organizes pages within chapters. + +### Setting Chapters +Easily create a chapter by right-clicking on a page and selecting `Change Chapter`. Enter the desired chapter name and click `Change`. + + +### Setting Sub-Chapters +Creating subchapters is super simple. Simply use the main chapter name and add a `.` for example, `hello.test` will generate a sub-chapter. As shown below: + +Subchapters + + +Feel free to extend the story with as many subchapters as needed. For instance, `hello.test.morning` would work to. TypeWriter automatically collects pages with the same chapter name and groups them together. + + + diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/02-commands.md b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/02-commands.md new file mode 100644 index 0000000000..5c697bc6b7 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/02-commands.md @@ -0,0 +1,29 @@ +--- +difficulty: Easy +--- + +# Commands + +The TypeWriter plugin has some handy commands. Below is a table of these commands: + +:::tip[Types] +Some arguments are optional `[]` and some a required `<>`.\ +An entry argument accepts the entry identifier and the entry name. +::: + +| Command Name | Description | Permissions | +| ------------------------------------------------ | ------------------------------------------------------ | ------------------------------- | +| `/tw connect` | Connects you to the typewriter panel. | typewriter.connect | +| `/tw clearChat` | Clears the chat for you in the way typewriter does it. | typewriter.clearChat | +| `/tw cinematic [player]` | plays the chosen cinematic for a specific player. | typewriter.cinematic.start/stop | +| `/tw reload` | Reloads the plugin. | typewriter.reload | +| `/tw facts [player]` | Gets all the facts of a specific player. | typewriter.facts | +| `/tw facts set [player]` | Sets a fact of a specific player | typewriter.facts.set | +| `/tw facts reset` | Resets all the facts of a specific player | typewriter.facts.reset | +| `/tw trigger [player]` | triggers an entry for a specific player. | typewriter.trigger | +| `/tw assets clean` | Clears all assets that are not used. | typewriter.assets.clean | +| `/tw fire [player]` | trigger a fire trigger event entry. | typewriter.fire | +| `/tw manifest inspect [player]` | Inspect the active manifests of a player | typewriter.manifest.inspect | +| `/tw quest track [player]` | Start following a quest for a player. | typewriter.quest.track | +| `/tw untrack [player]` | Unfollow the quest of a player. | typewriter.quest.untrack | +| `/tw roadNetwork edit ` | Edit a roadNetwork. | typewriter.roadNetwork.edit | diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/03-placeholderapi.mdx b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/03-placeholderapi.mdx new file mode 100644 index 0000000000..2c90996008 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/03-placeholderapi.mdx @@ -0,0 +1,55 @@ +--- +difficulty: Easy +--- + +import Image from "@site/src/components/Image"; + +# PlaceHolderAPI + +:::warning[plugin needed] +To follow this tutorial, you must have the [PlaceHolderAPI](https://www.spigotmc.org/resources/placeholderapi.6245/) installed. +::: + +## Use PlaceHolderAPI's Placeholders + +If you want to expand your story with PlaceHolderAPI's placeholders, you can do that by checking if the PlaceHolderAPI icon is placed above the text box (see image): + +PlaceholderAPI Icon + +By just using the PlaceHolderAPI's format, you can make them work. For example, `%player_name%` would give the name of a player. + +:::danger[Not working] +If placeholders are not working, make sure you have the placeholder installed. For instance, with `%player_name%`, you must have installed `player` via the PlaceHolderAPI ecloud. To do this, just run: `/papi ecloud download player`. +::: + +## Use TypeWriter's Placeholders + +TypeWriter provides two placeholders for use with the PlaceHolderAPI: + +- `%typewriter_entryid%` +- `%typewriter_entryname%` + +Both placeholders provide the same information, but you may choose to access them in different ways. It's generally recommended to use the entry ID for more reliable results, but the entry name is also an option. + +To find the entry ID, refer to the following image: + +PlaceholderAPI Icon + +Your placeholder for TypeWriter would be something like `%typewriter_W2X2ZbG0pzXGsS6%`.\ +Then, when calling the placeholder, it checks the ID and: + +- If their entry is a speaker, it gives the displayName back. +- If their entry is a fact, it gives the fact value back. +- If the entry is a sound, it gives the ID of the resource pack sound. +- If the entry is a entity, it gives the displayName of the entity +- If the entry is a lines entry, it gives the content of the lines entry. +- If the entry is a quest, it gives the displayName of the quest. +- If the entry is a objective, it gives the formatted displayName of the objective. +- If the entry is a sidebar, it gives the title of the sidebar. + + +### Custom placeholders +Typewriter also has 2 custom placeholders, these are: + +- `%typewriter_tracked_quest%`: Shows the displayName of the currently tracked quest. +- `%typewriter_tracked_objectives%`: Shows the objectives displayNames for the active objectives of the tracked quest. diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/04-shortcuts.mdx b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/04-shortcuts.mdx new file mode 100644 index 0000000000..607bf0724b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/04-shortcuts.mdx @@ -0,0 +1,28 @@ +--- +difficulty: Easy +--- + +import Tabs from "@theme/Tabs"; +import TabItem from "@theme/TabItem"; + +# Shortcuts +This page contains a list of keyboard shortcuts that you can use when using typewriter.\ +But first what is your operating system? + + +| Shortcut | Description | +| ----------------------------------------------------------| ---------------------------------------------------------------------------------------- | +| `ctrl + k `or` ctrl + space` | Open search box | +| `tab `or` ctrl + n` | Next item | +| `shift + tab `or` ctrl + p` | Previous item | +| `ctrl + shift + p` | Publish pages | + + +| Shortcut | Description | +| ----------------------------------------------------------| ---------------------------------------------------------------------------------------- | +| `⌘ + k `or` ⌘ + space` | Open search box | +| `tab `or` ⌘ + n` | Next item | +| `shift + tab `or` ⌘ + p` | Previous item | +| `⌘ + shift + p` | Publish pages | + + \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/05-snippets.mdx b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/05-snippets.mdx new file mode 100644 index 0000000000..61b33bd6a0 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/05-snippets.mdx @@ -0,0 +1,41 @@ +--- +title: Snippets +difficulty: Normal +--- +# What are Snippets? + +Snippets are small pieces of information that the extensions can use. Mostly related with how things are displayed to the users. +Snippets allow you to customize all sorts of parts of different adpaters. For example, you can customize the way messages are displayed in the `Basic Extension`. + +# How do I customize Snippets? +Snippets can be customized by editing the `plugin/Typewriter/snippets.yml` file. + +:::info important +Note that Snippets are only written the first time they are used. So if you want to customize a snippet, you will need to trigger the entry that uses the snippet first. +::: + +So for the `Basic Extension`, after the first person reiceves a `MessageDialogueEntry`, the `snippets.yml` file will look like this: + +```yaml title="plugin/Typewriter/snippets.yml" +dialogue: + message: + format: |2 + + | | + +``` + +You can then edit this file to customize the snippet. For example, if you wanted to change the default color of the speaker's name, you could change the `` to ``. + +Yaml uses the `|` to indicate that the text is a multi-line string. + +```yaml title="plugin/Typewriter/snippets.yml" +dialogue: + message: + // highlight-next-line + format: |2 + + | | + +``` +The `|2` indicates that the text is a multi-line string, and has `2` new-lines at the end of the string. If you don't want the new-lines, you can remove the `2` to make it `|`. diff --git a/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/_category_.yml b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/_category_.yml new file mode 100644 index 0000000000..149fc8e45b --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/05-helpfull-features/_category_.yml @@ -0,0 +1 @@ +label: Helpfull Features diff --git a/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/extensions.mdx b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/extensions.mdx new file mode 100644 index 0000000000..6d6ebd7325 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/extensions.mdx @@ -0,0 +1,31 @@ +--- +difficulty: Normal +--- + +# Extensions Troubleshooting + +Experiencing issues with your Typewriter Extensions? This guide provides step-by-step instructions to ensure your extensions are set up correctly and functioning optimally with the Typewriter plugin. + +## Correct Extension Placement + +It's important to note that extensions for the Typewriter plugin are not standard Paper plugins. They are special JAR files exclusively for Typewriter, and thus need to be stored separately. To ensure proper functioning: + +1. Navigate to the plugin directory: `/plugins/Typewriter/extensions`. +2. If an "extensions" folder does not exist, create one to store your new extensions. +3. Place your extension files inside this "extensions" folder. + +This dedicated folder ensures that Typewriter can correctly read and use these extensions without confusing them with regular Paper plugins. + +## Extension and Plugin Version Compatibility + +For the Typewriter plugin and its extensions to work harmoniously, they must be on the same version. This is crucial for both updating and downgrading: + +1. When updating the `typewriter.jar` file, simultaneously update all the extensions to the same version. +2. The same rule applies when downgrading; ensure that both the plugin and the extensions are reverted to matching versions. + +Maintaining version consistency between the Typewriter plugin and its extensions is key to preventing compatibility issues and ensuring a smooth operation. + +--- + +For further assistance, please reach out to our community on [Discord](https://discord.gg/HtbKyuDDBw). We're here to help make your experience with the Typewriter plugin as smooth as possible! + diff --git a/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/index.mdx b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/index.mdx new file mode 100644 index 0000000000..0e2c3767a9 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/index.mdx @@ -0,0 +1,49 @@ +--- +difficulty: Normal +--- + +import Image from "@site/src/components/Image"; + +# Troubleshooting Guide + +Welcome to the Typewriter Plugin Troubleshooting Guide. This document aims to assist users in resolving common issues encountered while using the Typewriter plugin for Paper Spigot. Before reaching out for assistance on Discord or GitHub, we encourage you to review this comprehensive list of frequently encountered issues and their solutions. This proactive approach can help you solve your problem more quickly and efficiently. + +## Panel Not Loading + +If you encounter issues with the panel not loading, please follow these steps: + +1. Confirm that your server is running and accessible. +2. Check if there are any network connectivity issues. +3. Ensure your firewall settings are not blocking access. + +For more detailed troubleshooting steps, refer to: [Panel not loading](troubleshooting/ports). + +## No Entries Showing + +No Entries + +This issue typically occurs when no extensions are installed. To resolve this, ensure that extensions are correctly installed by following the steps outlined in the **[Basic Extension Installation Tutorial](../02-getting-started/01-installation.mdx#basic-extension)**. + +## Error: "plugin.yml not found" When Installing an Extension + +If you encounter an error message similar to the following when installing an extension: + +```log +[08:49:35 ERROR]: [DirectoryProviderSource] Error loading plugin: Directory 'plugins/BasicExtension.jar' failed to load! +java.lang.RuntimeException: Directory 'plugins/BasicExtension.jar' failed to load! + ... +Caused by: java.lang.IllegalArgumentException: Directory 'plugins/BasicExtension.jar' does not contain a paper-plugin.yml or plugin.yml! Could not determine plugin type, cannot load a plugin from it! +``` + +This typically indicates that the extension is not placed in the correct folder. For instructions on proper placement, see [Correct Extension Placement](./extensions.mdx#correct-extension-placement). + +## Placeholders Not Parsing Correctly + +If placeholders from PlaceholderAPI, such as `%player_name%`, aren't being parsed correctly in Typewriter, follow these troubleshooting steps: + +1. Identify the required PlaceholderAPI placeholder extension. A list of extensions can be found [here](https://github.com/PlaceholderAPI/PlaceholderAPI/wiki/Placeholders). +2. Install the necessary extension using `/papi ecloud download [extension_name]`. For `%player_name%`, use `/papi ecloud download player`. +3. Check if the placeholder is parsed correctly in normal usage by running `/papi parse me `. For `%player_name%`, use `/papi parse me %player_name%`. +4. If the placeholder works in normal usage but still not in Typewriter, try restarting your server. + +If these steps do not resolve the issue, please contact us for further support by creating a ticket on our [Discord](https://discord.gg/HtbKyuDDBw). diff --git a/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/playitgg.mdx b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/playitgg.mdx new file mode 100644 index 0000000000..b30290c1c6 --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/playitgg.mdx @@ -0,0 +1,33 @@ +--- +difficulty: easy +--- +import Image from "@site/src/components/Image"; + +# Playit.gg +:::warning[Not tested] +These docs haven't been 100% tested yet. It may be that this won't work. If so please make a question in our [discord](https://discord.gg/gs5QYhfv9x). +::: + +In this tutorial you will learn how to make typewriter work with playit.gg + +## What is Playit.gg +Playit.gg is a service that allows you to make your localhost minecraft server be public for anyone to connect. This is useful for testing your server with friends or for making a public server for a short period of time. + +## How to make typewriter work with playit.gg +First go to [playit.gg](https://playit.gg/) and have a agent created and your minecraft server connected. There are plenty of tutorials out on the internet on how to do this. + +### Creating a new tunnel +Inside the tunnels tab you can click on `+ Add tunnel`. + +Tunnels + +Than inside the popup select your region and use the Tunnel Type `TCP (protocol)` than set the local port to `8080`(or the port you configured in the config.yml) and click on `Add tunnel`. + +Create tunnel + +Now your tunnel should be pending and after a few seconds it should be working. + +### Connecting to the tw panel +Now you can connect to the panel by using the url that is shown in the tunnels tab. + +Tunnel url \ No newline at end of file diff --git a/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/ports.mdx b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/ports.mdx new file mode 100644 index 0000000000..7c84167a1f --- /dev/null +++ b/documentation/versioned_docs/version-0.6.0/docs/06-troubleshooting/ports.mdx @@ -0,0 +1,44 @@ +--- +difficulty: Easy +--- + +# Panel Loading Issues Troubleshooting Guide + +Are you encountering difficulties with the Typewriter plugin's panel not loading? This guide will help you troubleshoot and ensure the correct setup for optimal functionality. + +## Assigning Ports Correctly + +If the panel isn't loading, a common issue could be the lack of assigned ports. The Typewriter plugin requires two open ports: + +1. One port for the panel to load. +2. Another port for the websocket to communicate with the server. + +:::warning +Hosting platforms like Aternos, which only offer a single port, are not compatible with the Typewriter plugin due to this requirement. +::: + +## Using the Correct URL + +Ensure that you are using the correct URL to access the panel. The format should be either `ip:port` or, if you're using a subdomain, `url:port`. Using the correct URL is crucial for accessing the panel successfully. + +## Avoiding Duplicate Ports in Config + +A common mistake is including the port in the `hostname` field of the `config.yml` file. +The hostname should only be the IP address or the domain name. It should not contain the port. +Here's an example: + +```yaml title="config.yml" +# ... +// highlight-red +hostname: "127.0.0.1:25565" // Incorrect line +// highlight-green +hostname: "127.0.0.1" // Correct line +# ... +``` + +Removing the port from the hostname field can resolve issues related to the panel not loading. + +--- + +For further assistance, please reach out to our community on [Discord](https://discord.gg/HtbKyuDDBw). We're here to help make your experience with the Typewriter plugin as smooth as possible! + diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/chapters.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/chapters.webm new file mode 100644 index 0000000000..091ee512ee Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/chapters.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/sub-chapters.png b/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/sub-chapters.png new file mode 100644 index 0000000000..74c0ea6e71 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/chapters/sub-chapters.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic-fields.png b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic-fields.png new file mode 100644 index 0000000000..c3ec56f9ec Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic-fields.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic.png b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic.png new file mode 100644 index 0000000000..cf8f3362bd Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/add-cinematic.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-cinematic.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-cinematic.webm new file mode 100644 index 0000000000..60bcea6d7f Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-cinematic.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-segment.png b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-segment.png new file mode 100644 index 0000000000..c5c9a8ab90 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/adding-dialogue-segment.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/cinematic-npc-result.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/cinematic-npc-result.webm new file mode 100644 index 0000000000..a9ff39bfd5 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/cinematic-npc-result.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/content-mode.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/content-mode.webm new file mode 100644 index 0000000000..948fb3acc2 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/content-mode.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/final-camera-cinematic.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/final-camera-cinematic.webm new file mode 100644 index 0000000000..874ab29208 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/final-camera-cinematic.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-fact.png b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-fact.png new file mode 100644 index 0000000000..c28fed82b4 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-fact.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-result.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-result.webm new file mode 100644 index 0000000000..59429fa339 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/first-join-result.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/playback.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/playback.webm new file mode 100644 index 0000000000..b1b741ba9f Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/playback.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/recording.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/recording.webm new file mode 100644 index 0000000000..98459d82d4 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/recording.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/segments.png b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/segments.png new file mode 100644 index 0000000000..2e6e8c2323 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/segments.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/select-entity-definition.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/select-entity-definition.webm new file mode 100644 index 0000000000..32dd49b445 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/cinematics/select-entity-definition.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/definition_select.png b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/definition_select.png new file mode 100644 index 0000000000..8221041ae2 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/definition_select.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity-interact-event-fields.png b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity-interact-event-fields.png new file mode 100644 index 0000000000..51970a4ae6 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity-interact-event-fields.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_location.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_location.webm new file mode 100644 index 0000000000..8b4e1a7388 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_location.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_name_change.png b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_name_change.png new file mode 100644 index 0000000000..5fb5e44626 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/entity_name_change.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/fetch_skin.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/fetch_skin.webm new file mode 100644 index 0000000000..a28889f10d Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/fetch_skin.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_editor.png b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_editor.png new file mode 100644 index 0000000000..a839594e23 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_editor.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_effect.png b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_effect.png new file mode 100644 index 0000000000..60773f96b7 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/entity-extension/glow_effect.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria.png b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria.png new file mode 100644 index 0000000000..60b9a9f2a3 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria_and_modifier.png b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria_and_modifier.png new file mode 100644 index 0000000000..dbf7b37c4a Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/criteria_and_modifier.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/facts/modifier.png b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/modifier.png new file mode 100644 index 0000000000..4b066b1019 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/modifier.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/facts/static-page.png b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/static-page.png new file mode 100644 index 0000000000..09a302b635 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/facts/static-page.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-book.png b/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-book.png new file mode 100644 index 0000000000..842ab23930 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-book.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-command.gif b/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-command.gif new file mode 100644 index 0000000000..a69dd4ed5c Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/installation/connect-command.gif differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken-fields.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken-fields.png new file mode 100644 index 0000000000..51dd25de12 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken-fields.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken.webm new file mode 100644 index 0000000000..0a729fb374 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/add-spoken.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/adding-options.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/adding-options.png new file mode 100644 index 0000000000..a7531e7f7f Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/adding-options.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/conditional-dialogue-sequence.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/conditional-dialogue-sequence.png new file mode 100644 index 0000000000..35363cdc31 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/conditional-dialogue-sequence.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/configure-option.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/configure-option.png new file mode 100644 index 0000000000..1e709c43fa Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/configure-option.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-conditional-dialogue.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-conditional-dialogue.webm new file mode 100644 index 0000000000..54b76b9566 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-conditional-dialogue.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-default.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-default.webm new file mode 100644 index 0000000000..e4b6ecedbb Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-default.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-give-item.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-give-item.webm new file mode 100644 index 0000000000..da4eea3ae2 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-give-item.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-option.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-option.webm new file mode 100644 index 0000000000..b4bdc3a1f3 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/final-result-option.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/flower-clicked-fact.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/flower-clicked-fact.png new file mode 100644 index 0000000000..43a90369bc Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/flower-clicked-fact.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/item-capturer.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/item-capturer.webm new file mode 100644 index 0000000000..d201dd84ec Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/item-capturer.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/on_flower_click.png b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/on_flower_click.png new file mode 100644 index 0000000000..fb36892ba6 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/on_flower_click.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/simple-speaker.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/simple-speaker.webm new file mode 100644 index 0000000000..4f76a65cd7 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/interactions/simple-speaker.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/layout/add-page.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/add-page.webm new file mode 100644 index 0000000000..99b1b31da4 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/add-page.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout-cinematic.png b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout-cinematic.png new file mode 100644 index 0000000000..363dd42de2 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout-cinematic.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout.png b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout.png new file mode 100644 index 0000000000..bf75afcda9 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/layout/layout.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-factid.png b/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-factid.png new file mode 100644 index 0000000000..635cb46d6b Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-factid.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-icon.png b/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-icon.png new file mode 100644 index 0000000000..02471ad54d Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/placeholderapi/papi-icon.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/add-node.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/add-node.webm new file mode 100644 index 0000000000..ea3c1322fe Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/add-node.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/fast-travel.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/fast-travel.webm new file mode 100644 index 0000000000..c53bd52c40 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/fast-travel.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/negative-nodes-preview.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/negative-nodes-preview.webm new file mode 100644 index 0000000000..462b635368 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/negative-nodes-preview.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/non-negative-nodes-example.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/non-negative-nodes-example.webm new file mode 100644 index 0000000000..0590a869c4 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/non-negative-nodes-example.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/path.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/path.webm new file mode 100644 index 0000000000..ea73c5c0c1 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/path.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.png b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.png new file mode 100644 index 0000000000..54728d88cc Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.webm new file mode 100644 index 0000000000..33d14ae4b5 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/radius.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edge.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edge.webm new file mode 100644 index 0000000000..0a10d18a5b Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edge.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edges.webm b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edges.webm new file mode 100644 index 0000000000..78fb750fee Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/road-network/remove-edges.webm differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/create-tunnel.png b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/create-tunnel.png new file mode 100644 index 0000000000..436dae3a25 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/create-tunnel.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/ip.png b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/ip.png new file mode 100644 index 0000000000..8ef9343340 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/ip.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/no-entries.png b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/no-entries.png new file mode 100644 index 0000000000..e2da6ec7a1 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/no-entries.png differ diff --git a/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/tunnels.png b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/tunnels.png new file mode 100644 index 0000000000..b67ca6f994 Binary files /dev/null and b/documentation/versioned_docs/version-0.6.0/docs/assets/troubleshooting/tunnels.png differ diff --git a/documentation/versioned_sidebars/version-0.6.0-sidebars.json b/documentation/versioned_sidebars/version-0.6.0-sidebars.json new file mode 100644 index 0000000000..de01e7a4d6 --- /dev/null +++ b/documentation/versioned_sidebars/version-0.6.0-sidebars.json @@ -0,0 +1,20 @@ +{ + "tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "docs" + } + ], + "adapters": [ + { + "type": "autogenerated", + "dirName": "adapters" + } + ], + "develop": [ + { + "type": "autogenerated", + "dirName": "develop" + } + ] +} diff --git a/documentation/versions.json b/documentation/versions.json index 12b3685375..c8192c63ee 100644 --- a/documentation/versions.json +++ b/documentation/versions.json @@ -1,4 +1,5 @@ [ + "0.6.0", "0.5.1", "0.4.2" ]