ModArmorMaterial.java 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  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,
  14. () -> Ingredient.fromItems(ModItems.copperIngot)),
  15. BRONZE("km:bronze", 13, new int[] {2, 5, 6, 2}, 3, SoundEvents.ITEM_ARMOR_EQUIP_CHAIN, 0.0f,
  16. () -> Ingredient.fromItems(ModItems.bronzeIngot)),
  17. STRAW("km:straw", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
  18. () -> Ingredient.fromItems(Items.WHEAT)),
  19. CYLINDER("km:cylinder", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER,
  20. 0.0f, () -> Ingredient.fromItems(Items.STRING)),
  21. SILK("km:silk", 3, new int[] {1, 1, 1, 1}, 3, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
  22. () -> Ingredient.fromItems(Items.STRING)),
  23. CLOTH("km:cloth", 4, new int[] {1, 2, 2, 1}, 15, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0f,
  24. () -> Ingredient.fromItems(ModItems.cloth));
  25. private static final int[] MAX_DAMAGE_ARRAY = new int[] {13, 15, 16, 11};
  26. private final String name;
  27. private final int maxDamageFactor;
  28. private final int[] damageReductionAmountArray;
  29. private final int enchantability;
  30. private final SoundEvent soundEvent;
  31. private final float toughness;
  32. private final LazyValue<Ingredient> repairMaterial;
  33. private ModArmorMaterial(String name, int maxDamageFactor, int[] damageReduction,
  34. int enchantability, SoundEvent se, float toughness,
  35. Supplier<Ingredient> repairMaterial) {
  36. this.name = name;
  37. this.maxDamageFactor = maxDamageFactor;
  38. this.damageReductionAmountArray = damageReduction;
  39. this.enchantability = enchantability;
  40. this.soundEvent = se;
  41. this.toughness = toughness;
  42. this.repairMaterial = new LazyValue<>(repairMaterial);
  43. }
  44. @Override
  45. public int getDurability(EquipmentSlotType slotIn) {
  46. return MAX_DAMAGE_ARRAY[slotIn.getIndex()] * this.maxDamageFactor;
  47. }
  48. @Override
  49. public int getDamageReductionAmount(EquipmentSlotType slotIn) {
  50. return this.damageReductionAmountArray[slotIn.getIndex()];
  51. }
  52. @Override
  53. public int getEnchantability() {
  54. return this.enchantability;
  55. }
  56. @Override
  57. public SoundEvent getSoundEvent() {
  58. return this.soundEvent;
  59. }
  60. @Override
  61. public Ingredient getRepairMaterial() {
  62. return this.repairMaterial.getValue();
  63. }
  64. @OnlyIn(Dist.CLIENT)
  65. @Override
  66. public String getName() {
  67. return this.name;
  68. }
  69. @Override
  70. public float getToughness() {
  71. return this.toughness;
  72. }
  73. @Override
  74. public float getKnockbackResistance() {
  75. return 0.0f;
  76. }
  77. }