From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: Aikar Date: Tue, 28 Jan 2014 19:13:57 -0500 Subject: [PATCH] Add ItemStack Recipe API helper methods Allows using ExactChoice Recipes with easier methodss diff --git a/src/main/java/org/bukkit/inventory/ShapedRecipe.java b/src/main/java/org/bukkit/inventory/ShapedRecipe.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java @@ -0,0 +0,0 @@ public class ShapedRecipe implements Recipe, Keyed { return this; } + // Paper start + @NotNull + public ShapedRecipe setIngredient(char key, @NotNull ItemStack item) { + return setIngredient(key, new RecipeChoice.ExactChoice(item)); + } + // Paper end + /** * Get a copy of the ingredients map. * diff --git a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java +++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java @@ -0,0 +0,0 @@ public class ShapelessRecipe implements Recipe, Keyed { return this; } + // Paper start + @NotNull + public ShapelessRecipe addIngredient(@NotNull ItemStack item) { + return addIngredient(1, item); + } + + @NotNull + public ShapelessRecipe addIngredient(int count, @NotNull ItemStack item) { + Validate.isTrue(ingredients.size() + count <= 9, "Shapeless recipes cannot have more than 9 ingredients"); + while (count-- > 0) { + ingredients.add(new RecipeChoice.ExactChoice(item)); + } + return this; + } + + @NotNull + public ShapelessRecipe removeIngredient(@NotNull ItemStack item) { + return removeIngredient(1, item); + } + + @NotNull + public ShapelessRecipe removeIngredient(int count, @NotNull ItemStack item) { + Iterator iterator = ingredients.iterator(); + while (count > 0 && iterator.hasNext()) { + ItemStack stack = iterator.next().getItemStack(); + if (stack.equals(item)) { + iterator.remove(); + count--; + } + } + return this; + } + // Paper end + /** * Removes an ingredient from the list. *