Don't allow external storage on storage providers. Interfaces are still allowed obviously

This commit is contained in:
raoulvdberge
2017-06-05 14:11:20 +02:00
parent b18b37a1d3
commit b4e7cf9052
2 changed files with 4 additions and 5 deletions

View File

@@ -78,16 +78,14 @@ public class ItemGridHandler implements IItemGridHandler {
if (ItemHandlerHelper.insertItem(playerInventory, took, true).isEmpty()) { if (ItemHandlerHelper.insertItem(playerInventory, took, true).isEmpty()) {
took = network.extractItem(item, size, false); took = network.extractItem(item, size, false);
if (took != null) { // Safe guard: we never know if the extracted item will suddenly be null (can happen with weird external storage setups) ItemHandlerHelper.insertItem(playerInventory, took, false);
ItemHandlerHelper.insertItem(playerInventory, took, false);
}
} }
} else { } else {
took = network.extractItem(item, size, false); took = network.extractItem(item, size, false);
if (single && !held.isEmpty()) { if (single && !held.isEmpty()) {
held.grow(1); held.grow(1);
} else if (took != null) { // Safe guard: we never know if the extracted item will suddenly be null (can happen with weird external storage setups) } else {
player.inventory.setItemStack(took); player.inventory.setItemStack(took);
} }

View File

@@ -15,6 +15,7 @@ import com.raoulvdberge.refinedstorage.integration.cyclopscore.IntegrationCyclop
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid;
import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode;
import com.raoulvdberge.refinedstorage.proxy.CapabilityNetworkNodeProxy;
import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.config.*;
import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter;
@@ -206,7 +207,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
})); }));
} else if (IntegrationCyclopsCore.isLoaded() && StorageItemCyclops.isValid(facing, getDirection().getOpposite())) { } else if (IntegrationCyclopsCore.isLoaded() && StorageItemCyclops.isValid(facing, getDirection().getOpposite())) {
itemStorages.add(new StorageItemCyclops(this)); itemStorages.add(new StorageItemCyclops(this));
} else if (facing != null) { } else if (facing != null && !(facing.hasCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, getDirection().getOpposite()) && facing.getCapability(CapabilityNetworkNodeProxy.NETWORK_NODE_PROXY_CAPABILITY, getDirection().getOpposite()).getNode() instanceof IStorageProvider)) {
IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite()); IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite());
if (itemHandler != null) { if (itemHandler != null) {