diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index df583ff40..e97494d0a 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -59,6 +59,7 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor private List machines = new ArrayList(); private List clientSideMachines = new ArrayList(); + private List patterns = new ArrayList(); private List craftingTasks = new ArrayList(); private List craftingTasksToAdd = new ArrayList(); @@ -110,8 +111,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor int range = 0; int usage = 0; - - storages.clear(); + List newStorages = new ArrayList(); + List newPatterns = new ArrayList(); for (TileMachine machine : newMachines) { if (machine instanceof TileWirelessTransmitter) { @@ -119,7 +120,19 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } if (machine instanceof IStorageProvider) { - ((IStorageProvider) machine).provide(storages); + ((IStorageProvider) machine).provide(newStorages); + } + + if (machine instanceof TileCrafter) { + TileCrafter crafter = (TileCrafter) machine; + + for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { + if (crafter.getStackInSlot(i) != null) { + ItemStack pattern = crafter.getStackInSlot(i); + + newPatterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4))); + } + } } usage += machine.getEnergyUsage(); @@ -140,6 +153,8 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor wirelessGridRange = range; energyUsage = usage; machines = newMachines; + storages = newStorages; + patterns = newPatterns; Collections.sort(storages, new Comparator() { @Override @@ -244,26 +259,6 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor } public List getPatterns() { - List patterns = new ArrayList(); - - Iterator it = machines.iterator(); - - while (it.hasNext()) { - TileMachine machine = it.next(); - - if (machine instanceof TileCrafter) { - TileCrafter crafter = (TileCrafter) machine; - - for (int i = 0; i < TileCrafter.PATTERN_SLOTS; ++i) { - if (crafter.getStackInSlot(i) != null) { - ItemStack pattern = crafter.getStackInSlot(i); - - patterns.add(new CraftingPattern(ItemPattern.getResult(pattern), ItemPattern.getIngredients(pattern), 20 - (crafter.getUpgrades() * 4))); - } - } - } - } - return patterns; }