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; return exportItems;
} }
public IItemHandler getItems() { public IItemHandler getItemsOrNetworkItems() {
return (itemsNetwork != null && exportSpecimenItems.isEmpty()) ? itemsNetwork : items; return (itemsNetwork != null && exportSpecimenItems.isEmpty()) ? itemsNetwork : items;
} }
public IItemHandler getItems() {
return items;
}
public IItemHandler getUpgrades() { public IItemHandler getUpgrades() {
return upgrades; 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.TileInterface;
import com.raoulvdberge.refinedstorage.tile.config.IFilterable; import com.raoulvdberge.refinedstorage.tile.config.IFilterable;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.ItemHandlerHelper; import net.minecraftforge.items.ItemHandlerHelper;
@@ -24,7 +25,14 @@ public class StorageItemItemHandler extends StorageItemExternal {
public StorageItemItemHandler(NetworkNodeExternalStorage externalStorage, Supplier<IItemHandler> handlerSupplier) { public StorageItemItemHandler(NetworkNodeExternalStorage externalStorage, Supplier<IItemHandler> handlerSupplier) {
this.externalStorage = externalStorage; this.externalStorage = externalStorage;
this.handlerSupplier = handlerSupplier; 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() { public boolean isConnectedToInterface() {

View File

@@ -22,7 +22,7 @@ public class TileInterface extends TileNode<NetworkNodeInterface> {
@Override @Override
public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) { public <T> T getCapability(@Nonnull Capability<T> capability, @Nullable EnumFacing facing) {
if (capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY) { 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); return super.getCapability(capability, facing);