promotional bannermobile promotional banner

TaleMessage

Experimental
A MiniMessage-style utility for Hytale that allows easy creation of formatted messages using HTML-style tags.

TaleMessage

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

alt text

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&lt;/url&gt;
    </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.

The TaleMessage Team

profile avatar
  • 3
    Followers
  • 2
    Projects
  • 1.4K
    Downloads

More from InsiderAnh