diff --git a/paper-server/patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch b/paper-server/patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch new file mode 100644 index 0000000000..beb8db3ee9 --- /dev/null +++ b/paper-server/patches/sources/net/minecraft/world/item/enchantment/EnchantmentHelper.java.patch @@ -0,0 +1,18 @@ +--- a/net/minecraft/world/item/enchantment/EnchantmentHelper.java ++++ b/net/minecraft/world/item/enchantment/EnchantmentHelper.java +@@ -52,8 +_,14 @@ + } + + public static ItemEnchantments updateEnchantments(ItemStack stack, Consumer updater) { ++ // Paper start - allowing updating enchantments on items without component ++ return updateEnchantments(stack, updater, false); ++ } ++ ++ public static ItemEnchantments updateEnchantments(ItemStack stack, Consumer updater, final boolean createComponentIfMissing) { ++ // Paper end - allowing updating enchantments on items without component + DataComponentType componentType = getComponentType(stack); +- ItemEnchantments itemEnchantments = stack.get(componentType); ++ ItemEnchantments itemEnchantments = createComponentIfMissing ? stack.getOrDefault(componentType, ItemEnchantments.EMPTY) : stack.get(componentType); // Paper - allowing updating enchantments on items without component + if (itemEnchantments == null) { + return ItemEnchantments.EMPTY; + } else { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java index 1aa17423f4..02109a3ca5 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java @@ -268,15 +268,13 @@ public final class CraftItemStack extends ItemStack { public void addUnsafeEnchantment(Enchantment enchant, int level) { Preconditions.checkArgument(enchant != null, "Enchantment cannot be null"); - // Paper start if (this.handle == null) { return; } EnchantmentHelper.updateEnchantments(this.handle, mutable -> { // data component api doesn't really support mutable things once already set yet mutable.set(CraftEnchantment.bukkitToMinecraftHolder(enchant), level); - }); - // Paper end + }, true); } @Override