promotional bannermobile promotional banner

Ember's Text API

Text rendering and styling API with effects, animations, and custom font support.

File Details

Ember's Text API 3.0.0-beta.1 (NeoForge 26.1)

  • B
  • May 23, 2026
  • 1.09 MB
  • 29
  • 26.1.2+2
  • NeoForge

File Name

emberstextapi-neoforge-26.1-3.0.0-beta.1.jar

Supported Versions

  • 26.1.2
  • 26.1.1
  • 26.1

Curse Maven Snippet

NeoForge

implementation "curse.maven:embers-text-api-1345948:8131639"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

Changelog

v3.0.0-beta.1 — 2026-05-21

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) and emberstextapi-server.toml/.json (authoritative: player markup permissions, message limits, anvil rename length). The old emberstextapi-common.toml, emberstextapi-client.toml (old layout) and emberstextapi.json are 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.mode is ALL, PERMISSION (nodes emberstextapi.markup.use, .effect.<name>, .category.<cat>, .bypass, with an OP-level fallback), or NONE. 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's speed is renamed to interval (ms per step).
  • shatter's speed is renamed to duration (animation length in seconds).
  • matrix's resolve is renamed to duration.
  • vibrate's intensity is renamed to amplitude; speed to frequency.
  • breathe's amount is renamed to amplitude; speed to frequency.
  • circle's a is renamed to radius (the param was always a radius, not an amplitude).
  • drift's rx/ry are renamed to amplitudeX/amplitudeY.
  • gradient's span is renamed to length; speed to frequency.
  • fade's a is renamed to minAlpha.
  • neon's p/f are renamed to frequency/falloff; c to color.
  • 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's cursor param is now boolean-only; use cursorChar to set the glyph. The cursor=<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), and slide (one-shot slide-in or slide-out from any screen edge). All compose with the existing rock/breathe effects and with each other.
  • slide accepts an easing param: linear, easeInCubic, easeOutCubic, easeInOutCubic. Defaults match prior behavior (easeOutCubic for mode=in, easeInCubic for mode=out).
  • Three per-character message effects: drip (characters fall and trail downward in staggered order), shatter (characters fragment outward at a configurable trigger time), and matrix (characters scramble via random glyph cycling then resolve in stagger order).
  • outline span 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: MessageEffect implementations can opt in via perCharacter() to receive an applyToChar call 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 slam each accept an inline sound param that fires on their respective key moment (first drip, shatter trigger, matrix resolve, slam land).
  • ETA markup inside Component.translatable string arguments now renders. <...> tags in arguments passed to translatable(key, args...) are parsed by the existing markup pipeline instead of being forwarded as literal strings.
  • EffectRegistry.getSchema(name) and MessageEffectRegistry.getSchema(name) return the ParamSchema for 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 reload reloads 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.