Last few bugs fixed

This commit is contained in:
Raoul Van den Berge
2016-05-14 22:06:19 +02:00
parent 8462fc9920
commit ffcca68831
4 changed files with 19 additions and 8 deletions

View File

@@ -298,6 +298,6 @@ public class RefinedStorageUtils {
} }
public static void reRenderBlock(World world, BlockPos pos) { public static void reRenderBlock(World world, BlockPos pos) {
world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 8); world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 1 | 2);
} }
} }

View File

@@ -90,7 +90,8 @@ public abstract class BlockBase extends Block {
((TileBase) tile).setDirection(EnumFacing.getFront(newDir)); ((TileBase) tile).setDirection(EnumFacing.getFront(newDir));
world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 8); // This will resend the description packet
world.notifyBlockUpdate(pos, world.getBlockState(pos), world.getBlockState(pos), 1 | 2);
return true; return true;
} }

View File

@@ -72,6 +72,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY); private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY);
private int energyUsage; private int energyUsage;
private boolean couldRun;
private int wirelessGridRange; private int wirelessGridRange;
public void addMachine(TileMachine machine) { public void addMachine(TileMachine machine) {
@@ -101,8 +103,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>(); List<CraftingPattern> newPatterns = new ArrayList<CraftingPattern>();
if (canRun()) { if (canRun()) {
newEnergyUsage = 10;
for (TileMachine machine : machines) { for (TileMachine machine : machines) {
machine.updateMachine(); machine.updateMachine();
@@ -173,6 +173,12 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
disconnectAll(); disconnectAll();
} }
if (couldRun != canRun()) {
couldRun = canRun();
worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER);
}
wirelessGridRange = newWirelessGridRange; wirelessGridRange = newWirelessGridRange;
energyUsage = newEnergyUsage; energyUsage = newEnergyUsage;
storages = newStorages; storages = newStorages;
@@ -197,8 +203,12 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
switch (getType()) { switch (getType()) {
case NORMAL: case NORMAL:
if (canRun()) { if (energyUsage > 0) {
energy.extractEnergy(energyUsage, false); if (energy.getEnergyStored() - energyUsage >= 0) {
energy.extractEnergy(energyUsage, false);
} else {
energy.setEnergyStored(0);
}
} }
break; break;
case CREATIVE: case CREATIVE:
@@ -536,7 +546,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
} }
public boolean canRun() { public boolean canRun() {
return energy.getEnergyStored() >= getEnergyUsage() && redstoneMode.isEnabled(worldObj, pos); return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(worldObj, pos);
} }
@Override @Override

View File

@@ -34,7 +34,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 && redstoneMode.isEnabled(worldObj, pos)) { if (newController != null && newController.canRun() && redstoneMode.isEnabled(worldObj, pos)) {
onConnected(world, newController); onConnected(world, newController);
} }
} else { } else {