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    }