diff --git a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java index fbc9f7abf..23a698873 100644 --- a/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java +++ b/src/main/java/appeng/parts/misc/ItemHandlerAdapter.java @@ -122,6 +122,15 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor remainingCurrentSlot) { // Something broke. It should never return more than we requested... // We're going to silently eat the remainder @@ -131,19 +140,28 @@ class ItemHandlerAdapter implements IMEInventory, IBaseMonitor extracted.getMaxStackSize()) { + extracted.setCount(remainingCurrentSlot); + } + // We're just gonna use the first stack we get our hands on as the template for // the rest. - // In case some stupid itemhandler (aka forge) returns an internal state we have - // to do a second - // expensive copy again. if (gathered.isEmpty()) { - gathered = extracted.copy(); + gathered = extracted; } else { gathered.grow(extracted.getCount()); } remainingCurrentSlot -= extracted.getCount(); } - } while (!extracted.isEmpty() && remainingCurrentSlot > 0); + } while (!simulate && !extracted.isEmpty() && remainingCurrentSlot > 0); remainingSize -= stackSizeCurrentSlot - remainingCurrentSlot;