aether-legacy/src/main/java/com/legacy/aether/items/weapons/projectile/ItemDartShooter.java
2020-07-13 23:47:54 -07:00

170 lines
4.5 KiB
Java

package com.legacy.aether.items.weapons.projectile;
import java.util.List;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import com.legacy.aether.Aether;
import com.legacy.aether.entities.projectile.darts.EntityDartBase;
import com.legacy.aether.entities.projectile.darts.EntityDartEnchanted;
import com.legacy.aether.entities.projectile.darts.EntityDartGolden;
import com.legacy.aether.entities.projectile.darts.EntityDartPoison;
import com.legacy.aether.items.ItemsAether;
import com.legacy.aether.items.util.EnumDartShooterType;
import com.legacy.aether.registry.creative_tabs.AetherCreativeTabs;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class ItemDartShooter extends Item {
@SideOnly(Side.CLIENT)
private IIcon goldenIcon;
@SideOnly(Side.CLIENT)
private IIcon poisonIcon;
@SideOnly(Side.CLIENT)
private IIcon enchantedIcon;
public ItemDartShooter() {
super();
this.setMaxStackSize(1);
this.setHasSubtypes(true);
this.setCreativeTab(AetherCreativeTabs.weapons);
}
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister registry) {
this.goldenIcon = registry.registerIcon(Aether.find("projectile/golden_dart_shooter"));
this.poisonIcon = registry.registerIcon(Aether.find("projectile/poison_dart_shooter"));
this.enchantedIcon = registry.registerIcon(Aether.find("projectile/enchanted_dart_shooter"));
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconFromDamage(int meta) {
return meta == 1 ? this.poisonIcon : meta == 2 ? this.enchantedIcon : this.goldenIcon;
}
@Override
public boolean isFull3D() {
return false;
}
@Override
public EnumRarity getRarity(ItemStack stack) {
return stack.getItemDamage() == 2 ? EnumRarity.rare : super.getRarity(stack);
}
@Override
@SuppressWarnings({"unchecked", "rawtypes"})
public void getSubItems(Item item, CreativeTabs tab, List subItems) {
for (int var4 = 0; var4 < EnumDartShooterType.values().length; ++var4) {
subItems.add(new ItemStack(this, 1, var4));
}
}
private int consumeItem(EntityPlayer player, Item itemID, int maxDamage) {
IInventory inv = player.inventory;
for (int i = 0; i < inv.getSizeInventory(); i++) {
ItemStack stack = inv.getStackInSlot(i);
if (stack == null) {
continue;
}
int damage = stack.getItemDamage();
if (maxDamage != 3) {
if (stack.getItem() == itemID && stack.getItemDamage() == maxDamage) {
if (!player.capabilities.isCreativeMode) {
--stack.stackSize;
}
if (stack.stackSize == 0) {
stack = null;
}
inv.setInventorySlotContents(i, stack);
return damage;
}
}
if (maxDamage == 3 && stack.getItem() == itemID) {
if (!player.capabilities.isCreativeMode) {
--stack.stackSize;
}
if (stack.stackSize == 0) {
stack = null;
}
inv.setInventorySlotContents(i, stack);
return 3;
}
}
return -1;
}
@Override
public String getUnlocalizedName(ItemStack itemstack) {
return this.getUnlocalizedName() + "_" + EnumDartShooterType.getType(itemstack.getItemDamage()).toString();
}
@Override
public ItemStack onItemRightClick(ItemStack heldItem, World world, EntityPlayer entityplayer) {
int consume;
if (!(entityplayer.capabilities.isCreativeMode)) {
consume = this.consumeItem(entityplayer, ItemsAether.dart, heldItem.getItemDamage());
} else {
consume = heldItem.getItemDamage();
}
if (consume != -1) {
world.playSoundEffect(entityplayer.posX, entityplayer.posY, entityplayer.posZ, "aether_legacy:projectile.dart_shooter.shoot", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 0.8F));
EntityDartBase dart = null;
if (consume == 1) {
dart = new EntityDartPoison(world, entityplayer, 1.0F);
} else if (consume == 2) {
dart = new EntityDartEnchanted(world, entityplayer, 1.0F);
} else if (consume == 0) {
dart = new EntityDartGolden(world, entityplayer, 1.0F);
}
if (!world.isRemote) {
world.spawnEntityInWorld(dart);
if (dart != null)
{
dart.setGravityVelocity(0.99F);
}
if (!(entityplayer.capabilities.isCreativeMode)) {
dart.canBePickedUp = 1;
}
if ((entityplayer.capabilities.isCreativeMode)) {
dart.canBePickedUp = 2;
}
}
}
return heldItem;
}
}