package com.vapourdrive.harderstart.items;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import com.vapourdrive.harderstart.HS_ModInfo;
import com.vapourdrive.harderstart.HarderStart;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class FlintSpear extends Item
{
private final Item.ToolMaterial effect;
/**
* TODO - implement spear throwing
*
* @param material
*/
FlintSpear(Item.ToolMaterial material)
{
effect = material;
maxStackSize = 1;
setCreativeTab(HarderStart.tabharderstart);
setUnlocalizedName(HS_ItemInfo.FlintSpearName);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register)
{
itemIcon = register.registerIcon(HS_ModInfo.RESOURSE_LOCATION + HS_ItemInfo.FlintSpearName);
}
public float func_150931_i()
{
return this.effect.getDamageVsEntity();
}
@Override
public float func_150893_a(ItemStack stack, Block block)
{
if (block == Blocks.web)
{
return 8.0F;
}
else
{
Material material = block.getMaterial();
return material != Material.plants && material != Material.vine && material != Material.coral && material != Material.leaves
&& material != Material.gourd ? 1.0F : 1.5F;
}
}
/**
* Current implementations of this method in child classes do not use the
* entry argument beside ev. They just raise the damage on the stack.
*/
@Override
public boolean hitEntity(ItemStack stack, EntityLivingBase entity1, EntityLivingBase entity2)
{
stack.damageItem(1, entity2);
return true;
}
/**
* Returns True is the item is renderer in full 3D when hold.
*/
@Override
@SideOnly(Side.CLIENT)
public boolean isFull3D()
{
return true;
}
/**
* returns the action that specifies what animation to play when the items
* is being used
*/
@Override
public EnumAction getItemUseAction(ItemStack stack)
{
return EnumAction.bow;
}
/**
* How long it takes to use or consume an item
*/
@Override
public int getMaxItemUseDuration(ItemStack stack)
{
return 72000;
}
@Override
public boolean func_150897_b(Block block)
{
return block == Blocks.web;
}
/**
* Return the name for this tool's material.
*/
public String getToolMaterialName()
{
return this.effect.toString();
}
@Override
public void onPlayerStoppedUsing(ItemStack stack, World world, EntityPlayer player, int duration)
{
int j = this.getMaxItemUseDuration(stack) - duration;
float f = (float) j / 20.0F;
f = (f * f + f * 2.0F) / 3.0F;
if ((double) f < 0.1D)
{
return;
}
if (f > 1.0F)
{
f = 1.0F;
}
// EntityFlintSpear entityspear = new EntityFlintSpear(world, player, f
// * 2.0F);
//
// if (f == 1.0F)
// {
// entityspear.setIsCritical(true);
// }
//
// stack.damageItem(1, player);
// world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F /
// (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
//
// if (!world.isRemote)
// {
// world.spawnEntityInWorld(entityspear);
// }
}
@Override
public ItemStack onEaten(ItemStack stack, World p_77654_2_, EntityPlayer p_77654_3_)
{
return stack;
}
/**
* Called whenever this item is equipped and the right mouse button is
* pressed. Args: itemStack, world, entityPlayer
*/
@Override
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
{
// player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
return stack;
}
}