package com.insane.illuminatedbows.addons.thaumcraft.items;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.StatCollector;
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 thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.wands.FocusUpgradeType;
import thaumcraft.api.wands.ItemFocusBasic;
import com.insane.illuminatedbows.EntityIlluminatedArrow;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemFocusIlluminating extends ItemFocusBasic {
public static AspectList visCost = new AspectList().add(Aspect.AIR, (int)(100*com.insane.illuminatedbows.Config.illuminatingFocusAerCost)).add(Aspect.FIRE, (int)(100*com.insane.illuminatedbows.Config.illuminatingFocusFireCost));
public ItemFocusIlluminating()
{
super();
this.setUnlocalizedName("focusIlluminating");
this.setMaxStackSize(1);
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister par1IconRegister) {
this.itemIcon = par1IconRegister.registerIcon("illuminatedbows:focus_illuminating");
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIconFromDamage(int par1) {
return this.itemIcon;
}
@Override
public int getFocusColor(ItemStack focusStack) {
return 0xFFFF00;
}
@Override
public EnumRarity getRarity(ItemStack stack)
{
return EnumRarity.rare;
}
@Override
public IIcon getFocusDepthLayerIcon(ItemStack stack) {
return null;
}
@Override
public IIcon getOrnament(ItemStack stack) {
return null;
}
@Override
public WandFocusAnimation getAnimation(ItemStack stack) {
return WandFocusAnimation.CHARGE;
}
@Override
public AspectList getVisCost(ItemStack stack) {
return visCost.copy();
}
@Override
public boolean isVisCostPerTick(ItemStack stack) {
return false;
}
/*@SuppressWarnings({ "unchecked", "rawtypes" })
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean blah)
{
list.add(StatCollector.translateToLocal("item.focus.cost"));
for (Aspect aspect : visCost.getAspectsSorted()) {
float amount = visCost.getAmount(aspect) / 100.0F;
list.add(" " + '\u00a7' + aspect.getChatcolor() + aspect.getName() + '\u00a7' + "r x " + amount);
}
}*/
@Override
public ItemStack onFocusRightClick(ItemStack itemstack, World world,
EntityPlayer player, MovingObjectPosition movingobjectposition) {
ArrowNockEvent event = new ArrowNockEvent(player, itemstack);
MinecraftForge.EVENT_BUS.post(event);
if (event.isCanceled())
{
return event.result;
}
player.setItemInUse(itemstack, 72000);
return itemstack;
}
@Override
public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player,
int count) {
}
@Override
public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world,
EntityPlayer player, int count) {
int j = 72000 - count;
ArrowLooseEvent event = new ArrowLooseEvent(player, itemstack, j);
MinecraftForge.EVENT_BUS.post(event);
if (event.isCanceled())
{
return;
}
j = event.charge;
if (player.capabilities.isCreativeMode||ThaumcraftApiHelper.consumeVisFromWand(itemstack, player, visCost, true,false))
{
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;
}
EntityIlluminatedArrow arrow = new EntityIlluminatedArrow(world, player, 2.0F*f);
arrow.setDamage(0);
arrow.setDeadOnLand(true);
arrow.isMagic(true);
world.playSoundAtEntity(player, "random.bow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
if (!world.isRemote) {
world.spawnEntityInWorld(arrow);
}
}
else
{
world.playSoundAtEntity(player, "thaumcraft:craftfail", 1.0F, 1.0F);
}
}
@Override
public String getSortingHelper(ItemStack itemstack) {
return "IF00";
}
@Override
public boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y,
int z, EntityPlayer player) {
return false;
}
@Override
public int getItemEnchantability() {
return 5;
}
@Override
public boolean isItemTool(ItemStack stack) {
return true;
}
@Override
public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack focusstack,
int rank) {
if (rank < 5)
return new FocusUpgradeType[]{FocusUpgradeType.frugal};
return null;
}
}