001package net.minecraft.entity.item;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import java.util.ArrayList;
006import net.minecraft.entity.EntityHanging;
007import net.minecraft.item.Item;
008import net.minecraft.item.ItemStack;
009import net.minecraft.nbt.NBTTagCompound;
010import net.minecraft.util.EnumArt;
011import net.minecraft.world.World;
012
013public 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 arraylist = new ArrayList();
026        EnumArt[] aenumart = EnumArt.values();
027        int i1 = aenumart.length;
028
029        for (int j1 = 0; j1 < i1; ++j1)
030        {
031            EnumArt enumart = aenumart[j1];
032            this.art = enumart;
033            this.setDirection(par5);
034
035            if (this.onValidSurface())
036            {
037                arraylist.add(enumart);
038            }
039        }
040
041        if (!arraylist.isEmpty())
042        {
043            this.art = (EnumArt)arraylist.get(this.rand.nextInt(arraylist.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[] aenumart = EnumArt.values();
054        int i1 = aenumart.length;
055
056        for (int j1 = 0; j1 < i1; ++j1)
057        {
058            EnumArt enumart = aenumart[j1];
059
060            if (enumart.title.equals(par6Str))
061            {
062                this.art = enumart;
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 s = par1NBTTagCompound.getString("Motive");
085        EnumArt[] aenumart = EnumArt.values();
086        int i = aenumart.length;
087
088        for (int j = 0; j < i; ++j)
089        {
090            EnumArt enumart = aenumart[j];
091
092            if (enumart.title.equals(s))
093            {
094                this.art = enumart;
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}