Pular para o conteúdo principal

🖥️ Uso da API

Use a API do nChat para desenvolver outros plugins.

Adicionando a 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

Acessar JavaDocs

Ouvindo eventos

Todos os eventos têm as seguintes características:

  • São assíncronos, executam paralelamente a "Server thread".
  • Públicos ou Privados
    • Público: se a mensagem é vista por vários jogadores (ex.: chat global e local).
    • Privado: se a mensagem tem um remetente e um destinatário (ex.: tell).
  • Reais ou Virtuais:
    • Real: se a mensagem foi criada por um jogador (ex.: chat global, local e tell).
    • Virtual: se a mensagem foi criada sem um jogador (ex.: mensagem gerada por um plugin).
  • Locais ou Remotos (em proxy):
    • Locais: a mensagem foi processada apenas em um servidor.
    • Remoto: a mensagem foi processada para ser recebida em múltiplos servidores.
Informação sobre Eventos:

Há uma limitação ao definir uma tag em eventos: não será possível usá-la como placeholder em tags customizadas.

Nesse caso...

  • Registre a tag no PlaceholderAPI (ou em um plugin de placeholders).
    • A tag ficará neste formato: %nome-da-tag%
  • Registre uma tag global na API do nChat.
    • A tag ficará neste formato: {nome-da-tag}

Exemplos:

Magnata (usando md5-chat)

// Mensagem recebida por qualquer canal público, real e 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("§7Magnata do servidor."))));

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

// Mensagem recebida por qualquer canal privado, real e 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("§7Magnata do servidor."))));

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

Magnata (usando adventure)

// Mensagem recebida por qualquer canal público (global, local, etc.)
@EventHandler
public void onPublicMessage(PublicMessageEvent event) {
if (event.isCancelled()) {
return;
}

HoverEvent<Component> hoverEvent = HoverEvent.showText(
Component.text("Magnata do servidor.").color(NamedTextColor.GRAY));

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

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

// Mensagem recebida por qualquer canal privado (tell)
@EventHandler
public void onPrivateMessage(PrivateMessageEvent event) {
if (event.isCancelled()) {
return;
}

HoverEvent<Component> hoverEvent = HoverEvent.showText(
Component.text("Magnata do servidor.").color(NamedTextColor.GRAY));

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

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