diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java index fe4cceecd..fbd2015d9 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java @@ -204,10 +204,14 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { return exportItems; } - public IItemHandler getItems() { + public IItemHandler getItemsOrNetworkItems() { return (itemsNetwork != null && exportSpecimenItems.isEmpty()) ? itemsNetwork : items; } + public IItemHandler getItems() { + return items; + } + public IItemHandler getUpgrades() { return upgrades; } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/StorageItemItemHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/StorageItemItemHandler.java index 4a8124a02..cf4756e7d 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/StorageItemItemHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/StorageItemItemHandler.java @@ -6,6 +6,7 @@ import com.raoulvdberge.refinedstorage.apiimpl.API; import com.raoulvdberge.refinedstorage.tile.TileInterface; import com.raoulvdberge.refinedstorage.tile.config.IFilterable; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.ItemHandlerHelper; @@ -24,7 +25,14 @@ public class StorageItemItemHandler extends StorageItemExternal { public StorageItemItemHandler(NetworkNodeExternalStorage externalStorage, Supplier handlerSupplier) { this.externalStorage = externalStorage; this.handlerSupplier = handlerSupplier; - this.connectedToInterface = externalStorage.getFacingTile() instanceof TileInterface; + + TileEntity tile = externalStorage.getFacingTile(); + + if (tile instanceof TileInterface) { + // Make sure we override our handler supplier so we don't get network items as well (which leads to unstable behavior) + this.handlerSupplier = ((TileInterface) tile).getNode()::getItems; + this.connectedToInterface = true; + } } public boolean isConnectedToInterface() { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java index 46b1e1318..bbe5fef8a 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/tile/TileInterface.java @@ -22,7 +22,7 @@ public class TileInterface extends TileNode { @Override public T getCapability(@Nonnull Capability capability, @Nullable EnumFacing facing) { if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { - return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getItems()); + return CapabilityItemHandler.ITEM_HANDLER_CAPABILITY.cast(getNode().getItemsOrNetworkItems()); } return super.getCapability(capability, facing);