Performance improvements
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
# Refined Storage Changelog
|
# Refined Storage Changelog
|
||||||
|
|
||||||
|
### 0.6.3
|
||||||
|
**Bugfixes**
|
||||||
|
- Performance improvements
|
||||||
|
|
||||||
### 0.6.2
|
### 0.6.2
|
||||||
**Bugfixes**
|
**Bugfixes**
|
||||||
- Fixed race condition with crafting tasks
|
- Fixed race condition with crafting tasks
|
||||||
|
|||||||
@@ -304,7 +304,7 @@ public class RefinedStorageUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void sendToAllAround(World world, BlockPos pos, IMessage message) {
|
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);
|
RefinedStorage.NETWORK.sendToAllAround(message, target);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -119,65 +119,66 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
|
|
||||||
int lastEnergy = energy.getEnergyStored();
|
int lastEnergy = energy.getEnergyStored();
|
||||||
|
|
||||||
int newWirelessGridRange = 0;
|
|
||||||
int newEnergyUsage = 0;
|
|
||||||
List<IStorage> newStorages = new ArrayList<IStorage>();
|
|
||||||
List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>();
|
|
||||||
|
|
||||||
if (canRun()) {
|
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<IStorage>() {
|
||||||
|
@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) {
|
for (TileMachine machine : machines) {
|
||||||
if (!machine.mayUpdate()) {
|
if (!machine.mayUpdate()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
machine.updateMachine();
|
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<IStorage>() {
|
|
||||||
@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) {
|
for (ICraftingTask taskToCancel : craftingTasksToCancel) {
|
||||||
taskToCancel.onCancelled(this);
|
taskToCancel.onCancelled(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
craftingTasks.removeAll(craftingTasksToCancel);
|
craftingTasks.removeAll(craftingTasksToCancel);
|
||||||
craftingTasksToCancel.clear();
|
craftingTasksToCancel.clear();
|
||||||
|
|
||||||
@@ -205,11 +206,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
|
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
|
||||||
}
|
}
|
||||||
|
|
||||||
wirelessGridRange = newWirelessGridRange;
|
|
||||||
energyUsage = newEnergyUsage;
|
|
||||||
storages = newStorages;
|
|
||||||
patterns = newPatterns;
|
|
||||||
|
|
||||||
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
|
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
|
||||||
wirelessGridConsumersToRemove.clear();
|
wirelessGridConsumersToRemove.clear();
|
||||||
|
|
||||||
@@ -227,22 +223,19 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (getType()) {
|
if (getType() == EnumControllerType.NORMAL && energyUsage > 0) {
|
||||||
case NORMAL:
|
if (energy.getEnergyStored() - energyUsage >= 0) {
|
||||||
if (energyUsage > 0) {
|
energy.extractEnergy(energyUsage, false);
|
||||||
if (energy.getEnergyStored() - energyUsage >= 0) {
|
} else {
|
||||||
energy.extractEnergy(energyUsage, false);
|
energy.setEnergyStored(0);
|
||||||
} else {
|
}
|
||||||
energy.setEnergyStored(0);
|
} else if (getType() == EnumControllerType.CREATIVE) {
|
||||||
}
|
energy.setEnergyStored(energy.getMaxEnergyStored());
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CREATIVE:
|
|
||||||
energy.setEnergyStored(energy.getMaxEnergyStored());
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this));
|
if (ticks % 20 == 0) {
|
||||||
|
RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageControllerEnergyUpdate(this));
|
||||||
|
}
|
||||||
|
|
||||||
if (lastEnergy != energy.getEnergyStored()) {
|
if (lastEnergy != energy.getEnergyStored()) {
|
||||||
worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER);
|
worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER);
|
||||||
|
|||||||
@@ -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));
|
RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user