Skip to content

thenolle/textapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

TextAPI

Java Kotlin Spigot License

GitHub Repo GitHub Release Downloads Issues

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.


Examples

Features

  • 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 /text command

Installation

  1. Build the plugin:
mvn clean package
  1. Place the generated jar in your server:
/plugins/TextAPI-0.1.0.jar
  1. Restart the server.

Configuration

config.yml

command:
  enabled: true

Commands

Main command

/text

Subcommands

Parse & send text

/text parse <message>

Preview components (debug)

/text components <message>

Tokenize input (debug)

/text tokens <message>

List placeholders

/text placeholders

Register placeholder

/text register <key> <value>

Unregister placeholder

/text unregister <key>

Examples

/text examples

Syntax Guide

Colors

<red>Red</red>
<gold>Gold</gold>
<#ff5500>Hex color</#ff5500>

Gradients

<gradient:#ff0000:#00ff00>Gradient text</gradient>

Rainbow

<rainbow>Rainbow text</rainbow>

Decorations

<bold>Bold</bold>
<italic>Italic</italic>
<underlined>Underline</underlined>
<strikethrough>Strike</strikethrough>

Hover events

<hover:show_text:Hello world>Hover me</hover>

Click events

<click:run_command:/spawn>Run command</click>
<click:suggest_command:/msg >Suggest command</click>
<click:open_url:https://example.com>Open URL</click>

Placeholders

Hello {player}
Online: {server_online}
World: {player_world}

Built-in Placeholders

Player

  • {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

  • {server_name}
  • {server_version}
  • {server_motd}
  • {server_online}
  • {server_max}
  • {server_tps}

Time

  • {time}
  • {date}
  • {datetime}
  • {timestamp}

Misc

  • {newline}
  • {prefix}

API Usage

Initialize

The plugin initializes automatically, but you can use the API directly:

TextAPI.parse("<red>Hello {player}</red>", player)

Send message

TextAPI.send(player, "<gradient:#ff0000:#00ff00>Hello</gradient>")

Components

val components = TextAPI.components("<bold>Hello</bold>", player)

Tokens

val tokens = TextAPI.tokens("<red>Hello</red>")

Register placeholder

TextAPI.registerPlaceholder("rank") { player ->
    if (player?.isOp == true) "Admin" else "User"
}

Unregister placeholder

TextAPI.unregisterPlaceholder("rank")

Performance Notes

  • 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)

Permissions

com.nolly.mc.textapi.command

Default: op


Compatibility

  • Spigot 1.21+
  • Java 21
  • Kotlin 2.4+
  • Bungee Chat Component API

License

WTFPL