Skip to main content

๐ŸŽจ TextEffectService

TextEffectService lets addons parse EventForge text effects through the public API.

This was added in EventForge v1.0.2 so addons can use the same text effect system as normal event configs.


Accessing TextEffectService

TextEffectService textEffectService = EventForgeAPI.getTextEffectService();

Check that the API is available first:

if (!EventForgeAPI.isAvailable()) {
return;
}

Basic usage

String parsed = EventForgeAPI.getTextEffectService().parse(
"<gradient:#22d3ed:#ffffff>Event Started</gradient>"
);

You can then send the parsed text normally:

player.sendMessage(parsed);

Animated usage

Some effects can use an animation tick.

String parsed = EventForgeAPI.getTextEffectService().parse(
"<stack:rainbow,wobble>Event Started</stack>",
animationTick
);

A simple tick value can be based on server time:

int animationTick = (int) (System.currentTimeMillis() / 50L);

Supported effects

<rainbow>Text</rainbow>
<reverse-rainbow>Text</reverse-rainbow>
<gradient:#22d3ed:#ffffff>Text</gradient>
<alternate:#22d3ed:#ffffff>Text</alternate>
<striped:#22d3ed:#ffffff>Text</striped>
<pulse:#22d3ed:#ffffff>Text</pulse>
<blink:#ffffff:#555555>Text</blink>
<wave:#22d3ed:#ffffff>Text</wave>
<scan:#777777:#ffffff>Text</scan>
<shimmer:#22d3ed:#ffffff>Text</shimmer>
<wobble:#22d3ed:#ffffff>Text</wobble>
<jump:#22d3ed:#ffffff>Text</jump>
<solid:#22d3ed>Text</solid>
<fire>Text</fire>
<ocean>Text</ocean>
<ice>Text</ice>
<magic>Text</magic>
<toxic>Text</toxic>
<sunset>Text</sunset>
<stack:rainbow,wobble>Text</stack>
<effects:fire,jump>Text</effects>

Using with VariableService

If your text contains EventForge variables or placeholders, parse those first.

String text = "<gradient:#22d3ed:#ffffff>{event_display}</gradient>";

String parsedVariables = EventForgeAPI.getVariableService().parse(
eventId,
player,
text
);

String parsedEffects = EventForgeAPI.getTextEffectService().parse(
parsedVariables
);

player.sendMessage(parsedEffects);

This keeps addon text consistent with EventForge event configs.


Example addon message

public void sendStyledMessage(Player player, String eventId) {
String text = "<pulse:#22d3ed:#ffffff>{event_display}</pulse> &7is active.";

String parsedVariables = EventForgeAPI.getVariableService().parse(
eventId,
player,
text
);

String parsedText = EventForgeAPI.getTextEffectService().parse(parsedVariables);

player.sendMessage(parsedText);
}

Example animated message

public void sendAnimatedPreview(Player player) {
String text = "<stack:rainbow,wobble>EventForge</stack>";

int animationTick = (int) (System.currentTimeMillis() / 50L);

String parsed = EventForgeAPI.getTextEffectService().parse(
text,
animationTick
);

player.sendMessage(parsed);
}

Null safety

Your addon should still check text before parsing.

if (text == null || text.isBlank()) {
return;
}

TextEffectService is designed to handle normal text safely, so you can pass text that does not contain any effect tags.


When to use it

Use TextEffectService when your addon sends custom text that should support EventForge styling.

Common uses:

custom objective messages
custom action messages
addon command output
addon GUI labels
external integration messages
Skript addon output

Related API

EventForgeAPI.getTextEffectService();
EventForgeAPI.getVariableService();
EventForgeAPI.getActionService();

Summary

Use TextEffectService when your addon needs to parse EventForge text effects.

For addon messages that contain event variables, parse variables first, then parse text effects.