Iron's Spells: Incantation

Voice-cast Iron's Spells 'n Spellbooks by saying spell names out loud. Standalone and offline - Incantation captures your microphone itself, so no voice-chat mod is required. Only spells you actually have equipped will fire.
Back to Files

Incantation 0.10.6 for NeoForge 1.21.1

File nameincantation-0.10.6+1.21.1-neoforge.jar
Uploader
HoggorminoHoggormino
Uploaded
Sep 8, 2026
Downloads
147
Size
24.9 MB
Mod Loaders
NeoForge
File ID
8837126
Type
R
Release
Supported game versions
  • 1.21.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:irons-spells-incantation-1549991:8837126"

Learn more about Curse Maven

What's new

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:

  • incantationOnlyFIRST_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.

This mod has no additional files