From 949af208cb0eede74b95e3d54e3168b87211a4dc Mon Sep 17 00:00:00 2001 From: Raoul Van den Berge Date: Sat, 2 Jul 2016 20:51:57 +0200 Subject: [PATCH] Fixes --- .../api/storage/IGroupedStorage.java | 5 -- .../apiimpl/storage/GroupedStorage.java | 10 --- .../tile/controller/TileController.java | 72 +++++++++---------- 3 files changed, 34 insertions(+), 53 deletions(-) diff --git a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java index 2eec3c3de..958eb1792 100755 --- a/src/main/java/refinedstorage/api/storage/IGroupedStorage.java +++ b/src/main/java/refinedstorage/api/storage/IGroupedStorage.java @@ -16,11 +16,6 @@ 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 ee69e74d4..a4fc48678 100755 --- a/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java +++ b/src/main/java/refinedstorage/apiimpl/storage/GroupedStorage.java @@ -20,7 +20,6 @@ public class GroupedStorage implements IGroupedStorage { private INetworkMaster network; private List storages = new ArrayList(); private Multimap stacks = ArrayListMultimap.create(); - private boolean rebuilding; public GroupedStorage(INetworkMaster network) { this.network = network; @@ -28,8 +27,6 @@ public class GroupedStorage implements IGroupedStorage { @Override public void rebuild() { - this.rebuilding = true; - storages.clear(); for (INetworkSlave slave : network.getSlaves()) { @@ -54,16 +51,9 @@ 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 8acc78e76..8392d090e 100755 --- a/src/main/java/refinedstorage/tile/controller/TileController.java +++ b/src/main/java/refinedstorage/tile/controller/TileController.java @@ -56,9 +56,33 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR private GridHandler gridHandler = new GridHandler(this); private WirelessGridHandler wirelessGridHandler = new WirelessGridHandler(this); - private List storages = new ArrayList(); private IGroupedStorage storage = new GroupedStorage(this); + private Comparator sizeComparator = new Comparator() { + @Override + public int compare(IStorage left, IStorage right) { + int leftStored = left.getStored(); + int rightStored = right.getStored(); + + if (leftStored == rightStored) { + return 0; + } + + return (leftStored > rightStored) ? -1 : 1; + } + }; + + private Comparator priorityComparator = new Comparator() { + @Override + public int compare(IStorage left, IStorage right) { + if (left.getPriority() == right.getPriority()) { + return 0; + } + + return (left.getPriority() > right.getPriority()) ? -1 : 1; + } + }; + private List slaves = new ArrayList(); private List slavesToAdd = new ArrayList(); private List slavesToRemove = new ArrayList(); @@ -123,32 +147,8 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR slavesToRemove.clear(); if (canRun()) { - if (ticks % 20 == 0) { - Collections.sort(storages, new Comparator() { - @Override - public int compare(IStorage left, IStorage right) { - int leftStored = left.getStored(); - int rightStored = right.getStored(); - - if (leftStored == rightStored) { - return 0; - } - - return (leftStored > rightStored) ? -1 : 1; - } - }); - - Collections.sort(storages, new Comparator() { - @Override - public int compare(IStorage left, IStorage right) { - if (left.getPriority() == right.getPriority()) { - return 0; - } - - return (left.getPriority() > right.getPriority()) ? -1 : 1; - } - }); - } + Collections.sort(storage.getStorages(), sizeComparator); + Collections.sort(storage.getStorages(), priorityComparator); for (ICraftingTask taskToCancel : craftingTasksToCancel) { taskToCancel.onCancelled(this); @@ -380,20 +380,16 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public void sendStorageToClient() { - if (!storage.isRebuilding()) { - for (EntityPlayer player : worldObj.playerEntities) { - if (isWatchingGrid(player)) { - sendStorageToClient((EntityPlayerMP) player); - } + for (EntityPlayer player : worldObj.playerEntities) { + if (isWatchingGrid(player)) { + sendStorageToClient((EntityPlayerMP) player); } } } @Override public void sendStorageToClient(EntityPlayerMP player) { - if (!storage.isRebuilding()) { - RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); - } + RefinedStorage.NETWORK.sendTo(new MessageGridItems(this), player); } private boolean isWatchingGrid(EntityPlayer player) { @@ -402,7 +398,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR @Override public ItemStack push(ItemStack stack, int size, boolean simulate) { - if (stack == null || stack.getItem() == null || storages.isEmpty()) { + if (stack == null || stack.getItem() == null || storage.getStorages().isEmpty()) { return ItemHandlerHelper.copyStackWithSize(stack, size); } @@ -410,7 +406,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR ItemStack remainder = stack; - for (IStorage storage : storages) { + for (IStorage storage : this.storage.getStorages()) { remainder = storage.push(remainder, size, simulate); if (remainder == null) { @@ -446,7 +442,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR ItemStack newStack = null; - for (IStorage storage : storages) { + for (IStorage storage : this.storage.getStorages()) { ItemStack took = storage.take(stack, requested - received, flags); if (took != null) {