Handle insert-only storages a bit better upon insertion

This commit is contained in:
Raoul Van den Berge
2016-11-10 22:09:57 +01:00
parent b0b402e125
commit 4812ce9d18

View File

@@ -561,15 +561,18 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
} }
int orginalSize = size; int orginalSize = size;
AccessType accessType = AccessType.INSERT_EXTRACT;
ItemStack remainder = stack; ItemStack remainder = stack;
int externalStorageInserted = 0; int externalStorageInserted = 0;
int insertOnlyInserted = 0;
for (IItemStorage storage : this.itemStorage.getStorages()) { for (IItemStorage storage : this.itemStorage.getStorages()) {
accessType = storage.getAccessType(); if (storage.getAccessType() != AccessType.EXTRACT) {
if (accessType != AccessType.EXTRACT) {
remainder = storage.insertItem(remainder, size, simulate); remainder = storage.insertItem(remainder, size, simulate);
// if this storage is in insert-only mode, we can disregard this item from the cache
if (storage.getAccessType() == AccessType.INSERT && !simulate) {
insertOnlyInserted += size - (remainder != null ? remainder.stackSize : 0);
}
} }
if (remainder == null || remainder.stackSize <= 0) { if (remainder == null || remainder.stackSize <= 0) {
@@ -603,13 +606,13 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
inserted = orginalSize - remainder.stackSize; inserted = orginalSize - remainder.stackSize;
} }
if (!simulate && accessType != AccessType.INSERT) { if (!simulate) {
if (inserted - externalStorageInserted > 0) { if (inserted - externalStorageInserted - insertOnlyInserted > 0) {
itemStorage.add(stack, inserted - externalStorageInserted, false); itemStorage.add(stack, inserted - externalStorageInserted - insertOnlyInserted, false);
} }
if (inserted > 0) { if (inserted - insertOnlyInserted > 0) {
ItemStack checkSteps = ItemHandlerHelper.copyStackWithSize(stack, inserted); ItemStack checkSteps = ItemHandlerHelper.copyStackWithSize(stack, inserted - insertOnlyInserted);
for (ICraftingTask task : craftingTasks) { for (ICraftingTask task : craftingTasks) {
for (ICraftingStep processable : task.getSteps()) { for (ICraftingStep processable : task.getSteps()) {