2013-04-28 02:25:06 -07:00

183 lines
5.0 KiB
Java

package mods.tinker.tconstruct.items.tools;
import java.util.List;
import mods.tinker.tconstruct.entity.projectile.LaunchedPotion;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Icon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class PotionLauncher extends Item
{
@SideOnly(Side.CLIENT)
private Icon[] icons;
public static final String[] textureNames = new String[] { "potionlauncher" };
public PotionLauncher(int par1)
{
super(par1);
this.maxStackSize = 1;
this.setCreativeTab(CreativeTabs.tabCombat);
this.setMaxDamage(3);
}
public ItemStack onEaten (ItemStack stack, World world, EntityPlayer player)
{
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
boolean loaded = tags.getBoolean("Loaded");
//boolean fired = tags.getBoolean("Fired");
if (!loaded)
{
tags.setBoolean("Loaded", true);
}
/*else if (fired)
{
tags.setBoolean("Loaded", false);
tags.setBoolean("Ready", false);
tags.setBoolean("Fired", false);
}*/
return stack;
}
public void onPlayerStoppedUsing (ItemStack stack, World world, EntityPlayer player, int time)
{
/*NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
boolean loaded = tags.getBoolean("Loaded");
boolean ready = tags.getBoolean("Ready");
boolean fired = tags.getBoolean("Fired");
if (loaded)
{
tags.setBoolean("Ready", true);
}
if (loaded && ready && fired)
{
tags.setBoolean("Loaded", false);
tags.setBoolean("Ready", false);
tags.setBoolean("Fired", false);
}*/
}
public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
{
/*NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
boolean loaded = tags.getBoolean("Loaded");
boolean ready = tags.getBoolean("Ready");
boolean fired = tags.getBoolean("Fired");
if (loaded && ready && !fired)
{
world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
if (!world.isRemote)
{
world.spawnEntityInWorld(new LaunchedPotion(world, player, stack));
}
tags.setBoolean("Fired", true);
}
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));*/
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
if (!tags.getBoolean("Loaded"))
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
return stack;
}
public void onUpdate (ItemStack stack, World world, Entity entity, int slot, boolean equipped)
{
/*if (equipped && entity instanceof EntityPlayer)
{
EntityPlayer player = ((EntityPlayer) entity);
if (!player.worldObj.isRemote)
System.out.println(player.getItemInUse());
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
//System.out.println("useTime "+((EntityPlayer) entity).getItemInUseCount());
}*/
}
/**
* How long it takes to use or consume an item
*/
public int getMaxItemUseDuration (ItemStack stack)
{
//if (!stack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Loaded"))
return 30;
//else
//return 72000;
}
/**
* returns the action that specifies what animation to play when the items is being used
*/
public EnumAction getItemUseAction (ItemStack stack)
{
if (!stack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Loaded"))
return EnumAction.bow;
else
return EnumAction.none;
}
@SideOnly(Side.CLIENT)
public void registerIcons (IconRegister par1IconRegister)
{
this.icons = new Icon[textureNames.length];
for (int i = 0; i < this.icons.length; ++i)
{
this.icons[i] = par1IconRegister.registerIcon("tinker:" + textureNames[i]);
}
}
@SideOnly(Side.CLIENT)
public Icon getIconFromDamage (int meta)
{
return icons[0];
}
@Override
public void getSubItems (int id, CreativeTabs tabs, List list)
{
ItemStack stack = new ItemStack(id, 1, 0);
NBTTagCompound compound = new NBTTagCompound();
NBTTagCompound tags = new NBTTagCompound();
compound.setCompoundTag("InfiTool", tags);
tags.setBoolean("Loaded", false);
stack.setTagCompound(compound);
list.add(stack);
}
public boolean swingItem (EntityPlayer player, ItemStack stack)
{
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
if (tags.getBoolean("Loaded"))
{
World world = player.worldObj;
world.playSoundAtEntity(player, "random.bow", 0.5F, 0.4F / (itemRand.nextFloat() * 0.4F + 0.8F));
if (!world.isRemote)
{
world.spawnEntityInWorld(new LaunchedPotion(world, player, stack));
}
tags.setBoolean("Loaded", false);
return false;
}
return true;
}
@Override
@SideOnly(Side.CLIENT)
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
{
list.add("Test Item");
}
}