Cómo Formatear el Chat de Hytale

Hytale: Guías, Mods, Opiniones | Videojuegos en CIBERED

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.

Explorando el Código de HytaleServer.jar

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)

ejemplo TinyMessage

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

  1. Descargar la TinyMessage.jar más reciente desde GitHub Releases
  2. Colócala en la carpeta mods de tu servidor.

Para desarrolladores

Temporalmente hasta que el repositorio de plugins Hytale esté disponible:

  1. Crea una carpeta libs en 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

EtiquetaAliasEjemploDescripció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>normalResetear 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.