diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index d6e577cf9..d758104a0 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -521,14 +521,25 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR ((ItemStorageExternal) storage).updateCacheForcefully(); } - if (remainder == null) { + if (remainder == null || remainder.stackSize < 0) { break; } else { size = remainder.stackSize; } } - int inserted = remainder != null ? (orginalSize - remainder.stackSize) : orginalSize; + //If the stack size of the remainder is negative, it means of the original size abs(remainder.stackSize) items have been voided + int inserted; + if(remainder == null) { + inserted = orginalSize; + } + else if(remainder.stackSize < 0) { + inserted = orginalSize + remainder.stackSize; + remainder = null; + } + else { + inserted = orginalSize - remainder.stackSize; + } if (!simulate && inserted > 0) { itemStorage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false); diff --git a/src/main/java/refinedstorage/tile/TileStorage.java b/src/main/java/refinedstorage/tile/TileStorage.java index 77cd18ae4..9d63c849b 100755 --- a/src/main/java/refinedstorage/tile/TileStorage.java +++ b/src/main/java/refinedstorage/tile/TileStorage.java @@ -53,9 +53,9 @@ public class TileStorage extends TileNode implements IItemStorageProvider, IStor ItemStack result = super.insertItem(stack, size, simulate); - if(voidExcess) { + if(voidExcess && result != null) { //Simulate should not matter as the items are voided anyway - return null; + result.stackSize = -result.stackSize; } return result;