ModArmorMaterial.java 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package me.km.items;
  2. import java.util.function.Supplier;
  3. import net.minecraft.inventory.EquipmentSlotType;
  4. import net.minecraft.item.IArmorMaterial;
  5. import net.minecraft.item.Items;
  6. import net.minecraft.item.crafting.Ingredient;
  7. import net.minecraft.util.LazyValue;
  8. import net.minecraft.util.SoundEvent;
  9. import net.minecraft.util.SoundEvents;
  10. import net.minecraftforge.api.distmarker.Dist;
  11. import net.minecraftforge.api.distmarker.OnlyIn;
  12. public enum ModArmorMaterial implements IArmorMaterial {
  13. COPPER("km:copper", 9, new int[]{1, 4, 5, 1}, 20, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f, () -> Ingredient.fromItems(ModItems.copperIngot)),
  14. BRONZE("km:bronze", 13, new int[]{2, 5, 6, 2}, 3, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f, () -> Ingredient.fromItems(ModItems.bronzeIngot)),
  15. STRAW("km:straw", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.WHEAT)),
  16. CYLINDER("km:cylinder", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.STRING)),
  17. SILK("km:silk", 3, new int[]{1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f, () -> Ingredient.fromItems(Items.STRING));
  18. private static final int[] MAX_DAMAGE_ARRAY = new int[]{
  19. 13, 15, 16, 11
  20. };
  21. private final String name;
  22. private final int maxDamageFactor;
  23. private final int[] damageReductionAmountArray;
  24. private final int enchantability;
  25. private final SoundEvent soundEvent;
  26. private final float toughness;
  27. private final LazyValue<Ingredient> repairMaterial;
  28. private ModArmorMaterial(String name, int maxDamageFactor, int[] damageReduction, int enchantability, SoundEvent se, float toughness, Supplier<Ingredient> repairMaterial) {
  29. this.name = name;
  30. this.maxDamageFactor = maxDamageFactor;
  31. this.damageReductionAmountArray = damageReduction;
  32. this.enchantability = enchantability;
  33. this.soundEvent = se;
  34. this.toughness = toughness;
  35. this.repairMaterial = new LazyValue<>(repairMaterial);
  36. }
  37. @Override
  38. public int getDurability(EquipmentSlotType slotIn) {
  39. return MAX_DAMAGE_ARRAY[slotIn.getIndex()] * this.maxDamageFactor;
  40. }
  41. @Override
  42. public int getDamageReductionAmount(EquipmentSlotType slotIn) {
  43. return this.damageReductionAmountArray[slotIn.getIndex()];
  44. }
  45. @Override
  46. public int getEnchantability() {
  47. return this.enchantability;
  48. }
  49. @Override
  50. public SoundEvent getSoundEvent() {
  51. return this.soundEvent;
  52. }
  53. @Override
  54. public Ingredient getRepairMaterial() {
  55. return this.repairMaterial.getValue();
  56. }
  57. @OnlyIn(Dist.CLIENT)
  58. @Override
  59. public String getName() {
  60. return this.name;
  61. }
  62. @Override
  63. public float getToughness() {
  64. return this.toughness;
  65. }
  66. @Override
  67. public float getKnockbackResistance() {
  68. return 0.0f;
  69. }
  70. }