/*******************************************************************************
* Copyright (c) 2015, Superloup10
*
* Wolf's Addons is distributed under the terms of the Minecraft Mod Public
* License 1.0, or MMPL. Please check the contents of the license located in
* https://www.dropbox.com/s/6l16rc7b1aks211/MMPL-1.0.txt
******************************************************************************/
package fr.wolf.addons.common.item;
import fr.wolf.addons.common.creativestabs.WolfCT;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.projectile.EntityArrow;
import net.minecraft.init.Items;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.entity.player.ArrowLooseEvent;
import net.minecraftforge.event.entity.player.ArrowNockEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
public class Bow extends Item
{
private static String[] bowpullname = new String[] {"_pull1", "_pull2", "_pull3"};
// private IIcon[] iconArray;
public Bow(int damage, String name)
{
this.setUnlocalizedName(name);
this.setFull3D();
this.maxStackSize = 1;
this.setMaxDamage(damage);
this.setCreativeTab(WolfCT.creativeTabsTools);
GameRegistry.registerItem(this, name);
}
/*
* @Override public IIcon getIcon(ItemStack stack, int renderPass, EntityPlayer player, ItemStack usingItem, int useRemaining) { if(usingItem != null && usingItem.getItem() == this) { int k = usingItem.getMaxItemUseDuration() - useRemaining; if(k >= 18) { return iconArray[2]; } if(k > 13) { return iconArray[1]; } if(k > 0) { return iconArray[0]; } } return getIconIndex(stack); }
*/
@Override
public void onPlayerStoppedUsing(ItemStack itemStack, World world, EntityPlayer player, int itemUseCount)
{
int j = this.getMaxItemUseDuration(itemStack) - itemUseCount;
ArrowLooseEvent event = new ArrowLooseEvent(player, itemStack, j);
MinecraftForge.EVENT_BUS.post(event);
if(event.isCanceled())
{
return;
}
j = event.charge;
boolean flag = player.capabilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantment.infinity.effectId, itemStack) > 0;
if(flag || player.inventory.hasItem(Items.arrow))
{
float f = j / 20.0F;
f = (f * f + f * 2.0F) / 3.0F;
if(f < 0.1D)
{
return;
}
if(f > 1.0F)
{
f = 1.0F;
}
EntityArrow entityarrow = new EntityArrow(world, player, f * 2.0F);
if(f == 1.0F)
{
entityarrow.setIsCritical(true);
}
int k = EnchantmentHelper.getEnchantmentLevel(Enchantment.power.effectId, itemStack);
if(k > 0)
{
entityarrow.setDamage(entityarrow.getDamage() + k * 0.5D + 0.5D);
}
int l = EnchantmentHelper.getEnchantmentLevel(Enchantment.punch.effectId, itemStack);
if(l > 0)
{
entityarrow.setKnockbackStrength(l);
}
if(EnchantmentHelper.getEnchantmentLevel(Enchantment.flame.effectId, itemStack) > 0)
{
entityarrow.setFire(100);
}
itemStack.damageItem(1, player);
world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
if(flag)
{
entityarrow.canBePickedUp = 2;
}
else
{
player.inventory.consumeInventoryItem(Items.arrow);
}
if(!world.isRemote)
{
world.spawnEntityInWorld(entityarrow);
}
}
}
@Override
public ItemStack onItemUseFinish(ItemStack itemStack, World world, EntityPlayer player)
{
return itemStack;
}
@Override
public int getMaxItemUseDuration(ItemStack itemStack)
{
return 72000;
}
@Override
public EnumAction getItemUseAction(ItemStack itemStack)
{
return EnumAction.BOW;
}
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player)
{
ArrowNockEvent event = new ArrowNockEvent(player, itemStack);
MinecraftForge.EVENT_BUS.post(event);
if(event.isCanceled())
{
return event.result;
}
if(player.capabilities.isCreativeMode || player.inventory.hasItem(Items.arrow))
{
player.setItemInUse(itemStack, this.getMaxItemUseDuration(itemStack));
}
return itemStack;
}
@Override
public int getItemEnchantability()
{
return 1;
}
/*
* @Override public void registerIcons(IIconRegister iconregister) { iconArray = new IIcon[bowpullname.length]; itemIcon = iconregister.registerIcon(this.getIconString()); for(int i = 0; i < bowpullname.length; i++) { iconArray[i] = iconregister.registerIcon(this.getIconString() + bowpullname[i]); } }
* @SideOnly(Side.CLIENT) public IIcon getItemIconForUseDuration(int par1) { return this.iconArray[par1]; }
*/
}