Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @Override
- public @NotNull ItemAttributeModifiers getDefaultAttributeModifiers(@NotNull ItemStack stack) {
- ItemAttributeModifiers modifiers = super.getDefaultAttributeModifiers(stack);
- if (element == SpellSchools.ELEMENTAL) {
- return modifiers
- .withModifierAdded(
- AttributeEventHandler.schoolToDefenseAttribute.get(this.element),
- new AttributeModifier(
- ArsElemental.prefix("elemental_defense_armor_" + this.type.getName()),
- 25,
- AttributeModifier.Operation.ADD_VALUE
- ),
- EquipmentSlotGroup.bySlot(this.type.getSlot())
- )
- .withModifierAdded(
- AttributeEventHandler.schoolToPowerAttribute.get(this.element),
- new AttributeModifier(
- ArsElemental.prefix("elemental_power_armor_" + this.type.getName()),
- 1,
- AttributeModifier.Operation.ADD_VALUE
- ),
- EquipmentSlotGroup.bySlot(this.type.getSlot())
- );
- }
- // Aggregate defense modifiers per element
- Map<SpellSchool, Double> defenseTotals = new HashMap<>();
- for (var school : this.element.getSubSchools()) {
- if (school == SpellSchools.ELEMENTAL) continue;
- // Base resistance for its own element
- defenseTotals.merge(school, 25.0, Double::sum);
- // Weakness from weakness map
- SpellSchool weakness = weaknessMap.getOrDefault(school, SpellSchools.ELEMENTAL);
- if (weakness != SpellSchools.ELEMENTAL) {
- defenseTotals.merge(weakness, -12.5, Double::sum);
- }
- // Power bonus still applied per sub-school (no merging needed)
- modifiers = modifiers.withModifierAdded(
- AttributeEventHandler.schoolToPowerAttribute.get(school),
- new AttributeModifier(
- ArsElemental.prefix("elemental_power_armor_" + this.type.getName() + "_" + school.getId()),
- 1,
- AttributeModifier.Operation.ADD_VALUE
- ),
- EquipmentSlotGroup.bySlot(this.type.getSlot())
- );
- }
- // Apply merged defense modifiers (only once per element)
- for (var entry : defenseTotals.entrySet()) {
- if (entry.getValue() == 0) continue; // prevents neutral clutter
- modifiers = modifiers.withModifierAdded(
- AttributeEventHandler.schoolToDefenseAttribute.get(entry.getKey()),
- new AttributeModifier(
- ArsElemental.prefix("elemental_defense_armor_" + this.type.getName() + "_" + entry.getKey().getId()),
- entry.getValue(),
- AttributeModifier.Operation.ADD_VALUE
- ),
- EquipmentSlotGroup.bySlot(this.type.getSlot())
- );
- }
- return modifiers;
- }
Advertisement
Add Comment
Please, Sign In to add comment