diff --git a/src/main/java/refinedstorage/RefinedStorageUtils.java b/src/main/java/refinedstorage/RefinedStorageUtils.java index 55e95d071..0f5071f3d 100755 --- a/src/main/java/refinedstorage/RefinedStorageUtils.java +++ b/src/main/java/refinedstorage/RefinedStorageUtils.java @@ -298,6 +298,6 @@ public class RefinedStorageUtils { } 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); } } diff --git a/src/main/java/refinedstorage/block/BlockBase.java b/src/main/java/refinedstorage/block/BlockBase.java index fe5e86316..29e3c5d1a 100755 --- a/src/main/java/refinedstorage/block/BlockBase.java +++ b/src/main/java/refinedstorage/block/BlockBase.java @@ -90,7 +90,8 @@ public abstract class BlockBase extends Block { ((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; } diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 575227a0a..a27c5ebea 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -72,6 +72,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr private EnergyStorage energy = new EnergyStorage(ENERGY_CAPACITY); private int energyUsage; + private boolean couldRun; + private int wirelessGridRange; public void addMachine(TileMachine machine) { @@ -101,8 +103,6 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr List newPatterns = new ArrayList(); if (canRun()) { - newEnergyUsage = 10; - for (TileMachine machine : machines) { machine.updateMachine(); @@ -173,6 +173,12 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr disconnectAll(); } + if (couldRun != canRun()) { + couldRun = canRun(); + + worldObj.notifyNeighborsOfStateChange(pos, RefinedStorageBlocks.CONTROLLER); + } + wirelessGridRange = newWirelessGridRange; energyUsage = newEnergyUsage; storages = newStorages; @@ -197,8 +203,12 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr switch (getType()) { case NORMAL: - if (canRun()) { - energy.extractEnergy(energyUsage, false); + if (energyUsage > 0) { + if (energy.getEnergyStored() - energyUsage >= 0) { + energy.extractEnergy(energyUsage, false); + } else { + energy.setEnergyStored(0); + } } break; case CREATIVE: @@ -536,7 +546,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr } public boolean canRun() { - return energy.getEnergyStored() >= getEnergyUsage() && redstoneMode.isEnabled(worldObj, pos); + return energy.getEnergyStored() > 0 && energy.getEnergyStored() >= energyUsage && redstoneMode.isEnabled(worldObj, pos); } @Override diff --git a/src/main/java/refinedstorage/tile/TileMachine.java b/src/main/java/refinedstorage/tile/TileMachine.java index 07a62f5c6..d9816dabe 100755 --- a/src/main/java/refinedstorage/tile/TileMachine.java +++ b/src/main/java/refinedstorage/tile/TileMachine.java @@ -34,7 +34,7 @@ public abstract class TileMachine extends TileBase implements ISynchronizedConta TileController newController = ControllerSearcher.search(worldObj, pos, visited); if (controller == null) { - if (newController != null && redstoneMode.isEnabled(worldObj, pos)) { + if (newController != null && newController.canRun() && redstoneMode.isEnabled(worldObj, pos)) { onConnected(world, newController); } } else {