For external storage on interface: make sure we override our handler supplier so we don't get network items as well (which leads to unstable behavior)
This commit is contained in:
		@@ -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;
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
@@ -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<IItemHandler> 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() {
 | 
			
		||||
 
 | 
			
		||||
@@ -22,7 +22,7 @@ public class TileInterface extends TileNode<NetworkNodeInterface> {
 | 
			
		||||
    @Override
 | 
			
		||||
    public <T> T getCapability(@Nonnull Capability<T> 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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user