
Embers Text API
Use fancy text effects anywhere, including custom fonts!
- Загрузки
- 416K
- Подписчики
- 30
- Обновлён
- 10 августа 2026 г.
- Лицензия
- Embers-Modding-License
Опубликован 25 сентября 2025 г.

A library mod that gives full control over animated, styled text overlays. Display rich on-screen messages with effects like rainbow gradients, neon glows, typewriter reveals, glitch distortion, and more… all composable and stackable.
Click any preview - every effect has an animated example in the docs.

Features
- Visual Effects: Rainbow, gradient, glitch, wave, shake, pulse, outline, and more… per-character and stackable
- Neon Glow: SDF-based halos around glyphs, with color, radius, softness, and pulse control
- Animations: Typewriter text, obfuscate reveal/hide, scrolling marquees
- Message Effects: Whole-message motion like slam, shatter, matrix, slide, breathe, and spin
- Markup Parser: XML-style tags for easy text styling
<rainbow>,<wave>;,<neon>,[slam] - MSDF Font Rendering: Crisp TrueType/OpenType fonts at any scale using Multi-Channel Signed Distance Fields with sharp corner reproduction
- Inline Rendering: Items and entities within text
- Server-Side Control: Send styled messages from server to clients
- Highly Customizable: Per-character effects, gradients, backgrounds, anchors, and queue channels
Commands
| Command | Description |
|---|---|
/eta send player duration text |
Send a styled message |
/eta queue player channel definition |
Queue sequential messages on a channel |
/eta test id |
Play a built-in demo message |
/eta test effect name |
Preview an individual effect |
/eta test combo effects |
Preview effect combinations |
For Developers
Embers Text API provides a full Java API for sending styled messages from the server. Register custom effects, parse markup, or build spans programmatically.
Check the documentation for integration guides and API reference.
For Pack Devs
- This is a library/api mod, it does nothing in gameplay on its own, but the command system lets you create and test effects in-game, and the inline markup (like
<rainbow>or<neon>) styles item names, tooltips, and quest descriptions! - Safe to include in any pack.
- Great for quest descriptions, tips, boss introductions, or any stylish text overlay.
- Works with KubeJS and datapacks! v3 includes built in KubeJS support!
Ченджлог
3.0.3+fabric-26.1Релиз26.1, 26.1.1, 26.1.2 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+neoforge-26.2Релиз26.2 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+neoforge-26.1Релиз26.1, 26.1.1, 26.1.2 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+neoforge-1.21.1Релиз1.21.1 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+forge-1.20.1Релиз1.20.1 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+fabric-26.2Релиз26.2 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+fabric-1.20.1Релиз1.20.1 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
3.0.3+fabric-1.21.1Релиз1.21.1 · 10 августа 2026 г.
Changelog
v3.0.3 (2026-08-10)
- A
<scroll>span is now a single unbreakable unit of layout. Multi-line scroll content garbled into overlapping tiles because the effect measured its width from the per-framexprogression, which restarts on every wrapped line, so it sized the whole marquee from the first line alone. A scroll span no longer wraps and reserves only its viewport width. Text written after</scroll>therefore starts one viewport past the marquee rather than past the entire hidden string. - New
[clamp]attribute andclampToScreen(boolean)builder method. Screen clamping stays on by default; turn it off for a message that is meant to sit partly off screen. Clamping also no longer inverts on a message larger than the window, which used to snap it to the wrong corner. - The anvil rename limit now counts visible characters. Vanilla's 50 still applies,
but markup tags no longer count toward it, so
<rainbow>Excalibur</rainbow>is 9 characters rather than 28. A 256-character raw ceiling keeps a name from being padded with unlimited markup. On 1.20.1 and 1.21.1 the text field rejects an over-long name as you type; on 26.1 and 26.2 the server declines the rename, because those versions removed the text-field filter hook. - Removed the
anvil.nameMaxLengthserver config option. It is replaced by the rule above and needs no setting. On 1.20.1 it never worked at all, because the mixin targetedsetItemNamewhile the length constant lives invalidateName. - The continuous message effects
breathe,drift,float,grow,rock,spinandvibratetake three new timing params, so they can run in bursts instead of looping forever:every(seconds between bursts, 0 for continuous),hold(seconds a burst lasts) anddelay(seconds before the first burst). Each burst restarts the effect's own clock at zero, so a sine-driven effect enters and leaves at rest rather than snapping mid-swing. Existing messages are unaffected;everydefaults to 0. <item>and<entity>now take hover and click from an enclosing<hover>or<click>tag. The parser rebuilt icon spans from scratch and dropped everything but the icon's own attributes, so wrapping an icon in<click>did nothing.- New
tooltipattribute on<item>and<entity>.tooltip=trueshows the game's own tooltip for that item or entity, built from the tag'scountandnbt; any other value is used as literal tooltip text. <hover>acceptsaction=show_itemandaction=show_entity, so ordinary text can carry an item or entity tooltip too.- The hover region of an inline icon now matches the sprite. It was the icon's layout advance, which is deliberately 4px narrower than the 16px sprite so icons tuck into surrounding text, leaving the right edge dead. Chat is now hit-tested from the drawn sprite rather than the advance.
- Hover tooltips now work in mod GUIs, not just chat. Vanilla only hit-tests text in the handful of screens that implement it, so interactive markup in FTB Quests or any other custom UI had nothing to hook. Each interactive glyph's on-screen rect is now recorded as it is drawn and tested against the cursor in any screen, clipped to the active scissor so scrolled-out text is not hoverable. 1.20.1 and 1.21.1 only; 26.1 and 26.2 use a different text pipeline and are not covered yet.
- Fixed inline icons vanishing once they carried a hover or click event. Deriving
a style through
withHoverEvent/withClickEventdropped the icon's registry id, so the tooltip appeared over empty space. This also restores icons combined with<type>and<obfuscate>, which lost them the same way. - Fixed the hover and click region of an inline icon. Icons draw 16px wide but rode on a single space, so only about 4px responded to the cursor, and line wrapping measured them the same way.
Комментарии
Загружаем…







