Very unstable improved machine searching part6
This commit is contained in:
@@ -98,10 +98,13 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
int lastEnergy = energy.getEnergyStored();
|
int lastEnergy = energy.getEnergyStored();
|
||||||
|
|
||||||
int newWirelessGridRange = 0;
|
int newWirelessGridRange = 0;
|
||||||
int newEnergyUsage = 10;
|
int newEnergyUsage = 0;
|
||||||
List<IStorage> newStorages = new ArrayList<IStorage>();
|
List<IStorage> newStorages = new ArrayList<IStorage>();
|
||||||
List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>();
|
List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>();
|
||||||
|
|
||||||
|
if (canRun()) {
|
||||||
|
newEnergyUsage = 10;
|
||||||
|
|
||||||
for (TileMachine machine : machines) {
|
for (TileMachine machine : machines) {
|
||||||
machine.updateMachine();
|
machine.updateMachine();
|
||||||
|
|
||||||
@@ -134,11 +137,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
newEnergyUsage += machine.getEnergyUsage();
|
newEnergyUsage += machine.getEnergyUsage();
|
||||||
}
|
}
|
||||||
|
|
||||||
wirelessGridRange = newWirelessGridRange;
|
|
||||||
energyUsage = newEnergyUsage;
|
|
||||||
storages = newStorages;
|
|
||||||
patterns = newPatterns;
|
|
||||||
|
|
||||||
Collections.sort(storages, new Comparator<IStorage>() {
|
Collections.sort(storages, new Comparator<IStorage>() {
|
||||||
@Override
|
@Override
|
||||||
public int compare(IStorage s1, IStorage s2) {
|
public int compare(IStorage s1, IStorage s2) {
|
||||||
@@ -173,17 +171,14 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
craftingTaskIterator.remove();
|
craftingTaskIterator.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
disconnectAll();
|
||||||
|
}
|
||||||
|
|
||||||
switch (getType()) {
|
wirelessGridRange = newWirelessGridRange;
|
||||||
case NORMAL:
|
energyUsage = newEnergyUsage;
|
||||||
if (canRun()) {
|
storages = newStorages;
|
||||||
energy.extractEnergy(energyUsage, false);
|
patterns = newPatterns;
|
||||||
}
|
|
||||||
break;
|
|
||||||
case CREATIVE:
|
|
||||||
energy.setEnergyStored(energy.getMaxEnergyStored());
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
|
wirelessGridConsumers.removeAll(wirelessGridConsumersToRemove);
|
||||||
wirelessGridConsumersToRemove.clear();
|
wirelessGridConsumersToRemove.clear();
|
||||||
@@ -202,6 +197,17 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
switch (getType()) {
|
||||||
|
case NORMAL:
|
||||||
|
if (canRun()) {
|
||||||
|
energy.extractEnergy(energyUsage, false);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case CREATIVE:
|
||||||
|
energy.setEnergyStored(energy.getMaxEnergyStored());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if (lastEnergy != energy.getEnergyStored()) {
|
if (lastEnergy != energy.getEnergyStored()) {
|
||||||
worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER);
|
worldObj.updateComparatorOutputLevel(pos, RefinedStorageBlocks.CONTROLLER);
|
||||||
|
|
||||||
@@ -594,7 +600,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendContainerData(ByteBuf buf) {
|
public void sendContainerData(ByteBuf buf) {
|
||||||
buf.writeInt(canRun() ? energyUsage : 0);
|
buf.writeInt(energyUsage);
|
||||||
|
|
||||||
buf.writeInt(redstoneMode.id);
|
buf.writeInt(redstoneMode.id);
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta
|
|||||||
TileController newController = ControllerSearcher.search(worldObj, pos, visited);
|
TileController newController = ControllerSearcher.search(worldObj, pos, visited);
|
||||||
|
|
||||||
if (controller == null) {
|
if (controller == null) {
|
||||||
if (newController != null) {
|
if (newController != null && redstoneMode.isEnabled(worldObj, pos)) {
|
||||||
onConnected(newController);
|
onConnected(newController);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@@ -43,12 +43,18 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void update() {
|
public void update() {
|
||||||
if (!worldObj.isRemote && ticks == 0) {
|
if (!worldObj.isRemote) {
|
||||||
|
if (ticks == 0) {
|
||||||
block = worldObj.getBlockState(pos).getBlock();
|
block = worldObj.getBlockState(pos).getBlock();
|
||||||
|
|
||||||
searchController();
|
searchController();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (connected && !redstoneMode.isEnabled(worldObj, pos)) {
|
||||||
|
onDisconnected();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
super.update();
|
super.update();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,6 +78,8 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta
|
|||||||
|
|
||||||
if (worldObj.getBlockState(pos).getBlock() == block) {
|
if (worldObj.getBlockState(pos).getBlock() == block) {
|
||||||
worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockMachine.CONNECTED, false));
|
worldObj.setBlockState(pos, worldObj.getBlockState(pos).withProperty(BlockMachine.CONNECTED, false));
|
||||||
|
|
||||||
|
RefinedStorageUtils.sendToAllAround(worldObj, pos, new MessageMachineConnectedUpdate(this));
|
||||||
}
|
}
|
||||||
|
|
||||||
// I have no idea why this is needed
|
// I have no idea why this is needed
|
||||||
|
Reference in New Issue
Block a user