package com.insane.illuminatedbows.tile;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.init.Blocks;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import com.insane.illuminatedbows.IlluminatedBows;
public class TileIllumination extends TileEntity
{
public Block camoBlock = Blocks.stone;
public Set<Integer> sides = new HashSet<Integer>();
public void init(Block block, int meta)
{
this.camoBlock = block;
this.sides.add(meta);
}
public void addSide(int side)
{
this.sides.add(side);
}
public boolean removeSide(int side)
{
this.sides.remove(side);
this.sides.remove(side+6);
return this.sides.isEmpty();
}
@Override
public void writeToNBT(NBTTagCompound tag)
{
tag.setInteger(IlluminatedBows.MODID + "camoID", Block.getIdFromBlock(camoBlock));
int[] sides = new int[this.sides.size()];
Iterator<Integer> iter = this.sides.iterator();
for (int i = 0; i < sides.length; i++)
{
sides[i] = iter.next();
}
tag.setIntArray("illuminatedSides", sides);
super.writeToNBT(tag);
}
@Override
public void readFromNBT(NBTTagCompound tag)
{
this.camoBlock = Block.getBlockById(tag.getInteger(IlluminatedBows.MODID + "camoID"));
this.sides = new HashSet<Integer>();
for (int i : tag.getIntArray("illuminatedSides"))
{
this.sides.add(i);
}
if (worldObj != null)
{
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
super.readFromNBT(tag);
}
@Override
public Packet getDescriptionPacket()
{
NBTTagCompound tag = new NBTTagCompound();
this.writeToNBT(tag);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, tag);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt)
{
this.readFromNBT(pkt.func_148857_g());
}
}