Paper/Spigot-API-Patches/0171-Add-ItemStack-Recipe-API-helper-methods.patch
Aikar 57dd397155
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
b999860d SPIGOT-2304: Add LootGenerateEvent

CraftBukkit Changes:
77fd87e4 SPIGOT-2304: Implement LootGenerateEvent
a1a705ee SPIGOT-5566: Doused campfires & fires should call EntityChangeBlockEvent
41712edd SPIGOT-5707: PersistentDataHolder not Persistent on API dropped Item
2020-05-01 18:03:57 -04:00

74 lines
2.4 KiB
Diff

From 6515b3feae9348d1e48113cc1c85ff1b04035465 Mon Sep 17 00:00:00 2001
From: Aikar <aikar@aikar.co>
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 d742c4058..222a12baa 100644
--- a/src/main/java/org/bukkit/inventory/ShapedRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapedRecipe.java
@@ -145,6 +145,13 @@ 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 84062dd71..ddcf84e66 100644
--- a/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
+++ b/src/main/java/org/bukkit/inventory/ShapelessRecipe.java
@@ -143,6 +143,40 @@ 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<RecipeChoice> 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.
*
--
2.26.2