🖥️ 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
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%
.
- La tag tendrá este formato:
- Registrar una tag global con la API de nChat.
- La tag tendrá este formato:
{nombre-de-la-etiqueta}
.
- La tag tendrá este formato:
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);
}