From 07035dde52e570242ca5987d44dfd0caa80b7950 Mon Sep 17 00:00:00 2001 From: "Alex \"mcmonkey\" Goodwin" Date: Sat, 5 Aug 2023 18:39:42 -0700 Subject: [PATCH] shapeless recipe counter: slightly more conservative check to avoid issues with duplicates see https://discord.com/channels/315163488085475337/1128643225507344405/1128643225507344405 for explanation --- .../denizen/utilities/inventory/RecipeHelper.java | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/plugin/src/main/java/com/denizenscript/denizen/utilities/inventory/RecipeHelper.java b/plugin/src/main/java/com/denizenscript/denizen/utilities/inventory/RecipeHelper.java index 591d72b6c0..2ebd653173 100644 --- a/plugin/src/main/java/com/denizenscript/denizen/utilities/inventory/RecipeHelper.java +++ b/plugin/src/main/java/com/denizenscript/denizen/utilities/inventory/RecipeHelper.java @@ -3,10 +3,7 @@ import org.bukkit.Material; import org.bukkit.inventory.*; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; -import java.util.Map; +import java.util.*; public class RecipeHelper { @@ -78,11 +75,13 @@ public static int getShapedQuantity(CraftingInventory inventory, ShapeHelper sha } public static boolean tryRemoveSingle(List items, List choices) { + HashSet used = new HashSet<>(); mainLoop: for (RecipeChoice choice : choices) { for (int i = 0; i < items.size(); i++) { ItemStack item = items.get(i); - if (choice.test(item)) { + if (choice.test(item) && !used.contains(i)) { + used.add(i); if (item.getAmount() == 1) { items.remove(i); }