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 }