⭐ UnderscoreEnchants ⭐ CREATE CUSTOM ENCHANTMENTS | 2 GUIs ⚡ icon

⭐ UnderscoreEnchants ⭐ CREATE CUSTOM ENCHANTMENTS | 2 GUIs ⚡ -----

Create your own enchantments for free. No coding knowledge. Seriously.




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.
----------, Jul 18, 2024

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
 
  • Used like this:
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.
----------, Dec 31, 2022

Major update 2.0.10 is already here!
Changelog:​
  • 2.0.10 brought an API! The tutorial on the API can be found in the Documentation section, as well as in the API GitHub link on the main page.
  • Fixed a bug where a successfully anvilled item would be lost upon the inventory being closed.
----------, Jul 16, 2022

Major update 2.0 is already here!
Update tag: "The Superior Update"

This update has been in the making for just a bit more than 5 months, and I am glad to present to you my best work - a free enchantment plugin, that supports user-made enchantments.

Massive changelog:​
  • Added the possibility to create your own enchantments! You can read everything about it here, on the main page of the plugin, in the documentation, or ask me directly in my support Discord server!
  • Switched to Lombok and cleaned up a bunch of boilerplate code
  • Deleted a fake malicious easter egg in favor of a new, good easter egg
  • Deleted most legacy code
  • Updated to newer versions of the libraries
  • Rewrote a big chunk of the plugin; rewrote the entire command class
  • Made it possible for villagers and chests to contain the custom enchantments
  • Added a possibility to set a limit of enchantments per item
  • Added debug mode - logs everything plugin-related in a log file. You can delete them when the plugin is stopped, but it's advised not to when it's running
  • Added new commands - you now can download enchantments!
  • Added new translations:
    • New Italian translation (credit: @Yoshiro09)
    • New Spanish translation (credit: @Ailakks)
    • Updated Turkish translation (credit: @Cazcez)
    • New Tamil translation (credit: @Ilamparithi THE MAN)
    • New Swedish translation (credit: @Yollan)
  • Added a bunch of new configuration fields, so it's advised that you delete the current configuration for the new one to generate properly
  • Rewrote most of the custom enchantments from before the update: this way, if you need some enchantments out-of-the-box, reference the documentation's installation guide for instructions.
While I spent a lot of time testing this plugin, the changelog only covers the basic parts of the update (the first point could be expanded a lot), and the actual amount of new features is really big. This means that there might be some ghost bugs that are not yet discovered. Please patiently report them to my Discord server by opening a ticket. If there's a stacktrace (error), include the full version. When in doubt, ask me personally :)
----------, May 30, 2022

Major update 1.10 is already here!
Update tag: "The Silent Kid Update"

Changelog:​
  • Improved the German translation (thanks @mfnalex!)
  • Stopped you from being able to enchant already enchanted items - use anvils, duh
  • Removed all the traces of trident enchantments existence: a newcomer won't even know they existed!
  • Switched to Java 16 completely, now you have to use Java 16 or higher
  • Moved all commands into subcommands of /underscoreenchants (/ue)
This update is the last one this month, and possibly January won't have any updates as well. However, the 2.0 update will bring so much new stuff that UnderscoreEnchants will finally become a competitor to the paid ones.


Be prepared!
----------, Dec 26, 2021

Minor fix for /uetoggle, registering the permission. Advised to update.
----------, Dec 18, 2021

Major update 1.9 is already here!
Update tag: "The Personal Space Update"

Changelog:​
  • Added per-player disabling enchantments!
Do /uetoggle ench on/off to toggle a certain enchantment for yourself!
For example: /uetoggle alive off stops Alive on my armor from activating!
  • ------------------------------------------------
  • Added 1.18 support
  • Updated libraries:
    • XSeries 8.4.0 -> XSeries 8.5.0.1
    • JetBrains Annotations 21.0.1 -> JetBrains Annotations 23.0.0
    • Vault idk -> Vault 1.7.1
  • ------------------------------------------------
  • Nerfed Spade and stopped Forcefield from being trash
  • Undeprecated Telekinesis - feel free to use it! Smelt still should be disabled, but I'm working on it.
  • Stopped Photosynthesis from activating in Nether and End
  • ------------------------------------------------
  • Rewrote anvils from scratch. Now they behave well and you can even use books! Repairing is still deprecated but should be enabled in the next version.
  • Buffed enchantment & combining prices from constant low to calculated fair
  • ------------------------------------------------
  • Activation messages now appear in the bossbar instead of spamming your chat!
  • Frequently activated enchantments (like Photosynthesis or Satiety) do not send their activation messages at all, they rather send particles near the activator.
Brief 1.9 overview:
  • Players can personally toggle enchantments
  • Added 1.18 support
  • Updated 3 libraries
  • Undeprecated 1 enchantment, nerfed 1 enchantment, fixed 2 enchantments
  • Rewrote anvils
  • Buffed anvil & table prices
  • Moved activation messages to bossbar
  • Frequent enchantments send particles instead of activation messages
----------, Dec 18, 2021

1.8 patch #1 is already here!
Patch details:
  • Fixed Obsidian Addiction spamming chat
  • Fixed Disspeller spamming chat
  • Fixed Redstone spamming chat
  • -------------------------------------------------------------------------
  • Fixed Spade checking for victim's sword instead of damager's
  • Fixed Frost Walker (vanilla) having an incorrect name
  • -------------------------------------------------------------------------
  • Nerfed Claimer, Spade, and Lobotomy
  • -------------------------------------------------------------------------
  • Fixed Don't Worry 'bout Fallin' activating in creative mode and with elytra
  • Fixed Businessman malfunctioning
  • Fixed Lifesteal not working when stolen health exceeded maximum health
  • Fixed Introvert from being an infinite arrow glitch
  • Fixed Alive health duplication - now there's a 5-second cooldown for equipping and unequipping Alive armor! Sadly, the bug seems to lay in the ArmorEquipEvent itself, so I saw no other option.
  • -------------------------------------------------------------------------
  • Prevented users without underscoreenchants.grab from taking items from the GUI
  • Butchering now should be the last EntityDamageByEntityEvent to activate, therefore cooperating with protection plugins.
  • -------------------------------------------------------------------------
  • IMPORTANT: Had to part ways with tridents since they were impossible to maintain and produce.
This patch is massive and I strongly advise you to update from 1.8 to 1.8-PATCH1!

Big thanks to CharliegoDrzwi for helping me test the patch.
----------, Nov 28, 2021

Major update 1.8 is already here!
Update tag: "The Hesitative Update"

Changelog:​
  • Added 10 new enchantments:
    • Social Anxiety (armor): If there are more than 3 players near you, you get Speed III until there aren't so many players.
    • Thorncover (chestplates): Cancels thorns damage!
    • Hocus Pocus (weapons): Shuffle victim's hotbar with a 5 * N% chance, where N is your enchantment level
    • Saunabuffs (armor): Damage is drastically decreased when in the Nether!
    • Reciprocation (chestplates): Upon getting hit, there's a 50% chance to slow down the attacker!
    • Adrenaline (weapons): The lower your health is, the higher damage you deal! Formula: dmg = dmg - (hp - 20) * lvl * 0.125.
    • Rekt (helmets): If someone attacks you, they'll teleport to a random location in a 100 block range with a 5% chance.
    • Photosynthesis (helmets): when it's day and there's nothing above your head, you'll regenerate half a heart every 3 seconds!
    • Parasite (weapons): If the damage you dealt is above 10 HP, then your hunger bar will be filled and you'll get Strength I for 5 seconds!
    • Speedminer (tools): Right-click with this tool to spawn a TNT! Obviously, with a cooldown.
  • Fixed a minor bug.
----------, Nov 25, 2021

1.7 patch #1 is already here!
Patch details:
  • Fixed Netherite items not working in anvils and enchantment GUIs.
Thanks to J.Paradox!
----------, Nov 21, 2021

Major update 1.7 is already here!
Update tag: "The Update That Does Your Dishes"

Changelog:
  • 2 major bugfixes! Now you can properly use configuration files and can properly use bows :) Shoutout to @mfnalex & @TheCaptainSleepy for helping me figure out the core of the problems!
  • Added 5 new bow enchantments:
    • Evoker: Spawn evoker fangs on the victim to both scare them and damage them!
    • Consumer: With a small chance, steal a positive effect from the victim!
    • Firefly: Deal more damage if the victim is on fire!
    • Homing: The arrow will follow the targeted victim! Note that the chance of landing the arrow successfully is not 100% (just a bit lower) for better balancing.
    • Striker: No matter how much armor and effects the victim has, the damage will be calculated as if the victim had none! Note that there's actually a bit of damage reduction still present (again, for balancing).
This update took me a lot of time to figure out and finish!
Brief 1.7 overview:
  • 2 extremely important and major bugfixes
  • 5 bow enchantments
----------, Nov 11, 2021

Major update 1.6 is already here!
Update tag: "Get The Job Done"

Changelog:
  • Added a TabCompleter for /uenchant. Also optimized the command code itself to be more concise.
  • Fixed some bugs
The reason for this update being considered major is because of how crucial the tab completer was. Not only that, but the bug I fixed was quite crucial, as it spammed the console upon 95% of the player deaths.
----------, Oct 23, 2021

Fixed UpdateChecker. Minor but important - recommended to update!
----------, Oct 21, 2021

Resource Information
Author:
----------
Total Downloads: 1,620
First Release: Oct 21, 2021
Last Update: Jul 18, 2024
Category: ---------------
All-Time Rating:
9 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings