diff --git a/com/Acrobot/Breeze/Utils/InventoryUtil.java b/com/Acrobot/Breeze/Utils/InventoryUtil.java index 3bcf8ad..418e8b7 100644 --- a/com/Acrobot/Breeze/Utils/InventoryUtil.java +++ b/com/Acrobot/Breeze/Utils/InventoryUtil.java @@ -4,6 +4,8 @@ import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import java.util.HashMap; +import java.util.LinkedList; +import java.util.List; import java.util.Map; /** @@ -129,13 +131,41 @@ public class InventoryUtil { return countItems(leftovers); } + /** + * If items in arguments are similar, this function merges them into stacks of the same type + * + * @param items Items to merge + * @return Merged stack array + */ + public static ItemStack[] mergeSimilarStacks(ItemStack... items) { + List itemList = new LinkedList(); + + for (ItemStack item : items) { + boolean added = false; + + for (ItemStack iStack : itemList) { + if (MaterialUtil.equals(item, iStack)) { + iStack.setAmount(iStack.getAmount() + item.getAmount()); + added = true; + break; + } + } + + if (!added) { + itemList.add(item); + } + } + + return itemList.toArray(new ItemStack[itemList.size()]); + } + /** * Counts leftovers from a map * * @param items Leftovers * @return Number of leftovers */ - private static int countItems(Map items) { + public static int countItems(Map items) { int totalLeft = 0; for (int left : items.keySet()) {