    001    package net.minecraft.item;
    002
    003    import net.minecraft.creativetab.CreativeTabs;
    004    import net.minecraft.entity.EntityHanging;
    005    import net.minecraft.entity.item.EntityItemFrame;
    006    import net.minecraft.entity.item.EntityPainting;
    007    import net.minecraft.entity.player.EntityPlayer;
    008    import net.minecraft.util.Direction;
    009    import net.minecraft.world.World;
    010
    011    public class ItemHangingEntity extends Item
    012    {
    013        private final Class hangingEntityClass;
    014
    015        public ItemHangingEntity(int par1, Class par2Class)
    016        {
    017            super(par1);
    018            this.hangingEntityClass = par2Class;
    019            this.setCreativeTab(CreativeTabs.tabDecorations);
    020        }
    021
    022        /**
    023         * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return
    024         * True if something happen and false if it don't. This is for ITEMS, not BLOCKS
    025         */
    026        public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10)
    027        {
    028            if (par7 == 0)
    029            {
    030                return false;
    031            }
    032            else if (par7 == 1)
    033            {
    034                return false;
    035            }
    036            else
    037            {
    038                int var11 = Direction.vineGrowth[par7];
    039                EntityHanging var12 = this.createHangingEntity(par3World, par4, par5, par6, var11);
    040
    041                if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6, par7, par1ItemStack))
    042                {
    043                    return false;
    044                }
    045                else
    046                {
    047                    if (var12 != null && var12.onValidSurface())
    048                    {
    049                        if (!par3World.isRemote)
    050                        {
    051                            par3World.spawnEntityInWorld(var12);
    052                        }
    053
    054                        --par1ItemStack.stackSize;
    055                    }
    056
    057                    return true;
    058                }
    059            }
    060        }
    061
    062        /**
    063         * Create the hanging entity associated to this item.
    064         */
    065        private EntityHanging createHangingEntity(World par1World, int par2, int par3, int par4, int par5)
    066        {
    067            return (EntityHanging)(this.hangingEntityClass == EntityPainting.class ? new EntityPainting(par1World, par2, par3, par4, par5) : (this.hangingEntityClass == EntityItemFrame.class ? new EntityItemFrame(par1World, par2, par3, par4, par5) : null));
    068        }
    069    }