001    package net.minecraft.entity.item;
002    
003    import cpw.mods.fml.relauncher.Side;
004    import cpw.mods.fml.relauncher.SideOnly;
005    import java.util.ArrayList;
006    import net.minecraft.entity.EntityHanging;
007    import net.minecraft.item.Item;
008    import net.minecraft.item.ItemStack;
009    import net.minecraft.nbt.NBTTagCompound;
010    import net.minecraft.util.EnumArt;
011    import net.minecraft.world.World;
012    
013    public class EntityPainting extends EntityHanging
014    {
015        public EnumArt art;
016    
017        public EntityPainting(World par1World)
018        {
019            super(par1World);
020        }
021    
022        public EntityPainting(World par1World, int par2, int par3, int par4, int par5)
023        {
024            super(par1World, par2, par3, par4, par5);
025            ArrayList var6 = new ArrayList();
026            EnumArt[] var7 = EnumArt.values();
027            int var8 = var7.length;
028    
029            for (int var9 = 0; var9 < var8; ++var9)
030            {
031                EnumArt var10 = var7[var9];
032                this.art = var10;
033                this.setDirection(par5);
034    
035                if (this.onValidSurface())
036                {
037                    var6.add(var10);
038                }
039            }
040    
041            if (!var6.isEmpty())
042            {
043                this.art = (EnumArt)var6.get(this.rand.nextInt(var6.size()));
044            }
045    
046            this.setDirection(par5);
047        }
048    
049        @SideOnly(Side.CLIENT)
050        public EntityPainting(World par1World, int par2, int par3, int par4, int par5, String par6Str)
051        {
052            this(par1World, par2, par3, par4, par5);
053            EnumArt[] var7 = EnumArt.values();
054            int var8 = var7.length;
055    
056            for (int var9 = 0; var9 < var8; ++var9)
057            {
058                EnumArt var10 = var7[var9];
059    
060                if (var10.title.equals(par6Str))
061                {
062                    this.art = var10;
063                    break;
064                }
065            }
066    
067            this.setDirection(par5);
068        }
069    
070        /**
071         * (abstract) Protected helper method to write subclass entity data to NBT.
072         */
073        public void writeEntityToNBT(NBTTagCompound par1NBTTagCompound)
074        {
075            par1NBTTagCompound.setString("Motive", this.art.title);
076            super.writeEntityToNBT(par1NBTTagCompound);
077        }
078    
079        /**
080         * (abstract) Protected helper method to read subclass entity data from NBT.
081         */
082        public void readEntityFromNBT(NBTTagCompound par1NBTTagCompound)
083        {
084            String var2 = par1NBTTagCompound.getString("Motive");
085            EnumArt[] var3 = EnumArt.values();
086            int var4 = var3.length;
087    
088            for (int var5 = 0; var5 < var4; ++var5)
089            {
090                EnumArt var6 = var3[var5];
091    
092                if (var6.title.equals(var2))
093                {
094                    this.art = var6;
095                }
096            }
097    
098            if (this.art == null)
099            {
100                this.art = EnumArt.Kebab;
101            }
102    
103            super.readEntityFromNBT(par1NBTTagCompound);
104        }
105    
106        public int func_82329_d()
107        {
108            return this.art.sizeX;
109        }
110    
111        public int func_82330_g()
112        {
113            return this.art.sizeY;
114        }
115    
116        /**
117         * Drop the item currently on this item frame.
118         */
119        public void dropItemStack()
120        {
121            this.entityDropItem(new ItemStack(Item.painting), 0.0F);
122        }
123    }