Saltar al contenido principal

🖥️ Uso de API

Utiliza la API de nChat para construir otros plugins.

Añadir la API

Maven:

<repositories>
<repository>
<id>nickuc-repo</id>
<url>https://repo.nickuc.com/maven-releases/</url>
</repository>
</repositories>

<dependencies>
<dependency>
<groupId>com.nickuc.chat</groupId>
<artifactId>api</artifactId>
<version>5.6</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.nickuc.chat</groupId>
<artifactId>api</artifactId>
<version>5.6</version>
<scope>javadocs</scope>
</dependency>
</dependencies>

Gradle:

repositories {
maven {
url = uri('https://repo.nickuc.com/maven-releases/')
}
}

dependencies {
compileOnly('com.nickuc.chat:api:5.6')
}

JavaDocs

JavaDocs

Acceso a JavaDocs

Escuchar los eventos

Todos los eventos tienen las siguientes características:

  • Son asíncronos, se ejecutan en paralelo al thread del servidor.
  • Público o Privado
    • Público: si el mensaje es visto por varios jugadores (por ejemplo, chat global y local).
    • Privado: si el mensaje tiene un remitente y un destinatario (por ejemplo, tell).
  • Real o Virtual:
    • Real: si el mensaje ha sido creado por un jugador (por ejemplo, chat global, local y tell).
    • Virtual: si el mensaje fue creado sin un jugador (por ejemplo, mensaje generado por un plugin).
  • Local o Remoto (proxy):
    • Local: el mensaje sólo se procesó en un servidor.
    • Remoto: el mensaje fue procesado para ser recibido en múltiples servidores.
Información:

Existe una limitación al definir una tag en eventos: no será posible utilizarla como placeholder en tags personalizados.

En ese caso...

  • Registre la tag con PlaceholderAPI (o un plugin de placeholder).
    • La tag tendrá este formato: %nombre-de-la-etiqueta%.
  • Registrar una tag global con la API de nChat.
    • La tag tendrá este formato: {nombre-de-la-etiqueta}.

Ejemplos:

Tycoon (usando md5-chat)

// Mensaje recibido por cualquier canal público, real y local/remoto (global, local, etc.)
@EventHandler
public void onPublicMessage(PublicMessageEvent event) {
if (event.isCancelled()) {
return;
}

TextComponent component = new TextComponent(TextComponent.fromLegacyText("§2[$]"));
component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
new Text(TextComponent.fromLegacyText("§7Server tycoon."))));

event.setTag("tycoon", Component.from(component));
}

// Mensaje recibido por cualquier canal privado, real y local/remoto (tell)
@EventHandler
public void onPrivateMessage(PrivateMessageEvent event) {
if (event.isCancelled()) {
return;
}

TextComponent component = new TextComponent(TextComponent.fromLegacyText("§2[$]"));
component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT,
new Text(TextComponent.fromLegacyText("§7Server tycoon."))));

event.setTag("tycoon", Component.from(component), PrivateMessageEvent.Type.ALL);
}

Tycoon (usando adventure)

// Mensaje recibido por cualquier canal público, real y local/remoto (global, local, etc.)
@EventHandler
public void onPublicMessage(PublicMessageEvent event) {
if (event.isCancelled()) {
return;
}

HoverEvent<Component> hoverEvent = HoverEvent.showText(
Component.text("Server tycoon.").color(NamedTextColor.GRAY));

TextComponent component = Component.text("[$]")
.color(NamedTextColor.DARK_GREEN)
.hoverEvent(hoverEvent);

event.setTag("tycoon", com.nickuc.chat.api.util.Component.from(component));
}

// Mensaje recibido por cualquier canal privado, real y local/remoto (tell)
@EventHandler
public void onPrivateMessage(PrivateMessageEvent event) {
if (event.isCancelled()) {
return;
}

HoverEvent<Component> hoverEvent = HoverEvent.showText(
Component.text("Server tycoon.").color(NamedTextColor.GRAY));

TextComponent component = Component.text("[$]")
.color(NamedTextColor.DARK_GREEN)
.hoverEvent(hoverEvent);

event.setTag("tycoon", com.nickuc.chat.api.util.Component.from(component), PrivateMessageEvent.Type.ALL);
}