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
[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 installs —
PacketHandlernow registersResonanceSyncPacket,AffinitySyncPacket,CooldownSyncPacket, andProgressionSyncPacketat fixed IDs 0/1/2/3 regardless of whether Iron's Spellbooks is loaded. Previously,ResonanceSyncPacketwas 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 variant —
isWearingCursedRingused to hardcodeenigmaticlegacy:cursed_ring, so users running Covenant of the Seven without Enigmatic Legacy had LP routing silently disabled. Bothenigmaticlegacy:cursed_ringandcovenant_of_the_seven:cursed_ringnow 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 throughString.format(Locale.ROOT, "%.1f", …). - Removed reflection-based self-calls in
EquipmentIntegration—calculateCurioDiscountsInternalwas usingClass.forNameto reachSanctifiedLegacyCompat.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
CursedRingHandlerstate now clears on logout —ringConflictNotifiedandpendingCostsno longer retain disconnected UUIDs across sessions.- Consolidated
PlayerEvent.Clonehandling —ModCapabilityProvideris now the single owner of cap revive/invalidate at clone time and also copies the aura capability. Eliminates the double revive/invalidate cycle. PendingLPCostentries now removed on consumption — previously aconsumed=trueflag 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 pass —
isWearingCursedRing,isWearingVirtueRing,hasBothRings, andhasVirtueRingall delegate to a sharedscanRingshelper, matching the existinghasAnyBlasphemysingle-scan pattern. - Dual-cost percentages now rescaled proportionally —
DUAL_COST_ARS_PERCENTAGE+DUAL_COST_ISS_PERCENTAGEno 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_DISCOUNTconfig — the Virtue Ring converts mana to aura viaVirtueRingHandlerat HIGHEST priority, so the discount branch inEquipmentIntegrationnever fired. Existing TOML configs withvirtue_ring_discountset 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_discountis 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_spellsNBT tag. Right-click the target to cast the inscribed spell; sneak-right-click cycles through multiple inscriptions. Mana costs flow throughBridgeManagerand respect the active unification mode, includingSEPARATE-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--@Deprecatedstub that redirected toSpellAnalysis; had no remaining callers.
Bug Fixes
AuraCapabilitynow tolerates early capability attach -- Constructor andloadNBTDatawrapAnsConfig.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.mdArs Nouveau version range drift -- Now shows[4.12.7, 4.13)matchingmods.tomlinstead of a misleading4.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
MaxManaCalcEventto 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_MANAin 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)

