Links
Tags
Creators
Details
0.9.5
Compatibility
Required content
Changes
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.
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:BNABZrPW:8is5IpS8"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:BNABZrPW:8is5IpS8"
}

