UnderscoreEnchants v2.2 is FINALLY OUT!
After 1.5 years in the works, UnderscoreEnchants v2.2 is finally out. It is not just an improvement over v2.1 - it's a complete recode in a different language with different standards in mind, higher quality and more effort. Many features were taken from 2.1, of course, so the plugin isn't completely unrecognizable, but it is backwards-incompatible with previous versions.
Changelog
In the changelog of the update 2.1, I promised some new specific features.
Here's what's been added/done:
- A new condition
in-water will indicate whether the player is in water.
- Messages will migrate to their own files (such as messages/en.yml).
- Grindstones will be supported.
-
drop-item <material> <world> <x> <y> <z> will have an item be dropped at a certain location.
- A new global placeholder
<closest_player> will return the name of the closest player.
- The current registration system is ugly! Is there really a need for a separate enchantment class for every event? Investigate and potentially rewrite.
- 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.
- A new field
conflicts-with takes a list of strings to indicate the enchantments that this enchantment conflicts with.
- A new field
unique accepts a boolean to indicate whether this enchantment is the only one that's allowed on the item.
Here's what is not yet added/done, but will be added/done soon:
-
player-drop-item <material> <x> <y> <z> will have an item be dropped at a certain location at the player's world.
-
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.
- A new global placeholder
<block_at_[WORLD]_[X]_[Y]_[Z]> will return the block material at the given location.`
- A video tutorial on how to setup the plugin and create enchantments will be made.
Here's what will not be added/done for various reasons:
- UnderscoreEnchants will migrate to
ConfigLib in order to properly support configuration changes.
- Instead of hardcoding applicables, they will now be accessible at applicables.yml. The default applicables (tools, weapons, etc.) will be created with the file by default.
Aside from what's been promised in the v2.1 changelog, here are some other new features:
-
KEY ADDITION: Actions, placeholders, triggers, conditions, etc. are now not confined to what I as the developer create, but are now also creatable with the extensive
UnderscoreEnchantsAPI! The Javadocs are available
here and the documentation for working with the API is
here.
-
KEY ADDITION: There is now a central repository for sharing enchantments, enchantment packs and localization files! There is no frontend web interface for it as of right now, but it is planned. The instructions on interacting with the repository are available
here; instructions for self-hosting are available
here; the source code is available
here and the central repository itself is located
here.
- New commands
/ue browsepacks,
/ue browseenchs and
/ue browselocales are the closest that we currently have to a frontend interface. It opens a respective GUI in Minecraft where you can browse, download and preview content from the repository.
- The plugin now stores data about players, specifically their personal locale, their active cooldowns and their disabled enchantments. By default the data is stored in JSON files, but the plugin can be configured to use YAML files or MongoDB or MySQL databases.
- Placeholders can now take arguments and instead of getting hardcoded weird parsing with regex for specific placeholders like
<highest_block_at_%x%_%z%> they now properly take arguments as in
<placeholder=highest-block:arguments={x=4|z=5|world=world}>.
- An
<attribute> placeholder.
- A
requiredPlugins field. The enchantment will not activate if any plugin is not found.
- A
requiredEnchantments field. The enchantment will not activate if the player does not have these enchantments.
- A
stackable field, indicating that the effects of the enchantment should take place multiple times, depending on how many enchanted items the player has.
- Two new fields
world-blacklist and
world-whitelist for enchantments.
- A
cancel action for most triggers.
- A
set-attribute action.
- An
attribute condition.
- The tab completion has been improved even further.
- The configuration versioning, starting with this update, should be working properly.
- Conditions for each separate action.
- Placeholders are now properly supported in conditions.
- Items in actions are now parsed from the
component format.
- The documentation for the plugin has moved from the GitHub wiki to
here.
- A new command
/ue debug that homes subcommands like
/ue debug log (creating a log),
/ue debug registry (debugging the registry), etc. Focuses on being informative instead of being user-friendly, as it is intended for use only when something goes wrong.
This update is HUGE! I have tested it as thoroughly as I could and I do not know of any bugs as of today, but I am certain that with a fresh glance, you as an end user can discover something. Please join the
Discord support server to report any bugs. Alternatively, you can open GitHub issues, but they are not prioritized.