mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-18 12:48:53 +01:00
da7138233f
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: ed0ec489 SPIGOT-7965: Unknown TransformReason for Hoglins 9db03457 SPIGOT-7964: Fix typo in Deprecation annotation d14119af PR-1082: Add "since" to Deprecation annotations e8a318d4 PR-1067: Add method to get Advancement requirements CraftBukkit Changes: 40dd796db SPIGOT-7971: NotSerializableException on serialize CraftUseCooldownComponent fa85c5e0a SPIGOT-7968: ProjectileHitEvent not trigerred when arrow hits entity b75b792ec SPIGOT-7970: World#getMaxHeight() returning incorrect value 2b9a094bb SPIGOT-7965: Unknown TransformReason for Hoglins fd3f5a380 SPIGOT-7966: Some trees do not generate with #generateTree f2822317c PR-1515: Add a Class reader and Class node argument provider 07abf6852 PR-1514: Add a test case for ClassTraverser a7577cb24 Fix Inventory#addItem not respecting max stack size 066a74e74 PR-1490: Add method to get Advancement requirements 4a1df30e4 PR-1512: Test Art class based on specific values instead of the implementation, to better catch implementation changes 53254c56f PR-1503: Simplify CAS loop to getAndSet e9447dc5e Make BlockDataMeta#setBlockData hide unspecified states dd08a7120 SPIGOT-7960: Fix inconsistency between natural item drop coordinates e9e8ed753 SPIGOT-7960: Improve natural item drop methods Spigot Changes: 60c9969b Rebuild patches
122 lines
5.6 KiB
Diff
122 lines
5.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
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 6ad1f37372cd77c0f0534deae53125ad148caa7f..eb1c83455e198ff9d6334499be1a865db8e03a2c 100644
|
|
--- a/src/main/java/org/bukkit/inventory/SmithingRecipe.java
|
|
+++ b/src/main/java/org/bukkit/inventory/SmithingRecipe.java
|
|
@@ -14,6 +14,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.
|
|
@@ -29,6 +30,23 @@ public class SmithingRecipe implements Recipe, Keyed {
|
|
*/
|
|
@Deprecated(since = "1.20.1")
|
|
public SmithingRecipe(@NotNull NamespacedKey key, @NotNull ItemStack result, @Nullable RecipeChoice base, @Nullable 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, @Nullable RecipeChoice base, @Nullable RecipeChoice addition, boolean copyDataComponents) {
|
|
+ this.copyDataComponents = copyDataComponents;
|
|
+ // Paper end
|
|
this.key = key;
|
|
this.result = result;
|
|
this.base = base;
|
|
@@ -66,4 +84,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 7a9d77a0cd1c287a3f940f94d4398f84720488aa..e5726da0507ee70cb9dd76c57da6a8442e771307 100644
|
|
--- a/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
|
|
+++ b/src/main/java/org/bukkit/inventory/SmithingTransformRecipe.java
|
|
@@ -24,6 +24,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, @Nullable RecipeChoice template, @Nullable RecipeChoice base, @Nullable 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 4271c54cfbb0fabd241794d8aea31374d7efe45a..232aa8aeef9e34146e413e56b3681919c8850687 100644
|
|
--- a/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
|
|
+++ b/src/main/java/org/bukkit/inventory/SmithingTrimRecipe.java
|
|
@@ -24,6 +24,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.
|