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