GroupeZ Docs
Development

Événements

Événements personnalisés déclenchés par zEssentials pour les développeurs

zEssentials déclenche des événements personnalisés qui permettent aux développeurs de réagir aux différentes actions effectuées par le plugin. Ces événements suivent le système d'événements standard de Bukkit et peuvent être écoutés avec @EventHandler dans n'importe quel listener enregistré.


Hiérarchie des événements

Tous les événements de zEssentials héritent d'une hiérarchie de base :

Event
  └── EssentialsEvent
        ├── UserEvent
        │     └── CancellableUserEvent (implements Cancellable)
        └── CancellableEssentialsEvent (implements Cancellable)
  • EssentialsEvent -- Événement de base de tous les événements de zEssentials.
  • UserEvent -- Hérite d'EssentialsEvent et contient une référence vers l'utilisateur concerné.
  • CancellableUserEvent -- Hérite d'UserEvent et implémente Cancellable, ce qui permet d'annuler l'événement.
  • CancellableEssentialsEvent -- Hérite d'EssentialsEvent et implémente Cancellable, pour les événements annulables qui ne concernent pas un utilisateur précis.

Écouter les événements

Pour écouter les événements de zEssentials, enregistrez un listener Bukkit comme d'habitude :

import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;

public class MyListener implements Listener {

    @EventHandler
    public void onUserFirstJoin(UserFirstJoinEvent event) {
        // Your logic here
    }
}

Enregistrez le listener dans le onEnable() de votre plugin :

@Override
public void onEnable() {
    getServer().getPluginManager().registerEvents(new MyListener(), this);
}

Dépendre de zEssentials

Depuis la 1.0.4.0, zEssentials est chargé en tant que plugin Paper (paper-plugin.yml). Déclarez-le comme dépendance de votre plugin pour qu'il soit chargé en premier et que ses classes soient visibles par votre plugin :

Plugin Bukkit (plugin.yml)

softdepend: [ zEssentials ] # ou depend: [ zEssentials ]

Plugin Paper (paper-plugin.yml)

Les plugins Paper sont isolés les uns des autres : ajoutez join-classpath: true pour accéder à l'API de zEssentials.

dependencies:
  server:
    zEssentials:
      load: BEFORE
      required: false
      join-classpath: true

L'instance principale de zEssentials est enregistrée dans le ServicesManager de Bukkit sous EssentialsPlugin :

RegisteredServiceProvider<EssentialsPlugin> provider = Bukkit.getServicesManager().getRegistration(EssentialsPlugin.class);
if (provider != null) {
    EssentialsPlugin essentials = provider.getProvider();
    // Use the API
}

zEssentials nécessite Paper 1.20.6+ (mappings Mojang). Sur Spigot, le plugin reste inactif et l'API n'est pas disponible.


Référence des événements

UserFirstJoinEvent

Déclenché lorsqu'un joueur rejoint le serveur pour la toute première fois.

PropriétéValeur
Classe parenteUserEvent
AnnulableNon
@EventHandler
public void onFirstJoin(UserFirstJoinEvent event) {
    User user = event.getUser();
    Bukkit.getLogger().info(user.getName() + " joined for the first time!");
}

UserJoinEvent

Déclenché à chaque fois qu'un joueur rejoint le serveur.

PropriétéValeur
Classe parenteUserEvent
AnnulableNon
@EventHandler
public void onJoin(UserJoinEvent event) {
    User user = event.getUser();
    Bukkit.getLogger().info(user.getName() + " has joined the server.");
}

UserQuitEvent

Déclenché lorsqu'un joueur quitte le serveur.

PropriétéValeur
Classe parenteUserEvent
AnnulableNon
@EventHandler
public void onQuit(UserQuitEvent event) {
    User user = event.getUser();
    Bukkit.getLogger().info(user.getName() + " has left the server.");
}

UserEconomyUpdateEvent

Déclenché avant la mise à jour du solde d'un joueur. C'est un événement pré-transaction qui permet d'inspecter, de modifier ou d'annuler l'opération avant qu'elle ne soit appliquée.

PropriétéValeur
Classe parenteCancellableUserEvent
AnnulableOui

Méthodes disponibles :

  • getEconomy() / setEconomy() -- obtenir ou changer l'économie ciblée
  • getAmount() / setAmount() -- obtenir ou modifier le montant de la transaction
  • setCancelled(true) -- annuler complètement la transaction
@EventHandler
public void onEconomyUpdate(UserEconomyUpdateEvent event) {
    User user = event.getUser();
    double amount = event.getAmount();

    // Prevent transactions over 1,000,000
    if (amount > 1_000_000) {
        event.setCancelled(true);
        return;
    }

    // Apply a tax by reducing the amount
    event.setAmount(amount * 0.95);
}

UserEconomyPostUpdateEvent

Déclenché après la mise à jour du solde d'un joueur. C'est un événement post-transaction purement informatif : la transaction a déjà été validée et ne peut plus être modifiée ni annulée.

PropriétéValeur
Classe parenteUserEvent
AnnulableNon
@EventHandler
public void onPostEconomyUpdate(UserEconomyPostUpdateEvent event) {
    User user = event.getUser();
    Bukkit.getLogger().info("Balance updated for " + user.getName());
}

EconomyBaltopUpdateEvent

Déclenché lorsque le classement des soldes (baltop) est recalculé et mis à jour.

PropriétéValeur
Classe parenteEssentialsEvent
AnnulableNon

Méthodes disponibles :

  • getBaltop() -- renvoie l'objet Baltop contenant le classement mis à jour
@EventHandler
public void onBaltopUpdate(EconomyBaltopUpdateEvent event) {
    Baltop baltop = event.getBaltop();
    Bukkit.getLogger().info("Baltop rankings have been updated.");
}

DiscordLinkEvent

Déclenché lorsqu'un joueur lie son compte Discord à son compte Minecraft.

PropriétéValeur
Classe parenteCancellableUserEvent
AnnulableOui

Méthodes disponibles :

  • getDiscordAccount() -- renvoie le DiscordAccount en cours de liaison
@EventHandler
public void onDiscordLink(DiscordLinkEvent event) {
    User user = event.getUser();
    DiscordAccount account = event.getDiscordAccount();

    Bukkit.getLogger().info(user.getName() + " linked Discord account: " + account.getUserId());

    // Cancel the link if needed
    // event.setCancelled(true);
}

DiscordUnlinkEvent

Déclenché lorsqu'un joueur supprime la liaison entre son compte Discord et son compte Minecraft.

PropriétéValeur
Classe parenteCancellableUserEvent
AnnulableOui

Méthodes disponibles :

  • getDiscordAccount() -- renvoie le DiscordAccount dont la liaison est supprimée
@EventHandler
public void onDiscordUnlink(DiscordUnlinkEvent event) {
    User user = event.getUser();
    DiscordAccount account = event.getDiscordAccount();

    Bukkit.getLogger().info(user.getName() + " unlinked Discord account: " + account.getUserId());

    // Cancel the unlink if needed
    // event.setCancelled(true);
}

StepCreateEvent

Déclenché lorsqu'une étape est créée pour un joueur. Les étapes sont des jalons de progression du système d'étapes de zEssentials.

PropriétéValeur
Classe parenteCancellableUserEvent
AnnulableOui

Méthodes disponibles :

  • getStep() -- renvoie le Step en cours de création
@EventHandler
public void onStepCreate(StepCreateEvent event) {
    User user = event.getUser();
    Step step = event.getStep();

    Bukkit.getLogger().info("Step created for " + user.getName() + ": " + step.getName());
}

StepFinishEvent

Déclenché lorsqu'un joueur termine une étape.

PropriétéValeur
Classe parenteCancellableUserEvent
AnnulableOui

Méthodes disponibles :

  • getPlayerStep() -- renvoie le PlayerStep qui vient d'être terminé
@EventHandler
public void onStepFinish(StepFinishEvent event) {
    User user = event.getUser();
    PlayerStep playerStep = event.getPlayerStep();

    Bukkit.getLogger().info(user.getName() + " completed a step!");

    // Cancel to prevent the step from being marked as finished
    // event.setCancelled(true);
}

UserVoteEvent

Déclenché lorsqu'un joueur vote pour le serveur.

PropriétéValeur
Classe parenteCancellableEssentialsEvent
AnnulableOui

Méthodes disponibles :

  • getUniqueId() -- renvoie l'UUID du joueur qui a voté
  • getSiteName() -- renvoie le nom du site de vote
@EventHandler
public void onVote(UserVoteEvent event) {
    UUID playerId = event.getUniqueId();
    String site = event.getSiteName();

    Bukkit.getLogger().info("Player " + playerId + " voted on " + site);

    // Cancel to prevent the vote from being recorded
    // event.setCancelled(true);
}

VotePartyEvent

Déclenché au fil de la progression de la vote party. Cet événement est déclenché à chaque vote qui compte pour le seuil de la vote party, ce qui permet de suivre ou de modifier la progression.

PropriétéValeur
Classe parenteCancellableEssentialsEvent
AnnulableOui

Méthodes disponibles :

  • getVotePartyAmount() / setVotePartyAmount() -- obtenir ou modifier la progression actuelle de la vote party
@EventHandler
public void onVotePartyProgress(VotePartyEvent event) {
    int currentAmount = event.getVotePartyAmount();

    // Double the vote party contribution
    event.setVotePartyAmount(currentAmount + 1);

    Bukkit.getLogger().info("Vote party progress: " + event.getVotePartyAmount());
}

VotePartyStartEvent

Déclenché lorsque le seuil de la vote party est atteint et que la vote party est sur le point de commencer.

PropriétéValeur
Classe parenteCancellableEssentialsEvent
AnnulableOui
@EventHandler
public void onVotePartyStart(VotePartyStartEvent event) {
    Bukkit.getLogger().info("Vote party is starting!");

    // Cancel to prevent the vote party from starting
    // event.setCancelled(true);
}

Tableau récapitulatif

ÉvénementParentAnnulableDescription
UserFirstJoinEventUserEventNonPremière connexion d'un joueur
UserJoinEventUserEventNonToute connexion d'un joueur
UserQuitEventUserEventNonDéconnexion d'un joueur
UserEconomyUpdateEventCancellableUserEventOuiAvant la mise à jour du solde
UserEconomyPostUpdateEventUserEventNonAprès la mise à jour du solde
EconomyBaltopUpdateEventEssentialsEventNonClassement baltop recalculé
DiscordLinkEventCancellableUserEventOuiCompte Discord lié
DiscordUnlinkEventCancellableUserEventOuiLiaison du compte Discord supprimée
StepCreateEventCancellableUserEventOuiÉtape créée pour un joueur
StepFinishEventCancellableUserEventOuiÉtape terminée par un joueur
UserVoteEventCancellableEssentialsEventOuiUn joueur vote
VotePartyEventCancellableEssentialsEventOuiProgression de la vote party
VotePartyStartEventCancellableEssentialsEventOuiSeuil de la vote party atteint

Sur cette page

GroupeZ MCP

La documentation dans ton IA

Le MCP permet à ton IA de chercher dans la documentation GroupeZ et de lire les exemples à jour pour t’aider à configurer tes plugins.

Lecture seule · Sans clé API côté documentation

1. Copie l’adresse du serveur

Transport : HTTP (Streamable HTTP). Authentification : aucune. Ton outil utilise son propre modèle et ses propres limites d’abonnement.

  1. Ouvre Plugins dans ChatGPT sur le web, puis + → Ajouter un serveur MCP personnalisé.
  2. Nomme-le « GroupeZ Documentation », colle l’URL ci-dessus et choisis « Aucune authentification ». Crée puis installe le plugin.
  3. Dans une conversation, tape @ et sélectionne ce plugin avant d’envoyer ta question. Si nécessaire, active search, get_page et list_pages dans ses paramètres.
Guide officiel de cet outil

3. Pose une question

Utilise le MCP GroupeZ pour m’aider à créer un inventaire zMenu. Recherche les pages pertinentes, lis les exemples et cite tes sources.
Autres clients et dépannage

Pour les clients utilisant mcpServers, adapte cet exemple à leur format :

{
  "mcpServers": {
    "groupez-docs": {
      "url": ""
    }
  }
}

Les outils disponibles sont search, get_page et list_pages. Après une mise à jour, actualise les outils du connecteur. Si ton IA n’y accède pas, vérifie que le connecteur est activé dans la conversation et que ton compte autorise les MCP personnalisés. Ouvrir l’URL dans un navigateur n’est pas un test MCP.