001package net.minecraft.item;
002
003import cpw.mods.fml.relauncher.Side;
004import cpw.mods.fml.relauncher.SideOnly;
005import net.minecraft.client.renderer.texture.IconRegister;
006import net.minecraft.creativetab.CreativeTabs;
007import net.minecraft.entity.player.EntityPlayer;
008import net.minecraft.entity.projectile.EntityFishHook;
009import net.minecraft.util.Icon;
010import net.minecraft.world.World;
011
012public class ItemFishingRod extends Item
013{
014    @SideOnly(Side.CLIENT)
015    private Icon theIcon;
016
017    public ItemFishingRod(int par1)
018    {
019        super(par1);
020        this.setMaxDamage(64);
021        this.setMaxStackSize(1);
022        this.setCreativeTab(CreativeTabs.tabTools);
023    }
024
025    @SideOnly(Side.CLIENT)
026
027    /**
028     * Returns True is the item is renderer in full 3D when hold.
029     */
030    public boolean isFull3D()
031    {
032        return true;
033    }
034
035    @SideOnly(Side.CLIENT)
036
037    /**
038     * Returns true if this item should be rotated by 180 degrees around the Y axis when being held in an entities
039     * hands.
040     */
041    public boolean shouldRotateAroundWhenRendering()
042    {
043        return true;
044    }
045
046    /**
047     * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
048     */
049    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer)
050    {
051        if (par3EntityPlayer.fishEntity != null)
052        {
053            int i = par3EntityPlayer.fishEntity.catchFish();
054            par1ItemStack.damageItem(i, par3EntityPlayer);
055            par3EntityPlayer.swingItem();
056        }
057        else
058        {
059            par2World.playSoundAtEntity(par3EntityPlayer, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
060
061            if (!par2World.isRemote)
062            {
063                par2World.spawnEntityInWorld(new EntityFishHook(par2World, par3EntityPlayer));
064            }
065
066            par3EntityPlayer.swingItem();
067        }
068
069        return par1ItemStack;
070    }
071
072    @SideOnly(Side.CLIENT)
073    public void registerIcons(IconRegister par1IconRegister)
074    {
075        super.registerIcons(par1IconRegister);
076        this.theIcon = par1IconRegister.registerIcon("fishingRod_empty");
077    }
078
079    @SideOnly(Side.CLIENT)
080    public Icon func_94597_g()
081    {
082        return this.theIcon;
083    }
084}