Added support for External Storage on Interfaces and other Refined Storage blocks, so you can keep items in stock easier, fixes #1283

This commit is contained in:
raoulvdberge
2017-06-05 00:02:05 +02:00
parent f505a1084c
commit 9df8bbb431
4 changed files with 13 additions and 8 deletions

View File

@@ -3,6 +3,7 @@
### 1.4.11 ### 1.4.11
- Removed debug log configuration option, as it's no longer needed (raoulvdberge) - Removed debug log configuration option, as it's no longer needed (raoulvdberge)
- Fixed bug where storages that are removed remain visible (raoulvdberge) - Fixed bug where storages that are removed remain visible (raoulvdberge)
- Added support for External Storage on Interfaces and other Refined Storage blocks, so you can keep items in stock easier (raoulvdberge)
### 1.4.10 ### 1.4.10
- Improved performance of network scanning (raoulvdberge) - Improved performance of network scanning (raoulvdberge)

View File

@@ -78,14 +78,16 @@ 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);
ItemHandlerHelper.insertItem(playerInventory, took, 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);
}
} }
} 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 { } else if (took != null) { // Safe guard: we never know if the extracted item will suddenly be null (can happen with weird external storage setups)
player.inventory.setItemStack(took); player.inventory.setItemStack(took);
} }

View File

@@ -96,7 +96,13 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable {
} else { } else {
exportItems.getStackInSlot(i).grow(result.getCount()); exportItems.getStackInSlot(i).grow(result.getCount());
} }
} else if (upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) { }
// Example: our delta is 5, we extracted 3 items.
// That means we still have to autocraft 2 items.
delta -= result == null ? 0 : result.getCount();
if (delta > 0 && upgrades.hasUpgrade(ItemUpgrade.TYPE_CRAFTING)) {
network.getCraftingManager().schedule(wanted, delta, compare); network.getCraftingManager().schedule(wanted, delta, compare);
} }
} else if (delta < 0) { } else if (delta < 0) {

View File

@@ -16,7 +16,6 @@ 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.tile.TileExternalStorage; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage;
import com.raoulvdberge.refinedstorage.tile.TileNode;
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;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -66,9 +65,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP
super.onConnectedStateChange(network, state); super.onConnectedStateChange(network, state);
updateStorage(network); updateStorage(network);
network.getItemStorageCache().invalidate();
network.getFluidStorageCache().invalidate();
} }
@Override @Override
@@ -210,7 +206,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 instanceof TileNode)) { } else if (facing != null) {
IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite()); IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite());
if (itemHandler != null) { if (itemHandler != null) {