diff --git a/CHANGELOG.md b/CHANGELOG.md index 4458ac4b7..f1825571f 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,9 @@ # Refined Storage Changelog +### 0.6.3 +**Bugfixes** +- Performance improvements + ### 0.6.2 **Bugfixes** - Fixed race condition with crafting tasks diff --git a/src/main/java/refinedstorage/RefinedStorageUtils.java b/src/main/java/refinedstorage/RefinedStorageUtils.java index 128685bdf..53744a223 100755 --- a/src/main/java/refinedstorage/RefinedStorageUtils.java +++ b/src/main/java/refinedstorage/RefinedStorageUtils.java @@ -304,7 +304,7 @@ public class RefinedStorageUtils { } public static void sendToAllAround(World world, BlockPos pos, IMessage message) { - NetworkRegistry.TargetPoint target = new NetworkRegistry.TargetPoint(world.provider.getDimensionType().getId(), pos.getX(), pos.getY(), pos.getZ(), 128); + NetworkRegistry.TargetPoint target = new NetworkRegistry.TargetPoint(world.provider.getDimensionType().getId(), pos.getX(), pos.getY(), pos.getZ(), 64); RefinedStorage.NETWORK.sendToAllAround(message, target); } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 8120e638d..f4c9d2da2 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -119,65 +119,66 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr int lastEnergy = energy.getEnergyStored(); - int newWirelessGridRange = 0; - int newEnergyUsage = 0; - List newStorages = new ArrayList(); - List newPatterns = new ArrayList(); - if (canRun()) { + if (ticks % 20 == 0) { + this.wirelessGridRange = 0; + this.energyUsage = 0; + this.storages.clear(); + this.patterns.clear(); + + for (TileMachine machine : machines) { + if (!machine.mayUpdate()) { + continue; + } + + if (machine instanceof TileWirelessTransmitter) { + this.wirelessGridRange += ((TileWirelessTransmitter) machine).getRange(); + } + + if (machine instanceof IStorageProvider) { + ((IStorageProvider) machine).provide(storages); + } + + 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(crafter.getPos().getX(), crafter.getPos().getY(), crafter.getPos().getZ(), ItemPattern.isProcessing(pattern), ItemPattern.getInputs(pattern), ItemPattern.getOutputs(pattern))); + } + } + } + + this.energyUsage += machine.getEnergyUsage(); + } + + Collections.sort(storages, new Comparator() { + @Override + public int compare(IStorage s1, IStorage s2) { + if (s1.getPriority() == s2.getPriority()) { + return 0; + } + + return (s1.getPriority() > s2.getPriority()) ? -1 : 1; + } + }); + + syncItems(); + } + for (TileMachine machine : machines) { if (!machine.mayUpdate()) { continue; } machine.updateMachine(); - - if (machine instanceof TileWirelessTransmitter) { - newWirelessGridRange += ((TileWirelessTransmitter) machine).getRange(); - } - - if (machine instanceof IStorageProvider) { - ((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( - crafter.getPos().getX(), - crafter.getPos().getY(), - crafter.getPos().getZ(), - ItemPattern.isProcessing(pattern), - ItemPattern.getInputs(pattern), - ItemPattern.getOutputs(pattern))); - } - } - } - - newEnergyUsage += machine.getEnergyUsage(); } - Collections.sort(newStorages, new Comparator() { - @Override - public int compare(IStorage s1, IStorage s2) { - if (s1.getPriority() == s2.getPriority()) { - return 0; - } - - return (s1.getPriority() > s2.getPriority()) ? -1 : 1; - } - }); - - syncItems(); - for (ICraftingTask taskToCancel : craftingTasksToCancel) { taskToCancel.onCancelled(this); } - craftingTasks.removeAll(craftingTasksToCancel); craftingTasksToCancel.clear(); @@ -205,11 +206,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER); } - wirelessGridRange = newWirelessGridRange; - energyUsage = newEnergyUsage; - storages = newStorages; - patterns = newPatterns; - wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove); wirelessGridConsumersToRemove.clear(); @@ -227,22 +223,19 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr } } - switch (getType()) { - case NORMAL: - if (energyUsage > 0) { - if (energy.getEnergyStored() - energyUsage >= 0) { - energy.extractEnergy(energyUsage, false); - } else { - energy.setEnergyStored(0); - } - } - break; - case CREATIVE: - energy.setEnergyStored(energy.getMaxEnergyStored()); - break; + if (getType() == EnumControllerType.NORMAL && energyUsage > 0) { + if (energy.getEnergyStored() - energyUsage >= 0) { + energy.extractEnergy(energyUsage, false); + } else { + energy.setEnergyStored(0); + } + } else if (getType() == EnumControllerType.CREATIVE) { + energy.setEnergyStored(energy.getMaxEnergyStored()); } - RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); + if (ticks % 20 == 0) { + RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this)); + } if (lastEnergy != energy.getEnergyStored()) { worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER); diff --git a/src/main/java/refinedstorage/tile/TileMachine.java b/src/main/java/refinedstorage/tile/TileMachine.java index e60490cb0..0a2f0e48a 100755 --- a/src/main/java/refinedstorage/tile/TileMachine.java +++ b/src/main/java/refinedstorage/tile/TileMachine.java @@ -75,7 +75,7 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta } } - if (!(this instanceof TileCable)) { + if (!(this instanceof TileCable) && ticks % 5 == 0) { RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this)); } }