diff --git a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java index cf173150f..a31a78e01 100755 --- a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java +++ b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java @@ -19,9 +19,10 @@ public interface IGroupedStorage { /** * Adds an item to the network. Will merge it with another item if it already exists. * - * @param stack The stack to add, do NOT modify + * @param stack The stack to add, do NOT modify + * @param rebuilding Whether this method is called while the storage is rebuilding */ - void add(ItemStack stack); + void add(ItemStack stack, boolean rebuilding); /** * Removes a item from the network. diff --git a/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java b/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java index 4ebba6e50..6a93326f6 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java +++ b/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java @@ -39,7 +39,7 @@ public class GroupedStorage implements IGroupedStorage { for (IStorage storage : storages) { for (ItemStack stack : storage.getItems()) { - add(stack); + add(stack, true); } } @@ -47,7 +47,7 @@ public class GroupedStorage implements IGroupedStorage { for (ItemStack output : pattern.getOutputs()) { ItemStack patternStack = output.copy(); patternStack.stackSize = 0; - add(patternStack); + add(patternStack, true); } } @@ -55,12 +55,14 @@ public class GroupedStorage implements IGroupedStorage { } @Override - public void add(ItemStack stack) { + public void add(ItemStack stack, boolean rebuilding) { for (ItemStack otherStack : stacks.get(stack.getItem())) { if (RefinedStorageUtils.compareStackNoQuantity(otherStack, stack)) { otherStack.stackSize += stack.stackSize; - network.sendStorageDeltaToClient(stack, stack.stackSize); + if (!rebuilding) { + network.sendStorageDeltaToClient(stack, stack.stackSize); + } return; } @@ -68,7 +70,9 @@ public class GroupedStorage implements IGroupedStorage { stacks.put(stack.getItem(), stack.copy()); - network.sendStorageDeltaToClient(stack, stack.stackSize); + if (!rebuilding) { + network.sendStorageDeltaToClient(stack, stack.stackSize); + } } @Override diff --git a/src/main/java/refinedstorage/tile/controller/TileController.java b/src/main/java/refinedstorage/tile/controller/TileController.java index e81337459..5b25f58f3 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -516,7 +516,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR } } - storage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted)); + storage.add(ItemHandlerHelper.copyStackWithSize(stack, inserted), false); } return remainder; diff --git a/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java index 1c14f3428..19f7832c5 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/ExternalStorage.java @@ -4,18 +4,19 @@ import net.minecraft.item.ItemStack; import refinedstorage.RefinedStorageUtils; import refinedstorage.api.storage.IStorage; -import java.util.ArrayList; import java.util.List; public abstract class ExternalStorage implements IStorage { - private List cache = new ArrayList(); + private List cache; public abstract int getCapacity(); public boolean updateCache() { List items = getItems(); - if (items.size() != cache.size()) { + if (cache == null) { + cache = items; + } else if (items.size() != cache.size()) { cache = items; return true; diff --git a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java index d9cf2d2d8..d22304d3d 100755 --- a/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java +++ b/src/main/java/refinedstorage/tile/externalstorage/TileExternalStorage.java @@ -74,8 +74,6 @@ public class TileExternalStorage extends TileNode implements IStorageProvider, I } if (shouldRebuild) { - System.out.println("Rebuilding ext storage"); - network.getStorage().rebuild(); } }