promotional bannermobile promotional banner

Ars 'n Spells

Ars ’n Spells is a Forge 1.20.1 (with limited support for 1.21.1 ala Version 2.x.x) compatibility mod that bridges Ars Nouveau and Iron’s Spells ’n Spellbooks by integrating all mana-related systems.

File Details

Ars 'n Spells 1.8.5 (Forge 1.20.1)

  • R
  • Apr 18, 2026
  • 220.69 KB
  • 452
  • 1.20.1
  • Forge

File Name

ars_n_spells-1.8.5.jar

Supported Versions

  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:ars-n-spells-1447914:7945909")
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

[1.8.5] - 2026-04-18

Focused correctness patch addressing ENHANCEMENT.md §1 critical and select §2 high-priority findings. No new user features.

Critical Fixes

  • Stabilised packet IDs across installsPacketHandler now registers ResonanceSyncPacket, AffinitySyncPacket, CooldownSyncPacket, and ProgressionSyncPacket at fixed IDs 0/1/2/3 regardless of whether Iron's Spellbooks is loaded. Previously, ResonanceSyncPacket was conditionally registered, so clients/servers with mismatched Iron's installs saw affinity or cooldown bytes deserialised as resonance (crash or silent state corruption).
  • Cursed Ring detection now accepts Covenant of the Seven's variantisWearingCursedRing used to hardcode enigmaticlegacy:cursed_ring, so users running Covenant of the Seven without Enigmatic Legacy had LP routing silently disabled. Both enigmaticlegacy:cursed_ring and covenant_of_the_seven:cursed_ring now activate LP costs.
  • Fixed SLF4J format string bugs in CurioDiscountHandler — the Python-style {:.1f} tokens were printing literally in the log. Floats now pre-format through String.format(Locale.ROOT, "%.1f", …).
  • Removed reflection-based self-calls in EquipmentIntegrationcalculateCurioDiscountsInternal was using Class.forName to reach SanctifiedLegacyCompat.hasVirtueRing / hasAnyBlasphemy, both of which are already public static methods in the same module. Direct imports replace the reflection path.
  • Restored ProgressionSyncPacket — 1.8.3 deleted the stale packet but left no replacement, so client-side progression reads were stuck at zero. The packet is re-introduced and is sent on login, respawn, dimension change, and after each progression-affecting cast.

Quality & Performance

  • CursedRingHandler state now clears on logoutringConflictNotified and pendingCosts no longer retain disconnected UUIDs across sessions.
  • Consolidated PlayerEvent.Clone handlingModCapabilityProvider is now the single owner of cap revive/invalidate at clone time and also copies the aura capability. Eliminates the double revive/invalidate cycle.
  • PendingLPCost entries now removed on consumption — previously a consumed=true flag left the entry in the map until TTL expiry. Removal happens on every resolution branch (success, death-mode, safe-mode).
  • Cursed/Virtue ring checks now do a single curio inventory passisWearingCursedRing, isWearingVirtueRing, hasBothRings, and hasVirtueRing all delegate to a shared scanRings helper, matching the existing hasAnyBlasphemy single-scan pattern.
  • Dual-cost percentages now rescaled proportionallyDUAL_COST_ARS_PERCENTAGE + DUAL_COST_ISS_PERCENTAGE no longer have to sum to 1.0; the bridge layer renormalises at init so misconfigured values preserve the intended cost split. BridgeManager.getArsDualCostNormalized() / getIssDualCostNormalized() are the canonical readers.

Cleanup

  • Removed fake "Mana Mode" entry in the in-game config screen — the option used a value -> {} setter that looked clickable but did nothing. Mode is documented as restart-only and editable only via the TOML file.
  • Deleted dead VIRTUE_RING_DISCOUNT config — the Virtue Ring converts mana to aura via VirtueRingHandler at HIGHEST priority, so the discount branch in EquipmentIntegration never fired. Existing TOML configs with virtue_ring_discount set will log a benign "unused key" warning on first load after upgrade; the value can be deleted from the config file safely.

Migration notes

  • virtue_ring_discount is the only removed TOML key. Nothing else changes configuration-wise.
  • Network protocol version is unchanged ("1"). Pre-1.8.5 clients connecting to a 1.8.5 server will still hit the existing channel-version mismatch rejection.

[1.8.3] - 2026-04-14

New Feature

  • Spell Transcription ritual is now functional -- Previously a no-op that dropped a blank scroll. The ritual now inscribes a cross-mod spell onto a target item, exposing the previously API-only cross-casting runtime to survival play. Drop a source (filled Ars spell parchment/focus/spellbook, or an Iron's scroll) and a target item near the brazier, activate the ritual, and the target gains the arsnspells:cross_spells NBT tag. Right-click the target to cast the inscribed spell; sneak-right-click cycles through multiple inscriptions. Mana costs flow through BridgeManager and respect the active unification mode, including SEPARATE-mode dual-cost splitting.

Cleanup

  • Removed dead ProgressionSyncPacket -- The packet was registered on the network channel but never constructed or sent anywhere. Its packet-id slot is freed.
  • Removed deprecated XpConverter -- @Deprecated stub that redirected to SpellAnalysis; had no remaining callers.

Bug Fixes

  • AuraCapability now tolerates early capability attach -- Constructor and loadNBTData wrap AnsConfig.AURA_MAX_DEFAULT.get() in try/catch, defaulting to 100 if the config spec isn't loaded yet (defensive; pre-existing crash had not been observed in practice).

Documentation

  • Fixed CLAUDE.md Ars Nouveau version range drift -- Now shows [4.12.7, 4.13) matching mods.toml instead of a misleading 4.12.7+.

[1.8.2] - 2026-04-08

Bug Fix

  • Fixed Ars armor still not increasing mana in ARS_PRIMARY mode -- The v1.8.1 fix only applied item-level armor bonuses to Iron's MAX_MANA attribute, but Ars 4.12.7 applies bonuses via the perk system (player attributes, not item modifiers), so the scanned bonus was often zero. Iron's mana tick then clamped Ars mana to Iron's base max (~200). Now syncs Iron's MAX_MANA to Ars's actual calculated max mana instead of scanning items, with a secondary sync on every MaxManaCalcEvent to catch level-ups, perk changes, and glyph learning

[1.8.1] - 2026-03-29

Bug Fix

  • Fixed Ars Nouveau armor mana bonuses not applying in ARS_PRIMARY mode -- Iron's internal regen was clamping the shared mana pool to Iron's base max because Ars armor bonuses were cleared from AttributeRegistry.MAX_MANA in ARS_PRIMARY. The equipment handler now keeps Iron's max mana attribute aligned with Ars's max in all shared-pool modes (ISS_PRIMARY, HYBRID, and ARS_PRIMARY)