From f17519338bc589c045e0b32bfc37e048b23544d5 Mon Sep 17 00:00:00 2001 From: Riley Park Date: Wed, 15 May 2024 17:06:59 -0700 Subject: Expose server build information (#10729) * Expose server build information * squash patches * final tweaks --------- Co-authored-by: Jake Potrebic Co-authored-by: masmc05 --- ...5-Add-ItemStack-Recipe-API-helper-methods.patch | 104 +++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 patches/api/0165-Add-ItemStack-Recipe-API-helper-methods.patch (limited to 'patches/api/0165-Add-ItemStack-Recipe-API-helper-methods.patch') diff --git a/patches/api/0165-Add-ItemStack-Recipe-API-helper-methods.patch b/patches/api/0165-Add-ItemStack-Recipe-API-helper-methods.patch new file mode 100644 index 0000000000..61a45e967f --- /dev/null +++ b/patches/api/0165-Add-ItemStack-Recipe-API-helper-methods.patch @@ -0,0 +1,104 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Tue, 28 Jan 2014 19:13:57 -0500 +Subject: [PATCH] Add ItemStack Recipe API helper methods + +Allows using ExactChoice Recipes with easier methods + +Redirects some of upstream's APIs to these new methods to avoid +usage of magic values and the deprecated RecipeChoice#getItemStack + +diff --git a/src/main/java/org/bukkit/inventory/RecipeChoice.java b/src/main/java/org/bukkit/inventory/RecipeChoice.java +index 6734bc9d7a6eee8ee40419ae3fe245b67eabaca6..db8bcc66bdc4bedfffb4705db6338eda4c0ad29a 100644 +--- a/src/main/java/org/bukkit/inventory/RecipeChoice.java ++++ b/src/main/java/org/bukkit/inventory/RecipeChoice.java +@@ -146,8 +146,6 @@ public interface RecipeChoice extends Predicate, Cloneable { + /** + * Represents a choice that will be valid only if one of the stacks is + * exactly matched (aside from stack size). +- *
+- * Only valid for shaped recipes + */ + public static class ExactChoice implements RecipeChoice { + +diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java +index 71e494177473c62449aafda1699b26a0c4c81a68..97d5d9c6347bc401e3f4ab7c0ba1391ad5b0449a 100644 +--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java ++++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java +@@ -168,6 +168,13 @@ public class ShapedRecipe extends CraftingRecipe { + return this; + } + ++ // Paper start ++ @NotNull ++ public ShapedRecipe setIngredient(char key, @NotNull ItemStack item) { ++ return setIngredient(key, new RecipeChoice.ExactChoice(item)); ++ } ++ // Paper end ++ + /** + * Get a copy of the ingredients map. + * +diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +index d6e38c7ccfe3b6e85eafb611da20b1a29fb74d97..b8ac602cd2718d615ec243ce648951a1a46c26ec 100644 +--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java ++++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +@@ -131,6 +131,40 @@ public class ShapelessRecipe extends CraftingRecipe { + return this; + } + ++ // Paper start ++ @NotNull ++ public ShapelessRecipe addIngredient(@NotNull ItemStack item) { ++ return addIngredient(item.getAmount(), item); ++ } ++ ++ @NotNull ++ public ShapelessRecipe addIngredient(int count, @NotNull ItemStack item) { ++ Preconditions.checkArgument(ingredients.size() + count <= 9, "Shapeless recipes cannot have more than 9 ingredients"); ++ while (count-- > 0) { ++ ingredients.add(new RecipeChoice.ExactChoice(item)); ++ } ++ return this; ++ } ++ ++ @NotNull ++ public ShapelessRecipe removeIngredient(@NotNull ItemStack item) { ++ return removeIngredient(1, item); ++ } ++ ++ @NotNull ++ public ShapelessRecipe removeIngredient(int count, @NotNull ItemStack item) { ++ Iterator iterator = ingredients.iterator(); ++ while (count > 0 && iterator.hasNext()) { ++ RecipeChoice choice = iterator.next(); ++ if (choice.test(item)) { ++ iterator.remove(); ++ count--; ++ } ++ } ++ return this; ++ } ++ // Paper end ++ + /** + * Removes an ingredient from the list. + * +@@ -154,7 +188,7 @@ public class ShapelessRecipe extends CraftingRecipe { + */ + @NotNull + public ShapelessRecipe removeIngredient(@NotNull Material ingredient) { +- return removeIngredient(ingredient, 0); ++ return removeIngredient(new ItemStack(ingredient)); // Paper - avoid using deprecated methods (magic values; RecipeChoice#getItemStack) + } + + /** +@@ -181,7 +215,7 @@ public class ShapelessRecipe extends CraftingRecipe { + */ + @NotNull + public ShapelessRecipe removeIngredient(int count, @NotNull Material ingredient) { +- return removeIngredient(count, ingredient, 0); ++ return removeIngredient(count, new ItemStack(ingredient)); // Paper - avoid using deprecated methods (magic values; RecipeChoice#getItemStack) + } + + /** -- cgit v1.2.3