Iron's Spells: IncantationСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачатьСкачать
ВЕРСИИ (18)
release
Incantation 0.10.6 for Forge 1.20.1
0.10.68 сент. 2026 г.796Minecraft: 1.20.1forge
Что нового
# 0.10.6
Everything since 0.10.5.
Two bugs from the CurseForge comments and one found on the way to the second. The first two are
the same unpleasant kind: the mod heard you and then quietly did the wrong thing about it — once
by refusing a repeat, once by casting on a guess it had not finished checking.
---
## Fixed
**Some spells could only be cast once.** Say a spell, and saying it again did nothing — no cast,
and nothing in the Live Monitor either, as though the microphone had stopped working. Saying a
*different* spell first brought it back, and everything looked fine in the Test Arena. Three
symptoms, one cause.
The mod counts utterances so it can tell "the recogniser is still chewing on the word I just said"
apart from "the player said it again", and it only counted a new one when the recogniser produced a
running guess before its final answer. It does not always produce one. With a short spell name the
speech engine often keeps its running guess empty and commits everything at the end, so the mod saw
a single answer with nothing before it. Two of those in a row left the counter frozen, and from then
on every repeat of that spell was treated as an echo of the first — for as long as you kept saying
it. Saying a different spell reset the comparison, which is the workaround the reporter found on
their own.
An utterance is finished when the recogniser gives its final answer, so anything after that is the
next one. That is now what the mod counts, and a spell can be cast as many times in a row as you
can say it.
The silence was a second bug on top of the first. A suppressed repeat wrote nothing anywhere, so
there was no way to tell it apart from a dead microphone — which is exactly how it was reported.
The Live Monitor now shows `(repeat too soon)` for a repeat that lands inside the echo window, one
line per utterance. The Test Arena looked healthy throughout because it stops at "a menu is open"
before it ever reaches the echo check. Thanks to **tomasek1a** for a report that described all
three symptoms precisely enough to find the cause from.
**Invisibility could be cast from words that sound nothing like it.** The recogniser is only ever
allowed to hear spell names, so when it hears something else it picks the closest name it knows —
and a long name is the natural magnet, because it can absorb the most audio. The mod then cast on
the recogniser's *running guess*, before the final answer, and that path had no check on it at
all: the confidence setting only ever applied to the final result.
Two things changed. Every match now has to have been *spoken* for long enough to plausibly be
that phrase — 25 ms per letter by default (`minMsPerLetter`; "heal" 100 ms, "invisibility"
300 ms), measured from the recogniser's own word timings. Real spell names measure roughly
50-120 ms per letter; short one-syllable names like "shield" are the tightest, around 40, which is
why the default sits well under that rather than close to it. A running guess that comes up short
is not cast — the final answer decides, and nothing is held waiting for more audio. Only when the
completed word still comes up short does it get rejected, shown as `(too short 150ms < 300ms)` in
the Live Monitor. And `perSpellMinConfidence` now has teeth: a spell listed there never casts from
a running guess. It waits for the complete utterance and is judged at its own threshold, so
`irons_spellbooks:invisibility=0.7` is the knob for a spell that keeps getting force-fitted. That
costs a listed spell the wait for its final answer — about half a second after you stop speaking,
and it waits for you to stop, so say a listed spell on its own rather than in the middle of a
sentence. Everything not listed still casts the instant it is recognised. Reported against
Invisibility — thank you.
**The recogniser drops the first word, and the mod now recognises what is left.** Say "fireball"
and the speech engine sometimes reports only `ball`; "star fall" comes back as `fall`, "heat surge"
as `surge`. Those casts simply did not happen — the mod looked for a spell called "ball", found
none, and said nothing. Worse, `surge` was close enough in sound to Scorch that it cast Scorch
instead, and `hole` had been quietly reaching Heal the same way for as long as both have existed.
The answer was always sitting in the list of phrases the recogniser was told to listen for. If what
it heard is the end of exactly one of those phrases, that is the spell you meant, and it now casts.
Only the end of a phrase, and only when exactly one matches: `bolt` still does nothing, because
Fire Bolt, Guiding Bolt and Lightning Bolt all end that way and guessing between them would be
worse than asking you to say it again.
**Calibrating your voice works on a quiet microphone.** The microphone check set its noise gate
from an average that included your own speech, which estimates the room badly — and on a quiet
setup it landed *below* the room's own hum. Room noise then crossed the gate, got counted as
words, and dragged the measurement down until the check refused its own result every single time.
The player it happened to could never finish calibrating, so the whole whisper-to-shout range was
out of reach for them. It now measures the room first and judges both the gate and the result
against that, and it will not raise the gate past the words it just heard you say.
**Sound-alike matching now requires the two words to be about the same length.** Found while
chasing that report, and not its cause — across every Iron's Spells phrase nothing shares
Invisibility's sound-alike code, so that path could not have produced it — but a real weakness on
its own. The comparison that turns "fire boltz" back into "fire bolt" reduces any word to four
characters: a first letter and three consonant sounds. For a short name that is most of the word;
for a long one it is almost none of it, and everything past the fourth character was simply not
compared. Genuine near-misses are a character or two apart and still match; a word half the length
of the spell name no longer does.
**Voice casts were missing the levels your affinity items give you.** Iron's Spells adds spell
levels for the affinity gear you are wearing — a fire affinity ring casts your Fireball a level
above the one inscribed on your spellbook — and clicking has always counted them. Speaking did not.
Fireball inscribed at level 3, with that ring on, went off at 4 when you clicked it and at 3 when
you said it, so on a default server a spoken cast was quietly *weaker* than the same click: the one
thing the voice level system is supposed to guarantee never happens. The mod now works the level out
exactly the way a click does, so your affinity bonus — and any change an addon mod makes to a
spell's level — counts for a spoken cast too. That level is the floor everything else builds on:
`voiceLevelBonus` adds on top of it, and the mana you are charged is what the same click would have
charged, not a point more.
**Voice volume scaling now earns the voice level bonus instead of shrinking your spellbook.**
`voiceVolumeScaling` used to promise "whisper for level 1, shout for your spellbook's level," and
in practice every spoken cast came out at level 1 however loudly you said it, because the volume
was being read after you had already stopped talking. It now means something better. The level your
item itself would cast at — the spellbook, the imbued item or the scroll, affinity bonus included
(level 1 under FREE) — is always the floor; a voice cast never lands below it. `voiceLevelBonus` (or
a player's `playerAdvantages` level) is the most a spoken cast can add on top, and with
`voiceVolumeScaling` on, how much of it you earn depends on how loudly you said the spell: your
normal speaking voice earns about half, a raised voice all of it, a whisper none. The bonus always
lands on a whole level, never a fraction of one. Loudness is judged against your own voice, one
spoken word at a time: run Config → More… → Calibrate mic once — say four or five spell names at
your normal volume, with a short pause between them — and the mod remembers how loud one word from
you sounds. It used to compare a single spoken word against the loudest stretch of the whole
five-second recording, which sits above any ordinary word however evenly you spoke, so normal speech
was scored as a whisper and most of the bonus could not be earned at all. It now measures the words
in the recording the same way a cast measures the one you just said. Until you calibrate, a voice
cast earns the middle of the bonus rather than none of it. The extra levels are still charged at the
spell's ordinary mana cost. A spell repeated with the quick-recast key repeats at the loudness it
was originally said, and a queued spell fires at the loudness of the words that queued it. With the
option off, every spoken cast gets the full bonus, as before.
---
## Also
**Two server options that were never announced.** They went into 0.10.5 without a changelog line,
which is why people have been asking for them in the comments since:
- `incantationOnly` — `FIRST_CAST` makes each spell voice-cast once before it can be clicked, so
learning the incantation unlocks it; `ALWAYS` means spells can only ever be spoken. Off by
default. Players without the mod on their client are exempt rather than locked out.
- `voiceVolumeScaling` — scales the voice level bonus by how loudly you speak, as described
above. Off by default, and it does nothing unless `voiceLevelBonus` (or a `playerAdvantages`
level) is above 0.
Both live in `config/voicespells-server.toml`.
The store pages said Iron's Spells 'n Spellbooks was a **required** dependency. It never has been:
the mod loads and behaves sanely without it, finds no spells, and casts nothing, which is the
designed outcome and the reason addon spell mods work with no code of their own. Both pages now say
optional, so a launcher will stop insisting on it.
release
Incantation 0.10.6 for NeoForge 1.21.1
0.10.68 сент. 2026 г.1,4 тыс.Minecraft: 1.21.1neoforge
Что нового
# 0.10.6
Everything since 0.10.5.
Two bugs from the CurseForge comments and one found on the way to the second. The first two are
the same unpleasant kind: the mod heard you and then quietly did the wrong thing about it — once
by refusing a repeat, once by casting on a guess it had not finished checking.
---
## Fixed
**Some spells could only be cast once.** Say a spell, and saying it again did nothing — no cast,
and nothing in the Live Monitor either, as though the microphone had stopped working. Saying a
*different* spell first brought it back, and everything looked fine in the Test Arena. Three
symptoms, one cause.
The mod counts utterances so it can tell "the recogniser is still chewing on the word I just said"
apart from "the player said it again", and it only counted a new one when the recogniser produced a
running guess before its final answer. It does not always produce one. With a short spell name the
speech engine often keeps its running guess empty and commits everything at the end, so the mod saw
a single answer with nothing before it. Two of those in a row left the counter frozen, and from then
on every repeat of that spell was treated as an echo of the first — for as long as you kept saying
it. Saying a different spell reset the comparison, which is the workaround the reporter found on
their own.
An utterance is finished when the recogniser gives its final answer, so anything after that is the
next one. That is now what the mod counts, and a spell can be cast as many times in a row as you
can say it.
The silence was a second bug on top of the first. A suppressed repeat wrote nothing anywhere, so
there was no way to tell it apart from a dead microphone — which is exactly how it was reported.
The Live Monitor now shows `(repeat too soon)` for a repeat that lands inside the echo window, one
line per utterance. The Test Arena looked healthy throughout because it stops at "a menu is open"
before it ever reaches the echo check. Thanks to **tomasek1a** for a report that described all
three symptoms precisely enough to find the cause from.
**Invisibility could be cast from words that sound nothing like it.** The recogniser is only ever
allowed to hear spell names, so when it hears something else it picks the closest name it knows —
and a long name is the natural magnet, because it can absorb the most audio. The mod then cast on
the recogniser's *running guess*, before the final answer, and that path had no check on it at
all: the confidence setting only ever applied to the final result.
Two things changed. Every match now has to have been *spoken* for long enough to plausibly be
that phrase — 25 ms per letter by default (`minMsPerLetter`; "heal" 100 ms, "invisibility"
300 ms), measured from the recogniser's own word timings. Real spell names measure roughly
50-120 ms per letter; short one-syllable names like "shield" are the tightest, around 40, which is
why the default sits well under that rather than close to it. A running guess that comes up short
is not cast — the final answer decides, and nothing is held waiting for more audio. Only when the
completed word still comes up short does it get rejected, shown as `(too short 150ms < 300ms)` in
the Live Monitor. And `perSpellMinConfidence` now has teeth: a spell listed there never casts from
a running guess. It waits for the complete utterance and is judged at its own threshold, so
`irons_spellbooks:invisibility=0.7` is the knob for a spell that keeps getting force-fitted. That
costs a listed spell the wait for its final answer — about half a second after you stop speaking,
and it waits for you to stop, so say a listed spell on its own rather than in the middle of a
sentence. Everything not listed still casts the instant it is recognised. Reported against
Invisibility — thank you.
**The recogniser drops the first word, and the mod now recognises what is left.** Say "fireball"
and the speech engine sometimes reports only `ball`; "star fall" comes back as `fall`, "heat surge"
as `surge`. Those casts simply did not happen — the mod looked for a spell called "ball", found
none, and said nothing. Worse, `surge` was close enough in sound to Scorch that it cast Scorch
instead, and `hole` had been quietly reaching Heal the same way for as long as both have existed.
The answer was always sitting in the list of phrases the recogniser was told to listen for. If what
it heard is the end of exactly one of those phrases, that is the spell you meant, and it now casts.
Only the end of a phrase, and only when exactly one matches: `bolt` still does nothing, because
Fire Bolt, Guiding Bolt and Lightning Bolt all end that way and guessing between them would be
worse than asking you to say it again.
**Calibrating your voice works on a quiet microphone.** The microphone check set its noise gate
from an average that included your own speech, which estimates the room badly — and on a quiet
setup it landed *below* the room's own hum. Room noise then crossed the gate, got counted as
words, and dragged the measurement down until the check refused its own result every single time.
The player it happened to could never finish calibrating, so the whole whisper-to-shout range was
out of reach for them. It now measures the room first and judges both the gate and the result
against that, and it will not raise the gate past the words it just heard you say.
**Sound-alike matching now requires the two words to be about the same length.** Found while
chasing that report, and not its cause — across every Iron's Spells phrase nothing shares
Invisibility's sound-alike code, so that path could not have produced it — but a real weakness on
its own. The comparison that turns "fire boltz" back into "fire bolt" reduces any word to four
characters: a first letter and three consonant sounds. For a short name that is most of the word;
for a long one it is almost none of it, and everything past the fourth character was simply not
compared. Genuine near-misses are a character or two apart and still match; a word half the length
of the spell name no longer does.
**Voice casts were missing the levels your affinity items give you.** Iron's Spells adds spell
levels for the affinity gear you are wearing — a fire affinity ring casts your Fireball a level
above the one inscribed on your spellbook — and clicking has always counted them. Speaking did not.
Fireball inscribed at level 3, with that ring on, went off at 4 when you clicked it and at 3 when
you said it, so on a default server a spoken cast was quietly *weaker* than the same click: the one
thing the voice level system is supposed to guarantee never happens. The mod now works the level out
exactly the way a click does, so your affinity bonus — and any change an addon mod makes to a
spell's level — counts for a spoken cast too. That level is the floor everything else builds on:
`voiceLevelBonus` adds on top of it, and the mana you are charged is what the same click would have
charged, not a point more.
**Voice volume scaling now earns the voice level bonus instead of shrinking your spellbook.**
`voiceVolumeScaling` used to promise "whisper for level 1, shout for your spellbook's level," and
in practice every spoken cast came out at level 1 however loudly you said it, because the volume
was being read after you had already stopped talking. It now means something better. The level your
item itself would cast at — the spellbook, the imbued item or the scroll, affinity bonus included
(level 1 under FREE) — is always the floor; a voice cast never lands below it. `voiceLevelBonus` (or
a player's `playerAdvantages` level) is the most a spoken cast can add on top, and with
`voiceVolumeScaling` on, how much of it you earn depends on how loudly you said the spell: your
normal speaking voice earns about half, a raised voice all of it, a whisper none. The bonus always
lands on a whole level, never a fraction of one. Loudness is judged against your own voice, one
spoken word at a time: run Config → More… → Calibrate mic once — say four or five spell names at
your normal volume, with a short pause between them — and the mod remembers how loud one word from
you sounds. It used to compare a single spoken word against the loudest stretch of the whole
five-second recording, which sits above any ordinary word however evenly you spoke, so normal speech
was scored as a whisper and most of the bonus could not be earned at all. It now measures the words
in the recording the same way a cast measures the one you just said. Until you calibrate, a voice
cast earns the middle of the bonus rather than none of it. The extra levels are still charged at the
spell's ordinary mana cost. A spell repeated with the quick-recast key repeats at the loudness it
was originally said, and a queued spell fires at the loudness of the words that queued it. With the
option off, every spoken cast gets the full bonus, as before.
---
## Also
**Two server options that were never announced.** They went into 0.10.5 without a changelog line,
which is why people have been asking for them in the comments since:
- `incantationOnly` — `FIRST_CAST` makes each spell voice-cast once before it can be clicked, so
learning the incantation unlocks it; `ALWAYS` means spells can only ever be spoken. Off by
default. Players without the mod on their client are exempt rather than locked out.
- `voiceVolumeScaling` — scales the voice level bonus by how loudly you speak, as described
above. Off by default, and it does nothing unless `voiceLevelBonus` (or a `playerAdvantages`
level) is above 0.
Both live in `config/voicespells-server.toml`.
The store pages said Iron's Spells 'n Spellbooks was a **required** dependency. It never has been:
the mod loads and behaves sanely without it, finds no spells, and casts nothing, which is the
designed outcome and the reason addon spell mods work with no code of their own. Both pages now say
optional, so a launcher will stop insisting on it.
release
Incantation 0.10.5 for Forge 1.20.1
0.10.54 сент. 2026 г.121Minecraft: 1.20.1forge
Что нового
# 0.10.5
Everything since 0.10.4.
Two fixes people reported, and then the big one: the mod speaks Russian now, and every other
language becomes a file somebody can hand back rather than a fork of the source.
---
## Fixed
**0.10.4 crashed on startup on Forge 1.20.1.** If you are on Forge, 0.10.4 crashed the moment the
game tried to load the mod, and going back to 0.10.3 made it stop — so it looked like something
0.10.4 changed. Nothing in the code did. The Forge build produces two jars with the same name, one
that only runs inside a development environment and one that runs everywhere, and the release
tooling uploaded the wrong one. 0.10.3 had been uploaded by hand, which is why it was fine. The
tooling now picks the right jar, and the jar is checked before it goes out. Thanks to the person
who reported it with full logs — the "i9-13900KF" theory in that report is not it; your CPU is
fine. NeoForge was never affected.
**Imbued armor never cast.** Iron's Spells lets you imbue a chestplate with a spell, and saying that
spell did nothing — and if a worn chestplate was your only spell source, the microphone did not even
open under the default "Hold item" setting. The mod checked your hands and your Curios slot for
spell-carrying items and never looked at what you were wearing. It does now, for all four armor
slots, and casts from armor the same way Iron's Spells itself does. One deliberate detail: wearing an
ordinary mage chestplate with nothing imbued in it does not count as holding a spell focus. Every
Iron's Spells chestplate carries an empty spell slot internally, and treating that as "holding a
spellbook" would have left the microphone open for as long as the armor was on. Reported on
CurseForge — thank you.
**The recognizer no longer reaches into the game from its own thread.** Speech recognition runs on
a thread of its own, and a handful of the checks it made right after hearing a phrase — is a
hostile nearby, is a menu open, is that spell on cooldown, can you afford it — read the game world
and Iron's Spells' cooldown tables directly from that thread. Minecraft and Iron's Spells both
assume only the game thread does that. Most of the time it worked; when it didn't, the result could
be anything from a cast that silently never happened to an error on the game thread. Every one of
those checks now reads a snapshot the game thread refreshes each tick, and everything that changes
game state after a recognized phrase happens on the game thread. Two smaller things fell out of the
same pass: leaving a world now resets the voice state properly, so the last-cast display and the
recognition history no longer carry into the next world, and the per-player cast streak the server
tracks is dropped at logout instead of growing for the life of the server. The model downloader
also refuses an archive that claims, or expands to, more than 4 GB rather than filling the disk.
---
## The interface can be translated
Until this release the mod had 47 translatable strings and around 350 English sentences compiled
into the Java. A translator had no file to work from — the only way to change a button label was to
edit the source and rebuild.
Every user-facing string is now a lang key: all of the config screens, the HUD, the guide, the
welcome wizard, the credits, the spell list, the test arena, the live monitor, and both `/voicespells`
command trees. That is **486 keys**, and every one of them is referenced by the code — no reference
without a string, no string without a reference.
Lines that carry a number take a placeholder instead of being glued together in Java, which is what
made the command output translatable at all.
## Russian
`ru_ru.json` ships in the jar. Set your game language to Русский and the whole interface follows.
It is machine-produced and has not yet been reviewed by a native speaker, so if something reads
oddly, it probably is odd — say so and it gets fixed.
Seven values stay in English on purpose: brand names like Iron's Spells and Curios API, and literal
config keys such as `castMode=`, which are not words to translate.
## The diagnostics screen too
Worth calling out separately, because it is the screen you open exactly when something has gone
wrong. Leaving it in English would have defeated the point of translating the rest. All 46 checks —
names and one-line reasons — now come from the lang file.
Two things stay as machine values on purpose: the microphone state and the model state. The code
compares them against fixed strings to decide whether the mic is healthy, so they are translated at
the point they are shown to you rather than at the point they are set.
## The Russian phrasebook is now blank on purpose
`contrib/phrasebook-ru.json` used to arrive with 106 entries copied from Iron's Spells' own Russian
translation. They have been removed, and the file is 294 blank overrides.
Those are two different things that look like one. A lang file translates the spell name **written
on your screen**. A phrasebook holds what you **say out loud**. A written name can be a phrase
nobody would speak that way, or can contain a word the speech model has no entry for — and when
that happens the phrase is dropped from the grammar and the spell simply never fires, with nothing
said anywhere.
Half a file of plausible entries that had never been spoken into a microphone was worse than an
empty one: a blank entry asks to be filled, a wrong one gets trusted. `/voicespells vocab` tells
you which of your phrases the loaded model can actually pronounce, and it takes seconds.
## For anyone who wants to translate it
Copy `assets/voicespells/lang/en_us.json` out of the jar, rename it to your locale, translate the
values and leave the keys alone. [`contrib/README.md`](contrib/README.md) has the three things that
will bite you — what `%s` and `§` mean, and why the guide screens need each paragraph re-wrapped
rather than translated line by line.
Thanks again to **NeoTargetStudios (Spidercat0926)** for the Spanish phrasebook and for a hand with
the mod itself.
release
Incantation 0.10.5 for NeoForge 1.21.1
0.10.54 сент. 2026 г.150Minecraft: 1.21.1neoforge
Что нового
# 0.10.5
Everything since 0.10.4.
Two fixes people reported, and then the big one: the mod speaks Russian now, and every other
language becomes a file somebody can hand back rather than a fork of the source.
---
## Fixed
**0.10.4 crashed on startup on Forge 1.20.1.** If you are on Forge, 0.10.4 crashed the moment the
game tried to load the mod, and going back to 0.10.3 made it stop — so it looked like something
0.10.4 changed. Nothing in the code did. The Forge build produces two jars with the same name, one
that only runs inside a development environment and one that runs everywhere, and the release
tooling uploaded the wrong one. 0.10.3 had been uploaded by hand, which is why it was fine. The
tooling now picks the right jar, and the jar is checked before it goes out. Thanks to the person
who reported it with full logs — the "i9-13900KF" theory in that report is not it; your CPU is
fine. NeoForge was never affected.
**Imbued armor never cast.** Iron's Spells lets you imbue a chestplate with a spell, and saying that
spell did nothing — and if a worn chestplate was your only spell source, the microphone did not even
open under the default "Hold item" setting. The mod checked your hands and your Curios slot for
spell-carrying items and never looked at what you were wearing. It does now, for all four armor
slots, and casts from armor the same way Iron's Spells itself does. One deliberate detail: wearing an
ordinary mage chestplate with nothing imbued in it does not count as holding a spell focus. Every
Iron's Spells chestplate carries an empty spell slot internally, and treating that as "holding a
spellbook" would have left the microphone open for as long as the armor was on. Reported on
CurseForge — thank you.
**The recognizer no longer reaches into the game from its own thread.** Speech recognition runs on
a thread of its own, and a handful of the checks it made right after hearing a phrase — is a
hostile nearby, is a menu open, is that spell on cooldown, can you afford it — read the game world
and Iron's Spells' cooldown tables directly from that thread. Minecraft and Iron's Spells both
assume only the game thread does that. Most of the time it worked; when it didn't, the result could
be anything from a cast that silently never happened to an error on the game thread. Every one of
those checks now reads a snapshot the game thread refreshes each tick, and everything that changes
game state after a recognized phrase happens on the game thread. Two smaller things fell out of the
same pass: leaving a world now resets the voice state properly, so the last-cast display and the
recognition history no longer carry into the next world, and the per-player cast streak the server
tracks is dropped at logout instead of growing for the life of the server. The model downloader
also refuses an archive that claims, or expands to, more than 4 GB rather than filling the disk.
---
## The interface can be translated
Until this release the mod had 47 translatable strings and around 350 English sentences compiled
into the Java. A translator had no file to work from — the only way to change a button label was to
edit the source and rebuild.
Every user-facing string is now a lang key: all of the config screens, the HUD, the guide, the
welcome wizard, the credits, the spell list, the test arena, the live monitor, and both `/voicespells`
command trees. That is **486 keys**, and every one of them is referenced by the code — no reference
without a string, no string without a reference.
Lines that carry a number take a placeholder instead of being glued together in Java, which is what
made the command output translatable at all.
## Russian
`ru_ru.json` ships in the jar. Set your game language to Русский and the whole interface follows.
It is machine-produced and has not yet been reviewed by a native speaker, so if something reads
oddly, it probably is odd — say so and it gets fixed.
Seven values stay in English on purpose: brand names like Iron's Spells and Curios API, and literal
config keys such as `castMode=`, which are not words to translate.
## The diagnostics screen too
Worth calling out separately, because it is the screen you open exactly when something has gone
wrong. Leaving it in English would have defeated the point of translating the rest. All 46 checks —
names and one-line reasons — now come from the lang file.
Two things stay as machine values on purpose: the microphone state and the model state. The code
compares them against fixed strings to decide whether the mic is healthy, so they are translated at
the point they are shown to you rather than at the point they are set.
## The Russian phrasebook is now blank on purpose
`contrib/phrasebook-ru.json` used to arrive with 106 entries copied from Iron's Spells' own Russian
translation. They have been removed, and the file is 294 blank overrides.
Those are two different things that look like one. A lang file translates the spell name **written
on your screen**. A phrasebook holds what you **say out loud**. A written name can be a phrase
nobody would speak that way, or can contain a word the speech model has no entry for — and when
that happens the phrase is dropped from the grammar and the spell simply never fires, with nothing
said anywhere.
Half a file of plausible entries that had never been spoken into a microphone was worse than an
empty one: a blank entry asks to be filled, a wrong one gets trusted. `/voicespells vocab` tells
you which of your phrases the loaded model can actually pronounce, and it takes seconds.
## For anyone who wants to translate it
Copy `assets/voicespells/lang/en_us.json` out of the jar, rename it to your locale, translate the
values and leave the keys alone. [`contrib/README.md`](contrib/README.md) has the three things that
will bite you — what `%s` and `§` mean, and why the guide screens need each paragraph re-wrapped
rather than translated line by line.
Thanks again to **NeoTargetStudios (Spidercat0926)** for the Spanish phrasebook and for a hand with
the mod itself.
release
Incantation 0.10.4 for NeoForge 1.21.1
0.10.4+1.21.1-neoforge22 авг. 2026 г.264Minecraft: 1.21.1neoforge
Что нового
# 0.10.4
Everything since 0.10.3.
This release is mostly repair. Several settings did nothing, one of them blocked casting entirely
whenever it was switched on, and the HUD had been drawing text with no chip behind it for anyone
who had not hand-edited their config. Those are fixed. There is also the beginning of proper
support for playing in a language other than English.
---
## Fixed
**Combat only blocked every cast.** Turning it on stopped voice casting completely — even while
something was hitting you — and it said nothing when it did, so it looked like a dead microphone.
It was reading a value the client is never given. It now works from damage you have actually taken
and from hostiles actually near you, so opening a fight with a spell works.
**Blocked casts are no longer silent.** Combat-only, AFK and sneak-to-cast all used to reject
without a word. If a gate stops a cast, the HUD now says which one.
**The cast queue could not hold more than one spell.** A queued spell's short life was counted from
the moment you said it rather than from when the spell in front of it finished, so naming a second
spell during a long cast always lost it. Queue sizes above 1 do something now.
**Pause when AFK did not pause anything** — the microphone stayed open and kept listening. It now
releases the device. It also treated standing still as being away, so mining, fishing or holding a
position in a farm counted as AFK; looking around, swinging and using items now count as activity.
**Hands-free confirm's "yes" did nothing.** It now accepts the "did you mean…?" alias suggestion,
which is what its description always claimed.
**The config screen crashed the game on Forge 1.20.1.** Opening it was fatal. It has been unopenable
on that loader for as long as the current UI has existed.
**Selecting a different speech model did nothing** for anyone who had installed the mod before the
model list existed — you were kept on English no matter what you chose. Relatedly, pointing
`modelPath` at an empty folder downloaded the *English* model into it rather than the one you
wanted.
**Voice-cast advancements could not be earned**, because cast totals were never saved. Streak
milestones were also taken on trust from the client; the server counts them itself now.
**Assorted:** text that ran off the edge of panels in a dozen places, the device picker eating the
words "System default", the Voice Codex drawing its last row outside its own frame, and a leaked
network connection on every failed model download.
---
## Playing in another language
If you load a non-English speech model today, nothing happens at all — no error, no warning. That is
not a broken model: spell phrases are English words, and the recogniser silently discards any phrase
containing a word its model does not know. Against a Russian model, that is every phrase.
The mod now **tells you** instead of failing in silence. It counts the phrases the loaded model
cannot pronounce, warns in the log, and puts a line in chat when you join a world. `/voicespells
vocab` lists the specifics.
Translating the spell list is still what makes it work, and there are now two head starts in the
repository:
- **Spanish** — 293 of 294 phrases, contributed by **NeoTargetStudios (Spidercat0926)**, including
188 spells from addon mods that ship no translations in any language.
- **Russian** — 106 phrases filled in automatically from Iron's Spells' own Russian translation,
leaving the addon spells for a contributor.
Neither is bundled in the jar yet; both live in `contrib/` and can be copied into
`config/voicespells/phrasebook.json` by hand. A tool for generating the same head start for any
language Iron's Spells translates is in `tools/`.
**Spell names now appear in your own language** on every screen and on the HUD.
---
## Removed
**Voice hotbar select.** It added nine phrases to the recogniser's vocabulary, and every extra
phrase is another thing a spell name can be misheard as — a real accuracy cost for a feature that
only changed a selection. It could not work at all on a non-English model, and its own settings
description told you to say "slot one" while the code was listening for "spell one".
---
## Interface
The screens are built from Minecraft's own widgets and textures now rather than hand-drawn
imitations, so a GUI resource pack reaches them.
- **HUD chips have a background.** The queue chip, miss toast, last-heard chip and alias prompt have
all been bare text lying on the world unless you had hand-edited your colours.
- **The cooldown indicator is out of the middle of the screen.** It used to sit under the crosshair;
it is now a chip in the HUD corner you chose, with an on/off switch and a vertical offset on the
HUD tab.
- **New Credits screen**, with the libraries the mod uses and their licences.
- Tabs, scrollbars, list rows and buttons are vanilla; text no longer overflows its panels.
---
## Known limitations
Said plainly so nobody has to discover them:
- **French and Russian are unproven.** Iron's Spells translates most of its spell names into both,
but nobody has yet spoken them into a matching speech model with this mod.
- **German cannot work yet.** Iron's Spells ships no German translation, so there are no German
spell names to work from. It needs a hand-written phrase pack, not a different model.
- **Addon spells have no translations in any language**, so on a modpack a non-English player
depends on a hand-written phrasebook.
- **Pause when AFK still works from movement and input**, not presence. Sitting still and silent
past the timeout will still pause it.
- **Sneak to cast gives no feedback** beyond the miss toast, and holding sneak while mounted
dismounts you — that is vanilla behaviour, not something the mod can change.
release
Iron's Spells: Incantation 0.10.3
0.10.313 авг. 2026 г.216Minecraft: 1.20.1forge
Что нового
# Incantation 0.10.3 — the things that were quietly not working
A long bug-hunting pass over the whole mod. Most of what follows was **silently** broken: no crash,
no error, nothing in the log — features that simply did nothing while looking like they worked.
If you are on 1.21.1, the first item alone is worth updating for.
## Your settings actually save now (1.21.1)
On NeoForge, **nothing the config screen wrote ever reached the disk.** Not the HUD corner, the
offsets, the opacity, the theme, the recognition tuning — and not aliases you added, profiles you
imported, or noise-gate calibration either.
It behaved perfectly all session, which is why it went unnoticed for so long. Everything came back
to defaults on the next launch.
Forge 1.20.1 was never affected.
## Trigger words no longer switch casting off
If you set a **trigger word** — say, `cast`, so only "cast fireball" fires — voice casting stopped
working entirely. Not for that word: for everything.
The recogniser can only hear words it has been given, and the trigger word was never added to its
vocabulary, so the check for it could never pass. No log line, no "miss" on the HUD. It just went
quiet, and the only way back was clearing the setting.
Trigger words that are *also* part of a spell's name now work too, which matters because the
config file's own example suggests `summon` — and that used to break every Summon spell.
## Your stats are no longer at risk
A single unreadable read of `stats.dat` — an antivirus lock, a cloud-sync hiccup — used to be
enough to wipe your lifetime totals, unlocked themes and codex history. The failure was logged and
then the next save wrote zeros over the real file.
Stats are now written to a temporary file and moved into place, so an interrupted save cannot leave
a half-written file behind, and a file that cannot be read is preserved rather than overwritten.
## Scrolls are consumed when you voice-cast them
**A balance fix, and it is a nerf.** Voice-casting from a scroll was not using it up, so a
single-use item could be cast from indefinitely. Right-clicking always consumed it correctly; only
voice casting was wrong.
## Casting now respects what you are holding
Spells could be voice-cast from a spellbook, imbued weapon or scroll sitting **anywhere in your
hotbar**, including in the strictest cast mode. It now requires the item in your main hand or off
hand, which is what the settings describe and what right-clicking has always required.
## Things that had never worked once
- **The cooldown indicator** under the crosshair. It had never drawn, on any version.
- **The Test Arena, the Live Monitor, the first-run mic check and auto-calibrate** all opened your
microphone and then threw away every frame. Auto-calibrate would tell you it heard nothing after
five seconds of talking — and then overwrite your noise-gate setting with a worse one.
- **The HUD in the top-right or bottom-right corner.** The whole thing rendered off the edge of the
screen.
- **`/voicespells diag`** reported "No voice casts logged this session" on any default server, while
casts were plainly happening.
- **Diagnostics** reported `Vosk model — FAIL` on a perfectly healthy install, because it was
looking in the wrong directory.
## Forge 1.20.1: casting on servers without the mod
Forge clients could not voice-cast on a server that has Iron's Spells but not Incantation. The
fallback path that NeoForge used was assumed impossible on 1.20.1; it was not. Spells were being
silently dropped.
## Also fixed
- A long chat message with the rank tag enabled could exceed the chat limit and **disconnect you**.
- A failed speech-model load spawned loader threads about ten times a second, forever.
- An interrupted model download left a half-extracted folder that looked valid, so it never retried
and recognition stayed dead across restarts.
- Turning **Only owned spells** off left the recogniser still restricted to whatever you had
equipped when you turned it on.
- Loadouts skipped their remaining spells if the first one was not equipped, and could drop out of
the recogniser's vocabulary entirely.
- The leaderboard behind `/voicespells top` no longer trusts a number sent by the client.
- Cancelling the config screen no longer leaves a previewed theme applied.
- The Diagnostics list no longer appears frozen when scrolling back up.
- `[hud] opacity` now affects the cast toast, which it never did.
- Removed `/voicespells rank`, which printed no rank, and the server-side `/voicespells reload`,
which reloaded nothing and shadowed the client command that does.
release
Iron's Spells: Incantation 0.10.3
0.10.313 авг. 2026 г.303Minecraft: 1.21.1neoforge
Что нового
# Incantation 0.10.3 — the things that were quietly not working
A long bug-hunting pass over the whole mod. Most of what follows was **silently** broken: no crash,
no error, nothing in the log — features that simply did nothing while looking like they worked.
If you are on 1.21.1, the first item alone is worth updating for.
## Your settings actually save now (1.21.1)
On NeoForge, **nothing the config screen wrote ever reached the disk.** Not the HUD corner, the
offsets, the opacity, the theme, the recognition tuning — and not aliases you added, profiles you
imported, or noise-gate calibration either.
It behaved perfectly all session, which is why it went unnoticed for so long. Everything came back
to defaults on the next launch.
Forge 1.20.1 was never affected.
## Trigger words no longer switch casting off
If you set a **trigger word** — say, `cast`, so only "cast fireball" fires — voice casting stopped
working entirely. Not for that word: for everything.
The recogniser can only hear words it has been given, and the trigger word was never added to its
vocabulary, so the check for it could never pass. No log line, no "miss" on the HUD. It just went
quiet, and the only way back was clearing the setting.
Trigger words that are *also* part of a spell's name now work too, which matters because the
config file's own example suggests `summon` — and that used to break every Summon spell.
## Your stats are no longer at risk
A single unreadable read of `stats.dat` — an antivirus lock, a cloud-sync hiccup — used to be
enough to wipe your lifetime totals, unlocked themes and codex history. The failure was logged and
then the next save wrote zeros over the real file.
Stats are now written to a temporary file and moved into place, so an interrupted save cannot leave
a half-written file behind, and a file that cannot be read is preserved rather than overwritten.
## Scrolls are consumed when you voice-cast them
**A balance fix, and it is a nerf.** Voice-casting from a scroll was not using it up, so a
single-use item could be cast from indefinitely. Right-clicking always consumed it correctly; only
voice casting was wrong.
## Casting now respects what you are holding
Spells could be voice-cast from a spellbook, imbued weapon or scroll sitting **anywhere in your
hotbar**, including in the strictest cast mode. It now requires the item in your main hand or off
hand, which is what the settings describe and what right-clicking has always required.
## Things that had never worked once
- **The cooldown indicator** under the crosshair. It had never drawn, on any version.
- **The Test Arena, the Live Monitor, the first-run mic check and auto-calibrate** all opened your
microphone and then threw away every frame. Auto-calibrate would tell you it heard nothing after
five seconds of talking — and then overwrite your noise-gate setting with a worse one.
- **The HUD in the top-right or bottom-right corner.** The whole thing rendered off the edge of the
screen.
- **`/voicespells diag`** reported "No voice casts logged this session" on any default server, while
casts were plainly happening.
- **Diagnostics** reported `Vosk model — FAIL` on a perfectly healthy install, because it was
looking in the wrong directory.
## Forge 1.20.1: casting on servers without the mod
Forge clients could not voice-cast on a server that has Iron's Spells but not Incantation. The
fallback path that NeoForge used was assumed impossible on 1.20.1; it was not. Spells were being
silently dropped.
## Also fixed
- A long chat message with the rank tag enabled could exceed the chat limit and **disconnect you**.
- A failed speech-model load spawned loader threads about ten times a second, forever.
- An interrupted model download left a half-extracted folder that looked valid, so it never retried
and recognition stayed dead across restarts.
- Turning **Only owned spells** off left the recogniser still restricted to whatever you had
equipped when you turned it on.
- Loadouts skipped their remaining spells if the first one was not equipped, and could drop out of
the recogniser's vocabulary entirely.
- The leaderboard behind `/voicespells top` no longer trusts a number sent by the client.
- Cancelling the config screen no longer leaves a previewed theme applied.
- The Diagnostics list no longer appears frozen when scrolling back up.
- `[hud] opacity` now affects the cast toast, which it never did.
- Removed `/voicespells rank`, which printed no rank, and the server-side `/voicespells reload`,
which reloaded nothing and shadowed the client command that does.
release
Iron's Spells: Incantation 0.10.2
0.10.212 авг. 2026 г.44Minecraft: 1.21.1neoforge
Что нового
## Servers stop turning players away
Mostly server-side fixes, and two of them matter whether or not you noticed anything was wrong.
### Your server no longer requires the mod on clients
A server running Incantation was rejecting **every player who did not also have it installed** — an "Incompatible" screen on NeoForge, a bare "Connection closed - mismatched mod channel list" on Forge. It also advertised itself as incompatible in the multiplayer list, so people saw a red X before they even tried.
Nothing this mod sends is client-bound, so that requirement bought a server nothing.
Players **with** Incantation voice-cast exactly as before. Players **without** it now join and play normally — they simply cannot voice-cast.
### Server config controls were being ignored on NeoForge
`serverBlockedSpells`, the allowlist, `maxCastsPerSecond` and `castMode` had no effect on voice casts on NeoForge. An operator could ban a spell, see it listed as banned in the config, and have it voice-cast anyway. Voice-cast advancements, the admin log and `/voicespells follow` were skipped on the same path.
Voice casts took Iron's Spells' own packet, so this mod's server side never saw them. Forge was unaffected. **If you run a NeoForge server and set any of those options, they start working in this release.**
### Fixed
- **The first-run mic check could never see your microphone.** The wizard runs at the title screen, and a 0.10.0 fix that stopped the mic opening there also stopped it opening for the check itself.
- **A modified client could disconnect itself** with an "Internal Exception" and a stack trace in the server log, by sending a malformed spell id. NeoForge only.
- **Cooldown and "is casting" hints never worked** — they resolved against an Iron's Spells class that does not exist.
- **Server-side state was never released.** In single-player, one world's cast history and leaderboard leaked into the next.
- `pack_format` on 1.21.1 was a version that does not exist.
### Changed
- **The casting screen edges are off by default.** Those accent bars never actually rendered in any released version — the reflection behind them was broken from the start. Fixing that switched them on for the first time, so they are now `castVignette` in the client config, default off.
### Requirements
Unchanged: Minecraft 1.21.1 (NeoForge 21.1.x) or 1.20.1 (Forge 47.x), Iron's Spells 'n Spellbooks, Curios API, and a microphone. **No voice-chat mod.**
release
Iron's Spells: Incantation 0.10.2
0.10.212 авг. 2026 г.34Minecraft: 1.20.1forge
Что нового
## Servers stop turning players away
Mostly server-side fixes, and two of them matter whether or not you noticed anything was wrong.
### Your server no longer requires the mod on clients
A server running Incantation was rejecting **every player who did not also have it installed** — an "Incompatible" screen on NeoForge, a bare "Connection closed - mismatched mod channel list" on Forge. It also advertised itself as incompatible in the multiplayer list, so people saw a red X before they even tried.
Nothing this mod sends is client-bound, so that requirement bought a server nothing.
Players **with** Incantation voice-cast exactly as before. Players **without** it now join and play normally — they simply cannot voice-cast.
### Server config controls were being ignored on NeoForge
`serverBlockedSpells`, the allowlist, `maxCastsPerSecond` and `castMode` had no effect on voice casts on NeoForge. An operator could ban a spell, see it listed as banned in the config, and have it voice-cast anyway. Voice-cast advancements, the admin log and `/voicespells follow` were skipped on the same path.
Voice casts took Iron's Spells' own packet, so this mod's server side never saw them. Forge was unaffected. **If you run a NeoForge server and set any of those options, they start working in this release.**
### Fixed
- **The first-run mic check could never see your microphone.** The wizard runs at the title screen, and a 0.10.0 fix that stopped the mic opening there also stopped it opening for the check itself.
- **A modified client could disconnect itself** with an "Internal Exception" and a stack trace in the server log, by sending a malformed spell id. NeoForge only.
- **Cooldown and "is casting" hints never worked** — they resolved against an Iron's Spells class that does not exist.
- **Server-side state was never released.** In single-player, one world's cast history and leaderboard leaked into the next.
- `pack_format` on 1.21.1 was a version that does not exist.
### Changed
- **The casting screen edges are off by default.** Those accent bars never actually rendered in any released version — the reflection behind them was broken from the start. Fixing that switched them on for the first time, so they are now `castVignette` in the client config, default off.
### Requirements
Unchanged: Minecraft 1.21.1 (NeoForge 21.1.x) or 1.20.1 (Forge 47.x), Iron's Spells 'n Spellbooks, Curios API, and a microphone. **No voice-chat mod.**
release
Iron's Spells: Incantation 0.10.1
0.10.16 авг. 2026 г.99Minecraft: 1.21.1neoforge
Что нового
## Forge names the conflicting mod
A small release with one fix, and it only affects **Forge 1.20.1** players. **On NeoForge 1.21.1 this is behaviourally identical to 0.10.0 — there is no reason to update.**
### Fixed
**Forge now tells you which mod broke a cast.**
When another mod hooks Iron's Spells' cast path and throws, Incantation performs its casts through reflection, so the exception arrives wrapped. The player saw only:
`Cast error: InvocationTargetException`
which names nothing useful and looks like an Incantation bug. It isn't — it's a conflict in the other mod — but there was no way to tell that from the message. One reported case took weeks to trace.
NeoForge started naming the responsible mod in 0.9.5. The Forge build was left out of that change, so 1.20.1 players kept getting the useless message. They now get the same thing NeoForge players already had:
`Cast blocked by Iron's Restrictions (irons_restrictions) - mod conflict, see the log`
with the full stack trace and an explanation in the log. This doesn't fix the underlying conflict — that isn't Incantation's to fix — but it turns a week of guesswork into a one-line answer.
### Requirements
Unchanged from 0.10.0: Iron's Spells 'n Spellbooks, Curios API, and a microphone. **No voice-chat mod.**
release
Iron's Spells: Incantation 0.10.1
0.10.16 авг. 2026 г.57Minecraft: 1.20.1forge
Что нового
## Forge names the conflicting mod
A small release with one fix, and it only affects **Forge 1.20.1** players. **On NeoForge 1.21.1 this is behaviourally identical to 0.10.0 — no reason to update.**
### Fixed
**Forge now tells you which mod broke a cast.**
When another mod hooks Iron's Spells' cast path and throws, Incantation performs its casts through reflection, so the exception arrives wrapped. The player saw only:
`Cast error: InvocationTargetException`
which names nothing useful and looks like an Incantation bug. It isn't — it's a conflict in the other mod — but there was no way to tell that from the message. One reported case took weeks to trace.
NeoForge started naming the responsible mod in 0.9.5. The Forge build was left out of that change, so 1.20.1 players kept getting the useless message. They now get the same thing NeoForge players already had:
`Cast blocked by Iron's Restrictions (irons_restrictions) - mod conflict, see the log`
with the full stack trace and an explanation in the log. This doesn't fix the underlying conflict — that isn't Incantation's to fix — but it turns a week of guesswork into a one-line answer.
### Requirements
Unchanged from 0.10.0: Iron's Spells 'n Spellbooks, Curios API, and a microphone. **No voice-chat mod.**
release
Iron's Spells: Incantation 0.10.0
0.10.06 авг. 2026 г.43Minecraft: 1.21.1neoforge
Что нового
## No voice-chat mod required
**Incantation now captures your microphone itself.** Simple Voice Chat is no longer a dependency — the mod opens the mic through OpenAL, which Minecraft already ships. Voice casting works on its own, and still works alongside SVC if you use one to talk to friends.
**This changes your setup.** Read the next section before updating.
## The microphone is gated now
By default the mic is only open **while you're holding a spellbook, staff or imbued weapon** — in either hand, or in your Curios slot. Stow it and the mic closes. No keybind involved.
Set `gatingMode` in `config/voicespells-client.toml` if you want something else:
| Mode | Microphone is open |
|---|---|
| `HOLD_ITEM` | while a spell focus is in your hands or Curios slot *(default)* |
| `HOLD_KEY_AND_ITEM` | while holding the cast key **and** a spell focus |
| `HOLD_KEY` | while holding the cast key |
| `ALWAYS_ON` | whenever you're in a world — fully hands-free |
If you talk to friends over voice chat **while armed**, use `HOLD_KEY_AND_ITEM`. Carrying a spellbook isn't on its own evidence you meant to cast, and with a book parked in Curios, `HOLD_ITEM` is close to always-on in practice.
The HUD mic dot shows which state you're in: dim means closed, lit means open, and it pulses while it's hearing you.
## Now on Minecraft 1.20.1
Alongside 1.21.1. Forge 47.x for 1.20.1, NeoForge 21.1.x for 1.21.1 — one codebase.
## Also new
- **The speech model installs itself** on first launch (~40 MB). Spanish, Russian, French and German models are one `modelId` line away.
- **Spell names the model can't pronounce are respelled automatically.** Vosk only hears words in its lexicon, so a spell whose name is missing was silently uncastable. Names that can't be rescued are now named in the log instead of failing quietly.
- **Custom phrases no longer need a restart** — use **More… → Reload grammar now**.
- **`/voicespells devices`** lists every capture device and which one is selected.
## Fixed
- **Clients without Simple Voice Chat crashed on startup.** SVC was declared optional, but the mod touched a class that couldn't load without it, so mod loading died with `NoClassDefFoundError` instead of idling. This affected 0.9.5 and earlier — it's why 0.9.5 should not be used.
- **The microphone opened briefly on the title screen**, contradicting the setting that says it doesn't.
- Documentation that described features the code doesn't have: there is no macro recorder, combat-only never counted damage you dealt, `ANY_SPELLBOOK` also accepts hotbar slots, and there is no "Light" palette.
release
Iron's Spells: Incantation 0.10.0
0.10.06 авг. 2026 г.17Minecraft: 1.20.1forge
Что нового
## No voice-chat mod required
**Incantation now captures your microphone itself.** Simple Voice Chat is no longer a dependency — the mod opens the mic through OpenAL, which Minecraft already ships. Voice casting works on its own, and still works alongside SVC if you use one to talk to friends.
**This changes your setup.** Read the next section before updating.
## The microphone is gated now
By default the mic is only open **while you're holding a spellbook, staff or imbued weapon** — in either hand, or in your Curios slot. Stow it and the mic closes. No keybind involved.
Set `gatingMode` in `config/voicespells-client.toml` if you want something else:
| Mode | Microphone is open |
|---|---|
| `HOLD_ITEM` | while a spell focus is in your hands or Curios slot *(default)* |
| `HOLD_KEY_AND_ITEM` | while holding the cast key **and** a spell focus |
| `HOLD_KEY` | while holding the cast key |
| `ALWAYS_ON` | whenever you're in a world — fully hands-free |
If you talk to friends over voice chat **while armed**, use `HOLD_KEY_AND_ITEM`. Carrying a spellbook isn't on its own evidence you meant to cast, and with a book parked in Curios, `HOLD_ITEM` is close to always-on in practice.
The HUD mic dot shows which state you're in: dim means closed, lit means open, and it pulses while it's hearing you.
## Now on Minecraft 1.20.1
Alongside 1.21.1. Forge 47.x for 1.20.1, NeoForge 21.1.x for 1.21.1 — one codebase.
## Also new
- **The speech model installs itself** on first launch (~40 MB). Spanish, Russian, French and German models are one `modelId` line away.
- **Spell names the model can't pronounce are respelled automatically.** Vosk only hears words in its lexicon, so a spell whose name is missing was silently uncastable. Names that can't be rescued are now named in the log instead of failing quietly.
- **Custom phrases no longer need a restart** — use **More… → Reload grammar now**.
- **`/voicespells devices`** lists every capture device and which one is selected.
## Fixed
- **Clients without Simple Voice Chat crashed on startup.** SVC was declared optional, but the mod touched a class that couldn't load without it, so mod loading died with `NoClassDefFoundError` instead of idling. This affected 0.9.5 and earlier — it's why 0.9.5 should not be used.
- **The microphone opened briefly on the title screen**, contradicting the setting that says it doesn't.
- Documentation that described features the code doesn't have: there is no macro recorder, combat-only never counted damage you dealt, `ANY_SPELLBOOK` also accepts hotbar slots, and there is no "Light" palette.
release
Iron's Spells: Incantation 0.9.5
0.9.55 авг. 2026 г.37Minecraft: 1.21.1neoforge
Что нового
### 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 detail in the log.
The known case is **Iron's Restrictions**. Its mixin on `AbstractSpell.canBeCastedBy(...)` reads a data attachment and your Curios slots; when that chain fails, the cast fails. It is 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.
### Also fixed in 0.9.4, if you are coming from 0.9.3 or earlier
**Dedicated servers no longer crash on startup.** 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, so 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 server crash shipped twice because the project had no dedicated-server run configuration, so every release was tested on a client where that code path is fine by definition. That test now exists and every release is checked against it.
Thanks to Shadower007, Tubeess, eli_zeele, bayratbill, xxshadow007, PhsycoPhink and Kogyuu for the reports and diagnosis.
release
Iron's Spells: Incantation 0.9.3
0.9.331 мая 2026 г.950Minecraft: 1.21.1neoforge
Что нового
### Fixed
- **Panels now shrink to fit the screen at large Minecraft GUI Scales.** 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. At a large GUI Scale the panel got cut off at the right and bottom — the **Done** button could disappear before you could press it. 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.
### Drop-in upgrade
Drop `incantation-0.9.3.jar` over your existing 0.9.2 jar. No config migration.
release
Iron's Spells: Incantation 0.9.2
0.9.231 мая 2026 г.36Minecraft: 1.21.1neoforge
Что нового
### Fixed
- **Phrasebook won't overwrite a file it couldn't read.** If you save `phrasebook.json` half-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, and your in-memory overrides from the last successful load stay active so the grammar doesn't degrade either.
- **Stale entries keep their `default` field.** 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.tmp` then 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.
release
Iron's Spells: Incantation 0.9.1
0.9.131 мая 2026 г.33Minecraft: 1.21.1neoforge
Что нового
### Fixed
- Dedicated-server crash on mod load (thanks **xxshadow007**). The SVC plugin and a couple of common-side helpers statically referenced client-only classes, so the JVM verifier pulled Minecraft's GUI chain in on the server side and crashed it. Plugin, SpellIndex, and the theme cache now route those references through Consumer / Supplier / Runnable sinks wired client-only — common code never link-references the GUI chain.
### Added
- `config/voicespells/phrasebook.json` for bulk localisation (thanks **NeoTargetStudios**). Auto-generated on first launch with one `{ default, override }` entry per indexed spell. Set the `override` value 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 `modelPath` at it in `voicespells-client.toml`.
### 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.
beta
Iron's Spells: Incantation 0.9.0
0.9.021 мая 2026 г.25Minecraft: 1.21.1neoforge
Что нового
First public release.
Voice-cast Iron's Spells 'n Spellbooks through Simple Voice Chat. Offline speech recognition (Vosk) with grammar dynamically restricted to the 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 https://github.com/Hoggormino/incantation for setup instructions.