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 }