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    }