superb-warfare/src/main/java/com/atsuishio/superbwarfare/tiers/ModArmorMaterial.java
2024-11-26 22:52:05 +08:00

90 lines
3.4 KiB
Java

package com.atsuishio.superbwarfare.tiers;
import com.atsuishio.superbwarfare.init.ModItems;
import net.minecraft.Util;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.util.LazyLoadedValue;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.crafting.Ingredient;
import java.util.EnumMap;
import java.util.function.Supplier;
public enum ModArmorMaterial implements ArmorMaterial {
CEMENTED_CARBIDE("cemented_carbide", 50, Util.make(new EnumMap<>(ArmorItem.Type.class), p -> {
p.put(ArmorItem.Type.BOOTS, 3);
p.put(ArmorItem.Type.LEGGINGS, 6);
p.put(ArmorItem.Type.CHESTPLATE, 8);
p.put(ArmorItem.Type.HELMET, 3);
}), 10, SoundEvents.ARMOR_EQUIP_IRON, 4.0F, 0.05F, () -> Ingredient.of(ModItems.CEMENTED_CARBIDE_INGOT.get())),
STEEL("steel", 35, Util.make(new EnumMap<>(ArmorItem.Type.class), p -> {
p.put(ArmorItem.Type.BOOTS, 2);
p.put(ArmorItem.Type.LEGGINGS, 5);
p.put(ArmorItem.Type.CHESTPLATE, 7);
p.put(ArmorItem.Type.HELMET, 2);
}), 9, SoundEvents.ARMOR_EQUIP_IRON, 1.0F, 0.0F, () -> Ingredient.of(ModItems.STEEL_INGOT.get()));
private static final EnumMap<ArmorItem.Type, Integer> HEALTH_FUNCTION_FOR_TYPE = Util.make(new EnumMap<>(ArmorItem.Type.class), (p_266653_) -> {
p_266653_.put(ArmorItem.Type.BOOTS, 13);
p_266653_.put(ArmorItem.Type.LEGGINGS, 15);
p_266653_.put(ArmorItem.Type.CHESTPLATE, 16);
p_266653_.put(ArmorItem.Type.HELMET, 11);
});
private final String name;
private final int durabilityMultiplier;
private final EnumMap<ArmorItem.Type, Integer> protectionFunctionForType;
private final int enchantmentValue;
private final SoundEvent sound;
private final float toughness;
private final float knockbackResistance;
private final LazyLoadedValue<Ingredient> repairIngredient;
ModArmorMaterial(String pName, int pDurabilityMultiplier, EnumMap<ArmorItem.Type, Integer> pProtectionFunctionForType, int pEnchantmentValue, SoundEvent pSound, float pToughness, float pKnockbackResistance, Supplier<Ingredient> pRepairIngredient) {
this.name = pName;
this.durabilityMultiplier = pDurabilityMultiplier;
this.protectionFunctionForType = pProtectionFunctionForType;
this.enchantmentValue = pEnchantmentValue;
this.sound = pSound;
this.toughness = pToughness;
this.knockbackResistance = pKnockbackResistance;
this.repairIngredient = new LazyLoadedValue<>(pRepairIngredient);
}
public int getDurabilityForType(ArmorItem.Type pType) {
return HEALTH_FUNCTION_FOR_TYPE.get(pType) * this.durabilityMultiplier;
}
public int getDefenseForType(ArmorItem.Type pType) {
return this.protectionFunctionForType.get(pType);
}
public int getEnchantmentValue() {
return this.enchantmentValue;
}
public SoundEvent getEquipSound() {
return this.sound;
}
public Ingredient getRepairIngredient() {
return this.repairIngredient.get();
}
public String getName() {
return this.name;
}
public float getToughness() {
return this.toughness;
}
public float getKnockbackResistance() {
return this.knockbackResistance;
}
public String getSerializedName() {
return this.name;
}
}