TaleMessage
A MiniMessage-style utility library for Hytale that simplifies message formatting using HTML-style tags.

What is TaleMessage?
TaleMessage allows you to create formatted messages for Hytale using an intuitive tag-based syntax, similar to MiniMessage. Instead of manually building complex Message chains, you can write clean, readable strings with tags.
Links
Why Add TaleMessage Support?
- Enhanced User Experience: Let users customize colors and formatting in configuration files without complex color codes
- Easy to Use: Simple HTML-style tags that anyone can understand and use
- Powerful Features: Support for gradients, RGB colors, hex colors, and nested formatting
- Professional Look: Give your plugin a modern and polished feel with formatted messages
Benefits for Your Users
By supporting TaleMessage, your plugin users can:
- Customize all text output without modifying your plugin's code
- Create professional-looking messages with gradients and custom colors
- Use simple, readable syntax instead of color codes
- Share and reuse formatting styles easily
Features
- Named colors (red, blue, gold, etc.)
- Hexadecimal colors (#FF5555)
- RGB colors (255,85,85)
- Text formatting (bold, italic, underline, monospace)
- Multi-color gradients
- Nested tags support
- Escape characters
Quick Integration
Add TaleMessage as a dependency (as shown in the Installation section), then simply parse user-provided strings:
import io.github.insideranh.talemessage.TaleMessage;
import com.hypixel.hytale.server.core.Message;
// In your configuration or message handler
public void sendCustomMessage(PlayerRef player, String configMessage) {
Message formattedMessage = TaleMessage.parse(configMessage);
player.sendMessage(formattedMessage);
}
Example Use Cases
Configuration Files: Allow users to customize messages in your plugin's config:
{
"messages": {
"welcome": "<gradient:gold:yellow>Welcome to the server!</gradient> <white>Enjoy your stay, <aqua>{player}</aqua></white>",
"error": "<red><bold>Error:</bold></red> <white>{message}</white>",
"success": "<green>✓</green> <white>{message}</white>"
}
}
Installation
Gradle
repositories {
maven { url 'https://jitpack.io' }
}
dependencies {
compileOnly 'com.github.InsiderAnh:TaleMessage:1.0.1'
}
Maven
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.github.InsiderAnh</groupId>
<artifactId>TaleMessage</artifactId>
<version>1.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
Quick Examples
Basic Usage
import io.github.insideranh.talemessage.TaleMessage;
// Simple colored message
Message msg = TaleMessage.parse("<red>Error!</red>");
playerRef.sendMessage(msg);
// Multiple colors
Message welcome = TaleMessage.parse("<gold>Welcome</gold> <white>to the server!</white>");
playerRef.sendMessage(welcome);
Formatting
// Bold text
Message bold = TaleMessage.parse("<bold>Important message</bold>");
playerRef.sendMessage(bold);
// Combined formatting
Message error = TaleMessage.parse("<red><bold>Critical Error!</bold></red>");
playerRef.sendMessage(error);
Hex and RGB Colors
// Hexadecimal
Message hex = TaleMessage.parse("<#FF5555>Custom color</#FF5555>");
playerRef.sendMessage(hex);
// RGB values
Message rgb = TaleMessage.parse("<255,85,85>Red text</255,85,85>");
playerRef.sendMessage(rgb);
Gradients
// Two-color gradient
Message gradient = TaleMessage.parse("<gradient:red:blue>Gradient text</gradient>");
playerRef.sendMessage(gradient);
// Rainbow effect
Message rainbow = TaleMessage.parse("<gradient:red:yellow:green:blue:purple>Rainbow!</gradient>");
playerRef.sendMessage(rainbow);
Nested Tags
// Combine colors and formatting
Message complex = TaleMessage.parse(
"<blue><bold>Server:</bold> <white>Status is <green>Online</green></white></blue>"
);
playerRef.sendMessage(complex);
Helper Methods
// Quick colored message
Message msg = TaleMessage.colored("aqua", "Quick message");
// Quick gradient
Message grad = TaleMessage.gradient("Text", "red", "yellow", "green");
// Strip tags (get plain text)
String plain = TaleMessage.strip("<red>Hello <bold>World</bold></red>");
// Result: "Hello World"
Practical Examples
Error Message
Message error = TaleMessage.parse(
"<red><bold>Error:</bold></red> <white>Could not load file <gold>config.yml</gold></white>"
);
playerRef.sendMessage(error);
Success Message
Message success = TaleMessage.parse(
"<green><bold>Success:</bold></green> <white>You earned <gold>100</gold> points!</white>"
);
playerRef.sendMessage(success);
Server Broadcast
Message broadcast = TaleMessage.parse(
"<gradient:gold:yellow>[SERVER]</gradient> <white>Maintenance in <red>5 minutes</red></white>"
);
server.broadcast(broadcast);
Chat Message
Message chat = TaleMessage.parse(
"<dark_gray>[</dark_gray><gradient:red:dark_red>Admin</gradient><dark_gray>]</dark_gray> " +
"<red><bold>" + playerName + "</bold></red><dark_gray>:</dark_gray> " +
"<white>" + message + "</white>"
);
server.broadcast(chat);
In Your Plugin Code:
import com.hypixel.hytale.codec.Codec;
import com.hypixel.hytale.codec.KeyedCodec;
import com.hypixel.hytale.codec.builder.BuilderCodec;
import io.github.insideranh.talemessage.TaleMessage;
import com.hypixel.hytale.server.core.Message;
public class MessagesConfig {
public static final BuilderCodec<MessagesConfig> CODEC =
BuilderCodec.builder(MessagesConfig.class, MessagesConfig::new)
.append(new KeyedCodec<>("messages.welcome", Codec.STRING),
(c, v) -> c.welcomeMessage = v, c -> c.welcomeMessage)
.add()
.append(new KeyedCodec<>("messages.error", Codec.STRING),
(c, v) -> c.errorMessage = v, c -> c.errorMessage)
.add()
.append(new KeyedCodec<>("messages.success", Codec.STRING),
(c, v) -> c.successMessage = v, c -> c.successMessage)
.add()
.build();
public static MessagesConfig INSTANCE;
private String welcomeMessage = "<gradient:gold:yellow>Welcome!</gradient>";
private String errorMessage = "<red><bold>Error:</bold></red> <white>{message}</white>";
private String successMessage = "<green>✓</green> <white>{message}</white>";
{
INSTANCE = this;
}
public void sendWelcome(PlayerRef player) {
String formatted = welcomeMessage.replace("{player}", player.getName());
Message message = TaleMessage.parse(formatted);
player.sendMessage(message);
}
public void sendError(PlayerRef player, String errorText) {
String formatted = errorMessage.replace("{message}", errorText);
Message message = TaleMessage.parse(formatted);
player.sendMessage(message);
}
public void sendSuccess(PlayerRef player, String successText) {
String formatted = successMessage.replace("{message}", successText);
Message message = TaleMessage.parse(formatted);
player.sendMessage(message);
}
}
Supported Colors
Minecraft Colors
black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, white
Additional Colors
orange, pink, purple, cyan, magenta, lime, brown
Custom Colors
- Hexadecimal:
<#RRGGBB>text</#RRGGBB>or<RRGGBB>text</RRGGBB> - RGB:
<R,G,B>text</R,G,B>where values are 0-255
Formatting Tags
- Bold:
<bold>or<strong> - Italic:
<italic>or<em> - Underline:
<underline>or<u> - Monospace:
<monospace>or<mono>
Escape Characters
Use backslash to escape angle brackets:
String escaped = TaleMessage.escape("<html>");
// Result: "\<html\>"
Requirements
- Java 21+
- Hytale Server API
License
Open source project for use in Hytale projects.
Note: This is an independent project not officially affiliated with Hytale or Hypixel Studios.

