package advancedsystemsmanager.tileentities;
import advancedsystemsmanager.api.tileentities.ITileElement;
import advancedsystemsmanager.api.tileentities.ITileFactory;
import advancedsystemsmanager.helpers.RemapHelper;
import advancedsystemsmanager.registry.ClusterRegistry;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
public class TileEntityRemapping extends TileEntity
{
private NBTTagCompound tagCompound;
@Override
public void updateEntity()
{
super.updateEntity();
ITileFactory factory = getFactory(tagCompound.getString("id"));
if (factory != null && factory.getBlock() != null)
{
int subtype = getBlockMetadata() & 8;
if (factory == ClusterRegistry.CAMO)
{
subtype = getBlockMetadata();
}
worldObj.setBlock(xCoord, yCoord, zCoord, factory.getBlock(), factory.getMetadata(), 3);
TileEntity te = factory.createTileEntity(worldObj, factory.getMetadata());
te.readFromNBT(tagCompound);
((ITileElement)te).setSubtype(subtype);
worldObj.removeTileEntity(xCoord, yCoord, zCoord);
worldObj.getChunkFromBlockCoords(xCoord, zCoord).addTileEntity(te);
} else
{
worldObj.setBlockToAir(xCoord, yCoord, zCoord);
worldObj.removeTileEntity(xCoord, yCoord, zCoord);
}
}
@Override
public void readFromNBT(NBTTagCompound tag)
{
super.readFromNBT(tag);
this.tagCompound = tag;
}
private ITileFactory getFactory(String name)
{
return ClusterRegistry.get(RemapHelper.getNewTile(name));
}
}