Fix for void upgraded storage drawers using the previous developed void handling. (#454)

* Fixed void storage drawers and simplified storage drawer handling code.

* Coding style correction.
This commit is contained in:
geldorn
2016-10-11 20:00:14 +02:00
committed by Raoul
parent cd3bd045c3
commit 5759d9276d

View File

@@ -41,47 +41,30 @@ public class ItemStorageDrawer extends ItemStorageExternal {
@Override @Override
public ItemStack insertItem(ItemStack stack, int size, boolean simulate) { public ItemStack insertItem(ItemStack stack, int size, boolean simulate) {
if (IFilterable.canTake(externalStorage.getItemFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) { if (IFilterable.canTake(externalStorage.getItemFilters(), externalStorage.getMode(), externalStorage.getCompare(), stack) && drawer.canItemBeStored(stack)) {
if (!drawer.isEmpty()) { int stored = drawer.getStoredItemCount();
if (getStored() + size > drawer.getMaxCapacity(stack)) { int remainingSpace = drawer.getMaxCapacity(stack) - stored;
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) { int inserted = remainingSpace > size ? size : (remainingSpace <= 0) ? 0 : remainingSpace;
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size);
}
if (!simulate) { if (!simulate && remainingSpace > 0) {
drawer.setStoredItemCount(drawer.getStoredItemCount() + remainingSpace); if (drawer.isEmpty()) {
} drawer.setStoredItemRedir(stack, inserted);
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
} else { } else {
if (!simulate) { drawer.setStoredItemCount(stored + inserted);
drawer.setStoredItemCount(drawer.getStoredItemCount() + size); }
} }
if (inserted == size) {
return null; return null;
} }
} else {
if (getStored() + size > drawer.getMaxCapacity(stack)) {
int remainingSpace = getCapacity() - getStored();
if (remainingSpace <= 0) { int returnSize = size - inserted;
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size);
if (isVoidable()) {
returnSize = -returnSize;
} }
if (!simulate) { return ItemHandlerHelper.copyStackWithSize(stack, returnSize);
drawer.setStoredItemRedir(stack, remainingSpace);
}
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
} else {
if (!simulate) {
drawer.setStoredItemRedir(stack, size);
}
return null;
}
}
} }
return ItemHandlerHelper.copyStackWithSize(stack, size); return ItemHandlerHelper.copyStackWithSize(stack, size);