Files
CustomNPC-Plus/src/main/java/noppes/npcs/items/ItemCrossbow.java
T
KAMKEEL a31efb2dc3 1.7.10 Files
Files added
2018-09-13 12:03:28 -04:00

100 lines
3.3 KiB
Java

package noppes.npcs.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.EnumAction;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import noppes.npcs.CustomItems;
import noppes.npcs.entity.EntityProjectile;
import org.lwjgl.opengl.GL11;
public class ItemCrossbow extends ItemNpcInterface{
public ItemCrossbow(int par1) {
super(par1);
this.setMaxDamage(129);
setCreativeTab(CustomItems.tabWeapon);
}
public void onPlayerStoppedUsing(ItemStack stack, World par2World, EntityPlayer player, int count) {
if(player.worldObj.isRemote)
return;
if(stack.stackTagCompound.getInteger("IsLoaded") == 1 || player.capabilities.isCreativeMode) {
if(stack.stackTagCompound.getInteger("Reloading") == 1 && !player.capabilities.isCreativeMode) {
stack.stackTagCompound.setInteger("Reloading", 0);
return;
}
stack.damageItem(1, player);
EntityProjectile projectile = new EntityProjectile(player.worldObj, player, new ItemStack(Items.arrow, 1, 0), false);
projectile.damage = 10;
projectile.setSpeed(20);
projectile.setHasGravity(true);
projectile.shoot(2);
if(!player.capabilities.isCreativeMode)
consumeItem(player, CustomItems.crossbowBolt);
player.worldObj.playSoundAtEntity(player, "random.bow", 0.9F, itemRand.nextFloat() * 0.3F + 0.8F);
player.worldObj.spawnEntityInWorld(projectile);
stack.stackTagCompound.setInteger("IsLoaded", 0);
}
}
@Override
public void onUsingTick(ItemStack stack, EntityPlayer player, int count)
{
if(player.worldObj.isRemote){
return;
}
int ticks = getMaxItemUseDuration(stack) - count;
if(!player.capabilities.isCreativeMode){
if(stack.stackTagCompound.getInteger("Reloading") == 1 && hasItem(player, CustomItems.crossbowBolt)){
if(ticks == 20){
player.worldObj.playSoundAtEntity(player, "random.click", 1.0F,1);
stack.stackTagCompound.setInteger("IsLoaded", 1);
}
return;
}
}
}
@Override
public void renderSpecial(){
GL11.glRotatef(96, 1f, 0, 0);
GL11.glRotatef(-10, 0, 1f, 0);
GL11.glScalef(0.8f, 0.8f,0.8f);
GL11.glTranslatef(0.5f, -0.7f, -0.4F);
}
/**
* 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.crossbowBolt) && stack.stackTagCompound.getInteger("IsLoaded") == 0)
stack.stackTagCompound.setInteger("Reloading", 1);
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.getInteger("Reloading") == 0)
return EnumAction.bow;
return EnumAction.block;
}
}