diff options
Diffstat (limited to 'src/main/java/org/bukkit/inventory/ShapelessRecipe.java')
-rw-r--r-- | src/main/java/org/bukkit/inventory/ShapelessRecipe.java | 38 |
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; |