package net.minecraft.world.item; import java.util.EnumMap; import java.util.List; import java.util.function.Supplier; import net.minecraft.Util; import net.minecraft.core.Holder; import net.minecraft.core.Registry; import net.minecraft.core.registries.BuiltInRegistries; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; import net.minecraft.world.item.crafting.Ingredient; public class ArmorMaterials { public static final Holder LEATHER = register( "leather", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 1); enumMap.put(ArmorItem.Type.LEGGINGS, 2); enumMap.put(ArmorItem.Type.CHESTPLATE, 3); enumMap.put(ArmorItem.Type.HELMET, 1); enumMap.put(ArmorItem.Type.BODY, 3); }), 15, SoundEvents.ARMOR_EQUIP_LEATHER, 0.0F, 0.0F, () -> Ingredient.of(Items.LEATHER), List.of( new ArmorMaterial.Layer(ResourceLocation.withDefaultNamespace("leather"), "", true), new ArmorMaterial.Layer(ResourceLocation.withDefaultNamespace("leather"), "_overlay", false) ) ); public static final Holder CHAIN = register("chainmail", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 1); enumMap.put(ArmorItem.Type.LEGGINGS, 4); enumMap.put(ArmorItem.Type.CHESTPLATE, 5); enumMap.put(ArmorItem.Type.HELMET, 2); enumMap.put(ArmorItem.Type.BODY, 4); }), 12, SoundEvents.ARMOR_EQUIP_CHAIN, 0.0F, 0.0F, () -> Ingredient.of(Items.IRON_INGOT)); public static final Holder IRON = register("iron", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 2); enumMap.put(ArmorItem.Type.LEGGINGS, 5); enumMap.put(ArmorItem.Type.CHESTPLATE, 6); enumMap.put(ArmorItem.Type.HELMET, 2); enumMap.put(ArmorItem.Type.BODY, 5); }), 9, SoundEvents.ARMOR_EQUIP_IRON, 0.0F, 0.0F, () -> Ingredient.of(Items.IRON_INGOT)); public static final Holder GOLD = register("gold", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 1); enumMap.put(ArmorItem.Type.LEGGINGS, 3); enumMap.put(ArmorItem.Type.CHESTPLATE, 5); enumMap.put(ArmorItem.Type.HELMET, 2); enumMap.put(ArmorItem.Type.BODY, 7); }), 25, SoundEvents.ARMOR_EQUIP_GOLD, 0.0F, 0.0F, () -> Ingredient.of(Items.GOLD_INGOT)); public static final Holder DIAMOND = register("diamond", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 3); enumMap.put(ArmorItem.Type.LEGGINGS, 6); enumMap.put(ArmorItem.Type.CHESTPLATE, 8); enumMap.put(ArmorItem.Type.HELMET, 3); enumMap.put(ArmorItem.Type.BODY, 11); }), 10, SoundEvents.ARMOR_EQUIP_DIAMOND, 2.0F, 0.0F, () -> Ingredient.of(Items.DIAMOND)); public static final Holder TURTLE = register("turtle", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 2); enumMap.put(ArmorItem.Type.LEGGINGS, 5); enumMap.put(ArmorItem.Type.CHESTPLATE, 6); enumMap.put(ArmorItem.Type.HELMET, 2); enumMap.put(ArmorItem.Type.BODY, 5); }), 9, SoundEvents.ARMOR_EQUIP_TURTLE, 0.0F, 0.0F, () -> Ingredient.of(Items.TURTLE_SCUTE)); public static final Holder NETHERITE = register("netherite", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 3); enumMap.put(ArmorItem.Type.LEGGINGS, 6); enumMap.put(ArmorItem.Type.CHESTPLATE, 8); enumMap.put(ArmorItem.Type.HELMET, 3); enumMap.put(ArmorItem.Type.BODY, 11); }), 15, SoundEvents.ARMOR_EQUIP_NETHERITE, 3.0F, 0.1F, () -> Ingredient.of(Items.NETHERITE_INGOT)); public static final Holder ARMADILLO = register("armadillo", Util.make(new EnumMap(ArmorItem.Type.class), enumMap -> { enumMap.put(ArmorItem.Type.BOOTS, 3); enumMap.put(ArmorItem.Type.LEGGINGS, 6); enumMap.put(ArmorItem.Type.CHESTPLATE, 8); enumMap.put(ArmorItem.Type.HELMET, 3); enumMap.put(ArmorItem.Type.BODY, 11); }), 10, SoundEvents.ARMOR_EQUIP_WOLF, 0.0F, 0.0F, () -> Ingredient.of(Items.ARMADILLO_SCUTE)); public static Holder bootstrap(Registry registry) { return LEATHER; } private static Holder register( String name, EnumMap defense, int enchantmentValue, Holder equipSound, float toughness, float knockbackResistance, Supplier repairIngredient ) { List list = List.of(new ArmorMaterial.Layer(ResourceLocation.withDefaultNamespace(name))); return register(name, defense, enchantmentValue, equipSound, toughness, knockbackResistance, repairIngredient, list); } private static Holder register( String name, EnumMap defense, int enchantmentValue, Holder equipSound, float toughness, float knockbackResistance, Supplier repairIngridient, List layers ) { EnumMap enumMap = new EnumMap(ArmorItem.Type.class); for (ArmorItem.Type type : ArmorItem.Type.values()) { enumMap.put(type, (Integer)defense.get(type)); } return Registry.registerForHolder( BuiltInRegistries.ARMOR_MATERIAL, ResourceLocation.withDefaultNamespace(name), new ArmorMaterial(enumMap, enchantmentValue, equipSound, repairIngridient, layers, toughness, knockbackResistance) ); } }