Guest User

Untitled

a guest
Feb 19th, 2026
11
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.08 KB | None | 0 0
  1. @Override
  2. public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
  3. ItemAttributeModifiers modifiers = super.getDefaultAttributeModifiers(stack);
  4.  
  5. if (element == SpellSchools.ELEMENTAL) {
  6. return modifiers
  7. .withModifierAdded(
  8. AttributeEventHandler.schoolToDefenseAttribute.get(this.element),
  9. new AttributeModifier(
  10. ArsElemental.prefix("elemental_defense_armor_" + this.type.getName()),
  11. 25,
  12. AttributeModifier.Operation.ADD_VALUE
  13. ),
  14. EquipmentSlotGroup.bySlot(this.type.getSlot())
  15. )
  16. .withModifierAdded(
  17. AttributeEventHandler.schoolToPowerAttribute.get(this.element),
  18. new AttributeModifier(
  19. ArsElemental.prefix("elemental_power_armor_" + this.type.getName()),
  20. 1,
  21. AttributeModifier.Operation.ADD_VALUE
  22. ),
  23. EquipmentSlotGroup.bySlot(this.type.getSlot())
  24. );
  25. }
  26.  
  27. // Aggregate defense modifiers per element
  28. Map<SpellSchool, Double> defenseTotals = new HashMap<>();
  29.  
  30. for (var school : this.element.getSubSchools()) {
  31. if (school == SpellSchools.ELEMENTAL) continue;
  32.  
  33. // Base resistance for its own element
  34. defenseTotals.merge(school, 25.0, Double::sum);
  35.  
  36. // Weakness from weakness map
  37. SpellSchool weakness = weaknessMap.getOrDefault(school, SpellSchools.ELEMENTAL);
  38. if (weakness != SpellSchools.ELEMENTAL) {
  39. defenseTotals.merge(weakness, -12.5, Double::sum);
  40. }
  41.  
  42. // Power bonus still applied per sub-school (no merging needed)
  43. modifiers = modifiers.withModifierAdded(
  44. AttributeEventHandler.schoolToPowerAttribute.get(school),
  45. new AttributeModifier(
  46. ArsElemental.prefix("elemental_power_armor_" + this.type.getName() + "_" + school.getId()),
  47. 1,
  48. AttributeModifier.Operation.ADD_VALUE
  49. ),
  50. EquipmentSlotGroup.bySlot(this.type.getSlot())
  51. );
  52. }
  53.  
  54. // Apply merged defense modifiers (only once per element)
  55. for (var entry : defenseTotals.entrySet()) {
  56. if (entry.getValue() == 0) continue; // prevents neutral clutter
  57.  
  58. modifiers = modifiers.withModifierAdded(
  59. AttributeEventHandler.schoolToDefenseAttribute.get(entry.getKey()),
  60. new AttributeModifier(
  61. ArsElemental.prefix("elemental_defense_armor_" + this.type.getName() + "_" + entry.getKey().getId()),
  62. entry.getValue(),
  63. AttributeModifier.Operation.ADD_VALUE
  64. ),
  65. EquipmentSlotGroup.bySlot(this.type.getSlot())
  66. );
  67. }
  68.  
  69. return modifiers;
  70. }
  71.  
Advertisement
Add Comment
Please, Sign In to add comment