ModArmorMaterial.java 2.9 KB

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