From a127a265e2fa1d6a9cc67d1654689fb269794377 Mon Sep 17 00:00:00 2001 From: Geldorn Date: Thu, 6 Oct 2016 22:17:48 +0200 Subject: [PATCH] Fixed the problem with the storage system item count increasing when voiding stuff. --- .../java/refinedstorage/tile/TileController.java | 15 +++++++++++++-- .../java/refinedstorage/tile/TileStorage.java | 4 ++-- 2 files changed, 15 insertions(+), 4 deletions(-) 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;