diff --git a/src/main/java/refinedstorage/block/BlockExternalStorage.java b/src/main/java/refinedstorage/block/BlockExternalStorage.java index de31f54ce..eaa6f1309 100755 --- a/src/main/java/refinedstorage/block/BlockExternalStorage.java +++ b/src/main/java/refinedstorage/block/BlockExternalStorage.java @@ -37,7 +37,7 @@ public class BlockExternalStorage extends BlockSlave { super.neighborChanged(state, world, pos, block); if (!world.isRemote) { - ((TileExternalStorage) world.getTileEntity(pos)).refreshStorage(); + ((TileExternalStorage) world.getTileEntity(pos)).updateStorage(); } } diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index 481aaef53..972372794 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -40,6 +40,7 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider, private int capacity; private List storages = new ArrayList(); + private int lastDrawerCount; @Override public int getEnergyUsage() { @@ -50,6 +51,17 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider, public void updateSlave() { } + @Override + public void update() { + super.update(); + + if (getFacingTile() instanceof IDrawerGroup && lastDrawerCount != ((IDrawerGroup) getFacingTile()).getDrawerCount()) { + lastDrawerCount = ((IDrawerGroup) getFacingTile()).getDrawerCount(); + + updateStorage(); + } + } + @Override public void writeContainerData(ByteBuf buf) { super.writeContainerData(buf); @@ -144,8 +156,8 @@ public class TileExternalStorage extends TileSlave implements IStorageProvider, markDirty(); } - // Called when the neighbor block changes - public void refreshStorage() { + // Called when the neighbor block changes or when a drawer is added or removed to a drawer group + public void updateStorage() { storages.clear(); TileEntity facing = getFacingTile();