Update 2.1 is finally out! Kind of.
The changelog is very large, so it is a
beta-release. Hotfixes and patches should be expected. This update is
NOT backwards compatible.
How to update
- The configuration has changed its structure. You should delete your old configuration (if needed, make a backup to then move your old settings manually).
- The enchantments' structure has changed. If you were using default enchantments, you should delete them and use /ue default true again.
- If you were using custom enchantments, you should edit them manually according to the new documentations.
- After uploading the new jar-file and deleting the old one, do NOT reload your server! Restart it instead.
Changelog
- ALIASES! Conditions, actions and placeholders now have aliases for convenience and conciseness. They may or may be not listed somewhere in the wiki - for up-to-date information look at the code (parsers).
- API! Two new API methods have been added (EnchantmentLoadResponse loadEnchantment, EnchantmentUnloadResponse unloadEnchantment). As of UE release v2.1-beta1, the latest UEAPI version is v2.1.2.
- CLEANUP! A lot of code has been cleaned up.
- GUI! Old custom GUIs have been completely ditched! UnderscoreEnchants now hooks into the vanilla enchantment table & anvil GUIs.
- IMPROVED EASTER EGG!
- NEW ACTION POSTFIX! chance:X will have the action be executed with a change (range: 1-100). To combine chance:X and delay:X, separate them with a semicolon (;).
- NEW ACTION!console-command <command> will have a command be executed on behalf of the console.
- NEW ACTION! player-gamemode <gamemode> will have a player change their gamemode.
- NEW COMMAND! Downloading default enchantments has migrated from /ue download default <true/false> to /ue default <true/false>.
- NEW COMMAND! /ue load <filename> will find the enchantment and load/reload it.
- NEW COMMAND! /ue reload will have the enchantments and the configuration be reloaded.
- NEW COMMAND! /ue unload <filename> will find the enchantment and unload it.
- NEW LIBRARY! UnderscoreEnchants migrated to ACF for command handling (resulting in larger file size).
- PLACEHOLDERS! Conditions now support PlaceholderAPI with the %placeholder% syntax. As such, UnderscoreEnchants' action placeholders now have the <placeholder> syntax to get rid of ambiguity.
- QUALITY OF LIFE! Condition evaluation for comparative conditions is now done with comparative operators (>, <, etc) instead of hardcoded conditions (health-lower, health-is, etc).
- QUALITY OF LIFE! Material parsing for actions now supports complex materials, such as STONE:3;COBBLESTONE:15; STONE:50%;COBBLESTONE:30%; STONE:3:15%;COBBLESTONE:20%:30;GRANITE:10;OAK_LOG:15%; etc.
- REWRITE! The actions, placeholders & conditions systems have been fully rewritten for convenience. This may not be the last rewrite.
- STRUCTURE! A new field condition-flag now allows for condition checking to be done in a different way. At the moment there's only one flag (need-one) - using this flag will only require a single condition to be true.
- TAB COMPLETION! Tab completion has been revamped and is much better now.
- A HELL TON OF BUGFIXES!
- A LOT MORE STUFF!
What to expect
The Todo list currently contains a lot of items for 2.2, some of which will probably be released during minor updates. Here are some of them:
- CONDITION! in-water will indicate whether the player is in water.
- CONFIGURATION! Messages will migrate to their own files (such as messages/en.yml).
- GUI! Grindstones will be supported.
- NEW ACTION! drop-item <material> <world> <x> <y> <z> will have an item be dropped at a certain location.
- NEW ACTION! player-drop-item <material> <x> <y> <z> will have an item be dropped at a certain location at the player's world.
- NEW ACTION! player-timed-actionbar <duration in seconds> <text> will have an actionbar be displayed to the player for a certain amount of time. Note that this duration is a rough approximation and the actionbar shall be displayed for a couple more/less seconds.
- NEW LIBRARY! UnderscoreEnchants will migrate to ConfigLib in order to properly support configuration changes.
- PLACEHOLDERS! A new global placeholder <block_at_[WORLD]_[X]_[Y]_[Z]> will return the block material at the given location.
- PLACEHOLDERS! A new global placeholder <closest_player> will return the name of the closest player.
- REWRITE! The current registration system is ugly! Is there really a need for a separate enchantment class for every event? Investigate and potentially rewrite.
- STRUCTURE! A new field activation-indicator accepts bossbar, particles or none to indicate activation of the enchantment. For backwards compatibility, the default value will be bossbar.
- STRUCTURE! A new field conflicts-with takes a list of strings to indicate the enchantments that this enchantment conflicts with.
- STRUCTURE! A new field unique accepts a boolean to indicate whether this enchantment is the only one that's allowed on the item.
- STRUCTURE! Instead of hardcoding applicables, they will now be accessible at applicables.yml with the following syntax:
Code (YAML):
grandItems
:
- DIAMOND_PICKAXE
- NETHERITE_PICKAXE
Code (YAML):
applicable
: grandItems
- The default applicables (tools, weapons, etc.) will be created with the file by default.
- TUTORIAL! A video tutorial on how to setup the plugin and create enchantments will be made.
Please report each and every bug to my Discord or GitHub Issues!
How to report a bug (from CONTRIBUTING.md)
If it's a minor bug, report it in
GitHub Issues. However, if it's a major exploitable bug or a security exploit, refrain from using issues, and instead open a ticket in my
Support Discord server. Before opening an issue, please also make sure that there's no (recent) issue already open on that bug.