001 package net.minecraft.item;
002
003 public enum EnumArmorMaterial
004 {
005 CLOTH(5, new int[]{1, 3, 2, 1}, 15),
006 CHAIN(15, new int[]{2, 5, 4, 1}, 12),
007 IRON(15, new int[]{2, 6, 5, 2}, 9),
008 GOLD(7, new int[]{2, 5, 3, 1}, 25),
009 DIAMOND(33, new int[]{3, 8, 6, 3}, 10);
010
011 /**
012 * Holds the maximum damage factor (each piece multiply this by it's own value) of the material, this is the item
013 * damage (how much can absorb before breaks)
014 */
015 private int maxDamageFactor;
016
017 /**
018 * Holds the damage reduction (each 1 points is half a shield on gui) of each piece of armor (helmet, plate, legs
019 * and boots)
020 */
021 private int[] damageReductionAmountArray;
022
023 /** Return the enchantability factor of the material */
024 private int enchantability;
025
026 //Added by forge for custom Armor materials.
027 public Item customCraftingMaterial = null;
028
029 private EnumArmorMaterial(int par3, int[] par4ArrayOfInteger, int par5)
030 {
031 this.maxDamageFactor = par3;
032 this.damageReductionAmountArray = par4ArrayOfInteger;
033 this.enchantability = par5;
034 }
035
036 /**
037 * Returns the durability for a armor slot of for this type.
038 */
039 public int getDurability(int par1)
040 {
041 return ItemArmor.getMaxDamageArray()[par1] * this.maxDamageFactor;
042 }
043
044 /**
045 * Return the damage reduction (each 1 point is a half a shield on gui) of the piece index passed (0 = helmet, 1 =
046 * plate, 2 = legs and 3 = boots)
047 */
048 public int getDamageReductionAmount(int par1)
049 {
050 return this.damageReductionAmountArray[par1];
051 }
052
053 /**
054 * Return the enchantability factor of the material.
055 */
056 public int getEnchantability()
057 {
058 return this.enchantability;
059 }
060
061 /**
062 * Return the crafting material for this armor material, used to determine the item that can be used to repair an
063 * armor piece with an anvil
064 */
065 public int getArmorCraftingMaterial()
066 {
067 switch (this)
068 {
069 case CLOTH: return Item.leather.itemID;
070 case CHAIN: return Item.ingotIron.itemID;
071 case GOLD: return Item.ingotGold.itemID;
072 case IRON: return Item.ingotIron.itemID;
073 case DIAMOND: return Item.diamond.itemID;
074 default: return (customCraftingMaterial == null ? 0 : customCraftingMaterial.itemID);
075 }
076 }
077 }