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 field_77843_a; 011 012 public ItemHoe(int par1, EnumToolMaterial par2EnumToolMaterial) 013 { 014 super(par1); 015 this.field_77843_a = par2EnumToolMaterial; 016 this.maxStackSize = 1; 017 this.setMaxDamage(par2EnumToolMaterial.getMaxUses()); 018 this.setTabToDisplayOn(CreativeTabs.tabTools); 019 } 020 021 public boolean tryPlaceIntoWorld(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int par4, int par5, int par6, int par7, float par8, float par9, float par10) 022 { 023 if (!par2EntityPlayer.canPlayerEdit(par4, par5, par6)) 024 { 025 return false; 026 } 027 else 028 { 029 UseHoeEvent event = new UseHoeEvent(par2EntityPlayer, par1ItemStack, par3World, par4, par5, par6); 030 if (MinecraftForge.EVENT_BUS.post(event)) 031 { 032 return false; 033 } 034 if (event.isHandeled()) 035 { 036 par1ItemStack.damageItem(1, par2EntityPlayer); 037 return true; 038 } 039 040 int var11 = par3World.getBlockId(par4, par5, par6); 041 int var12 = par3World.getBlockId(par4, par5 + 1, par6); 042 043 if ((par7 == 0 || var12 != 0 || var11 != Block.grass.blockID) && var11 != Block.dirt.blockID) 044 { 045 return false; 046 } 047 else 048 { 049 Block var13 = Block.tilledField; 050 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); 051 052 if (par3World.isRemote) 053 { 054 return true; 055 } 056 else 057 { 058 par3World.setBlockWithNotify(par4, par5, par6, var13.blockID); 059 par1ItemStack.damageItem(1, par2EntityPlayer); 060 return true; 061 } 062 } 063 } 064 } 065 066 @SideOnly(Side.CLIENT) 067 068 /** 069 * Returns True is the item is renderer in full 3D when hold. 070 */ 071 public boolean isFull3D() 072 { 073 return true; 074 } 075 076 public String func_77842_f() 077 { 078 return this.field_77843_a.toString(); 079 } 080 }