fix npe with ic2

This commit is contained in:
maggi373 committed 2026-02-24 22:13:08 +01:00
1 parent 76ae49ba94
commit d5ef67f56c
2 files changed
+42 -26

No files matched your search

+1 -4
View File
@@ -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<ChunkPosition, TileEntity> chunkData = new HashMap<ChunkPosition, TileEntity>(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();
}
}
@@ -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