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:
raoulvdberge
2017-06-23 21:53:38 +02:00
parent d103f30aca
commit 878c047193
3 changed files with 15 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -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() {

View File

@@ -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);