557 Commits

Author SHA1 Message Date
Oliver
d6dc456f2a fancynpcs: Wrap packets in Npc#update method in bundle packet (1.12.9+) 2025-11-21 21:10:48 +01:00
Oliver
da7bc075aa Update to 1.21.11-pre2 2025-11-21 20:56:00 +01:00
Oliver
00be6cc835 fancyholograms: Update version to 2.8.0.160 2025-11-21 15:02:23 +01:00
Alex
1919b3da4d Added argument validation in SetLineCMD to prevent index errors (#155) 2025-11-21 15:00:55 +01:00
橙汁喵
529821ced6 fancyholograms: reload cannot load hologram (#152) 2025-11-21 15:00:26 +01:00
Oliver
0a6aa9da80 fancynpcs: Try to fix npcs disappearing 2025-11-21 14:34:07 +01:00
Oliver
d7c6f1bc81 fancynpcs, fancyholograms: Drop support for 1.19.4 2025-11-21 14:02:01 +01:00
Oliver
a35c2ac786 Update to 1.21.11-pre1 2025-11-21 13:52:51 +01:00
Oliver
c0998aabdb jdb: Fix index not deleting 2025-11-20 14:46:16 +01:00
Oliver
09363fe010 jdb: Add basic document indexing 2025-11-20 14:38:23 +01:00
Oliver
6c1ff8a77a config: Add VERSION file and configure publishing to maven repo 2025-11-20 12:29:25 +01:00
Oliver
0d8665e5e5 config: Add ConfigJSON 2025-11-20 12:26:58 +01:00
Oliver
b2416a14b2 jdb: Add VERSION file 2025-11-20 11:20:34 +01:00
Oliver
ec842f7287 jdb: Add countDocuments method 2025-11-20 11:06:00 +01:00
Oliver
6fe7cbabbd fancynpcs, packets: Update to 25w46a 2025-11-18 12:29:29 +01:00
Oliver
0d378fa951 config: Use java 17 instead of 17 2025-11-18 11:50:29 +01:00
Oliver
ccf9fe0d59 fancynpcs: Update version to 2.8.0.309 2025-11-18 11:35:00 +01:00
Oliver
b3fc33cb95 fancynpcs: load USE_MINECRAFT_USERCACHE_FEATURE_FLAG 2025-11-18 11:34:48 +01:00
Oliver
e1ba7dd888 Merge pull request #153 from FancyInnovations/fix/folia-visibility-issues
fancynpcs: Add enable-folia-visibility-fix feature flag
2025-11-18 11:33:51 +01:00
Oliver
8735da08a6 Merge branch 'main' into fix/folia-visibility-issues 2025-11-18 11:33:10 +01:00
Oliver
540b3ad738 fancynpcs: Add enable-folia-visibility-fix fflag 2025-11-18 11:32:06 +01:00
Oliver
5c5f82736b Rollback ChatColorHandler 6.0.0 2025-11-09 11:34:12 +01:00
Oliver
a2a2d39d7e dev builds for 1.21.11 2025-11-08 13:41:45 +01:00
Oliver
3388ae6d80 fancynpcs: Update version to 2.8.0.307 2025-11-08 13:36:49 +01:00
Oliver
ab5826be3c docs: Add npc rotate command and inverted need_permission 2025-11-08 13:36:33 +01:00
TheosRee
24c1907eec fancynpcs, fancyholograms: Use sets of Version Strings for checking if a version is valid (#142)
* use set for checking if a version is valid

* use Paper PR for snapshot reference

---------

Co-authored-by: TheosRee <theosree@users.noreply.github.com>
2025-11-08 13:30:57 +01:00
Oliver
d36af3cd00 Update gradle plugins 2025-11-08 13:30:57 +01:00
Oliver
bfd39c60b0 Update gradle wrapper to 9.2.0 2025-11-08 13:30:57 +01:00
Oliver
02fa1f0fa6 Remove publishing to hangar and modrinth via gradle plugins 2025-11-08 13:30:57 +01:00
Oliver
1ee7bdcd98 fancynpcs: Update changelog 2025-11-08 13:30:57 +01:00
Oliver
a27fd2e0c4 fancyholograms, fancynpcs: Update changelog 2025-11-08 13:30:57 +01:00
Oliver
d74fd4bab1 fancyholograms v2 & v3, fancydialogs: Add support for 1.21.11 2025-11-08 13:30:57 +01:00
Oliver
7d5b86fd14 packets: Add support for 1.21.11 2025-11-08 13:30:57 +01:00
Oliver
fb2beeb5b2 fancynpcs: Fix version number typos 2025-11-08 13:30:57 +01:00
Oliver
bbd361ea0d fancynpcs: Add support for 1.21.11 2025-11-08 13:30:57 +01:00
Alex
d9333f12f5 fancynpcs: Implemented inversed permission checks -> "!" prefix for perms (#139)
* Implemented feature from here: https://github.com/FancyInnovations/FancyPlugins/issues/86

* Implemented feature from here: https://github.com/FancyInnovations/FancyPlugins/issues/50
2025-11-08 13:14:05 +01:00
Oliver
455165b0f6 common: Ignore directories when loading language files 2025-11-05 12:43:53 +01:00
Oliver
f29bd13387 fancynpcs: Filter language files to only include .yml extensions 2025-11-05 12:37:22 +01:00
Oliver
7cd24f18f3 fancynpcs: Only use minecraft usercache if fflag is enabled 2025-11-05 12:28:23 +01:00
Oliver
9774f57ea6 fancydialogs: Add expectedUserInput field to ConfirmationDialog 2025-11-05 12:26:24 +01:00
Oliver
232f041df0 fancydialogs: Fix cast exception caused by close_timeout config option 2025-11-04 20:26:35 +01:00
Oliver
47e0714ec7 fancyholograms v3: Add total_amount_attached_traits metric 2025-11-04 20:22:38 +01:00
envizar
414da48403 fancynpcs: Add swing_arm_on_update option (#135) 2025-11-04 20:02:00 +01:00
Oliver
ac2a4f6e93 fancynpcs: Fix mirror skin for 1.21.9 2025-11-04 19:06:14 +01:00
Oliver
49f2dfd79a fancyholograms v3: Refactor trait commands and add warning if using dev build 2025-10-15 16:44:25 +02:00
Oliver
bef84f0366 fancydialogs: Add dialog close timeout 2025-10-15 16:26:50 +02:00
Oliver
1b2ec76eb5 fancydialogs: Remove tutorial command 2025-10-15 16:26:24 +02:00
Oliver
a85384df0c fancydialogs: Update dependencies 2025-10-15 16:26:09 +02:00
Oliver
2df8f839aa Update links in README.md 2025-10-14 23:19:46 +02:00
Oliver
a74073abd2 packets: Fix 1.21.9 tests 2025-10-14 22:17:00 +02:00
Oliver
59a063500f Update ChatColorHandler to 6.0.3 (added support for <head> tag) 2025-10-14 19:26:44 +02:00
Oliver
6042202383 fancynpcs: Update dependencies 2025-10-13 17:19:35 +02:00
Oliver
dd3d26675a fancynpcs, fancyholograms: Clear CHANGELOG.md and add current dev build number to version 2025-10-10 15:09:49 +02:00
Oliver
c53cb901ab fancyholograms: Fix version 2025-10-10 14:27:09 +02:00
Oliver
430b34a53f fancyholograms: Update version to 2.8.0 2025-10-10 14:17:15 +02:00
Oliver
bfa579db26 fancynpcs: Update version to 2.8.0 2025-10-10 14:13:49 +02:00
Oliver
e7c7b94f87 Update dependencies to 1.21.10 2025-10-10 14:12:58 +02:00
Oliver
84e15acf26 docs: Add configuration note for bungee-plugin-message-channel in action system 2025-10-07 16:18:50 +02:00
Oliver
4eed04bfef Add support for 1.21.10 2025-10-07 16:12:09 +02:00
Oliver
4cb32bd7a4 packets: Use correct protocol version for 1.21.10 2025-10-07 16:10:09 +02:00
Oliver
f71c783163 fancynpcs: Always respawn npcs with a delay when using Folia 2025-10-06 21:31:42 +02:00
Oliver
d89dc33bd0 Use 1.21.9 paper api everywhere 2025-10-06 20:11:45 +02:00
Oliver
756c6d2daa docs: Update FH faq 2025-10-06 20:07:52 +02:00
Oliver
931996034f fancynpcs: Add support for 1.21.10 2025-10-02 16:16:38 +02:00
Oliver
091f3f5b07 packets: Add support for 1.21.10 2025-10-02 16:14:28 +02:00
Oliver
7afdd99fad Update snapshot channels 2025-10-02 14:35:03 +02:00
Oliver
769a0d71bc fancyholograms v3: Update to snapshot 6 2025-10-01 17:09:05 +02:00
Oliver
c551719f51 fancyholograms v3: Fixed holograms not hiding on reload 2025-10-01 17:03:38 +02:00
Oliver
8db6eacf28 fancynpcs: Fix skins not showing in 1.21.9 2025-09-30 17:56:43 +02:00
Oliver
fc6b21c066 Use 1.21.9 everywhere 2025-09-30 17:29:17 +02:00
Oliver
62697b1313 fancynpcs, fancyholograms, fancydialogs: Update version 2025-09-30 17:06:35 +02:00
Oliver
09d5d25092 fancynpcs: Move CenterCMD and TurnToPlayerDistanceCMD 2025-09-30 14:24:16 +02:00
Oliver
23c883e6e1 Revert "fancynpcs: move CenterCMD and TurnToPlayerDistanceCMD to the correct place"
This reverts commit 3592bb59de.
2025-09-30 13:43:51 +02:00
Oliver
2973d9c944 fancyholograms v3: Add trait commands 2025-09-28 20:52:56 +02:00
Oliver
203d77db3d fancyholograms v3: Add trait command type 2025-09-28 13:48:54 +02:00
Oliver
e8cc799f20 fancyholograms v3: Add hologram command type 2025-09-28 13:41:20 +02:00
Oliver
bf699305d5 fancynpcs, fancyholograms, fancydialogs: Add support for 1.21.9 (#118)
* fancynpcs: Add 1.21.9 module files

* fancynpcs: Fix Npc_1_21_9

* packets: Add support for 1.21.9-pre2

* Update release configs

* Update to 1.21.9-rc1

* fancynpcs: Use 2.0.0 for cloud
2025-09-28 13:22:52 +02:00
Oliver
d33ce2346d Add FancyDialogs to issue template 2025-09-27 17:13:50 +02:00
Oliver
543a59f535 fancyholograms v3: Update version to snapshot 5 2025-09-23 21:19:05 +02:00
Oliver
90a1be3750 fancynpcs: Use copied view in npc manager 2025-09-23 20:38:39 +02:00
Renokas1
7179c6109e fancyholograms v3: Fix ItemHologramData JSON serialization using Base64 to prevent corrupted item data (#114)
* Fixed broken item hologram saving

before is used to save with illegal characters:
"\u001f�\b\u0000\u0000\u0000\u0000\u0000\u0000�\u0005��\t�0\f\u0005ЯE\u0010����xv\u0006oRBS1�&���}o\u0001\u0012֓���]L��1\nco��8=q�P3�����ɛy�T��\u00000�\u0007�^��F\u0000\u0000\u0000"

now works as intended:
"H4sIAAAAAAAA/0WOMQ7CMBAEF6wgMA0FHeIjlIg30CHL2Bdiyfah86XgFzyG/wGpMvXMai1gsL149VeSlrgCu9sayxRxLKlSEN/rKZPXgcQNLI2cl8Ji0AUeqwJYWNjA5cmVqjaL/RzGF0UXOE++kccd3/SBxWE2wtiUiyscKbv4/7HBqs/stXXT9PmNiR+zY1CZpwAAAA=="

* Forgot to remove my comment

code must look clean!!
2025-09-23 17:08:14 +02:00
Oliver
0b6dbc9cdd Update ChatColorHandler to 6.0.2 2025-09-18 22:23:53 +02:00
Oliver
92482ea52a fancyholograms v3: Add plugin version update check 2025-09-17 21:52:50 +02:00
Oliver
6f7741e82c fancynpcs: Check if value contains blocked commands before adding action 2025-09-17 21:33:27 +02:00
Oliver
e976223c2b fancyholograms: Update changelog 2025-09-17 20:58:30 +02:00
Oliver
141ecc1a01 fancynpcs: Update changelog 2025-09-17 20:54:55 +02:00
Phoenic
061d2fa42d Add flag to control the arm swing when updating npc (#106)
* fancynpcs: Add overloaded update and updateForAll methods to skip swing animation.

* fancynpcs: remove unnecessary changes to other calls of update(player).

* Revert version change

* fancynpcs: pull default update(Player) method out to NPC class, and make non-abstract.

* fancynpcs: make swinging arm default update behavior.
2025-09-17 20:47:48 +02:00
Oliver
d8f1a4ecae fancynpcs: Update version to 2.7.1.295 2025-09-17 20:35:48 +02:00
Oliver
a16098f448 fancynpcs: Set latency of npcs always to 0 2025-09-17 20:20:58 +02:00
Oliver
4f6ab36bbe docs: Fix permissions 2025-09-14 10:51:18 +02:00
Oliver
2dad4bc692 fancynpcs: Add permissions for adding action types 2025-09-14 10:49:48 +02:00
Oliver
f5107067d1 fancyholograms-v3: Update version to 3.0.0-SNAPSHOT.4
Update changelog
2025-09-14 10:36:38 +02:00
Oliver
7b1b932971 jdb: Update version to 1.0.1 2025-09-14 10:31:01 +02:00
Oliver
c1c3607228 fancyholograms-v3: Update changelog 2025-09-14 10:29:40 +02:00
Oliver
e61b346395 fancyholograms-v3: More javadocs 2025-09-14 10:29:27 +02:00
Oliver
e206e8f61c fancyholograms-v3: Add javadocs to TextHologramBuilder 2025-09-14 10:17:46 +02:00
LeonJS_
46c88da9a8 fancynpcs, fancyholograms: Add isLoaded methods (#107) 2025-09-14 09:59:19 +02:00
Oliver
3b216d450b docs: Fix examples for updateTextInterval 2025-09-03 17:22:23 +02:00
Oliver
19bad7dabf fancynpcs: Fix tests 2025-09-02 21:30:02 +02:00
Oliver
0dd4af4811 docs: Update testing command in contributing guidelines 2025-09-02 20:53:47 +02:00
Oliver
26e91119e2 fancynpcs (player-npcs): Refactor NPC plot ownership checks 2025-09-02 19:29:03 +02:00
Oliver
c3062652f5 fancynpcs, fancyholograms, fancydialogs: Use PluginMiddleware 2025-09-01 21:58:33 +02:00
Oliver
c08a87a1c3 common: Add PluginMiddleware for logging 2025-09-01 21:55:13 +02:00
Oliver
a96de43551 Update FA nc-api (moved FA config to plugins directory) 2025-09-01 19:42:52 +02:00
Oliver
a02a4bac70 fancyvisuals: Update logger to 0.0.7 2025-08-30 15:17:19 +02:00
Oliver
001c903cbf Update logger to 0.0.7 everywhere 2025-08-30 15:05:36 +02:00
Oliver
d176f09aa0 fancynpcs: Update logger to 0.0.7 2025-08-30 14:57:45 +02:00
Oliver
c65f8c03bf Update FA sdk 2025-08-30 14:27:59 +02:00
Oliver
5412a60936 Update ChatColorHandler to 6.0.0 (added support for MiniPlaceholders v3) 2025-08-26 18:32:20 +02:00
Oliver
b92c8139f0 docs: Add FancyAnalytics dev log 2 2025-08-20 19:59:14 +02:00
Oliver
a377047d4a fancyholograms v3: Update version to snapshot 3 2025-08-07 11:05:29 +02:00
Oliver
d6980df8ae fancyholograms v3: Update CHANGELOG.md 2025-08-07 11:01:49 +02:00
Oliver
621d9712d0 fancynpcs: Update version to 2.7.2 2025-08-07 10:35:36 +02:00
Oliver
62ed3cdd26 fancyholograms: Run PlayerClientLoadedWorldListener in hologram thread 2025-08-07 10:24:21 +02:00
Oliver
df296a2b57 fancynpcs: Fix camel pose attribute for 1.21.6 - 1.21.8 2025-08-06 22:28:47 +02:00
Oliver
a75f1ebc9e fancyholograms v2, fancynpcs: Fix version number 2025-08-06 21:37:41 +02:00
Oliver
d38ce8f248 fancyholograms: Optimize hologram updates by submitting tasks to the hologram thread on player events 2025-08-06 21:31:45 +02:00
Oliver
c391881bfd fancynpcs: Fix sniffer attributes not being registered in for 1.21.6 - 1.21.8 2025-08-05 11:37:43 +02:00
Oliver
ade386bef2 fancynpcs: Fix translations for turn_to_player command 2025-07-31 13:41:33 +02:00
Oliver
68c65afead fancyholograms v3: Update version to 3.0.0-SNAPSHOT.2 2025-07-30 22:39:39 +02:00
Oliver
399fe8f7d7 fancyholograms v3: Add trait to hologram builder 2025-07-30 22:38:27 +02:00
Oliver
6843c67055 fancynpcs: Update warning text 2025-07-30 21:40:28 +02:00
Oliver
b98b402a89 fancyholograms v3: Update CHANGELOG.md 2025-07-30 21:36:35 +02:00
Oliver
a85704d99f fancynpcs: Update warning text 2025-07-30 21:36:15 +02:00
Oliver
c99d32c452 fancynpcs: Send warning when adding player_command_as_op action 2025-07-30 21:25:11 +02:00
Oliver
aa20217c61 fancyholograms v3: Add traits command usage to help command 2025-07-30 19:48:25 +02:00
Oliver
87f0183e4f fancyholograms v3: Add traits command 2025-07-30 19:47:36 +02:00
Oliver
4c43d20718 fancyholograms v3: Fix HologramTrait#load and HologramTrait#save not being called 2025-07-30 19:17:04 +02:00
Oliver
24155219d6 fancyholograms v3: Add debug trait 2025-07-30 19:13:23 +02:00
Oliver
7f41e1978b fancyholograms v3: Fix trait_trait trait saving and loading 2025-07-30 19:08:25 +02:00
Oliver
982d9db32c fancyholograms v3: Add offset when npc has the pose attribute set to sitting 2025-07-30 18:37:45 +02:00
Oliver
20951b02ff fancynpcs: Update version to 2.7.0.285 2025-07-26 13:16:35 +02:00
Michał
bef476a6ea fancynpcs: Fix placeholder skins not refreshing (#89)
* fancynpcs: fix placeholder skins not refreshing

* fancynpcs: fix comment not being generated for `npc_update_interval` option

* fancynpcs: apply requested changes
2025-07-26 13:15:48 +02:00
Oliver
c2d40a76aa fancyholograms v3: Rename de.oliver.fancyholograms package to com.fancyinnovations.fancyholograms 2025-07-25 19:10:07 +02:00
Oliver
9eb8ec9bd0 fancyholograms v3: Move HologramImpl to just the hologram package 2025-07-25 19:03:27 +02:00
Oliver
9d6305607d fancyholograms v3: Remove implementation modules for 1.194 - 1.20.4 2025-07-25 19:01:58 +02:00
Oliver
b797da3b7f fancyholograms v3: Update changelog 2025-07-25 18:52:51 +02:00
Oliver
209509033b fancydialogs: Add checkbox input type 2025-07-25 18:45:32 +02:00
Oliver
6b2f82a2fa packets: Parse byte nbt tag correctly 2025-07-25 18:44:13 +02:00
Oliver
6828872398 fancyholograms v3: Remove support for 1.19.4 - 1.20.4 2025-07-24 21:24:12 +02:00
Oliver
29e4e70f37 fancyholograms v3: Add another world check 2025-07-24 21:01:44 +02:00
Oliver
58ac34311d fancyholograms v3: Load yaw and pitch of holograms 2025-07-24 21:01:02 +02:00
Oliver
56b238d8a5 fancyholograms v3: Add WorldLoadedListener 2025-07-24 20:35:03 +02:00
Oliver
d8e5e36338 fancyholograms v3: Ensure hologram world is valid before checking visibility distance 2025-07-24 20:30:30 +02:00
Oliver
517422fdbc fancyholograms v3: Migrate hologram even if world is not loaded 2025-07-24 20:27:58 +02:00
Oliver
5c2caf6e1f fancyholograms v3: Make interaction trait not default 2025-07-24 20:27:42 +02:00
Oliver
6edfcfde41 docs: Update changelog for FancyDialogs 2025-07-21 17:54:58 +02:00
Oliver
f473e364ac fancydialogs: Add more metrics 2025-07-21 17:54:35 +02:00
Oliver
48d24c7c5b ci: Only deploy docs when something there 2025-07-21 17:39:15 +02:00
Oliver
ee46c4bfff fancydialogs: Close dialogs when reloading the plugin 2025-07-21 17:32:47 +02:00
Oliver
5b1bb38643 fancyholograms v3: Add use_lamp_commands experimental feature 2025-07-19 21:59:59 +02:00
Oliver
0aa66b1e9f fancyholograms v3: Add Lamp and translations 2025-07-19 21:53:53 +02:00
Oliver
524c1b5635 config: Add getFields method to Config 2025-07-19 21:21:24 +02:00
Oliver
44959a2fbb fancyholograms v3: Update CHANGELOG 2025-07-19 20:52:18 +02:00
Oliver
8c98524d37 fancyholograms v3: Mark methods as final in HologramTrait for immutability 2025-07-19 20:31:03 +02:00
Oliver
d2f222b03d fancyholograms v3: Update changelog 2025-07-19 20:27:41 +02:00
Oliver
fc015ca9bb docs: Fix wrong command usage 2025-07-19 19:48:17 +02:00
Oliver
0c05817e16 fancyholograms v3: Update configuration field paths to use new settings structure 2025-07-19 19:42:23 +02:00
Oliver
d94fe05817 config: Remove redundant directory creation for config file 2025-07-19 19:37:41 +02:00
Oliver
b8512e503d config: Deprecate feature flag class 2025-07-19 19:32:51 +02:00
Oliver
e005e5c212 fancyholograms v3: Update config field paths 2025-07-19 19:31:21 +02:00
Oliver
ff959bab4b fancyholograms v3: Use config for feature flags 2025-07-19 19:27:45 +02:00
Oliver
5f047bbf70 config: Add forceDefault option 2025-07-19 19:21:54 +02:00
Oliver
19036ae0bc Move FeatureFlags to new config module 2025-07-19 19:17:21 +02:00
Oliver
a2f61b6215 Move ConfigHelper to new config module and deprecate it 2025-07-19 19:03:30 +02:00
Oliver
54a45ef827 config: Add some javadocs 2025-07-19 18:57:58 +02:00
Oliver
a744e6e354 config: Add forRemoval option 2025-07-19 18:54:35 +02:00
Oliver
54bdda5990 fancyholograms v3: Use new config system 2025-07-19 18:52:58 +02:00
Oliver
298cc16fac config: Add Config and ConfigField classes 2025-07-19 18:40:56 +02:00
Oliver
1b436a1154 Add libraries/config module 2025-07-19 18:17:46 +02:00
Oliver
3b161a892f fancyholograms: Update version to 2.7.0 2025-07-18 11:44:58 +02:00
Oliver
804c185a05 fancynpcs: Update version to 2.7.0 2025-07-18 11:41:43 +02:00
Oliver
9e6e17f7e0 fancydialogs: Update version to 0.0.16 2025-07-17 23:18:20 +02:00
Oliver
1080383a52 fancynpcs: Add harness attribute for happy ghasts 2025-07-17 23:12:20 +02:00
Oliver
e428d2c624 More 1.21.8 2025-07-17 17:01:23 +02:00
Oliver
94c74cdb65 Update README.md 2025-07-17 16:01:05 +02:00
Oliver
7ba5a3ec6a fancydialogs: Add support for 1.21.8 2025-07-17 15:35:42 +02:00
Oliver
a61a5c01c6 fancyholograms: Add support for 1.21.8 2025-07-17 15:34:11 +02:00
Oliver
bf4aa36526 fancynpcs: Add support for 1.21.8 2025-07-17 15:31:48 +02:00
Oliver
4c6d5b19a9 packets: Add support for 1.21.8 2025-07-17 15:27:39 +02:00
Oliver
0ff54f8d3d Update fa mc-api to 0.1.8 2025-07-17 15:20:04 +02:00
Oliver
16e3ae9b2b fancynpcs: Update cloud-paper to 2.0.0-beta.11 2025-07-17 15:06:15 +02:00
Oliver
fbc51aa24c Fix default labels in issue templates 2025-07-17 13:42:15 +02:00
Oliver
56eee1c4c5 fancydialogs: Add support for PlaceholderAPI 2025-07-17 13:27:35 +02:00
Oliver
df75c7cf51 fancydialogs: Enhance dialog viewer management
Add viewer tracking and handle player join/quit/death events
2025-07-17 12:59:34 +02:00
Oliver
00094d5a5f Update all paper-api dependencies to 1.21.7 2025-07-12 08:44:11 +02:00
Oliver
56bbad354d fancynpcs, fancyholograms, fancydialogs: Update version 2025-07-10 19:40:38 +02:00
Oliver
2ee40812bb all plugins: Update FancyAnalytics to 0.1.7 2025-07-10 19:40:01 +02:00
Oliver
56d0201a13 fancynpcs: Check if mojang api response code is 2xx 2025-07-03 20:22:45 +02:00
Oliver
a8e87679ac fancynpcs, fancyholograms-v2, fancydialogs: Add support for 1.21.7 2025-06-30 17:03:44 +02:00
Oliver
046b040379 Add 1.21.7 to supported versions 2025-06-30 16:07:34 +02:00
Oliver
605a9b7d64 docs: Add concept for integrating download platforms to FancyAnalytics 2025-06-29 13:47:34 +02:00
Oliver
b214505164 docs: Fix typo in FancyDialogs changelog 2025-06-29 00:26:07 +02:00
Oliver
08e1d70ebd fancydialogs: Allow inputs to be null 2025-06-29 00:16:31 +02:00
Oliver
f08fa67a84 fancydialogs: Add open_random_dialog action 2025-06-28 19:01:01 +02:00
Oliver
fa90dde62f ci: Update all deployment workflows 2025-06-28 17:09:56 +02:00
Oliver
ca007822ed fancydialogs: Update version to 0.0.8 2025-06-28 14:24:55 +02:00
Goldy
eb5eca03c8 fancydialogs: Fix wrong dialog open permission and allow console to open dialog on players (#76) 2025-06-28 14:23:25 +02:00
Oliver
6afe93e92c Add PR template 2025-06-28 13:54:10 +02:00
Oliver
a5cf2af22e deployment-tool: Add platform-specific deployments and flag to send disc notification 2025-06-27 19:55:00 +02:00
Oliver
462dc063f7 fancydialogs: Add disable-quick-actions-dialog feature flag 2025-06-27 19:39:00 +02:00
Oliver
44761739a4 fancydialogs: Add quick actions command 2025-06-27 19:37:11 +02:00
Oliver
94fc5ebd73 docs: Add tutorial about the json schema for dialogs 2025-06-27 19:28:55 +02:00
Oliver
0ea93f0b75 fancydialogs: Add disable-welcome-dialog featureflag 2025-06-27 19:13:54 +02:00
Oliver
84c6661c1a common: Fix not setting comments when initially setting feature flag 2025-06-27 19:12:53 +02:00
Oliver
ee918f73ab fancydialogs: Add command to clear joined players cache 2025-06-27 19:09:22 +02:00
Oliver
f16759a3ea fancydialogs: Enable debug logging in FS if debug-mode feature flag is enabled 2025-06-27 19:02:45 +02:00
Oliver
b8f027a125 fancydialogs: Fix dialog ids in default config 2025-06-27 19:02:16 +02:00
Oliver
6ed7b60f8a fancydialogs: Add joined players cache 2025-06-27 19:01:55 +02:00
Oliver
7abe294805 docs: Update changelog of FancyDialogs 2025-06-27 17:22:01 +02:00
Oliver
23efe9b951 fancydialogs: Add version fetcher and config 2025-06-27 16:49:26 +02:00
Oliver
4a8d130235 fancynpcs: Add commit_hash, channel and platform to PluginVersionUpdated event 2025-06-27 16:10:44 +02:00
Oliver
0c41998656 ci: Add platform and channel to all deployment jobs 2025-06-27 16:09:25 +02:00
Oliver
e96b489f7c fancynpcs: Update version to 2.6.0.275 2025-06-27 16:04:57 +02:00
Oliver
2f15f20309 fancyholograms-v3: Update to new version config 2025-06-27 16:04:12 +02:00
Oliver
f4527487ff common, fancynpcs, fancyholograms-v2, fancyholograms-v3, ci: Add channel and platform to version config 2025-06-27 15:59:29 +02:00
Oliver
a0ef8c264e fancydialogs: Update version to 0.0.6 2025-06-26 19:38:47 +02:00
Oliver
d918e2def5 fancydialogs: Add support for Folia 2025-06-26 19:35:39 +02:00
Oliver
68c8826343 fancydialogs: Add support for the select input 2025-06-26 19:34:39 +02:00
Oliver
9beafac5cd fancyholograms, fancynpcs: Update version and changelog 2025-06-26 19:06:41 +02:00
Oliver
e437b05a96 fancyholograms, fancynpcs: Update changelogs and deployment configs 2025-06-25 17:27:22 +02:00
Oliver
f78d8dc8d1 fancyholograms: Add support for 1.21.7 2025-06-25 17:22:44 +02:00
Oliver
beeb3c0237 fancynpcs: Add support for 1.21.7 2025-06-25 17:22:04 +02:00
Oliver
3330a40419 packets: Add support for 1.21.7 2025-06-25 17:20:26 +02:00
Oliver
e64a1e5ced fancydialogs: Remove old dialog examples 2025-06-23 22:36:55 +02:00
Oliver
27c30c3494 fancydialogs: Use 1.21.6 everywhere 2025-06-23 21:23:43 +02:00
Oliver
be8a3b5212 fancynpcs, fancyholograms: Update dependencies 2025-06-23 21:20:40 +02:00
Oliver
42e6132021 fancydialogs: Add default values for confirmation dialog 2025-06-23 20:58:30 +02:00
Oliver
748fbaa66f docs: Add first dev log of FancyAnalytics 2025-06-22 21:34:27 +02:00
Oliver
a858962a3f docs: Update shade plugin url 2025-06-22 14:06:59 +02:00
Oliver
6b7ecda3e7 fancydialog: Fix artifact name in api 2025-06-21 19:28:48 +02:00
Oliver
1067ffa635 fancydialog, docs: Update example dialog 2025-06-21 15:01:03 +02:00
Oliver
531e3a4ab3 docs: Add descriptions for the new dialog json fields 2025-06-21 14:56:52 +02:00
Oliver
450082b6f1 fancydialgos: Add support for text fields 2025-06-21 14:52:25 +02:00
Oliver
d5665109e8 fancydialgos: Use user input as placeholder for actions 2025-06-21 14:30:26 +02:00
Oliver
39ea15c234 Update README.md 2025-06-21 13:54:04 +02:00
Oliver
0c9847513f docs: Add hologram translate command 2025-06-21 13:50:17 +02:00
Oliver
b7cfa5e391 fancynpcs: Include minecraft usercache.json to custom UUID cache 2025-06-21 13:45:02 +02:00
Oliver
c33cf8dabc docs: Fix callout types 2025-06-21 13:16:32 +02:00
Oliver
3664832324 docs: Add tutorial for the open_dialog npc action 2025-06-21 13:12:53 +02:00
Oliver
fb88e852d9 docs: Update changelog for FancyDialogs 2025-06-21 13:08:26 +02:00
Oliver
5afdeec9e8 docs: Explain json schema for dialogs 2025-06-21 13:05:37 +02:00
Oliver
f279782c82 docs: Update api pages 2025-06-21 12:57:58 +02:00
Oliver
2cdb3ebb7f fancynpcs: Assign skin executor to mojang api httpclient 2025-06-21 12:52:19 +02:00
Oliver
4d8698ea34 fancynpcs: Update version to 2.5.2.273 2025-06-21 12:26:29 +02:00
Oliver
607f9f0719 fancynpcs: Add uuid cache 2025-06-21 12:24:11 +02:00
Oliver
527c46cbca Update gradle plugin versions 2025-06-20 18:52:29 +02:00
Oliver
64e919ef29 fancydialogs: Add fancyanalytics integration 2025-06-20 16:42:29 +02:00
Oliver
2fbbdc2b88 ci, fancydialogs: Add deployment config for FancyDialogs 2025-06-20 09:11:26 +02:00
Oliver
f0e6c6d2c5 packets: Fix payload parsing for ServerboundCustomClickActionPacket 2025-06-19 22:36:39 +02:00
Oliver
df107beea2 fancydialogs: Add debug logs and input control experiments 2025-06-19 21:30:26 +02:00
Oliver
066f22d7b3 packets: Add support for FS_DialogTextInput 2025-06-19 21:28:14 +02:00
Oliver
f2d672566e packets: Fix converting ServerboundCustomClickActionPacket 2025-06-19 21:27:57 +02:00
Oliver
fd48630ce0 jdb: Disable html escaping 2025-06-19 19:29:23 +02:00
Oliver
6cdd77daba fancydialogs: Add confirmation dialog to destructive commands 2025-06-19 17:04:43 +02:00
Oliver
3aaa364b58 fancydialogs: Make dialog action registry accessible through api 2025-06-19 17:00:19 +02:00
Oliver
a3be8d71ce fancydialogs: Make dialog registry accessible through api 2025-06-19 16:57:20 +02:00
Oliver
dbc62110f9 packets: Fix test plugin not compiling 2025-06-19 16:28:43 +02:00
Oliver
50844fa59b fancydialogs: Add console_command, player_command and send_to_server actions 2025-06-19 16:22:37 +02:00
Oliver
819e6a4ed8 fancydialogss: Remove close action 2025-06-19 16:14:07 +02:00
Oliver
7f25808c72 docs: Update fancydialogs TODO list 2025-06-19 15:36:51 +02:00
Oliver
7b6a75cb3d docs: Update changelog for FancyDialogs 2025-06-19 15:35:41 +02:00
Oliver
ad12d71344 fancydialogs: Update version to 0.0.2 2025-06-19 15:35:31 +02:00
Oliver
ce561f057b fancydialogs: Implemented confirmation dialog api 2025-06-19 15:31:21 +02:00
Oliver
c496283b79 fancydialogs: Add DialogButtonClickedEvent 2025-06-19 14:51:24 +02:00
Oliver
b8f57fda38 fancydialogs: Add support for multiple actions 2025-06-19 14:36:31 +02:00
Oliver
bd4a8f2f23 fancydialogs: Add default actions (close, message, open_dialog) 2025-06-19 12:55:24 +02:00
Oliver
d3850310ce fancydialogs: Add dialog action system 2025-06-19 12:55:09 +02:00
Oliver
d61b3af90b packets, fancydialogs: Refactor custom action handling to use a map for additional data 2025-06-17 21:50:34 +02:00
Oliver
31f03ae252 fancydialogs: Add packet listener for custom click actions 2025-06-17 21:39:38 +02:00
Oliver
9e8431938c fancydialogs: Add command to reload config 2025-06-17 21:29:17 +02:00
Oliver
8327461adb ci: Add FancyDialogs to CI build pipeline 2025-06-17 21:18:29 +02:00
Oliver
f87e2fc537 fancydialogs: Make InvalidDialogException public 2025-06-17 21:17:41 +02:00
Oliver
bab3fa2052 fancydialogs: Fix dialog type parser 2025-06-17 21:16:14 +02:00
Oliver
78ec1a8ba9 docs: Add api usage for FancyDialogs 2025-06-17 20:31:12 +02:00
Oliver
41909461d8 docs: Add todo list for FancyDialogs 2025-06-17 20:26:45 +02:00
Oliver
1b2448fabd fancydialogs: Update version to 0.0.1 2025-06-17 18:52:52 +02:00
Oliver
42894ee8dc fancydialogs: Update default dialogs 2025-06-17 18:42:44 +02:00
Oliver
96ae8814dc fancydialogs: One title is enough 2025-06-17 17:53:15 +02:00
Oliver
8ffe3f824c fancydialogs: Refactor FancyNpcs integration 2025-06-17 17:50:19 +02:00
Oliver
2953b62c74 fancynpcs, fancyholograms-v2: Update versions 2025-06-17 17:18:47 +02:00
Oliver
816c52082b Update run configs to 1.21.6 2025-06-17 17:18:33 +02:00
Oliver
be24b0f359 fancynpcs: Add support for 1.21.6 2025-06-17 17:18:07 +02:00
Oliver
64e0eeddcf packets: Add support for 1.21.6 2025-06-17 17:13:20 +02:00
Oliver
440e58f76a docs: Set visibility of fancydialogs folder to hidden 2025-06-17 17:07:39 +02:00
Oliver
a96d2eb34c fancydialogs: Add notice dialog to api 2025-06-17 17:07:39 +02:00
Oliver
888725c63d fancydialogs: Add confirmation dialog to api 2025-06-17 17:07:39 +02:00
Oliver
1b67a7048b fancydialogs: Fix dialog list translations 2025-06-17 17:07:39 +02:00
Oliver
bdb23fb172 fancydialogs: More command stuff 2025-06-17 17:07:39 +02:00
Oliver
25c4844b48 fancydialogs: Add dialog command type 2025-06-17 17:07:39 +02:00
Oliver
1a3707ff51 fancydialogs, docs: Add command to reload dialogs 2025-06-17 17:07:39 +02:00
Oliver
8327ef05c4 fancydialogs, docs: Add fancydialogs command 2025-06-17 17:07:39 +02:00
Oliver
2aa14f4c81 docs: Update fancydialogs.md 2025-06-17 17:07:39 +02:00
Oliver
7e05693fb2 fancydialogs: Add open_dialog action for FancyNpcs 2025-06-17 17:07:39 +02:00
Oliver
6c155dc00b fancydialogs: Register default dialogs 2025-06-17 17:07:39 +02:00
Oliver
603ddd2151 fancydialogs: Refactor dialog data, storage and dialog showing 2025-06-17 17:07:39 +02:00
Oliver
627f50467c packets: Add packet listener 2025-06-17 17:07:39 +02:00
Oliver
8c569f90d5 packets: Add support for custom actions 2025-06-17 17:07:39 +02:00
Oliver
c20617b2e2 packets: Add support for multi action dialogs 2025-06-17 17:07:39 +02:00
Oliver
4d43c08ed8 packets: Add support for dialog list dialogs 2025-06-17 17:07:39 +02:00
Oliver
c6db12a3f7 packets: Add support for confirmation dialogs 2025-06-17 17:07:39 +02:00
Oliver
a42d1ba92e packets: Add support for notice dialogs 2025-06-17 17:07:39 +02:00
Oliver
80649e4b5b fancynpcs: Fix attributes for 1.21.6 2025-06-17 17:07:39 +02:00
Oliver
0f77e61e8d packets: Update version to 1.21.6-rc1 2025-06-17 17:07:39 +02:00
Oliver
0673af8b29 fancynpcs, fancyholograms: Use paper 1.21.6 dev bundle 2025-06-17 17:07:39 +02:00
Oliver
adc7064de5 Register PlayerLoadedListener also in 1.12.6 2025-06-17 17:07:39 +02:00
Oliver
4f124bf87e Update to 1.21.6-pre2 2025-06-17 17:07:39 +02:00
Oliver
fee90d32a9 fancydialogs: Validate Minecraft server version and disable plugin if unsupported 2025-06-17 17:07:39 +02:00
Oliver
a9b3399389 fancydialogs: Fix banner in README 2025-06-17 17:07:39 +02:00
Oliver
192938d4d5 fancydialogs: Move the README.md to the fancydialogs dir 2025-06-17 17:07:39 +02:00
Oliver
53e7300b4a fancydialogs: Update README.md 2025-06-17 17:07:39 +02:00
Oliver
7c966d28a0 fancydialogs: Fix default config not saving 2025-06-17 17:07:39 +02:00
Oliver
9b08eed6bf fancydialogs: Add debug mode feature flag 2025-06-17 17:07:39 +02:00
Oliver
9da266c1cf fancydialogs: Add description annotation to tutorial open command 2025-06-17 17:07:39 +02:00
Oliver
d566907305 fancydialogs: Make log level configurable 2025-06-17 17:07:39 +02:00
Oliver
7bad6fbe35 fancydialogs: Use lamp for commands 2025-06-17 17:07:39 +02:00
Oliver
8d3defa820 fancydialogs: Add quick_actions_dialog_id config option 2025-06-17 17:07:39 +02:00
Oliver
529d13d2ee fancydialogs: Add dependency on fd-api shadowJar in shadowJar task 2025-06-17 17:07:39 +02:00
Oliver
6014fe3c70 packets: Add test for clear dialog packet 2025-06-17 17:07:39 +02:00
Oliver
e5c00d0c4e packets: Update package version to v1_21_6 in test files 2025-06-17 17:07:39 +02:00
Oliver
458a0343d8 packets: Add packets for dialogs 2025-06-17 17:07:39 +02:00
Oliver
9ca20c6f01 fancydialogs: Rename onCancel to exitAction 2025-06-17 17:07:39 +02:00
Oliver
579b0bf4d7 fancydialogs: Update common dialog data 2025-06-17 17:07:39 +02:00
Oliver
a8cafa87be fancydialogs: Delete input dialogs 2025-06-17 17:07:39 +02:00
Oliver
1eb65105f5 fancydialogs: Rename the api module to fd-api 2025-06-17 17:07:39 +02:00
Oliver
32cf5240f6 Update 1.21.6 modules to 1.21.6-pre1 2025-06-17 17:07:39 +02:00
Oliver
ae518e64f3 packets, fancynpcs: Update to 25w21a 2025-06-17 17:07:39 +02:00
Oliver
9706b08c0d fancydialogs: Fix packets dependency 2025-06-17 17:07:39 +02:00
Oliver
3029dc1da5 fancyholograms-v2: Add 1.21.6 support 2025-06-17 17:07:39 +02:00
Oliver
1beebb05ae fancyholograms-v3: Add 1.21.6 support 2025-06-17 17:07:39 +02:00
Oliver
bad76db73f fancynpcs: Add 1.21.6 support 2025-06-17 17:07:39 +02:00
Oliver
91ac910e4e fancynpcs: Add module for 1.21.6 2025-06-17 17:07:39 +02:00
Oliver
bb5d9df6de packets: Implement support for v1_21_6 in PacketFactory 2025-06-17 17:07:39 +02:00
Oliver
bfd9c05b09 packets: Add 1_21_6 module 2025-06-17 17:07:39 +02:00
Oliver
f110774b9a fancydialogs: Add docs for fancydialogs 2025-06-17 17:07:39 +02:00
Oliver
1a915b3601 fancydialogs: Update deployment configs 2025-06-17 17:07:39 +02:00
Oliver
2bf8163370 fancydialogs: Update README.md and add dialog examples 2025-06-17 17:07:39 +02:00
Oliver
bff8ef27f4 fancydialogs: Add tutorial command 2025-06-17 17:07:39 +02:00
Oliver
92469ec4fb fancydialogs: Setup cloud command manager 2025-06-17 17:07:39 +02:00
Oliver
b25a74df01 fancydialogs: Add translator 2025-06-17 17:07:39 +02:00
Oliver
4cc3d1189e fancydialogs: Load all dialogs when plugin is loading 2025-06-17 17:07:39 +02:00
Oliver
0139de0000 fancydialogs: Show welcome dialog to new players on join 2025-06-17 17:07:39 +02:00
Oliver
602a8696cf fancydialogs: Add config 2025-06-17 17:07:39 +02:00
Oliver
72f1d11548 fancydialogs: Add PlayerJoinListener 2025-06-17 17:07:39 +02:00
Oliver
e611c6bb8b fancydialogs: Add DialogImpl 2025-06-17 17:07:39 +02:00
Oliver
6a09714747 fancydialogs: Update java version to 21 in api module 2025-06-17 17:07:39 +02:00
Oliver
43dd7c2fea fancydialogs: Add README.md and fancydialogs images 2025-06-17 17:07:39 +02:00
Oliver
c91ceb1359 fancydialogs: Implement dialog storage with JSON support 2025-06-17 17:07:39 +02:00
Oliver
41df112420 fancydialogs: Add dialog registry 2025-06-17 17:07:39 +02:00
Oliver
f56c9f1bea fancydialogs: Add abstract dialog class 2025-06-17 17:07:39 +02:00
Oliver
a4a874d5df fancydialogs: Rename Dialog to DialogType 2025-06-17 17:07:39 +02:00
Oliver
340412ee1a fancydialogs: Restructure package organization for dialog components 2025-06-17 17:07:39 +02:00
Oliver
da47f688bc fancydialogs: Add dialog types 2025-06-17 17:07:39 +02:00
Oliver
a152bbc83a fancydialogs: Add Button, ClickAction, and ClickEvent classes for dialog interactions 2025-06-17 17:07:39 +02:00
Oliver
bd806f992b fancydialogs: Refactor dialog body classes to use records 2025-06-17 17:07:39 +02:00
Oliver
eaa8877636 fancydialogs: Add input types for dialog interactions 2025-06-17 17:07:39 +02:00
Oliver
c41faa53b8 fancydialogs: Introduce DialogBody and its implementations 2025-06-17 17:07:39 +02:00
Oliver
a67be52be8 fancydialogs: Add dialog class 2025-06-17 17:07:39 +02:00
Oliver
4d8e244110 fancydialogs: Add api module 2025-06-17 17:07:39 +02:00
Oliver
f2da8fb4fa fancydialogs: Enhance plugin main 2025-06-17 17:07:39 +02:00
Oliver
8c3ea92e6d Initialize FancyDialogs plugin 2025-06-17 17:07:39 +02:00
Oliver
dd4ec15cc3 fancynpcs: Update version to 2.5.2 2025-06-13 21:32:45 +02:00
Oliver
ee8fe70f15 fancynpcs: Update version to 2.5.1.271 2025-06-13 20:13:07 +02:00
Alexander Chapchuk
ea91095bcf fancynpcs: The correct NpcsLoadedEvent call (#67) 2025-06-13 20:10:23 +02:00
Oliver
0395b942a1 fancynpcs: Update version to 2.5.1.270 2025-06-13 12:53:55 +02:00
Oliver
fdaf21309b fancynpcs: Fix npc update method in 1.20.1 2025-06-13 12:53:55 +02:00
Justin
7f861022b6 fancynpcs: Fixes #24 (#63) 2025-06-13 12:17:41 +02:00
Oliver
58bac9a3cf fancynpcs: Update version to 2.5.1.269 2025-06-12 21:22:03 +02:00
Oliver
4fe121e26b common: Use api.minecraftservices.com for fetching skins 2025-06-12 21:20:55 +02:00
Oliver
feeef3bf48 fancynpcs, fancyholograms: Update version 2025-06-04 17:47:08 +02:00
Oliver
4f9c938884 Update ChatColorHandler to 5.1.6 2025-06-04 17:46:38 +02:00
Oliver
2ec0c1d325 fancynpcs: Fix NPE with skin manager and uuid fetcher 2025-06-03 11:29:54 +02:00
Oliver
689423dc85 fancyholograms-v3: Add PlayerLoadedListener for 1.21.4 and 1.21.5 2025-06-03 11:27:04 +02:00
Oliver
745d1cbe32 fancynpcs: Add PlayerLoadedListener for 1.21.4 and 1.21.5 2025-06-03 11:05:11 +02:00
Oliver
8626a2efbc fancyholograms-v2: Update version to 2.5.0.141 2025-06-03 10:12:30 +02:00
Oliver
576893206d fancyholograms-v2: Only register listener for PlayerClientLoadedWorldEvent in 1.21.5 and 1.21.4 2025-06-03 10:10:07 +02:00
Oliver
b02ec7c95f fancyholograms-v2: Update version to 2.5.0.140 2025-06-03 09:44:52 +02:00
Oliver
e2d542e9ac fancyholograms-v2: Use player loaded event to spawn hologram once the player loaded the world 2025-06-03 09:41:28 +02:00
Oliver
4da2da4dab fancynpcs: Update version to 2.5.1.265 2025-06-02 09:53:08 +02:00
Oliver
bc14e69bd3 fancynpcs: Add sniffer state attribute 2025-06-02 09:52:17 +02:00
Oliver
6fcf7ae6cc fancynpcs: Fix ChatColorHAndlerTest 2025-06-02 09:51:56 +02:00
Oliver
e26760a1e3 fancynpcs: Update npc update interval to seconds 2025-06-02 09:21:01 +02:00
Oliver
1e20f4e8db docs: Add v2.5.1 of FancyNpcs to the changelog 2025-05-31 18:38:14 +02:00
Oliver
7d737b86c5 fancynpcs: Update version to 2.5.1 2025-05-31 18:26:50 +02:00
Oliver
e4cd932721 fancynpcs: Fix cat, chicken, cow, frog, pig and wolf attributes 2025-05-31 14:01:03 +02:00
Oliver
6d317b1646 Revert "fancynpcs: Fix cat variant attribute for 1.21.5"
This reverts commit d3a3b53b09.
2025-05-31 13:57:34 +02:00
Oliver
2d23409f77 fancynpcs: Update version to 2.5.0.263 2025-05-31 09:41:43 +02:00
Oliver
823d66a4d1 Update paperweight and gradle wrapper 2025-05-31 09:37:19 +02:00
Oliver
d3a3b53b09 fancynpcs: Fix cat variant attribute for 1.21.5 2025-05-31 09:29:04 +02:00
Oliver
4a3d03073e packets: Simplify packet creation methods to use always current server version 2025-05-19 20:37:22 +02:00
Oliver
ceb8aafa98 packets: Move factories into :packets module 2025-05-19 20:24:03 +02:00
Oliver
1ac9e0915f packets: Use 1.21.5 instead of 1.21.5-no-moonrise 2025-05-19 20:02:31 +02:00
Oliver
c82c643b44 fancyholograms-v3: Formatting 2025-05-18 13:42:13 +02:00
Oliver
a7c3b59165 fancyholograms-v3: Add interaction trait (#53)
* fancyholograms-v3: Add interaction trait

* Calculate height and width

* onModify

* Remove npc when hologram gets unregistered

* Register actions

* formatting
2025-05-18 13:34:26 +02:00
Oliver
8c73932fc5 fancyholograms-v3: Add onUpdate method to HologramTrait and update handling in HologramControllerImpl 2025-05-18 13:13:09 +02:00
Oliver
4a93c68a9e fancyholograms-v3: Add @ApiStatus.Internal to methods only made for internal usage 2025-05-18 13:07:16 +02:00
Oliver
e141528f7c fancyholograms-v3: Implement onModify callback for hologram modifications 2025-05-18 13:04:18 +02:00
Oliver
239c00b447 fancyholograms-v3: Add helper methods for trait handling 2025-05-18 00:35:09 +02:00
Oliver
a358624a4a fancyholograms-v3: Update CHANGELOG.md 2025-05-18 00:28:22 +02:00
Oliver
0b02a9b85d fancyholograms-v3: Save and load attached traits 2025-05-18 00:22:52 +02:00
Oliver
ccc238bbad fancyholograms-v3: Refactor HologramTrait and registry to use annotations for trait identification 2025-05-18 00:11:42 +02:00
Oliver
1b764b9cb7 fancyholograms-v3: Add FileContentTrait for dynamic text updates from file 2025-05-18 00:00:51 +02:00
Oliver
aeb905336f fancyholograms-v3: Add HologramTraitAttachedEvent 2025-05-18 00:00:18 +02:00
Oliver
3a500d0a27 fancyholograms-v3: Load and save config for multiple pages 2025-05-17 23:04:05 +02:00
Oliver
d9c0501cc1 fancyholograms-v3: Fix trait trait 2025-05-17 23:03:33 +02:00
Oliver
7ccde4dab9 fancyholograms-v3: Implement trait registry 2025-05-17 23:03:06 +02:00
Oliver
ccd1a917ab fancyholograms-v3: Add a jdb storage for each trait 2025-05-17 22:21:58 +02:00
Oliver
f16b296347 fancyholograms-v3: Add worldName property 2025-05-17 21:20:21 +02:00
Oliver
59db4ca61e fancyholograms-v3: Add warning to snapshot changelog 2025-05-17 20:52:19 +02:00
Oliver
9186365197 fancyholograms-v3: Remove WorldListener 2025-05-17 20:45:49 +02:00
Oliver
98df9cf763 fancyholograms-v3: Refactor storage system 2025-05-17 20:44:58 +02:00
Oliver
f483de0386 fancyholograms-v3: Update FancyNpcs dependency to use project reference 2025-05-17 19:10:51 +02:00
Oliver
85b449ab5d fancyholograms-v3: Instantly refresh the hologram when modified for command sender 2025-05-17 19:09:15 +02:00
Oliver
05484d42d5 fancyholograms-v3: Add HologramController#updateHologramData 2025-05-17 19:08:51 +02:00
Oliver
9454f4995c fancyholograms-v3: Update hologram data loading to use subdirectory structure 2025-05-17 18:40:01 +02:00
Oliver
271c94a3a0 fancyholograms-v3: JSON Storage improvements 2025-05-17 18:14:48 +02:00
Oliver
1d2caecdd4 fancyholograms-v3: Rename old holograms file to holograms-old.yml 2025-05-17 17:33:55 +02:00
Oliver
cd5fbf4cbc fancyholograms-v3: Add migrator for YAML 2025-05-17 17:29:54 +02:00
Oliver
f1a532e74a fancyholograms-v3: Refactor key generation for hologram storage 2025-05-17 17:29:26 +02:00
Oliver
fbaac99c79 fancyholograms-v3: Rename json type-specific fields 2025-05-17 17:19:07 +02:00
Oliver
a26e78a23c jdb: Do not serialize null fields 2025-05-17 17:18:45 +02:00
Oliver
65ea890bb0 fancyholograms-v3: Rename api module to fh-api 2025-05-17 17:05:25 +02:00
Oliver
a77a8d87bc fancyholograms-v3: Update dependencies 2025-05-17 17:03:40 +02:00
Oliver
8696d88ef9 docs: Add more inspiration for FancyHolograms 2025-05-17 16:49:59 +02:00
Oliver
17a1c36cda fancyvisuals: Update dependencies 2025-05-17 15:23:13 +02:00
Oliver
95179e854b fancyvisuals: Use correct placeholders for initial nametags 2025-05-17 15:16:09 +02:00
Oliver
685e652ca9 docs: Add warning for NPC scale feature availability in 1.20.5 or newer 2025-05-17 14:50:59 +02:00
Oliver
1250485f7c fancynpcs, fancyholograms-v2: Update version 2025-05-17 10:38:45 +02:00
Oliver
7dbf1921b6 common: Use ModrinthVersionFetcher before HangarVersionFetcher 2025-05-17 10:37:08 +02:00
Oliver
0d3e779d10 common: Improve error logging in VersionFetcher 2025-05-17 10:36:33 +02:00
Oliver
33605ffc93 fancyholograms-v2: Use the in project api of FancyNpcs 2025-05-17 10:30:41 +02:00
Oliver
36f666881a fancynpcs: Rename the api module to fn-api 2025-05-17 10:30:14 +02:00
Oliver
8136662ca6 docs: Update changelogs 2025-05-17 10:22:38 +02:00
Oliver
b2352f65fe fancynpcs: Only use uuid if it's not null 2025-05-17 10:18:52 +02:00
Oliver
bc698903e0 common: Add logging for UUID fetching errors in UUIDFetcher 2025-05-17 10:17:36 +02:00
Oliver
43ff3b53e9 docs: Add article on creative use-cases for Minecraft dialogs 2025-05-16 16:32:12 +02:00
Oliver
8bea313a52 docs: Add article on Minecraft Dialogs 2025-05-15 15:58:37 +02:00
Oliver
a6dd6622d4 docs: Fix another typo 2025-05-12 21:30:12 +02:00
Oliver
683cdce3f1 docs: Update textAlignment description 2025-05-12 21:24:25 +02:00
Oliver
d168654a2a fh-v2: Update version to 2.5.0.138 2025-05-04 21:59:29 +02:00
Oliver
8fc5787a3b fh-v2: Set default update visibility internal to 20 ticks 2025-05-04 21:58:09 +02:00
Oliver
9641b80d20 docs: Add head.html 2025-05-04 16:55:25 +02:00
Oliver
7d8d64a476 docs: Add documentation for pulling metrics and Prometheus support 2025-04-25 15:54:29 +02:00
Oliver
a91c2e6420 ci: Update path for FancyHolograms v2 shadowJar task 2025-04-24 14:56:46 +02:00
Oliver
15d4ac4711 fn, fh: Update version to 2.5.0 2025-04-24 14:44:01 +02:00
Oliver
b4e888fc44 fh: Update changelog 2025-04-24 14:35:57 +02:00
Oliver
527fd94556 fn: Update changelog 2025-04-24 14:35:57 +02:00
dependabot[bot]
6c0ad6f917 chore(deps): bump com.google.code.gson:gson from 2.13.0 to 2.13.1 (#35)
Bumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.13.0 to 2.13.1.
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.13.0...gson-parent-2.13.1)

---
updated-dependencies:
- dependency-name: com.google.code.gson:gson
  dependency-version: 2.13.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-24 14:17:43 +02:00
Oliver
9da2444239 docs: Update visibility for 1.21.5 update documentation 2025-04-24 14:17:20 +02:00
Oliver
acb9b6f717 Rebranding (#36)
* Update branding in docs

* Update branding in README.md

* Update branding in plugin READMEs

* Update branding in plugins

* Update branding in libraries

* Update branding in the remaining places

* Add CONTRIBUTING.md and LICENSE files

* More branding in docs
2025-04-24 14:12:32 +02:00
Oliver
bbd720a90d fn: Fix new skin not loading in npc-update-scheduler 2025-04-24 13:27:08 +02:00
Oliver
039141c44e docs: Add alerts.md 2025-04-22 18:51:24 +02:00
Oliver
515c219140 docs: Add logs.md 2025-04-22 18:48:25 +02:00
Oliver
d7ba2ffd5b docs: Hide logs.md 2025-04-22 18:40:43 +02:00
Oliver
cd9872dcf2 docs: Add error tracking overview and details to errors.md 2025-04-22 18:39:37 +02:00
Oliver
c3e710a86c docs: Add detailed explanation and examples for events in events.md 2025-04-22 18:37:30 +02:00
Oliver
380a131a1c docs: Add metrics overview and examples to metrics.md 2025-04-22 18:33:45 +02:00
Oliver
5c409633f8 deployment: Fix string format order 2025-04-19 15:13:33 +02:00
Oliver
ca718a3dfd deployment: Fix commit hash 2025-04-19 15:09:43 +02:00
Oliver
55059bbd98 deployment: Update urls 2025-04-19 15:06:42 +02:00
Oliver
67fd451fa1 fn: Update version to 2.4.4.260 2025-04-19 14:57:20 +02:00
Oliver
8bf9c7d070 ci: Add discord webhook url to env 2025-04-19 14:56:30 +02:00
Oliver
be83943fd9 deployment: Also show channel in discord notification 2025-04-19 14:50:54 +02:00
Oliver
ad4b45004d deployment: Add discord webhook notification 2025-04-19 14:49:27 +02:00
Oliver
993cd17d4f docs: Update getting start pages for FancyAnalytics 2025-04-19 14:38:22 +02:00
Oliver
a4bd587f49 docs: Use yml metadata-only files for folders 2025-04-19 14:31:22 +02:00
Oliver
4d56b7d817 fn, fh: Increment dev build version number 2025-04-18 17:27:46 +02:00
Oliver
7858e59f49 plugins: Delete all Jenkinfile files 2025-04-18 17:26:53 +02:00
Oliver
46ebfb8a38 plugins: Update all snapshot changelogs 2025-04-18 17:26:12 +02:00
Oliver
a6445e53be docs: Add dot icon to subpages 2025-04-18 13:28:03 +02:00
Oliver
3c8f2eb2cc docs: Add feature pages for FancyAnalytics 2025-04-18 13:14:07 +02:00
Oliver
81d9a5c9a4 docs: Add getting started guides for FancyAnalytics 2025-04-18 13:06:42 +02:00
Oliver
98c5208f80 docs: Add landing page for FancyAnalytics 2025-04-18 00:11:41 +02:00
Oliver
ba1ba66f1d docs: Enhance documentation for concept 2025-04-17 23:51:10 +02:00
Oliver
57b1016581 docs: Update dates 2025-04-17 23:36:41 +02:00
Oliver
41dc4f6fd2 docs: Set visibility to hidden for 1.21.5 update article 2025-04-17 23:34:28 +02:00
Oliver
20d7d8f382 docs: Update blog article for 1.21.5 2025-04-17 23:33:36 +02:00
Oliver
1db0e8b536 fn: Add test for SkinManagerImpl#getByFile 2025-04-17 23:09:51 +02:00
Oliver
6bf30ebb0d fn: Add tests for SkinManagerImpl#getByURL 2025-04-17 23:08:21 +02:00
Oliver
02860a06a4 fn: Add tests for SkinManagerImpl#getByUsername 2025-04-17 23:04:03 +02:00
Oliver
2a4cf1a54d plugin-tests: Add toThrow method for exception assertion in Expectable 2025-04-17 23:02:57 +02:00
Oliver
af2e40e00b fn: Add some tests for SkinManager 2025-04-17 22:42:00 +02:00
Oliver
6cbf0df897 fn: Add general SkinGenerationRequest class 2025-04-17 21:58:22 +02:00
Oliver
2b485302df fn: Prevent exceptions in skin queue schedulers 2025-04-17 21:41:19 +02:00
Oliver
12de021118 fn: Add scheduler_status subcommand 2025-04-17 21:40:41 +02:00
Oliver
31e180bf90 fn: Remove test for SkinManager 2025-04-17 21:25:00 +02:00
Oliver
552a301602 fn: Add interface for skin generation queues 2025-04-17 21:22:32 +02:00
Oliver
723c3de3c4 fn: Fix not trying to get username skins from cache first 2025-04-17 21:15:01 +02:00
Oliver
7726dc4af2 docs: Update dotnet sdk to 9.0 2025-04-17 17:23:06 +02:00
dependabot[bot]
d5292ec254 chore(deps): bump org.junit.jupiter:junit-jupiter-engine (#33)
Bumps [org.junit.jupiter:junit-jupiter-engine](https://github.com/junit-team/junit5) from 5.12.1 to 5.12.2.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-engine
  dependency-version: 5.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 17:18:30 +02:00
dependabot[bot]
ae6ac1bb4a chore(deps): bump org.junit.jupiter:junit-jupiter-api (#32)
Bumps [org.junit.jupiter:junit-jupiter-api](https://github.com/junit-team/junit5) from 5.12.1 to 5.12.2.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.12.1...r5.12.2)

---
updated-dependencies:
- dependency-name: org.junit.jupiter:junit-jupiter-api
  dependency-version: 5.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 17:14:33 +02:00
dependabot[bot]
e25ffdb591 chore(deps): bump org.junit.platform:junit-platform-console-standalone (#31)
Bumps [org.junit.platform:junit-platform-console-standalone](https://github.com/junit-team/junit5) from 1.12.1 to 1.12.2.
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/commits)

---
updated-dependencies:
- dependency-name: org.junit.platform:junit-platform-console-standalone
  dependency-version: 1.12.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 17:14:25 +02:00
Michał
2e8f2fb9ed fancynpcs: handle skin errors gracefully (#23) 2025-04-17 16:59:50 +02:00
Oliver
0d52abc0a6 fn, fh: update version to next dev build 2025-04-17 16:55:24 +02:00
Oliver
0db47da5a7 fn, fh: update dependencies 2025-04-17 16:54:23 +02:00
Oliver
f5f81a12b4 fn: ensure PlaceholderAPI is enabled before registering placeholders in debug mode 2025-04-17 16:47:09 +02:00
dependabot[bot]
2f331cd49f chore(deps): bump com.google.code.gson:gson from 2.12.1 to 2.13.0 (#30)
Bumps [com.google.code.gson:gson](https://github.com/google/gson) from 2.12.1 to 2.13.0.
- [Release notes](https://github.com/google/gson/releases)
- [Changelog](https://github.com/google/gson/blob/main/CHANGELOG.md)
- [Commits](https://github.com/google/gson/compare/gson-parent-2.12.1...gson-parent-2.13.0)

---
updated-dependencies:
- dependency-name: com.google.code.gson:gson
  dependency-version: 2.13.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 16:37:49 +02:00
dependabot[bot]
796588447a chore(deps): bump com.intellectualsites.plotsquared:plotsquared-core (#27)
Bumps [com.intellectualsites.plotsquared:plotsquared-core](https://github.com/IntellectualSites/PlotSquared) from 7.5.1 to 7.5.2.
- [Release notes](https://github.com/IntellectualSites/PlotSquared/releases)
- [Commits](https://github.com/IntellectualSites/PlotSquared/compare/7.5.1...7.5.2)

---
updated-dependencies:
- dependency-name: com.intellectualsites.plotsquared:plotsquared-core
  dependency-version: 7.5.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-17 16:37:42 +02:00
Oliver
3e480b8f8e Revert version of ChatColorHandler back to 5.1.3 2025-04-17 16:37:18 +02:00
Oliver
5602f97a53 docs: expand FAQ with placeholders and URLs as skin usage 2025-04-01 22:08:35 +02:00
Clove Twilight
8303c89c36 fn: Add Cat Collars (#20)
* Add Collar Colors!

* fancynpcs: Add cat collar colors *meow*

* fancynpcs: Add issue with color not existing on 1.20.6

* fancynpcs: Fixed Color - CollarColor for clarity and consistancy!

* fancynpcs: Fix missed 1.21.1 change

---------

Co-authored-by: Clove Twilight <admin@mazeymoos.com>
2025-04-01 20:10:46 +02:00
dependabot[bot]
f093f125d5 chore(deps): bump de.oliver:FancyNpcs from 2.4.2 to 2.4.4 (#22)
Bumps de.oliver:FancyNpcs from 2.4.2 to 2.4.4.

---
updated-dependencies:
- dependency-name: de.oliver:FancyNpcs
  dependency-version: 2.4.4
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 19:55:26 +02:00
dependabot[bot]
79b686cf09 chore(deps): bump dev.masecla:Modrinth4J from 2.0.0 to 2.2.0 (#21)
Bumps [dev.masecla:Modrinth4J](https://github.com/masecla22/Modrinth4J) from 2.0.0 to 2.2.0.
- [Commits](https://github.com/masecla22/Modrinth4J/commits)

---
updated-dependencies:
- dependency-name: dev.masecla:Modrinth4J
  dependency-version: 2.2.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-04-01 19:55:18 +02:00
Oliver
cebbcd08f2 fn: fix saving and loading of turnToPlayerDistance 2025-04-01 18:20:14 +02:00
Oliver
4d68a1ef0d fh-v3: remove workflow files (lol?) 2025-03-31 22:38:08 +02:00
Oliver
bd710a86e5 docs: update url 2025-03-31 19:57:05 +02:00
Oliver
7504ba0f77 Update REAMDME.md files 2025-03-31 19:50:26 +02:00
Oliver
a7e0b90158 docs: add fancyvisuals assets 2025-03-31 19:47:44 +02:00
Oliver
27ac6f7e8b Update all logos and banners 2025-03-31 19:21:28 +02:00
Oliver
101bb49285 Update README.md 2025-03-31 18:52:40 +02:00
Oliver
d401dac6c3 Add fancy badges to README.md 2025-03-31 18:49:22 +02:00
Oliver
e254cb3730 fn, fh-v2: update changelogs 2025-03-31 18:40:04 +02:00
Oliver
cfa3c33fac fn: update version to 2.4.4.256 2025-03-31 18:33:08 +02:00
Oliver
9e96fe2fa4 fh-v2: update version to 2.4.2.135 2025-03-31 18:32:57 +02:00
Oliver
8da7fbfc2f plugins: update ChatColorHandler to 5.1.5 2025-03-31 18:30:36 +02:00
Oliver
2361f4e761 docs: add changelog for v2.x.x of FancyHolograms 2025-03-30 16:39:56 +02:00
Oliver
ca77db6a97 docs: add changelog for v1.x.x of FancyHolograms 2025-03-30 16:28:19 +02:00
Oliver
bc227ede2e docs: add documentation for FancyHolograms 2025-03-30 16:23:17 +02:00
Oliver
496eb454ac quick-e2e: update plugin file copying logic and add directory creation 2025-03-30 15:33:44 +02:00
Clove Twilight
70b1cfc045 fancynpcs: Add collar colors (#19)
Co-authored-by: Clove Twilight <admin@mazeymoos.com>
2025-03-30 14:29:23 +02:00
Oliver
f4c39a39d0 docs: update documentation for monorepo
README: add tips and additional resources
2025-03-30 14:28:06 +02:00
Oliver
c233e69184 fancyholograms-v2: Config refactor
Co-authored-by: danny <76127109+dxnnv@users.noreply.github.com>
2025-03-30 14:17:00 +02:00
Oliver
c98b1b0c46 fancyvisuals: set name of the plugin 2025-03-30 13:41:59 +02:00
Oliver
bfb37977ce fancyholograms: set name of the plugin 2025-03-30 13:41:38 +02:00
Oliver
9b23794f9c fancynpcs: set name of the plugin 2025-03-30 13:41:09 +02:00
Oliver
6e34a1f9b7 fancyholograms-v2: fix paths 2025-03-29 22:42:56 +01:00
Oliver
0ad40298c6 ci: rename fh-v2 deploy workflows 2025-03-29 22:40:17 +01:00
Oliver
45e57488f7 fancyholograms-v2: add deployment information 2025-03-29 22:39:18 +01:00
Oliver
b30d28f885 fancynpcs: add snapshot changelog and implement GitService for commit details 2025-03-29 22:30:07 +01:00
Oliver
3be3f30135 fancynpcs: refactor version handling to read from VERSION file 2025-03-29 22:08:05 +01:00
Oliver
a6710ea03a fancynpcs: add deployment information 2025-03-29 22:01:41 +01:00
Oliver
17233dbaa4 deployment: add Modrinth API key to deployment scripts and update channel naming conventions 2025-03-29 21:55:37 +01:00
Oliver
84adb42dca deployment: update ModrinthService to use Modrinth4J API and improve version deployment 2025-03-29 21:49:25 +01:00
Oliver
2a32f8aa8c ci: add dropdown for plugin selection in bug and feature request templates 2025-03-29 21:15:21 +01:00
Oliver
96a088c03d plugin-tests: update Java toolchain and release version to 21 2025-03-29 21:07:53 +01:00
dependabot[bot]
eeb686957f chore(deps): bump io.papermc.paper:paper-api
Bumps io.papermc.paper:paper-api from 1.19.4-R0.1-SNAPSHOT to 1.21.5-R0.1-SNAPSHOT.

---
updated-dependencies:
- dependency-name: io.papermc.paper:paper-api
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-29 21:00:22 +01:00
Oliver
7dff91f40f fancyvisuals: update project references for packets library 2025-03-29 20:59:37 +01:00
Oliver
259fe3b721 fancynpcs: update project references for packets library 2025-03-29 20:58:07 +01:00
Oliver
fe9d2d65eb fancyholograms: update project references for packets library 2025-03-29 20:56:57 +01:00
Oliver
215ecbb692 packets: update project references from packets:api to packets:packets-api 2025-03-29 20:55:38 +01:00
Oliver
ba95dc4a8e ci: add fancyholograms-v2 build step 2025-03-29 20:42:12 +01:00
Oliver
619d6ce0bb refactor: replace FancyLib dependency with project references 2025-03-29 20:41:37 +01:00
Oliver
87e5901dcc refactor: replace FancyLib dependency with project references 2025-03-29 20:31:35 +01:00
Oliver
2835584da9 fancynpcs: update api publication 2025-03-29 20:28:55 +01:00
Oliver
dad7463c62 Update README.md 2025-03-29 20:27:50 +01:00
Oliver
212e5d90b3 Add FancyHolograms sources 2025-03-29 20:23:00 +01:00
Oliver
4c13ca94e1 ci: add fancynpcs as build step 2025-03-29 19:41:34 +01:00
Oliver
13917fcc0f Update README.md 2025-03-29 19:41:19 +01:00
Oliver
3592bb59de fancynpcs: move CenterCMD and TurnToPlayerDistanceCMD to the correct place 2025-03-29 19:38:55 +01:00
Oliver
a0dcb5b60a fancynpcs, docs: update docs for commands 2025-03-29 19:31:21 +01:00
Oliver
c9fb39adcd fancynpcs: add turn_to_player_distance and center commands
Co-authored-by: Sadat Sahib <58975768+ssquadteam@users.noreply.github.com>
2025-03-29 19:27:17 +01:00
Oliver
ef19a48bc5 fancynpcs: update artifact path (jenkins) and change base name (shadowJar) 2025-03-29 19:21:08 +01:00
Oliver
c63f90c13e fancynpcs: fix parsed placeholders being saved as skin identifier 2025-03-29 19:14:34 +01:00
Oliver
2291663aac Update contributors list 2025-03-29 18:08:59 +01:00
Oliver
ca6a09efb2 fancynpcs: Fix the wolf variants textures (#251) 2025-03-29 18:08:01 +01:00
Oliver
8323255ea4 docs: add command-changes concept 2025-03-29 17:43:28 +01:00
Oliver
ab200be5da Disable gradle config caching 2025-03-29 17:13:31 +01:00
955 changed files with 32565 additions and 4034 deletions

View File

@@ -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:

View File

@@ -1 +0,0 @@
blank_issues_enabled: false

View File

@@ -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
View 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. ...

View File

@@ -30,9 +30,18 @@ jobs:
- name: Modify gradlew permissions
run: chmod +x ./gradlew
- name: Build FancyNpcs
run: ./gradlew :plugins:fancynpcs:shadowJar
- name: Build FancyHolograms v2
run: ./gradlew :plugins:fancyholograms-v2:shadowJar
- name: Build FancyHolograms
run: ./gradlew :plugins:fancyholograms:shadowJar
- name: Build FancyDialogs
run: ./gradlew :plugins:fancydialogs:shadowJar
- name: Build FancyVisuals
run: ./gradlew :plugins:fancyvisuals:shadowJar

View File

@@ -3,8 +3,10 @@ name: Deploy documentation
on:
workflow_dispatch:
push:
branches:
branches:
- main
paths:
- 'docs/**'
jobs:
deploy:

View 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

View 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

View File

@@ -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

View 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

View 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

View 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

View File

@@ -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

View 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
View 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
View 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.

107
README.md
View File

@@ -2,90 +2,69 @@
<div align="center">
![](docs/src/static/fancyplugins-banner.png)
![](docs/src/static/logos-and-banners/fancyinnovations-banner.png)
[![Modrinth](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/modrinth_vector.svg)](https://modrinth.com/user/Oliver)
[![Hangar](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/available/hangar_vector.svg)](https://hangar.papermc.io/Oliver)
[![Unsupported spigot](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/unsupported/spigot_vector.svg)]()
[![Lines of Code](https://tokei.rs/b1/github/fancymcplugins/fancyplugins?category=code)](https://github.com/fancymcplugins/fancyplugins)
[![Discord](https://img.shields.io/discord/899740810956910683?cacheSeconds=3600&logo=discord&logoColor=white&label=%20&labelColor=%235865F2&color=%23707BF4)](https://discord.gg/ZUgYCEJUEx)
[![Website](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/documentation/website_vector.svg)](https://fancyinnovations.com)
[![Documentation](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/documentation/ghpages_vector.svg)](https://docs.fancyinnovations.com)
[![discord-plural](https://cdn.jsdelivr.net/npm/@intergrav/devins-badges@3/assets/compact/social/discord-plural_46h.png)](https://discord.gg/ZUgYCEJUEx)
<br />
Simple, lightweight and feature-rich plugins for Minecraft servers.
[![CodeFactor](https://www.codefactor.io/repository/github/fancyinnovations/fancyplugins/badge)](https://www.codefactor.io/repository/github/fancyinnovations/fancyplugins)
[![Lines of Code](https://tokei.rs/b1/github/fancyinnovations/fancyplugins?category=code)](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:
- 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:
- fancynpcs: https://github.com/FancyMcPlugins/FancyNpcs
- 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)
---
*(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>

View File

@@ -1,10 +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("xyz.jpenilla.run-paper") version "2.3.1" apply false
id("net.minecrell.plugin-yml.paper") version "0.6.0" apply false
id("io.papermc.hangar-publish-plugin") version "0.1.3" apply false
id("com.modrinth.minotaur") version "2.+" apply false
id("com.gradleup.shadow") version "9.2.2" apply false
id("io.papermc.paperweight.userdev") version "2.0.0-beta.19" apply false
id("xyz.jpenilla.run-paper") version "3.0.2" apply false
id("de.eldoria.plugin-yml.paper") version "0.8.0" apply false
}
allprojects {
@@ -15,7 +13,14 @@ 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")
maven("https://maven-prs.papermc.io/Paper/pr13194") {
name = "Maven for PR #13194" // https://github.com/PaperMC/Paper/pull/13194
mavenContent {
includeModule("io.papermc.paper", "dev-bundle")
includeModule("io.papermc.paper", "paper-api")
}
}
}
}

BIN
docs/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -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

View File

@@ -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

Binary file not shown.

View File

@@ -0,0 +1 @@
<script defer src="https://umami.fancyinnovations.com/script.js" data-website-id="31f4837e-6616-4699-9daf-ef8d9445b8e6"></script>

View File

@@ -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.
---
![](../static/1_21_5-update.png)
# 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 parents 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).

View 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 25w20as 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, well 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, theyre 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 cant ignore them or miss important info in chat — its 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 players 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 youre guiding a new player through a peaceful farm world or orchestrating a complex sci-fi RPG with factions and dialog trees, this tool changes whats possible in vanilla Minecraft.
## 🔗 Try It Yourself
You can read about dialogs in Mojangs 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_

View 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."
---
![](../static/blogs/fa-dev-log-1/dev-log-1.png)
## 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.
![Metric data chart (last 6 months)](../static/blogs/fa-dev-log-1/metric-data-chart.png)
*(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.
![Amount of senders chart (last 6 months)](../static/blogs/fa-dev-log-1/amount-senders-chart.png)
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_

View 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!"
---
![](../static/blogs/fa-dev-log-2/dev-log-2.png)
## 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.
![Amount of senders chart (last 6 months)](../static/blogs/fa-dev-log-2/amount-senders-chart.png)
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.
![Profile page](../static/blogs/fa-dev-log-2/navigate-to-profile.png)
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_

View File

@@ -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.

View 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 25w20as New Feature
description: "A Deep Dive into Snapshot 25w20as New Feature: Minecraft Dialogs"
---
# What Are Minecraft Dialogs? A Deep Dive into Snapshot 25w20as 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, well 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 Thats 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, “Youre looking at a custom dialog.” But it doesnt stop there. If a player clicks the warning, a second dialog opens to explain whats 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 arent 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 isnt just a convenience for coders. Its a sign that Mojang is moving toward more structured, modular systems in Minecrafts backend — and that means more scalable content, easier debugging, and greater consistency across projects.
## 🛠️ How Dialogs Can Transform Custom Content
Lets 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.
Its 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 youre 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 its already clear: the way we build Minecraft experiences is about to change — and for the better.
_Oliver_

View File

@@ -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.
---

View File

@@ -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

View File

@@ -1,5 +0,0 @@
---
order: 1
icon: shield
redirect: contributing
---

View File

@@ -0,0 +1,2 @@
order: 1
icon: shield

View File

@@ -1,5 +1,6 @@
---
order: 8
icon: dot
---
![](../static/monorepo.png)
@@ -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.

View File

@@ -1,3 +1,7 @@
---
icon: dot
---
# Release Workflow
This document describes the steps to be taken when releasing a new version of a plugin.

View File

@@ -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.
!!!

View File

@@ -0,0 +1,38 @@
---
title: FancyAnalytics
icon: graph
order: 80
---
#
![](../static/logos-and-banners/fancyanalytics-banner.png)
!!!
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.

View 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`

View 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

View 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 |

View File

@@ -0,0 +1,2 @@
icon: sparkles-fill
order: 500

View 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**.

View 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 |

View File

@@ -0,0 +1,2 @@
icon: info
order: 400

View 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);
```

View 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.

View 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.

View 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.

View File

@@ -0,0 +1,2 @@
icon: code
order: 6

View 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`).
```

View File

@@ -0,0 +1,2 @@
icon: log
order: 5

View 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!

View File

@@ -0,0 +1,2 @@
order: 9
icon: command-palette

View File

@@ -0,0 +1,22 @@
---
icon: dot
order: 10
---
![](../../static/commands.png)
# /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`

View File

@@ -0,0 +1,79 @@
---
icon: dot
order: 8
---
![](../../static/commands.png)
# /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`

View File

@@ -0,0 +1,15 @@
---
icon: dot
order: 9
---
![](../../static/commands.png)
# /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`

View File

@@ -0,0 +1,68 @@
---
title: FancyDialogs [WIP]
icon: browser
order: 90
---
#
![](../static/logos-and-banners/fancydialogs-banner.png)
!!!
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

View 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.

View 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.

View 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.
![Provided by oliver](../static/fancydialogs/examples/oliver-welcome_to_fd.png)
![Provided by oliver](../static/fancydialogs/examples/oliver-welcome.png)
![Provided by oliver](../static/fancydialogs/examples/oliver-quick_actions.png)

View 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)

View 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)`

View File

@@ -0,0 +1,2 @@
order: 7
icon: mortar-board

View File

@@ -0,0 +1,2 @@
icon: code
order: 6

View 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`).

View File

@@ -0,0 +1,2 @@
icon: log
order: 5

View File

@@ -0,0 +1,74 @@
---
icon: dot
order: 1
---
![](../../static/changelog_v1_x_x.png)
#
## 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.

View File

@@ -0,0 +1,295 @@
---
icon: dot
order: 2
---
![](../../static/changelog_v2_x_x.png)
#
## 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!

View File

@@ -0,0 +1,2 @@
order: 9
icon: command-palette

View File

@@ -0,0 +1,37 @@
---
icon: dot
order: 9
---
![](../../static/commands.png)
# /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`

View File

@@ -0,0 +1,225 @@
---
icon: dot
order: 10
---
![](../../static/commands.png)
# /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``

View File

@@ -0,0 +1,55 @@
---
title: FancyHolograms
icon: image
expanded: true
order: 100
---
#
![](../static/logos-and-banners/fancyholograms-banner.png)
!!!
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).

View 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

View 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).
!!!

View 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
![Provided by play.freshsmp.fun](../static/fancyholograms/examples/freshsmp-1.png)
![Provided by play.freshsmp.fun](../static/fancyholograms/examples/freshsmp-2.png)
![Provided by play.freshsmp.fun](../static/fancyholograms/examples/freshsmp-3.png)
![Provided by play.freshsmp.fun](../static/fancyholograms/examples/freshsmp-4.png)
![Provided by play.freshsmp.fun](../static/fancyholograms/examples/freshsmp-5.png)
![Provided by play.silverstonemc.net](../static/fancyholograms/examples/silverstone-1.png)
![Provided by play.silverstonemc.net](../static/fancyholograms/examples/silverstone-2.png)
![Provided by https://github.com/OliverSchlueter](../static/fancyholograms/examples/oliver-1.jpeg)
![Provided by https://github.com/OliverSchlueter](../static/fancyholograms/examples/oliver-2.jpeg)
![Provided by https://github.com/OliverSchlueter](../static/fancyholograms/examples/oliver-3.jpeg)
![Provided by https://github.com/OliverSchlueter](../static/fancyholograms/examples/oliver-4.jpeg)
![Provided by https://github.com/OliverSchlueter](../static/fancyholograms/examples/oliver-5.jpeg)
## 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

View 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))

View File

@@ -0,0 +1,2 @@
order: 7
icon: mortar-board

View File

@@ -1,6 +0,0 @@
---
redirect: getting-started.md
icon: code
order: 6
---
# API usage

View File

@@ -0,0 +1,2 @@
icon: code
order: 6

View File

@@ -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`).
```

View File

@@ -1,5 +0,0 @@
---
icon: log
order: 5
redirect: v2
---

View File

@@ -0,0 +1,2 @@
icon: log
order: 5

View File

@@ -1,4 +1,5 @@
---
icon: dot
order: 1
---

View File

@@ -1,10 +1,71 @@
---
icon: dot
order: 2
---
![](../../static/changelog_v2_x_x.png)
#
#
## 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

View File

@@ -1,5 +0,0 @@
---
order: 9
icon: command-palette
redirect: npc.md
---

View File

@@ -0,0 +1,2 @@
order: 9
icon: command-palette

View File

@@ -1,4 +1,5 @@
---
icon: dot
order: 9
---

View File

@@ -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`
@@ -151,6 +156,13 @@ Changes whether the NPC should turn to the player when in range.
- **Syntax**: `/npc turn_to_player (npc) [state]`
- **Permissions**: `fancynpcs.command.npc.turn_to_player`
### Turn npc to player distance
Changes the distance at which the NPC should turn to the player.
- **Syntax**: `/npc turn_to_player_distance (npc) [distance]`
- **Permissions**: `fancynpcs.command.npc.turn_to_player_distance`
### Move npc to your location
Teleports specified NPC to your location.
@@ -165,6 +177,20 @@ Teleports NPC to specified location.
- **Syntax**: `/npc move_to (npc) (x) (y) (z) [world] [--look-in-my-direction]`
- **Permissions**: `fancynpcs.command.npc.move_to`
### Rotate npc
Sets the yaw and pitch of the specified NPC.
- **Syntax**: `/npc rotate (npc) (yaw) (pitch)`
- **Permissions**: `fancynpcs.command.npc.rotate`
### Center npc location
Centers the NPC to the specified location.
- **Syntax**: `/npc center (npc)`
- **Permissions**: `fancynpcs.command.npc.center`
### Show nearby npcs
Lists all NPCs in your world. Can be filtered and sorted.
@@ -192,28 +218,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

View File

@@ -2,12 +2,12 @@
title: FancyNpcs
icon: accessibility
expanded: true
order: 100
order: 200
---
#
![](/static/fancynpcs/banner.png)
![](../static/logos-and-banners/fancynpcs-banner.png)
!!!
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).

View File

@@ -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:
![Click on the skin](../static/skin-url-namemc-1.png)
![Right click on the download button](../static/skin-url-namemc-2.png)

View File

@@ -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.
!!!

View File

@@ -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.
@@ -114,6 +122,10 @@ Syntax: `need_permission (permission)`
Example: `/npc action (npc) (trigger) add need_permission my.cool.permission`
!!!info
If you add the `!` prefix to the permission, the action will be inverted. This means that the action list will be canceled if the player has the permission.
!!!
### play_sound
Plays a sound to the player. This action is useful for creating audio feedback for the player when interacting with the NPC.

View File

@@ -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

View File

@@ -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:

View File

@@ -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`

View File

@@ -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.

View File

@@ -0,0 +1,2 @@
order: 7
icon: mortar-board

View File

@@ -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 (

View File

@@ -1,15 +1,16 @@
---
icon: home
title: FancyInnovations
---
#
![](static/fancyplugins-banner.png)
![](static/logos-and-banners/fancyinnovations-banner.png)
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)

View File

@@ -1,3 +0,0 @@
---
icon: book
---

Some files were not shown because too many files have changed in this diff Show More