From d7686f129fdec1e6727953c9515da923aea736ac Mon Sep 17 00:00:00 2001 From: Aikar Date: Thu, 13 Sep 2018 21:41:19 -0400 Subject: [PATCH] Add ItemStackRecipeChoice Draft API This is based on Spigots Draft API. This is subject to change Allows creating recipes that must match isSimilar to full item stack. --- ...-Add-ItemStackRecipeChoice-Draft-API.patch | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 Spigot-API-Patches/0151-Add-ItemStackRecipeChoice-Draft-API.patch diff --git a/Spigot-API-Patches/0151-Add-ItemStackRecipeChoice-Draft-API.patch b/Spigot-API-Patches/0151-Add-ItemStackRecipeChoice-Draft-API.patch new file mode 100644 index 000000000..e54c82754 --- /dev/null +++ b/Spigot-API-Patches/0151-Add-ItemStackRecipeChoice-Draft-API.patch @@ -0,0 +1,69 @@ +From d18aff755cf3e94ecc7da5eff26a6cfb85d17163 Mon Sep 17 00:00:00 2001 +From: Aikar +Date: Thu, 13 Sep 2018 21:39:26 -0400 +Subject: [PATCH] Add ItemStackRecipeChoice Draft API + +This is based on Spigots Draft API. This is subject to change + +Allows creating recipes that must match isSimilar to full item stack. + +diff --git a/src/main/java/com/destroystokyo/paper/inventory/ItemStackRecipeChoice.java b/src/main/java/com/destroystokyo/paper/inventory/ItemStackRecipeChoice.java +new file mode 100644 +index 000000000..43e6576b1 +--- /dev/null ++++ b/src/main/java/com/destroystokyo/paper/inventory/ItemStackRecipeChoice.java +@@ -0,0 +1,51 @@ ++package com.destroystokyo.paper.inventory; ++ ++import org.bukkit.inventory.ItemStack; ++import org.bukkit.inventory.RecipeChoice; ++ ++import java.util.ArrayList; ++import java.util.List; ++ ++/** ++ * Allows crafting Items that require full matching itemstacks to complete the recipe for custom items ++ * @deprecated Draft API ++ */ ++@Deprecated ++public class ItemStackRecipeChoice implements RecipeChoice { ++ ++ protected final List choices = new ArrayList<>(); ++ ++ public ItemStackRecipeChoice(ItemStack choices) { ++ this.choices.add(choices); ++ } ++ ++ public ItemStackRecipeChoice(List choices) { ++ this.choices.addAll(choices); ++ } ++ ++ @Override ++ public ItemStack getItemStack() { ++ return choices.isEmpty() ? null : choices.get(0); ++ } ++ ++ @Override ++ public RecipeChoice clone() { ++ try { ++ ItemStackRecipeChoice clone = (ItemStackRecipeChoice) super.clone(); ++ clone.choices.addAll(this.choices); ++ return clone; ++ } catch (CloneNotSupportedException ex) { ++ throw new AssertionError(ex); ++ } ++ } ++ ++ @Override ++ public boolean test(ItemStack itemStack) { ++ for (ItemStack stack : choices) { ++ if (stack.isSimilar(itemStack)) { ++ return true; ++ } ++ } ++ return false; ++ } ++} +-- +2.18.0 +