From abf4d7d8868360143c4866f4f8afcfd4eefc94ec Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Thu, 28 Jul 2016 15:44:22 +0200 Subject: [PATCH] Fixed interface having weird extraction / insertion rules, fixes #224 --- CHANGELOG.md | 1 + .../inventory/InterfaceItemHandler.java | 24 +++++++++++++++++++ .../refinedstorage/tile/TileInterface.java | 8 +++---- 3 files changed, 28 insertions(+), 5 deletions(-) create mode 100755 src/main/java/refinedstorage/inventory/InterfaceItemHandler.java diff --git a/CHANGELOG.md b/CHANGELOG.md index 13308ff91..287d92024 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ - Fixed rendering crash with Disk Drive - Fixed crash when quickly toggling sorting direction in Grid - Fixed not being able to clear exporter row in interface +- Fixed interface having weird extraction / insertion rules. It can now take items from any side, or extract items from any side depending on the block that is inserting or extracting the item (like conduits). ### 0.8.12 **Bugfixes** diff --git a/src/main/java/refinedstorage/inventory/InterfaceItemHandler.java b/src/main/java/refinedstorage/inventory/InterfaceItemHandler.java new file mode 100755 index 000000000..1ba94747e --- /dev/null +++ b/src/main/java/refinedstorage/inventory/InterfaceItemHandler.java @@ -0,0 +1,24 @@ +package refinedstorage.inventory; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.items.ItemStackHandler; + +public class InterfaceItemHandler extends ItemStackHandler { + private BasicItemHandler importItems; + private BasicItemHandler exportItems; + + public InterfaceItemHandler(BasicItemHandler importItems, BasicItemHandler exportItems) { + this.importItems = importItems; + this.exportItems = exportItems; + } + + @Override + public ItemStack insertItem(int slot, ItemStack stack, boolean simulate) { + return importItems.insertItem(slot, stack, simulate); + } + + @Override + public ItemStack extractItem(int slot, int amount, boolean simulate) { + return exportItems.extractItem(slot, amount, simulate); + } +} diff --git a/src/main/java/refinedstorage/tile/TileInterface.java b/src/main/java/refinedstorage/tile/TileInterface.java index 45e35e994..43a64897c 100755 --- a/src/main/java/refinedstorage/tile/TileInterface.java +++ b/src/main/java/refinedstorage/tile/TileInterface.java @@ -12,6 +12,7 @@ import net.minecraftforge.items.wrapper.CombinedInvWrapper; import refinedstorage.RefinedStorage; import refinedstorage.container.ContainerInterface; import refinedstorage.inventory.BasicItemHandler; +import refinedstorage.inventory.InterfaceItemHandler; import refinedstorage.inventory.UpgradeItemHandler; import refinedstorage.item.ItemUpgrade; import refinedstorage.tile.config.ICompareConfig; @@ -22,6 +23,7 @@ public class TileInterface extends TileNode implements ICompareConfig { private BasicItemHandler importItems = new BasicItemHandler(9, this); private BasicItemHandler exportSpecimenItems = new BasicItemHandler(9, this); private BasicItemHandler exportItems = new BasicItemHandler(9, this); + private InterfaceItemHandler itemHandler = new InterfaceItemHandler(importItems, exportItems); private UpgradeItemHandler upgrades = new UpgradeItemHandler(4, this, ItemUpgrade.TYPE_SPEED, ItemUpgrade.TYPE_STACK); private int compare = 0; @@ -173,11 +175,7 @@ public class TileInterface extends TileNode implements ICompareConfig { @Override public T getCapability(Capability capability, EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - if (facing == EnumFacing.DOWN) { - return (T) exportItems; - } else { - return (T) importItems; - } + return (T) itemHandler; } return super.getCapability(capability, facing);