From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Jake Potrebic Date: Sun, 26 Sep 2021 12:57:35 -0700 Subject: [PATCH] Option to prevent NBT 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 af04071d37e70b8cc9837d57477c8493be8afb9f..00000f1399b053bb3c7b6d4792559b630d414b81 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 copyNbt; // Paper /** * Create a smithing recipe to produce the specified result ItemStack. @@ -23,6 +24,21 @@ public class SmithingRecipe implements Recipe, Keyed { * @param addition The addition ingredient */ 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 copyNbt whether to copy the nbt from the input base item to the output + */ + public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @NotNull RecipeChoice base, @NotNull RecipeChoice addition, boolean copyNbt) { + this.copyNbt = copyNbt; + // Paper end this.key = key; this.result = result; this.base = base; @@ -60,4 +76,15 @@ public class SmithingRecipe implements Recipe, Keyed { public NamespacedKey getKey() { return this.key; } + + // Paper start + /** + * Whether or not to copy the NBT of the input base item to the output. + * + * @return true to copy the NBT (default for vanilla smithing recipes) + */ + public boolean willCopyNbt() { + return copyNbt; + } + // Paper end }