diff --git a/src/main/java/refinedstorage/tile/TileMachine.java b/src/main/java/refinedstorage/tile/TileMachine.java index f64111a1f..6d1099d76 100755 --- a/src/main/java/refinedstorage/tile/TileMachine.java +++ b/src/main/java/refinedstorage/tile/TileMachine.java @@ -1,6 +1,7 @@ package refinedstorage.tile; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.math.BlockPos; import refinedstorage.block.BlockMachine; @@ -12,8 +13,10 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed protected RedstoneMode redstoneMode = RedstoneMode.IGNORE; protected TileController controller; + private Block machineBlock; + public void onConnected(TileController controller) { - if (worldObj != null && worldObj.getBlockState(pos).getBlock() == blockType) { + if (worldObj != null && worldObj.getBlockState(pos).getBlock() == machineBlock) { markDirty(); this.connected = true; @@ -24,7 +27,7 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed } public void onDisconnected() { - if (worldObj != null && worldObj.getBlockState(pos).getBlock() == blockType) { + if (worldObj != null && worldObj.getBlockState(pos).getBlock() == machineBlock) { markDirty(); this.connected = false; @@ -40,9 +43,18 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed @Override public void update() { + if (worldObj == null) { + super.update(); + return; + } + + if (ticks == 0) { + machineBlock = worldObj.getBlockState(pos).getBlock(); + } + super.update(); - if (worldObj != null && !worldObj.isRemote && isConnected()) { + if (!worldObj.isRemote && isConnected()) { updateMachine(); } } @@ -75,7 +87,7 @@ public abstract class TileMachine extends TileBase implements INetworkTile, IRed connected = buf.readBoolean(); if (lastConnected != connected) { - // @TODO: make this work and use correct flags? + // @TODO: Am I using the correct flags? worldObj.notifyBlockUpdate(pos, worldObj.getBlockState(pos), worldObj.getBlockState(pos), 2 | 4); } } diff --git a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java index 065144602..f152d77b7 100755 --- a/src/main/java/refinedstorage/tile/grid/WirelessGrid.java +++ b/src/main/java/refinedstorage/tile/grid/WirelessGrid.java @@ -13,6 +13,7 @@ import refinedstorage.util.HandUtils; import java.util.List; +// @TODO: Fix this as well public class WirelessGrid implements IGrid { private ItemStack stack; private EnumHand hand;