This is documentation for EmbersTextAPI 1.x. View the latest version

Styling & Effects

Learn how to create visually stunning text overlays with colors, gradients, animations, and backgrounds.

Apply a single color to your entire text:

Command:

/emberstextapi sendcustom @p {color:0xFF0000} 100 "Red text"

API:

ImmersiveMessage.builder(100, "Red text")
.color(0xFF0000)
.build();

Colors use hexadecimal RGB format: 0xRRGGBB

ColorHex CodeExample
Red0xFF0000
Green0x00FF00
Blue0x0000FF
Yellow0xFFFF00
Cyan0x00FFFF
Magenta0xFF00FF
White0xFFFFFF
Black0x000000

Create smooth color transitions across your text:

Two-Color Gradient:

/emberstextapi sendcustom @p {gradient:[0xFF0000,0x0000FF]} 100 "Red to Blue"

Multi-Color Gradient:

/emberstextapi sendcustom @p {gradient:[0xFF0000,0xFFFF00,0x00FF00]} 100 "Rainbow!"

API:

// Two colors
ImmersiveMessage.builder(100, "Gradient")
.gradient(0xFF0000, 0x0000FF)
.build();
// Multiple colors
ImmersiveMessage.builder(100, "Rainbow")
.gradient(0xFF0000, 0xFF7F00, 0xFFFF00, 0x00FF00, 0x0000FF, 0x8B00FF)
.build();

Sunset:

.gradient(0xFF6B6B, 0xFF8E53, 0xFFB347, 0xFFD700)

Ocean:

.gradient(0x1E3A8A, 0x3B82F6, 0x06B6D4, 0x14B8A6)

Fire:

.gradient(0xFF0000, 0xFF4500, 0xFFA500, 0xFFFF00)

Night Sky:

.gradient(0x000033, 0x000066, 0x6600CC, 0xCC00FF)

Gold:

.gradient(0xFFD700, 0xFFA500, 0xFF8C00)

Make text appear character by character:

Command:

/emberstextapi sendcustom @p {typewriter:2.0f} 150 "Typing effect..."

With Centering:

/emberstextapi sendcustom @p {typewriter:2.0f,typewriterCenter:1b} 150 "Centered typing"

API:

ImmersiveMessage.builder(150, "Typing effect...")
.typewriter(2.0f, false)
.build();
// With centering
ImmersiveMessage.builder(150, "Centered typing")
.typewriter(2.0f, true)
.build();
SpeedCharacters/TickEffect
0.5f0.5Very slow, dramatic
1.0f1Natural reading pace
2.0f2Quick, snappy
3.0f3Fast
5.0f+5+Very fast

Add motion to your text:

The entire text moves as one unit:

Wave Shake:

/emberstextapi sendcustom @p {shakeWave:1.5f} 100 "Smooth wave motion"

Circular Shake:

/emberstextapi sendcustom @p {shakeCircle:1.5f} 100 "Circular movement"

Random Shake:

/emberstextapi sendcustom @p {shakeRandom:2.0f} 100 "Random jitter"

API:

.shake(ShakeType.WAVE, 1.5f)
.shake(ShakeType.CIRCULAR, 1.5f)
.shake(ShakeType.RANDOM, 2.0f)

Each character moves independently:

Wave (Per Character):

/emberstextapi sendcustom @p {charShakeWave:1.5f} 100 "Wavy letters"

Circular (Per Character):

/emberstextapi sendcustom @p {charShakeCircle:1.5f} 100 "Circular letters"

Random (Per Character):

/emberstextapi sendcustom @p {charShakeRandom:2.0f} 100 "Chaotic letters!"

API:

.charShake(ShakeType.WAVE, 1.5f)
.charShake(ShakeType.CIRCULAR, 1.5f)
.charShake(ShakeType.RANDOM, 2.0f)
IntensityEffectBest Use
0.5fSubtleAmbient effects
1.0fNoticeableStandard emphasis
1.5fModerateAttention-grabbing
2.0fStrongDramatic moments
3.0f+ExtremeChaos, damage, alerts

Create scrambled text with optional reveal animations:

Always Obfuscated:

/emberstextapi sendcustom @p {obfuscate:1b} 100 "Scrambled!"

With Reveal Animations:

Left to Right:

/emberstextapi sendcustom @p {obfuscate:1b,obfuscateReveal:"LEFT_TO_RIGHT"} 120 "Revealing..."

Right to Left:

/emberstextapi sendcustom @p {obfuscate:1b,obfuscateReveal:"RIGHT_TO_LEFT"} 120 "Revealing..."

Center Outward:

/emberstextapi sendcustom @p {obfuscate:1b,obfuscateReveal:"CENTER_OUT"} 120 "Revealing..."

Random:

/emberstextapi sendcustom @p {obfuscate:1b,obfuscateReveal:"RANDOM"} 120 "Revealing..."

API:

.obfuscate("LEFT_TO_RIGHT")
.obfuscate("RIGHT_TO_LEFT")
.obfuscate("CENTER_OUT")
.obfuscate("RANDOM")

Simple solid color background with optional gradient border:

Solid Background:

/emberstextapi sendcustom @p {bgColor:0x000000} 100 "Black background"

With Gradient Border:

/emberstextapi sendcustom @p {bgColor:0x000000,bgGradient:[0xFF0000,0x0000FF]} 100 "Fancy border"

API:

ImmersiveMessage.builder(100, "With background")
.backgroundColor(0x000000)
.backgroundGradient(0xFF0000, 0x0000FF)
.build();

Dark Backgrounds:

  • Pure Black: 0x000000
  • Dark Gray: 0x1A1A1A
  • Dark Blue: 0x000033
  • Dark Red: 0x330000

Semi-Transparent Feel:

  • Use darker colors (0x000000 - 0x333333)
  • Pair with lighter text for contrast

Use custom textures for backgrounds:

/emberstextapi sendcustom @p {
background:"minecraft:textures/gui/demo_background.png",
backgroundMode:"STRETCH",
backgroundWidth:256,
backgroundHeight:64,
backgroundPaddingX:10,
backgroundPaddingY:5
} 100 "Textured!"

API:

ImmersiveMessage.builder(100, "Textured!")
.background(
"minecraft:textures/gui/demo_background.png",
"STRETCH",
256, 64, // width, height
10, 5 // paddingX, paddingY
)
.build();
ModeBehavior
STRETCHStretches texture to fit dimensions
CROPCrops texture to fit dimensions
TILERepeats texture to fill space

Place custom textures in:

assets/emberstextapi/textures/background/your_texture.png

Reference as:

"emberstextapi:textures/background/your_texture.png"

Choose where your message appears on screen:

TOP_LEFT TOP_CENTER TOP_RIGHT
CENTER_LEFT CENTER_CENTER CENTER_RIGHT
BOTTOM_LEFT BOTTOM_CENTER BOTTOM_RIGHT

Command:

/emberstextapi sendcustom @p {anchor:"CENTER_CENTER"} 100 "Screen center"

API:

.anchor(TextAnchor.CENTER_CENTER)
.anchor(TextAnchor.TOP_LEFT)
.anchor(TextAnchor.BOTTOM_RIGHT)

Control how text aligns relative to its anchor:

Left-Aligned:

.anchor(TextAnchor.CENTER_LEFT)
.align(TextAlignment.LEFT)

Text extends right from anchor point.

Center-Aligned:

.anchor(TextAnchor.CENTER_CENTER)
.align(TextAlignment.CENTER)

Text centers on anchor point.

Right-Aligned:

.anchor(TextAnchor.CENTER_RIGHT)
.align(TextAlignment.RIGHT)

Text extends left from anchor point.

Fine-tune position with pixel offsets:

Command:

/emberstextapi sendcustom @p {offsetX:50,offsetY:-30} 100 "Offset text"

API:

.anchor(TextAnchor.CENTER_CENTER)
.offsetX(50) // Move 50 pixels right
.offsetY(-30) // Move 30 pixels up

Use built-in or custom fonts:

Command:

/emberstextapi sendcustom @p {font:"minecraft:uniform"} 100 "Uniform font"

API:

.font("minecraft:uniform")
.font("minecraft:alt")
  • minecraft:default - Standard Minecraft font
  • minecraft:uniform - Uniform spacing
  • minecraft:alt - Alternative font

Place font JSON in:

assets/emberstextapi/font/your_font.json

Reference as:

.font("emberstextapi:your_font")

Wrap long text to multiple lines:

Command:

/emberstextapi sendcustom @p {wrap:200} 150 "This is a very long message that will automatically wrap to multiple lines when it exceeds 200 pixels in width"

API:

ImmersiveMessage.builder(150, "Long message...")
.wrap(200) // Wrap at 200 pixels
.build();

Add shadow for better readability:

Command:

/emberstextapi sendcustom @p {shadow:1b} 100 "Text with shadow"

API:

.shadow(true)

Control how messages appear and disappear:

Command:

/emberstextapi sendcustom @p {fadeIn:40,fadeOut:40} 200 "Smooth transitions"

API:

.fadeIn(40) // 2 seconds
.fadeOut(40) // 2 seconds
DurationTicksBest For
Instant0Urgent alerts
Quick10Fast notifications
Standard20Normal messages
Smooth40Cinematic effects
Slow60+Dramatic scenes

Create stunning visuals by combining multiple effects:

/emberstextapi sendcustom @p {
anchor:"CENTER_CENTER",
gradient:[0xFFD700,0xFFA500],
typewriter:2.0f,
typewriterCenter:1b,
fadeIn:30,
fadeOut:30,
shadow:1b,
bgColor:0x000000
} 200 "BOSS BATTLE"

API:

ImmersiveMessage.builder(200, "BOSS BATTLE")
.anchor(TextAnchor.CENTER_CENTER)
.gradient(0xFFD700, 0xFFA500)
.typewriter(2.0f, true)
.fadeIn(30)
.fadeOut(30)
.shadow(true)
.backgroundColor(0x000000)
.build();
/emberstextapi sendcustom @p {
anchor:"TOP_CENTER",
align:"CENTER",
color:0xFFFFFF,
offsetY:20,
shadow:1b,
bgColor:0x1A1A1A,
bgGradient:[0x4A4A4A,0x2A2A2A]
} 1000 "Collect 10 Ancient Crystals"
/emberstextapi sendcustom @p {
anchor:"CENTER_CENTER",
color:0xFF0000,
shakeRandom:2.0f,
shadow:1b,
bgColor:0x330000,
bgGradient:[0xFF0000,0x660000]
} 80 "⚠ DANGER ⚠"
/emberstextapi sendcustom @p {
anchor:"BOTTOM_CENTER",
obfuscate:1b,
obfuscateReveal:"CENTER_OUT",
gradient:[0x8B00FF,0xFFFFFF],
fadeIn:20,
offsetY:-50,
shadow:1b
} 150 "The truth is revealed..."
/emberstextapi sendcustom @p {
anchor:"TOP_RIGHT",
align:"RIGHT",
gradient:[0xFFD700,0xFFFF00],
typewriter:3.0f,
fadeIn:20,
fadeOut:60,
offsetX:-10,
offsetY:10,
shadow:1b,
background:"minecraft:textures/gui/achievement/achievement_background.png",
backgroundMode:"STRETCH",
backgroundWidth:200,
backgroundHeight:50,
backgroundPaddingX:8,
backgroundPaddingY:8
} 100 "Achievement Unlocked!"

  1. Use drop shadow for text over backgrounds
  2. High contrast between text and background colors
  3. Appropriate font size (use wrapping for long text)
  4. Limit shake intensity for important messages (keep ≤1.5f)
  1. Avoid too many simultaneous effects

    • Limit to 2-3 active animations per message
    • Character shake + gradient is more intensive than solid color
  2. Use appropriate durations

    • Don’t set infinite duration unless necessary
    • Clean up tracked messages when done
  1. Don’t block critical UI elements

    • Avoid CENTER_CENTER for long-duration messages
    • Keep hotbar area clear (avoid BOTTOM_CENTER)
  2. Match effects to content

    • Subtle effects for ambient messages
    • Dramatic effects for important events
    • Shake for damage/alerts, typewriter for dialogue
  3. Consistent styling

    • Use similar colors/effects for related messages
    • Create a visual language for your mod/server

// Royal
.gradient(0x4B0082, 0x9370DB, 0xDDA0DD)
// Mystic
.gradient(0x00CED1, 0x48D1CC, 0xAFEEEE)
// Arcane
.gradient(0x8B00FF, 0x9932CC, 0xBA55D3)
// Neon
.gradient(0xFF1493, 0x00FFFF, 0x7FFF00)
// Corporate
.gradient(0x1E3A8A, 0x3B82F6, 0x60A5FA)
// Sunset
.gradient(0xFF6B6B, 0xFF8E53, 0xFFB347)
// Health
.gradient(0xFF0000, 0xFF6B6B)
// Experience
.gradient(0x00FF00, 0x7FFF00)
// Mana
.gradient(0x0000FF, 0x4169E1)