    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.shiftedIndex;
    097                case IRON:    return Item.ingotIron.shiftedIndex;
    098                case EMERALD: return Item.diamond.shiftedIndex;
    099                default:      return (customCraftingMaterial == null ? 0 : customCraftingMaterial.shiftedIndex);
    100            }
    101        }
    102    }