Geolykt / EnchantmentsPlus

Enchantments+, a Bukkit Custom Enchantments Plugin based on Zenchantments targetted at production grade servers
GNU General Public License v3.0
38 stars 14 forks source link
bukkit-plugin custom-enchantments

Product End-of-life notice

Development has stalled and is nearing it's end. Please refrain from using this plugin as it will recieve no official update releases. Bugs might get fixed if they get reported, but one needs to build from source to receive these updates.

While I have fun developing this plugin, I particularly hate testing it. There used to be a time where this was no issues as I played on a server with this plugin installed, but these times are now long over. So after many months, I have come to the conclusion that this state will go nowhere.

In the short term, nothing will happen - you will still be able to recieve the newest stuff if you build from source. In the long term you'd need to find some maniac that will fork this plugin just as I forked this plugin from Zenchantments.

Goodbye!


Got a question? Need help or want to discuss changes? Then feel free to contact me either via Spigotmc conversations, Internet Relay Chat (#enchantmentsplus @ irc.libera.chat), or Github Issues and Discussions. Issues however should be reported here on Github so forkers can profit from them being public, but it's the best if at least someone (geolykt in most cases) knows exploits or bugs so they can be fixed, so in the end it doesn't really matter where they are reported to.

Enchantments+

Description

Enchantments+ is a hard fork of Zenchantments, a custom enchantments plugin adding 73 enchantments of all variants, including target-tracing arrows, lumber axes, block-breaking lasers, and much more. They are obtained through the normal enchantment process and act like regular enchantments, capable of being combined and merged (on paper-based server software). The plugin requires no client-side mods or resource packs. A comprehensive configuration file enables fine-tuning of individual enchantments to tailor them to every server's gameplay. The hard fork status however means that we won't maintain any parity with Zenchantments; this is because there are too many differences with the plugin that it is pretty much impossible to convert the 174 commits from Zenchantment's development branch into EnchantmentsPlus-compatible commits.

Enchantments+ vs other Zenchantments forks

Metrics

As of version 2.1.6 the plugin uses bstats to cover metrics, the page where the information is shown can be found here. Please do not opt out of Metrics as it will only come back to bite you! Changes that are introduced to the plugin may be based on the metrics.

Permissions

enchplus.enchant.get - On player enchant event, allow player to have a chance at the enabled custom enchantments
enchplus.enchant.use - Allow player to use the given custom enchants on an item
enchplus.command.reload - Access to /ench reload, to reload the configuration (try not to use, may lead to memory leaks)
enchplus.command.give - Gives an enchanted item, while similar to enchant, it also gives the underlying material
enchplus.command.list - Lists all available enchantments
enchplus.command.info - Returns the info of an enchantments
enchplus.command.onoff - Ability to turn on / turn off a certain enchantment
enchplus.command.enchant - Enchants a item without giving the underlying material. Also allows to enchant other people's stuff, so be cautious.
enchplus.command.lasercol - Enables the ability to colo(u)r the laser of your item in hand. Purely cosmetic and a good way to get a few extra "donations".

Commands

/ench help: Prints the help menu
/ench version: prints the version of the plugin
/ench info: Prints the information of all the enchantments on your current tool
/ench info <enchantment>: Prints the information about a single enchantment
/ench list: Returns the list of the applicable enchantments for the tool in your hand
/ench give <player> <material> <enchantment>: Gives the player a given material with the given enchantment at level 1
/ench give <player> <material> <enchantment> <level>: Gives the player a given material with the given enchantment at the given level
/ench lasercol <col>: Chages the tone of the laser used by the laser enchantment, per tool.
/ench <enchantment>: Enchants your tool in the hand with the given enchantment at level 1.
/ench <enchantment> <level>: Enchants your tool in the hand with the given enchantment at the given level.
/ench <enchantment> <level> <modifier>: Like above, but the third parameter dictates for who the enchantment should be applied (accepts things such as @a)
/ench <enchantment> <level> <modifier> <doNotification>: Like above, but the fourth parameter handles whether or not chat messages should be send as a error/success message. (use True or false)
/ench <enchantment> <level> <modifier> <doNotification> <force>: Like above, but the 5th parameter handles whether the enchantment should be forced onto the tool. (use True or false)

Obtaining & Installation

See Releases for downloads Or compile this project like every other project out there via maven and a JDK 16 or higher, a "mvn clean package" should suffice to build the plugin. To install this plugin, you need bukkit-compatbile plugin loader and put it in the "plugins" folder of your server. No further configuration is needed to get the plugin running (other than a restart)

Compatibility

The current version of this plugin is compatible with Spigot version 1.16.5 and 1.17.x and 1.18.x. Any versions under 1.16.5, will not work without exceptions, versions above 1.18.1, may, although with a few issues.

If you are using spigot, please consider enabling the 1xx-anvil-merger option in the patches.yml.

More specifically, this plugin WILL break some day with paper and it is only a question of time until the differences are too large to maintain via reflection hacks. However the same scenario may occur with a material rewrite on spigot's side (which is frequently requested). This plugin may not update to future versions if too large changes happen at once unannounced and if there isn't an easy fix to them. I do not have the passion to play minecraft (or any game really) anymore which severely impairs my ability to maintain this plugin.

Contribute

Anyone is free to contribute to this repository via pull requests, issues or comments, however keep in mind that this repository uses 4 space indentation. If you feel like complaining about performance while not being an annoying person, then please send me profiling reports NOT TIMINGS. I cannot do much with Timings and I require proper profiling reports to optimize the plugin, otherwise I'm guessing where the bottlenecks COULD be (and usually they are not where I search them). This leads to premature optimisation which might lead to worse code

PRs to this repository are very welcome. Other than most maintainers I encourage you to make PRs even if you believe that they are a bit absurd without asking me prior. (though that does not mean that I have to accept them)

Changes performed in this fork compared to NMS-less Zenchantments

To view the changes compared to Zenchantments (from the point where the split happened), add the Changelog of NMS-Less Zenchantments onto it The current EnchantmentsPlus API is however entirely incompatible with the new Zenchantments API in almost every way.