diff --git a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java index 5fedca9c1..024dfe1fd 100755 --- a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java +++ b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java @@ -15,6 +15,11 @@ public interface IGroupedStorage { */ void rebuild(); + /** + * @return If this storage is currently rebuilding + */ + boolean isRebuilding(); + /** * Adds an item to the network. Will merge it with another item if it already exists. * diff --git a/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java b/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java index 9a705ed5d..5a5ccacb5 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java +++ b/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java @@ -15,6 +15,7 @@ import java.util.Collection; public class GroupedStorage implements IGroupedStorage { private INetworkMaster network; private Multimap stacks = ArrayListMultimap.create(); + private boolean rebuilding; public GroupedStorage(INetworkMaster network) { this.network = network; @@ -22,6 +23,8 @@ public class GroupedStorage implements IGroupedStorage { @Override public void rebuild() { + this.rebuilding = true; + stacks.clear(); for (IStorage storage : network.getStorages()) { @@ -38,9 +41,16 @@ public class GroupedStorage implements IGroupedStorage { } } + this.rebuilding = false; + network.sendStorageToClient(); } + @Override + public boolean isRebuilding() { + return rebuilding; + } + @Override public void add(ItemStack stack) { for (ItemStack otherStack : stacks.get(stack.getItem())) { diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index a35c00f0f..9cfc1c5d4 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -410,16 +410,20 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public void sendStorageToClient() { - for (EntityPlayer player : worldObj.playerEntities) { - if (isWatchingGrid(player)) { - sendStorageToClient((EntityPlayerMP) player); + if (!storage.isRebuilding()) { + for (EntityPlayer player : worldObj.playerEntities) { + if (isWatchingGrid(player)) { + sendStorageToClient((EntityPlayerMP) player); + } } } } @Override public void sendStorageToClient(EntityPlayerMP player) { - RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); + if (!storage.isRebuilding()) { + RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); + } } private boolean isWatchingGrid(EntityPlayer player) {