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.

MinecraftLoaderJavaStatus
1.20.1Forge17Beta
1.20.1Fabric17Beta
1.21.1NeoForge21Beta
1.21.1Fabric21Beta
26.1.xNeoForge25Beta
26.1.xFabric25Beta

Forge is not a target on 1.21.1 or 26.1.x.

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.

VersionKubeJS binding
1.20.1no
1.21.1 NeoForgeyes
1.21.1 Fabricno
26.1.xno

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.

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.

ETA renders inside FTB Quests quest screens via QuestScreenMixin.

VersionQuestScreenMixin present
1.20.1yes
1.21.1yes
26.1.xno

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.

A small EmojiCharacterRendererMixin prevents Emojiful’s character renderer from double-processing glyphs that ETA has already handled.

VersionEmojiCharacterRendererMixin present
1.20.1yes
1.21.1yes
26.1.xno

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.

  • ShakeType enum and ShakeCalculator are not present. The shake effect 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 SDFShaders and SDFRenderTypes infrastructure that powers sharp corner reproduction). MSDF is available on 1.20.1 but the underlying implementation is earlier-generation.

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.