66 lines
		
	
	
	
		
			2 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
	
		
			2 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..0000000000000000000000000000000000000000
 | 
						|
--- /dev/null
 | 
						|
+++ b/src/main/java/com/destroystokyo/paper/inventory/ItemStackRecipeChoice.java
 | 
						|
@@ -0,0 +0,0 @@
 | 
						|
+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;
 | 
						|
+    }
 | 
						|
+}
 |