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
andworld-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 syntax.
- 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.