diff options
Diffstat (limited to 'patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch')
-rw-r--r-- | patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch b/patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch new file mode 100644 index 0000000000..14e666a79e --- /dev/null +++ b/patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch @@ -0,0 +1,84 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Sun, 26 Sep 2021 12:57:28 -0700 +Subject: [PATCH] Option to prevent NBT copy in smithing recipes + + +diff --git a/src/main/java/net/minecraft/world/item/crafting/UpgradeRecipe.java b/src/main/java/net/minecraft/world/item/crafting/UpgradeRecipe.java +index d80fc47820edbb3bea439aedf2e02e82c1931e35..076e10e5d7908c590402cfbb739bf73bc00276ce 100644 +--- a/src/main/java/net/minecraft/world/item/crafting/UpgradeRecipe.java ++++ b/src/main/java/net/minecraft/world/item/crafting/UpgradeRecipe.java +@@ -25,8 +25,15 @@ public class UpgradeRecipe implements net.minecraft.world.item.crafting.Recipe<C + final Ingredient addition; + final ItemStack result; + private final ResourceLocation id; ++ final boolean copyNbt; // Paper + + public UpgradeRecipe(ResourceLocation id, Ingredient base, Ingredient addition, ItemStack result) { ++ // Paper start ++ this(id, base, addition, result, true); ++ } ++ public UpgradeRecipe(ResourceLocation id, Ingredient base, Ingredient addition, ItemStack result, boolean copyNbt) { ++ this.copyNbt = copyNbt; ++ // Paper end + this.id = id; + this.base = base; + this.addition = addition; +@@ -41,11 +48,13 @@ public class UpgradeRecipe implements net.minecraft.world.item.crafting.Recipe<C + @Override + public ItemStack assemble(Container inventory) { + ItemStack itemstack = this.result.copy(); ++ if (copyNbt) { // Paper - copy nbt conditionally + CompoundTag nbttagcompound = inventory.getItem(0).getTag(); + + if (nbttagcompound != null) { + itemstack.setTag(nbttagcompound.copy()); + } ++ } // Paper + + return itemstack; + } +@@ -96,7 +105,7 @@ public class UpgradeRecipe implements net.minecraft.world.item.crafting.Recipe<C + public Recipe toBukkitRecipe() { + CraftItemStack result = CraftItemStack.asCraftMirror(this.result); + +- CraftSmithingRecipe recipe = new CraftSmithingRecipe(CraftNamespacedKey.fromMinecraft(this.id), result, CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition)); ++ CraftSmithingRecipe recipe = new CraftSmithingRecipe(CraftNamespacedKey.fromMinecraft(this.id), result, CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition), this.copyNbt); // Paper + + return recipe; + } +diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingRecipe.java +index 0353ba44015cb72efa3892c527568902c9fa626b..bfd6b859fcfed89d0ebaca5200b7ca6f5d353d04 100644 +--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingRecipe.java ++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingRecipe.java +@@ -8,15 +8,21 @@ import org.bukkit.inventory.RecipeChoice; + import org.bukkit.inventory.SmithingRecipe; + + public class CraftSmithingRecipe extends SmithingRecipe implements CraftRecipe { ++ @Deprecated // Paper + public CraftSmithingRecipe(NamespacedKey key, ItemStack result, RecipeChoice base, RecipeChoice addition) { + super(key, result, base, addition); + } ++ // Paper start ++ public CraftSmithingRecipe(NamespacedKey key, ItemStack result, RecipeChoice base, RecipeChoice addition, boolean copyNbt) { ++ super(key, result, base, addition, copyNbt); ++ } ++ // Paper end + + public static CraftSmithingRecipe fromBukkitRecipe(SmithingRecipe recipe) { + if (recipe instanceof CraftSmithingRecipe) { + return (CraftSmithingRecipe) recipe; + } +- CraftSmithingRecipe ret = new CraftSmithingRecipe(recipe.getKey(), recipe.getResult(), recipe.getBase(), recipe.getAddition()); ++ CraftSmithingRecipe ret = new CraftSmithingRecipe(recipe.getKey(), recipe.getResult(), recipe.getBase(), recipe.getAddition(), recipe.willCopyNbt()); // Paper + return ret; + } + +@@ -24,6 +30,6 @@ public class CraftSmithingRecipe extends SmithingRecipe implements CraftRecipe { + public void addToCraftingManager() { + ItemStack result = this.getResult(); + +- MinecraftServer.getServer().getRecipeManager().addRecipe(new net.minecraft.world.item.crafting.UpgradeRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), toNMS(this.getBase(), true), toNMS(this.getAddition(), true), CraftItemStack.asNMSCopy(result))); ++ MinecraftServer.getServer().getRecipeManager().addRecipe(new net.minecraft.world.item.crafting.UpgradeRecipe(CraftNamespacedKey.toMinecraft(this.getKey()), toNMS(this.getBase(), true), toNMS(this.getAddition(), true), CraftItemStack.asNMSCopy(result), this.willCopyNbt())); // Paper + } + } |