EnchantMore
Original Plugin By Mushroom Hostage. Maintained And Continued By DSH105
EnchantMore adds dozens of new item enchantment effects; on flint & steel, hoes, shears, fishing rods, and other items…Ranging from entertainingly destructive to legitimately useful.
Download EnchantMore 2.0 - released 2013/04/19 for 1.5.1-R0.
Features
- Over 80 unique enchantment/item combinations
- Items in inventory appear as expected (glowing + descriptive tooltip)
- No client mods required
- Only adds functionality, does not change any - all your existing enchanted tools work as expected
- Any effects can be disabled in the Configuration File
- Supports enchantments on modded items
Effect List
Enchanting
An enchanting command is in the making, but at the moment, other enchanting plugins or inventory editors must be used
- EasyEnchant - see the Exception section in the config to enable/disable
- Tim The Enchanter - /enchant command for ops
- Auto Enchanter - set "unsafe" to true in config
- General - supported in v4.3+, enable in config
If you know of any other compatible plugins, let me know and I'll add them here. (If you're writing an enchanting plugin, use addUnsafeEnchantment() and ignore canEnchantItem(), then it should be compatible with EnchantMore.)
Limitations
- Not all enchantments reasonably combine with one another
- No permission support
- Some effects are overpowered or unstable; be careful!
For all known issues or to file a new bug see Tickets.
Permissions
All permissions are in this form: enchantmore.<category or item>.<enchantment>.
Item names are identical to those in the default configuration file, for example enchantmore.flintandsteel.aquaaffinity.
The method that forms the permissions can be found here on the GitHub source.
Notes
Slot Data protocol reference
Other relevant plugins of interest pertaining to enchantments:
- Sublimation - silk touch ice, no longer overpowered
- SilkSpawners - pickup and move mob spawners with silk touch
Got a cool idea for a new effect? I can't promise I'll implement everything, but all suggestions are welcome! Feel free to discuss your ideas below, or open a ticket for more specific requests. Including the specific item + enchantment name is appreciated, preferably from the available wanted effects list.
Also interested in new potions? Try PotionsPlus.
Testers For EnchantMore 2.0
A huge thank you to the following people for helping me get EnchantMore 2.0 tested and finished!
GitHub
@mushroomhostage
Im pretty sure there is a way to see when armor is put on/taken off using one of the Spout InventoryEvent Listeners. However that would restrict servers to needing the spout plugin for that particular enchantment.
Hopefully with the "in the works" Official Minecraft API that Bukkit and Mojang are working on together there will be more events such as what this needs.
Cool! Does this work with the essentials /enchant? That would alleviate my permissions conerns.. since on my server only ops can use /enchant. Would be fun to be able to hand out unique magic items as rewards, etc. ;)
Hey, just wondering if its possible to configure some of the enchantments not to be available in game?
@mushroomhostage wow man, Thank you so much! : D
@Dry_Taste
Added support for Metallurgy items in EnchantMore 0.7.5. Now you can use these enchantments to your copper, bronze, steel, mithril, orichalcum, and adamantine items – in addition to ruby, emerald, sapphire items from RedPower, and bronze items from IndustrialCraft :).
The default config uses the item IDs from the Bukkit ports from MC Port Central, but if the IDs change or new metals are added, you can add them in the config.yml 'items' section.
@Laserhog
Great ideas. Added "Fishing Rod + Sharpness = damage mobs", wasn't too difficult. Higher levels cause more damage. Also added "Pickaxe + Sharpness = mine ore vein". I'm finding it very useful too, since I made it so all of the ores drop where you mined the original block – makes it easier to completely harvest diamond veins formed nearby dangerous lava, for example. The size of the cube it mines the ore within is limited for performance reasons, but higher levels have a greater reach (and the limit shouldn't be noticeable for natural diamond veins, only very large coal deposits), and it only mines the same ore of the block you originally broke.
Haven't implemented perma sprint boots.. been wanting to, but haven't figured out a good way to do it. I was also thinking they could make you not slow down when walking on soul sand, and/or not slip on ice, but that may be even harder to do. There is a plugin Elemental Armor that planned to do this (is it possible?) but hasn't been updated and has no file releases. I could possibly listen on player movement and try to increase the velocity – that's exactly what "Boots + Power = witch's broom (sprint flying)" does when you sprint, but it also makes you fly. Maybe I could apply the speed potion mob effect, but then there is the problem of when to start/stop the effect (is there an event plugins can listen to for when armor is donned and doffed?), and more problematic, the constant swirly visual particles (can they be disabled?). Anyone have any suggestions how to best do this?
@PrecipiceGames
Thanks for the heads up! Using the MONITOR priority to bypass the unsafe enchantment restrictions.. who would have thought :). Another possibility, I haven't investigated, but perhaps a plugin could use reflection to rewrite the canEnchantItem() and min/max level constants.. or worst case, a mod to CraftBukkit to remove the check entirely. Ideally the event handler support would be part of Bukkit itself, though.
However, for the time being, I see EnchantMore's purpose as purely adding new effects, rather than a means to acquire them – as long as I can, I'll leave that up to other plugins :). As you mention, the assignment of levels and probabilities using the existing Enchantment Table system is a tricky problem, especially if you want balanced gameplay. Someone could theoretically make a plugin to alter the enchanting table and support new effects from EnchantMore (anyone up for the challenge?), but there are other possibilities including: a new and improved enchanting system, like Laserhog's EasyEnchant, which supports EnchantMore; or from shops at cost; or, adding special EnchantMore items in treasure chests hidden/generated throughout the world or in adventure maps, manually added in. EnchantMore will work well in all these scenarios, as long as the plugins support non-standard enchantments.
@Crayder
No worries, if I do find a way to make non-standard enchantments automatically recognized by other plugins, it'll be noted in the release notes and off by default. Fortunately, the Bukkit API makes a distinction between "safe" enchantments (available in vanilla gameplay, on standard items, at maximum levels) and "unsafe", so for now, the only way for a plugin to make these new enchantments is if they explicitly use addUnsafeEnchantment() (etc.). EssentialsSign currently uses addEnchantment() so it is safe.
A wiki for EnchantMore would be awesome, if you set one up, let me know and I'll link to it. As long as it isn't wikia :).
Are you still seeing the Fishing Rod + Flame enchantment filling empty buckets with water? I tried to reproduce on 1.1-R4 but couldn't see this problem..
And to the author, if you ever make this plugin compatible with EssentialsSign, please make it very clear in the update log. I sell basic enchants on my server and I really, really don't want players to be able to purchase enchantments for items included in EnchantMore through Essentials.
Such a great plugin, someone needs to start up a wiki with all of the updated enchantments. Maybe I'll do it.
Effect Recommendations:
Just a few ideas, my favourite and the one i hope you add being the insta mine ore veins. I just couldnt think of an enchantment that would go well with it.
:)
Can you add enchantment support for Metallurgy items? : )
Hello! I thought I would give you a heads up about the latest enchantment table api. It seems bukkit did an "ok" job with the new api for handling enchantment tables but they didn't leave room for extending the functionality of the table for your plugin.
I would like to point out some code:
https://github.com/Bukkit/CraftBukkit/blob/master/src/main/java/net/minecraft/server/ContainerEnchantTable.java#L164
As you can see it is hard-coded to only allow safe enchantments using the api. but you can work around this. Craftbukkit will still fire events for items placed in the table that meet the following conditions:
1) The item is not enchanted
2) the item is not stack-able
Minecraft's internal enchantment level offering system will return an array of ints: {0,0,0}, size 3 for any item that doesn't have correlating enchants, but the event still fires. You can intercept the the event and set them manually. Additionally, by listening to the enchant Item event with a priority of MONITOR and filtering through the enchant map for unsupported enchants, you can bypass the code snippet outlined above.
Unfortunately implementing these features will cause a lot of additional work as you need to balance the experience cost of various enchants and how to mix them together on similar items.
@Laserhog
Sweet, thanks! I have added a link to your plugin in the compatible list.
For anyone interested in controlling access to these powerful enchantments, Laserhog's EasyEnchant is now one solution. You can edit its config (in the Exception section) to enable or disable which enchantments for which items should be available through the /ee command. I just tested it and it works great in conjunction with EnchantMore – highly recommended!
@Pandamatak
Nope, no client mods needed! That was one of my design goals, since I know requiring client mods like Spout can eliminate a large number of potential players. Actually I was surprised no clients mods are required, and the protocol/client has built-in support for enchantments on any durable item, so I figured, might as well exploit it :)
Would definitely be interested in your thoughts about to balance for PvP. Some effects are currently overpowered and I would not recommend giving them to just anybody :).
@wvenderbush
@Hangar
@anotherfahlman
Certainly would like to add these features. I'll see what I can do, but some are more difficult to implement than others. If any other developers out there want to help out and send me a pull request on GitHub, before I get around to adding said new features, I'll gladly accept =).
@Royalgamer06
Yes /enchant all from Tim The Enchanter, should work, but is not recommended - some enchantments may conflict with or interoperate poorly with other effects. Try it and see and let me know if any problems, but for best results, I suggest enchanting one effect at a time. If you want more control over what enchantments are available on what items, you can now use EasyEnchant instead.
@Faldonboy
Thanks for the feedback, all good points. Some comments:
For Bow + Looting pulling all entities, was slightly concerned about this but haven't came up with a good way to fix it. Originally I thought it'd be useful to pull exp orbs, but I went with all entities for greatest applicability. Any suggestions how to best adjust what it can pull? Config file or different enchantment levels for different types of entities? (and what levels for what types?)
For Boots + Power and Boots + Punch, I kind of like how they don't cancel fall damage, although I can see how it would be useful if they did. I figure the risk of fall damage balances the extreme power they offer. Flying, especially, can be very overpowered (like in creative mode) but flying with the very real chance of crashing in the ground, somewhat less. Similar to how enderpearls teleport you, but at the cost of fall damage. Note, you can mitigate the fall damage of Boots + Punch by jumping onto the top of a ledge, and of Boots + Power by hitting a wall and safely gliding to the ground. You can also combine these enchantments with Feather Falling, Protection, Infinity, or other damage-reducing enchantments to better balance them. But I see what you mean about their inherent extreme risk, and adding a built-in fall damage cancellation would be possible – any ideas how exactly to best do this? (cancel all fall damage, only some, built-in Feather Falling, proportional to the level, for a limited time, something else?)
For Chestplate + Infinity, I see it more of as an admin-level item enchantment. Have found it very useful during my testing, and is a lot easier to manage than switching to/from creative mode and/or messing with commands. But it would be possible to make it lose durability somehow, how exactly is a more complicated question though. Could make it lose durability when damaged, but then it would be the same as Protection. Even if I make it much more stronger, it would still imho not be much more different than, say, Protection 1000, to warrant a new enchantment name. But I'm open to suggestions, let me know what you think. Another idea is to make it time-limited, but then there's the question of what time exactly to measure.
For Bow + Sharpness crashing when shot at the enderdragon..hmm. I have noticed not all of the effects work against the enderdragon. There were some bugs in 1.1-R3 involving the enderdragon since it is a "complex entity" and was not receiving/responding to all of the events it should. Were you seeing these problems on 1.1-R4?
For restricting maximum enchantment levels, its possible but one complication is that the vanilla enchantments as-is do not have any restrictions. If you somehow manage for example to obtain a Knockback 100 or Unbreaking 5000, it will work as expected since the enchantment effect code in vanilla Minecraft does not check the ranges, it just blindly accepts the level in its calculation. Instead, the allowable levels are enforced on the enchanting side – when the enchantment is applied to the item. There is not yet any item enchanting functionality in EnchantMore, but just today, another plugin, EasyEnchant, was updated to allow the non-standard enchantments EnchantMore uses, and it can control the max level it will apply to new items. So I think it may be what you're looking for, but let me know if you think more restrictions within EnchantMore itself would be useful, I'll see what I can do. World protection support and some form of permissions are definitely on the table.
Does this require any client side mods like spoutcraft? If not, awesome.
One thing I'm concerned about, however. Some of the enchantments seem a bit overpowered (like smite). Could you release a more balanced version? If you need more details, I could give you some ideas as to how to make it more PvP-friendly.
I will definitely be keeping an eye on this meanwhile.
Oh yeah, and like the guy below me said. Config and Enchantment Table support is a must.
Added support for your plugin through my plugin :D
Just wanted to say thanks for the plugin!
This looks pretty neat. I would definitely need the protection/permission support before I could even try it though. I will put this in my subscriptions and keep an eye on ya :)
Cool, but in order for me to use it I need:
Configuration - Disable/Enable any of the above powerups (in case I don't want some of them on my server. One by one disabling is a must!)
Enchantment Table Support - so that you can put the Item in an enchantment table and enchant it as regular, this is also a must.
If you implement these 2 ideas, I will most definitely use it!
So just a few concerns/bugs that I feel I must complain about
Not really sure if it's a bug but either way I really hope it gets changed because it renders this enchantment useless for the server i'm on.
Bow + looting pulls ALL entities to you. Players, mobs, exp orbs, items, arrows and NPCs from the citizens plugin. The fact that it pulls npc's and arrows to you is reason enough to deem it dangerous for a few reasons, NPCs are obvious of why it's not good as for arrows if you or someone else were to fire an arrow from a bow with any enchantment from this plugin it will trigger the effect again when that arrow is pulled to you.
Also, boots + power and boots + punch don't cancel fall damage and usually end up killing you upon landing
chestplate + infinity is an everlasting godmode, is there anyway to make it so the chestplate still loses it's durability?
shooting a bow sharpness at an ender dragon crashed the server, i'm afraid I can't give any real information on this and I was only able to reproduce this twice out of 10 kills
and I'm sure you're already working on permissions but add in permissions such as enchantmore.flame.10 for example which would let a user enchant an item of that name ONLY up to level 10 if possible
@mushroomhostage
It's quite alright, I don't want it to be possible! Also, just a little bug: Flame I fishing rods will fill any buckets in your inventory with water.
Could you add the ability to walk on water?
@Crayder
EssentialsSign doesn't allow "unsafe" enchantments, so unfortunately not (at least from my reading of the code). But if they update to allow unsafe enchantments, or there is another similar plugin which allows it, EnchantMore will work with it.