summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndre LeBlanc <andre@norcode.com>2013-05-05 14:23:37 -0400
committerTravis Watkins <amaranth@ubuntu.com>2014-04-18 13:13:01 -0500
commit47367210f3f74acc831d3f8a15a52aa693fbe7bb (patch)
tree212fbfec02fc20d0fbe2715fa87826b789f15ce0
parent941650b9b2a727fb00164377bfd8b760d37e2806 (diff)
downloadcraftbukkit-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.
-rw-r--r--src/main/java/net/minecraft/server/ContainerEnchantTable.java8
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 */