Fixes #143 "Crash related to losing power on the network"

This commit is contained in:
Raoul Van den Berge
2016-06-25 12:41:56 +02:00
parent 85121b7cae
commit bbbfe195e3

View File

@@ -85,7 +85,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
private RedstoneMode redstoneMode = RedstoneMode.IGNORE; private RedstoneMode redstoneMode = RedstoneMode.IGNORE;
private List<ClientSlave> clientSlaves; private List<ClientSlave> clientSlaves = new ArrayList<ClientSlave>();
@Override @Override
public BlockPos getPosition() { public BlockPos getPosition() {
@@ -99,7 +99,7 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
@Override @Override
public boolean canRun() { public boolean canRun() {
return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(worldObj, pos); return energy.getEnergyStored() > 0 && redstoneMode.isEnabled(worldObj, pos);
} }
@Override @Override
@@ -165,13 +165,11 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
craftingTasks.pop(); craftingTasks.pop();
} }
} }
} else {
disconnectSlaves();
} }
wirelessGridHandler.update(); wirelessGridHandler.update();
if (canRun() && getType() == EnumControllerType.NORMAL) { if (getType() == EnumControllerType.NORMAL) {
if (energy.getEnergyStored() - energyUsage >= 0) { if (energy.getEnergyStored() - energyUsage >= 0) {
energy.extractEnergy(energyUsage, false); energy.extractEnergy(energyUsage, false);
} else { } else {
@@ -181,6 +179,12 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
energy.setEnergyStored(energy.getMaxEnergyStored()); energy.setEnergyStored(energy.getMaxEnergyStored());
} }
if (!canRun() && !slaves.isEmpty()) {
disconnectSlaves();
updateSlaves();
}
if (couldRun != canRun()) { if (couldRun != canRun()) {
couldRun = canRun(); couldRun = canRun();