Skip to main content

Getting Started (Mod Developers)

Embers Text API is published to a public Maven repository. Add it as a dependency in your Gradle build to get access to the full Java API.


Maven Repository

https://maven.tysontheember.dev
build.gradle
repositories {
maven { url = 'https://maven.tysontheember.dev' }
}

Dependency Snippets

Replace VERSION with the release you want (e.g. 2.9.0).

Group ID: net.tysontheember.emberstextapi

LoaderMinecraftArtifact ID
Fabric1.20.1emberstextapi-fabric-1.20.1
Fabric1.21.1emberstextapi-fabric-1.21.1
NeoForge1.21.1emberstextapi-neoforge-1.21.1
Forge1.20.1emberstextapi-forge-1.20.1
build.gradle
dependencies {
modImplementation "net.tysontheember.emberstextapi:emberstextapi-fabric-1.21.1:VERSION"
}

Sources JARs

Every artifact ships a sources JAR (classifier sources). Your IDE picks it up automatically — no extra configuration needed.


Which Artifact to Use?

Use the artifact matching your loader and Minecraft version. The Fabric and NeoForge artifacts include all shared API code.

If you're writing a multiloader mod with your own common module, depend on the loader-specific artifact in the appropriate loader subproject only.


Versioning

Versions follow MAJOR.MINOR.PATCH (e.g., 2.4.0). The mod version is separate from the Minecraft version — the MC version is part of the artifact ID.

Only release versions are published. There are no snapshot builds.


Licence

Embers Text API is distributed under Ember's Modding Licence (EML) v1.2.

If your project includes forks/derivative code, redistribution, or commercial usage, review the licence terms before publishing.


Troubleshooting

Forge 1.20.1 — Mixin crash on launch (InvalidInjectionException)

If your dev client crashes on startup with an error like:

Critical injection failure: @Inject annotation on emberstextapi$visit could not find any
targets matching '...TranslatableContents;m_213724_(...)'

this is a mixin refmap remapping issue. The published Forge jar embeds an SRG-mapped refmap (required for production), but in your dev environment fg.deobf() remaps the bytecode to Parchment/Mojang names without touching the refmap JSON. The mixin system then looks for SRG names in a class where the methods are now Parchment-named, and fails.

Fix: add these JVM args to every run configuration in your build.gradle:

build.gradle
minecraft {
runs {
configureEach {
jvmArgs(
"-Dmixin.env.remapRefMap=true",
"-Dmixin.env.refMapRemappingFile=${projectDir}/build/createSrgToMcp/output.srg"
)
}
// ... your client / server run blocks
}
}

output.srg is the SRG→Parchment mapping file that ForgeGradle generates automatically for your project (via the createSrgToMcp task). With remapRefMap=true, the mixin system translates EmbersTextAPI's refmap entries at load time so they match your deobfed classpath.

After adding this, re-run ./gradlew genIntellijRuns (or your equivalent IDE setup task) to pick up the updated JVM args.


Next Steps