From 6ef5c718f7d40992db47815c76871509ccd7e2cd Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Fri, 23 Jan 2015 17:17:47 +0000 Subject: [PATCH] The Assembly Halo will not attempt to consume items case the Container Item is the same as the stack passed in. Closes #488 --- .../botania/common/item/ItemCraftingHalo.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/src/main/java/vazkii/botania/common/item/ItemCraftingHalo.java b/src/main/java/vazkii/botania/common/item/ItemCraftingHalo.java index 41817c75f..0daba77f5 100644 --- a/src/main/java/vazkii/botania/common/item/ItemCraftingHalo.java +++ b/src/main/java/vazkii/botania/common/item/ItemCraftingHalo.java @@ -174,16 +174,25 @@ public class ItemCraftingHalo extends ItemMod { for(int i = 0; i < inv.getSizeInventory(); i++) { ItemStack stackAt = inv.getStackInSlot(i); if(stackAt != null && stack.isItemEqual(stackAt) && ItemStack.areItemStackTagsEqual(stack, stackAt)) { - stackAt.stackSize--; - if(stackAt.stackSize == 0) - inv.setInventorySlotContents(i, null); + boolean consume = true; + ItemStack container = stackAt.getItem().getContainerItem(stackAt); if(container != null) { + if(container == stackAt) + consume = false; + else { InventoryHelper.insertItemIntoInventory(inv, container); if(container.stackSize != 0 && player != null) player.dropPlayerItemWithRandomChoice(container, false); + } } + if(consume) { + stackAt.stackSize--; + if(stackAt.stackSize == 0) + inv.setInventorySlotContents(i, null); + } + return true; } }