package mods.custom_flags.blocks; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import mods.custom_flags.CustomFlags; import mods.custom_flags.packet.FlagTileEntityDescripPacket; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.network.packet.Packet; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import java.util.ArrayList; /** * User: nerd-boy * Date: 2/08/13 * Time: 2:33 PM */ public class TileEntityFlagPole extends TileEntity { private ArrayList<ItemStack> flags; private static final int MAX_FLAGS = 4; public TileEntityFlagPole(){ flags = new ArrayList<ItemStack>(MAX_FLAGS); } @SideOnly(Side.CLIENT) public AxisAlignedBB getRenderBoundingBox() { int side = CustomFlags.blockFlagPole.getOrient(getBlockMetadata()); switch (side){ case 0: return AxisAlignedBB.getAABBPool().getAABB( xCoord - flags.size(), yCoord, zCoord, xCoord + flags.size()+1, yCoord + 1, zCoord + 1); case 1: case 2: return AxisAlignedBB.getAABBPool().getAABB( xCoord, yCoord - flags.size(), zCoord, xCoord+1, yCoord+ flags.size()+1, zCoord + 1); } return AxisAlignedBB.getAABBPool().getAABB( xCoord - flags.size(), yCoord, zCoord, xCoord + flags.size()+1, yCoord + 1, zCoord + 1); } @Override public void readFromNBT(NBTTagCompound par1NBTTagCompound) { super.readFromNBT(par1NBTTagCompound); flags = new ArrayList<ItemStack>(MAX_FLAGS); for(int i = 0; i < MAX_FLAGS; i++){ if(par1NBTTagCompound.hasKey("flag"+i)){ flags.add(ItemStack.loadItemStackFromNBT(par1NBTTagCompound.getCompoundTag("flag"+i))); } } } @Override public void writeToNBT(NBTTagCompound par1NBTTagCompound) { super.writeToNBT(par1NBTTagCompound); for(int i = 0; i < flags.size(); i++){ NBTTagCompound flagCompound = new NBTTagCompound(); flags.get(i).writeToNBT(flagCompound); par1NBTTagCompound.setCompoundTag("flag"+i, flagCompound); } } @Override public Packet getDescriptionPacket() { return FlagTileEntityDescripPacket.generatePacket(xCoord, yCoord, zCoord, flags); } public boolean hasFlag(){ return flags.size() != 0; } public void clearFlags() { flags.clear(); } public boolean setFlag(ItemStack flag) { if(flags.size() == MAX_FLAGS){ return false; }else{ this.flags.add(flag); return true; } } public ArrayList<ItemStack> getFlags() { return flags; } public boolean shouldRemoveFlag(EntityPlayer player){ return (flags.size() <= MAX_FLAGS & !player.capabilities.isCreativeMode); } public ItemStack popFlag(){ ItemStack flag = flags.get(flags.size()-1); flags.remove(flags.size()-1); return flag; } }