diff --git a/CHANGELOG.md b/CHANGELOG.md index c8ecd4559..a8bf34683 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ ### 1.4.11 - Removed debug log configuration option, as it's no longer needed (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 - Improved performance of network scanning (raoulvdberge) diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java index be3fee5a8..1b778e6cc 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/grid/ItemGridHandler.java @@ -78,14 +78,16 @@ public class ItemGridHandler implements IItemGridHandler { if (ItemHandlerHelper.insertItem(playerInventory, took, true).isEmpty()) { 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 { took = network.extractItem(item, size, false); if (single && !held.isEmpty()) { 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); } diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java index 5da16992c..ee2cafa19 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/NetworkNodeInterface.java @@ -96,7 +96,13 @@ public class NetworkNodeInterface extends NetworkNode implements IComparable { } else { 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); } } else if (delta < 0) { diff --git a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java index 9ab533b37..67b91ab26 100755 --- a/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java +++ b/src/main/java/com/raoulvdberge/refinedstorage/apiimpl/network/node/externalstorage/NetworkNodeExternalStorage.java @@ -16,7 +16,6 @@ import com.raoulvdberge.refinedstorage.inventory.ItemHandlerBase; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerFluid; import com.raoulvdberge.refinedstorage.inventory.ItemHandlerListenerNetworkNode; import com.raoulvdberge.refinedstorage.tile.TileExternalStorage; -import com.raoulvdberge.refinedstorage.tile.TileNode; import com.raoulvdberge.refinedstorage.tile.config.*; import com.raoulvdberge.refinedstorage.tile.data.TileDataParameter; import net.minecraft.item.ItemStack; @@ -66,9 +65,6 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP super.onConnectedStateChange(network, state); updateStorage(network); - - network.getItemStorageCache().invalidate(); - network.getFluidStorageCache().invalidate(); } @Override @@ -210,7 +206,7 @@ public class NetworkNodeExternalStorage extends NetworkNode implements IStorageP })); } else if (IntegrationCyclopsCore.isLoaded() && StorageItemCyclops.isValid(facing, getDirection().getOpposite())) { itemStorages.add(new StorageItemCyclops(this)); - } else if (!(facing instanceof TileNode)) { + } else if (facing != null) { IItemHandler itemHandler = RSUtils.getItemHandler(facing, getDirection().getOpposite()); if (itemHandler != null) {