papermc/CraftBukkit-Patches/0120-Allow-enchanting-tables-to-enchant-any-item.patch

35 lines
1.9 KiB
Diff
Raw Normal View History

From 718db1e4e0a70ff25b8c38305fb79afd0707233e Mon Sep 17 00:00:00 2001
From: andrepl <andre@norcode.com>
Date: Sat, 15 Mar 2014 12:50:00 -0400
Subject: [PATCH] Allow enchanting tables to enchant any item
diff --git a/src/main/java/net/minecraft/server/ContainerEnchantTable.java b/src/main/java/net/minecraft/server/ContainerEnchantTable.java
index cc36e2b..7c0d998 100644
--- a/src/main/java/net/minecraft/server/ContainerEnchantTable.java
+++ b/src/main/java/net/minecraft/server/ContainerEnchantTable.java
@@ -152,6 +152,11 @@ 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]);
+ // Spigot - Provide an empty enchantment list
+ if (list == null) {
+ list = new java.util.ArrayList<EnchantmentInstance>();
+ }
+ // Spigot End
boolean flag = itemstack.getItem() == Items.BOOK;
if (list != null) {
@@ -186,7 +191,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()); // Spigot addEnchantment -> addUnsafeEnchantment
}
} catch (IllegalArgumentException e) {
/* Just swallow invalid enchantments */
--
1.8.3.2