From 64e2b9c4fed6e7c422cbe6516f6f30d68e94463a Mon Sep 17 00:00:00 2001 From: Ellpeck Date: Sat, 17 Oct 2020 17:24:24 +0200 Subject: [PATCH] fixed non-stackable items not playing nice with the crafting terminal --- .../prettypipes/terminal/CraftingTerminalTileEntity.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/ellpeck/prettypipes/terminal/CraftingTerminalTileEntity.java b/src/main/java/de/ellpeck/prettypipes/terminal/CraftingTerminalTileEntity.java index 6227e3c..45a9e6b 100644 --- a/src/main/java/de/ellpeck/prettypipes/terminal/CraftingTerminalTileEntity.java +++ b/src/main/java/de/ellpeck/prettypipes/terminal/CraftingTerminalTileEntity.java @@ -166,7 +166,10 @@ public class CraftingTerminalTileEntity extends ItemTerminalTileEntity { for (int i = 0; i < tile.craftItems.getSlots(); i++) { ItemStack stack = tile.getRequestedCraftItem(i); int count = tile.isGhostItem(i) ? 0 : stack.getCount(); - if (!ItemHandlerHelper.canItemStacksStackRelaxed(stack, remain)) + if (!ItemHandlerHelper.canItemStacksStack(stack, remain)) + continue; + // ensure that a single non-stackable item can still enter a ghost slot + if (!stack.isStackable() && count >= 1) continue; if (lowestSlot < 0 || !tile.isGhostItem(lowestSlot) && count < tile.getRequestedCraftItem(lowestSlot).getCount()) lowestSlot = i; @@ -197,7 +200,8 @@ public class CraftingTerminalTileEntity extends ItemTerminalTileEntity { continue; MutableInt amount = requiredItems.computeIfAbsent(new EquatableItemStack(requested), s -> new MutableInt()); amount.add(requested.getCount()); - int fit = requested.getMaxStackSize() - (isGhost.test(i) ? 0 : requested.getCount()); + // if no items fit into the crafting input, we still want to pretend they do for requesting + int fit = Math.max(requested.getMaxStackSize() - (isGhost.test(i) ? 0 : requested.getCount()), 1); if (lowestAvailable > fit) lowestAvailable = fit; }