diff options
Diffstat (limited to 'patches/api/0304-Option-to-prevent-data-components-copy-in-smithing-r.patch')
-rw-r--r-- | patches/api/0304-Option-to-prevent-data-components-copy-in-smithing-r.patch | 122 |
1 files changed, 122 insertions, 0 deletions
diff --git a/patches/api/0304-Option-to-prevent-data-components-copy-in-smithing-r.patch b/patches/api/0304-Option-to-prevent-data-components-copy-in-smithing-r.patch new file mode 100644 index 0000000000..fa4ad55705 --- /dev/null +++ b/patches/api/0304-Option-to-prevent-data-components-copy-in-smithing-r.patch @@ -0,0 +1,122 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Jake Potrebic <[email protected]> +Date: Sun, 26 Sep 2021 12:57:35 -0700 +Subject: [PATCH] Option to prevent data components copy in smithing recipes + + +diff --git a/src/main/java/org/bukkit/inventory/SmithingRecipe.java b/src/main/java/org/bukkit/inventory/SmithingRecipe.java +index 0235f4aa50eb69f87068005c669bd486899025d6..1ef9a715a2736e88a16083c6873803a8bd6bcf29 100644 +--- a/src/main/java/org/bukkit/inventory/SmithingRecipe.java ++++ b/src/main/java/org/bukkit/inventory/SmithingRecipe.java +@@ -13,6 +13,7 @@ public class SmithingRecipe implements Recipe, Keyed { + private final ItemStack result; + private final RecipeChoice base; + private final RecipeChoice addition; ++ private final boolean copyDataComponents; // Paper + + /** + * Create a smithing recipe to produce the specified result ItemStack. +@@ -28,6 +29,23 @@ public class SmithingRecipe implements Recipe, Keyed { + */ + @Deprecated + public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition) { ++ // Paper start ++ this(key, result, base, addition, true); ++ } ++ /** ++ * Create a smithing recipe to produce the specified result ItemStack. ++ * ++ * @param key The unique recipe key ++ * @param result The item you want the recipe to create. ++ * @param base The base ingredient ++ * @param addition The addition ingredient ++ * @param copyDataComponents whether to copy the data components from the input base item to the output ++ * @deprecated use {@link SmithingTrimRecipe} or {@link SmithingTransformRecipe} ++ */ ++ @Deprecated ++ public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyDataComponents) { ++ this.copyDataComponents = copyDataComponents; ++ // Paper end + this.key = key; + this.result = result; + this.base = base; +@@ -65,4 +83,26 @@ public class SmithingRecipe implements Recipe, Keyed { + public NamespacedKey getKey() { + return this.key; + } ++ ++ // Paper start ++ /** ++ * Whether to copy the NBT of the input base item to the output. ++ * ++ * @return true to copy the NBT (default for vanilla smithing recipes) ++ * @apiNote use {@link #willCopyDataComponents()} ++ */ ++ @org.jetbrains.annotations.ApiStatus.Obsolete(since = "1.20.5") ++ public boolean willCopyNbt() { ++ return this.willCopyDataComponents(); ++ } ++ ++ /** ++ * Whether to copy the data components of the input base item to the output. ++ * ++ * @return true to copy the data components (default for vanilla smithing recipes) ++ */ ++ public boolean willCopyDataComponents() { ++ return this.copyDataComponents; ++ } ++ // Paper end + } +diff --git a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java +index 08fd3eca8383cdc2d06c3ce973e8c402d279077e..68e7132d77151b7b8312638d8bb79ea59e2fa5a6 100644 +--- a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java ++++ b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java +@@ -23,6 +23,22 @@ public class SmithingTransformRecipe extends SmithingRecipe { + super(key, result, base, addition); + this.template = template; + } ++ // Paper start ++ /** ++ * Create a smithing recipe to produce the specified result ItemStack. ++ * ++ * @param key The unique recipe key ++ * @param result The item you want the recipe to create. ++ * @param template The template item. ++ * @param base The base ingredient ++ * @param addition The addition ingredient ++ * @param copyDataComponents whether to copy the data components from the input base item to the output ++ */ ++ public SmithingTransformRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice template, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyDataComponents) { ++ super(key, result, base, addition, copyDataComponents); ++ this.template = template; ++ } ++ // Paper end + + /** + * Get the template recipe item. +diff --git a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java +index 32cbdc342615e76ff7a896e67cb0736b0bdf1978..ce36bb5b030f17e11f74e987235be143c1925aa7 100644 +--- a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java ++++ b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java +@@ -23,6 +23,21 @@ public class SmithingTrimRecipe extends SmithingRecipe implements ComplexRecipe + super(key, new ItemStack(Material.AIR), base, addition); + this.template = template; + } ++ // Paper start ++ /** ++ * Create a smithing recipe to produce the specified result ItemStack. ++ * ++ * @param key The unique recipe key ++ * @param template The template item. ++ * @param base The base ingredient ++ * @param addition The addition ingredient ++ * @param copyDataComponents whether to copy the data components from the input base item to the output ++ */ ++ public SmithingTrimRecipe(@NotNull NamespacedKey key, @NotNull RecipeChoice template, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyDataComponents) { ++ super(key, new ItemStack(Material.AIR), base, addition, copyDataComponents); ++ this.template = template; ++ } ++ // Paper end + + /** + * Get the template recipe item. |