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