001 package net.minecraft.src; 002 003 import net.minecraftforge.common.MinecraftForge; 004 import net.minecraftforge.event.entity.UseHoeEvent; 005 import cpw.mods.fml.common.Side; 006 import cpw.mods.fml.common.asm.SideOnly; 007 008 public class ItemHoe extends Item 009 { 010 protected EnumToolMaterial theToolMaterial; 011 012 public ItemHoe(int par1, EnumToolMaterial par2EnumToolMaterial) 013 { 014 super(par1); 015 this.theToolMaterial = par2EnumToolMaterial; 016 this.maxStackSize = 1; 017 this.setMaxDamage(par2EnumToolMaterial.getMaxUses()); 018 this.setCreativeTab(CreativeTabs.tabTools); 019 } 020 021 /** 022 * Callback for item usage. If the item does something special on right clicking, he will have one of those. Return 023 * True if something happen and false if it don't. This is for ITEMS, not BLOCKS 024 */ 025 public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) 026 { 027 if (!par2EntityPlayer.func_82247_a(par4, par5, par6, par7, par1ItemStack)) 028 { 029 return false; 030 } 031 else 032 { 033 UseHoeEvent event = new UseHoeEvent(par2EntityPlayer, par1ItemStack, par3World, par4, par5, par6); 034 if (MinecraftForge.EVENT_BUS.post(event)) 035 { 036 return false; 037 } 038 if (event.isHandeled()) 039 { 040 par1ItemStack.damageItem(1, par2EntityPlayer); 041 return true; 042 } 043 044 int var11 = par3World.getBlockId(par4, par5, par6); 045 int var12 = par3World.getBlockId(par4, par5 + 1, par6); 046 047 if ((par7 == 0 || var12 != 0 || var11 != Block.grass.blockID) && var11 != Block.dirt.blockID) 048 { 049 return false; 050 } 051 else 052 { 053 Block var13 = Block.tilledField; 054 par3World.playSoundEffect((double)((float)par4 + 0.5F), (double)((float)par5 + 0.5F), (double)((float)par6 + 0.5F), var13.stepSound.getStepSound(), (var13.stepSound.getVolume() + 1.0F) / 2.0F, var13.stepSound.getPitch() * 0.8F); 055 056 if (par3World.isRemote) 057 { 058 return true; 059 } 060 else 061 { 062 par3World.setBlockWithNotify(par4, par5, par6, var13.blockID); 063 par1ItemStack.damageItem(1, par2EntityPlayer); 064 return true; 065 } 066 } 067 } 068 } 069 070 @SideOnly(Side.CLIENT) 071 072 /** 073 * Returns True is the item is renderer in full 3D when hold. 074 */ 075 public boolean isFull3D() 076 { 077 return true; 078 } 079 080 public String func_77842_f() 081 { 082 return this.theToolMaterial.toString(); 083 } 084 }