package minefantasy.item;
import java.util.List;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import minefantasy.entity.EntityBombThrown;
import minefantasy.system.data_minefantasy;
import mods.battlegear2.api.IOffhandDual;
import mods.battlegear2.api.PlayerEventChild.OffhandAttackEvent;
import mods.battlegear2.api.weapons.IBattlegearWeapon;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.Icon;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
/**
*
* @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 ItemBombMF extends ItemMedieval implements IBattlegearWeapon, IOffhandDual
{
/**
* 0 = shrapnel
* 1 = fire
* 2 = poison
* 3 = concussion
*/
public static Icon[] icons = new Icon[4];
public ItemBombMF(int i)
{
this(i, true);
}
public ItemBombMF(int i, boolean tab) {
super(i, false, 16);
setHasSubtypes(true);
if(tab);
this.setCreativeTab(CreativeTabs.tabCombat);
}
@Override
public String getItemDisplayName(ItemStack item)
{
int type = item.getItemDamage();
if (type == 0) {
return StatCollector.translateToLocal("bomb.mf.shrapnel");
}
if (type == 1) {
return StatCollector.translateToLocal("bomb.mf.fire");
}
if (type == 2) {
return StatCollector.translateToLocal("bomb.mf.poison");
}
if (type == 3) {
return StatCollector.translateToLocal("bomb.mf.concussion");
}
return StatCollector.translateToLocal("bomb.mf");
}
@Override
public Icon getIconFromDamage(int dam)
{
if(dam >= icons.length)
{
dam = icons.length-1;
}
return icons[dam];
}
@Override
public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer player)
{
if(player.isSwingInProgress)
return item;
player.setItemInUse(item, this.getMaxItemUseDuration(item));
world.playSoundAtEntity(player, "random.fuse", 0.2F, 1);
return item;
}
//THROWS TIMED BOMBS
@Override
public void onPlayerStoppedUsing(ItemStack item, World world, EntityPlayer player, int useTime)
{
throwTimedItem(item, world, player, useTime);
}
private void throwTimedItem(ItemStack item, World world,
EntityPlayer player, int useTime) {
if (!player.capabilities.isCreativeMode)
{
--item.stackSize;
}
if(item.stackSize <= 0)
player.destroyCurrentEquippedItem();
if(!world.isRemote)
{
int type = item.getItemDamage();
world.spawnEntityInWorld(new EntityBombThrown(world, player, (int)useTime, type));
}
player.swingItem();
}
public void getSubItems(int id, CreativeTabs tabs, List list)
{
for(int a = 0; a < icons.length; a ++)
{
list.add(new ItemStack(id, 1, a));
}
}
public int getMaxItemUseDuration(ItemStack item)
{
return 20;
}
@Override
public ItemStack onEaten(ItemStack item, World world, EntityPlayer player)
{
onPlayerStoppedUsing(item, world, player, 0);
return item;
}
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IconRegister reg)
{
this.icons[0] = reg.registerIcon("MineFantasy:Weapon/bomb/bomb_base");
this.icons[1] = reg.registerIcon("MineFantasy:Weapon/bomb/bomb_fire");
this.icons[2] = reg.registerIcon("MineFantasy:Weapon/bomb/bomb_poison");
this.icons[3] = reg.registerIcon("MineFantasy:Weapon/bomb/bomb_concussion");
}
@Override
public boolean sheatheOnBack(ItemStack item)
{
return false;
}
@Override
public boolean allowOffhand(ItemStack mainhand, ItemStack offhand)
{
return true;
}
@Override
public boolean isOffhandHandDual(ItemStack off)
{
return true;
}
@Override
public boolean offhandAttackEntity(OffhandAttackEvent event,
ItemStack mainhandItem, ItemStack offhandItem)
{
return true;
}
@Override
public boolean offhandClickAir(PlayerInteractEvent event,
ItemStack mainhandItem, ItemStack offhandItem)
{
return true;
}
@Override
public boolean offhandClickBlock(PlayerInteractEvent event,
ItemStack mainhandItem, ItemStack offhandItem)
{
return true;
}
@Override
public void performPassiveEffects(Side effectiveSide,
ItemStack mainhandItem, ItemStack offhandItem)
{
}
}