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:
@@ -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);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (getStored() + size > drawer.getMaxCapacity(stack)) {
|
|
||||||
int remainingSpace = getCapacity() - getStored();
|
|
||||||
|
|
||||||
if (remainingSpace <= 0) {
|
|
||||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!simulate) {
|
|
||||||
drawer.setStoredItemRedir(stack, remainingSpace);
|
|
||||||
}
|
|
||||||
|
|
||||||
return isVoidable() ? null : ItemHandlerHelper.copyStackWithSize(stack, size - remainingSpace);
|
|
||||||
} else {
|
|
||||||
if (!simulate) {
|
|
||||||
drawer.setStoredItemRedir(stack, size);
|
|
||||||
}
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (inserted == size) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int returnSize = size - inserted;
|
||||||
|
|
||||||
|
if (isVoidable()) {
|
||||||
|
returnSize = -returnSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
return ItemHandlerHelper.copyStackWithSize(stack, returnSize);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||||
|
|||||||
Reference in New Issue
Block a user