File Details
Ars 'n Spells 1.6.0 (Forge 1.20.1)
- R
- Mar 17, 2026
- 238.57 KB
- 458
- 1.20.1
- Forge
File Name
ars_n_spells-1.6.0.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
[1.6.0] - 2026-03-16
Fixed - Critical Mana Reset Bug
- Fixed mana being permanently stuck at 1/100 with no regeneration in ISS_PRIMARY mode
- Root cause: ManaCap write intercepts (
setMana,addMana,removeMana) were forwarding Ars-internal stale values (typically 0) to Iron's MagicData, overwriting Iron's actual mana every tick - Fix: Changed write intercepts to read-only shadow sync — ManaCap now reads Iron's current value without writing back to it; spell consumption still works via the separate
expendManapath throughBridgeManager
- Root cause: ManaCap write intercepts (
- Fixed StackOverflowError crash in ARS_PRIMARY mode
- Root cause:
getCurrentMana()mixin calledArsNativeBridge.getMana()which calledcap.getCurrentMana(), re-entering the mixin in an infinite loop - Fix: Added
ThreadLocalrecursion guard and explicit ARS_PRIMARY early-exit (Ars is source of truth in that mode, no bridge needed)
- Root cause:
- Fixed mana potions and armor buffs snapping back immediately
- Caused by the same write redirect bug — potion/armor effects set correct mana, then the next Ars-internal
setMana(0)overwrote it
- Caused by the same write redirect bug — potion/armor effects set correct mana, then the next Ars-internal
- Fixed "both bars empty" when disabling mana unification
- Root cause 1:
MixinSpellResolverPreCastunconditionally overrode Ars's nativecanCast()even in DISABLED mode - Root cause 2:
MixinArsManaRegenonly checked mode (cached from startup), notisUnificationEnabled() - Fix: Added
isUnificationEnabled()guard to both mixins; native Ars behavior now fully restored when unification is off
- Root cause 1:
- Fixed config mode changes requiring a full restart
BridgeManager.getCurrentMode()now reads directly from config instead of returning a stale cached value
- Fixed client-side mana display artifacts
- ManaCap read intercepts now only run on server side; client uses native values synced by each mod independently
Changed
MixinManaCapability: Rewrote all 6 method intercepts with proper guards and read-only semanticsMixinArsManaRegen: AddedisUnificationEnabled()check before suppressing Ars regenMixinSpellResolverPreCast: Added early return when unification disabled and no Sanctified rings activeBridgeManager.getCurrentMode(): Now always reads fromAnsConfig.getManaMode()for runtime config responsiveness
Technical Details
- ManaCap
setMana/addMana/removeManano longer write to Iron's MagicData in any mode - Spell mana consumption path is unaffected:
MixinSpellResolverMana→BridgeManager.consumeManaForMode()→IronsBridge.consumeMana()(bypasses ManaCap entirely) ThreadLocal<Boolean>recursion guard prevents re-entrant bridge calls in all modes- All mixin intercepts now check
player.level().isClientSide()and skip client-side execution

