package minefantasy.item;
import java.util.List;
import minefantasy.api.weapon.*;
import minefantasy.entity.EntityBombThrown;
import minefantasy.entity.EntityThrownSpear;
import minefantasy.system.IPublicMaterialItem;
import minefantasy.system.data_minefantasy;
import net.minecraft.block.Block;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ItemSword;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ArrowNockEvent;
/**
*
* @author Anonymous Productions
*
* Sources are provided for educational reasons.
* though small bits of code, or methods can be used in your own creations.
*/
public class ItemJavelin extends Item
{
private int weaponDamage;
public boolean isUsing;
public ItemJavelin(int id, int dam)
{
super(id);
this.setFull3D();
maxStackSize = 8;
setCreativeTab(ItemListMF.tabWeapon);
weaponDamage = dam;
}
@Override
public void addInformation(ItemStack item, EntityPlayer player, List desc, boolean flag) {
if(item.hasTagCompound())
{
if(item.getTagCompound().hasKey("Sharp"))
{
int sharp = item.getTagCompound().getInteger("Sharp");
desc.add("Sharpened: " + sharp);
}
}
super.addInformation(item, player, desc, flag);
}
public int getDamageVsEntity(Entity entity)
{
return 2;
}
public int getMaxItemUseDuration(ItemStack item)
{
return 72000;
}
public EnumAction getItemUseAction(ItemStack item)
{
return EnumAction.bow;
}
public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player)
{
player.setItemInUse(item, this.getMaxItemUseDuration(item));
return item;
}
public void onPlayerStoppedUsing(ItemStack item, World world, EntityPlayer player, int time)
{
if(item.itemID != itemID)return;
if(player.isSwingInProgress)return;
int var6 = this.getMaxItemUseDuration(item) - time;
float var7 = (float)var6 / 20.0F;
var7 = (var7 * var7 + var7 * 2.0F) / 3.0F;
if ((double)var7 < 0.1D)
{
return;
}
if (var7 > 1.0F)
{
var7 = 1.0F;
}
var7 += 0.5F;
if(!world.isRemote)
{
ItemStack itemspear = item.copy();
itemspear.stackSize = 1;
EntityThrownSpear spear = new EntityThrownSpear(world, player, var7).setSpear(itemspear);
world.playSoundAtEntity(player, data_minefantasy.sound("spearThrow"), 1.2F, 0.5F / (itemRand.nextFloat() * 0.5F + 1F));
if(player.capabilities.isCreativeMode)
{
spear.canBePickedUp = 2;
}
world.spawnEntityInWorld(spear);
spear.syncSpear();
}
if(!player.capabilities.isCreativeMode)
{
--item.stackSize;
if(item.stackSize <= 0)
player.destroyCurrentEquippedItem();
}
player.swingItem();
}
public int getSpearDamage() {
return weaponDamage;
}
public int getBreakChance() {
return 40;
}
@Override
public Item setUnlocalizedName(String name)
{
this.setTextureName("minefantasy:Weapon/"+name);
return super.setUnlocalizedName(name);
}
}