Skip to content

v0.9.5 — cast errors now name the mod responsible

Latest

Choose a tag to compare

@Hoggormino Hoggormino released this 04 Aug 21:28
· 180 commits to main since this release

Iron's Spells: Incantation 0.9.5

A small release that closes out the three open issues. Thanks to @Shadower007 and @Tubeess
for the reports, and to Kogyuu on CurseForge for diagnosing the mod conflict below.

Cast errors now name the mod responsible

If another mod hooks Iron's Spells' cast path and throws, you used to get
Cast Error: InvocationTargetException — an error from Incantation, naming nothing useful.
Every cast goes through reflection, so the real exception arrived wrapped.

Incantation now works out which mod the failure actually came from and says so:
Cast blocked by <mod> — mod conflict, with the full explanation in the log.

The known case is Iron's Restrictions (#3). Its AbstractSpellMixin injects into
AbstractSpell.canBeCastedBy(...) and reads a data attachment plus your Curios slots; when
that chain fails, the cast fails. It's a conflict between that mod and Iron's Spells rather
than anything Incantation does, and it affects any cast that reaches the hook. Removing or
reconfiguring Iron's Restrictions resolves it.

Already fixed in 0.9.4, and worth repeating

If you're coming from 0.9.3 or earlier, 0.9.4 fixed the crash that mattered most:

  • Dedicated servers no longer crash on startup (#1, #2). The config-screen registration
    sat in the mod constructor, where its reference to a client-only class was resolved before
    the Dist.CLIENT check guarding it could run. 0.9.0 and 0.9.3 both crash dedicated
    servers — if your pack ships either, please update.
  • Spell indexing works on dedicated servers. It read client-only config and silently
    indexed nothing.
  • You can cast the same spell twice in a row. The duplicate-suppression window re-armed
    itself on every blocked repeat, so with an open mic it never lapsed and the only way to
    recast was to say a different spell first.

The reason the server crash shipped twice is that the project had no dedicated-server run
configuration — every release was tested on a client, where that code path is fine by
definition. ./gradlew runServer now exists and every release is checked against it.

Upgrading

Drop incantation-0.9.5.jar over your existing jar. No config migration.

Requires Minecraft 1.21.1, NeoForge 21.1.x, Simple Voice Chat and Iron's Spells 'n
Spellbooks.