Releases: Hoggormino/incantation
Release list
v0.9.5 — cast errors now name the mod responsible
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
theDist.CLIENTcheck 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.
v0.9.4 — dedicated-server crash fix, and repeat casting
Iron's Spells: Incantation 0.9.4
Bug-fix release built from the issues players reported on 0.9.3. Thanks to
@Shadower007, @Tubeess, eli_zeele, bayratbill, xxshadow007, PhsycoPhink and Kogyuu
for the reports and the diagnosis work.
Fixed
-
Dedicated servers no longer crash on startup. The server died during mod
construction withAttempted to load class net/minecraft/client/gui/screens/Screen for invalid dist DEDICATED_SERVER. The cause was the Mods-screen config extension
point being registered in the mod constructor: it compiles to a method that names
the client-onlyScreenclass, and NeoForge resolves the types a method references
before theDist.CLIENTcheck inside it can run — so a runtime guard could never
have stopped it. Registration moved to a class the server never touches. This is the
crash from #1 and #2, which the 0.9.1 fix covered elsewhere but not here. -
Spell indexing now works on dedicated servers. A second, quieter server bug:
indexing read client-only config values, which don't exist on a server, so every
boot loggedCannot get config value before config is loadedand left the index
empty. Servers now index normally. -
You can cast the same spell twice in a row. The duplicate-suppression window was
pushed forward every time it blocked a repeat, so it kept re-arming itself: with an
always-on or voice-activated mic, background noise gets matched to the nearest spell
name in the grammar, which meant the window never expired and the only way to recast
was to say a different spell first. The window is now measured from the actual cast. -
Failed casts say what actually went wrong. Casting goes through reflection, so an
error thrown by Iron's Spells — or by another mod hooking it — arrived wrapped, and
the message you got was the uselessCast Error: InvocationTargetException. The real
cause is now shown and logged, with a note identifying the mod responsible. If you hit
this on 0.9.3, one known trigger is a conflict with Iron's Restrictions (#3). -
Iron's Spells compatibility. Current Iron's builds hand back a different shape from
getAllSpells()than older ones. Both are now handled; previously equipped-spell
detection could fail silently.
Changed
- Owned-spell restriction now matches Iron's Spells' own rule — only your Curios
spellbook slot, main hand and off hand count. Previously a spellbook anywhere in your
inventory counted, the server then rejected the cast, and it still showed up as a
phantom cast in your HUD streak and history. sculk tentaclesis now recognised — its alias could never match.- The voice macro recorder and its J / K keybinds have been removed.
- Slightly tighter noise gate (600 ms → 450 ms hold).
Note for anyone who themed their HUD
Eight individual HUD colour options (text, dotReady, dotListen, dotLoad,
dotError, dotOff, meterBg, meterFill) have been removed in favour of the palette
and accent presets. Nothing breaks, but if you had set those by hand they will quietly
revert to preset colours.
Upgrading
Drop incantation-0.9.4.jar over your existing jar. No config migration.
Server owners: this is the release you want — 0.9.0 and 0.9.3 both crash on dedicated
servers. If your modpack still ships 0.9.0, please update.
v0.9.3 — responsive panels for large GUI Scale
Iron's Spells: Incantation 0.9.3
UI fix for players running with Minecraft GUI Scale = Large (or on small windows).
Fixed
- Panels now shrink to fit the screen. Every Incantation screen (Config, Welcome wizard, Spell list, Diagnostics, Test Arena, Voice Codex, Add Alias, Help, More menu) used to be a fixed pixel size, so at a large GUI Scale the panel got cut off at the right edge and bottom — the Done button could disappear before you could press it. The panels now clamp to whatever screen space is available with an 8 px margin, so everything stays visible at every GUI Scale.
No behaviour change at default scale
At the default GUI Scale the layout is visually identical to 0.9.2. The clamping only kicks in when the preferred panel would be larger than the screen.
Drop-in upgrade
Drop incantation-0.9.3.jar over your existing 0.9.2 jar. No config migration.
v0.9.2 — phrasebook robustness
Iron's Spells: Incantation 0.9.2
Small hardening pass on the 0.9.1 phrasebook so it can't eat your translations.
Fixed
- Phrasebook won't overwrite a file it couldn't read. If you save
phrasebook.jsonhalf-finished and the game tries to reload mid-edit, the parse fails — previously we'd then rewrite the file with an empty-override version and silently destroy your work. Now we leave the file untouched until you save a valid version. Your in-memory overrides from the last successful load stay active so the grammar doesn't degrade either. - Stale entries keep their
defaultfield. Spells from temporarily-uninstalled addons used to round-trip back to"default": "". Now we remember the last-seen default per spell and write it back, so the file stays self-documenting across addon swaps. - Atomic writes. The file is written to
phrasebook.json.tmpthen atomically renamed onto the real path, so a text editor watching the file (or a backup tool, or a second game instance) never observes a half-written JSON.
No code changes for end users
Drop incantation-0.9.2.jar over your existing 0.9.1 jar. No config migration. If you don't use the phrasebook, this release is a no-op for you.
v0.9.1 — server crash fix + localisation phrasebook
Iron's Spells: Incantation 0.9.1
Two community-reported issues addressed.
Fixed
- Dedicated server crash on mod load. The Simple Voice Chat plugin loader instantiates
@ForgeVoicechatPluginclasses on both client and server. Incantation's SVC plugin (and a couple of common-side helpers) statically referenced client-only classes, so the JVM verifier pulled the Minecraft GUI chain in on the server side →NoClassDefFoundError→ crash. Plugin,SpellIndex, and the config's theme cache now route those references throughConsumer/Supplier/Runnablesinks wired fromClientEvents.bootstrap(), so common code never link-references the GUI chain.- Thanks to xxshadow007 for the report.
Added
-
config/voicespells/phrasebook.jsonfor bulk-translation. Auto-generated on first launch with one entry per installed spell:{ "spells": { "irons_spellbooks:fireball": { "default": "fireball", "override": "" } } }Set the
overridevalue to whatever you want to say for that spell; leave it empty to use the English default. New spells installed later are appended automatically, and your existing overrides survive reindexes and addon uninstalls.Vosk only recognises words from the loaded model's lexicon, so non-English overrides need a same-language Vosk model — install one from https://alphacephei.com/vosk/models and point
modelPathat it invoicespells-client.toml.- Thanks to NeoTargetStudios for the request.
Installation
Drop incantation-0.9.1.jar into your mods/ folder alongside Simple Voice Chat 2.5.x+ and Iron's Spells 'n Spellbooks 3.x+. No config migration needed — voicespells-client.toml is unchanged from 0.9.0.
Iron's Spells: Incantation v0.9.0
First public release.
Voice-cast Iron's Spells 'n Spellbooks through Simple Voice Chat. Offline speech recognition via Vosk with the grammar dynamically restricted to spells you actually have equipped.
Requirements:
- Minecraft 1.21.1
- NeoForge 21.1.x
- Simple Voice Chat 2.5.x+
- Iron's Spells 'n Spellbooks 3.x+
- A small Vosk English model (see README)
See README.md for setup instructions.