2
0
Fork 0
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

165 lines
5.8 KiB
Java

package com.zivilon.cinder_loe.items;
import com.zivilon.cinder_loe.entity.projectile.EntityWarDart;
import com.zivilon.cinder_loe.LoECreativeTabs;
import lotr.common.dispenser.LOTRDispenseThrowingAxe;
import lotr.common.enchant.LOTREnchantment;
import lotr.common.enchant.LOTREnchantmentHelper;
import lotr.common.entity.projectile.LOTREntityThrowingAxe;
import lotr.common.item.LOTRMaterial;
import lotr.common.recipe.LOTRRecipes;
import net.minecraft.block.BlockDispenser;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.EnumCreatureAttribute;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.creativetab.CreativeTabs;
import java.util.List;
public class WarDart extends Item {
public IIcon[] icons;
public WarDart() {
this.setHasSubtypes(true);
setMaxStackSize(4);
this.setMaxDamage(0);
setCreativeTab(LoECreativeTabs.tabCombatLoE);
}
@Override
public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) {
if (itemStack.getItemDamage() > 0) {
if (!player.capabilities.isCreativeMode) {
--itemStack.stackSize;
}
world.playSoundAtEntity(player, "lotr:item.dart", 1.0F, 1.0F / (itemRand.nextFloat() * 0.4F + 1.2F));
if (!world.isRemote) {
world.spawnEntityInWorld(new EntityWarDart(world, player, itemStack));
}
}
return itemStack;
}
@Override
public IIcon getIconFromDamage(int damage) {
if (damage < 0 || damage >= icons.length) {
damage = 0;
}
return this.icons[damage];
}
@Override
public void registerIcons(IIconRegister iconRegister) {
this.icons = new IIcon[15];
this.icons[0] = iconRegister.registerIcon("lotr:war_dart_headless");
this.icons[1] = iconRegister.registerIcon("lotr:war_dart_copper");
this.icons[2] = iconRegister.registerIcon("lotr:war_dart_bronze");
this.icons[3] = iconRegister.registerIcon("lotr:war_dart_iron");
this.icons[4] = iconRegister.registerIcon("lotr:war_dart_orc");
this.icons[5] = iconRegister.registerIcon("lotr:war_dart_dwarven");
this.icons[6] = iconRegister.registerIcon("lotr:war_dart_uruk");
this.icons[7] = iconRegister.registerIcon("lotr:war_dart_blue_dwarven");
this.icons[8] = iconRegister.registerIcon("lotr:war_dart_black_uruk");
this.icons[9] = iconRegister.registerIcon("lotr:war_dart_elven");
this.icons[10] = iconRegister.registerIcon("lotr:war_dart_gilded_iron");
this.icons[11] = iconRegister.registerIcon("lotr:war_dart_red_dwarven");
this.icons[12] = iconRegister.registerIcon("lotr:war_dart_mithril");
this.icons[13] = iconRegister.registerIcon("lotr:war_dart_ancient");
this.icons[14] = iconRegister.registerIcon("lotr:war_dart_morgul");
}
public static String getDartMaterial(ItemStack item) {
switch(item.getItemDamage()) {
case 1:
return "copper";
case 2:
return "bronze";
case 3:
return "iron";
case 4:
return "orc";
case 5:
return "dwarven";
case 6:
return "uruk";
case 7:
return "blue_dwarven";
case 8:
return "black_uruk";
case 9:
return "elven";
case 10:
return "gilded_iron";
case 11:
return "red_dwarven";
case 12:
return "mithril";
case 13:
return "ancient";
case 14:
return "morgul";
default:
return "headless";
}
}
@Override
public String getUnlocalizedName(ItemStack item) {
return "item.war_dart_" + getDartMaterial(item);
}
@Override
public int getMetadata(int damage) {
return damage;
}
public static int getDamageFromMeta(int meta) {
switch(meta) {
case 1: return 3; // Copper
case 2: return 3; // Bronze
case 3: return 4; // Iron
case 4: return 5; // Orc
case 5: return 6; // Dwarven
case 6: return 6; // Uruk
case 7: return 6; // Blue Dwarven
case 8: return 6; // Black Uruk
case 9: return 6; // Elven
case 10: return 5; // Gilded Iron
case 11: return 6; // Red Dwarven
case 12: return 10; // Mithril
case 13: return 12; // Ancient
case 14: return 6; // Morgul
default: return 0;
}
}
@Override
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean advanced) {
int damageMeta = stack.getItemDamage();
if (damageMeta > 0) {
double damagePercent = getDamageFromMeta(damageMeta) * (1.0 / 8) * 100.0;
double roundedDamagePercent = 5 * Math.round(damagePercent / 5.0);
list.add(EnumChatFormatting.DARK_GREEN + "Ranged damage: " + roundedDamagePercent + "%");
}
}
@Override
public void getSubItems(Item item, CreativeTabs tab, List list) {
for (int i = 0; i < icons.length; i++) {
list.add(new ItemStack(item, 1, i));
}
}
}