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.4.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.


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