TextAPI is a high-performance text formatting and parsing system for Spigot 1.21+ servers.
It provides a MiniMessage-like syntax with placeholders, gradients, rainbow effects, hover/click events, and a fully extensible placeholder API.
- Custom tag-based text parser (
<red>,<gradient>,<rainbow>, etc.) - Placeholder system (
{player},{server_online}, custom placeholders) - Click and hover events (Bungee Chat API)
- Gradient and rainbow text rendering
- Pride gradient presets
- Token-level parsing API
- Full command-based debugging tools
- Runtime placeholder registration
- TPS placeholder support
- Component + legacy string output
- Tab-complete enabled
/textcommand
- Build the plugin:
mvn clean package- Place the generated jar in your server:
/plugins/TextAPI-0.1.0.jar
- Restart the server.
config.yml
command:
enabled: true/text
/text parse <message>
/text components <message>
/text tokens <message>
/text placeholders
/text register <key> <value>
/text unregister <key>
/text examples
<red>Red</red>
<gold>Gold</gold>
<#ff5500>Hex color</#ff5500><gradient:#ff0000:#00ff00>Gradient text</gradient><rainbow>Rainbow text</rainbow><bold>Bold</bold>
<italic>Italic</italic>
<underlined>Underline</underlined>
<strikethrough>Strike</strikethrough><hover:show_text:Hello world>Hover me</hover><click:run_command:/spawn>Run command</click>
<click:suggest_command:/msg >Suggest command</click>
<click:open_url:https://example.com>Open URL</click>Hello {player}
Online: {server_online}
World: {player_world}{player}{player_name}{player_uuid}{player_world}{player_x}{player_y}{player_z}{player_ping}{player_gamemode}{player_health}{player_food}{player_level}{player_exp}{player_ip}{player_locale}{player_online}
{server_name}{server_version}{server_motd}{server_online}{server_max}{server_tps}
{time}{date}{datetime}{timestamp}
{newline}{prefix}
The plugin initializes automatically, but you can use the API directly:
TextAPI.parse("<red>Hello {player}</red>", player)TextAPI.send(player, "<gradient:#ff0000:#00ff00>Hello</gradient>")val components = TextAPI.components("<bold>Hello</bold>", player)val tokens = TextAPI.tokens("<red>Hello</red>")TextAPI.registerPlaceholder("rank") { player ->
if (player?.isOp == true) "Admin" else "User"
}TextAPI.unregisterPlaceholder("rank")- Parsing is single-pass and lightweight
- Gradient/rainbow expansion is per-character (CPU linear)
- Placeholder resolution is cached per render context
- TPS tracking uses rolling tick buffer (600 ticks)
com.nolly.mc.textapi.command
Default: op
- Spigot 1.21+
- Java 21
- Kotlin 2.4+
- Bungee Chat Component API
