▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Ars 'n Spells
Ars 'n Spells

Ars 'n Spells

Ars ’n Spells bridges Ars Nouveau and Iron’s Spells ’n Spellbooks, creating deeper synergy between two major magic systems. Harness mana, spell power, glyphcraft, and spellbooks together through new compatibility features, cross-mod progression

Оцените первым
8.6K
11
Все версииArs 'n Spells 2.6.0

Ars 'n Spells 2.6.0

Release15.06.2026

Список изменений

[2.6.0] - 2026-06-14

Apotheosis / Apothic Curios mana bridge

Affixed and socketed curios (rings, amulets, belts) now contribute their mana stats to the unified Ars ↔ Iron's pool. The equipment scanner already read attribute modifiers off armor and weapons — so Apotheosis affixes there always worked — but the curio path read only IManaEquipment and Ars enchantments, so an affixed/socketed ring's max-mana or mana-regen never reached the cross-mod bridge. A Mana Battery Ring took effect in its own system's pool but was invisible to the other.

  • Curios attribute modifiers are now read and mirrored. EquipmentIntegration.java enumerates worn curios via the Curios API (CuriosApi.getCuriosInventory(...).findCurios(...)) and reads each slot's aggregated attribute modifiers (CuriosApi.getAttributeModifiers(slotContext, uuid, stack)), summing Ars max_mana/mana_regen and Iron's max_mana/mana_regen through the same sumModifiers helper and ADDITION-only rule the armor path uses. This routes Apotheosis (with Apothic Curios) affixes & sockets — and any other curio mana gear such as Magical Jewelry or Jewelcraft — through the existing bridge. No double-counting: the curio's own pool already gets the modifier natively; the bridge only mirrors it to the other system, exactly as armor does.
  • No hard Apotheosis dependency. The read is generic (any mod's curio mana attributes), gated behind the new read_curio_attribute_modifiers config (default on) and wrapped so any API surprise degrades to "no bonus" rather than a crash.
  • Spell power needed no change — it is read from the player's total attribute, so affix spell power on armor/weapons/curios already counted. Apothic Attributes' own attributes (crit, armor pierce, fire/cold damage) are combat-only and out of scope for the mana/spell bridge.
  • Build: build.gradle adds a compileOnly Curios API dependency (5.9.1+1.20.1, the version Ars Nouveau bundles at runtime). Curios is always present at runtime via Ars, so this only puts the slot-aware API on the compile classpath.

Ring / aura-HUD correctness and hardening

  • Aura-bar peak tracker is now lock-free. ClientAuraPeakTracker.java stores the personal peak in an AtomicInteger with a monotonic getAndUpdate ratchet, so the render-thread read in the HUD mixin composes cleanly with client-tick writes (and stays correct if a sync writer is ever added).
  • Covenant version-drift probe. ArsNSpellsClient.java logs at startup whether Covenant of the Seven is at the version the aura-bar HUD mixin (MixinResourceBarOverlay) was bytecode-verified against (2.2.6). The mixin uses require = 0, so a mismatch can't crash the client; this makes the silent fallback diagnosable instead.
  • Virtue aura system honors its toggle. VirtueRingHandler.java now short-circuits its handlers when ENABLE_VIRTUE_AURA_SYSTEM is off.
  • Dead alternate-resource stubs removed. CastingAuthority.java dropped the never-implemented detectAlternateResourceCost/validateAlternateResource path (it always returned null/true); Cursed/Virtue ring costs are owned by their dedicated event handlers.

Performance (render + tick hot paths)

  • OPT-008: MixinArsPotionEffects.java only churns the mana attribute modifiers when the value actually changed, instead of a remove/add every server tick (which forced an attribute recompute).
  • OPT-009: ManaBarController.java matches mana overlays on the ResourceLocation namespace/path directly (allocation-free equals) instead of toString() + substring scan every overlay every frame. The matchers are extracted as pure, package-private, unit-testable methods.
  • OPT-010 / MED-019: OverlayDiagnostics.java registers its per-frame render subscriber on the Forge bus only while diagnostics are enabled (zero dispatch cost when off, the default), and uses a TreeSet for already-sorted iteration.
  • IronsLP debug trace gated. IronsLPHandler.java builds its per-cast entry-trace strings only when LOGGER.isDebugEnabled().

Tests

  • New unit coverage for the above: ClientAuraPeakTrackerTest (monotonic ratchet), ManaBarControllerOverlayMatchTest (overlay matchers), and VirtueRingAuraToggleTest (toggle gating).

Файлы

ars_n_spells-2.6.0.jar(279.08 KiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

2.6.0

Загрузчики

Forge

Версии игры

1.20.1

Загрузок

842

Дата публикации

15.06.2026

Загрузил

ID версии

Главная