summaryrefslogtreecommitdiffhomepage
path: root/patches/server/0704-Option-to-prevent-NBT-copy-in-smithing-recipes.patch
diff options
context:
space:
mode:
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.patch84
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
+ }
+ }