    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    }