summaryrefslogtreecommitdiffhomepage
path: root/patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch')
-rw-r--r--patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch143
1 files changed, 143 insertions, 0 deletions
diff --git a/patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch b/patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch
new file mode 100644
index 0000000000..7246d24edd
--- /dev/null
+++ b/patches/server/0579-Option-to-prevent-data-components-copy-in-smithing-r.patch
@@ -0,0 +1,143 @@
+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 data components copy in smithing recipes
+
+
+diff --git a/src/main/java/net/minecraft/world/item/crafting/SmithingTransformRecipe.java b/src/main/java/net/minecraft/world/item/crafting/SmithingTransformRecipe.java
+index 83b77e170f2945e9b40f302c4cf65efb1628c84a..d64a1c1e146d5d9aa940a37dbee16889c9bab783 100644
+--- a/src/main/java/net/minecraft/world/item/crafting/SmithingTransformRecipe.java
++++ b/src/main/java/net/minecraft/world/item/crafting/SmithingTransformRecipe.java
+@@ -22,8 +22,15 @@ public class SmithingTransformRecipe implements SmithingRecipe {
+ final Ingredient base;
+ final Ingredient addition;
+ final ItemStack result;
++ final boolean copyDataComponents; // Paper - Option to prevent data components copy
+
+ public SmithingTransformRecipe(Ingredient template, Ingredient base, Ingredient addition, ItemStack result) {
++ // Paper start - Option to prevent data components copy
++ this(template, base, addition, result, true);
++ }
++ public SmithingTransformRecipe(Ingredient template, Ingredient base, Ingredient addition, ItemStack result, boolean copyDataComponents) {
++ this.copyDataComponents = copyDataComponents;
++ // Paper end - Option to prevent data components copy
+ this.template = template;
+ this.base = base;
+ this.addition = addition;
+@@ -37,7 +44,9 @@ public class SmithingTransformRecipe implements SmithingRecipe {
+ public ItemStack assemble(SmithingRecipeInput input, HolderLookup.Provider lookup) {
+ ItemStack itemstack = input.base().transmuteCopy(this.result.getItem(), this.result.getCount());
+
++ if (this.copyDataComponents) { // Paper - Option to prevent data components copy
+ itemstack.applyComponents(this.result.getComponentsPatch());
++ } // Paper - Option to prevent data components copy
+ return itemstack;
+ }
+
+@@ -76,7 +85,7 @@ public class SmithingTransformRecipe implements SmithingRecipe {
+ public Recipe toBukkitRecipe(NamespacedKey id) {
+ CraftItemStack result = CraftItemStack.asCraftMirror(this.result);
+
+- CraftSmithingTransformRecipe recipe = new CraftSmithingTransformRecipe(id, result, CraftRecipe.toBukkit(this.template), CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition));
++ CraftSmithingTransformRecipe recipe = new CraftSmithingTransformRecipe(id, result, CraftRecipe.toBukkit(this.template), CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition), this.copyDataComponents); // Paper - Option to prevent data components copy
+
+ return recipe;
+ }
+diff --git a/src/main/java/net/minecraft/world/item/crafting/SmithingTrimRecipe.java b/src/main/java/net/minecraft/world/item/crafting/SmithingTrimRecipe.java
+index 4ea43872f9da72ed959dd0709f959402d01d5fe0..f6f10da21a752e927409ea16076701c4ec403a0e 100644
+--- a/src/main/java/net/minecraft/world/item/crafting/SmithingTrimRecipe.java
++++ b/src/main/java/net/minecraft/world/item/crafting/SmithingTrimRecipe.java
+@@ -30,8 +30,15 @@ public class SmithingTrimRecipe implements SmithingRecipe {
+ final Ingredient template;
+ final Ingredient base;
+ final Ingredient addition;
++ final boolean copyDataComponents; // Paper - Option to prevent data components copy
+
+ public SmithingTrimRecipe(Ingredient template, Ingredient base, Ingredient addition) {
++ // Paper start - Option to prevent data components copy
++ this(template, base, addition, true);
++ }
++ public SmithingTrimRecipe(Ingredient template, Ingredient base, Ingredient addition, boolean copyDataComponents) {
++ this.copyDataComponents = copyDataComponents;
++ // Paper end - Option to prevent data components copy
+ this.template = template;
+ this.base = base;
+ this.addition = addition;
+@@ -55,7 +62,7 @@ public class SmithingTrimRecipe implements SmithingRecipe {
+ return ItemStack.EMPTY;
+ }
+
+- ItemStack itemstack1 = itemstack.copyWithCount(1);
++ ItemStack itemstack1 = this.copyDataComponents ? itemstack.copyWithCount(1) : new ItemStack(itemstack.getItem(), 1); // Paper - Option to prevent data components copy
+
+ itemstack1.set(DataComponents.TRIM, new ArmorTrim((Holder) optional.get(), (Holder) optional1.get()));
+ return itemstack1;
+@@ -106,7 +113,7 @@ public class SmithingTrimRecipe implements SmithingRecipe {
+ // CraftBukkit start
+ @Override
+ public Recipe toBukkitRecipe(NamespacedKey id) {
+- return new CraftSmithingTrimRecipe(id, CraftRecipe.toBukkit(this.template), CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition));
++ return new CraftSmithingTrimRecipe(id, CraftRecipe.toBukkit(this.template), CraftRecipe.toBukkit(this.base), CraftRecipe.toBukkit(this.addition), this.copyDataComponents); // Paper - Option to prevent data components copy
+ }
+ // CraftBukkit end
+
+diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTransformRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTransformRecipe.java
+index 8c381e2745e7d5b63e72a60c5541b549f0d1b9bf..38690b28b6f67624d68877c1e89ebe30b402b233 100644
+--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTransformRecipe.java
++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTransformRecipe.java
+@@ -12,12 +12,17 @@ public class CraftSmithingTransformRecipe extends SmithingTransformRecipe implem
+ public CraftSmithingTransformRecipe(NamespacedKey key, ItemStack result, RecipeChoice template, RecipeChoice base, RecipeChoice addition) {
+ super(key, result, template, base, addition);
+ }
++ // Paper start - Option to prevent data components copy
++ public CraftSmithingTransformRecipe(NamespacedKey key, ItemStack result, RecipeChoice template, RecipeChoice base, RecipeChoice addition, boolean copyDataComponents) {
++ super(key, result, template, base, addition, copyDataComponents);
++ }
++ // Paper end - Option to prevent data components copy
+
+ public static CraftSmithingTransformRecipe fromBukkitRecipe(SmithingTransformRecipe recipe) {
+ if (recipe instanceof CraftSmithingTransformRecipe) {
+ return (CraftSmithingTransformRecipe) recipe;
+ }
+- CraftSmithingTransformRecipe ret = new CraftSmithingTransformRecipe(recipe.getKey(), recipe.getResult(), recipe.getTemplate(), recipe.getBase(), recipe.getAddition());
++ CraftSmithingTransformRecipe ret = new CraftSmithingTransformRecipe(recipe.getKey(), recipe.getResult(), recipe.getTemplate(), recipe.getBase(), recipe.getAddition(), recipe.willCopyDataComponents()); // Paper - Option to prevent data components copy
+ return ret;
+ }
+
+@@ -25,6 +30,6 @@ public class CraftSmithingTransformRecipe extends SmithingTransformRecipe implem
+ public void addToCraftingManager() {
+ ItemStack result = this.getResult();
+
+- MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.SmithingTransformRecipe(this.toNMS(this.getTemplate(), true), this.toNMS(this.getBase(), true), this.toNMS(this.getAddition(), true), CraftItemStack.asNMSCopy(result))));
++ MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.SmithingTransformRecipe(this.toNMS(this.getTemplate(), true), this.toNMS(this.getBase(), true), this.toNMS(this.getAddition(), true), CraftItemStack.asNMSCopy(result), this.willCopyDataComponents()))); // Paper - Option to prevent data components copy
+ }
+ }
+diff --git a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTrimRecipe.java b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTrimRecipe.java
+index 87f20a4811d082f217638768417c1c0feb84f741..5d7782b168138383c606a2c52fbdebe1732364ac 100644
+--- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTrimRecipe.java
++++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftSmithingTrimRecipe.java
+@@ -12,17 +12,22 @@ public class CraftSmithingTrimRecipe extends SmithingTrimRecipe implements Craft
+ public CraftSmithingTrimRecipe(NamespacedKey key, RecipeChoice template, RecipeChoice base, RecipeChoice addition) {
+ super(key, template, base, addition);
+ }
++ // Paper start - Option to prevent data components copy
++ public CraftSmithingTrimRecipe(NamespacedKey key, RecipeChoice template, RecipeChoice base, RecipeChoice addition, boolean copyDataComponents) {
++ super(key, template, base, addition, copyDataComponents);
++ }
++ // Paper end - Option to prevent data components copy
+
+ public static CraftSmithingTrimRecipe fromBukkitRecipe(SmithingTrimRecipe recipe) {
+ if (recipe instanceof CraftSmithingTrimRecipe) {
+ return (CraftSmithingTrimRecipe) recipe;
+ }
+- CraftSmithingTrimRecipe ret = new CraftSmithingTrimRecipe(recipe.getKey(), recipe.getTemplate(), recipe.getBase(), recipe.getAddition());
++ CraftSmithingTrimRecipe ret = new CraftSmithingTrimRecipe(recipe.getKey(), recipe.getTemplate(), recipe.getBase(), recipe.getAddition(), recipe.willCopyDataComponents()); // Paper - Option to prevent data components copy
+ return ret;
+ }
+
+ @Override
+ public void addToCraftingManager() {
+- MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.SmithingTrimRecipe(this.toNMS(this.getTemplate(), true), this.toNMS(this.getBase(), true), this.toNMS(this.getAddition(), true))));
++ MinecraftServer.getServer().getRecipeManager().addRecipe(new RecipeHolder<>(CraftNamespacedKey.toMinecraft(this.getKey()), new net.minecraft.world.item.crafting.SmithingTrimRecipe(this.toNMS(this.getTemplate(), true), this.toNMS(this.getBase(), true), this.toNMS(this.getAddition(), true), this.willCopyDataComponents()))); // Paper - Option to prevent data components copy
+ }
+ }