001 package net.minecraft.item;
002
003 import net.minecraft.block.Block;
004
005 public enum EnumToolMaterial
006 {
007 WOOD(0, 59, 2.0F, 0, 15),
008 STONE(1, 131, 4.0F, 1, 5),
009 IRON(2, 250, 6.0F, 2, 14),
010 EMERALD(3, 1561, 8.0F, 3, 10),
011 GOLD(0, 32, 12.0F, 0, 22);
012
013 /**
014 * The level of material this tool can harvest (3 = DIAMOND, 2 = IRON, 1 = STONE, 0 = IRON/GOLD)
015 */
016 private final int harvestLevel;
017
018 /**
019 * The number of uses this material allows. (wood = 59, stone = 131, iron = 250, diamond = 1561, gold = 32)
020 */
021 private final int maxUses;
022
023 /**
024 * The strength of this tool material against blocks which it is effective against.
025 */
026 private final float efficiencyOnProperMaterial;
027
028 /** Damage versus entities. */
029 private final int damageVsEntity;
030
031 /** Defines the natural enchantability factor of the material. */
032 private final int enchantability;
033
034 //Added by forge for custom Armor materials.
035 public Item customCraftingMaterial = null;
036
037 private EnumToolMaterial(int par3, int par4, float par5, int par6, int par7)
038 {
039 this.harvestLevel = par3;
040 this.maxUses = par4;
041 this.efficiencyOnProperMaterial = par5;
042 this.damageVsEntity = par6;
043 this.enchantability = par7;
044 }
045
046 /**
047 * The number of uses this material allows. (wood = 59, stone = 131, iron = 250, diamond = 1561, gold = 32)
048 */
049 public int getMaxUses()
050 {
051 return this.maxUses;
052 }
053
054 /**
055 * The strength of this tool material against blocks which it is effective against.
056 */
057 public float getEfficiencyOnProperMaterial()
058 {
059 return this.efficiencyOnProperMaterial;
060 }
061
062 /**
063 * Damage versus entities.
064 */
065 public int getDamageVsEntity()
066 {
067 return this.damageVsEntity;
068 }
069
070 /**
071 * The level of material this tool can harvest (3 = DIAMOND, 2 = IRON, 1 = STONE, 0 = IRON/GOLD)
072 */
073 public int getHarvestLevel()
074 {
075 return this.harvestLevel;
076 }
077
078 /**
079 * Return the natural enchantability factor of the material.
080 */
081 public int getEnchantability()
082 {
083 return this.enchantability;
084 }
085
086 /**
087 * Return the crafting material for this tool material, used to determine the item that can be used to repair a tool
088 * with an anvil
089 */
090 public int getToolCraftingMaterial()
091 {
092 switch (this)
093 {
094 case WOOD: return Block.planks.blockID;
095 case STONE: return Block.cobblestone.blockID;
096 case GOLD: return Item.ingotGold.itemID;
097 case IRON: return Item.ingotIron.itemID;
098 case EMERALD: return Item.diamond.itemID;
099 default: return (customCraftingMaterial == null ? 0 : customCraftingMaterial.itemID);
100 }
101 }
102 }