Application de la modération personnalisée
Verité applique normalement les sourdines, le mode lent et les gels de chat automatiquement. Cependant, certains plugins de chat interceptent l’événement de chat standard de Minecraft et gèrent eux-mêmes la transmission des messages.
Si votre plugin fonctionne ainsi, Verité peut ne jamais voir le message, de sorte que ses propres vérifications de sourdine et de mode lent ne s’exécutent jamais. Dans ce cas, vous devez interroger Verité au sujet de l’expéditeur avant que votre plugin n’envoie le message, et arrêter le message vous-même lorsque Verité l’indique.
Vous n’avez besoin de ce guide que si votre plugin gère ou remplace le chat standard de Minecraft. Les serveurs utilisant le chat standard ne nécessitent aucune configuration supplémentaire.
Ceci est le pendant modération du guide Intégration d’un chat personnalisé. Le guide du filtre analyse le contenu des messages ; ce guide applique les sourdines, le mode lent et les gels de chat.
Intégration Java
La surface de modération se trouve dans teacommontea.api.VeriteModeration. Chaque méthode renvoie une valeur sûre lorsque le module de modération est désactivé, de sorte qu’un appelant n’a jamais à en faire un cas particulier.
1. Ajouter Verité en tant que dépendance facultative
Ajoutez Verité à votre plugin.yml :
softdepend:
- VeriteL’utilisation d’une dépendance facultative garantit que Verité est chargé avant votre intégration lorsqu’il est installé, sans pour autant le rendre obligatoire pour le démarrage de votre plugin.
2. Vérifier si l’API est disponible
Si Verité est facultatif, vérifiez la disponibilité de l’API avant de l’utiliser :
private static final boolean VERITE_AVAILABLE;
static {
boolean available;
try {
Class.forName("teacommontea.api.VeriteModeration");
available = true;
} catch (ClassNotFoundException ignored) {
available = false;
}
VERITE_AVAILABLE = available;
}Votre intégration peut alors simplement ne rien faire lorsque Verité n’est pas installé.
3. Appliquer les sourdines
Avant que votre système de chat personnalisé n’envoie un message, demandez à Verité si l’expéditeur est réduit au silence :
if (VERITE_AVAILABLE) {
if (VeriteModeration.muteGate(player)) {
return;
}
}muteGate renvoie true lorsque le joueur est réduit au silence, et ce faisant lui envoie l’avis de sourdine pour vous. Lorsqu’il renvoie true, arrêtez le message.
Si vous préférez construire l’avis vous-même, lisez plutôt la sourdine active :
if (VeriteModeration.isMuted(player.getUniqueId())) {
Punishment mute = VeriteModeration.activeMute(player.getUniqueId());
String line = mute.permanent()
? "You are muted."
: "You are muted for " + mute.remaining(System.currentTimeMillis()) + " more milliseconds.";
player.sendMessage(line);
return;
}isMuted est une vérification pure et n’envoie rien. activeMute renvoie la sourdine sous forme de Punishment, à partir de laquelle vous pouvez lire reason(), permanent() et remaining(now).
4. Appliquer le mode lent et le gel du chat
Verité dispose de deux freins de chat à l’échelle du serveur : un gel global du chat défini par le personnel, et un mode lent par joueur. Barrez les deux de la même manière que vous barrez les sourdines :
if (VeriteModeration.chatMuteGate(player)) {
return;
}
if (VeriteModeration.slowmodeGate(player)) {
return;
}Chacun renvoie true lorsque le joueur devrait être arrêté, et lui envoie la raison (l’avis de gel du chat ou l’attente restante du mode lent) ce faisant. Vérifiez les deux avant l’envoi.
En les assemblant
Un gestionnaire de chat complet qui reproduit l’application de Verité ressemble à ceci :
if (VERITE_AVAILABLE) {
if (VeriteModeration.muteGate(player)) {
return;
}
if (VeriteModeration.chatMuteGate(player)) {
return;
}
if (VeriteModeration.slowmodeGate(player)) {
return;
}
}
sendMessage(player, message);Réagir aux sanctions
Si votre plugin a besoin de savoir quand une sanction est émise ou levée (pour la journalisation, les notifications ou la synchronisation d’un autre système), enregistrez un écouteur :
VeriteModeration.registerListener(new ModerationListener() {
@Override
public void entryAdded(Punishment punishment) {
}
@Override
public void entryRemoved(Punishment punishment) {
}
});entryAdded se déclenche lorsqu’une sanction est émise, entryRemoved lorsqu’une est levée. Chaque Punishment porte la cible, le type, la raison, la durée, l’exécuteur et le caractère silencieux. Appelez unregisterListener avec le même écouteur pour cesser de recevoir les événements.
Verrouillage du serveur
Verité peut sceller le serveur derrière un verrouillage. Votre plugin peut lire l’état de verrouillage ou le piloter via teacommontea.api.VeriteLockdown :
if (VeriteLockdown.active()) {
String reason = VeriteLockdown.reason();
}
VeriteLockdown.begin("Maintenance");
VeriteLockdown.end();active() indique si un verrouillage est en vigueur, reason() renvoie la raison actuelle, begin(reason) en démarre un, et end() le lève. Utilisez active() pour barrer votre propre comportement pendant un verrouillage, ou begin et end pour piloter le verrouillage depuis vos propres commandes.
Utiliser Verité avec Skript
Si votre système de chat personnalisé est écrit en Skript, vous n’avez pas besoin d’interagir avec l’API Java.
Avec Verité et Skript installés, la syntaxe de modération de Verité est automatiquement disponible.
Appliquer les sourdines, le mode lent et le gel
Si votre script gère déjà lui-même l’envoi des messages de chat, vérifiez l’expéditeur avant l’envoi. Utilisez ceci à l’intérieur de votre événement de chat :
if chat is frozen for player:
stop
if player is on slowmode:
stopchat is frozen indique le gel global du chat, et player is on slowmode indique le délai de mode lent par joueur. Les deux envoient la raison au joueur en effet de bord, alors utilisez-les là où vous comptez appliquer, et non simplement pour lire l’état.
Pour vérifier la sourdine personnelle d’un joueur :
if player is muted:
stopplayer is muted lit l’état de sourdine active sans rien envoyer, alors associez-le à votre propre avis.
Contrôler le verrouillage
Vous pouvez démarrer ou lever un verrouillage du serveur depuis un script :
begin message lockdown with reason "Maintenance"
end message lockdownLa raison est facultative ; l’omettre utilise une étiquette générique.
Référence de la syntaxe Skript
player is muted
player is not muted
chat is frozen [for %-player%]
player is rate limited
player is on slowmode
begin message lockdown [(with reason|for) %-string%]
end message lockdownchat is frozen, is rate limited et is on slowmode envoient un avis au joueur lorsqu’ils correspondent, alors utilisez-les dans un gestionnaire de chat où vous comptez arrêter le message.
Référence de l’API
L’API publique se trouve sous :
teacommontea.apiLes classes principales pour l’application de la modération sont :
VeriteModeration
VeriteLockdownLes méthodes utiles comprennent :
VeriteModeration.muteGate(Player player)
VeriteModeration.chatMuteGate(Player player)
VeriteModeration.slowmodeGate(Player player)
VeriteModeration.isMuted(UUID player)
VeriteModeration.activeMute(UUID player)
VeriteModeration.registerListener(ModerationListener listener)
VeriteModeration.unregisterListener(ModerationListener listener)
VeriteLockdown.active()
VeriteLockdown.reason()
VeriteLockdown.begin(String reason)
VeriteLockdown.end()Les méthodes de barrière (muteGate, chatMuteGate, slowmodeGate) décident à la fois d’arrêter le joueur et lui envoient la raison. Les méthodes de requête (isMuted, activeMute) ne font que lire l’état et n’envoient rien.
Pour la plupart des intégrations de chat personnalisé, appliquer les trois barrières dans l’ordre est tout ce dont vous avez besoin :
if (VeriteModeration.muteGate(player)
|| VeriteModeration.chatMuteGate(player)
|| VeriteModeration.slowmodeGate(player)) {
return;
}Verité s’occupe du reste.