From debedee58753438601acf766297f73380f362aaa Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Fri, 2 Oct 2020 17:45:50 -0500 Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient --- ...e-to-recipe-s-ExactChoice-ingredient.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 patches/api/0032-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch diff --git a/patches/api/0032-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch b/patches/api/0032-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch new file mode 100644 index 000000000..0b4d73f4f --- /dev/null +++ b/patches/api/0032-Add-predicate-to-recipe-s-ExactChoice-ingredient.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: William Blake Galbreath +Date: Fri, 2 Oct 2020 17:43:24 -0500 +Subject: [PATCH] Add predicate to recipe's ExactChoice ingredient + + +diff --git a/src/main/java/org/bukkit/inventory/RecipeChoice.java b/src/main/java/org/bukkit/inventory/RecipeChoice.java +index 3d325cab6..4dedbdc1c 100644 +--- a/src/main/java/org/bukkit/inventory/RecipeChoice.java ++++ b/src/main/java/org/bukkit/inventory/RecipeChoice.java +@@ -10,6 +10,7 @@ import java.util.function.Predicate; + import org.bukkit.Material; + import org.bukkit.Tag; + import org.jetbrains.annotations.NotNull; ++import org.jetbrains.annotations.Nullable; // Purpur + + /** + * Represents a potential item match within a recipe. All choices within a +@@ -155,6 +156,7 @@ public interface RecipeChoice extends Predicate, Cloneable { + public static class ExactChoice implements RecipeChoice { + + private List choices; ++ private Predicate predicate; // Purpur + + public ExactChoice(@NotNull ItemStack stack) { + this(Arrays.asList(stack)); +@@ -199,6 +201,7 @@ public interface RecipeChoice extends Predicate, Cloneable { + + @Override + public boolean test(@NotNull ItemStack t) { ++ if (predicate != null) return predicate.test(t); // Purpur + for (ItemStack match : choices) { + if (t.isSimilar(match)) { + return true; +@@ -208,6 +211,17 @@ public interface RecipeChoice extends Predicate, Cloneable { + return false; + } + ++ // Purpur start ++ @Nullable ++ public Predicate getPredicate() { ++ return predicate; ++ } ++ ++ public void setPredicate(@Nullable Predicate predicate) { ++ this.predicate = predicate; ++ } ++ // Purpur end ++ + @Override + public int hashCode() { + int hash = 7;