001    package net.minecraft.tileentity;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import net.minecraft.nbt.NBTTagCompound;
006    import net.minecraft.network.packet.Packet;
007    import net.minecraft.network.packet.Packet132TileEntityData;
008    
009    public class TileEntitySkull extends TileEntity
010    {
011        /** Entity type for this skull. */
012        private int skullType;
013    
014        /** The skull's rotation. */
015        private int skullRotation;
016    
017        /** Extra data for this skull, used as player username by player heads */
018        private String extraType = "";
019    
020        /**
021         * Writes a tile entity to NBT.
022         */
023        public void writeToNBT(NBTTagCompound par1NBTTagCompound)
024        {
025            super.writeToNBT(par1NBTTagCompound);
026            par1NBTTagCompound.setByte("SkullType", (byte)(this.skullType & 255));
027            par1NBTTagCompound.setByte("Rot", (byte)(this.skullRotation & 255));
028            par1NBTTagCompound.setString("ExtraType", this.extraType);
029        }
030    
031        /**
032         * Reads a tile entity from NBT.
033         */
034        public void readFromNBT(NBTTagCompound par1NBTTagCompound)
035        {
036            super.readFromNBT(par1NBTTagCompound);
037            this.skullType = par1NBTTagCompound.getByte("SkullType");
038            this.skullRotation = par1NBTTagCompound.getByte("Rot");
039    
040            if (par1NBTTagCompound.hasKey("ExtraType"))
041            {
042                this.extraType = par1NBTTagCompound.getString("ExtraType");
043            }
044        }
045    
046        /**
047         * Overriden in a sign to provide the text.
048         */
049        public Packet getDescriptionPacket()
050        {
051            NBTTagCompound var1 = new NBTTagCompound();
052            this.writeToNBT(var1);
053            return new Packet132TileEntityData(this.xCoord, this.yCoord, this.zCoord, 4, var1);
054        }
055    
056        /**
057         * Set the entity type for the skull
058         */
059        public void setSkullType(int par1, String par2Str)
060        {
061            this.skullType = par1;
062            this.extraType = par2Str;
063        }
064    
065        /**
066         * Get the entity type for the skull
067         */
068        public int getSkullType()
069        {
070            return this.skullType;
071        }
072    
073        /**
074         * Set the skull's rotation
075         */
076        public void setSkullRotation(int par1)
077        {
078            this.skullRotation = par1;
079        }
080    
081        @SideOnly(Side.CLIENT)
082        public int func_82119_b()
083        {
084            return this.skullRotation;
085        }
086    
087        /**
088         * Get the extra data foor this skull, used as player username by player heads
089         */
090        public String getExtraType()
091        {
092            return this.extraType;
093        }
094    }