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;
|
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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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() {
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user