mirror of
https://github.com/KAMKEEL/CustomNPC-Plus.git
synced 2026-11-13 19:34:09 +00:00
117 lines
3.8 KiB
Java
117 lines
3.8 KiB
Java
package noppes.npcs.items;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.item.EnumAction;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.nbt.NBTTagCompound;
|
|
import net.minecraft.world.World;
|
|
import noppes.npcs.CustomItems;
|
|
import noppes.npcs.config.ConfigMain;
|
|
import noppes.npcs.entity.EntityProjectile;
|
|
import org.lwjgl.opengl.GL11;
|
|
|
|
public class ItemMachineGun extends ItemNpcInterface{
|
|
|
|
public ItemMachineGun(int par1) {
|
|
super(par1);
|
|
this.setMaxDamage(80);
|
|
setCreativeTab(CustomItems.tabWeapon);
|
|
}
|
|
public void onPlayerStoppedUsing(ItemStack stack, World par2World, EntityPlayer player, int count) {
|
|
if(player.capabilities.isCreativeMode)
|
|
return;
|
|
|
|
int ticks = getMaxItemUseDuration(stack) - count;
|
|
int shotsleft = stack.stackTagCompound.getInteger("ShotsLeft") - ticks/6;
|
|
if(stack.stackTagCompound.getBoolean("Reloading2")){
|
|
shotsleft = ticks/5;
|
|
if(ticks > 40)
|
|
shotsleft = 8;
|
|
if(shotsleft > 1){
|
|
stack.stackTagCompound.setInteger("ShotsLeft", shotsleft);
|
|
stack.stackTagCompound.setBoolean("Reloading2", false);
|
|
}
|
|
}
|
|
else if(shotsleft <= 0){
|
|
stack.stackTagCompound.setBoolean("Reloading2", true);
|
|
stack.damageItem(1, player);
|
|
}
|
|
else
|
|
stack.stackTagCompound.setInteger("ShotsLeft", shotsleft);
|
|
}
|
|
|
|
@Override
|
|
public void onUsingTick(ItemStack stack, EntityPlayer player, int count)
|
|
{
|
|
if(player.worldObj.isRemote){
|
|
return;
|
|
}
|
|
|
|
int ticks = getMaxItemUseDuration(stack) - count;
|
|
if(ticks % 6 != 0){
|
|
return;
|
|
}
|
|
|
|
int shotsleft = stack.stackTagCompound.getInteger("ShotsLeft") - ticks/6;
|
|
if(!player.capabilities.isCreativeMode || !ConfigMain.GunsEnabled){
|
|
if(stack.stackTagCompound.getBoolean("Reloading2") && hasItem(player, CustomItems.bulletBlack)){
|
|
if(ticks > 0 && ticks <= 24){
|
|
player.worldObj.playSoundAtEntity(player, "customnpcs:gun.ak47.load", 1.0F,1);
|
|
}
|
|
return;
|
|
}
|
|
else if((shotsleft <= 0 || !hasItem(player, CustomItems.bulletBlack)) || !ConfigMain.GunsEnabled)
|
|
{
|
|
player.worldObj.playSoundAtEntity(player, "customnpcs:gun.empty", 1.0F,1);
|
|
return;
|
|
}
|
|
}else{
|
|
stack.stackTagCompound.removeTag("Reloading2");
|
|
}
|
|
EntityProjectile projectile = new EntityProjectile(player.worldObj, player, new ItemStack(CustomItems.bulletBlack,1, 0), false);
|
|
projectile.damage = 4;
|
|
projectile.setSpeed(40);
|
|
projectile.shoot(2);
|
|
|
|
if(!player.capabilities.isCreativeMode)
|
|
consumeItem(player, CustomItems.bulletBlack);
|
|
|
|
player.worldObj.playSoundAtEntity(player, "customnpcs:gun.pistol.shot", 0.9F, itemRand.nextFloat() * 0.3F + 0.8F);
|
|
player.worldObj.spawnEntityInWorld(projectile);
|
|
|
|
|
|
}
|
|
@Override
|
|
public void renderSpecial(){
|
|
GL11.glRotatef(-6, 0, 0, 1f);
|
|
GL11.glScalef(0.8f, 0.7f,0.7f);
|
|
GL11.glTranslatef(0.2f, 0.0f, 0.2F);
|
|
}
|
|
/**
|
|
* Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer
|
|
*/
|
|
@Override
|
|
public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
|
|
{
|
|
if(stack.stackTagCompound == null)
|
|
stack.stackTagCompound = new NBTTagCompound();
|
|
if(!player.capabilities.isCreativeMode && !hasItem(player, CustomItems.bulletBlack))
|
|
stack.stackTagCompound.setBoolean("Reloading2", true);
|
|
player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
|
|
return stack;
|
|
}
|
|
@Override
|
|
public int getMaxItemUseDuration(ItemStack par1ItemStack)
|
|
{
|
|
return 72000;
|
|
}
|
|
|
|
public EnumAction getItemUseAction(ItemStack stack)
|
|
{
|
|
if(stack.stackTagCompound == null || !stack.stackTagCompound.getBoolean("Reloading2"))
|
|
return EnumAction.bow;
|
|
|
|
return EnumAction.block;
|
|
}
|
|
}
|