🖥️ 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
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%
- A tag ficará neste formato:
- Registre uma tag global na API do nChat.
- A tag ficará neste formato:
{nome-da-tag}
- A tag ficará neste formato:
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);
}