Compatibility
EmbersTextAPI targets Minecraft 1.20.1, 1.21.1, and 26.1.x across Fabric, Forge (1.20.1 only), and NeoForge (1.21.1+). All builds are in beta.
Supported versions
Section titled “Supported versions”| Minecraft | Loader | Java | Status |
|---|---|---|---|
| 1.20.1 | Forge | 17 | Beta |
| 1.20.1 | Fabric | 17 | Beta |
| 1.21.1 | NeoForge | 21 | Beta |
| 1.21.1 | Fabric | 21 | Beta |
| 26.1.x | NeoForge | 25 | Beta |
| 26.1.x | Fabric | 25 | Beta |
Forge is not a target on 1.21.1 or 26.1.x.
Mod compatibility
Section titled “Mod compatibility”KubeJS
Section titled “KubeJS”ETA registers an EmbersText scripting binding when KubeJS is installed. KubeJS is treated as an optional dependency: if it’s absent, ETA loads normally and the binding is skipped.
| Version | KubeJS binding |
|---|---|
| 1.20.1 | no |
| 1.21.1 NeoForge | yes |
| 1.21.1 Fabric | no |
| 26.1.x | no |
The binding is NeoForge 1.21.1 only, because KubeJS has no Fabric build for 1.21.1, dropped 1.20.1, and has no 26.1 release yet. See the KubeJS integration page for the full scripting API.
Patchouli
Section titled “Patchouli”ETA renders inside Patchouli books, including books with "i18n": true. Patchouli’s tokenizer runs without interference; $(...) codes, user macros, and i18n translations behave as authored.
One thing to watch: if a Patchouli book defines a macro sharing a name with an ETA tag (for example "<b>": "$(l)"), the macro takes precedence. ETA never sees that tag. To avoid the collision, write <eta-bold> instead of <bold> inside book entries. Patchouli is unlikely to define a macro named eta-bold, so the tag survives Patchouli’s pipeline.
Note that <eta-bold> itself is not processed by ETA’s tag parser either. ETA’s tag-name regex requires alphanumeric characters and underscores; the hyphen in eta-bold means ETA skips it too. The convention works because no collision happens: Patchouli doesn’t consume it, and ETA doesn’t parse it, and the tag text passes through both pipelines unchanged. See The eta- prefix for the full explanation.
FTB Quests
Section titled “FTB Quests”ETA renders inside FTB Quests quest screens via QuestScreenMixin.
| Version | QuestScreenMixin present |
|---|---|
| 1.20.1 | yes |
| 1.21.1 | yes |
| 26.1.x | no |
FTB Quests has no 26.1.x release yet, so there is no quest screen for ETA to hook on that version. The mixin returns once FTB Quests ships for 26.1.x.
Emojiful
Section titled “Emojiful”A small EmojiCharacterRendererMixin prevents Emojiful’s character renderer from double-processing glyphs that ETA has already handled.
| Version | EmojiCharacterRendererMixin present |
|---|---|
| 1.20.1 | yes |
| 1.21.1 | yes |
| 26.1.x | no |
Emojiful has no 26.1.x release yet, so there is nothing to guard against on that version and the mixin is absent. It returns once Emojiful ships for 26.1.x.
Per-version feature gaps
Section titled “Per-version feature gaps”1.20.1
Section titled “1.20.1”ShakeTypeenum andShakeCalculatorare not present. Theshakeeffect exists but uses a simpler internal path without the typed shake variants introduced in 1.21.1.- SDF/MSDF font rendering uses a different glyph provider path (1.21.1 introduced the
SDFShadersandSDFRenderTypesinfrastructure that powers sharp corner reproduction). MSDF is available on 1.20.1 but the underlying implementation is earlier-generation.
26.1.x
Section titled “26.1.x”MSDF font rendering on 26.1 is built on the new RenderPipelines API rather than the legacy ShaderInstance path used on 1.21.1. Bundled fonts and custom SDF fonts both render through the MSDF pipeline. One implementation detail to be aware of: vanilla’s HUD text path hardcodes a NEAREST atlas sampler for bitmap fonts, so ETA installs a small mixin to switch to LINEAR filtering when an SDF pipeline is bound. The override is scoped to ETA’s pipeline, so vanilla bitmap text continues to use its intended pixel-perfect filter.