Fixed the evil Bounding Block crash, fixed Dynamic Tank crashing when flowing icon is null

This commit is contained in:
Aidan C. Brady 2014-08-24 09:46:38 -04:00
parent bbef6aa2b9
commit c364496212
4 changed files with 28 additions and 14 deletions

View file

@ -258,7 +258,11 @@ public class RenderDynamicTank extends TileEntitySpecialRenderer
}
}
if(fluid.getFlowingIcon() != null)
{
MekanismRenderer.renderObject(toReturn);
}
display.endList();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);

View file

@ -4,8 +4,8 @@ import ic2.api.energy.tile.IEnergySink;
import mekanism.api.Coord4D;
import mekanism.api.IFilterAccess;
import mekanism.api.energy.IStrictEnergyAcceptor;
import mekanism.api.energy.IStrictEnergyStorage;
import mekanism.common.IAdvancedBoundingBlock;
import mekanism.common.Mekanism;
import mekanism.common.util.InventoryUtils;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.ISidedInventory;
@ -14,14 +14,13 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method;
import buildcraft.api.power.IPowerReceptor;
import buildcraft.api.power.PowerHandler;
import buildcraft.api.power.PowerHandler.PowerReceiver;
import cofh.api.energy.IEnergyHandler;
import cpw.mods.fml.common.Optional.Interface;
import cpw.mods.fml.common.Optional.InterfaceList;
import cpw.mods.fml.common.Optional.Method;
import dan200.computercraft.api.lua.ILuaContext;
import dan200.computercraft.api.peripheral.IComputerAccess;
import dan200.computercraft.api.peripheral.IPeripheral;
@ -32,7 +31,7 @@ import dan200.computercraft.api.peripheral.IPeripheral;
@Interface(iface = "cofh.api.energy.IEnergyHandler", modid = "CoFHAPI|energy"),
@Interface(iface = "dan200.computercraft.api.peripheral.IPeripheral", modid = "ComputerCraft")
})
public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock implements ISidedInventory, IEnergySink, IStrictEnergyAcceptor, IPowerReceptor, IStrictEnergyStorage, IEnergyHandler, IPeripheral, IFilterAccess
public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock implements ISidedInventory, IEnergySink, IPowerReceptor, IStrictEnergyAcceptor, IEnergyHandler, IPeripheral, IFilterAccess
{
@Override
public int getSizeInventory()
@ -94,7 +93,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return "null";
}
return getInv().getInventoryName();
@ -305,7 +304,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return new PowerHandler(this, PowerHandler.Type.STORAGE).getPowerReceiver();
}
return getInv().getPowerReceiver(side);
@ -329,7 +328,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return worldObj;
}
return getInv().getWorld();
@ -395,6 +394,11 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
public IAdvancedBoundingBlock getInv()
{
if(!receivedCoords)
{
return null;
}
TileEntity tile = new Coord4D(mainX, mainY, mainZ, worldObj.provider.dimensionId).getTileEntity(worldObj);
if(!(tile instanceof IAdvancedBoundingBlock))
@ -446,7 +450,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return new String[] {"null"};
}
return getInv().getMethodNames();
@ -458,7 +462,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return new Object[] {};
}
return getInv().callMethod(computer, context, method, arguments);
@ -500,7 +504,7 @@ public class TileEntityAdvancedBoundingBlock extends TileEntityBoundingBlock imp
{
if(getInv() == null)
{
return null;
return new NBTTagCompound();
}
return getInv().getFilterData(nbtTags);

View file

@ -20,10 +20,14 @@ public class TileEntityBoundingBlock extends TileEntity implements ITileNetwork
public int mainY;
public int mainZ;
public boolean receivedCoords;
public boolean prevPower;
public void setMainLocation(int x, int y, int z)
{
receivedCoords = true;
if(!worldObj.isRemote)
{
mainX = x;
@ -99,6 +103,7 @@ public class TileEntityBoundingBlock extends TileEntity implements ITileNetwork
mainY = nbtTags.getInteger("mainY");
mainZ = nbtTags.getInteger("mainZ");
prevPower = nbtTags.getBoolean("prevPower");
receivedCoords = nbtTags.getBoolean("receivedCoords");
}
@Override
@ -110,6 +115,7 @@ public class TileEntityBoundingBlock extends TileEntity implements ITileNetwork
nbtTags.setInteger("mainY", mainY);
nbtTags.setInteger("mainZ", mainZ);
nbtTags.setBoolean("prevPower", prevPower);
nbtTags.setBoolean("receivedCoords", receivedCoords);
}
@Override

View file

@ -1016,7 +1016,7 @@ public class TileEntityDigitalMiner extends TileEntityElectricBlock implements I
}
MekanismUtils.makeAdvancedBoundingBlock(worldObj, x, y, z, Coord4D.get(this));
worldObj.notifyBlocksOfNeighborChange(x, y, z, Mekanism.BoundingBlock);
worldObj.func_147453_f(x, y, z, getBlockType());
}
}
}