public class ItemGun extends Item {
int reloadTimer;
public ItemGun(int par1)
{
super(par1);
this.setCreativeTab(CreativeTabs.tabCombat);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IconRegister par1IconRegister)
{
super.itemIcon = par1IconRegister.registerIcon("so:2");
}
private int damageDecr;
private int damage;
public ItemGun(int var1, int var2, int var3)
{
super(var1);
super.maxStackSize = 1;
this.setMaxDamage(30);
this.setUnlocalizedName("Ak-74u");
this.setFull3D();
this.setCreativeTab(CreativeTabs.tabCombat);
this.damage = var2;
this.damageDecr = var3;
}
public void onUpdate(ItemStack i, World w, Entity e, int par4, boolean par5)
{
if(i.getTagCompound() == null)
{
i.setTagCompound(new NBTTagCompound());
}
if(e instanceof EntityPlayer && ((EntityPlayer)e).inventory.getCurrentItem() == i)
{
EntityPlayer p = (EntityPlayer) e;
if(i.getTagCompound().getInteger("Timer")>0)
{
i.getTagCompound().setInteger("Timer",i.getTagCompound().getInteger("Timer")-5);
}
}
}
/**
* called when the player releases the use item button. Args: itemstack, world, entityplayer, itemInUseCount
*/
public void onPlayerStoppedUsing(ItemStack var1, World var2, EntityPlayer var3, int var4)
{
boolean var5 = var3.capabilities.isCreativeMode;
int var6;
float var7;
if (var1.getTagCompound().getInteger("Timer") <= 0 && var1.getItemDamage() < 30)
{
var6 = this.getMaxItemUseDuration(var1) - var4;
var7 = 1.0F;
EntityBullet var8 = new EntityBullet(var2, var3, this.damage, this.damageDecr, false, var1.getDisplayName());
var2.playSoundAtEntity(var3, "ak_shoot", 1.0F, 1.0F);
var2.spawnEntityInWorld(var8);
var3.rotationPitch+=-5;
var1.damageItem(1, var3);
var1.getTagCompound().setInteger("Timer", 6);
}
else if (var1.getItemDamage() >= 30 && var3.inventory.hasItem(Guns.TestAmmo.itemID) && reloadTimer<=0)
{
{
var1.setItemDamage(0);
var2.playSoundAtEntity(var3, "reload", 1.0F, 1.0F);
var3.inventory.consumeInventoryItem(Guns.TestAmmo.itemID);
}
}
if (var1.getItemDamage() == 30 && !var2.isRemote )
{
reloadTimer=6;
var1.setItemDamage(var1.getItemDamage()+1);
}
if (reloadTimer>0 && !var2.isRemote)
{
--reloadTimer;
}
}
public EnumAction onFoodEaten(ItemStack var1, World var2, EntityPlayer var3)
{
return var1.getItemDamage() < 31 ? null : EnumAction.block;
}
/**
* How long it takes to use or consume an item
*/
public int getMaxItemUseDuration(ItemStack var1)
{
return 72000;
}
/**
* returns the action that specifies what animation to play when the items is being used
*/
public EnumAction getItemUseAction(ItemStack var1)
{
return var1.getItemDamage() < 31 ? null : EnumAction.block;
}
/**
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
*/
public ItemStack onItemRightClick(ItemStack var1, World var2, EntityPlayer var3)
{
var3.setItemInUse(var1, this.getMaxItemUseDuration(var1));
return var1;
}
public boolean onEntitySwing(EntityLiving var1, ItemStack var2)
{
return true;
}
/**
* Returns the strength of the stack against a given block. 1.0F base, (Quality+1)*2 if correct blocktype, 1.5F if
* sword
*/
public float getStrVsBlock(ItemStack var1, Block var2)
{
return 0.0F;
}
/**
* Returns the damage against a given entity.
*/
public int getDamageVsEntity(Entity var1)
{
return 0;
}
/**
* Current implementations of this method in child classes do not use the entry argument beside ev. They just raise
* the damage on the stack.
*/
public boolean hitEntity(ItemStack var1, EntityLiving var2, EntityLiving var3)
{
return false;
}
public boolean onBlockStartBreak(ItemStack var1, int var2, int var3, int var4, EntityPlayer var5)
{
return true;
}
}