๐จ 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.