Text Effects

Text effects are per-character behaviors applied via span tags. Each effect listed below shows its canonical tag name, any registered aliases, its parameters with defaults and ranges, and an example.


Visual

Animates each character with a eased bounce arc, launching upward and falling back using a Bouncy easing curve.

Syntax

<bounce amplitude=1.0 frequency=1.0 phase=1.0>text</bounce>

Parameters

NameAliasTypeDefaultDescription
amplitudeafloat1.0Bounce height in px (0-50)
frequencyffloat1.0Bounces per second (0.01-100)
phasewfloat1.0Per-character phase offset (0-10)

Example

<bounce amplitude=3 frequency=2>Boing!</bounce>
Each character bouncing up and down with an elastic curve, staggered across the word

Source: BounceEffect.java


Visual

Moves each character in a circular orbit around its original position.

Syntax

<circle radius=1.0 frequency=1.0 phase=0.0>text</circle>

Parameters

NameAliasTypeDefaultDescription
radiusrfloat1.0Circular motion radius in px (0-50)
frequencyfreqfloat1.0Rotations per second (0.01-100)
phasepfloat0.0Per-character phase offset (0-10)

Example

<circle radius=3 phase=0.5>Orbit</circle>
Characters spinning in small circles around their baseline positions, offset in phase

Source: CircleEffect.java


Aliases: col

Visual

Sets every character to a fixed RGBA color.

Syntax

<color color=FF0000>text</color>

Parameters

NameAliasTypeDefaultDescription
colorcolcolor hexnull (white)RGBA hex color, e.g. FF0000 or FF0000FF

Example

<color color=5BCEFA>cyan text</color>
Text displayed in a solid cyan color

Notes

When no color param is given the effect defaults to white (1.0, 1.0, 1.0, 1.0). Both RGB (RRGGBB) and RGBA (RRGGBBAA) hex strings are accepted.

Source: ColorEffect.java


Visual

Pulses each character’s alpha up and down in a sine wave, creating a fade-in/fade-out loop.

Syntax

<fade minAlpha=0.3 frequency=1.0 phase=0.0>text</fade>

Parameters

NameAliasTypeDefaultDescription
minAlphaminfloat0.3Minimum alpha during fade (0-1)
frequencyfreqfloat1.0Cycles per second (0.01-100)
phasepfloat0.0Per-character phase offset (0-10)

Example

<fade minAlpha=0.1 frequency=0.5 phase=0.3>Fading text</fade>
Text pulsing from nearly invisible to fully opaque in a slow wave

Source: FadeEffect.java


Visual

Randomly jitters characters, blinks alpha, and slices each glyph into horizontally shifted bands to simulate a digital glitch artifact.

Syntax

<glitch frequency=1.0 shiftChance=0.08 jitterChance=0.015 blinkChance=0.003 offset=1.0 chromatic=0.0 slices=2>text</glitch>

Parameters

NameAliasTypeDefaultDescription
frequencyfreqfloat1.0Glitch event rate (0.01-100)
shiftChance-float0.08Probability of a slice shift per frame (0-1)
jitterChance-float0.015Probability of position jitter per frame (0-1)
blinkChance-float0.003Probability of alpha blink per frame (0-1)
offset-float1.0Slice/jitter offset multiplier (0-10)
chromatic-float0.0Chromatic aberration intensity (0-5)
slices-int2Number of glitch slices (2-5)

Example

<glitch frequency=2 chromatic=1.5>CORRUPTED</glitch>
Characters flickering with horizontal slice offsets and faint red/cyan color fringing

Notes

Set chromatic above zero to get red/cyan color fringing on shifted slices. slices=2 uses a fast two-slice code path; values 3-5 use the general multi-slice path.

Source: GlitchEffect.java


Aliases: grad

Visual

Maps a color palette across the span, with optional animation, angle, and interpolation mode.

Syntax

<gradient colors=5BCEFA,F5A9B8 hue=false cyclic=true angle=0.0 mode=char frequency=1.0 length=20.0>text</gradient>

Parameters

NameAliasTypeDefaultDescription
colors-string5BCEFA,F5A9B8Comma-separated hex palette
hue-boolfalseInterpolate in HSV instead of RGB
cyclic-booltruePing-pong palette sampling
angleangfloat0.0Gradient angle in degrees (0-360)
mode-enumcharchar (per character) or uniform (whole span at one t)
frequencyfreqfloat1.0Palette cycle frequency in Hz (0-100)
lengthlenfloat20.0Spatial gradient length in characters (0.1-1000)

Example

<gradient colors=FF6B6B,FFE66D,6BFFB8 length=12>Tri-color</gradient>
Text shading across red, yellow, and green from left to right

Notes

frequency=0 disables scrolling so the gradient is purely positional. hue=true produces smoother transitions when colors are close in hue.

Source: GradientEffect.java


Aliases: glow

Visual

Draws a soft radial glow halo around each character by rendering semi-transparent copies in concentric rings.

Syntax

<neon radius=2.0 intensity=1.0 quality=2 frequency=0.0 falloff=2.0 color="">text</neon>

Parameters

NameAliasTypeDefaultDescription
radiusrfloat2.0Glow radius in px (0.5-8)
intensity-float1.0Glow brightness multiplier (0.1-3)
quality-int2Ring sample quality: 1 (fast), 2 (balanced), 3 (detailed) (1-3)
frequencyfreqfloat0.0Pulse frequency in Hz; 0 = static (0-100)
falloff-float2.0Glow falloff exponent (0.5-4)
colorcolcolor hex(text color)Glow color; defaults to the character’s own color

Example

<neon radius=3 intensity=1.5 color=00FFAA>Glow</neon>
Text with a soft green glow halo radiating outward from each letter

Notes

quality is capped by the maxNeonQuality config value on the client. glow is a registered alias for this effect.

Source: NeonEffect.java


Visual

Draws a solid-color border around each character by rendering eight shifted copies behind the original.

Syntax

<outline width=1.0 color="" alpha=1.0>text</outline>

Parameters

NameAliasTypeDefaultDescription
widthwfloat1.0Outline thickness in px (0.5-4)
colorcolcolor hex(black)Outline color
alpha-float1.0Outline alpha multiplier (0-1)

Example

<outline width=1.5 color=FF0000>Outlined</outline>
White text with a red border around each character

Source: OutlineEffect.java


Aliases: pend

Visual

Rotates each character back and forth like a pendulum, with an optional circular orbit offset at the pivot.

Syntax

<pendulum frequency=1.0 angle=30.0 radius=0.0>text</pendulum>

Parameters

NameAliasTypeDefaultDescription
frequencyfreqfloat1.0Swings per second (0.01-100)
angleangfloat30.0Max rotation in degrees (0-90)
radiusrfloat0.0Optional pivot offset radius in px (0-50); 0 = rotate in place

Example

<pendulum angle=45 frequency=0.8>Tick Tock</pendulum>
Characters rocking left and right around their centers like clock pendulums

Source: PendulumEffect.java


Visual

Scales brightness up and down with a sine wave. Optionally cycles through a color palette in sync.

Syntax

<pulse base=0.75 amplitude=1.0 frequency=1.0 phase=0.0 colors="" hue=false>text</pulse>

Parameters

NameAliasTypeDefaultDescription
base-float0.75Baseline brightness (0-1)
amplitudeampfloat1.0Pulse amplitude (0-5)
frequencyfreqfloat1.0Pulses per second (0.01-100)
phasepfloat0.0Per-character phase offset (0-10)
colors-stringnullOptional palette to cycle through
hue-boolfalseInterpolate palette in HSV

Example

<pulse frequency=2 phase=0.4>Pulsing</pulse>
Text brightening and dimming in a wave, each character offset slightly in phase

Source: PulseEffect.java


Aliases: rainb

Visual

Cycles each character through the full HSV hue spectrum, offset per character to produce a rolling rainbow.

Syntax

<rainbow frequency=1.0 phase=1.0>text</rainbow>

Parameters

NameAliasTypeDefaultDescription
frequencyfreqfloat1.0Color cycle frequency in Hz (0-100)
phasepfloat1.0Per-character phase offset (0-10)

Example

<rainbow frequency=1.5>Hello world</rainbow>
Text cycling through rainbow hues across each character in a rolling wave

Source: RainbowEffect.java


Visual

Continuously scrolls the span horizontally within a viewport, optionally fading or cutting at the edges.

Syntax

<scroll speed=1.0 width=-1 clip=fade fadeWidth=8.0 direction=left gap=0.0>text</scroll>

Parameters

NameAliasTypeDefaultDescription
speedsfloat1.0Scroll speed multiplier (0.1-100)
widthwfloat-1.0Viewport width in px; -1 = auto-fit to span (-1 to 1000)
clip-enumfadeEdge clipping: fade, cut, or both
fadeWidthfwfloat8.0Fade gradient width in px (1-50)
directiondirenumleftScroll direction: left or right
gap-float0.0Gap between repetitions in px (0-500)

Example

<scroll speed=1.5 width=60 clip=both>Scrolling ticker text</scroll>
Text scrolling from right to left inside a fixed-width window with fade edges

Notes

On the first render frame the span width is not yet known, so characters are hidden until the measurement pass completes (typically one frame).

Source: ScrollEffect.java


Visual

Offsets and recolors the drop-shadow pass for each character.

Syntax

<shadow offsetX=0.0 offsetY=0.0 color="" alpha=1.0>text</shadow>

Parameters

NameAliasTypeDefaultDescription
offsetXdxfloat0.0Horizontal shadow offset (-100 to 100)
offsetYdyfloat0.0Vertical shadow offset (-100 to 100)
colorcolcolor hex(black)Shadow color
alpha-float1.0Shadow alpha multiplier (0-1)

Example

<shadow dx=2 dy=2 color=880000>Long shadow</shadow>
Text with a dark red drop shadow offset two pixels down and to the right

Notes

This effect only modifies the shadow pass (settings.isShadow == true). The main character layer is unaffected.

Source: ShadowEffect.java


Visual

Randomly displaces each character each frame using a deterministic seed based on the character index and codepoint.

Syntax

<shake amplitude=1.0 frequency=1.0>text</shake>

Parameters

NameAliasTypeDefaultDescription
amplitudeampfloat1.0Shake magnitude in px (0-50)
frequencyfreqfloat1.0Shake frequency in Hz (0.01-100)

Example

<shake amplitude=2 frequency=3>Trembling</shake>
Characters jittering in random directions at a fast rate

Source: ShakeEffect.java


Visual

Rotates each character sinusoidally around its center, like a pendulum but purely rotational with no positional arc.

Syntax

<swing amplitude=1.0 frequency=1.0 phase=0.0>text</swing>

Parameters

NameAliasTypeDefaultDescription
amplitudeampfloat1.0Swing magnitude (rotation amount, 0-10)
frequencyfreqfloat1.0Swings per second (0.01-100)
phasepfloat0.0Per-character phase offset (0-10)

Example

<swing amplitude=2 phase=0.3>Swinging</swing>
Each character rocking back and forth with a slight stagger between them

Notes

swing produces pure rotation. For rotation with an orbital arc, use pendulum.

Source: SwingEffect.java


Aliases: turb

Visual

Displaces each character along two independent sine waves, producing chaotic, non-repeating motion.

Syntax

<turbulence amplitude=1.0 frequency=1.0>text</turbulence>

Parameters

NameAliasTypeDefaultDescription
amplitudeampfloat1.0Turbulence magnitude in px (0-50)
frequencyfreqfloat1.0Turbulence rate in Hz (0.01-100)

Example

<turbulence amplitude=3 frequency=1.5>Chaotic</turbulence>
Characters moving in irregular, seemingly random directions creating a turbulent appearance

Notes

The displacement is driven by sin(t * 1.7 + index * 0.31 + codepoint * 0.07) on X and sin(t * 2.3 + ...) on Y, so each character follows a unique but deterministic path. For uniform random jitter use shake instead.

Source: TurbulenceEffect.java


Visual

Displaces each character vertically along a sine wave, creating a flowing up-and-down ripple across the span.

Syntax

<wave amplitude=1.0 frequency=1.0 wavelength=1.0>text</wave>

Parameters

NameAliasTypeDefaultDescription
amplitudeampfloat1.0Vertical displacement in px (0-50)
frequencyfreqfloat1.0Cycles per second (0.01-100)
wavelengthwlenfloat1.0Spatial wavelength scale (0.001-100)

Example

<wave amplitude=4 frequency=1.5 wavelength=2>Wavy text</wave>
Text rising and falling in a smooth sine wave from left to right

Source: WaveEffect.java


Visual

Displaces each character along a character-specific direction vector in a sine pattern, so each glyph wiggles in its own direction.

Syntax

<wiggle amplitude=1.0 frequency=1.0 phase=1.0>text</wiggle>

Parameters

NameAliasTypeDefaultDescription
amplitudeampfloat1.0Wiggle magnitude in px (0-50)
frequencyfreqfloat1.0Wiggles per second (0.01-100)
phasepfloat1.0Per-character phase offset (0-10)

Example

<wiggle amplitude=2 frequency=2>Wiggly</wiggle>
Characters each moving in a unique direction in a loose, organic wiggle

Notes

The direction angle is derived from codepoint % 30, so the same character at different positions will wiggle in the same direction but at different phases.

Source: WiggleEffect.java



Aliases: obf

Animation

Replaces characters with scrambled glyphs, with four modes: constant scramble, animated reveal, animated hide, and random flicker.

Syntax

<obfuscate mode=constant interval=20 direction=left alphabet=glyph soundMode=transition sound="" volume=0.5 pitch=1.0>text</obfuscate>

Parameters

NameAliasTypeDefaultDescription
mode-enumconstantconstant, reveal, hide, or random
intervalmsint20Milliseconds per glyph flip (1-10000)
directiondirenumleftReveal/hide direction; see ObfuscateMode values
alphabetalphenumglyphglyph (random font glyphs) or readable (A-Za-z0-9)
soundModesmenumtransitiontransition (one sound per flip) or continuous
soundsndstringnullSound preset or resource id
volumevolfloat0.5Sound volume (0-2)
pitch-float1.0Sound pitch (0.5-2)

Example

<obfuscate mode=reveal interval=50>Secret message</obfuscate>
Random characters briefly scrambling into glyphs and back across the text
Characters starting as random scrambled glyphs and resolving to their real letters one at a time from left to right

Notes

reveal and hide animate in sequence and then loop after a short delay. random keeps roughly 30% of characters obfuscated at any moment with each glyph lasting 500-2000 ms. Sound only fires if a sound param is given.

Source: ObfuscateEffect.java


Aliases: type

Animation

Reveals characters one at a time at a configurable speed, with optional cursor, sound, and repeat control.

Syntax

<typewriter speed=12.0 resetDelay=1.0 repeat=infinite cursor=false cursorChar=_ cursorBlink=2.0 sound="" volume=0.5 pitch=1.0>text</typewriter>

Parameters

NameAliasTypeDefaultDescription
speedsfloat12.0Characters per second (0.1-1000)
resetDelay-float1.0Seconds to wait before restarting (0-60)
repeat-stringinfiniteRepetitions: integer count, once, or infinite
cursor-boolfalseShow a blinking cursor at the typing head
cursorChar-string_Single-codepoint cursor glyph
cursorBlink-float2.0Cursor blink frequency in Hz (0-20); 0 = always on
soundsndstringnullSound preset or resource id
volumevolfloat0.5Sound volume (0-2)
pitch-float1.0Sound pitch (0.5-2)

Example

<typewriter speed=8 cursor=true repeat=once>Hello, world.</typewriter>
Text appearing character by character with a blinking underscore cursor advancing to the right

Notes

repeat=once stops after the full string is shown and does not restart. cursorChar must be a single Unicode codepoint; multi-codepoint strings fall back to _ with a logged warning.

Source: TypewriterEffect.java