diff --git a/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java b/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java index c84f2dfb1..df0169331 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/DrawerStorage.java @@ -31,28 +31,8 @@ public class DrawerStorage extends ExternalStorage { @Override public ItemStack push(ItemStack stack, boolean simulate) { if (ModeFilter.respectsMode(externalStorage.getFilters(), externalStorage, externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) { - if (drawer.isEmpty()) { - if (getStored() + stack.stackSize > getCapacity()) { - int remainingSpace = getCapacity() - getStored(); - - if (remainingSpace <= 0) { - return stack; - } - - if (!simulate) { - drawer.setStoredItem(stack, remainingSpace); - } - - return ItemHandlerHelper.copyStackWithSize(stack, stack.stackSize - remainingSpace); - } else { - if (!simulate) { - drawer.setStoredItem(stack, stack.stackSize); - } - - return null; - } - } else { - if (getStored() + stack.stackSize > getCapacity()) { + if (!drawer.isEmpty()) { + if (getStored() + stack.stackSize > drawer.getMaxCapacity(stack)) { int remainingSpace = getCapacity() - getStored(); if (remainingSpace <= 0) { @@ -69,6 +49,26 @@ public class DrawerStorage extends ExternalStorage { drawer.setStoredItemCount(drawer.getStoredItemCount() + stack.stackSize); } + return null; + } + } else { + if (getStored() + stack.stackSize > drawer.getMaxCapacity(stack)) { + int remainingSpace = getCapacity() - getStored(); + + if (remainingSpace <= 0) { + return stack; + } + + if (!simulate) { + drawer.setStoredItem(stack, remainingSpace); + } + + return ItemHandlerHelper.copyStackWithSize(stack, stack.stackSize - remainingSpace); + } else { + if (!simulate) { + drawer.setStoredItem(stack, stack.stackSize); + } + return null; } }