diff --git a/src/main/java/mekanism/common/Mekanism.java b/src/main/java/mekanism/common/Mekanism.java index 1fbb80e5d..afa351640 100644 --- a/src/main/java/mekanism/common/Mekanism.java +++ b/src/main/java/mekanism/common/Mekanism.java @@ -69,7 +69,6 @@ import mekanism.common.security.SecurityFrequency; import mekanism.common.tile.TileEntityAdvancedBoundingBlock; import mekanism.common.tile.TileEntityBoundingBlock; import mekanism.common.tile.TileEntityCardboardBox; -import mekanism.common.tile.TileEntityElectricBlock; import mekanism.common.tile.TileEntityPressureDisperser; import mekanism.common.tile.TileEntitySuperheatingElement; import mekanism.common.tile.TileEntityThermalEvaporationBlock; @@ -1654,9 +1653,7 @@ public class Mekanism HashMap chunkData = new HashMap(event.getChunk().chunkTileEntityMap); for (TileEntity tileEntity : chunkData.values()) { - if (tileEntity instanceof TileEntityElectricBlock && MekanismUtils.useIC2()) { - ((TileEntityElectricBlock) tileEntity).register(); - } else if (tileEntity instanceof IChunkLoadHandler) { + if (tileEntity instanceof IChunkLoadHandler) { ((IChunkLoadHandler) tileEntity).onChunkLoad(); } } diff --git a/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java b/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java index b565378d0..1011343b4 100644 --- a/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java +++ b/src/main/java/mekanism/common/tile/TileEntityElectricBlock.java @@ -52,37 +52,56 @@ public abstract class TileEntityElectricBlock extends TileEntityContainerBlock i @Method(modid = "IC2") public void register() { - if(!worldObj.isRemote) + if(worldObj == null || worldObj.isRemote || isInvalid()) { - TileEntity registered = EnergyNet.instance.getTileEntity(worldObj, xCoord, yCoord, zCoord); - - if(registered != this) - { - if(registered instanceof IEnergyTile) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile)registered)); - } - else if(registered == null) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); - ic2Registered = true; - } - } + return; + } + + if(worldObj.getTileEntity(xCoord, yCoord, zCoord) != this) + { + return; + } + + if(!worldObj.checkChunksExist(xCoord-1, yCoord, zCoord-1, xCoord+1, yCoord, zCoord+1)) + { + return; + } + + TileEntity registered = EnergyNet.instance.getTileEntity(worldObj, xCoord, yCoord, zCoord); + + if(registered == this) + { + ic2Registered = true; + return; + } + + if(registered instanceof IEnergyTile) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile)registered)); + } + else if(registered == null) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileLoadEvent(this)); + ic2Registered = true; } } @Method(modid = "IC2") public void deregister() { - if(!worldObj.isRemote) + if(worldObj == null || worldObj.isRemote) { - TileEntity registered = EnergyNet.instance.getTileEntity(worldObj, xCoord, yCoord, zCoord); - - if(registered instanceof IEnergyTile) - { - MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile)registered)); - } + return; } + + TileEntity registered = EnergyNet.instance.getTileEntity(worldObj, xCoord, yCoord, zCoord); + + if(registered instanceof IEnergyTile) + { + MinecraftForge.EVENT_BUS.post(new EnergyTileUnloadEvent((IEnergyTile)registered)); + } + + ic2Registered = false; } @Override