mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
Compare commits
483 Commits
dependabot
...
c53cb901ab
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c53cb901ab | ||
|
|
430b34a53f | ||
|
|
bfa579db26 | ||
|
|
e7c7b94f87 | ||
|
|
84e15acf26 | ||
|
|
4eed04bfef | ||
|
|
4cb32bd7a4 | ||
|
|
d89dc33bd0 | ||
|
|
756c6d2daa | ||
|
|
931996034f | ||
|
|
091f3f5b07 | ||
|
|
7afdd99fad | ||
|
|
769a0d71bc | ||
|
|
c551719f51 | ||
|
|
8db6eacf28 | ||
|
|
fc6b21c066 | ||
|
|
62697b1313 | ||
|
|
09d5d25092 | ||
|
|
23c883e6e1 | ||
|
|
2973d9c944 | ||
|
|
203d77db3d | ||
|
|
e8cc799f20 | ||
|
|
bf699305d5 | ||
|
|
d33ce2346d | ||
|
|
543a59f535 | ||
|
|
90a1be3750 | ||
|
|
7179c6109e | ||
|
|
0b6dbc9cdd | ||
|
|
92482ea52a | ||
|
|
6f7741e82c | ||
|
|
e976223c2b | ||
|
|
141ecc1a01 | ||
|
|
061d2fa42d | ||
|
|
d8f1a4ecae | ||
|
|
a16098f448 | ||
|
|
4f6ab36bbe | ||
|
|
2dad4bc692 | ||
|
|
f5107067d1 | ||
|
|
7b1b932971 | ||
|
|
c1c3607228 | ||
|
|
e61b346395 | ||
|
|
e206e8f61c | ||
|
|
46c88da9a8 | ||
|
|
3b216d450b | ||
|
|
19bad7dabf | ||
|
|
0dd4af4811 | ||
|
|
26e91119e2 | ||
|
|
c3062652f5 | ||
|
|
c08a87a1c3 | ||
|
|
a96de43551 | ||
|
|
a02a4bac70 | ||
|
|
001c903cbf | ||
|
|
d176f09aa0 | ||
|
|
c65f8c03bf | ||
|
|
5412a60936 | ||
|
|
b92c8139f0 | ||
|
|
a377047d4a | ||
|
|
d6980df8ae | ||
|
|
621d9712d0 | ||
|
|
62ed3cdd26 | ||
|
|
df296a2b57 | ||
|
|
a75f1ebc9e | ||
|
|
d38ce8f248 | ||
|
|
c391881bfd | ||
|
|
ade386bef2 | ||
|
|
68c65afead | ||
|
|
399fe8f7d7 | ||
|
|
6843c67055 | ||
|
|
b98b402a89 | ||
|
|
a85704d99f | ||
|
|
c99d32c452 | ||
|
|
aa20217c61 | ||
|
|
87f0183e4f | ||
|
|
4c43d20718 | ||
|
|
24155219d6 | ||
|
|
7f41e1978b | ||
|
|
982d9db32c | ||
|
|
20951b02ff | ||
|
|
bef476a6ea | ||
|
|
c2d40a76aa | ||
|
|
9eb8ec9bd0 | ||
|
|
9d6305607d | ||
|
|
b797da3b7f | ||
|
|
209509033b | ||
|
|
6b2f82a2fa | ||
|
|
6828872398 | ||
|
|
29e4e70f37 | ||
|
|
58ac34311d | ||
|
|
56b238d8a5 | ||
|
|
d8e5e36338 | ||
|
|
517422fdbc | ||
|
|
5c2caf6e1f | ||
|
|
6edfcfde41 | ||
|
|
f473e364ac | ||
|
|
48d24c7c5b | ||
|
|
ee46c4bfff | ||
|
|
5b1bb38643 | ||
|
|
0aa66b1e9f | ||
|
|
524c1b5635 | ||
|
|
44959a2fbb | ||
|
|
8c98524d37 | ||
|
|
d2f222b03d | ||
|
|
fc015ca9bb | ||
|
|
0c05817e16 | ||
|
|
d94fe05817 | ||
|
|
b8512e503d | ||
|
|
e005e5c212 | ||
|
|
ff959bab4b | ||
|
|
5f047bbf70 | ||
|
|
19036ae0bc | ||
|
|
a2f61b6215 | ||
|
|
54a45ef827 | ||
|
|
a744e6e354 | ||
|
|
54bdda5990 | ||
|
|
298cc16fac | ||
|
|
1b436a1154 | ||
|
|
3b161a892f | ||
|
|
804c185a05 | ||
|
|
9e6e17f7e0 | ||
|
|
1080383a52 | ||
|
|
e428d2c624 | ||
|
|
94c74cdb65 | ||
|
|
7ba5a3ec6a | ||
|
|
a61a5c01c6 | ||
|
|
bf4aa36526 | ||
|
|
4c6d5b19a9 | ||
|
|
0ff54f8d3d | ||
|
|
16e3ae9b2b | ||
|
|
fbc51aa24c | ||
|
|
56eee1c4c5 | ||
|
|
df75c7cf51 | ||
|
|
00094d5a5f | ||
|
|
56bbad354d | ||
|
|
2ee40812bb | ||
|
|
56d0201a13 | ||
|
|
a8e87679ac | ||
|
|
046b040379 | ||
|
|
605a9b7d64 | ||
|
|
b214505164 | ||
|
|
08e1d70ebd | ||
|
|
f08fa67a84 | ||
|
|
fa90dde62f | ||
|
|
ca007822ed | ||
|
|
eb5eca03c8 | ||
|
|
6afe93e92c | ||
|
|
a5cf2af22e | ||
|
|
462dc063f7 | ||
|
|
44761739a4 | ||
|
|
94fc5ebd73 | ||
|
|
0ea93f0b75 | ||
|
|
84c6661c1a | ||
|
|
ee918f73ab | ||
|
|
f16759a3ea | ||
|
|
b8f027a125 | ||
|
|
6ed7b60f8a | ||
|
|
7abe294805 | ||
|
|
23efe9b951 | ||
|
|
4a8d130235 | ||
|
|
0c41998656 | ||
|
|
e96b489f7c | ||
|
|
2f15f20309 | ||
|
|
f4527487ff | ||
|
|
a0ef8c264e | ||
|
|
d918e2def5 | ||
|
|
68c8826343 | ||
|
|
9beafac5cd | ||
|
|
e437b05a96 | ||
|
|
f78d8dc8d1 | ||
|
|
beeb3c0237 | ||
|
|
3330a40419 | ||
|
|
e64a1e5ced | ||
|
|
27c30c3494 | ||
|
|
be8a3b5212 | ||
|
|
42e6132021 | ||
|
|
748fbaa66f | ||
|
|
a858962a3f | ||
|
|
6b7ecda3e7 | ||
|
|
1067ffa635 | ||
|
|
531e3a4ab3 | ||
|
|
450082b6f1 | ||
|
|
d5665109e8 | ||
|
|
39ea15c234 | ||
|
|
0c9847513f | ||
|
|
b7cfa5e391 | ||
|
|
c33cf8dabc | ||
|
|
3664832324 | ||
|
|
fb88e852d9 | ||
|
|
5afdeec9e8 | ||
|
|
f279782c82 | ||
|
|
2cdb3ebb7f | ||
|
|
4d8698ea34 | ||
|
|
607f9f0719 | ||
|
|
527c46cbca | ||
|
|
64e919ef29 | ||
|
|
2fbbdc2b88 | ||
|
|
f0e6c6d2c5 | ||
|
|
df107beea2 | ||
|
|
066f22d7b3 | ||
|
|
f2d672566e | ||
|
|
fd48630ce0 | ||
|
|
6cdd77daba | ||
|
|
3aaa364b58 | ||
|
|
a3be8d71ce | ||
|
|
dbc62110f9 | ||
|
|
50844fa59b | ||
|
|
819e6a4ed8 | ||
|
|
7f25808c72 | ||
|
|
7b6a75cb3d | ||
|
|
ad12d71344 | ||
|
|
ce561f057b | ||
|
|
c496283b79 | ||
|
|
b8f57fda38 | ||
|
|
bd4a8f2f23 | ||
|
|
d3850310ce | ||
|
|
d61b3af90b | ||
|
|
31f03ae252 | ||
|
|
9e8431938c | ||
|
|
8327461adb | ||
|
|
f87e2fc537 | ||
|
|
bab3fa2052 | ||
|
|
78ec1a8ba9 | ||
|
|
41909461d8 | ||
|
|
1b2448fabd | ||
|
|
42894ee8dc | ||
|
|
96ae8814dc | ||
|
|
8ffe3f824c | ||
|
|
2953b62c74 | ||
|
|
816c52082b | ||
|
|
be24b0f359 | ||
|
|
64e0eeddcf | ||
|
|
440e58f76a | ||
|
|
a96d2eb34c | ||
|
|
888725c63d | ||
|
|
1b67a7048b | ||
|
|
bdb23fb172 | ||
|
|
25c4844b48 | ||
|
|
1a3707ff51 | ||
|
|
8327ef05c4 | ||
|
|
2aa14f4c81 | ||
|
|
7e05693fb2 | ||
|
|
6c155dc00b | ||
|
|
603ddd2151 | ||
|
|
627f50467c | ||
|
|
8c569f90d5 | ||
|
|
c20617b2e2 | ||
|
|
4d43c08ed8 | ||
|
|
c6db12a3f7 | ||
|
|
a42d1ba92e | ||
|
|
80649e4b5b | ||
|
|
0f77e61e8d | ||
|
|
0673af8b29 | ||
|
|
adc7064de5 | ||
|
|
4f124bf87e | ||
|
|
fee90d32a9 | ||
|
|
a9b3399389 | ||
|
|
192938d4d5 | ||
|
|
53e7300b4a | ||
|
|
7c966d28a0 | ||
|
|
9b08eed6bf | ||
|
|
9da266c1cf | ||
|
|
d566907305 | ||
|
|
7bad6fbe35 | ||
|
|
8d3defa820 | ||
|
|
529d13d2ee | ||
|
|
6014fe3c70 | ||
|
|
e5c00d0c4e | ||
|
|
458a0343d8 | ||
|
|
9ca20c6f01 | ||
|
|
579b0bf4d7 | ||
|
|
a8cafa87be | ||
|
|
1eb65105f5 | ||
|
|
32cf5240f6 | ||
|
|
ae518e64f3 | ||
|
|
9706b08c0d | ||
|
|
3029dc1da5 | ||
|
|
1beebb05ae | ||
|
|
bad76db73f | ||
|
|
91ac910e4e | ||
|
|
bb5d9df6de | ||
|
|
bfd9c05b09 | ||
|
|
f110774b9a | ||
|
|
1a915b3601 | ||
|
|
2bf8163370 | ||
|
|
bff8ef27f4 | ||
|
|
92469ec4fb | ||
|
|
b25a74df01 | ||
|
|
4cc3d1189e | ||
|
|
0139de0000 | ||
|
|
602a8696cf | ||
|
|
72f1d11548 | ||
|
|
e611c6bb8b | ||
|
|
6a09714747 | ||
|
|
43dd7c2fea | ||
|
|
c91ceb1359 | ||
|
|
41df112420 | ||
|
|
f56c9f1bea | ||
|
|
a4a874d5df | ||
|
|
340412ee1a | ||
|
|
da47f688bc | ||
|
|
a152bbc83a | ||
|
|
bd806f992b | ||
|
|
eaa8877636 | ||
|
|
c41faa53b8 | ||
|
|
a67be52be8 | ||
|
|
4d8e244110 | ||
|
|
f2da8fb4fa | ||
|
|
8c3ea92e6d | ||
|
|
dd4ec15cc3 | ||
|
|
ee8fe70f15 | ||
|
|
ea91095bcf | ||
|
|
0395b942a1 | ||
|
|
fdaf21309b | ||
|
|
7f861022b6 | ||
|
|
58bac9a3cf | ||
|
|
4fe121e26b | ||
|
|
feeef3bf48 | ||
|
|
4f9c938884 | ||
|
|
2ec0c1d325 | ||
|
|
689423dc85 | ||
|
|
745d1cbe32 | ||
|
|
8626a2efbc | ||
|
|
576893206d | ||
|
|
b02ec7c95f | ||
|
|
e2d542e9ac | ||
|
|
4da2da4dab | ||
|
|
bc14e69bd3 | ||
|
|
6fcf7ae6cc | ||
|
|
e26760a1e3 | ||
|
|
1e20f4e8db | ||
|
|
7d737b86c5 | ||
|
|
e4cd932721 | ||
|
|
6d317b1646 | ||
|
|
2d23409f77 | ||
|
|
823d66a4d1 | ||
|
|
d3a3b53b09 | ||
|
|
4a3d03073e | ||
|
|
ceb8aafa98 | ||
|
|
1ac9e0915f | ||
|
|
c82c643b44 | ||
|
|
a7c3b59165 | ||
|
|
8c73932fc5 | ||
|
|
4a93c68a9e | ||
|
|
e141528f7c | ||
|
|
239c00b447 | ||
|
|
a358624a4a | ||
|
|
0b02a9b85d | ||
|
|
ccc238bbad | ||
|
|
1b764b9cb7 | ||
|
|
aeb905336f | ||
|
|
3a500d0a27 | ||
|
|
d9c0501cc1 | ||
|
|
7ccde4dab9 | ||
|
|
ccd1a917ab | ||
|
|
f16b296347 | ||
|
|
59db4ca61e | ||
|
|
9186365197 | ||
|
|
98df9cf763 | ||
|
|
f483de0386 | ||
|
|
85b449ab5d | ||
|
|
05484d42d5 | ||
|
|
9454f4995c | ||
|
|
271c94a3a0 | ||
|
|
1d2caecdd4 | ||
|
|
cd5fbf4cbc | ||
|
|
f1a532e74a | ||
|
|
fbaac99c79 | ||
|
|
a26e78a23c | ||
|
|
65ea890bb0 | ||
|
|
a77a8d87bc | ||
|
|
8696d88ef9 | ||
|
|
17a1c36cda | ||
|
|
95179e854b | ||
|
|
685e652ca9 | ||
|
|
1250485f7c | ||
|
|
7dbf1921b6 | ||
|
|
0d3e779d10 | ||
|
|
33605ffc93 | ||
|
|
36f666881a | ||
|
|
8136662ca6 | ||
|
|
b2352f65fe | ||
|
|
bc698903e0 | ||
|
|
43ff3b53e9 | ||
|
|
8bea313a52 | ||
|
|
a6dd6622d4 | ||
|
|
683cdce3f1 | ||
|
|
d168654a2a | ||
|
|
8fc5787a3b | ||
|
|
9641b80d20 | ||
|
|
7d8d64a476 | ||
|
|
a91c2e6420 | ||
|
|
15d4ac4711 | ||
|
|
b4e888fc44 | ||
|
|
527fd94556 | ||
|
|
6c0ad6f917 | ||
|
|
9da2444239 | ||
|
|
acb9b6f717 | ||
|
|
bbd720a90d | ||
|
|
039141c44e | ||
|
|
515c219140 | ||
|
|
d7ba2ffd5b | ||
|
|
cd9872dcf2 | ||
|
|
c3e710a86c | ||
|
|
380a131a1c | ||
|
|
5c409633f8 | ||
|
|
ca718a3dfd | ||
|
|
55059bbd98 | ||
|
|
67fd451fa1 | ||
|
|
8bf9c7d070 | ||
|
|
be83943fd9 | ||
|
|
ad4b45004d | ||
|
|
993cd17d4f | ||
|
|
a4bd587f49 | ||
|
|
4d56b7d817 | ||
|
|
7858e59f49 | ||
|
|
46ebfb8a38 | ||
|
|
a6445e53be | ||
|
|
3c8f2eb2cc | ||
|
|
81d9a5c9a4 | ||
|
|
98c5208f80 | ||
|
|
ba1ba66f1d | ||
|
|
57b1016581 | ||
|
|
41dc4f6fd2 | ||
|
|
20d7d8f382 | ||
|
|
1db0e8b536 | ||
|
|
6bf30ebb0d | ||
|
|
02860a06a4 | ||
|
|
2a4cf1a54d | ||
|
|
af2e40e00b | ||
|
|
6cbf0df897 | ||
|
|
2b485302df | ||
|
|
12de021118 | ||
|
|
31e180bf90 | ||
|
|
552a301602 | ||
|
|
723c3de3c4 | ||
|
|
7726dc4af2 | ||
|
|
d5292ec254 | ||
|
|
ae6ac1bb4a | ||
|
|
e25ffdb591 | ||
|
|
2e8f2fb9ed | ||
|
|
0d52abc0a6 | ||
|
|
0db47da5a7 | ||
|
|
f5f81a12b4 | ||
|
|
2f331cd49f | ||
|
|
796588447a | ||
|
|
3e480b8f8e | ||
|
|
5602f97a53 | ||
|
|
8303c89c36 | ||
|
|
f093f125d5 | ||
|
|
79b686cf09 | ||
|
|
cebbcd08f2 | ||
|
|
4d68a1ef0d | ||
|
|
bd710a86e5 | ||
|
|
7504ba0f77 | ||
|
|
a7e0b90158 | ||
|
|
27ac6f7e8b | ||
|
|
101bb49285 | ||
|
|
d401dac6c3 | ||
|
|
e254cb3730 | ||
|
|
cfa3c33fac | ||
|
|
9e96fe2fa4 | ||
|
|
8da7fbfc2f | ||
|
|
2361f4e761 | ||
|
|
ca77db6a97 | ||
|
|
bc227ede2e | ||
|
|
496eb454ac | ||
|
|
70b1cfc045 | ||
|
|
f4c39a39d0 | ||
|
|
c233e69184 | ||
|
|
c98b1b0c46 | ||
|
|
bfb37977ce | ||
|
|
9b23794f9c | ||
|
|
6e34a1f9b7 | ||
|
|
0ad40298c6 | ||
|
|
45e57488f7 | ||
|
|
b30d28f885 | ||
|
|
3be3f30135 | ||
|
|
a6710ea03a | ||
|
|
17233dbaa4 | ||
|
|
84adb42dca | ||
|
|
2a32f8aa8c | ||
|
|
96a088c03d | ||
|
|
eeb686957f | ||
|
|
7dff91f40f |
14
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
14
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,8 +1,20 @@
|
||||
name: Bug Report
|
||||
description: File a bug report.
|
||||
title: "Bug: "
|
||||
labels: ["bug"]
|
||||
labels: [ "Type: Bug", "Priority: Medium", "Status: Pending" ]
|
||||
body:
|
||||
- type: dropdown
|
||||
id: plugin
|
||||
attributes:
|
||||
label: In which plugin has the error occurred?
|
||||
multiple: false
|
||||
options:
|
||||
- FancyNpcs
|
||||
- FancyHolograms
|
||||
- FancyDialogs
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: what-happened
|
||||
attributes:
|
||||
|
||||
1
.github/ISSUE_TEMPLATE/config.yml
vendored
1
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1 +0,0 @@
|
||||
blank_issues_enabled: false
|
||||
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
14
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
@@ -1,8 +1,20 @@
|
||||
name: Feature Request
|
||||
description: Suggest a new Feature.
|
||||
title: "Feature: "
|
||||
labels: ["feature"]
|
||||
labels: [ "Type: Enhancement", "Priority: Medium", "Status: Pending" ]
|
||||
body:
|
||||
- type: dropdown
|
||||
id: plugin
|
||||
attributes:
|
||||
label: For which plugin is the feature?
|
||||
multiple: false
|
||||
options:
|
||||
- FancyNpcs
|
||||
- FancyHolograms
|
||||
- FancyDialogs
|
||||
- Other
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
id: description
|
||||
attributes:
|
||||
|
||||
31
.github/pull_request_template.md
vendored
Normal file
31
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,31 @@
|
||||
|
||||
## 📋 Description
|
||||
|
||||
Please include a summary of the changes and the related issue(s).
|
||||
What is this PR solving? Why is it needed?
|
||||
|
||||
## ✅ Checklist
|
||||
|
||||
- [ ] My code follows the project's coding style and guidelines
|
||||
- [ ] I have tested my changes locally and they work as expected
|
||||
- [ ] I have added necessary documentation (if applicable)
|
||||
- [ ] I have linked related issues using `Fixes #issue_number` or `Closes #issue_number`
|
||||
- [ ] I have rebased/merged with the latest `main` branch
|
||||
|
||||
## 🔍 Changes
|
||||
|
||||
Please provide a brief summary of the changes made in this PR.
|
||||
|
||||
- Updated ...
|
||||
- Refactored ...
|
||||
- Fixed ...
|
||||
|
||||
---
|
||||
|
||||
## 🧪 How to Test
|
||||
|
||||
Please describe how to manually test the changes made in this PR.
|
||||
|
||||
1. ...
|
||||
2. ...
|
||||
3. ...
|
||||
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
@@ -39,6 +39,9 @@ jobs:
|
||||
- name: Build FancyHolograms
|
||||
run: ./gradlew :plugins:fancyholograms:shadowJar
|
||||
|
||||
- name: Build FancyDialogs
|
||||
run: ./gradlew :plugins:fancydialogs:shadowJar
|
||||
|
||||
- name: Build FancyVisuals
|
||||
run: ./gradlew :plugins:fancyvisuals:shadowJar
|
||||
|
||||
|
||||
4
.github/workflows/deploy-docs.yml
vendored
4
.github/workflows/deploy-docs.yml
vendored
@@ -3,8 +3,10 @@ name: Deploy documentation
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
branches:
|
||||
- main
|
||||
paths:
|
||||
- 'docs/**'
|
||||
|
||||
jobs:
|
||||
deploy:
|
||||
|
||||
51
.github/workflows/deploy-release-fancydialogs.yml
vendored
Normal file
51
.github/workflows/deploy-release-fancydialogs.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Deploy FancyDialogs (release)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-plugin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyDialogs for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'release'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancydialogs:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancydialogs/release_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (releases)
|
||||
run: ./gradlew :plugins:fancydialogs:fd-api:publishAllPublicationsToFancyinnovationsReleasesRepository
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancydialogs:fd-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
51
.github/workflows/deploy-release-fancyholograms-v2.yml
vendored
Normal file
51
.github/workflows/deploy-release-fancyholograms-v2.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Deploy FancyHolograms v2 (release)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-plugin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyHolograms v2 for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'release'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancyholograms-v2:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancyholograms-v2/release_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (releases)
|
||||
run: ./gradlew :plugins:fancyholograms-v2:api:publishAllPublicationsToFancyinnovationsReleasesRepository
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancyholograms-v2:api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
@@ -27,19 +27,25 @@ jobs:
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build FancyHolograms
|
||||
run: ./gradlew :plugins:fancyholograms:shadowJar
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Deploy
|
||||
- name: Build FancyHolograms for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'release'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancyholograms:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar ../../../../plugins/fancyholograms/release_deployment_config.json
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancyholograms/release_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (releases)
|
||||
run: ./gradlew :plugins:fancyholograms:api:publishAllPublicationsToFancypluginsReleasesRepository
|
||||
run: ./gradlew :plugins:fancyholograms:fh-api:publishAllPublicationsToFancyinnovationsReleasesRepository
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancyholograms:api:publishAllPublicationsToFancypluginsSnapshotsRepository
|
||||
run: ./gradlew :plugins:fancyholograms:fh-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
51
.github/workflows/deploy-release-fancynpcs.yml
vendored
Normal file
51
.github/workflows/deploy-release-fancynpcs.yml
vendored
Normal file
@@ -0,0 +1,51 @@
|
||||
name: Deploy FancyNpcs (release)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-plugin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyNpcs for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'release'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancynpcs:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancynpcs/release_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (releases)
|
||||
run: ./gradlew :plugins:fancynpcs:fn-api:publishAllPublicationsToFancyinnovationsReleasesRepository
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancynpcs:fn-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
48
.github/workflows/deploy-snapshot-fancydialogs.yml
vendored
Normal file
48
.github/workflows/deploy-snapshot-fancydialogs.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Deploy FancyDialogs (snapshot)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-fancydialogs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyDialogs for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'snapshot'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancydialogs:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancydialogs/snapshot_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancydialogs:fd-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
48
.github/workflows/deploy-snapshot-fancyholograms-v2.yml
vendored
Normal file
48
.github/workflows/deploy-snapshot-fancyholograms-v2.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
name: Deploy FancyHolograms v2 (snapshot)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-fancyholograms:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyHolograms v2 for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'snapshot'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancyholograms-v2:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancyholograms-v2/snapshot_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancyholograms-v2:api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
@@ -27,16 +27,22 @@ jobs:
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build FancyHolograms
|
||||
run: ./gradlew :plugins:fancyholograms:shadowJar
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Deploy
|
||||
- name: Build FancyHolograms for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'snapshot'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancyholograms:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar ../../../../plugins/fancyholograms/snapshot_deployment_config.json
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancyholograms/snapshot_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancyholograms:api:publishAllPublicationsToFancypluginsSnapshotsRepository
|
||||
run: ./gradlew :plugins:fancyholograms:fh-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
62
.github/workflows/deploy-snapshot-fancynpcs.yml
vendored
Normal file
62
.github/workflows/deploy-snapshot-fancynpcs.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
name: Deploy FancyNpcs (snapshot)
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
jobs:
|
||||
deploy-plugin:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Cache Gradle dependencies
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: ~/.gradle
|
||||
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-gradle-
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v2
|
||||
with:
|
||||
distribution: 'adopt'
|
||||
java-version: '21'
|
||||
|
||||
- name: Modify gradlew permissions
|
||||
run: chmod +x ./gradlew
|
||||
|
||||
- name: Build deployment tool
|
||||
run: ./gradlew :tools:deployment:shadowJar
|
||||
|
||||
- name: Build FancyNpcs for Modrinth
|
||||
env:
|
||||
RELEASE_CHANNEL: 'snapshot'
|
||||
RELEASE_PLATFORM: 'modrinth'
|
||||
run: ./gradlew :plugins:fancynpcs:shadowJar
|
||||
|
||||
- name: Deploy to Modrinth
|
||||
env:
|
||||
MODRINTH_API_KEY: ${{ secrets.MODRINTH_API_KEY }}
|
||||
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
run:
|
||||
cd tools/deployment/build/libs &&
|
||||
java -jar deployment.jar modrinth ../../../../plugins/fancynpcs/snapshot_deployment_config.json true
|
||||
|
||||
# - name: Build FancyNpcs for Hangar
|
||||
# env:
|
||||
# RELEASE_CHANNEL: 'snapshot'
|
||||
# RELEASE_PLATFORM: 'hangar'
|
||||
# run: ./gradlew :plugins:fancynpcs:shadowJar
|
||||
#
|
||||
# - name: Deploy to Hangar
|
||||
# env:
|
||||
# HANGAR_API_KEY: "${{ secrets.HANGAR_API_KEY }}"
|
||||
# DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_WEBHOOK_URL }}
|
||||
# run:
|
||||
# cd tools/deployment/build/libs &&
|
||||
# java -jar deployment.jar hangar ../../../../plugins/fancynpcs/snapshot_deployment_config.json true
|
||||
|
||||
- name: Publish to reposilite (snapshots)
|
||||
run: ./gradlew :plugins:fancynpcs:fn-api:publishAllPublicationsToFancyinnovationsSnapshotsRepository
|
||||
3
CONTRIBUTING.md
Normal file
3
CONTRIBUTING.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# Contributing
|
||||
|
||||
See [docs/src/development-guidelines/contributing.md](docs/src/development-guidelines/contributing.md) for more information on how to contribute to the project.
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2025 Oliver Schlüter
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
109
README.md
109
README.md
@@ -2,92 +2,69 @@
|
||||
|
||||
<div align="center">
|
||||
|
||||

|
||||

|
||||
|
||||
[](https://modrinth.com/user/Oliver)
|
||||
[](https://hangar.papermc.io/Oliver)
|
||||
[]()
|
||||
|
||||
[](https://github.com/fancymcplugins/fancyplugins)
|
||||
[](https://discord.gg/ZUgYCEJUEx)
|
||||
[](https://fancyplugins.de)
|
||||
[](https://docs.fancyplugins.de)
|
||||
[](https://discord.gg/ZUgYCEJUEx)
|
||||
|
||||
<br />
|
||||
|
||||
Simple, lightweight and feature-rich plugins for Minecraft servers.
|
||||
[](https://www.codefactor.io/repository/github/fancyinnovations/fancyplugins)
|
||||
[](https://github.com/fancyinnovations/fancyplugins)
|
||||
|
||||
</div>
|
||||
|
||||
## Modules
|
||||
## FancyPlugins
|
||||
|
||||
> [!CAUTION]
|
||||
> The monorepo is still work in progress. Expect breaking changes and incomplete documentation.
|
||||
This is a [monorepo](docs/src/development-guidelines/monorepo.md) for all plugins, libraries, and tools of FancyInnovations.
|
||||
|
||||
Plugins:
|
||||
- fancynpcs: create and manage fancy looking npcs ([old repository](https://github.com/FancyMcPlugins/FancyNpcs))
|
||||
- fancyholograms (v2): create fancy looking holograms ([old repository](https://github.com/FancyMcPlugins/FancyHolograms))
|
||||
- fancyholograms (v3): create fancy looking holograms
|
||||
- fancyvisuals: plugin to customize all visual components of the game
|
||||
**Plugins:**
|
||||
- FancyNpcs: create and manage fancy looking npcs
|
||||
- FancyHolograms: create fancy looking holograms
|
||||
- FancyDialogs: create and manage fancy looking dialogs which were added in 1.21.6 (work in progress)
|
||||
- FancyVisuals: plugin to customize all visual components of the game (work in progress)
|
||||
|
||||
Libraries:
|
||||
- common: common classes and utilities (FancyLib previously)
|
||||
- jdb: json database library (included in FancyLib previously)
|
||||
- plugin-tests: testing library for plugins (included in FancyLib previously)
|
||||
- packets: packet handling library (FancySitula previously)
|
||||
**Libraries:**
|
||||
- Common: common classes and utilities
|
||||
- JDB: json database library
|
||||
- Plugin Tests: testing library for plugins
|
||||
- Packets: packet handling library (also called FancySitula)
|
||||
|
||||
Tools:
|
||||
- deployment: deploy plugins to platforms like modrinth
|
||||
- quick-e2e: generate a quick end-to-end environment for testing
|
||||
|
||||
Docs: documentation for all plugins, libraries and tools.
|
||||
|
||||
Future packages that are planned to be added to the monorepo:
|
||||
- fancywebsite: https://github.com/FancyMcPlugins/FancyWebsite
|
||||
- (fancymorphs: https://github.com/FancyMcPlugins/FancyMorphs)
|
||||
- modrinth-sdk: an SDK for the modrinth API (which then can be used in the deployment and quick-e2e tool)
|
||||
- minecraft-client: a lightweight Minecraft client for testing
|
||||
**Tools:**
|
||||
- Deployment: deploy plugins to platforms like modrinth
|
||||
- Quick E2E: generate a quick end-to-end environment for testing
|
||||
|
||||
## Usage
|
||||
|
||||
The monorepo uses Gradle as build system. See [monorepo.md](docs/src/development-guidelines/monorepo.md) for more information.
|
||||
The monorepo uses Gradle as a build system. See [monorepo.md](docs/src/development-guidelines/monorepo.md) for more information.
|
||||
|
||||
To see specific usage for each package, see the README.md in the respective package directory.
|
||||
|
||||
## Contributors
|
||||
## Contributing
|
||||
|
||||
Since this is a new repository, the list of contributors didn't get migrated from the previous repositories.
|
||||
Here is a list of contributors to the previous repositories:
|
||||
You can contribute to this repository by reporting bugs, suggesting features, or contributing code.
|
||||
Please read the [contributing guidelines](docs/src/development-guidelines/contributing.md) for more information.
|
||||
|
||||
- [Grabsky](https://github.com/Grabsky)
|
||||
- [OakLoaf](https://github.com/OakLoaf)
|
||||
- [Matt-MX](https://github.com/MattMX)
|
||||
- [Sxtanna](https://github.com/Sxtanna)
|
||||
- [airoons](https://github.com/airoons)
|
||||
- [BitByLogics](https://github.com/BitByLogics)
|
||||
- [devpeaqe](https://github.com/devpeaqe)
|
||||
- [NonSwag](https://github.com/NonSwag)
|
||||
- [FrezzyDev](https://github.com/FrezzyDev)
|
||||
- [perkojack](https://github.com/perkojack)
|
||||
- [BigTowns](https://github.com/BigTowns)
|
||||
- [kforbro](https://github.com/kforbro)
|
||||
- [Kamillaova](https://github.com/Kamillaova)
|
||||
- [Emibergo02](https://github.com/Emibergo02)
|
||||
- [bridgelol](https://github.com/bridgelol)
|
||||
- [Seshpenguin](https://github.com/Seshpenguin)
|
||||
- [UltraFaceguy](https://github.com/UltraFaceguy)
|
||||
- [4drian3d](https://github.com/4drian3d)
|
||||
- [Zemux1613](https://github.com/Zemux1613)
|
||||
- [Yive](https://github.com/Yive)
|
||||
- [UsainSrht](https://github.com/UsainSrht)
|
||||
- [killerprojecte](https://github.com/killerprojecte)
|
||||
- [SirSalad](https://github.com/SirSalad)
|
||||
- [yukisnowflake](https://github.com/yukisnowflake)
|
||||
- [BiFTHg](https://github.com/BiFTHg)
|
||||
- [alexcastro1919](https://github.com/alexcastro1919)
|
||||
- [FrinshHD](https://github.com/FrinshHD)
|
||||
- [xii69](https://github.com/xii69)
|
||||
- [ruViolence](https://github.com/ruViolence)
|
||||
- [JonasDevDE](https://github.com/JonasDevDE)
|
||||
- [CloveTwilight3](https://github.com/CloveTwilight3)
|
||||
---
|
||||
|
||||
*(Taken from https://github.com/FancyMcPlugins/FancyNpcs/graphs/contributors and https://github.com/FancyMcPlugins/FancyHolograms/graphs/contributors)*
|
||||
[All contributors of this repository:](https://github.com/FancyInnovations/FancyPlugins/graphs/contributors)
|
||||
|
||||
If you contributed to the previous repositories and want to be listed here, please open an issue or a pull request.
|
||||
<a href = "https://github.com/FancyInnovations/FancyPlugins/graphs/contributors">
|
||||
<img src = "https://contrib.rocks/image?repo=FancyInnovations/FancyPlugins" alt="All contributors of this repository"/>
|
||||
</a>
|
||||
|
||||
**[All contributors of the old FancyNpcs repository:](https://github.com/FancyMcPlugins/FancyNpcs/graphs/contributors)**
|
||||
|
||||
<a href = "https://github.com/FancyMcPlugins/FancyNpcs/graphs/contributors">
|
||||
<img src = "https://contrib.rocks/image?repo=FancyMcPlugins/FancyNpcs" alt="All contributors of the old FancyNpcs repository"/>
|
||||
</a>
|
||||
|
||||
**[All contributors of the old FancyHolograms repository:](https://github.com/FancyMcPlugins/FancyHolograms/graphs/contributors)**
|
||||
|
||||
<a href = "https://github.com/FancyMcPlugins/FancyHolograms/graphs/contributors">
|
||||
<img src = "https://contrib.rocks/image?repo=FancyMcPlugins/FancyHolograms" alt="All contributors of the old FancyHolograms repository"/>
|
||||
</a>
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
plugins {
|
||||
id("com.gradleup.shadow") version "9.0.0-beta11" apply false
|
||||
id("io.papermc.paperweight.userdev") version "2.0.0-beta.16" apply false
|
||||
id("com.gradleup.shadow") version "9.0.0-beta17" apply false
|
||||
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" apply false
|
||||
id("xyz.jpenilla.run-paper") version "2.3.1" apply false
|
||||
id("net.minecrell.plugin-yml.paper") version "0.6.0" apply false
|
||||
id("de.eldoria.plugin-yml.paper") version "0.7.1" apply false
|
||||
id("io.papermc.hangar-publish-plugin") version "0.1.3" apply false
|
||||
id("com.modrinth.minotaur") version "2.+" apply false
|
||||
}
|
||||
@@ -15,7 +15,7 @@ allprojects {
|
||||
mavenLocal()
|
||||
mavenCentral()
|
||||
maven("https://repo.papermc.io/repository/maven-public/")
|
||||
maven("https://repo.fancyplugins.de/releases")
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
maven(url = "https://jitpack.io")
|
||||
}
|
||||
}
|
||||
|
||||
BIN
docs/.DS_Store
vendored
Normal file
BIN
docs/.DS_Store
vendored
Normal file
Binary file not shown.
@@ -1,4 +1,4 @@
|
||||
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS builder
|
||||
FROM mcr.microsoft.com/dotnet/sdk:9.0 AS builder
|
||||
WORKDIR /build
|
||||
COPY . /build
|
||||
RUN dotnet tool install retypeapp --tool-path /bin
|
||||
|
||||
@@ -1,20 +1,20 @@
|
||||
input: src
|
||||
output: .retype
|
||||
url: https://fancyplugins.de
|
||||
url: https://docs.fancyinnovations.com
|
||||
branding:
|
||||
title: Fancy Plugins
|
||||
title: Fancy Innovations
|
||||
logo: /static/favicon.png
|
||||
favicon: /static/favicon.png
|
||||
links:
|
||||
- text: Website
|
||||
icon: globe
|
||||
link: https://fancyplugins.de
|
||||
link: https://fancyinnovations.com
|
||||
- text: Download
|
||||
icon: download
|
||||
link: https://modrinth.com/user/oliver
|
||||
- text: GitHub
|
||||
icon: mark-github
|
||||
link: https://github.com/fancymcplugins
|
||||
link: https://github.com/fancyinnovations
|
||||
- text: Discord
|
||||
icon: megaphone
|
||||
link: https://discord.gg/ZUgYCEJUEx
|
||||
@@ -26,10 +26,10 @@ footer:
|
||||
links:
|
||||
- text: Website
|
||||
icon: globe
|
||||
link: https://fancyplugins.de
|
||||
link: https://fancyinnovations.com
|
||||
- text: GitHub
|
||||
icon: mark-github
|
||||
link: https://github.com/fancymcplugins
|
||||
link: https://github.com/fancyinnovations
|
||||
- text: Discord
|
||||
icon: megaphone
|
||||
link: https://discord.gg/ZUgYCEJUEx
|
||||
|
||||
BIN
docs/src/.DS_Store
vendored
Normal file
BIN
docs/src/.DS_Store
vendored
Normal file
Binary file not shown.
1
docs/src/_includes/head.html
Normal file
1
docs/src/_includes/head.html
Normal file
@@ -0,0 +1 @@
|
||||
<script defer src="https://umami.fancyinnovations.com/script.js" data-website-id="31f4837e-6616-4699-9daf-ef8d9445b8e6"></script>
|
||||
@@ -1,58 +1,154 @@
|
||||
---
|
||||
visibility: hidden
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyplugins.de
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
description: The reasons why we switched to a monorepo for our Minecraft plugins and libraries.
|
||||
date: 2025-04-19
|
||||
title: 1.21.5 Update (Spring to Life)
|
||||
description: Everything you need to know about the 1.21.5 update.
|
||||
---
|
||||
|
||||

|
||||
|
||||
# 1.21.5 Update
|
||||
|
||||
In this article, we will talk about the changes in the 1.21.5 update, what that means for our plugins and how we will benefit from the Paper hardfork.
|
||||
|
||||
## Changes in 1.21.5 :icon-log:
|
||||
## :icon-log: Changes in 1.21.5
|
||||
|
||||
### Game changes
|
||||
!!!
|
||||
Official release notes can be found [here](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-5).
|
||||
!!!
|
||||
|
||||
**New Blocks and Features**
|
||||
### New Animal Variants
|
||||
|
||||
- Vegetation: Introduction of Firefly Bush, Leaf Litter, Wildflowers, Bush, Short Dry Grass, Tall Dry Grass, and Cactus Flower blocks, enhancing the natural diversity of various biomes. 
|
||||
- Fallen Trees: New fallen tree generation adds to the realism of forested areas. 
|
||||
- Ambient Sounds: Desert and Badlands biomes now feature new ambient block sounds, providing a more immersive environment.
|
||||
**Pigs, Cows, and Chickens** now have **warm and cold variants**, determined by the biome they spawn in.
|
||||
|
||||
**Farm Animals Variants**
|
||||
- **Warm Variants**: Found in deserts, jungles, badlands, etc.
|
||||
- **Cold Variants**: Found in snowy and End biomes.
|
||||
- Chickens lay new **Blue (cold)** and **Brown (warm)** eggs.
|
||||
- **Sheep** now spawn with wool color based on the biome's temperature:
|
||||
- **Cold**: Mostly black
|
||||
- **Warm**: Mostly brown
|
||||
- **Temperate**: Mostly white
|
||||
|
||||
Pigs, Cows, and Chickens now have warm and cold variants, determined by the biome in which they spawn. For instance, cold variants appear in biomes like Frozen Peaks and Snowy Plains, while warm variants are found in Deserts and Jungles. When bred, offspring randomly inherit one of the parent’s variants, irrespective of the current biome. Additionally, Chickens lay new types of eggs corresponding to their variants: Blue Eggs for cold Chickens and Brown Eggs for warm Chickens.
|
||||
### New Wolf Sound Personalities
|
||||
|
||||
**Sheep Wool Color**
|
||||
Wolves now randomly get one of **seven unique sound sets**:
|
||||
- Classic
|
||||
- Big
|
||||
- Cute
|
||||
- Puglin
|
||||
- Angry
|
||||
- Grumpy
|
||||
- Sad
|
||||
|
||||
Sheep wool color now depends on the biome:
|
||||
- Temperate biomes: Commonly white; uncommon colors include black, gray, light gray, and brown; rare chance for pink.
|
||||
- Cold biomes: Commonly black; uncommon colors are gray, light gray, white, and brown; rare chance for pink.
|
||||
- Warm biomes: Commonly brown; uncommon colors are black, white, gray, and light gray; rare chance for pink.
|
||||
Each variant has distinct ambient, growl, pant, whine, hurt, and death sounds.
|
||||
|
||||
**Spawn Eggs**
|
||||
### Spawn Egg Visual Overhaul
|
||||
|
||||
Visuals for Spawn Eggs have been overhauled to improve readability and accessibility, with designs reflecting the personality and size of the respective mobs.
|
||||
Spawn Eggs now visually reflect the **mob's personality and size**, improving readability and accessibility.
|
||||
|
||||
### New World Generation Features
|
||||
|
||||
**Fallen Trees**
|
||||
- Found in most forested biomes.
|
||||
- Come in **oak, birch, jungle**, and **spruce** variants.
|
||||
- Sometimes decorated with mushrooms or vines.
|
||||
|
||||
**Firefly Bush**
|
||||
- Grows near water in Swamps, Badlands, and Mangrove Swamps.
|
||||
- Emits light and glowing particles at night.
|
||||
- Can be bonemealed to spread.
|
||||
|
||||
**Leaf Litter**
|
||||
- Found in Forests and Dark Forests.
|
||||
- Placed in up to 4 layers per block.
|
||||
- Tinted based on biome and usable as fuel or compost.
|
||||
|
||||
**Wildflowers**
|
||||
- Found in Birch Forests, Meadows.
|
||||
- Stackable flowers that can be bonemealed.
|
||||
- Craftable into Yellow Dye.
|
||||
|
||||
**Bushes**
|
||||
- Appear in patches in Windswept, Birch, and River biomes.
|
||||
- Collectable with shears or Silk Touch.
|
||||
|
||||
**Dry Grass**
|
||||
- Short and Tall variants now generate in deserts and badlands.
|
||||
- Bonemealable and compostable.
|
||||
- Eaten by Sheep.
|
||||
|
||||
**Cactus Flowers**
|
||||
- Grow on Cactus blocks.
|
||||
- Used for Pink Dye or compost.
|
||||
- Require open space on all sides.
|
||||
|
||||
### Falling Leaf Particles
|
||||
|
||||
All **Leaf blocks** now randomly emit gentle falling leaf particles for added ambience.
|
||||
|
||||
### New Ambient Sounds
|
||||
|
||||
- **Desert and Badlands** blocks like sand and terracotta now emit subtle ambient sounds.
|
||||
- Dead Bushes can also trigger audio ambiance when placed on terracotta or sand.
|
||||
|
||||
### Visual & Gameplay Tweaks
|
||||
|
||||
- **New main menu panorama** for Spring to Life.
|
||||
- **Beacon beams** now render up to **2048 blocks high** and are thicker at long distances.
|
||||
- **Lodestones** have a new crafting recipe and spawn in Ruined Portals.
|
||||
- Updated textures for **Cows, Mooshrooms, and Sheep**.
|
||||
|
||||
### Cartographer & Wandering Trader Updates
|
||||
|
||||
**Cartographer**
|
||||
- Sells 7 new maps pointing to structures in different biomes.
|
||||
- Village-specific map offerings and colored banners.
|
||||
|
||||
**Wandering Trader**
|
||||
- Now buys **basic supplies** like water bottles, hay bales.
|
||||
- Offers new trades including **logs, potions**, and **enchanted tools**.
|
||||
|
||||
### Mob Spawning & Biomes
|
||||
|
||||
- **Camels** now spawn in Deserts.
|
||||
- **Cows, Pigs, Chickens, and Sheep** can spawn in **Badlands**.
|
||||
- **Woodland Mansions** can generate in the **Pale Garden** biome.
|
||||
- **Meadows** have slightly sparser short grass.
|
||||
|
||||
### Technical & Gameplay Improvements
|
||||
|
||||
- **Game Tests** are now accessible via datapacks using the `/test` command.
|
||||
- **Simulation distance** improvements: tick behavior for crops, snow, and cauldrons extended to all loaded chunks.
|
||||
- Various **networking, UI, and tooltip** enhancements.
|
||||
- Sound rebalancing and expanded **Iron block sound types**.
|
||||
|
||||
### Dev Features & Fixes
|
||||
|
||||
- New `--renderDebugLabels` argument for developers.
|
||||
- Enhanced **Game Test automation** with new command-line tools.
|
||||
- Reverted fix to sprint slowdown mechanics to improve parkour experience.
|
||||
- Minor fixes to **items, sounds, and Realms uploads**.
|
||||
|
||||
### And yes, as always...
|
||||
|
||||
> **Removed Herobrine.**
|
||||
|
||||
### Packet changes
|
||||
|
||||
Not much has changed in the packet system.
|
||||
Little has changed in the packet system.
|
||||
|
||||
Removed packets:
|
||||
**Removed packets**
|
||||
- `ClientboundAddExperienceOrb`
|
||||
|
||||
Added packets:
|
||||
**Added packets**
|
||||
- `ClientboundTestInstanceBlocksStatus`
|
||||
- `ServerboundSetTestBlock`
|
||||
- `ServerboundTestInstanceBlockAction`
|
||||
|
||||
## Changes in the plugins :icon-megaphone:
|
||||
## :icon-megaphone: Changes in the plugins
|
||||
|
||||
### FancyNpcs
|
||||
|
||||
@@ -60,11 +156,13 @@ FancyNpcs now supports 1.21.5. Update to version [2.5.0](https://modrinth.com/pl
|
||||
|
||||
**New Attributes:**
|
||||
|
||||
| Npc Type | Attr. Name | Possible Values |
|
||||
|----------|------------|-----------------------|
|
||||
| Pig | variant | temperate, cold, warm |
|
||||
| Cow | variant | temperate, cold, warm |
|
||||
| Chicken | variant | temperate, cold, warm |
|
||||
| Npc Type | Attr. Name | Possible Values |
|
||||
|----------|--------------|-----------------------|
|
||||
| Pig | variant | temperate, cold, warm |
|
||||
| Cow | variant | temperate, cold, warm |
|
||||
| Chicken | variant | temperate, cold, warm |
|
||||
| Cat | collar_color | (all colors) |
|
||||
| Wolf | collar_color | (all colors) |
|
||||
|
||||
|
||||
### FancyHolograms
|
||||
@@ -73,7 +171,7 @@ FancyHolograms now supports 1.21.5. Update to version [2.5.0](https://modrinth.c
|
||||
|
||||
There are no other changes in FancyHolograms.
|
||||
|
||||
## Paper Hardfork :icon-repo-forked:
|
||||
## :icon-repo-forked: Paper Hardfork
|
||||
|
||||
You can read about the reasons and changes in this article on the PaperMC forum: [The future of Paper - Hard fork](https://forums.papermc.io/threads/the-future-of-paper-hard-fork.1451/).
|
||||
It basically allows the Paper team to work on adding support for new versions after without having to wait on Spigot to update. This means that Paper is able to also update to snapshots, pre-releases and release candidates.
|
||||
@@ -83,4 +181,6 @@ This is perfect for us, because we can as well update our plugins faster to new
|
||||
|
||||
## Conclusion
|
||||
|
||||
We are excited about the new changes and the Paper hardfork. We are looking forward to updating our plugins to the new version and snapshots faster than before.
|
||||
We are excited about the new changes and the Paper hardfork. We are looking forward to updating our plugins to the new version and snapshots faster than before.
|
||||
|
||||
Read the full release notes of the 1.21.5 update [here](https://www.minecraft.net/en-us/article/minecraft-java-edition-1-21-5).
|
||||
132
docs/src/blog/dialog-use-cases.md
Normal file
132
docs/src/blog/dialog-use-cases.md
Normal file
@@ -0,0 +1,132 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
date: 2025-05-16
|
||||
title: "Unlocking the Power of Minecraft Dialogs: Creative Use-Cases for Dialogs"
|
||||
description: "Creative Use-Cases for Snapshot 25w20a’s New Feature"
|
||||
---
|
||||
|
||||
# 💡 Unlocking the Power of Minecraft Dialogs: Creative Use-Cases for Dialogs
|
||||
|
||||
With the introduction of **dialogs** in Minecraft Snapshot 25w20a, creators have been given a groundbreaking new tool to interact with players directly through structured, modal UI screens. But once you've learned what dialogs are, the next question becomes: **How can I actually use them in my world or server?**
|
||||
|
||||
In this post, we’ll explore a wide range of practical, creative, and even unexpected ways dialogs can enhance your Minecraft experience — whether you're building an adventure map, running a multiplayer server, or developing a plugin.
|
||||
|
||||
## 🧭 Guided Tutorials for New Players
|
||||
|
||||
One of the most immediate and accessible uses for dialogs is onboarding.
|
||||
|
||||
Traditionally, when a new player joins a server or world, they’re flooded with chat messages, signs, or confusing books. Important details like server rules, gameplay goals, and tips often get lost in the chaos.
|
||||
|
||||
**Dialogs change that.** You can now build multi-step tutorial flows using a series of dialogs, walking new players through:
|
||||
- Server rules and punishable behavior
|
||||
- World-specific mechanics
|
||||
- How to claim land or use commands
|
||||
- Economy and shop systems
|
||||
|
||||
Each step is clean, clickable, and easy to understand. Best of all, players can’t ignore them or miss important info in chat — it’s right there in front of them.
|
||||
|
||||
## 🎭 Branching Quests and RPG Storytelling
|
||||
|
||||
Dialogs shine in **story-driven gameplay**. With just a few structured dialogs, you can create rich, immersive narrative experiences.
|
||||
|
||||
Imagine an NPC asking a player if they want to accept a quest. The dialog presents two buttons:
|
||||
“Accept” or “Decline.”
|
||||
Depending on the player’s choice, the story continues down a different path — or the opportunity is missed.
|
||||
|
||||
Use dialogs to:
|
||||
- Offer moral decisions (help the villagers or betray them)
|
||||
- Trigger custom events or cutscenes
|
||||
- Let players ask NPCs questions
|
||||
- Show reputation-based choices (if player has enough favor)
|
||||
|
||||
Pairing dialogs with plugins like **FancyNpcs** allows you to build entire dialogue trees, similar to systems you'd see in RPGs like Skyrim or Fallout — all without a single mod.
|
||||
|
||||
## 🏛️ Server Administration and Safety Confirmations
|
||||
|
||||
For server admins, dialogs can act as **confirm screens** before important or destructive actions. Instead of relying on chat commands, you can show players a dialog that makes them confirm with a single click.
|
||||
|
||||
Some examples:
|
||||
- Confirming teleportation to a dangerous area
|
||||
- Accepting the cost of buying a plot of land
|
||||
- Agreeing to reset their stats or class
|
||||
- Warning before deleting inventory or data
|
||||
|
||||
This makes your systems more professional and reduces the chance of accidental actions — especially for younger or newer players.
|
||||
|
||||
## 🧠 Interactive Education and Training
|
||||
|
||||
Minecraft is used in education around the world. With dialogs, educators can build **interactive lessons and quizzes** inside the game, with structured progressions.
|
||||
|
||||
Example ideas:
|
||||
- Ask multiple-choice questions at the end of a lesson
|
||||
- Present facts or rules about an in-game mechanic
|
||||
- Guide students through a step-by-step tutorial with checkpoints
|
||||
|
||||
Dialogs make Minecraft more suitable for structured learning environments — a game-changing shift for Minecraft: Education Edition and similar initiatives.
|
||||
|
||||
## 🛍️ In-Game Shops and Menus
|
||||
|
||||
Many servers rely on complex item shops or menus built from chests, signs, or NPC GUIs. Dialogs simplify this dramatically.
|
||||
|
||||
Use dialogs to:
|
||||
- Offer limited-time items with descriptions
|
||||
- Ask players how many of an item they want to buy
|
||||
- Present choices for ranks, cosmetics, or kits
|
||||
- Upsell with “Are you sure?” confirmation boxes
|
||||
|
||||
The clean design of dialogs makes shopping experiences faster and easier to manage. You could even dynamically generate dialogs based on inventory or permissions using server-side tools.
|
||||
|
||||
## 🧪 Minigames and Game Modes
|
||||
|
||||
Dialogs can help streamline and elevate custom minigames. You can use them as:
|
||||
- Entry points into a match (e.g., “Join Red Team” or “Spectate”)
|
||||
- Mid-round announcements or votes
|
||||
- Reward claim screens
|
||||
- Final score summaries
|
||||
|
||||
Imagine a parkour map where, after reaching a checkpoint, a dialog offers the player a choice:
|
||||
**Retry**, **Continue**, or **Teleport to Start.**
|
||||
Suddenly, the game feels polished — like a real product.
|
||||
|
||||
## 🎨 Character Creation and Class Selection
|
||||
|
||||
Want to build a roleplay server with classes or custom roles? Use dialogs to guide players through character creation.
|
||||
|
||||
For example:
|
||||
1. Dialog 1: Choose your race (Human, Elf, Orc)
|
||||
2. Dialog 2: Choose your class (Warrior, Mage, Thief)
|
||||
3. Dialog 3: Accept or reset choices
|
||||
|
||||
This turns setup into a fully visual, immersive process — without relying on chat input or unintuitive command blocks.
|
||||
|
||||
## 🏹 Custom Combat Decisions and Abilities
|
||||
|
||||
With some creativity and plugins, you could use dialogs in combat systems too.
|
||||
|
||||
Examples:
|
||||
- Trigger special abilities with cooldowns via dialog buttons
|
||||
- Let players choose attack styles mid-fight
|
||||
- Present strategic choices (e.g., “Use potion or flee?”)
|
||||
- Pause solo boss fights to simulate turn-based combat
|
||||
|
||||
While dialogs are modal (they pause interaction), this actually works well in single-player or small-scale scenarios where intentional decision-making matters more than real-time chaos.
|
||||
|
||||
## 🤯 And Beyond: What Will You Build?
|
||||
|
||||
Dialogs are an incredibly flexible system. They give creators a native, moddable interface that feels both powerful and safe. Combined with existing mechanics — like advancements, commands, loot tables, or custom plugins — the sky is truly the limit.
|
||||
|
||||
Whether you’re guiding a new player through a peaceful farm world or orchestrating a complex sci-fi RPG with factions and dialog trees, this tool changes what’s possible in vanilla Minecraft.
|
||||
|
||||
## 🔗 Try It Yourself
|
||||
|
||||
You can read about dialogs in Mojang’s official post here:
|
||||
👉 [Minecraft Snapshot 25w20a](https://www.minecraft.net/en-us/article/minecraft-snapshot-25w20a)
|
||||
|
||||
Be sure to follow FancyInnovations as we continue to bring modern, immersive tools to Minecraft creators everywhere.
|
||||
|
||||
_Oliver_
|
||||
158
docs/src/blog/fa-dev-log-1.md
Normal file
158
docs/src/blog/fa-dev-log-1.md
Normal file
@@ -0,0 +1,158 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
date: 2025-06-21
|
||||
title: "FancyAnalytics Dev Log #1"
|
||||
description: "The rewrite of FancyAnalytics is underway! In this first dev log, we will take a look at the current state of the backend."
|
||||
---
|
||||
|
||||

|
||||
|
||||
## State of the platform
|
||||
|
||||
Let's start by looking at the numbers. There are **46** registered users and **40** users are still on the waiting list.
|
||||
On the discord server, there are **277** members having the FancyAnalytics role.
|
||||
In total, there are 52 projects, but only a handful of them receive continuous data.
|
||||
The **1018** metrics are being visualized in **98** dashboards, which include **872** charts.
|
||||
|
||||
There are **1.28** million recorded data points. One data point contains values for all metrics of a project at a specific time.
|
||||
The total number of errors is **715k**, and the total number of events is **497k** with **60** different event types.
|
||||
|
||||

|
||||
|
||||
*(In March, I added an compression algorithm, which reduced the number of the data points by about **70%**.)*
|
||||
|
||||
FancyAnalytics receives data from **6300 to 6700** unique clients per day, with a total of **18.4 million** requests per day.
|
||||
|
||||

|
||||
|
||||
I think these numbers are quite impressive for a project that is still in beta and has almost no marketing.
|
||||
|
||||
Now let's take a look at the current tech stack and architecture of FancyAnalytics.
|
||||
The backend is written in Java and uses the lightweight framework [Javalin](https://javalin.io/) for the webserver.
|
||||
The website is made with Vue.js and [Vuetify](https://vuetifyjs.com/en/) (component library).
|
||||
There is one generic Java SDK and one SDK for Minecraft plugins. FancyAnalytics also provides a plugin for the Minecraft server software Paper.
|
||||
All data is stored in MongoDB and Redis is used for caching.
|
||||
|
||||
Two servers are used to run the backend.
|
||||
On the first server, the main backend and all databases are running.
|
||||
There are two instances running on the second server.
|
||||
All instances of the backend receive data from the clients and cache them in Redis.
|
||||
The main instance is then responsible for aggregating the data and writing it to MongoDB.
|
||||
Nginx is used as a reverse proxy to route the requests to the correct instance.
|
||||
There is also a backup instance that is used to handle the requests if all other instances are down.
|
||||
It just response with 200 OK and does not write any data to the database.
|
||||
|
||||
## The problems with the current architecture
|
||||
|
||||
### Scalability
|
||||
|
||||
Since javalin is already a lightweight framework, it still uses a lot of memory (around 2 GB per instance).
|
||||
There is only one backend, and you can toggle certain capabilities on and off using environment variables.
|
||||
This works but it is not very flexible and does not allow for easy scaling.
|
||||
|
||||
Using MongoDB for analytical data is not ideal, as it is not optimized for querying and inserting large amounts of data - even with indexes.
|
||||
The flexibility of MongoDB is great for the general business data, but it is not suitable for analytical data.
|
||||
There are databases that are specifically designed for analytical data, such as DuckDB or ClickHouse.
|
||||
|
||||
### Performance
|
||||
|
||||
The API has few query capabilities, which makes it hard to get the data you really want.
|
||||
You need to fetch all data and then filter it on the client side (e.g., 6 kb response but only using one data point).
|
||||
|
||||
Let's imagine a Minecraft server with the following plugins:
|
||||
- FancyAnalytics
|
||||
- FancyNpcs
|
||||
- FancyHolograms
|
||||
- FancyDialogs
|
||||
|
||||
Each plugin sends analytical data to FancyAnalytics, every 30 seconds. That means eight requests per minute just from this server.
|
||||
These requests can be combined into one request every 30 seconds, containing all data from all plugins.
|
||||
|
||||
## What to expect in the future
|
||||
|
||||
I'm currently working on a complete rewrite of the backend, which will address all the problems mentioned above.
|
||||
There will be 6 different services, each responsible for a specific tasks.
|
||||
No more Java, the backend will be completely written in **GoLang**.
|
||||
|
||||
### Collector
|
||||
|
||||
The collector is only responsible for receiving data from the clients and handing it to the ingestor.
|
||||
It will forward the data to the ingestor via a message queue (NATS).
|
||||
That means even when the ingestor is down, the collector can still receive data and will not lose any data.
|
||||
There will be multiple collector instances running, to handle the load.
|
||||
|
||||
### Ingestor
|
||||
|
||||
The ingestor is responsible for processing the data received from the collector and writing it to the database.
|
||||
It will also handle the aggregation of the data and write it to the analytical database.
|
||||
The ingestor has no public API and is only used by the collector.
|
||||
|
||||
### Core
|
||||
|
||||
The core service will handle the business logic of FancyAnalytics. It is basically the old backend, but rewritten to be more modular and scalable.
|
||||
It's responsible for managing the projects, dashboards, metrics, queries ...
|
||||
|
||||
### IDP (Identity Provider)
|
||||
|
||||
The IDP will handle everything related to user management, authentication, and authorization.
|
||||
The current system only allows for username/password authentication, but the new IDP will support multiple authentication methods, such as "login with Google".
|
||||
Access tokens will be reworked to be more performant and flexible.
|
||||
The IDP will also handle email verification and password reset.
|
||||
|
||||
### Website
|
||||
|
||||
The website backend service will be responsible for serving the website and further docs in the future.
|
||||
|
||||
### Router
|
||||
|
||||
I'm replacing Nginx with a custom router service, which will route the requests to the correct service.
|
||||
It supports load balancing and can route the requests based on the URL.
|
||||
|
||||
### Databases
|
||||
|
||||
We will still use MongoDB for the business data, but we will switch to DuckDB or ClickHouse for the analytical data.
|
||||
These are OLAP databases that are specifically designed for analytical queries and can handle large amounts of data efficiently.
|
||||
We will also use Redis for caching and use NATS as a message queue to decouple the services and make them more scalable.
|
||||
|
||||
## Coming features
|
||||
|
||||
Soon you will be able to store **logs** in FancyAnalytics, which will allow you to track errors and other log messages from your applications.
|
||||
This is great for debugging and monitoring your applications.
|
||||
|
||||
**Alerts** is a highly requested feature, which will allow you to set up alerts based on certain conditions.
|
||||
You can set up alerts for when a metric exceeds a certain threshold or when an error occurs.
|
||||
You will be able to receive notifications via email, Discord, or other channels.
|
||||
|
||||
Another highly requested feature is **public dashboards**, which will allow you to share your dashboards with others (read-only).
|
||||
This is great for sharing your analytics with your team or the public.
|
||||
This feature will also include the ability to embed the dashboards or single charts in other websites.
|
||||
|
||||
**Templates** are another feature that will allow you to easily create dashboards and charts.
|
||||
A template contains a set of metrics and predefined dashboards that can be used to quickly set up a project.
|
||||
Example templates could be:
|
||||
- Minecraft server template: Contains metrics for player count, TPS, and plugin usage
|
||||
- Minecraft plugin template: Contains metrics for plugin usage, server software and version
|
||||
- Discord bot template: Contains metrics for server count, user count, and message count
|
||||
- General Java application template: Contains metrics for memory usage, CPU usage, and garbage collection
|
||||
- Web application template: Contains metrics for page views, user sessions, and errors
|
||||
|
||||
FancyAnalytics is not only for Minecraft related projects, but can be used anywhere.
|
||||
In addition to the Java SDK, we will also provide a **Go and JavaScript SDK**.
|
||||
The Go SDK will be used for the backend services, while the JavaScript SDK will be used for web applications.
|
||||
|
||||
## Conclusion
|
||||
|
||||
The rewrite of FancyAnalytics is a big step forward and will address all the problems we have with the current architecture.
|
||||
I'm excited to see how the new architecture will improve the performance and scalability of FancyAnalytics.
|
||||
It will still take some time until the new architecture is ready, but I will keep you updated on the progress.
|
||||
|
||||
Thank you to everyone who already uses FancyAnalytics and provides feedback. I'm looking forward to accept more users after the rewrite is finished.
|
||||
|
||||
If you have any questions or suggestions, feel free to join the [Discord server](https://discord.gg/ZUgYCEJUEx) or dm me on Discord (real_oliver).
|
||||
|
||||
_Oliver_
|
||||
139
docs/src/blog/fa-dev-log-2.md
Normal file
139
docs/src/blog/fa-dev-log-2.md
Normal file
@@ -0,0 +1,139 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
date: 2025-08-20
|
||||
title: "FancyAnalytics Dev Log #2"
|
||||
description: "We're getting closer to v1 of FancyAnalytics!"
|
||||
---
|
||||
|
||||

|
||||
|
||||
## Some numbers
|
||||
|
||||
Let's start by looking at some numbers, which have changed since the last dev log.
|
||||
There are +30 new users on the waiting list, bringing the total to **70** users on the list.
|
||||
This is a good sign that people are interested in FancyAnalytics and want to use it.
|
||||
|
||||
The number of recorded data points has increased to **1.4 million** and the total number of errors is now **1 million**.
|
||||
The total number of events is now **0.7 million** with **69** different event types.
|
||||
|
||||
FancyAnalytics now receives data from about **9500** unique clients per day (+ 46% :O), with a total of **27.4 million** incoming requests per day.
|
||||
|
||||

|
||||
|
||||
It's impressive to see how FancyAnalytics is growing, even without any marketing.
|
||||
|
||||
## Check your email address!
|
||||
|
||||
Some of you have no email address set in your profile. A valid email address is required to use v1 of FancyAnalytics, once it is released.
|
||||
|
||||
Please check your profile and set a valid email address. You can do this in the profile page of the website.
|
||||
|
||||

|
||||
|
||||
You can only set your email address if it's not a valid email address.
|
||||
In the first few months of the beta phase, I manually created accounts for users who wanted to try FancyAnalytics and used their Discord username as the email address.
|
||||
So everyone has to set their email address manually before v1 is released!
|
||||
|
||||
## The new API
|
||||
|
||||
### Metrics
|
||||
|
||||
In FancyAnalytics v1, metrics will become way more powerful and flexible.
|
||||
The first decision you have to make is whether your metric is a **pull-based** or **push-based** metric.
|
||||
The key difference is who is responsible for sending the metric data to the FancyAnalytics API.:
|
||||
- **Push-based**: the client (e.g. Minecraft server) proactively sends the metric data to the FancyAnalytics API every X seconds.
|
||||
- **Pull-based**: FancyAnalytics will request the metric data from the client every X seconds.
|
||||
|
||||
When your metric is a pull-based metric, you can define the endpoint (e.g. `https://minecraftserver.com/metrics`) and the interval (in seconds) at which FancyAnalytics should request the data.
|
||||
|
||||
If your metric is a push-based metric, you need to decide whether it's a **multi-sender** or **single-sender** metric.
|
||||
As the name suggests, a multi-sender metric can be sent by multiple clients (e.g., everyone who uses your Minecraft plugin) at the same time, while a single-sender metric can only be sent by one client at a time (your personal Minecraft server).
|
||||
If you choose a multi-sender metric, you can set the aggregation interval (in seconds) at which FancyAnalytics should aggregate the data from all clients.
|
||||
You can also choose to apply extra aggregation functions to the data, such as `sum`, `avg`, `min`, `max`, and `count`.
|
||||
|
||||
Currently, the structure of a metric looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"project_id": "FancyNpcs",
|
||||
"metric_id": "npc_count",
|
||||
"name": "NPC Count",
|
||||
|
||||
"multi_sender": true,
|
||||
"aggregation_interval": 300,
|
||||
"apply_extra_aggregation": true,
|
||||
|
||||
"pull_metric": false,
|
||||
"pull_interval": 0,
|
||||
"pull_url": ""
|
||||
}
|
||||
```
|
||||
|
||||
### Metric data
|
||||
|
||||
The data structure of a metric data point has also changed. Metrics now **only** support numeric values, which can be either an integer or a floating point.
|
||||
You can now group metric data points by **labels**, which is the alternative to the string-based metrics. You can think of labels as "sub-metrics" that can be used to differentiate between different data points of the same metric.
|
||||
The label field is optional, so you can still send a metric without labels.
|
||||
|
||||
The new data structure looks like this:
|
||||
|
||||
```json
|
||||
{
|
||||
"sender_id": "sender-1",
|
||||
"project_id": "FancyNpcs",
|
||||
"data": [
|
||||
{
|
||||
"metric": "npc_types",
|
||||
"label": "player",
|
||||
"value": 40.0
|
||||
},
|
||||
{
|
||||
"metric": "npc_types",
|
||||
"label": "cow",
|
||||
"value": 10.0
|
||||
},
|
||||
{
|
||||
"metric": "npc_actions",
|
||||
"value": 123
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Identity Provider
|
||||
|
||||
Since the last dev log, I have also made some progress on the identity provider (idp) service.
|
||||
|
||||
The idp service is responsible for user authentication and identity management. It will handle two central tasks:
|
||||
- **User management**: Registration, login, password management, verification, roles, custom metadata, etc.
|
||||
- **Token management**: Creating, refreshing, and validating tokens for authenticated users
|
||||
|
||||
The user management part is almost completely implemented and works well. Only OCID user registration (sign in via Google, GitHub or Discord) and the forgot password flow are still missing.
|
||||
|
||||
The token management part is already implemented and works well, too. It now uses JWT tokens, which are more secure and easier to use than the previous token system.
|
||||
|
||||
I still need to figure out a way to prevent brute force attacks on the login endpoint and implement rate limiting for the API.
|
||||
If you have any suggestions on how to implement this, feel free to join the [Discord server](https://discord.gg/ZUgYCEJUEx) and let me know :D
|
||||
|
||||
## Next steps
|
||||
|
||||
The next step for FancyAnalytics is to finish the idp service and make user management available in the new web interface (a dedicated dev log about the new UI will follow).
|
||||
After that, I will focus on the core service and UI, which will be the main part of FancyAnalytics v1.
|
||||
|
||||
## Conclusion
|
||||
|
||||
FancyAnalytics is making great progress and is getting closer to the v1 release.
|
||||
I still can't give you a specific date for the release, as I still have a lot of work to do, but I hope you are as excited as I am about the upcoming features and improvements.
|
||||
|
||||
Thank you for your continued support and interest in FancyAnalytics!
|
||||
|
||||
You can still join the [waiting list](https://fancyanalytics.net/register/) and get access to the beta version once it's available.
|
||||
|
||||
If you have any questions or suggestions, feel free to join the [Discord server](https://discord.gg/ZUgYCEJUEx) or dm me on Discord (real_oliver).
|
||||
|
||||
_Oliver_
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyplugins.de
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
@@ -18,7 +18,7 @@ With the new monorepo, the docs are now even closer to the code, which makes it
|
||||
In addition, we have improved the structure and added new content.
|
||||
|
||||
!!!
|
||||
You can find the new documentation at [https://docs.fancyplugins.de](https://docs.fancyplugins.de)
|
||||
You can find the new documentation at [https://docs.fancyinnovations.com](https://docs.fancyinnovations.com)
|
||||
!!!
|
||||
|
||||
## Reasons
|
||||
@@ -62,5 +62,5 @@ We are also working on a section about the product direction and roadmap. You wi
|
||||
## Conclusion
|
||||
|
||||
We are happy with the new documentation and hope you like it too.
|
||||
Visit [https://docs.fancyplugins.de](https://docs.fancyplugins.de) to check it out.
|
||||
Visit [https://docs.fancyinnovations.com](https://docs.fancyinnovations.com) to check it out.
|
||||
If you have any feedback or suggestions, feel free to join our Discord server and let us know.
|
||||
70
docs/src/blog/what-are-minecraft-dialogs.md
Normal file
70
docs/src/blog/what-are-minecraft-dialogs.md
Normal file
@@ -0,0 +1,70 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
date: 2025-05-15
|
||||
title: What Are Minecraft Dialogs? A Deep Dive into Snapshot 25w20a’s New Feature
|
||||
description: "A Deep Dive into Snapshot 25w20a’s New Feature: Minecraft Dialogs"
|
||||
---
|
||||
|
||||
# What Are Minecraft Dialogs? A Deep Dive into Snapshot 25w20a’s New Feature
|
||||
|
||||
With the release of **Minecraft Snapshot 25w20a**, Mojang has quietly introduced one of the most powerful UI tools the game has ever seen: **Dialogs**. Still in an experimental stage, this feature unlocks a whole new way to interact with players — not through chat commands or signs, but with native, in-game screens that deliver structured content and present players with real choices.
|
||||
|
||||
For map makers, server owners, and plugin developers, dialogs offer a bridge between immersive storytelling and technical clarity. In this article, we’ll explore what dialogs are, how they function under the hood, what safety features Mojang has put in place, and why this could be the start of a new era for Minecraft content creation.
|
||||
|
||||
## 📜 What Exactly Are Dialogs in Minecraft?
|
||||
|
||||
At their core, dialogs are **modal UI screens** — meaning they appear in front of the player and require an action (like clicking a button) before gameplay can continue. They resemble the kind of pop-up windows you'd see in classic RPGs or adventure games: clean, purposeful, and highly interactive.
|
||||
|
||||
These dialogs can display information, guide the player through decisions, and present buttons that let them make a choice. Whether you're asking a player to accept a quest, read a rule, confirm a trade, or choose a faction, dialogs are designed to keep the interaction intuitive and immersive — and, most importantly, built right into vanilla Minecraft.
|
||||
|
||||
Until now, developers and builders had to rely on inventories, books, signs, scoreboard titles, or chat messages to deliver structured information. Dialogs replace all that with something more focused, more flexible, and far more professional.
|
||||
|
||||
## 🧪 Dialogs Are Still Experimental — And That’s a Good Thing
|
||||
|
||||
Because dialogs are new and powerful, Mojang has chosen to label them as **experimental** — a wise decision, considering the risks and implications of introducing UI screens that custom content creators can control.
|
||||
|
||||
To ensure a safe and transparent experience, every dialog includes a warning icon at the top of the screen. This visual cue tells players, “You’re looking at a custom dialog.” But it doesn’t stop there. If a player clicks the warning, a second dialog opens to explain what’s happening — and provides a critical escape hatch: the option to **leave the world immediately**.
|
||||
|
||||
This extra layer of safety prevents malicious use. It also ensures that players aren’t trapped in infinite dialog loops — a potential abuse scenario that Mojang has carefully preempted. While dialogs may seem like a UI convenience, Mojang clearly understands their power and is taking the rollout seriously.
|
||||
|
||||
## 📦 Dialogs Under the Hood: A Look at the Registry
|
||||
|
||||
From a technical perspective, dialogs are part of a new registry in the game called `minecraft:dialog`. This means dialogs are no longer just abstract functions — they are **defined content types** that can be stored, loaded, and reused across a world or data pack.
|
||||
|
||||
Creators can define dialogs using JSON files inside a data pack, making them easy to edit and version control. These dialogs can either be referenced from the registry or defined inline — giving developers the choice between modularity and one-off implementation.
|
||||
|
||||
This registry-based model isn’t just a convenience for coders. It’s a sign that Mojang is moving toward more structured, modular systems in Minecraft’s backend — and that means more scalable content, easier debugging, and greater consistency across projects.
|
||||
|
||||
## 🛠️ How Dialogs Can Transform Custom Content
|
||||
|
||||
Let’s talk about the practical side of things. For server owners and map makers, dialogs offer massive benefits in terms of clarity, engagement, and immersion.
|
||||
|
||||
Take tutorials, for example. Instead of bombarding new players with walls of chat text or signs at spawn, you can now greet them with a dialog that walks them through the server rules step by step. Dialogs provide structure, pacing, and a sense of professionalism that text alone often fails to deliver.
|
||||
|
||||
In roleplaying and adventure maps, dialogs can serve as actual conversations. Pairing them with NPCs — especially using plugins like FancyNpcs — allows you to create branching dialogues, player decisions, and interactive quests, all without external mods. Players can read backstory, choose a response, and watch the world react — just like in a traditional RPG.
|
||||
|
||||
Dialogs also shine in gameplay systems. You can present confirmation screens before teleporting a player, deleting an item, or entering a dungeon. Want to let players choose their class, guild, or starter item? Present them with a dialog instead of clunky commands or GUI menus. Everything becomes more elegant.
|
||||
|
||||
And the best part? All of this is possible **without a single mod**, using just data packs and, eventually, server plugins.
|
||||
|
||||
## 🎮 Why This Feature Is a Game-Changer
|
||||
|
||||
At first glance, dialogs might seem like a small feature. But they represent a fundamental shift in how Minecraft content is delivered and experienced. Mojang is actively building tools that were once only possible through heavy modding — and bringing them into the core game, thoughtfully and responsibly.
|
||||
|
||||
Dialogs aren't just convenient — they're empowering. They give creators the ability to build richer narratives, more complex decision systems, and more immersive gameplay without writing a single line of chat text. For players, they mean cleaner instructions, clearer choices, and more engagement with the world around them.
|
||||
|
||||
It’s not an exaggeration to say that dialogs could become one of the most important features for Minecraft creators in the years to come.
|
||||
|
||||
## 📚 Learn More and Stay Ahead
|
||||
|
||||
If you’re curious to see how dialogs are defined or want to experiment with them yourself, you can dive into the official announcement here:
|
||||
👉 [Minecraft Snapshot 25w20a](https://www.minecraft.net/en-us/article/minecraft-snapshot-25w20a)
|
||||
|
||||
The dialog system is just beginning to evolve, but it’s already clear: the way we build Minecraft experiences is about to change — and for the better.
|
||||
|
||||
_Oliver_
|
||||
@@ -1,10 +1,11 @@
|
||||
---
|
||||
authors:
|
||||
- name: Oliver Schlüter
|
||||
email: oliver@fancyplugins.de
|
||||
email: oliver@fancyinnovations.com
|
||||
link: https://github.com/OliverSchlueter
|
||||
avatar: https://avatars.githubusercontent.com/u/79666085?v=4
|
||||
|
||||
date: 2025-03-21
|
||||
description: The reasons why we switched to a monorepo for our Minecraft plugins and libraries.
|
||||
---
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 80
|
||||
---
|
||||
# Contributing
|
||||
@@ -29,7 +30,7 @@ Follow the format described in the [Monorepo](monorepo.md) guidelines.
|
||||
|
||||
Please make sure that your code is tested before marking the pull request as ready for review. This means that the code should compile and run without any errors. If you are unsure about how to test your code, please join our Discord server and ask for help.
|
||||
|
||||
When creating a PR for FancyNpcs, please run the `/fancynpcs test` command in-game and attach a screenshot of the output to the PR.
|
||||
When creating a PR for FancyNpcs, please run the `/fancynpcs run_tests` command in-game and attach a screenshot of the output to the PR.
|
||||
|
||||
### Documentation
|
||||
|
||||
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
order: 1
|
||||
icon: shield
|
||||
redirect: contributing
|
||||
---
|
||||
@@ -0,0 +1,2 @@
|
||||
order: 1
|
||||
icon: shield
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
order: 8
|
||||
icon: dot
|
||||
---
|
||||
|
||||

|
||||
@@ -11,6 +12,12 @@ order: 8
|
||||
A monorepo (monolithic repository) is a version control strategy where multiple related projects, such as Minecraft plugins and libraries, reside within a single repository.
|
||||
Instead of maintaining separate repositories for each plugin or library, all codebases share the same version control system, dependencies, and development workflow.
|
||||
|
||||
Read more about monorepos there:
|
||||
- https://monorepo.tools/
|
||||
- https://medium.com/@lewimuchiri/setting-up-a-gradle-monorepo-with-spring-boot-and-version-catalogs-41fdf1112dac
|
||||
- https://dev.to/scorsi/why-i-choose-to-use-a-mono-repo-for-a-very-large-project-hkp
|
||||
- https://docs.gradle.org/current/userguide/intro_multi_project_builds.html
|
||||
|
||||
## Benefits of a Monorepo
|
||||
|
||||
- **Code Reuse**: Share common libraries between plugins without duplication.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Release Workflow
|
||||
|
||||
This document describes the steps to be taken when releasing a new version of a plugin.
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 9
|
||||
---
|
||||
# Versioning
|
||||
@@ -8,7 +9,7 @@ We use [Semantic Versioning](https://semver.org/) (Semver) for versioning.
|
||||
The version is structured as follows: `major.minor.patch.<build id>`. The build id is optional and is only used for
|
||||
development builds.
|
||||
|
||||
!!! warning
|
||||
!!!warning
|
||||
This versioning system is not getting used yet. We will start applying the rules in the version 3.0.0 of all plugins.
|
||||
!!!
|
||||
|
||||
|
||||
38
docs/src/fancyanalytics/fancyanalytics.md
Normal file
38
docs/src/fancyanalytics/fancyanalytics.md
Normal file
@@ -0,0 +1,38 @@
|
||||
---
|
||||
title: FancyAnalytics
|
||||
icon: graph
|
||||
order: 80
|
||||
---
|
||||
|
||||
#
|
||||
|
||||

|
||||
|
||||
!!!
|
||||
The modern analytics platform for Minecraft server owners and plugin developers
|
||||
!!!
|
||||
|
||||
## Features
|
||||
|
||||
With FancyAnalytics, you will be able to understand the behavior of your users like never before. You will be able to:
|
||||
|
||||
- Collect metrics like player count, server uptime, and more
|
||||
- Track events like player joins, deaths, and more
|
||||
- Visualize your data with beautiful charts and graphs on multiple dashboards
|
||||
- Analyze errors and exceptions that occur on your server or in your plugins
|
||||
|
||||
FancyAnalytics is still in development, but we are working hard to bring you the best analytics platform for Minecraft. We plan to add many more features in the future, including:
|
||||
- Pre-defined metrics and dashboards for popular plugins
|
||||
- Community-driven metrics and dashboards
|
||||
- Alerts and notifications for important events
|
||||
- Real-time data streaming
|
||||
- Log viewing and analysis
|
||||
- Organization and team management
|
||||
- Survey and feedback collection
|
||||
- Support and issue tracking
|
||||
|
||||
## Getting Started
|
||||
|
||||
Getting started with FancyAnalytics is easy!
|
||||
Just create an account on our website ([fancyanalytics.net](https://fancyanalytics.net)) and follow the instructions to set up your server or plugin.
|
||||
You can also check out our documentation for more information on how to use FancyAnalytics.
|
||||
21
docs/src/fancyanalytics/features/alerts.md
Normal file
21
docs/src/fancyanalytics/features/alerts.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 100
|
||||
---
|
||||
|
||||
# Alerts (soon)
|
||||
|
||||
Our analytics platform allows you to define **alerts** that notify you when something important happens — a metric crosses a threshold, an event occurs, or an error spikes.
|
||||
|
||||
With alerts, you can **react faster**, **stay informed**, and **automate monitoring** for your apps, plugins, or services.
|
||||
|
||||
## What is an Alert?
|
||||
|
||||
An **alert** is a rule that monitors your data in real-time and triggers a notification when conditions are met.
|
||||
|
||||
You can create alerts for:
|
||||
|
||||
- **Metrics** — e.g. `cpu_usage_percent > 90`
|
||||
- **Events** — e.g. `event == 'minecraft_server_crashed'`
|
||||
- **Errors** — e.g. `5+ errors in 10s`
|
||||
- **Logs** — e.g. `ERROR logs > 10 in 1 minute`
|
||||
22
docs/src/fancyanalytics/features/errors.md
Normal file
22
docs/src/fancyanalytics/features/errors.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 300
|
||||
---
|
||||
|
||||
# Errors
|
||||
|
||||
Our analytics platform supports error and exception tracking across all projects.
|
||||
|
||||
Errors are structured records of exceptions that occur in your applications.
|
||||
They help you **debug**, **monitor stability**, and **gain insights into failure patterns**.
|
||||
|
||||
|
||||
## What is an Error?
|
||||
|
||||
An **error** represents a crash, exception, or runtime issue that happened inside an application. It includes:
|
||||
|
||||
- A **timestamp**
|
||||
- The **exception class** (e.g. `NullPointerException`)
|
||||
- The **exception message**
|
||||
- The **stack trace**
|
||||
- Optional **custom properties** for extra context
|
||||
30
docs/src/fancyanalytics/features/events.md
Normal file
30
docs/src/fancyanalytics/features/events.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 400
|
||||
---
|
||||
|
||||
# Events
|
||||
|
||||
**Events** are time-stamped, structured logs that describe something that **happened** in your application.
|
||||
They are flexible, contextual, and great for tracking user behavior, system actions, feature usage, and more.
|
||||
|
||||
## What is an Event?
|
||||
|
||||
An **event** is:
|
||||
|
||||
- Identified by an **event name** (e.g. `npc_spawned`, `command_used`, `plugin_loaded`)
|
||||
- Has a **timestamp**
|
||||
- Sent by a **sender** (e.g., server, client, device)
|
||||
- It Can include any number of **properties** (flexible key-value pairs)
|
||||
|
||||
Unlike metrics, events are **not numeric by default**, but rather represent **something that occurred**, and may include rich context.
|
||||
|
||||
## Example Use Cases
|
||||
|
||||
| Event Name | Properties | Description |
|
||||
|---------------------|---------------------------------|------------------------------------------|
|
||||
| `npc_spawned` | world_name, npc_type | Fired whenever an NPC is spawned in-game |
|
||||
| `feature_flag_used` | feature_flag | Tracked when a feature is enabled/used |
|
||||
| `plugin_loaded` | plugin_version, server_software | When the plugin successfully loads |
|
||||
| `command_executed` | command, player | A player runs a specific command |
|
||||
| `player_joined` | player, location | A player joins the server |
|
||||
2
docs/src/fancyanalytics/features/features.yml
Normal file
2
docs/src/fancyanalytics/features/features.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: sparkles-fill
|
||||
order: 500
|
||||
19
docs/src/fancyanalytics/features/logs.md
Normal file
19
docs/src/fancyanalytics/features/logs.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 200
|
||||
---
|
||||
|
||||
# Logs (soon)
|
||||
|
||||
Our analytics platform supports **structured logging** — a powerful way to capture detailed logs with context for debugging, monitoring, and analysis.
|
||||
Structured logs go beyond plain text by capturing logs in a **machine-readable, structured format** with support for levels, timestamps, and custom properties.
|
||||
|
||||
## 💡 What is a Structured Log?
|
||||
|
||||
A **structured log** is:
|
||||
|
||||
- A **timestamped message**
|
||||
- With a **log level** (e.g. `INFO`, `WARN`, `ERROR`)
|
||||
- And **optional structured properties** (key-value pairs)
|
||||
|
||||
This makes logs **queryable**, **filterable**, and easy to **analyze programmatically**.
|
||||
34
docs/src/fancyanalytics/features/metrics.md
Normal file
34
docs/src/fancyanalytics/features/metrics.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 500
|
||||
---
|
||||
|
||||
# Metrics
|
||||
|
||||
Metrics are **numerical values** that represent the state, performance, or behavior of your application over time.
|
||||
They are the core building blocks of the analytics platform — enabling insights, dashboards, alerts, and aggregation across many data sources.
|
||||
|
||||
## What is a Metric?
|
||||
|
||||
A **metric** is:
|
||||
|
||||
- Identified by a **name** (e.g. `cpu_usage_percent`, `online_players`, `npc_type_pig`)
|
||||
- Reported by one or more **senders** (e.g., a game server, plugin, or application)
|
||||
- Includes exact one **numeric value**
|
||||
|
||||
Each metric is sent at a point in time and represents a measurable value from your application or environment.
|
||||
|
||||
## What Can Be a Metric?
|
||||
|
||||
Anything that can be measured numerically:
|
||||
|
||||
| Metric Name | Example Value | Description |
|
||||
|---------------------|---------------|-------------------------------------|
|
||||
| `cpu_usage_percent` | `42.5` | Current CPU usage in percent |
|
||||
| `online_players` | `10` | Number of players online |
|
||||
| `npc_count` | `123` | Total NPCs spawned on a game server |
|
||||
| `npc_count_pig` | `5` | Number of pig NPCs |
|
||||
| `plugin_enabled` | `1` (true) | Boolean values are converted to 1/0 |
|
||||
| `tps` | `20` | Ticks per second |
|
||||
| `network_in_kb` | `512` | Incoming network traffic |
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
icon: info
|
||||
order: 400
|
||||
83
docs/src/fancyanalytics/getting-started/java-sdk.md
Normal file
83
docs/src/fancyanalytics/getting-started/java-sdk.md
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 300
|
||||
---
|
||||
|
||||
# Java SDK
|
||||
|
||||
!!!danger
|
||||
The FancyAnalytics platform is still in development. Expect breaking changes in the future.
|
||||
!!!
|
||||
|
||||
If you are a Java developer, who wants to track metrics about your Java application, without being in the Minecraft ecosystem, you can use our Java SDK.
|
||||
The Java SDK is a general purpose SDK which can be used to track metrics about any Java application.
|
||||
|
||||
## Include the Java SDK
|
||||
|
||||
### Gradle
|
||||
|
||||
```kotlin
|
||||
repositories {
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
}
|
||||
```
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
implementation("de.oliver.fancyanalytics:java-sdk:VERSION")
|
||||
}
|
||||
```
|
||||
|
||||
### Maven
|
||||
|
||||
```xml
|
||||
<repository>
|
||||
<id>fancyplugins-releases</id>
|
||||
<name>FancyPlugins Repository</name>
|
||||
<url>https://repo.fancyinnovations.com/releases</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>de.oliver.FancyAnalytics</groupId>
|
||||
<artifactId>java-sdk</artifactId>
|
||||
<version>VERSION</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
!!!warning
|
||||
Make sure to shade the API into your app! You can use the [Shade plugin](https://imperceptiblethoughts.com/shadow/) for this.
|
||||
!!!
|
||||
|
||||
## Use the API
|
||||
|
||||
### Initialize the ApiClient
|
||||
|
||||
First you need to create an instance of the `ApiClient` class.
|
||||
|
||||
```java
|
||||
ApiClient fancyAnalytics = new ApiClient("https://api.fancyanalytics.net", "", "YOUR API TOKEN");
|
||||
```
|
||||
|
||||
### Send metric data
|
||||
|
||||
You can send metric data to the server using the record service.
|
||||
|
||||
```java
|
||||
Record record = new Record("unique sender id", "project id", timestamp, new HashMap<>());
|
||||
record.withEntry("metric name", "metric value");
|
||||
|
||||
fancyAnalytics.getRecordService().createRecord("project id", record);
|
||||
```
|
||||
|
||||
### Send events
|
||||
|
||||
You can also send events to the server using the event service.
|
||||
|
||||
```java
|
||||
Event event = new Event("event name", new HashMap<>());
|
||||
event.withProperty("prop key", "prop value");
|
||||
|
||||
fancyAnalytics.getEventService().createEvent("project id", event);
|
||||
```
|
||||
118
docs/src/fancyanalytics/getting-started/minecraft-plugins.md
Normal file
118
docs/src/fancyanalytics/getting-started/minecraft-plugins.md
Normal file
@@ -0,0 +1,118 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 400
|
||||
---
|
||||
|
||||
# Minecraft Plugins
|
||||
|
||||
!!!danger
|
||||
The FancyAnalytics platform is still in development. Expect breaking changes in the future.
|
||||
!!!
|
||||
|
||||
If you are a Minecraft plugin developer, you might want to track metrics about your plugin usage.
|
||||
So you know how many people are using your plugin and how they are using it.
|
||||
We provide a Java SDK which is specifically designed for Minecraft plugins.
|
||||
|
||||
## Include the FancyAnalytics API
|
||||
|
||||
### Gradle
|
||||
|
||||
```kotlin
|
||||
repositories {
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
}
|
||||
```
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
implementation("de.oliver.fancyanalytics:mc-api:VERSION")
|
||||
}
|
||||
```
|
||||
|
||||
### Maven
|
||||
|
||||
```xml
|
||||
<repository>
|
||||
<id>fancyplugins-releases</id>
|
||||
<name>FancyPlugins Repository</name>
|
||||
<url>https://repo.fancyinnovations.com/releases</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>de.oliver.FancyAnalytics</groupId>
|
||||
<artifactId>mc-api</artifactId>
|
||||
<version>VERSION</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
!!!warning
|
||||
Make sure to shade the API into your plugin! You can use the [Shade plugin](https://gradleup.com/shadow/) for this.
|
||||
!!!
|
||||
|
||||
## Initialize the API
|
||||
|
||||
```java
|
||||
FancyAnalyticsAPI fancyAnalytics = new FancyAnalyticsAPI("project-id", "api-token");
|
||||
fancyAnalytics.registerMinecraftPluginMetrics();
|
||||
fancyAnalytics.initialize();
|
||||
```
|
||||
|
||||
You can find your project ID and api token in the project settings page.
|
||||
|
||||
### Custom metrics
|
||||
|
||||
You can also send custom metrics to the server:
|
||||
|
||||
```java
|
||||
// Register a number metric to track the amount of npcs
|
||||
fancyAnalytics.registerNumberMetric(new MetricSupplier<>("amount_npcs", () -> npcManager.getNpcs().size()));
|
||||
|
||||
// Register a string metric to track the used language
|
||||
fancyAnalytics.registerStringMetric(new MetricSupplier<>("language", () -> languageManager.getLanguage()));
|
||||
```
|
||||
|
||||
You can also send multiple values at once with the `registerStringArrayMetric` and `registerNumberArrayMetric` methods.
|
||||
This is useful for tracking the player client's version for example.
|
||||
|
||||
Make sure to add the metrics on website at the project settings page (must be same name as in the code)!
|
||||
|
||||
### Events
|
||||
|
||||
Some things are better tracked as events. For example, purchases in a shop. You can send events like this:
|
||||
|
||||
```java
|
||||
fancyAnalytics.sendEvent(
|
||||
new Event("PurchasedItem")
|
||||
.withProperty("player","Steve")
|
||||
.withProperty("item","Diamond")
|
||||
.withProperty("amount","1")
|
||||
.withProperty("price","5")
|
||||
);
|
||||
```
|
||||
|
||||
You can also add custom properties to the event. Each property has a key (string) and a value (string but can be
|
||||
converted to a number if needed).
|
||||
|
||||
Once the first event is sent, there will be a new event-type created on the website. This event-type will have the name
|
||||
and the keys of all properties of the event. You can then see the events on the website.
|
||||
|
||||
You do not need to add the events on the website, they will be created automatically and all properties will be updated
|
||||
automatically as well.
|
||||
|
||||
### Error reporting
|
||||
|
||||
FancyAnalytics can also track errors in your project. All you need to do is register all relevant loggers:
|
||||
|
||||
```java
|
||||
Logger myLogger = ...;
|
||||
fancyAnalytics.getExceptionHandler().registerLogger(myLogger);
|
||||
```
|
||||
|
||||
All exceptions that are thrown in the logger and are related to the plugin will be tracked. You can see all thrown
|
||||
exceptions on the website.
|
||||
|
||||
### Done!
|
||||
|
||||
This is all you need to do to get started with FancyAnalytics. It will automatically send the data to the server.
|
||||
37
docs/src/fancyanalytics/getting-started/minecraft-servers.md
Normal file
37
docs/src/fancyanalytics/getting-started/minecraft-servers.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 500
|
||||
---
|
||||
|
||||
# Minecraft Servers
|
||||
|
||||
!!!danger
|
||||
The FancyAnalytics platform is still in development. Expect breaking changes in the future.
|
||||
!!!
|
||||
|
||||
If you run a Minecraft server, you might want to track metrics about your players and server performance.
|
||||
We provide a Minecraft plugin which can be installed on your server to send data to FancyAnalytics.
|
||||
|
||||
## Installation
|
||||
|
||||
To install FancyAnalytics on your server, you need to follow these steps:
|
||||
|
||||
1. Download the latest release from the [download page](https://fancyanalytics.net/downloads)
|
||||
2. Put the downloaded jar file in the ``plugins`` folder of your server
|
||||
3. Restart your server
|
||||
4. Run the command `/fancyanalytics version` to confirm that the plugin is installed
|
||||
|
||||
## Configuration
|
||||
|
||||
To use FancyAnalytics, you need to create an account on the [FancyAnalytics website](https://fancyanalytics.net/register) and create a new project.
|
||||
After creating the project, you need to put the project ID and the API key in the `config.yml` file of the plugin.
|
||||
|
||||
```yaml
|
||||
project_id: "your project id"
|
||||
api_key: "your api key",
|
||||
enable_default_events: false
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
All you need to do is wait for the data to be collected, and then you can see it on the website. This can take up to 2 minutes.
|
||||
13
docs/src/fancyanalytics/getting-started/rest-api.md
Normal file
13
docs/src/fancyanalytics/getting-started/rest-api.md
Normal file
@@ -0,0 +1,13 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 200
|
||||
visibility: hidden
|
||||
---
|
||||
|
||||
# REST API
|
||||
|
||||
!!!danger
|
||||
The FancyAnalytics platform is still in development. Expect breaking changes in the future.
|
||||
!!!
|
||||
|
||||
If you are not a Java developer, or you are using a different programming language, you can use our REST API to send data to FancyAnalytics.
|
||||
2
docs/src/fancydialogs/api/api.yml
Normal file
2
docs/src/fancydialogs/api/api.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: code
|
||||
order: 6
|
||||
67
docs/src/fancydialogs/api/getting-started.md
Normal file
67
docs/src/fancydialogs/api/getting-started.md
Normal file
@@ -0,0 +1,67 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Getting started
|
||||
|
||||
## Include the API in your project
|
||||
|
||||
To include the FancyNPCs API in your project, you need to add the following dependency to your `build.gradle.kts` or `pom.xml` file.
|
||||
|
||||
**Gradle:**
|
||||
```kotlin
|
||||
repositories {
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
}
|
||||
```
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
compileOnly("de.oliver:FancyDialogs:VERSION")
|
||||
}
|
||||
```
|
||||
|
||||
**Maven:**
|
||||
```xml
|
||||
<repository>
|
||||
<id>fancyinnovations-releases</id>
|
||||
<name>FancyInnovations Repository</name>
|
||||
<url>https://repo.fancyinnovations.com/releases</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>de.oliver</groupId>
|
||||
<artifactId>FancyDialogs</artifactId>
|
||||
<version>VERSION</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
Replace `VERSION` with the version of the API you want to use. You can find the latest version on the download pages or in the GitHub releases.
|
||||
|
||||
## Show a notice dialog
|
||||
|
||||
```java
|
||||
new NoticeDialog("title", "message").show(player);
|
||||
// or
|
||||
NoticeDialog.show(player, "message");
|
||||
```
|
||||
|
||||
## Show a confirmation dialog
|
||||
|
||||
```java
|
||||
new ConfirmationDialog("Are you sure you want to reload the configuration?")
|
||||
.withTitle("Confirm reload")
|
||||
.withOnConfirm(() -> player.sendMessage("Reloading configuration..."))
|
||||
.withOnCancel(() -> player.sendMessage("Reload cancelled."))
|
||||
.ask(player);
|
||||
```
|
||||
|
||||
## JavaDocs and help
|
||||
|
||||
You can find the JavaDocs for the FancyDialogs API [here](https://repo.fancyinnovations.com/javadoc/releases/de/oliver/FancyDialogs/latest).
|
||||
|
||||
Join the [FancyInnovations Discord](https://discord.gg/ZUgYCEJUEx) for help and support. There is a dedicated channel for help about the api (`#dialogs-api`).
|
||||
```
|
||||
2
docs/src/fancydialogs/changelog/changelog.yml
Normal file
2
docs/src/fancydialogs/changelog/changelog.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: log
|
||||
order: 5
|
||||
107
docs/src/fancydialogs/changelog/v0.md
Normal file
107
docs/src/fancydialogs/changelog/v0.md
Normal file
@@ -0,0 +1,107 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 1
|
||||
---
|
||||
|
||||
# FancyDialogs v0.x.x
|
||||
|
||||
## v0.0.19 [!badge variant="info" text="2025-07-25"]
|
||||
|
||||
- Added checkbox input type
|
||||
|
||||
## v0.0.18 [!badge variant="info" text="2025-07-21"]
|
||||
|
||||
- Added more metrics
|
||||
|
||||
## v0.0.17 [!badge variant="info" text="2025-07-21"]
|
||||
|
||||
- Close all dialogs when plugin reloads
|
||||
|
||||
## v0.0.16 [!badge variant="info" text="2025-07-17"]
|
||||
|
||||
- Added support for 1.21.8
|
||||
|
||||
## v0.0.15 [!badge variant="info" text="2025-07-17"]
|
||||
|
||||
- Updated FancyAnalytics to 0.1.8
|
||||
|
||||
## v0.0.14 [!badge variant="info" text="2025-07-17"]
|
||||
|
||||
- Added support for PlaceholderAPI
|
||||
|
||||
## v0.0.13 [!badge variant="info" text="2025-07-17"]
|
||||
|
||||
- Enhanced dialog viewer management
|
||||
|
||||
## v0.0.12 [!badge variant="info" text="2025-07-10"]
|
||||
|
||||
- I don't know
|
||||
|
||||
## v0.0.11 [!badge variant="info" text="2025-06-30"]
|
||||
|
||||
- Added support for 1.21.7
|
||||
|
||||
## v0.0.10 [!badge variant="info" text="2025-06-29"]
|
||||
|
||||
- Allow inputs to be null
|
||||
|
||||
## v0.0.9 [!badge variant="info" text="2025-06-28"]
|
||||
|
||||
- Added `open_random_dialog` action to open a random dialog from a list
|
||||
|
||||
## v0.0.8 [!badge variant="info" text="2025-06-28"]
|
||||
|
||||
- Fixed permission for dialog command
|
||||
- Allow console to open dialogs for players
|
||||
|
||||
## v0.0.7 [!badge variant="info" text="2025-06-27"]
|
||||
|
||||
- Added support for text fields in dialogs
|
||||
|
||||
## v0.0.6 [!badge variant="info" text="2025-06-26"]
|
||||
|
||||
- Added default values for confirmation dialog
|
||||
- Added support for the select input
|
||||
- Marked Folia as supported
|
||||
|
||||
## v0.0.5 [!badge variant="info" text="2025-06-20"]
|
||||
|
||||
- Added support for text fields in dialogs
|
||||
|
||||
## v0.0.4 [!badge variant="info" text="2025-06-20"]
|
||||
|
||||
- Added fancyanalytics integration
|
||||
|
||||
## v0.0.3 [!badge variant="info" text="2025-06-20"]
|
||||
|
||||
- Removed close action
|
||||
- Added console_command, player_command and send_to_server actions
|
||||
- Made dialog registry and action registry accessible from the API
|
||||
- Added confirmation dialogs to certain commands
|
||||
- Removed html encoding for default dialogs
|
||||
|
||||
## v0.0.2 [!badge variant="info" text="2025-06-19"]
|
||||
|
||||
- Added action system
|
||||
- Added `open_dialog`, `close`, and `message` default actions
|
||||
- Implemented confirmation dialog api
|
||||
- Added command to reload config
|
||||
|
||||
## v0.0.1 [!badge variant="info" text="2025-06-17"]
|
||||
|
||||
Initial **alpha version** of FancyDialogs.
|
||||
|
||||
You can already create dialogs in the `plugins/FancyDialogs/data/dialogs` directory.
|
||||
|
||||
Open dialogs with the `/dialog` command.
|
||||
|
||||
You can add the `open_dialog` action to npcs by FancyNpcs to open certain dialogs when interacting with npcs.
|
||||
|
||||
Work-in-progress:
|
||||
- Quick actions hotkey
|
||||
- Tutorial system
|
||||
- Input controls
|
||||
- Button action system
|
||||
|
||||
I hope you enjoy creating wonderful dialogs already!
|
||||
|
||||
2
docs/src/fancydialogs/commands/commands.yml
Normal file
2
docs/src/fancydialogs/commands/commands.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 9
|
||||
icon: command-palette
|
||||
22
docs/src/fancydialogs/commands/dialog.md
Normal file
22
docs/src/fancydialogs/commands/dialog.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 10
|
||||
---
|
||||
|
||||

|
||||
|
||||
# /Dialog
|
||||
|
||||
## List all dialogs
|
||||
|
||||
Lists all registered dialogs.
|
||||
|
||||
- **Syntax**: `/dialog list`
|
||||
- **Permissions**: `fancydialogs.commands.dialog.list`
|
||||
|
||||
## Open dialog
|
||||
|
||||
Opens a dialog (for a player) by its ID.
|
||||
|
||||
- **Syntax**: `/dialog open <id> [player]`
|
||||
- **Permissions**: `fancydialogs.commands.dialog.open`
|
||||
79
docs/src/fancydialogs/commands/fancydialogs.md
Normal file
79
docs/src/fancydialogs/commands/fancydialogs.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 8
|
||||
---
|
||||
|
||||

|
||||
|
||||
# /FancyDialogs
|
||||
|
||||
## Version
|
||||
|
||||
Shows the version of FancyDialogs.
|
||||
|
||||
- **Syntax**: `/fancydialogs version`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.version`
|
||||
|
||||
## Config
|
||||
|
||||
### Reload config
|
||||
|
||||
Reloads the FancyDialogs configuration file.
|
||||
|
||||
- **Syntax**: `/fancydialogs config reload`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.config.reload`
|
||||
|
||||
## Storage
|
||||
|
||||
### Save all dialogs
|
||||
|
||||
Saves all dialog data to the storage.
|
||||
|
||||
- **Syntax**: `/fancydialogs storage save`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.storage.save`
|
||||
|
||||
### Load all dialogs
|
||||
|
||||
Loads all dialog data from the storage.
|
||||
|
||||
- **Syntax**: `/fancydialogs storage load`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.storage.load`
|
||||
|
||||
### Reload all dialogs
|
||||
|
||||
Clears the dialog registry and loads all dialog data from the storage.
|
||||
|
||||
- **Syntax**: `/fancydialogs storage reload`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.storage.reload`
|
||||
|
||||
## Registry
|
||||
|
||||
### List all dialogs
|
||||
|
||||
Lists all registered dialogs.
|
||||
|
||||
- **Syntax**: `/fancydialogs registry list`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.registry.list`
|
||||
|
||||
### Clear registry
|
||||
|
||||
Clears the dialog registry
|
||||
|
||||
- **Syntax**: `/fancydialogs registry clear`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.registry.clear`
|
||||
|
||||
### Unregister dialog
|
||||
|
||||
Unregisters a dialog by its ID.
|
||||
|
||||
- **Syntax**: `/fancydialogs registry unregister <id>`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.registry.unregister`
|
||||
|
||||
## Joined Players Cache
|
||||
|
||||
## Clear joined players cache
|
||||
|
||||
Clears the cache of players who have joined a dialog.
|
||||
|
||||
- **Syntax**: `/fancydialogs joined_players_cache clear`
|
||||
- **Permissions**: `fancydialogs.commands.fancydialogs.joined_players_cache.clear`
|
||||
15
docs/src/fancydialogs/commands/quickactions.md
Normal file
15
docs/src/fancydialogs/commands/quickactions.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 9
|
||||
---
|
||||
|
||||

|
||||
|
||||
# /QuickActions
|
||||
|
||||
## Open the quick actions dialog
|
||||
|
||||
Opens the quick actions dialog, which allows players to perform various actions quickly.
|
||||
|
||||
- **Syntax**: `/quickactions` or `/qa`
|
||||
- **Permissions**: `fancydialogs.commands.quickactions`
|
||||
68
docs/src/fancydialogs/fancydialogs.md
Normal file
68
docs/src/fancydialogs/fancydialogs.md
Normal file
@@ -0,0 +1,68 @@
|
||||
---
|
||||
title: FancyDialogs [WIP]
|
||||
icon: browser
|
||||
order: 90
|
||||
---
|
||||
|
||||
#
|
||||
|
||||

|
||||
|
||||
!!!
|
||||
Simple and lightweight dialogs plugin for Paper servers and other plugin developers.
|
||||
!!!
|
||||
|
||||
## Features
|
||||
|
||||
With this plugin you can create fancy dialogs for your server or plugin.
|
||||
FancyDialogs uses the new dialog feature, Minecraft introduced in **1.21.6** and combines it with the power of packets.
|
||||
|
||||
!!!warning
|
||||
The plugin will only for **Paper** servers on **1.21.6** or newer!
|
||||
!!!
|
||||
|
||||
!!!warning
|
||||
FancyDialogs is still in development and some features are not yet implemented.
|
||||
See the [TODO](#todo) section for more information.
|
||||
!!!
|
||||
|
||||
**Core advantages of FancyDialogs:**
|
||||
- Simple custom dialog creation (in JSON format or in code)
|
||||
- A lot of different dialog components (text, buttons, input fields, etc.)
|
||||
- Custom button actions (e.g. run commands, give items, open other dialogs)
|
||||
- MiniMessages and PlaceholderAPI support
|
||||
|
||||
### For servers
|
||||
|
||||
If you use FancyDialogs as a plugin, you can take advantage of the following features:
|
||||
- Dialog as welcome-screen for players joining the first time
|
||||
- Custom tutorial dialogs
|
||||
- FancyNpcs 'open_dialog' action for NPCs
|
||||
|
||||
### For plugin developers
|
||||
|
||||
If you are a plugin developer and want to spice up your plugin with dialogs, you can use FancyDialogs as a library.
|
||||
|
||||
You can define default dialogs, which will be persisted in the `plugins/FancyDialogs/data/dialogs` folder.
|
||||
This allows server administrators to customize the dialogs for their server.
|
||||
You can then use the dialogs in your plugin and show them to the players whenever you want.
|
||||
|
||||
Common use cases are:
|
||||
- Help dialogs (e.g. for commands or features)
|
||||
- Confirmation dialogs for critical actions
|
||||
- Shop UIs (replacing inventories UIs)
|
||||
- Dialogs for quests
|
||||
|
||||
## TODO
|
||||
|
||||
- [X] Create dialogs in JSON format
|
||||
- [X] Create dialogs in code
|
||||
- [X] Customize dialog content and buttons
|
||||
- [X] Open dialogs for players (via commands or code)
|
||||
- [X] Welcome dialog for new players
|
||||
- [X] FancyNpcs integration (open_dialog action)
|
||||
- [X] Confirmation and notice dialogs (API)
|
||||
- [x] Add button action system
|
||||
- [ ] Add support for the quick action hotkey
|
||||
- [ ] Add tutorial features
|
||||
- [ ] Add input controls
|
||||
10
docs/src/fancydialogs/faq.md
Normal file
10
docs/src/fancydialogs/faq.md
Normal file
@@ -0,0 +1,10 @@
|
||||
---
|
||||
order: 6
|
||||
icon: book
|
||||
---
|
||||
# FAQ
|
||||
|
||||
### Are older versions of Minecraft supported?
|
||||
|
||||
No, FancyDialogs only supports 1.21.6 or newer. FancyDialogs uses the new dialogs, which only exist in 1.21.6 and newer.
|
||||
|
||||
30
docs/src/fancydialogs/getting-started.md
Normal file
30
docs/src/fancydialogs/getting-started.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
order: 10
|
||||
icon: info
|
||||
---
|
||||
# Getting started
|
||||
|
||||
!!!danger
|
||||
Be aware, that only Paper and Folia is supported, but the plugin should work on any of its forks (like Purpur or Pufferfish). Spigot, Bukkit, Sponge and Fabric is not supported.
|
||||
!!!
|
||||
|
||||
## Installation
|
||||
|
||||
To install FancyDialogs, you need to download the latest version from one of the following sources:
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Modrinth" target="blank"](https://modrinth.com/plugin/fancydialogs/versions)
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Hangar" target="blank"](https://hangar.papermc.io/Oliver/FancyDialogs/versions)
|
||||
|
||||
After downloading the plugin, you can install it by placing the downloaded file in the `plugins` folder of your server.
|
||||
|
||||
Restart your server and you are ready to go!
|
||||
|
||||
To check if the plugin is installed correctly, you can use the command `/fancydialogs version`. If the plugin is installed correctly, it will show you the version of the plugin.
|
||||
|
||||
## Create your first dialog
|
||||
|
||||
FancyDialogs come with some default dialogs, which you can use to get started. You can find them in the `plugins/FancyDialogs/data/dialogs` folder.
|
||||
You can also create your own dialogs by creating a new file in this folder.
|
||||
|
||||
FancyDialogs uses a simple JSON format to define dialogs. Read the [JSON Schema](tutorials/json-schema.md) tutorial to learn more about the format.
|
||||
16
docs/src/fancydialogs/inspiration.md
Normal file
16
docs/src/fancydialogs/inspiration.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
order: 8
|
||||
icon: image
|
||||
---
|
||||
|
||||
# Inspiration
|
||||
|
||||
The following examples show how to use FancyDialogs in different ways. They are meant to give you an idea of what you can do with the plugin.
|
||||
|
||||
Almost all examples are made by the community. If you have a nice example that you want to share, feel free come to our discord server and show it to us.
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
131
docs/src/fancydialogs/tutorials/json-schema.md
Normal file
131
docs/src/fancydialogs/tutorials/json-schema.md
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 10
|
||||
---
|
||||
|
||||
# JSON Schema
|
||||
|
||||
In this tutorial, we will explore the JSON schema used by FancyDialogs to define dialogs.
|
||||
This schema provides a structured way to create fancy dialogs.
|
||||
|
||||
## Example Dialog
|
||||
|
||||
The easiest way to create a new dialog is to copy an existing dialog and modify it to suit your needs.
|
||||
You can find some example dialogs in the `plugins/FancyDialogs/data/dialogs` folder on your server.
|
||||
|
||||
Below is an example of a simple dialog defined using the FancyDialogs JSON schema:
|
||||
|
||||
```json
|
||||
{
|
||||
"id": "my_dialog",
|
||||
"title": "My Fancy Dialog",
|
||||
"canCloseWithEscape": true,
|
||||
"body": [
|
||||
{ "text": "This is my first dialog created with FancyDialogs!" }
|
||||
],
|
||||
"inputs": {
|
||||
"textFields": [
|
||||
{
|
||||
"key": "fav_color",
|
||||
"order": 1,
|
||||
"label": "<color:#ff7300>What is your favorite color?</color>",
|
||||
"placeholder": "gold",
|
||||
"maxLength": 50,
|
||||
"maxLines": 1
|
||||
}
|
||||
]
|
||||
},
|
||||
"buttons": [
|
||||
{
|
||||
"label": "Show favorite color",
|
||||
"tooltip": "Click to show your favorite color",
|
||||
"actions": [
|
||||
{
|
||||
"name": "message",
|
||||
"data": "Your favorite color is: <color:{fav_color}>{fav_color}</color>"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Fields Explained
|
||||
|
||||
### Common Fields
|
||||
|
||||
`id`: The unique identifier for the dialog, which is used to reference the dialog in commands or other dialogs
|
||||
|
||||
`title`: The title of the dialog, which is displayed at the top of the dialog (supports MiniMessage & PlaceholderAPI)
|
||||
|
||||
`canCloseWithEscape`: Whether the dialog can be closed with the Escape key (default: true)
|
||||
|
||||
`body`: The body of the dialog - see [Body Section](#body-fields) for details
|
||||
|
||||
`inputs`: The inputs of the dialog - see [Input Section](#input-fields) for details
|
||||
|
||||
`buttons`: The buttons of the dialog - see [Button Section](#button-fields) for details
|
||||
|
||||
### Body fields
|
||||
|
||||
`text`: The text to display in the body of the dialog (supports MiniMessage & PlaceholderAPI)
|
||||
|
||||
!!!info
|
||||
Items will be supported in the body section in a future release.
|
||||
!!!
|
||||
|
||||
### Input fields
|
||||
|
||||
`textFields`: A list of text fields - see [Text Fields](#text-fields) for details
|
||||
|
||||
`selects`: A list of select fields - see [Select Fields](#select-fields) for details
|
||||
|
||||
!!!info
|
||||
More input types will be added in future releases, such as checkboxes and number sliders.
|
||||
!!!
|
||||
|
||||
#### Text Fields
|
||||
|
||||
`key`: The key to use to store the input value (can be used as a placeholder in actions)
|
||||
|
||||
`order`: The order of the text field in the dialog
|
||||
|
||||
`label`: The label to display above the text field (supports MiniMessage & PlaceholderAPI)
|
||||
|
||||
`placeholder`: The initial text to display in the text field
|
||||
|
||||
`maxLength`: The maximum length of the input
|
||||
|
||||
`maxLines`: The maximum number of lines for the input (greater than 1 will create a multiline text field)
|
||||
|
||||
#### Select Fields
|
||||
|
||||
`key`: The key to use to store the input value (can be used as a placeholder in actions)
|
||||
|
||||
`order`: The order of the select field in the dialog
|
||||
|
||||
`label`: The label to display above the select field (supports MiniMessage & PlaceholderAPI)
|
||||
|
||||
`options`: A list of options that can be selected by the player
|
||||
- `value`: The value that will be returned when the player selects this option
|
||||
- `display`: The text to display in the select field (supports MiniMessage & PlaceholderAPI)
|
||||
- `initial`: Whether this option is selected by default (default: false)
|
||||
|
||||
### Button fields
|
||||
|
||||
- `label`: The text to display on the button (supports MiniMessage & PlaceholderAPI)
|
||||
- `tooltip`: The tooltip to display when hovering over the button (supports MiniMessage & PlaceholderAPI)
|
||||
- `actions`: A list of actions that will be executed when the button is clicked - see [Actions](#actions) for details
|
||||
|
||||
#### Actions
|
||||
|
||||
- `name`: The name of the action (see below for a list of available actions)
|
||||
- `data`: The data for the action, which depends on the action type
|
||||
|
||||
Available actions include:
|
||||
- `message`: Sends a message to the player (set `data` to the message)
|
||||
- `console_command`: Executes a command as the console (set `data` to the command)
|
||||
- `player_command`: Executes a command as the player (set `data` to the command)
|
||||
- `open_dialog`: Opens another dialog (set `data` to the ID of the dialog to open)
|
||||
- `open_random_dialog`: Opens another dialog (set `data` to a list of dialog IDs separated by commas: 'dialog1,dialog2,dialog3')
|
||||
- `send_to_server`: Sends the player to another server (requires BungeeCord or Velocity) (set `data` to the server name)
|
||||
14
docs/src/fancydialogs/tutorials/open-dialog-npc-action.md
Normal file
14
docs/src/fancydialogs/tutorials/open-dialog-npc-action.md
Normal file
@@ -0,0 +1,14 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 9
|
||||
---
|
||||
|
||||
# Open dialog npc action
|
||||
|
||||
!!!warning
|
||||
This action is only available if [FancyDialogs](https://modrinth.com/plugin/fancydialogs) AND [FancyNpcs](https://modrinth.com/plugin/fancynpcs) is installed on the server.
|
||||
!!!
|
||||
|
||||
FancyDialog adds a new action to the FancyNpcs action system, which allows you to open a dialog when interacting with an NPC.
|
||||
|
||||
To use this action, you need to add the open_dialog action to the npc: `/npc action (npc) ANY_CLICK add open_dialog (dialogId)`
|
||||
2
docs/src/fancydialogs/tutorials/tutorials.yml
Normal file
2
docs/src/fancydialogs/tutorials/tutorials.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 7
|
||||
icon: mortar-board
|
||||
2
docs/src/fancyholograms/api/api.yml
Normal file
2
docs/src/fancyholograms/api/api.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: code
|
||||
order: 6
|
||||
134
docs/src/fancyholograms/api/getting-started.md
Normal file
134
docs/src/fancyholograms/api/getting-started.md
Normal file
@@ -0,0 +1,134 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Getting started
|
||||
|
||||
## Include the API in your project
|
||||
|
||||
To include the FancyHolograms API in your project, you need to add the following dependency to your `build.gradle.kts` or `pom.xml` file.
|
||||
|
||||
**Gradle:**
|
||||
```kotlin
|
||||
repositories {
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
}
|
||||
```
|
||||
|
||||
```kotlin
|
||||
dependencies {
|
||||
compileOnly("de.oliver:FancyHolograms:VERSION")
|
||||
}
|
||||
```
|
||||
|
||||
**Maven:**
|
||||
```xml
|
||||
<repository>
|
||||
<id>fancyinnovations-releases</id>
|
||||
<name>FancyInnovations Repository</name>
|
||||
<url>https://repo.fancyinnovations.com/releases</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
```xml
|
||||
<dependency>
|
||||
<groupId>de.oliver</groupId>
|
||||
<artifactId>FancyHolograms</artifactId>
|
||||
<version>VERSION</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
Replace `VERSION` with the version of the API you want to use. You can find the latest version on the download pages or in the GitHub releases.
|
||||
|
||||
## Create a new hologram
|
||||
|
||||
### 1. Create the hologram data
|
||||
|
||||
The TextHologramData class is used to store all the information about aa hologram. You can create a new instance of TextHologramData by providing a name, and the location where the hologram should be spawned.
|
||||
|
||||
```java
|
||||
TextHologramData hologramData = new TextHologramData("hologram_name", location);
|
||||
// Adjust the Hologram Data
|
||||
hologramData.setBackground(TextColor.color(100, 255, 79));
|
||||
hologramData.setBillboard(Display.Billboard.FIXED);
|
||||
```
|
||||
|
||||
!!!
|
||||
You can also use ItemHologramData or ItemHologramData to create a holograms with other types.
|
||||
!!!
|
||||
|
||||
### 2. Create the hologram
|
||||
|
||||
You can use the TextHologramData object to create a new hologram. Because the implementation of the hologram different for every Minecraft version, FancyHolograms provides a factory to create the hologram.
|
||||
|
||||
```java
|
||||
HologramManager manager = FancyHologramsPlugin.get().getHologramManager();
|
||||
Hologram hologram = manager.create(data);
|
||||
```
|
||||
|
||||
### 3. Register the hologram
|
||||
|
||||
To let FancyHolograms handle the hologram, you need to register it. FancyHolograms will take care of spawning, despawning, saving the hologram, and more.
|
||||
|
||||
```java
|
||||
HologramManager manager = FancyHologramsPlugin.get().getHologramManager();
|
||||
manager.addHologram(hologram);
|
||||
```
|
||||
|
||||
!!!
|
||||
If you don't want to persist the hologram, you can do the following: `hologram.setPersistent(false);`
|
||||
!!!
|
||||
|
||||
## Modify an existing hologram
|
||||
|
||||
### 1. Get the hologram by name
|
||||
|
||||
You can get the hologram by its name. The name is unique and can be used to identify the hologram.
|
||||
|
||||
```java
|
||||
HologramManager manager = FancyHologramsPlugin.get().getHologramManager();
|
||||
|
||||
Hologram hologram = manager.getHologram("hologram_name").orElse(null);
|
||||
if (hologram == null) {
|
||||
// hologram not found
|
||||
return;
|
||||
}
|
||||
```
|
||||
|
||||
### 2. Modify the data
|
||||
|
||||
You can modify the hologram data object to change the holograms's properties.
|
||||
|
||||
```java
|
||||
HologramData hologramData = hologram.getData();
|
||||
hologramData.setBillboard(Display.Billboard.CENTER);
|
||||
|
||||
if (hologramData instanceof TextHologramData textData) {
|
||||
textData.setTextAlignment(TextDisplay.TextAlignment.LEFT);
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Update the hologram
|
||||
|
||||
After modifying the hologram data, you need to update the hologram. This will apply the changes to the hologram.
|
||||
|
||||
```java
|
||||
hologram.forceUpdate();
|
||||
hologram.queueUpdate();
|
||||
```
|
||||
|
||||
## Remove a hologram
|
||||
|
||||
To remove a hologram, you can use the `removeHologram` method of the `HologramManager`. This will remove the hologram and unregister it.
|
||||
|
||||
```java
|
||||
HologramManager manager = FancyHologramsPlugin.get().getHologramManager();
|
||||
manager.removeHologram("hologram_name");
|
||||
```
|
||||
|
||||
## JavaDocs and help
|
||||
|
||||
You can find the JavaDocs for the FancyHolograms API [here](https://repo.fancyinnovations.com/javadoc/releases/de/oliver/FancyHolograms/latest).
|
||||
|
||||
Join the [FancyInnovations Discord](https://discord.gg/ZUgYCEJUEx) for help and support. There is a dedicated channel for help about the api (`#holograms-api`).
|
||||
2
docs/src/fancyholograms/changelog/changelog.yml
Normal file
2
docs/src/fancyholograms/changelog/changelog.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: log
|
||||
order: 5
|
||||
74
docs/src/fancyholograms/changelog/v1.md
Normal file
74
docs/src/fancyholograms/changelog/v1.md
Normal file
@@ -0,0 +1,74 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 1
|
||||
---
|
||||
|
||||

|
||||
|
||||
#
|
||||
|
||||
## v1.1.1 [!badge variant="info" text="2023-06-13"]
|
||||
|
||||
- Added support for 1.20.1
|
||||
- This version of the plugin supports both 1.20 and 1.20.1
|
||||
|
||||
## v1.1.0 [!badge variant="info" text="2023-06-12"]
|
||||
|
||||
- Updated to 1.20
|
||||
|
||||
## v1.0.7 [!badge variant="info" text="2023-05-22"]
|
||||
|
||||
- Added insertBefore and insertAfter
|
||||
- Added FancyHolograms command
|
||||
- Fixed some bugs
|
||||
- Compatible with FancyNpcs 1.1.5 for linking with an NPC
|
||||
|
||||
## v1.0.6 [!badge variant="info" text="2023-05-03"]
|
||||
|
||||
- Added support for MiniPlaceholders (#5)
|
||||
- Added visibilityDistance in config
|
||||
- Added /hologram list command
|
||||
- Added /hologram teleport <hologram> command
|
||||
- Bug fixes and typos
|
||||
|
||||
## v1.0.5 [!badge variant="info" text="2023-04-10"]
|
||||
|
||||
- Add copy hologram feature (/hologram copy <hologram> <new name>)
|
||||
- Add edit shadow features (/hologram edit <hologram> (shadowRadius | shadowStrength) <value>)
|
||||
- Added api stuff (spawn, remove and modify events)
|
||||
- Add link with npc feature (/hologram edit <hologram> linkWithNpc <npc name>)
|
||||
|
||||
## v1.0.4 [!badge variant="info" text="2023-04-03"]
|
||||
|
||||
- Fixed saving holograms
|
||||
- Only refresh holograms to players that are in the same world
|
||||
- Folia support (FancyHolograms-1.0.4-folia.jar)
|
||||
|
||||
**Folia support:**
|
||||
|
||||
Please make backups when using this plugin with Folia. There might accure bugs.
|
||||
In the future there will be two jar files, one for Paper and one for Folia. You can not use the Folia version on a Paper server.
|
||||
|
||||
## v1.0.3 [!badge variant="info" text="2023-03-28"]
|
||||
|
||||
- Add 'updateTextInterval' subcommand (set to 0 to disable)
|
||||
- Fixed deleting holograms
|
||||
- Increased default line width
|
||||
|
||||
## v1.0.2 [!badge variant="info" text="2023-03-26"]
|
||||
|
||||
- Added 'transparent' background
|
||||
- Added 'reset' background (default)
|
||||
- Bug fixes
|
||||
|
||||
## v1.0.1 [!badge variant="info" text="2023-03-20"]
|
||||
|
||||
- Fixed that holograms are not being saved
|
||||
- Added the 'moveTo' subcommand
|
||||
- Add the 'help' subcommand
|
||||
- Added PlaceholderAPI support
|
||||
- Fixed some bugs
|
||||
|
||||
## v1.0.0 [!badge variant="info" text="2023-03-18"]
|
||||
|
||||
This is the first version. There might accure bugs, please report them.
|
||||
295
docs/src/fancyholograms/changelog/v2.md
Normal file
295
docs/src/fancyholograms/changelog/v2.md
Normal file
@@ -0,0 +1,295 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 2
|
||||
---
|
||||
|
||||

|
||||
|
||||
#
|
||||
|
||||
## v2.8.0 [!badge variant="info" text="2025-10-10"]
|
||||
|
||||
- Added support for 1.21.9 and 1.21.10
|
||||
- Added support for MiniPlaceholders v3
|
||||
- Improved performance by running more tasks asynchronously
|
||||
- Improved logging
|
||||
- Added HologramManager#isLoaded method
|
||||
- Regular dev builds are now published to the BETA channel
|
||||
|
||||
## v2.7.0 [!badge variant="info" text="2025-07-18"]
|
||||
|
||||
- Added support for 1.21.7 and 1.21.8
|
||||
- Fixed comments not being for new feature flags
|
||||
- Improved http handling in FancyAnalytics
|
||||
|
||||
## v2.6.0 [!badge variant="info" text="2025-06-26"]
|
||||
|
||||
- Added support for 1.21.6
|
||||
|
||||
## v2.5.0 [!badge variant="info" text="2025-04-24"]
|
||||
|
||||
- Added support for Minecraft 1.21.5
|
||||
- Refactored config structure
|
||||
- Added `update_visibility_interval` config option
|
||||
|
||||
## v2.4.2 [!badge variant="info" text="2025-01-16"]
|
||||
|
||||
- Added the first converter to convert holograms from DecentHolograms to FancyHolograms (/fancyholograms convert DecentHolograms *)
|
||||
- Added translate command
|
||||
- Improved scheduler stability and fixed a memory leak
|
||||
- Fixed exception thrown when sending resource-packs in the config stage
|
||||
|
||||
**API changes:**
|
||||
|
||||
- You can now send the hologram events sync and async -> you can spawn and hide holograms synchronically now
|
||||
- Added HologramsConverted event
|
||||
|
||||
## v2.4.1 [!badge variant="info" text="2024-12-08"]
|
||||
|
||||
- Added support for 1.21.4
|
||||
- Added brightness command
|
||||
- Added per command permissions
|
||||
- Scale hologram, when linked npc is scaled
|
||||
|
||||
**API changes:**
|
||||
|
||||
- Hologram#getDisplayEntity is now deprecated and will be removed next version
|
||||
- Added experimental getter & setter for interpolation duration
|
||||
|
||||
## v2.4.0 [!badge variant="info" text="2024-11-02"]
|
||||
|
||||
- Added support for 1.21.2 and 1.21.3
|
||||
- Fixed holograms.yml file resets sometimes
|
||||
- Improved logging
|
||||
|
||||
## v2.3.3 [!badge variant="info" text="2024-08-19"]
|
||||
|
||||
- fix exceptions thrown from PlayerResourcePackStatusEvent listener on < 1.20.2 by @Grabsky in #138
|
||||
|
||||
## v2.3.2 [!badge variant="info" text="2024-08-14"]
|
||||
|
||||
- Added support for 1.21.1
|
||||
|
||||
## v2.3.1 [!badge variant="info" text="2024-08-03"]
|
||||
|
||||
- Added center command
|
||||
- Added nearby command
|
||||
- Load holograms dynamically based on world loading
|
||||
- Added missing dependencies to paper-plugin.yml
|
||||
- Add world name to hologram list
|
||||
- Added manual visbility (api)
|
||||
- Refresh holograms once resource-pacls are loaded
|
||||
- Many more fixes & performance upgrades
|
||||
|
||||
## v2.3.0 [!badge variant="info" text="2024-06-19"]
|
||||
|
||||
- Added support for 1.21
|
||||
- Maintain rotation when using moveHere subcommand
|
||||
|
||||
## v2.2.0 [!badge variant="info" text="2024-06-07"]
|
||||
|
||||
- Major performance improvements
|
||||
- Added persistent flag
|
||||
- Fixed holograms not disappearing when removing
|
||||
- API changes
|
||||
|
||||
**Pull requests:**
|
||||
|
||||
- Major Code Rewrite by @OakLoaf in #94
|
||||
- Persistent, Inpersistent(temporary) holograms by @UsainSrht in #96
|
||||
- Bukkit Color by @UsainSrht in #95
|
||||
- Added new property Viewer for hologram. #99 by @BigTows in #100
|
||||
- readme changes by @Grabsky in #103
|
||||
|
||||
## v2.1.0 [!badge variant="info" text="2024-05-21"]
|
||||
|
||||
- Added support for 1.20.5 and 1.20.6
|
||||
- Certain commands can now be run via console
|
||||
- Included sources and javadoc to API module
|
||||
- Added support for "see through" (text holograms only)
|
||||
- Added 3-axis support for scale command
|
||||
- The copy subcommand now maintains yaw and pitch
|
||||
|
||||
**Pull requests:**
|
||||
|
||||
- Add support for see through Text Holograms by @OakLoaf in #85
|
||||
- Add support for 1.20.5 by @OliverSchlueter in #83
|
||||
- 3-axis support for scale sub-command by @Grabsky in #86
|
||||
- Updated paperweight to 1.7.1 by @OakLoaf in #91
|
||||
- Made onEnable respect muted version notifications by @OakLoaf in #89
|
||||
- Fixed duplicate files in jar by @OakLoaf in #92
|
||||
- Made copy command maintain rotation by @OakLoaf in #90
|
||||
|
||||
## v2.0.6 [!badge variant="info" text="2024-03-03"]
|
||||
|
||||
- Fixed remove subcommand
|
||||
- Run version checks async
|
||||
- Fixed a bug with visibility range
|
||||
- Add permission to hide holograms
|
||||
- Don't allow dots in name
|
||||
|
||||
## v2.0.5 [!badge variant="info" text="2024-01-27"]
|
||||
|
||||
- Added 'save_on_changed' config option: holograms will be saved after modifying it
|
||||
- Improved shown state for players
|
||||
- Showing and hiding is now done completely async
|
||||
- Other performance improvements
|
||||
- Fixed default visibility distance
|
||||
- Fixed yaw in moveTo command
|
||||
|
||||
## v2.0.4 [!badge variant="info" text="2023-12-12"]
|
||||
|
||||
- Added support for 1.20.4 🎉
|
||||
- Added info command
|
||||
- Added support for legacy colors (&c &4 &n etc.)
|
||||
|
||||
## v2.0.3 [!badge variant="info" text="2023-11-17"]
|
||||
|
||||
**Item & Block Holograms**
|
||||
|
||||
I'm happy to introduce item and block holograms in FancyHolograms 2.0.3 - one most requested feature since the first version.
|
||||
|
||||
Until now you could only create text holograms with FancyHolograms, but starting with v2.0.3 you are also able to create holograms with a different type.
|
||||
|
||||
How to create item & block holograms?
|
||||
The create commands has changed a little bit: /hologram create (text|block|item) (hologram name)
|
||||
Each hologram and only be of one type: text, block or item. You can not have items inside a text hologram (but you can create two holograms and move the item hologram over the text hologram).
|
||||
|
||||
How to modify item and block holograms?
|
||||
There are two new commands:
|
||||
|
||||
/hologram edit (hologram) item
|
||||
(execute this command while holding an item of your choice in your main hand.)
|
||||
|
||||
/hologram edit (hologram) block (block type)
|
||||
|
||||
Billboard, scale, rotation etc.
|
||||
|
||||
You are able to change the billboard, scale, position, shadow and rotaion of all hologram types (text, item and block)
|
||||
|
||||
How to migrate from a older version of FancyHolograms?
|
||||
|
||||
1. stop the server
|
||||
2. take a backup of your server and FancyHolograms folder
|
||||
3. replace the old FancyHolograms jar with the new one
|
||||
4. start the server
|
||||
5. done!
|
||||
|
||||
I hope you will enjoy the new big feature! I can't wait to see what you are going to do with the new hologram types.
|
||||
|
||||
## v2.0.2 [!badge variant="info" text="2023-10-19"]
|
||||
|
||||
- Added rotatepitch subcommand
|
||||
- Added moveHere subcommand
|
||||
- Added pagination for /hologram list
|
||||
- Added per-hologram visibility distance
|
||||
- Fixed issues with 1.19.4
|
||||
- Fixed linking with npc
|
||||
- Fixed some scale issues
|
||||
- Fixed a tab completion bug
|
||||
- ADDED SUPPORT FOR 1.20.2
|
||||
|
||||
## v2.0.1 [!badge variant="info" text="2023-08-21"]
|
||||
|
||||
- Fixed deleted holograms not being removed from config
|
||||
- Added "/fholo" as alias for "/hologram"
|
||||
- Sort holograms by name in config
|
||||
- Many bug fixes ...
|
||||
|
||||
## v2.0.0 [!badge variant="info" text="2023-06-30"]
|
||||
|
||||
**Version Implementations**
|
||||
|
||||
FancyHolograms is now compatible with multiple versions in one jar!
|
||||
|
||||
Currently the following versions are supported:
|
||||
- `1.19.4`
|
||||
- `1.20`
|
||||
- `1.20.1`
|
||||
|
||||
**Enhancements**
|
||||
|
||||
- Text alignment command
|
||||
- You can now change how the text should be aligned (left, center, right)
|
||||
- Full Documentation
|
||||
- All exposed classes are now fully documented.
|
||||
- Data Decoupling
|
||||
- All data for the hologram is now decoupled from the hologram and its implementations
|
||||
- Data can be updated without directly modifying the hologram entity
|
||||
- Simplified Modification Process
|
||||
- Data modifications on the hologram now happen in steps
|
||||
- update hologram data
|
||||
- update hologram
|
||||
- push changes to players
|
||||
- Enhanced Eventing
|
||||
- The hologram update event now exposes both old and new data
|
||||
- Hologram events
|
||||
- `HologramCreateEvent` -> `HologramCreateEvent`
|
||||
- `HologramRemoveEvent` -> `HologramDeleteEvent`
|
||||
- `HologramModifyEvent` -> `HologramUpdateEvent`
|
||||
- `HologramSpawnEvent` -> `HologramShowEvent`
|
||||
- +`HologramHideEvent`
|
||||
- Hologram Data
|
||||
- Background Color
|
||||
- Now accepts hex color codes
|
||||
- Now accepts `reset` or `default` to return to the original background color
|
||||
- Text Update Interval
|
||||
- Now accepts `never` or `off` or `none` to disable updating
|
||||
- Now accepts second and minute units, ex. `10s` instead of `200`
|
||||
- Hologram Position
|
||||
- Now accepts relative coordinates
|
||||
- Can be relative to the hologram's current location using `~`
|
||||
- Can be relative to the player's current location using `~~`
|
||||
- Command Completions
|
||||
- Intelligently suggests only relevant options
|
||||
|
||||
There might accure errors while updating from a previous version and you might have to remake all holograms.
|
||||
|
||||
If you found any bug, please report them (create an issue or go to the discord server).
|
||||
|
||||
Thank you Sxtanna for putting so much effort into this!
|
||||
|
||||
## v2.0.0-pre1 [!badge variant="info" text="2023-06-01"] [!badge variant="warning" text="Pre release"]
|
||||
|
||||
**Version Implementations**
|
||||
|
||||
- `1.19.4`
|
||||
- `1.20` & `1.20.1`
|
||||
|
||||
**Enhancements**
|
||||
|
||||
- Full Documentation
|
||||
- All exposed classes are now fully documented.
|
||||
- Data Decoupling
|
||||
- All data for the hologram is now decoupled from the hologram and its implementations
|
||||
- Data can be updated without directly modifying the hologram entity
|
||||
- Simplified Modification Process
|
||||
- Data modifications on the hologram now happen in steps
|
||||
- update hologram data
|
||||
- update hologram
|
||||
- push changes to players
|
||||
- Enhanced Eventing
|
||||
- The hologram update event now exposes both old and new data
|
||||
- Hologram events
|
||||
- `HologramCreateEvent` -> `HologramCreateEvent`
|
||||
- `HologramRemoveEvent` -> `HologramDeleteEvent`
|
||||
- `HologramModifyEvent` -> `HologramUpdateEvent`
|
||||
- `HologramSpawnEvent` -> `HologramShowEvent`
|
||||
- +`HologramHideEvent`
|
||||
- Hologram Data
|
||||
- Background Color
|
||||
- Now accepts hex color codes
|
||||
- Now accepts `reset` or `default` to return to the original background color
|
||||
- Text Update Interval
|
||||
- Now accepts `never` or `off` or `none` to disable updating
|
||||
- Now accepts second and minute units, ex. `10s` instead of `200`
|
||||
- Hologram Position
|
||||
- Now accepts relative coordinates
|
||||
- Can be relative to the hologram's current location using `~`
|
||||
- Can be relative to the player's current location using `~~`
|
||||
- Command Completions
|
||||
- Intelligently suggests only relevant options
|
||||
|
||||
If you found any bug, please report them (create an issue or go to the discord server).
|
||||
|
||||
Thank you Sxtanna for putting so much effort into this!
|
||||
2
docs/src/fancyholograms/commands/commands.yml
Normal file
2
docs/src/fancyholograms/commands/commands.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 9
|
||||
icon: command-palette
|
||||
37
docs/src/fancyholograms/commands/fancyholograms.md
Normal file
37
docs/src/fancyholograms/commands/fancyholograms.md
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 9
|
||||
---
|
||||
|
||||

|
||||
|
||||
# /FancyHolograms
|
||||
|
||||
### Version
|
||||
|
||||
Shows the current version of the plugin. It also shows possible updates.
|
||||
|
||||
- **Syntax**: `/fancyholograms version`
|
||||
- **Permissions**: `fancyholograms.admin`
|
||||
|
||||
### Save
|
||||
|
||||
Saves all holograms to the file system.
|
||||
|
||||
- **Syntax**: `/fancyholograms save`
|
||||
- **Permissions**: `fancyholograms.admin`
|
||||
|
||||
### Reload
|
||||
|
||||
Reloads the configuration and also loads all holograms from the file system.
|
||||
|
||||
- **Syntax**: `/fancyholograms reload`
|
||||
- **Permissions**: `fancyholograms.admin`
|
||||
|
||||
### Convert
|
||||
|
||||
Converts holograms from other hologram-plugins to FancyHolograms' holograms
|
||||
|
||||
- **Syntax**: `/fancyholograms convert DecentHolograms <* | name of hologram> [--processIcons]`
|
||||
- `--processIcons`: If set, the converter will also convert icons into separate holograms
|
||||
- **Permissions**: `fancyholograms.admin`
|
||||
225
docs/src/fancyholograms/commands/hologram.md
Normal file
225
docs/src/fancyholograms/commands/hologram.md
Normal file
@@ -0,0 +1,225 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 10
|
||||
---
|
||||
|
||||

|
||||
|
||||
# /Hologram
|
||||
|
||||
## Manage holograms
|
||||
|
||||
### help
|
||||
|
||||
Description: Shows a list of all subcommands<br/>
|
||||
Syntax: ``/Hologram help``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### list
|
||||
|
||||
Description: Shows a list of all holograms<br/>
|
||||
Syntax: ``/Hologram list``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### nearby
|
||||
|
||||
Description: Shows all holograms nearby you in a range<br/>
|
||||
Syntax: ``/Hologram nearby <range>``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### create
|
||||
|
||||
Description: Creates a new hologram at your location<br/>
|
||||
Syntax: ``/Hologram create (type) (name)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### remove
|
||||
|
||||
Description: Removes a certain hologram<br/>
|
||||
Syntax: ``/Hologram remove (hologram)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### copy
|
||||
|
||||
Description: Creates a copy of a hologram<br/>
|
||||
Syntax: ``/Hologram copy (hologram) (new name)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### info
|
||||
|
||||
Description: Shows you all information about the hologram<br/>
|
||||
Syntax: ``/Hologram info (hologram)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
## General hologram modification
|
||||
|
||||
These commands can be run for any hologram type (text, item and block).
|
||||
|
||||
### moveHere
|
||||
|
||||
Description: Teleports the hologram to you<br/>
|
||||
Syntax: ``/Hologram edit (hologram) moveHere``<br/>
|
||||
Alias: ``/Hologram edit (hologram) position``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### moveTo
|
||||
|
||||
Description: Teleports the hologram to the location<br/>
|
||||
Syntax: ``/Hologram edit (hologram) moveTo (x) (y) (z) [yaw] [pitch]``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### rotate
|
||||
|
||||
Description: Rotates the hologram around the y-axis<br/>
|
||||
Syntax: ``/Hologram edit (hologram) rotate (degrees)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### rotatepitch
|
||||
|
||||
Description: Rotates the hologram around the x-axis<br/>
|
||||
Syntax: ``/Hologram edit (hologram) rotatepitch (degrees)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### translate
|
||||
|
||||
Description: Translates the hologram by a certain amount in the x, y and z direction<br/>
|
||||
Syntax: ``/Hologram edit (hologram) rotatepitch (x) (y) (z)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
|
||||
### visibilityDistance
|
||||
|
||||
Description: Sets from how far away players can see the hologram (-1 for default distance)<br/>
|
||||
Syntax: ``/Hologram edit (hologram) visibilityDistance (distance)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### visibility
|
||||
|
||||
Description: Sets how the visibility should be controlled<br/>
|
||||
Syntax: ``/Hologram edit (hologram) visibility (ALL | MANUAL | PERMISSION_NEEDED)``<br/>
|
||||
Permission: ``FancyHolograms.admin``<br/>
|
||||
Permission to view a hologram: ``FancyHolograms.viewhologram.<name>``
|
||||
|
||||
### scale
|
||||
|
||||
Description: Sets the scale (can be floats)<br/>
|
||||
Syntax: ``/Hologram edit (hologram) scale (factor)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### billboard
|
||||
|
||||
Description: Sets the billboard<br/>
|
||||
Syntax: ``/Hologram edit (hologram) billboard (center | fixed | vertical | horizontal)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### shadowStrength
|
||||
|
||||
Description: Sets the shadow strength<br/>
|
||||
Syntax: ``/Hologram edit (hologram) shadowStrength (strength)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### shadowRadius
|
||||
|
||||
Description: Sets the shadow radius<br/>
|
||||
Syntax: ``/Hologram edit (hologram) shadowRadius (radius)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### linkWithNpc
|
||||
|
||||
Description: Links a hologram with an NPC (requires FancyNpcs)<br/>
|
||||
Syntax: ``/Hologram edit (hologram) linkWithNpc (npc)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### unlinkWithNpc
|
||||
|
||||
Description: Unlinks the hologram from the NPC<br/>
|
||||
Syntax: ``/Hologram edit (hologram) unlinkWithNpc``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
## Text hologram modification
|
||||
|
||||
These commands can be run for all **text** holograms.
|
||||
|
||||
### setLine
|
||||
|
||||
Description: Sets the content of the line<br/>
|
||||
Syntax: ``/Hologram edit (hologram) setLine (line) (text...)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### addLine
|
||||
|
||||
Description: Adds a line at the bottom<br/>
|
||||
Syntax: ``/Hologram edit (hologram) addLine (text...)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### removeLine
|
||||
|
||||
Description: Removes a line<br/>
|
||||
Syntax: ``/Hologram edit (hologram) removeLine (line)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### insertBefore
|
||||
|
||||
Description: Adds a line after another<br/>
|
||||
Syntax: ``/Hologram edit (hologram) insertBefore (line) (text...)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### insertAfter
|
||||
|
||||
Description: Adds a line before another<br/>
|
||||
Syntax: ``/Hologram edit (hologram) insertAfter (line) (text...)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### updateTextInterval
|
||||
|
||||
Description: Sets the interval for refreshing the text (useful for
|
||||
placeholders)<br/>
|
||||
Syntax: ``/Hologram edit (hologram) updateTextInterval (ticks | seconds | minutes)``<br/>
|
||||
Example ticks:``/Hologram edit (hologram) updateTextInterval 15``<br/>
|
||||
Example seconds:``/Hologram edit (hologram) updateTextInterval 5s``<br/>
|
||||
Example minutes:``/Hologram edit (hologram) updateTextInterval 5m``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### background
|
||||
|
||||
Description: Sets the background color<br/>
|
||||
Syntax: ``/Hologram edit (hologram) background (color)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### textShadow
|
||||
|
||||
Description: Enables/disables the text shadow<br/>
|
||||
Syntax: ``/Hologram edit (hologram) textShadow (true|false)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### brightness
|
||||
|
||||
Description: Changes the brightness of the hologram<br/>
|
||||
Syntax: ``/hologram edit <hologram> brightness (block | sky) (0-15)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
### textAlignment
|
||||
|
||||
Description: Sets the alignment of the text<br/>
|
||||
Syntax: ``/Hologram edit (hologram) textAlignment (center | left | right)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
## Item hologram modification
|
||||
|
||||
These commands can be run for all **item** holograms.
|
||||
|
||||
### item
|
||||
|
||||
Description: Sets the hologram item you are holding in your main hand<br/>
|
||||
Syntax: ``/Hologram edit (hologram) item``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
|
||||
## Block hologram modification
|
||||
|
||||
These commands can be run for all **block** holograms.
|
||||
|
||||
### block
|
||||
|
||||
Description: Sets the hologram block<br/>
|
||||
Syntax: ``/Hologram edit (hologram) block (block type)``<br/>
|
||||
Permission: ``FancyHolograms.admin``
|
||||
55
docs/src/fancyholograms/fancyholograms.md
Normal file
55
docs/src/fancyholograms/fancyholograms.md
Normal file
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: FancyHolograms
|
||||
icon: image
|
||||
expanded: true
|
||||
order: 100
|
||||
---
|
||||
|
||||
#
|
||||
|
||||

|
||||
|
||||
!!!
|
||||
Simple, lightweight and feature-rich hologram plugin for Paper and Folia servers using packets.
|
||||
!!!
|
||||
|
||||
## Features
|
||||
|
||||
With this plugin you can create fancy looking holograms with ease. You can customize properties like:
|
||||
- **Type** (Text, Block, Item)
|
||||
- **Text** (Multiple lines)
|
||||
- **Position, Rotation and Scale**
|
||||
- **Billboard** (Fixed, Center ...)
|
||||
- **MiniMessage formatting**
|
||||
- **Placeholders** (PlaceholderAPI, MiniPlaceholders)
|
||||
- **FancyNpcs Integration** (hologram as display name)
|
||||
- ... and much more!
|
||||
|
||||
## Principles
|
||||
|
||||
### Simple
|
||||
|
||||
The plugin is designed to be easy to use and understand. The commands are well-structured and the tab completion is incredibly helpful.
|
||||
You can do everything in-game without the need of touching the configuration files.
|
||||
All commands and features are documented in this wiki. If you have any questions, feel free to ask in the Discord server, we are happy to help you.
|
||||
|
||||
### Lightweight
|
||||
|
||||
The plugin is optimized for performance. It uses packets to send the hologram data to the clients, which is the most efficient way to do it.
|
||||
The server does not have to do any additional work, which means that the plugin has a minimal impact on the server performance.
|
||||
FancyHolograms does not require ANY dependencies other than Paper.
|
||||
|
||||
### Feature-rich
|
||||
|
||||
The plugin has a lot of features to offer. You can customize the holograms in many ways and create unique holograms for your server.
|
||||
We are constantly working on new innovative features and improvements. If you have any suggestions, feel free to share them with us.
|
||||
|
||||
## Download
|
||||
|
||||
You can download the latest version of FancyHolograms from the following platforms:
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Download from Modrinth" target="blank"](https://modrinth.com/plugin/fancyholograms/versions)
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Download from Hangar" target="blank"](https://hangar.papermc.io/Oliver/FancyHolograms/versions)
|
||||
|
||||
How to get started with FancyHolograms? Check out [this page](getting-started.md).
|
||||
34
docs/src/fancyholograms/faq.md
Normal file
34
docs/src/fancyholograms/faq.md
Normal file
@@ -0,0 +1,34 @@
|
||||
---
|
||||
order: 6
|
||||
icon: book
|
||||
---
|
||||
# FAQ
|
||||
|
||||
### How to modify each line in a hologram?
|
||||
|
||||
Per-line settings (such as scale or background) are not supported in FancyHolograms due to a limitation with display entities.
|
||||
|
||||
A separate hologram will need to be created for each line.
|
||||
|
||||
### How to add a blank line?
|
||||
|
||||
To add a blank line in a hologram, use `<reset>` on a new line.
|
||||
|
||||
### How to make holograms clickable?
|
||||
|
||||
Holograms currently aren't clickable themselves, but [here's](tutorials/clickable-holograms.md) a workaround
|
||||
|
||||
### How to make the hologram not to rotate?
|
||||
|
||||
To make a hologram not rotate, the billboarding must be set to FIXED.
|
||||
|
||||
Example: `/holo edit <hologram> billboard FIXED`
|
||||
|
||||
Once complete, you must set the hologram's rotation with the rotate and rotatepitch commands.
|
||||
|
||||
### How to edit the holograms via the data file?
|
||||
|
||||
1. Run /fancyholograms save
|
||||
2. Back up the holograms.yml file in case something goes wrong
|
||||
3. Edit your holograms.yml file as desired
|
||||
4. Run /fancyholograms reload after saving the file
|
||||
35
docs/src/fancyholograms/getting-started.md
Normal file
35
docs/src/fancyholograms/getting-started.md
Normal file
@@ -0,0 +1,35 @@
|
||||
---
|
||||
order: 10
|
||||
icon: info
|
||||
---
|
||||
# Getting started
|
||||
|
||||
!!!danger
|
||||
Be aware, that only Paper and Folia is supported, but the plugin should work on any of its forks (like Purpur or Pufferfish). Spigot, Bukkit, Sponge and Fabric is not supported.
|
||||
!!!
|
||||
|
||||
## Installation
|
||||
|
||||
To install FancyHolograms, you need to download the latest version from one of the following sources:
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Modrinth" target="blank"](https://modrinth.com/plugin/fancyholograms/versions)
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Hangar" target="blank"](https://hangar.papermc.io/Oliver/FancyHolograms/versions)
|
||||
|
||||
After downloading the plugin, you can install it by placing the downloaded file in the `plugins` folder of your server.
|
||||
|
||||
Restart your server and you are ready to go!
|
||||
|
||||
To check if the plugin is installed correctly, you can use the command `/fancyholograms version`. If the plugin is installed correctly, it will show you the version of the plugin.
|
||||
|
||||
## Create your first hologram
|
||||
|
||||
1. To create your first hologram, you can use the command `/hologram create text myHologram`. This will create a new text hologram with the given name.
|
||||
2. To add text to the hologram, you can use the command `/hologram edit myHologram addLine <green>My first hologram</green>`. This will add a new line to the hologram with the given text.
|
||||
3. To edit the text of the hologram, you can use the command `/hologram edit myHologram setLine 1 <red>My first hologram</red>`. This will set the text of the first line to the given text.
|
||||
4. To change the background of the hologram, you can use the command `/hologram edit myHologram background RED`. This will set the background of the hologram to red.
|
||||
5. To move the hologram to your current location, you can use the command `/hologram moveHere myHologram`. This will move the hologram to your current location.
|
||||
|
||||
!!!
|
||||
You can use MiniMessages in the hologram text. For more information about MiniMessages, you can visit the [MiniMessage documentation](https://docs.advntr.dev/minimessage/format.html).
|
||||
!!!
|
||||
57
docs/src/fancyholograms/inspiration.md
Normal file
57
docs/src/fancyholograms/inspiration.md
Normal file
@@ -0,0 +1,57 @@
|
||||
---
|
||||
order: 8
|
||||
icon: image
|
||||
---
|
||||
|
||||
# Inspiration
|
||||
|
||||
The following examples show how to use FancyNpcs in different ways. They are meant to give you an idea of what you can do with the plugin.
|
||||
|
||||
Almost all examples are made by the community. If you have a nice example that you want to share, feel free come to our discord server and show it to us.
|
||||
|
||||
## Examples
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
## API examples
|
||||
|
||||
<video autoplay controls loop>
|
||||
<source src="/static/fancyholograms/examples/faceland-1.mp4" type="video/mp4">
|
||||
</video>
|
||||
Provided by play.face.land
|
||||
|
||||
---
|
||||
|
||||
<video autoplay controls loop>
|
||||
<source src="/static/fancyholograms/examples/faceland-2.mp4" type="video/mp4">
|
||||
</video>
|
||||
Provided by play.face.land
|
||||
|
||||
---
|
||||
|
||||
<video autoplay controls loop>
|
||||
<source src="/static/fancyholograms/examples/faceland-3.mp4" type="video/mp4">
|
||||
</video>
|
||||
Provided by play.face.land
|
||||
15
docs/src/fancyholograms/tutorials/clickable-holograms.md
Normal file
15
docs/src/fancyholograms/tutorials/clickable-holograms.md
Normal file
@@ -0,0 +1,15 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Clickable holograms
|
||||
|
||||
Interactions with holograms is not a feature of FancyHolograms yet, but there is a workaround for this.
|
||||
|
||||
1. Create your hologram with the text you want.
|
||||
2. Install [FancyNpcs](../../fancynpcs/getting-started.md)
|
||||
3. Create a new npc and set the type to "INTERACTION" (`/npc type (npc name) INTERACTION`)
|
||||
4. Remove the name tag of the npc (`/npc displayname (npc name) <empty>`)
|
||||
5. Position the npc to the same location as the hologram (press F3+B to see the hitbox)
|
||||
6. Modify the size of the hitbox to fit the hologram (`/npc attributes (npc name) set (width/height) (size)`)
|
||||
7. Add an interaction action to the npc ([action system](../../fancynpcs/tutorials/action-system.md))
|
||||
2
docs/src/fancyholograms/tutorials/tutorials.yml
Normal file
2
docs/src/fancyholograms/tutorials/tutorials.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 7
|
||||
icon: mortar-board
|
||||
@@ -1,6 +0,0 @@
|
||||
---
|
||||
redirect: getting-started.md
|
||||
icon: code
|
||||
order: 6
|
||||
---
|
||||
# API usage
|
||||
2
docs/src/fancynpcs/api/api.yml
Normal file
2
docs/src/fancynpcs/api/api.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: code
|
||||
order: 6
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Getting started
|
||||
|
||||
## Include the API in your project
|
||||
@@ -7,7 +11,7 @@ To include the FancyNPCs API in your project, you need to add the following depe
|
||||
**Gradle:**
|
||||
```kotlin
|
||||
repositories {
|
||||
maven("https://repo.fancyplugins.de/releases")
|
||||
maven("https://repo.fancyinnovations.com/releases")
|
||||
}
|
||||
```
|
||||
|
||||
@@ -20,9 +24,9 @@ dependencies {
|
||||
**Maven:**
|
||||
```xml
|
||||
<repository>
|
||||
<id>fancyplugins-releases</id>
|
||||
<name>FancyPlugins Repository</name>
|
||||
<url>https://repo.fancyplugins.de/releases</url>
|
||||
<id>fancyinnovations-releases</id>
|
||||
<name>FancyInnovations Repository</name>
|
||||
<url>https://repo.fancyinnovations.com/releases</url>
|
||||
</repository>
|
||||
```
|
||||
|
||||
@@ -65,7 +69,7 @@ To let FancyNpcs handle the NPC, you need to register it. FancyNpcs will take ca
|
||||
FancyNpcsPlugin.get().getNpcManager().registerNpc(npc);
|
||||
```
|
||||
|
||||
!!! warning
|
||||
!!!warning
|
||||
Do not register npcs in the first few seconds after the server has started. You need to wait at least 10 seconds before registering npcs. Otherwise, the npcs will not get registered correctly.
|
||||
You can also listen to the `NpcsLoadedEvent` to know when you can register npcs.
|
||||
!!!
|
||||
@@ -130,7 +134,7 @@ npc.removeForAll();
|
||||
|
||||
## JavaDocs and help
|
||||
|
||||
You can find the JavaDocs for the FancyNpcs API [here](https://repo.fancyplugins.de/javadoc/releases/de/oliver/FancyNpcs/latest).
|
||||
You can find the JavaDocs for the FancyNpcs API [here](https://repo.fancyinnovations.com/javadoc/releases/de/oliver/FancyNpcs/latest).
|
||||
|
||||
Join the [FancyPlugins Discord](https://discord.gg/ZUgYCEJUEx) for help and support. There is a dedicated channel for help about the api (`#npcs-dev`).
|
||||
Join the [FancyInnovations Discord](https://discord.gg/ZUgYCEJUEx) for help and support. There is a dedicated channel for help about the api (`#npcs-api`).
|
||||
```
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
icon: log
|
||||
order: 5
|
||||
redirect: v2
|
||||
---
|
||||
2
docs/src/fancynpcs/changelog/changelog.yml
Normal file
2
docs/src/fancynpcs/changelog/changelog.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
icon: log
|
||||
order: 5
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 1
|
||||
---
|
||||
|
||||
|
||||
@@ -1,10 +1,71 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 2
|
||||
---
|
||||
|
||||

|
||||
|
||||
#
|
||||
#
|
||||
|
||||
## v2.8.0 [!badge variant="info" text="2025-10-10"]
|
||||
|
||||
- Added support for 1.21.9 and 1.21.10
|
||||
- Added support for MiniPlaceholders v3
|
||||
- Added permissions for each action type
|
||||
- Improved logging
|
||||
- Fixed various bugs for the player-npcs fflag
|
||||
- Added an optional flag to disable arm swinging in Npc#update
|
||||
- Added NpcManager#isLoaded method
|
||||
- Regular dev builds are now published to the BETA channel
|
||||
|
||||
## v2.7.1 [!badge variant="info" text="2025-08-07"]
|
||||
|
||||
- Fixed placeholder skins not refreshing
|
||||
- Send a warning message when using the `player_command_as_op` action
|
||||
- Fixed translation for the `turn_to_player` action
|
||||
- Fixed camel pose attribute for 1.21.6 - 1.21.8
|
||||
|
||||
## v2.7.0 [!badge variant="info" text="2025-07-18"]
|
||||
|
||||
- Added support for 1.21.7 & 1.21.8
|
||||
- Added `harness` attribute for happy ghasts
|
||||
- Fixed comments not being for new feature flags
|
||||
- Fixed status code check of Mojang API
|
||||
- Improved http handling in FancyAnalytics
|
||||
|
||||
## v2.6.0 [!badge variant="info" text="2025-06-26"]
|
||||
|
||||
- Added support for 1.21.6
|
||||
- Added UUID caching to improve performance
|
||||
- More fixes to the skin system
|
||||
|
||||
## v2.5.2 [!badge variant="info" text="2025-06-13"]
|
||||
|
||||
- Fixed skins set to username or uuid not working sometimes (403 http status code)
|
||||
- Npcs should now spawn instantly when a player teleports
|
||||
- Added support for [text shadow color](https://docs.advntr.dev/minimessage/format.html#shadow-color) (updated
|
||||
ChatColorHandler)
|
||||
- Changed npc update interval (the config option) to seconds
|
||||
- Added sniffer state attribute
|
||||
- Fixed NPE in SkinManager
|
||||
- Fixed issue with the copy command
|
||||
- Fixed exception with the npc update method when using 1.20
|
||||
- Fixed NpcsLoadedEvent not being called when no npcs exist
|
||||
|
||||
## v2.5.1 [!badge variant="info" text="2025-05-31"] [!badge variant="danger" text="Hotfix"]
|
||||
|
||||
- Fixed some attributes kicking players from the server (only in 1.21.5)
|
||||
- Fixed NPE related to the skin system
|
||||
|
||||
## v2.5.0 [!badge variant="info" text="2025-04-24"]
|
||||
|
||||
- Added support for Minecraft 1.21.5
|
||||
- Added `turn_to_player_distance` command
|
||||
- Added `center` command
|
||||
- Added `variant` attribute for pig, cow and chicken
|
||||
- Added `collar_color` attribute for wolves and cats
|
||||
- Fixed wolf variant attribute
|
||||
- Many fixes and improvements for the skin system
|
||||
|
||||
## v2.4.4 [!badge variant="info" text="2025-03-11"] [!badge variant="danger" text="Hotfix"]
|
||||
|
||||
@@ -15,6 +76,7 @@ order: 2
|
||||
## v2.4.3 [!badge variant="info" text="2025-03-11"]
|
||||
|
||||
**New skin system**
|
||||
|
||||
- You can now use local image files as skin
|
||||
- Skins set by URL or file can be made slim
|
||||
- The skin cache system is improved
|
||||
@@ -22,17 +84,24 @@ order: 2
|
||||
- Skins should load more reliably
|
||||
- You can set a MineSkin API key to speed up loading skins
|
||||
|
||||
When starting the server for the first time, it might take some time (depending on how many npcs with skins you have) to load all skins.
|
||||
When starting the server for the first time, it might take some time (depending on how many npcs with skins you have) to
|
||||
load all skins.
|
||||
|
||||
The API for setting skins also changed. Forget the SkinFetcher, now you only need to do the following:
|
||||
|
||||
```java
|
||||
npc.getData().setSkin("username / uuid / url / filename");
|
||||
npc.getData().
|
||||
|
||||
setSkin("username / uuid / url / filename");
|
||||
```
|
||||
|
||||
The old SkinFetcher API won't work in this version.
|
||||
|
||||
**Other changes**
|
||||
|
||||
- Added configurable missing permissions message for the `need_permission` action
|
||||
- Added feature flag to use native threads instead of virtual threads (enable it when you have problems with virtual threads)
|
||||
- Added feature flag to use native threads instead of virtual threads (enable it when you have problems with virtual
|
||||
threads)
|
||||
|
||||
## v2.4.2 [!badge variant="info" text="2025-01-29"]
|
||||
|
||||
@@ -42,22 +111,28 @@ The old SkinFetcher API won't work in this version.
|
||||
- Added configurable npc update visibility interval
|
||||
- Fixed skins via URL not working
|
||||
- Fixed clearing npc equipment via command
|
||||
- Fixed display name not always visible when npc type is not player (you needed to look at the entity - now it's always visible)
|
||||
- Fixed display name not always visible when npc type is not player (you needed to look at the entity - now it's always
|
||||
visible)
|
||||
- Fixed the `register_commands` not working
|
||||
|
||||
**API changes**
|
||||
|
||||
- Added NpcLoadedEvent (fired when all NPCs are loaded)
|
||||
|
||||
## v2.4.1 [!badge variant="info" text="2024-12-08"]
|
||||
|
||||
- Added support for 1.21.4
|
||||
- Added "need_permission" action - if added the player needs a specific permission, otherwise the action-chain will be terminated
|
||||
- Added "need_permission" action - if added the player needs a specific permission, otherwise the action-chain will be
|
||||
terminated
|
||||
- Improved performance of action execution
|
||||
|
||||
**API**
|
||||
|
||||
Marked current skin system as deprecated.
|
||||
We're currently working on a new system, which solves rate limiting problems, adds ability to use skins from local files and adds the ability to specify the skin variant (slim, default). The new skin system will have a slightly new API. If everything goes right, the new system will be added in the next version. There will be documentation, how to use the new API then.
|
||||
We're currently working on a new system, which solves rate limiting problems, adds ability to use skins from local files
|
||||
and adds the ability to specify the skin variant (slim, default). The new skin system will have a slightly new API. If
|
||||
everything goes right, the new system will be added in the next version. There will be documentation, how to use the new
|
||||
API then.
|
||||
|
||||
## v2.4.0 [!badge variant="info" text="2024-11-02"]
|
||||
|
||||
@@ -130,9 +205,10 @@ We're currently working on a new system, which solves rate limiting problems, ad
|
||||
- Fixed player npcs not spawning in 1.19.4
|
||||
- Fixed duplicate npc names
|
||||
- Add join delay
|
||||
- Fixed armor stand interaction
|
||||
- Fixed armor stand interaction
|
||||
|
||||
**API changes**
|
||||
|
||||
- Added NpcManager#getNpcById
|
||||
- Improve and extend api for npc interactions
|
||||
- Include sources and javadocs in api
|
||||
@@ -145,7 +221,8 @@ This version fixes various of issues that accured in v2.0.8
|
||||
- Removed debug message console spam
|
||||
- Fixed not being able to modify playerCommands on new created npcs
|
||||
- Equipment is not shown when npc is invisible
|
||||
- Added a fix command (/npc fix (npc name)): run this command, if the npc is bugged and it will completely recreate the npc and might fix the issue
|
||||
- Added a fix command (/npc fix (npc name)): run this command, if the npc is bugged and it will completely recreate the
|
||||
npc and might fix the issue
|
||||
|
||||
## v2.0.8 [!badge variant="info" text="2024-02-18"]
|
||||
|
||||
@@ -158,16 +235,16 @@ This version fixes various of issues that accured in v2.0.8
|
||||
## v2.0.7 [!badge variant="info" text="2024-01-09"]
|
||||
|
||||
- You can now set multiple npc messages:
|
||||
- /Npc message (npc name) add (message) - adds a new message
|
||||
- /Npc message (npc name) set (index) (message) - sets a message at an index
|
||||
- /Npc message (npc name) remove (index) - removes a message at an index
|
||||
- /Npc message (npc name) clear - removes all messages
|
||||
- /Npc message (npc name) add (message) - adds a new message
|
||||
- /Npc message (npc name) set (index) (message) - sets a message at an index
|
||||
- /Npc message (npc name) remove (index) - removes a message at an index
|
||||
- /Npc message (npc name) clear - removes all messages
|
||||
- Added support for legacy colors in the display name
|
||||
- Added player sitting pose (/npc attribute pose sitting)
|
||||
- Added the "/npc info (npc)" command
|
||||
- You can disable the "on interaction cooldown" message in the config (disable_interaction_cooldown_message=true)
|
||||
- Added config option to not register commands (helpful if you use FancyNpcs as library)
|
||||
- Fixed setting showInTab to false not applying right away
|
||||
- Fixed setting showInTab to false not applying right away
|
||||
- Fixed npcs sometimes disappearing when teleporting from another world
|
||||
|
||||
## v2.0.6.1 [!badge variant="info" text="2023-12-13"] [!badge variant="danger" text="Hotfix"]
|
||||
@@ -224,11 +301,15 @@ This version fixes various of issues that accured in v2.0.8
|
||||
|
||||
## v2.0.0 [!badge variant="info" text="2023-06-28"]
|
||||
|
||||
In this major update, FancyNpcs introduces a revamped project structure, empowering the plugin to seamlessly support multiple Minecraft versions within a single jar file. Gone are the days of limited compatibility - now you can enjoy the benefits of FancyNpcs across various versions!
|
||||
In this major update, FancyNpcs introduces a revamped project structure, empowering the plugin to seamlessly support
|
||||
multiple Minecraft versions within a single jar file. Gone are the days of limited compatibility - now you can enjoy the
|
||||
benefits of FancyNpcs across various versions!
|
||||
|
||||
Full changelog:
|
||||
|
||||
- Versatile Version Support: FancyNpcs 2.0.0 breaks free from its previous limitations by accommodating both newer and older Minecraft versions. The plugin now proudly supports the latest versions 1.19.4 and 1.20.1, ensuring compatibility and flexibility for your Minecraft server.
|
||||
- Versatile Version Support: FancyNpcs 2.0.0 breaks free from its previous limitations by accommodating both newer and
|
||||
older Minecraft versions. The plugin now proudly supports the latest versions 1.19.4 and 1.20.1, ensuring
|
||||
compatibility and flexibility for your Minecraft server.
|
||||
- Added PlaceholderAPI support
|
||||
- Several fixes
|
||||
- Added example images and a new big title to the README.md
|
||||
@@ -1,5 +0,0 @@
|
||||
---
|
||||
order: 9
|
||||
icon: command-palette
|
||||
redirect: npc.md
|
||||
---
|
||||
2
docs/src/fancynpcs/commands/commands.yml
Normal file
2
docs/src/fancynpcs/commands/commands.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 9
|
||||
icon: command-palette
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 9
|
||||
---
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
---
|
||||
icon: dot
|
||||
order: 10
|
||||
---
|
||||
|
||||
@@ -132,6 +133,10 @@ Changes whether the NPC can collide with other entities.
|
||||
|
||||
Changes the scale of the size of the NPC.
|
||||
|
||||
!!!warning
|
||||
Only available for 1.20.5 or newer.
|
||||
!!!
|
||||
|
||||
- **Syntax**: `/npc scale (npc) (factor)`
|
||||
- **Permissions**: `fancynpcs.command.npc.scale`
|
||||
|
||||
@@ -206,28 +211,36 @@ Learn more about actions and triggers in the [Action System](../tutorials/action
|
||||
Adds an action to the specified NPC's trigger.
|
||||
|
||||
- **Syntax**: `/npc action (npc) (trigger) add (actionType) [value]`
|
||||
- **Permissions**: `fancynpcs.command.npc.action.add`
|
||||
- **Permissions**:
|
||||
- `fancynpcs.command.npc.action.add`
|
||||
- and `fancynpcs.command.npc.action.add.(actionType | *)` for the specific action type
|
||||
|
||||
### Add action before
|
||||
|
||||
Adds an action before the specified index in the NPC's action list for the given trigger.
|
||||
|
||||
- **Syntax**: `/npc action (npc) (trigger) add_before (index) (actionType) [value]`
|
||||
- **Permissions**: `fancynpcs.command.npc.action.addBefore`
|
||||
- **Permissions**:
|
||||
- `fancynpcs.command.npc.action.addBefore`
|
||||
- and `fancynpcs.command.npc.action.add.(actionType | *)` for the specific action type
|
||||
|
||||
### Add action after
|
||||
|
||||
Adds an action after the specified index in the NPC's action list for the given trigger.
|
||||
|
||||
- **Syntax**: `/npc action (npc) (trigger) add_after (index) (actionType) [value]`
|
||||
- **Permissions**: `fancynpcs.command.npc.action.addAfter`
|
||||
- **Permissions**:
|
||||
- `fancynpcs.command.npc.action.addAfter`
|
||||
- and `fancynpcs.command.npc.action.add.(actionType | *)` for the specific action type
|
||||
|
||||
### Set action
|
||||
|
||||
Sets an action at the specified number in the NPC's action list for the given trigger.
|
||||
|
||||
- **Syntax**: `/npc action (npc) (trigger) set (number) (actionType) [value]`
|
||||
- **Permissions**: `fancynpcs.command.npc.action.set`
|
||||
- **Permissions**:
|
||||
- `fancynpcs.command.npc.action.set`
|
||||
- and `fancynpcs.command.npc.action.add.(actionType | *)` for the specific action type
|
||||
|
||||
### Remove action
|
||||
|
||||
|
||||
@@ -2,12 +2,12 @@
|
||||
title: FancyNpcs
|
||||
icon: accessibility
|
||||
expanded: true
|
||||
order: 100
|
||||
order: 200
|
||||
---
|
||||
|
||||
#
|
||||
|
||||

|
||||

|
||||
|
||||
!!!
|
||||
Simple, lightweight and feature-rich NPC plugin for Paper and Folia servers using packets.
|
||||
@@ -50,4 +50,4 @@ You can download the latest version of FancyNpcs from the following platforms:
|
||||
|
||||
[!button size="s" icon="download" iconAlign="left" text="Download from Hangar" target="blank"](https://hangar.papermc.io/Oliver/FancyNpcs/versions)
|
||||
|
||||
How to get started with FancyNpcs? Check out the [this page](getting-started.md).
|
||||
How to get started with FancyNpcs? Check out [this page](getting-started.md).
|
||||
@@ -19,4 +19,26 @@ No, currently there is no support for ModelEngine 4 or any other model engine. S
|
||||
|
||||
FancyNpcs does not have a movement system yet. This is a highly requested feature and might be added in the future. Keep an eye on the discord server for updates.
|
||||
|
||||
We already made plans for a waypoint system, but it is not yet implemented. If you have any suggestions or ideas, feel free to share them on the discord server.
|
||||
We already made plans for a waypoint system, but it is not yet implemented. If you have any suggestions or ideas, feel free to share them on the discord server.
|
||||
|
||||
### Placeholders as skin
|
||||
|
||||
Using placeholders as skin does generally work. There are a few requirements tho:
|
||||
- The placeholder must resolve into a valid username, UUID, URL or file path
|
||||
- The placeholder must be able to resolve without any player context
|
||||
|
||||
You can test if this is the case by trying to manually resolve the placeholder using the `/papi parse --null %YOUR-PLACEHOLDER%` command.
|
||||
If the placeholder resolves to a valid value, you can use it as skin.
|
||||
|
||||
### URLs as skin
|
||||
|
||||
You can use URLs as skin. There are a few requirements tho:
|
||||
|
||||
- The URL must be reachable
|
||||
- The URL must point to a valid skin file
|
||||
- Using a URL that points to a .png file is recommended
|
||||
|
||||
How to use a skin from NameMC:
|
||||
|
||||

|
||||

|
||||
|
||||
@@ -4,7 +4,7 @@ icon: info
|
||||
---
|
||||
# Getting started
|
||||
|
||||
!!! danger
|
||||
!!!danger
|
||||
Be aware, that only Paper and Folia is supported, but the plugin should work on any of its forks (like Purpur or Pufferfish). Spigot, Bukkit, Sponge and Fabric is not supported.
|
||||
!!!
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Action system
|
||||
|
||||
The NPC Action System in FancyNPCs allows server administrators to create interactive and engaging NPCs by assigning actions that trigger based on player interactions or custom events.
|
||||
@@ -51,7 +55,7 @@ Example: `/npc action (npc) (trigger) add player_command warp spawn`
|
||||
|
||||
Executes a command as the player who triggered the action, but with operator privileges. This action is useful for performing player-specific operations that require operator permissions.
|
||||
|
||||
!!! warning
|
||||
!!!warning
|
||||
FancyNpcs will gives the player operator permissions for the duration of the command execution. This means that the player will have access to all commands and permissions during that time.
|
||||
This can be a security risk if not used carefully, so make sure to use this action only when necessary and with trusted players.
|
||||
!!!
|
||||
@@ -69,6 +73,10 @@ Syntax: `send_to_server (server name)`
|
||||
|
||||
Example: `/npc action (npc) (trigger) add send_to_server skyblock`
|
||||
|
||||
!!!info
|
||||
Make sure to set `bungee-plugin-message-channel` to `true` in the velocity.toml config file. Otherwise, this action might not work properly.
|
||||
!!!
|
||||
|
||||
### execute_random_action
|
||||
|
||||
Picks a random action from the remaining actions in the list and executes it. This action is useful for creating random behavior in NPCs.
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# MineSkin API Key
|
||||
|
||||
When you have many npcs with skins (especially skins by file or url), you will notice that it takes a while once they
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Multiple display name lines
|
||||
|
||||
To have multiple lines as the display name of an NPC follow the following steps:
|
||||
|
||||
@@ -1,9 +1,13 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Sitting NPCs
|
||||
|
||||
You can make a NPC sit by following these steps:
|
||||
|
||||
1. Create a NPC
|
||||
2. Make sure the type is PLAYER (`/npc type <npc> PLAYER`)
|
||||
3. Run `/npc attribute <npc> pose sitting`
|
||||
3. Run `/npc attribute <npc> set pose sitting`
|
||||
|
||||
You can make the npc stand again by running `/npc attribute <npc> pose standing`
|
||||
You can make the npc stand again by running `/npc attribute <npc> set pose standing`
|
||||
@@ -1,7 +0,0 @@
|
||||
---
|
||||
order: 7
|
||||
icon: mortar-board
|
||||
---
|
||||
# Tutorials
|
||||
|
||||
In this section you will find many tutorials for specific use cases and examples of how to use FancyNPCs. If you have any suggestions for tutorials, please let us know on our discord server.
|
||||
2
docs/src/fancynpcs/tutorials/tutorials.yml
Normal file
2
docs/src/fancynpcs/tutorials/tutorials.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
order: 7
|
||||
icon: mortar-board
|
||||
@@ -1,3 +1,7 @@
|
||||
---
|
||||
icon: dot
|
||||
---
|
||||
|
||||
# Using MiniMessages
|
||||
|
||||
Everywhere, where you can set a text (e.g. npc display_name or hologram lines), you can either use legacy color codes (
|
||||
|
||||
@@ -1,15 +1,16 @@
|
||||
---
|
||||
icon: home
|
||||
title: FancyInnovations
|
||||
---
|
||||
#
|
||||
|
||||

|
||||

|
||||
|
||||
Welcome to the FancyPlugins documentation! Here you'll find documentation about how to use the plugins, including installation, commands and API.
|
||||
Welcome to the FancyInnovations documentation! Here you'll find documentation about how to use the plugins, including installation, commands and API.
|
||||
|
||||
## About FancyPlugins
|
||||
## About FancyInnovations
|
||||
|
||||
FancyPlugins is a collection of plugins for Minecraft servers. The plugins are designed to be easy to use and highly customizable. The plugins are open-source and free to use.
|
||||
FancyInnovations is a collection of plugins for Minecraft servers. The plugins are designed to be easy to use and highly customizable. The plugins are open-source and free to use.
|
||||
|
||||
We focus on plugins that can serve many different use-cases. Everyone should be able to use our plugins, no matter if you're running a small private server or a large public server. For large and more complex use-cases, we offer an API that allows you to extend the plugins with your own features.
|
||||
|
||||
@@ -26,9 +27,9 @@ FancyHolograms is a plugin that allows you to create custom holograms made with
|
||||
## Quick links
|
||||
|
||||
**General:**
|
||||
- [Website](https://fancyplugins.de)
|
||||
- [Website](https://fancyinnovations.com)
|
||||
- [Discord](https://discord.gg/ZUgYCEJUEx)
|
||||
- [GitHub](https://github.com/fancymcplugins)
|
||||
- [GitHub](https://github.com/fancyinnovations)
|
||||
|
||||
**FancyNpcs:**
|
||||
- [Download](https://modrinth.com/user/oliver)
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
---
|
||||
icon: book
|
||||
---
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user