diff options
author | Andre LeBlanc <andre@norcode.com> | 2013-05-05 14:23:37 -0400 |
---|---|---|
committer | Travis Watkins <amaranth@ubuntu.com> | 2014-04-18 13:13:01 -0500 |
commit | 47367210f3f74acc831d3f8a15a52aa693fbe7bb (patch) | |
tree | 212fbfec02fc20d0fbe2715fa87826b789f15ce0 /src/main | |
parent | 941650b9b2a727fb00164377bfd8b760d37e2806 (diff) | |
download | craftbukkit-47367210f3f74acc831d3f8a15a52aa693fbe7bb.tar craftbukkit-47367210f3f74acc831d3f8a15a52aa693fbe7bb.tar.gz craftbukkit-47367210f3f74acc831d3f8a15a52aa693fbe7bb.tar.lz craftbukkit-47367210f3f74acc831d3f8a15a52aa693fbe7bb.tar.xz craftbukkit-47367210f3f74acc831d3f8a15a52aa693fbe7bb.zip |
Allow plugins to enchant normally unenchantable items. Adds BUKKIT-1849
It's currently not possible for a plugin to allow enchanting of an
otherwise un-enchantable item using the enchanting table. This commit
causes EnchantItemEvent to be called with an empty list of enchantments,
allowing a plugin to provide it's own set of enchantments when vanilla
Minecraft would not allow any. It also bypasses the unsafe enchantment check
since a plugin should be permitted to apply any enchantments they like, and
vanilla should not generate unsafe enchantments of its own.
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/net/minecraft/server/ContainerEnchantTable.java | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/src/main/java/net/minecraft/server/ContainerEnchantTable.java index 528fbc97..5f948e47 100644 --- a/src/main/java/net/minecraft/server/ContainerEnchantTable.java +++ b/src/main/java/net/minecraft/server/ContainerEnchantTable.java @@ -152,6 +152,12 @@ public class ContainerEnchantTable extends Container { if (this.costs[i] > 0 && itemstack != null && (entityhuman.expLevel >= this.costs[i] || entityhuman.abilities.canInstantlyBuild)) { if (!this.world.isStatic) { List list = EnchantmentManager.b(this.l, itemstack, this.costs[i]); + // CraftBukkit start - Provide an empty enchantment list + if (list == null) { + list = new java.util.ArrayList<EnchantmentInstance>(); + } + // CraftBukkit end + boolean flag = itemstack.getItem() == Items.BOOK; if (list != null) { @@ -186,7 +192,7 @@ public class ContainerEnchantTable extends Container { EnchantmentInstance enchantment = new EnchantmentInstance(enchantId, entry.getValue()); Items.ENCHANTED_BOOK.a(itemstack, enchantment); } else { - item.addEnchantment(entry.getKey(), entry.getValue()); + item.addUnsafeEnchantment(entry.getKey(), entry.getValue()); } } catch (IllegalArgumentException e) { /* Just swallow invalid enchantments */ |