67 lines
2.0 KiB
Diff
67 lines
2.0 KiB
Diff
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||
|
From: Aikar <aikar@aikar.co>
|
||
|
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 0000000000000000000000000000000000000000..43e6576b1d1bb811f9feb22de0024d9c823cb21a
|
||
|
--- /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<ItemStack> choices = new ArrayList<>();
|
||
|
+
|
||
|
+ public ItemStackRecipeChoice(ItemStack choices) {
|
||
|
+ this.choices.add(choices);
|
||
|
+ }
|
||
|
+
|
||
|
+ public ItemStackRecipeChoice(List<ItemStack> 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;
|
||
|
+ }
|
||
|
+}
|