File Details
Ars 'n Spells 1.8.6 (Forge 1.20.1)
- R
- Apr 24, 2026
- 220.29 KB
- 110
- 1.20.1
- Forge
File Name
ars_n_spells-1.8.6.jar
Supported Versions
- 1.20.1
Curse Maven Snippet
[1.8.6] - 2026-04-24
Bug Fixes
- Ring of Seven Curses / Virtues now hides the mana bar -- While either ring is equipped, spells consume LP or Aura instead of mana, so the Iron's Spellbooks and Ars Nouveau mana bars are now hidden on the HUD. New config
hide_mana_bar_with_ring(defaulttrue) gates the behavior, and the check runs independently of mana unification so it applies in every mode. - Cursed Ring now recognized from both namespaces -- Detection matches
enigmaticlegacy:cursed_ringandcovenant_of_the_seven:cursed_ring; previously only the Enigmatic Legacy variant was honored. Virtue Ring detection uses an equivalent set for defensive future-proofing. - Thread-safety fix for LP/Aura pending-cost tracking --
CursedRingHandler,IronsLPHandler, andVirtueRingHandlernow store pending-cost state inConcurrentHashMapinstead ofHashMap. Prevents rareConcurrentModificationExceptionor lost entries when spell events fire on different threads than the tick sweep. - Per-player state now evicted on logout -- Added
PlayerLoggedOutEventhandlers to all three ring/LP handlers so stale UUID entries are removed immediately instead of waiting for the 5-second TTL sweep. The Cursed handler also clears the curio-state cache on logout. - Defensive guards on LP accounting --
hasEnoughLPandconsumeLPnow refuse non-positive costs instead of silently "succeeding" with a free cast.consumeLPalso clamps post-cast health at 1 HP so floating-point drift cannot violate the reserved buffer. - Null-guard on Blood Magic Soul Network lookup --
getBloodMagicLPandconsumeBloodMagicLPnow check for a null Soul Network return value and log a debug message instead of relying on a catch-allExceptionto mask a potential NPE across Blood Magic version drift.
Performance
- Curio scan cached per player -- Ring and Blasphemy detection (
isWearingCursedRing,isWearingVirtueRing,hasBothRings,hasAnyBlasphemy,hasMatchingBlasphemy,hasBlasphemyType,hasVirtueRing) previously iterated every curio slot on every spell cast — up to 5–6 scans per Ars cast between the Cursed Ring, Virtue Ring, and Blasphemy-discount paths. A new 20-tick (~1-second) TTLCurioStatecache inSanctifiedLegacyCompatcollapses all checks onto a single inventory scan per player per second. - Pre-computed ring ResourceLocations -- Removed per-call
new ResourceLocation(...)allocations; ring IDs are now static finalSet<ResourceLocation>fields built once.
Cleanup
- Removed dead
hasCuriohelper -- All call sites moved to the cached state lookup; the generic helper had no remaining callers.

