From d1fee9e766260e74e8e5dfe033b49fceb713a469 Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 9 Jun 2016 22:16:04 +0200 Subject: [PATCH] Interface fixes, still buggy when no storage is connected --- .../refinedstorage/tile/TileInterface.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 39bd59ac9..72176f679 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -61,7 +61,38 @@ public class TileInterface extends TileMachine implements ICompareConfig { } } - // @todo: export stuff + for (int i = 0; i < 9; ++i) { + ItemStack wanted = exportSpecimenItems.getStackInSlot(i); + ItemStack got = exportItems.getStackInSlot(i); + + if (wanted == null) { + if (got != null) { + exportItems.setStackInSlot(i, controller.push(got, got.stackSize, false)); + } + } else { + int delta = got == null ? wanted.stackSize : (wanted.stackSize - got.stackSize); + + if (delta > 0) { + ItemStack result = controller.take(wanted, delta, compare); + + if (result != null) { + if (got == null) { + exportItems.setStackInSlot(i, result); + } else { + exportItems.getStackInSlot(i).stackSize += result.stackSize; + } + } + } else if (delta < 0) { + ItemStack remainder = controller.push(got, Math.abs(delta), false); + + if (remainder == null) { + exportItems.extractItem(i, Math.abs(delta), false); + } else { + exportItems.extractItem(i, Math.abs(delta) - remainder.stackSize, false); + } + } + } + } } @Override