From 3e0cf7c302005ddae700cf71ce695fc3b902c2bd Mon Sep 17 00:00:00 2001 From: mezz Date: Fri, 16 Oct 2015 14:35:31 -0700 Subject: [PATCH] Fix #892 Forestry Workbench destroys TFC Tools in Crafts. --- .../forestry/factory/tiles/TileWorktable.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/forestry/factory/tiles/TileWorktable.java b/src/main/java/forestry/factory/tiles/TileWorktable.java index 89bb47552..423aeaafb 100644 --- a/src/main/java/forestry/factory/tiles/TileWorktable.java +++ b/src/main/java/forestry/factory/tiles/TileWorktable.java @@ -31,6 +31,7 @@ import forestry.core.network.GuiId; import forestry.core.recipes.RecipeUtil; import forestry.core.tiles.TileBase; import forestry.core.utils.InventoryUtil; +import forestry.core.utils.ItemStackUtil; import forestry.core.utils.SlotUtil; import forestry.factory.recipes.RecipeMemory; @@ -194,11 +195,20 @@ public class TileWorktable extends TileBase implements ICrafterWorktable { continue; } - if (!itemStack.getItem().hasContainerItem(itemStack)) { - continue; + ItemStack container = null; + + if (itemStack.getItem().hasContainerItem(itemStack)) { + container = itemStack.getItem().getContainerItem(itemStack); + } else if (itemStack.stackSize > 1) { + // TerraFirmaCraft's crafting event handler does some tricky stuff with its tools. + // It sets the tool's stack size to 2 instead of using a container. + container = ItemStackUtil.createSplitStack(itemStack, itemStack.stackSize - 1); + itemStack.stackSize = 1; } - ItemStack container = itemStack.getItem().getContainerItem(itemStack); + if (container == null) { + continue; + } if (container != null && container.isItemStackDamageable() && container.getItemDamage() > container.getMaxDamage()) { MinecraftForge.EVENT_BUS.post(new PlayerDestroyItemEvent(player, container));