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 90208bc96085f05a3b657b9467b1670d00b03104..c59d5e4ef9641fd73463b177239226866272745b 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 @@ -152,6 +153,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)); @@ -196,6 +198,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; @@ -205,6 +208,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;