
TextAPI
TextAPI is a Kotlin-native Spigot text engine with a MiniMessage-like syntax, built-in placeholders, gradients, rainbow, 16 pride presets, click/hover/insert events, and a custom TPS ticker. All fully extensible at runtime via a clean handler-based API.
Links
Tags
Creators
Details
1.0.1
Compatibility
Changes
[1.0.1] - Bug Fixes & Edge Cases
Fixed
- Escape character (
\<) now correctly passes the next character through as raw text instead of being consumed silently - Empty tag brackets (
<>) now render literally instead of being treated as a tag - Unclosed tags no longer crash the renderer — style applies to end of string and is cleanly flushed
- Close tag with no matching open tag now renders literally (e.g.
</red>with no<red>outputs</red>) - Nested close tags now correctly unwind only to the nearest matching frame, preserving outer styles
<reset>now fully clears the frame stack including any active collecting frames (gradient, rainbow, pride)- Placeholder with empty key (
{}) now renders literally instead of emitting an emptyPlaceholdertoken - Placeholder with unclosed brace (
{keywith no}) now renders literally instead of hanging - Tag with no closing
>now renders literally instead of consuming the rest of the string - Gradient with fewer than 2 valid color stops now renders literally instead of silently producing no output
- Color alias (
<color:>,<c:>) with an unresolvable value now renders literally instead of silently dropping the tag - Hex color tag with malformed value (wrong length or invalid characters) now renders literally
<!decoration>with an unrecognized inner tag now renders literally instead of silently no-oping- Hover
show_textinner content now fully parses nested tags recursively (e.g.<hover:show_text:<red><bold>text</bold></red>>) TextContext.resolvenow trims and lowercases keys consistently, preventing case-sensitive misses on placeholder lookup- Override map keys are now normalized before insertion into the context, matching the same normalization applied during resolution
Changed
TextParser.isKnownTagnow checks decoration aliases, color tags, and registered tags before falling back to the placeholder path — reducing false placeholder tokens for valid tag names- Unknown tag passthrough now preserves the original casing of the tag name in the output (e.g.
<MyTag>outputs<MyTag>, not<mytag>)
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:NvPsOCVp:VsjfvwGw"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:NvPsOCVp:VsjfvwGw"
}
