From 73f3d14a20b82922424782941b9516c761f4d318 Mon Sep 17 00:00:00 2001 From: InusualZ Date: Wed, 12 Oct 2016 08:15:47 -0400 Subject: [PATCH] Fixed Disk Manipulator blocking items transferring in some cases (#458) * Fixed Disk Manipulator blocking items transferring in some cases * One item per iteration --- .../tile/TileDiskManipulator.java | 35 +++++++++---------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/main/java/refinedstorage/tile/TileDiskManipulator.java b/src/main/java/refinedstorage/tile/TileDiskManipulator.java index 67f31f630..5a9a0e66d 100755 --- a/src/main/java/refinedstorage/tile/TileDiskManipulator.java +++ b/src/main/java/refinedstorage/tile/TileDiskManipulator.java @@ -1,5 +1,6 @@ package refinedstorage.tile; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.datasync.DataSerializers; @@ -218,30 +219,28 @@ public class TileDiskManipulator extends TileNode implements IComparable, IFilte return; } - ItemStack extracted = null; - int i = 0; - - do { - ItemStack stack = null; - - while (storage.getItems().size() > i && stack == null) { - stack = storage.getItems().get(i++); + for (int i = 0; i < storage.getItems().size(); i++) { + ItemStack stack = storage.getItems().get(i); + if (stack == null) { + continue; } - if (stack != null) { - extracted = storage.extractItem(stack, upgrades.getInteractStackSize(), compare); + ItemStack extracted = storage.extractItem(stack, upgrades.getInteractStackSize(), compare); + if (extracted == null) { + continue; } - } while (storage.getItems().size() > i && extracted == null); - if (extracted == null) { - moveDriveToOutput(slot); - return; + ItemStack remainder = network.insertItem(extracted, extracted.stackSize, false); + if (remainder == null) { + break; + } + + // We need to check if the stack was inserted + storage.insertItem(((extracted == remainder) ? remainder.copy() : remainder), remainder.stackSize, false); } - ItemStack remainder = network.insertItem(extracted, extracted.stackSize, false); - - if (remainder != null) { - storage.insertItem(remainder, remainder.stackSize, false); + if (storage.getItems().size() == 0) { + moveDriveToOutput(slot); } }