package net.tropicraft.item;
import java.util.List;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.tropicraft.entity.projectile.EntityDart;
import net.tropicraft.registry.TCCreativeTabRegistry;
import net.tropicraft.registry.TCItemRegistry;
import net.tropicraft.util.TropicraftUtils;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemDartGun extends ItemTropicraft {
/* 3-18-2015
*
* Current behavior:
* - if empty blowgun, it finds first dart and uses the effect from that
* - if blowgun of a type, it finds first dart but uses the blowguns type, not dart type */
public ItemDartGun() {
maxStackSize = 1;
setCreativeTab(TCCreativeTabRegistry.tabCombat);
}
/* @SideOnly(Side.CLIENT)
@Override
public void addInformation(ItemStack itemstack, EntityPlayer ent, List list, boolean wat) {
if (itemstack.getItemDamage() == 0)
return;
list.clear();
list.add("Blow Gun of " + StatCollector.translateToLocal("dart.tropicraft:" + ItemCurare.effectNames[itemstack.getItemDamage() - 1] + ".name"));
}*/
/**
* returns a list of items with the same ID, but different meta (eg: dye returns 16 items)
*/
@Override
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List par3List) {
par3List.add(new ItemStack(item, 1, 0));
/* for (int i = 0; i < ItemDart.dartNames.length; ++i) {
par3List.add(new ItemStack(item, 1, i + 1));
}*/
}
@Override
public int getMaxItemUseDuration(ItemStack itemstack) {
return 25000;
}
@Override
public EnumAction getItemUseAction(ItemStack itemstack) {
return EnumAction.bow;
}
@Override
public void onPlayerStoppedUsing(ItemStack itemstack, World world, EntityPlayer entityplayer, int i) {
//if (entityplayer.capabilities.isCreativeMode || itemstack.getItemDamage() > 0) {
int j = getMaxItemUseDuration(itemstack) - i;
float f = (float) j / 20F;
f = (f * f + f * 2.0F) / 3F;
if ((double) f < 0.10000000000000001D) {
return;
}
if (f > 1.0F) {
f = 1.0F;
}
//EntityDart dart = new EntityDart(world, entityplayer, f * 2.0F, (short)(itemstack.getItemDamage() - 1));
itemstack.damageItem(1, entityplayer);
world.playSoundAtEntity(entityplayer, "dartblow", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F) + f * 0.5F);
int slot = 0;
/*for (ItemStack stack : entityplayer.inventory.mainInventory) {
if (stack != null && stack.getItem() == TCItemRegistry.dart && stack.getItemDamage() == itemstack.getItemDamage() - 1) {
break;
}
slot++;
}*/
slot = TropicraftUtils.getSlotOfItem(entityplayer.inventory, TCItemRegistry.dart);
if (!world.isRemote) {
if (slot > -1 || entityplayer.capabilities.isCreativeMode) {
ItemStack dartStack;
if (slot > -1)
dartStack = entityplayer.inventory.mainInventory[slot];
else
dartStack = new ItemStack(TCItemRegistry.dart, 1, world.rand.nextInt(ItemDart.dartNames.length));
if (!entityplayer.capabilities.isCreativeMode) {
if (dartStack.stackSize > 1) {
dartStack.stackSize--;
} else {
entityplayer.inventory.mainInventory[slot] = null;
entityplayer.inventoryContainer.detectAndSendChanges();
}
}
if (itemstack.getItemDamage() == 0) {
EntityDart entitydart = new EntityDart(world, entityplayer, f * 2.0F, (short)(dartStack.getItemDamage()));
world.spawnEntityInWorld(entitydart);
} else {
EntityDart entitydart = new EntityDart(world, entityplayer, f * 2.0F, (short)(itemstack.getItemDamage() - 1));
world.spawnEntityInWorld(entitydart);
}
}
}
//}
}
@Override
public ItemStack onEaten(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {
return par1ItemStack;
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {
//if (entityplayer.capabilities.isCreativeMode/* || itemstack.getItemDamage() > 0*/) {
entityplayer.setItemInUse(itemstack, getMaxItemUseDuration(itemstack));
//}
return itemstack;
}
}