-
Ember's Text API 3.0.0-beta.1
Pre-releaseSome checks failedPublish / Publish Fabric 1.20.1 (push) Has been cancelledPublish / Publish Fabric 1.21.1 (push) Has been cancelledPublish / Publish Fabric 26.1 (push) Has been cancelledPublish / Publish NeoForge 1.21.1 (push) Has been cancelledPublish / Publish NeoForge 26.1 (push) Has been cancelledPublish / Publish Forge 1.20.1 (push) Has been cancelledPublish / Publish to Maven (Forgejo registry) (push) Has been cancelledPublish / Announce release in Discord (push) Has been cancelledreleased this
2026-05-23 00:33:06 -06:00 | 153 commits to master since this releaseDownloads
Pick the jar that matches your loader and Minecraft version. The same files are also on:
- Modrinth
- CurseForge
- Forgejo Maven (
net.tysontheember.emberstextapi:emberstextapi-<loader>-<mc>:3.0.0-beta.1)
Changelog
Changed
- Replaced the config system. Options are now defined by a single schema split
into two files:emberstextapi-client.toml/.json(per-client: which effects
render, performance) andemberstextapi-server.toml/.json(authoritative:
player markup permissions, message limits, anvil rename length). The old
emberstextapi-common.toml,emberstextapi-client.toml(old layout) and
emberstextapi.jsonare no longer read — settings must be re-applied in the
new files, which generate with defaults on first run. - Player markup access is now permission-gated.
playerMarkup.modeisALL,
PERMISSION(nodesemberstextapi.markup.use,.effect.<name>,
.category.<cat>,.bypass, with an OP-level fallback), orNONE. Effects
can be allowed/denied per-effect or per-category for both the client render
gate and the server markup gate. LuckPerms and FTB Ranks back the permission
nodes automatically. - Unified effect parameter naming across visual, message, and animation effects.
Every public param now has a canonical fully-spelled name and a short alias
(e.g.,amplitude/amp,frequency/freq,duration/dur). Old ad-hoc
shorts (a/f/w, etc.) no longer work — see
docs/superpowers/specs/2026-05-18-effect-parameter-refinement-design.md
for the full rename table. - Effects now declare params via
ParamSchema; unknown params log a warning
instead of being silently ignored. obfuscate'sspeedis renamed tointerval(ms per step).shatter'sspeedis renamed toduration(animation length in seconds).matrix'sresolveis renamed toduration.vibrate'sintensityis renamed toamplitude;speedtofrequency.breathe'samountis renamed toamplitude;speedtofrequency.circle'sais renamed toradius(the param was always a radius, not an
amplitude).drift'srx/ryare renamed toamplitudeX/amplitudeY.gradient'sspanis renamed tolength;speedtofrequency.fade'sais renamed tominAlpha.neon'sp/fare renamed tofrequency/falloff;ctocolor.RainbowEffect.getName()now returns"rainbow"(was"rainb").GradientEffect.getName()now returns"gradient"(was"grad").TurbulenceEffect.getName()now returns"turbulence"(was"turb").PendulumEffect.getName()now returns"pendulum"(was"pend").typewriter'scursorparam is now boolean-only; usecursorCharto set
the glyph. Thecursor=<char>overload is dropped.
Added
- Seven new immersive-message motion effects:
grow(continuous scale
oscillation),slam(one-shot drop-in with damped bounces),float
(slow sinusoidal drift),drift(independent X/Y wander),vibrate
(high-frequency jitter),spin(full Z-axis rotation), andslide
(one-shot slide-in or slide-out from any screen edge). All compose with
the existingrock/breatheeffects and with each other. slideaccepts aneasingparam:linear,easeInCubic,easeOutCubic,
easeInOutCubic. Defaults match prior behavior (easeOutCubicfor
mode=in,easeInCubicformode=out).- Three per-character message effects:
drip(characters fall and trail
downward in staggered order),shatter(characters fragment outward at a
configurable trigger time), andmatrix(characters scramble via random
glyph cycling then resolve in stagger order). outlinespan effect: renders a stroked outline around glyphs using a
second SDF draw pass with a configurable color (c) and width (w).
Requires an SDF font; logs a warning and skips the outline draw on vanilla
fonts.- Per-character effect dispatch:
MessageEffectimplementations can opt in
viaperCharacter()to receive anapplyToCharcall for each rendered
glyph, enabling effects that vary per character. Existing whole-message
effects are unaffected. [sound ...]message effect plays a Minecraft sound at a configurable time
offset (at), volume, and pitch. Built-in presets (click,whoosh,
static,magic,pop,thud,shatter) map to vanilla sound ids;
any resource location works as well.drip,shatter,matrix, and
slameach accept an inlinesoundparam that fires on their respective
key moment (first drip, shatter trigger, matrix resolve, slam land).- ETA markup inside
Component.translatablestring arguments now renders.
<...>tags in arguments passed totranslatable(key, args...)are
parsed by the existing markup pipeline instead of being forwarded as
literal strings. EffectRegistry.getSchema(name)andMessageEffectRegistry.getSchema(name)
return theParamSchemafor an effect, enabling introspection and doc
tooling.- The server syncs each player's effective markup policy on join; the client
caches it for accurate previews and feedback. /emberstextapi reloadreloads config from disk and re-syncs policy to
online players;/emberstextapi policy [player]prints a player's resolved
markup policy.- MSDF font rendering now works on MC 26.1 (NeoForge and Fabric); pipelines
are registered against the 26.1 RenderPipelines API.
Downloads
-
Source code (ZIP)
3 downloads
-
Source code (TAR.GZ)
1 download