summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/bukkit/inventory/ShapelessRecipe.java')
-rw-r--r--src/main/java/org/bukkit/inventory/ShapelessRecipe.java38
1 files changed, 33 insertions, 5 deletions
diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
index 0c340c84..ea359c54 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
@@ -2,6 +2,7 @@ package org.bukkit.inventory;
import com.google.common.base.Preconditions;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.Iterator;
import java.util.List;
@@ -19,7 +20,7 @@ import org.bukkit.material.MaterialData;
public class ShapelessRecipe implements Recipe, Keyed {
private final NamespacedKey key;
private final ItemStack output;
- private final List<ItemStack> ingredients = new ArrayList<ItemStack>();
+ private final List<RecipeChoice> ingredients = new ArrayList<>();
private String group = "";
@Deprecated
@@ -121,11 +122,30 @@ public class ShapelessRecipe implements Recipe, Keyed {
}
while (count-- > 0) {
- ingredients.add(new ItemStack(ingredient, 1, (short) rawdata));
+ ingredients.add(new RecipeChoice.MaterialChoice(Collections.singletonList(ingredient)));
}
return this;
}
+ public ShapelessRecipe addIngredient(RecipeChoice ingredient) {
+ Validate.isTrue(ingredients.size() + 1 <= 9, "Shapeless recipes cannot have more than 9 ingredients");
+
+ ingredients.add(ingredient);
+ return this;
+ }
+
+ /**
+ * Removes an ingredient from the list.
+ *
+ * @param ingredient The ingredient to remove
+ * @return The changed recipe.
+ */
+ public ShapelessRecipe removeIngredient(RecipeChoice ingredient) {
+ ingredients.remove(ingredient);
+
+ return this;
+ }
+
/**
* Removes an ingredient from the list. If the ingredient occurs multiple
* times, only one instance of it is removed. Only removes exact matches,
@@ -204,9 +224,9 @@ public class ShapelessRecipe implements Recipe, Keyed {
*/
@Deprecated
public ShapelessRecipe removeIngredient(int count, Material ingredient, int rawdata) {
- Iterator<ItemStack> iterator = ingredients.iterator();
+ Iterator<RecipeChoice> iterator = ingredients.iterator();
while (count > 0 && iterator.hasNext()) {
- ItemStack stack = iterator.next();
+ ItemStack stack = iterator.next().getItemStack();
if (stack.getType() == ingredient && stack.getDurability() == rawdata) {
iterator.remove();
count--;
@@ -231,7 +251,15 @@ public class ShapelessRecipe implements Recipe, Keyed {
*/
public List<ItemStack> getIngredientList() {
ArrayList<ItemStack> result = new ArrayList<ItemStack>(ingredients.size());
- for (ItemStack ingredient : ingredients) {
+ for (RecipeChoice ingredient : ingredients) {
+ result.add(ingredient.getItemStack().clone());
+ }
+ return result;
+ }
+
+ public List<RecipeChoice> getChoiceList() {
+ List<RecipeChoice> result = new ArrayList<>(ingredients.size());
+ for (RecipeChoice ingredient : ingredients) {
result.add(ingredient.clone());
}
return result;