    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.shiftedIndex;
    070                case CHAIN:   return Item.ingotIron.shiftedIndex;
    071                case GOLD:    return Item.ingotGold.shiftedIndex;
    072                case IRON:    return Item.ingotIron.shiftedIndex;
    073                case DIAMOND: return Item.diamond.shiftedIndex;
    074                default:      return (customCraftingMaterial == null ? 0 : customCraftingMaterial.shiftedIndex);
    075            }
    076        }
    077    }