El chat de Hytale utiliza el PlayerChatEvent, que incluye el formateador, el PlayerRef del remitente, el contenido del mensaje y una lista de destinatarios (generalmente los jugadores que pueden ver el mensaje).
Puedes cancelar este evento o modificar tanto el contenido como el formateador según las necesidades que requieras para ello.
Formateo Manual (Enfoque Estándar)
public class ChatFormatter {
public static void onPlayerChat(PlayerChatEvent event) {
PlayerRef sender = event.getSender();
if(event.getContent().equalsIgnoreCase("poo")) {
event.setCancelled(true);
sender.sendMessage(Message.raw("¡Hey, no puedes decir eso!").color(Color.RED));
}
if(event.getContent().equalsIgnoreCase("you stink")) {
event.setContent("yo apesto");
}
event.setFormatter((playerRed, message) ->
Message.join(
Message.raw("[COOL] ").color(Color.RED),
Message.raw(sender.getUsername()).color(Color.YELLOW),
Message.raw(" : " + message).color(Color.PINK)
));
}
}
El formateador implementa la siguiente interfaz:
public interface Formatter {
@Nonnull
Message format(@Nonnull PlayerRef playerRef, @Nonnull String message);
}
TinyMessage – Formato de Texto Enriquecido (Alternativa Fácil)

TinyMessage es un parser ligero y potente de texto enriquecido para servidores Hytale. Permite usar etiquetas sencillas para crear gradientes, colores hexadecimales, enlaces clicables y estilos anidados en los mensajes del chat.
Funciona similar a MiniMessage de Minecraft.
Funcionalidades
- Gradientes:
<gradient:red:blue>Hola</gradient>o multicolor<gradient:gold:red:black>... - Colores Hex:
<color:#FF55FF>Colores personalizados</color>o<color:red>Colores nombrados</color> - Estilos Estándar:
<b>Negrita</b>,<i>Itálica</i>,<u>Subrayado</u>,<mono>Monoespaciado</mono> - Enlaces Clicables:
<link:https://google.com>¡Clic aquí!</link> - Estilos Anidados: Las etiquetas pueden combinarse indefinidamente
Ejemplos de Uso
import fi.sulku.hytale.TinyMsg;
import com.hypixel.hytale.server.core.Message;
// Parsear texto formateado a un Message
Message message = TinyMsg.parse("<gradient:red:blue>¡Hola Mundo!</gradient>");
player.sendMessage(message);
// Múltiples estilos combinados
TinyMsg.parse("<b><color:gold>Texto dorado en negrita</color></b>");
// Enlace con gradiente clicable
TinyMsg.parse("<link:https://example.com><gradient:aqua:blue>¡Clic aquí!</gradient></link>");
// Estilos anidados complejos
TinyMsg.parse("<b>Negrita <i>y itálica <color:red>y rojo</color></i></b>");
// Resetear estilos en medio del texto
TinyMsg.parse("<b>Negrita <reset>texto normal");
public class ChatFormatter {
private void onPlayerChat(PlayerChatEvent event) {
PlayerRef sender = event.getSender();
if (event.getContent().equalsIgnoreCase("poo")) {
event.setCancelled(true);
sender.sendMessage(TinyMsg.parse("<red>¡Hey, no puedes decir eso!</red>"));
}
if (event.getContent().equalsIgnoreCase("you stink")) {
event.setContent("yo apesto");
}
event.setFormatter((playerRed, message) ->
TinyMsg.parse("<red>[COOL] </red><yellow>" + sender.getUsername() + "</yellow><pink> : " + message + "</pink>"));
}
}
Instalación
Para propietarios de servidores
- Descargar la TinyMessage.jar más reciente desde GitHub Releases
- Colócala en la carpeta
modsde tu servidor.
Para desarrolladores
Temporalmente hasta que el repositorio de plugins Hytale esté disponible:
- Crea una carpeta
libsen tu plugin y coloca el JAR de TinyMessage allí (libs/TinyMessage-2.0.0-SNAPSHOT.jar)
manifest.json
"Dependencies": {
"Zoltus:TinyMessage": "*"
}
Gradle
dependencies {
compileOnly(files("libs/tinymessage-2.0.0-SNAPSHOT.jar"))
}
Maven
<dependency>
<groupId>fi.sulku.hytale</groupId>
<artifactId>tinymessage</artifactId>
<version>2.0.0</version>
<scope>provided</scope>
<systemPath>${project.basedir}/libs/tinymessage-2.0.0-SNAPSHOT.jar</systemPath>
</dependency>
Referencia de API
TinyMsg.parse(String text)
Parsea un string con etiquetas TinyMsg y devuelve un objeto Message.
Parámetros:
text– El texto a parsear
Devuelve:
Message– Objeto Hytale listo para enviar a los jugadores
Etiquetas Soportadas
| Etiqueta | Alias | Ejemplo | Descripción |
|---|---|---|---|
<color:X> | <c:X>, <colour:X> | <color:red>texto</color> | Color del texto (nombrado o hex) |
<gradient:X:Y:Z> | <grnt:X:Y:Z> | <gradient:red:blue>texto</gradient> | Gradiente de colores |
<bold> | <b> | <b>texto</b> | Texto en negrita |
<italic> | <i>, <em> | <i>texto</i> | Texto en itálica |
<underline> | <u> | <u>texto</u> | Texto subrayado |
<monospace> | <mono> | <mono>texto</mono> | Fuente monoespaciada |
<link:URL> | <url:link> | <link:https://google.com>clic</link> | Enlace clicable |
<reset> | <r> | <b>negrita<reset>normal | Resetear todos los estilos |
Colores Nombrados
black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, white
Licencia
TinyMsg está bajo MIT License y es, libre para poder usarlo en tus proyectos.
