GroupeZ Docs
ConfigurationsButtons

Actions

Reference complete de tous les types d'actions dans zMenu

Les actions sont des commandes executees lorsqu'un joueur interagit avec un bouton. zMenu fournit plus de 30 types d'actions pour divers usages.

Utilisation de base

items:
  mon-bouton:
    slot: 0
    item:
      material: DIAMOND
    actions:
      - type: message
        messages:
          - "&aBonjour, %player% !"
      - type: sound
        sound: UI_BUTTON_CLICK

Options communes

Toutes les actions supportent les parametres optionnels suivants :

delay

Ajouter un delai (en ticks) avant l'execution de l'action. 20 ticks = 1 seconde.

actions:
  - type: refresh
    delay: 10  # Attendre 10 ticks avant de rafraichir

chance

Definir un pourcentage de chance pour que l'action s'execute. Combine avec deny-chance-actions pour definir des actions alternatives lorsque la chance echoue.

actions:
  - type: console-command
    commands:
      - "give %player% diamond 1"
    chance: 50  # 50% de chance d'execution
    deny-chance-actions:  # Actions a executer si la chance echoue
      - type: message
        messages:
          - "&cPas de chance cette fois !"

Options :

OptionTypeDescription
delayEntierDelai en ticks avant l'execution (20 ticks = 1 seconde)
chanceEntierPourcentage de chance (0-100) pour que l'action s'execute
deny-chance-actionsListeActions a executer si la verification de chance echoue

Exemple avec les deux options :

actions:
  - type: refresh
    delay: 20  # Attendre 1 seconde
    chance: 75  # 75% de chance
    deny-chance-actions:
      - type: message
        messages:
          - "&cLe rafraichissement a echoue !"

Actions de message

message

Envoyer un message au joueur.

- type: message
  messages:
    - "&aLigne 1"
    - "&bLigne 2"
  minimessage: true  # Optionnel : Utiliser le format MiniMessage

messages

Alias pour message.

- type: messages
  messages:
    - "&aPlusieurs lignes"
    - "&bDe texte"

message-to

Envoyer un message a un joueur specifique.

- type: message-to
  player: "Notch"
  messages:
    - "&aBonjour de la part de %player% !"

broadcast

Envoyer un message a tous les joueurs en ligne.

- type: broadcast
  messages:
    - "&6[Annonce] &f%player% a achete un item special !"

broadcast-message

Envoyer une liste de lignes de chat a tous les joueurs en ligne.

- type: broadcast_message
  messages:
    - "&6[Boutique] &f%sender% &7vient d'acheter un grade !"
  minimessage: true # Optionnel, par defaut : true

Options :

OptionTypeRequisDescription
messagesListeOuiLes lignes envoyees a tous les joueurs en ligne. Doit etre ecrit sous forme de liste YAML.
minimessageBooleenNonInterpreter chaque ligne en MiniMessage. Par defaut true. Mettre false pour l'envoyer telle quelle. Alias : mini-message.

Placeholders : %sender% est remplace par le nom du joueur qui a declenche l'action, %receiver% par le nom de chaque joueur qui recoit la ligne.

Alias : broadcast_message et broadcast message.

Difference avec broadcast

broadcast_message resout ses placeholders une seule fois, pour le joueur qui l'a declenche, puis envoie ce meme resultat a tout le monde : seul %receiver% varie. broadcast les resout a nouveau pour chaque destinataire et accepte une liste requirements pour filtrer qui recoit le message.

Utilisez broadcast quand le texte doit differer selon le destinataire ou etre filtre, et broadcast_message pour une simple annonce a propos du joueur qui a clique.

Contrairement a l'action message, la cle au singulier message et une chaine unique en ligne ne sont pas acceptees : messages doit etre une liste YAML. La substitution de %player% et le decoupage sur \n ne sont pas appliques non plus.


action-bar

Afficher un message dans la barre d'action.

- type: action-bar
  message: "&aBienvenue dans la boutique !"

title

Afficher un titre et sous-titre.

- type: title
  title: "&6&lBienvenue !"
  subtitle: "&7Profitez de votre sejour"
  start: 20       # Ticks
  duration: 60    # Ticks
  end: 20         # Ticks

broadcast-title

Afficher un titre et un sous-titre a tous les joueurs en ligne d'un coup. Les options sont les memes que celles de title, qui ne vise que le joueur ayant clique.

- type: broadcast_title
  title: "&6&lEVENEMENT"
  subtitle: "&7Lance par &f%player%"
  start: 20       # Ticks
  duration: 60    # Ticks
  end: 20         # Ticks

Options :

OptionTypeRequisDescription
titleTexteOuiLa ligne de titre. Voir l'avertissement ci-dessous.
subtitleTexteOuiLa ligne de sous-titre. Voir l'avertissement ci-dessous.
startNombreNonDuree d'apparition, en ticks. Par defaut 0.
durationNombreNonDuree d'affichage a l'ecran, en ticks. Par defaut 0.
endNombreNonDuree de disparition, en ticks. Par defaut 0.

Les placeholders sont resolus une seule fois, pour le joueur qui a declenche l'action, donc %player_name% designe ce joueur et non chaque destinataire : c'est en general ce que l'on veut pour une annonce.

Alias : broadcast_title et broadcast title.

Toujours ecrire les deux lignes et les trois durees

title et subtitle n'ont pas de valeur par defaut : en omettre un envoie le texte litteral null a tous les joueurs. Les trois durees valent 0 par defaut, ce qui fait apparaitre puis disparaitre le titre immediatement sur la plupart des clients. Renseignez-les explicitement, comme dans l'exemple ci-dessus.


toast

Afficher une notification toast (popup de succes).

- type: toast
  icon: DIAMOND
  message: "&aSucces debloque !"
  frame: TASK  # TASK, GOAL ou CHALLENGE

Actions de son

sound

Jouer un son au joueur.

- type: sound
  sound: ENTITY_EXPERIENCE_ORB_PICKUP
  pitch: 1.0    # 0.5 a 2.0
  volume: 1.0   # Distance
  category: MASTER  # Categorie de son optionnelle

Sons courants :

  • UI_BUTTON_CLICK
  • ENTITY_EXPERIENCE_ORB_PICKUP
  • ENTITY_PLAYER_LEVELUP
  • ENTITY_VILLAGER_YES
  • ENTITY_VILLAGER_NO
  • BLOCK_NOTE_BLOCK_PLING
  • BLOCK_CHEST_OPEN
  • BLOCK_CHEST_CLOSE

broadcast-sound

Jouer un son a tous les joueurs en ligne.

- type: broadcast-sound
  sound: ENTITY_ENDER_DRAGON_DEATH
  pitch: 1.0
  volume: 1.0

Actions de commande

player-command

Executer une commande en tant que joueur.

- type: player-command
  commands:
    - "spawn"
    - "kit starter"

player-command-as-op

Executer une commande en tant que joueur avec les permissions OP.

- type: player-command-as-op
  commands:
    - "gamemode creative"

Utilisez avec precaution ! Cela donne au joueur un acces temporaire de niveau OP.


console-command

Executer une commande depuis la console.

- type: console-command
  commands:
    - "give %player% diamond 64"
    - "eco give %player% 1000"

Options :

OptionTypeRequisDescription
commandsListeOuiLes commandes a executer en tant que console
stop-on-failureBooleenNonInterrompre les commandes suivantes des qu'une commande signale un echec. Par defaut false. Alias : stop_on_failure.

Interrompre une chaine qui a echoue

Par defaut, toutes les commandes de la liste sont executees, quoi qu'aient fait les precedentes. Avec stop-on-failure, la premiere commande qui signale un echec interrompt celles qui la suivent : une chaine du type « retirer l'argent » puis « donner le grade » ne peut donc plus donner le grade si le paiement a echoue.

- type: console-command
  stop-on-failure: true
  commands:
    - "eco take %player% 1000"
    - "lp user %player% parent add vip"

Pourquoi c'est desactive par defaut

Bukkit renvoie un echec aussi bien pour une commande qui n'existe pas que pour une commande dont l'executeur a renvoye false, ce que beaucoup de plugins font simplement pour afficher leur aide. Activer cette option sans precaution peut donc interrompre une chaine qui fonctionnait. Testez chaque chaine avant de l'activer.


player-chat

Forcer le joueur a envoyer un message dans le chat.

- type: player-chat
  messages:
    - "Bonjour tout le monde !"

random-player-command

zMenu+

Cette action necessite zMenu+.

Executer une selection aleatoire de commandes en tant que joueur a partir d'une liste. Les commandes sont selectionnees sans remise (pas de doublons dans une seule execution).

- type: random_player_command
  commands:
    - "say J'ai eu l'option 1 !"
    - "say J'ai eu l'option 2 !"
    - "say J'ai eu l'option 3 !"
    - "say J'ai eu l'option 4 !"
  amount: 1               # Nombre de commandes a executer aleatoirement (defaut : 1)
  command-in-chat: false   # Optionnel : executer via le chat au lieu d'un dispatch (defaut : false)

Options :

OptionTypeDefautDescription
commandsListeRequisListe des commandes parmi lesquelles choisir aleatoirement
amountEntier1Nombre de commandes aleatoires a executer
command-in-chatBooleenfalseSi true, envoie via player.chat() ; si false, dispatch en tant que commande

Alias : random_player_command, random_player_commands, random-player-command, random-player-commands


random-console-command

zMenu+

Cette action necessite zMenu+.

Executer une selection aleatoire de commandes console a partir d'une liste. Les commandes sont selectionnees sans remise (pas de doublons dans une seule execution). Supporte le placeholder %player%.

- type: random_console_command
  commands:
    - "give %player% diamond 1"
    - "give %player% emerald 1"
    - "give %player% gold_ingot 1"
    - "give %player% iron_ingot 1"
  amount: 2    # Executer 2 commandes aleatoires de la liste

Options :

OptionTypeDefautDescription
commandsListeRequisListe des commandes console parmi lesquelles choisir aleatoirement
amountEntier1Nombre de commandes aleatoires a executer

Alias : random_console_command, random_console_commands, random-console-command, random-console-commands, random-command, random-commands

Actions d'inventaire

inventory

Ouvrir un autre inventaire.

- type: inventory
  inventory: "shop"
  page: 1          # Optionnel : page specifique
  arguments:       # Optionnel : passer des arguments
    - "arg1"

close

Fermer l'inventaire actuel.

- type: close

back

Retourner a l'inventaire precedent.

- type: back

refresh

Rafraichir le bouton actuel.

- type: refresh

refresh-inventory

Rafraichir l'inventaire entier (redessiner tous les boutons).

- type: refresh-inventory

Actions joueur

teleport

Teleporter le joueur a des coordonnees.

- type: teleport
  world: "world"
  x: 0
  y: 100
  z: 0
  yaw: 0       # Optionnel
  pitch: 0     # Optionnel

connect

Connecter le joueur a un autre serveur (BungeeCord/Velocity).

- type: connect
  server: "lobby"

Actions de donnees

data

Modifier les valeurs de donnees joueur.

- type: data
  action: SET       # SET, ADD, SUBTRACT, MULTIPLY, DIVIDE, REMOVE
  key: "coins"
  value: "100"
  math: true        # Optionnel : activer les expressions mathematiques

Actions :

ActionDescriptionExemple
SETDefinir a une valeur specifiquevalue: "100"
ADDAjouter a la valeur actuellevalue: "50"
SUBTRACTSoustraire de la valeur actuellevalue: "25"
MULTIPLYMultiplier la valeur actuellevalue: "2"
DIVIDEDiviser la valeur actuellevalue: "2"
REMOVESupprimer entierement la cle-

Expressions mathematiques :

- type: data
  action: ADD
  key: "total"
  value: "%zmenu_player_value_base%*1.5"
  math: true

Actions d'economie

currency-deposit

Ajouter de l'argent au solde du joueur.

- type: currency-deposit
  amount: 100
  reason: "Recompense"    # Optionnel

currency-withdraw

Retirer de l'argent du solde du joueur.

- type: currency-withdraw
  amount: 50
  reason: "Achat"  # Optionnel

Action de livre

book

Ouvrir un livre ecrit pour le joueur.

- type: book
  author: "Serveur"
  title: "&6Livre de bienvenue"
  pages:
    - |
      &6Bienvenue !

      &7Ceci est la page 1
      de notre livre de bienvenue.
    - |
      &6Page 2

      &7Plus de contenu ici.

Action de dialogue

dialog

Ouvrir un dialogue (Paper 1.20.5+ avec PacketEvents).

- type: dialog
  dialog: "confirmation"

Actions Discord

discord

Envoyer un message a un webhook Discord.

- type: discord
  webhook: "https://discord.com/api/webhooks/..."
  content: "%player% a fait un achat !"
  username: "Bot Boutique"          # Optionnel
  avatar_url: "https://..."     # Optionnel

discord-component

Envoyer un message Discord avec boutons/composants.

- type: discord-component
  webhook: "https://discord.com/api/webhooks/..."
  embeds:
    - title: "Nouvel achat"
      description: "%player% a achete un item"
      color: "#00FF00"

Actions d'integration

luckperm-set

Modifier les permissions/groupes LuckPerms.

- type: luckperm-set
  group: "vip"
  duration: 2592000  # Secondes (30 jours)

shopkeeper

Interagir avec le plugin Shopkeepers.

- type: shopkeeper
  name: "nom_boutique"

Actions d'item

Ces actions donnent ou retirent des items directement dans le menu ou dans l'inventaire du joueur. Parfaites pour les boutiques, les kits ou les systemes de recompenses.

set_item

Place un item dans un ou plusieurs slots, dans le menu ou dans l'inventaire du joueur.

- type: set_item
  slot: 13              # ou slots: [13, 14, 15]
  in-player-inventory: false  # false = menu (defaut), true = inventaire du joueur
  dupe-protection: true       # defaut : true
  item:
    material: DIAMOND
    name: "&bRecompense"

Options :

OptionTypeDefautDescription
slotEntier-Le slot a remplir (utilisez slots pour plusieurs slots)
slotsListe-La liste des slots a remplir
in-player-inventoryBooleenfalsePlace l'item dans l'inventaire du joueur au lieu du menu
dupe-protectionBooleentrueProtege l'item place contre la duplication
itemItem-L'item a placer (peut aussi etre defini directement dans l'action)

Alias disponibles : set_item, set-item.


take_item

Retire un certain nombre d'items correspondants de l'inventaire du joueur.

- type: take_item
  amount: 1
  verification: SIMILAR  # SIMILAR (defaut) ou MODELID
  use-cache: false       # defaut : false
  item:
    material: DIAMOND

Options :

OptionTypeDefautDescription
amountEntier1Nombre d'items a retirer au joueur
verificationStringSIMILARMethode de comparaison : SIMILAR ou MODELID (custom model data)
use-cacheBooleenfalseUtilise l'item en cache lors de la construction de l'item cible
itemItem-L'item a comparer et a retirer (peut aussi etre defini directement)

Alias disponibles : take_item, take-item.


refresh_slot

Rafraichit uniquement le ou les slots indiques, sans redessiner tout l'inventaire.

- type: refresh_slot
  slots: [13, 14, 15]
  in-player-inventory: false  # defaut : false

Options :

OptionTypeDefautDescription
slotsListe-La liste des slots a rafraichir
in-player-inventoryBooleenfalseRafraichit les slots de l'inventaire du joueur au lieu du menu

Alias disponibles : refresh_slot, refresh-slot.

Exemples complets

Achat avec retour

items:
  acheter-item:
    slot: 13
    item:
      material: DIAMOND_SWORD
      name: "&6&lEpee en diamant"
      lore:
        - "&7Prix : &a500$"
    click-requirement:
      requirements:
        - type: placeholder
          value: "%vault_eco_balance%"
          action: SUPERIOR_OR_EQUAL
          number: 500
          deny:
            - type: message
              messages:
                - "&cVous avez besoin de 500$ !"
            - type: sound
              sound: ENTITY_VILLAGER_NO
      success:
        - type: currency-withdraw
          amount: 500
        - type: console-command
          commands:
            - "give %player% diamond_sword 1"
        - type: message
          messages:
            - "&aAchat reussi !"
        - type: sound
          sound: ENTITY_PLAYER_LEVELUP
        - type: close

Parametre a bascule avec donnees

items:
  bascule:
    slot: 22
    type: SWITCH
    placeholder: "%zmenu_player_value_setting%"
    buttons:
      "on":
        item:
          material: LIME_DYE
          name: "&a&lParametre : ON"
        actions:
          - type: data
            action: SET
            key: "setting"
            value: "off"
          - type: message
            messages:
              - "&7Parametre desactive"
          - type: sound
            sound: UI_BUTTON_CLICK
          - type: refresh
      "off":
        item:
          material: GRAY_DYE
          name: "&7&lParametre : OFF"
        actions:
          - type: data
            action: SET
            key: "setting"
            value: "on"
          - type: message
            messages:
              - "&7Parametre active"
          - type: sound
            sound: UI_BUTTON_CLICK
          - type: refresh

Bouton multi-actions

items:
  recompense:
    slot: 13
    item:
      material: CHEST
      name: "&e&lRecompense quotidienne"
    actions:
      - type: console-command
        commands:
          - "give %player% diamond 5"
      - type: currency-deposit
        amount: 1000
      - type: data
        action: SET
        key: "last_reward"
        value: "%zmenu_time_unix_timestamp%"
      - type: title
        title: "&6&lRecompense reclamee !"
        subtitle: "&75 Diamants + 1000$"
      - type: sound
        sound: ENTITY_PLAYER_LEVELUP
      - type: broadcast
        messages:
          - "&6%player% &7a reclame sa recompense quotidienne !"
      - type: close

Ordre des actions

Les actions s'executent dans l'ordre ou elles sont listees. Si vous devez fermer l'inventaire apres une teleportation, mettez close avant teleport :

actions:
  - type: close
  - type: teleport
    world: "world"
    x: 0
    y: 100
    z: 0

Utiliser les actions dans les exigences

Les actions peuvent aussi etre utilisees dans les blocs deny et success des exigences :

click-requirement:
  requirements:
    - type: permission
      permission: "server.vip"
      deny:
        - type: message
          messages:
            - "&cVous avez besoin du VIP !"
  success:
    - type: message
      messages:
        - "&aAcces accorde !"

Tableau de reference rapide

Options communes (toutes les actions)

OptionDescription
delayDelai en ticks avant l'execution
chancePourcentage de chance d'execution
deny-chance-actionsActions alternatives si la chance echoue

Types d'actions

ActionDescription
messageEnvoyer un message au joueur
broadcastEnvoyer un message a tous, resolu par destinataire et filtrable
broadcast_messageEnvoyer un message a tous, resolu une fois pour le joueur qui a clique
action-barAfficher la barre d'action
titleAfficher titre/sous-titre
broadcast_titleAfficher titre/sous-titre a tous les joueurs
toastAfficher un toast de succes
soundJouer un son
player-commandExecuter une commande en tant que joueur
console-commandExecuter une commande en tant que console
random-player-commandExecuter des commandes aleatoires en tant que joueur (zMenu+)
random-console-commandExecuter des commandes console aleatoires (zMenu+)
inventoryOuvrir un inventaire
closeFermer l'inventaire
backRevenir en arriere
refreshRafraichir le bouton
teleportTeleporter le joueur
connectChanger de serveur
dataModifier les donnees joueur
currency-depositAjouter de l'argent
currency-withdrawRetirer de l'argent
set_itemPlacer un item dans des slots du menu/joueur
take_itemRetirer des items correspondants au joueur
refresh_slotRafraichir uniquement certains slots

Action Bedrock

bedrock

Ouvrir un formulaire Bedrock natif pour les joueurs connectes via Geyser/Floodgate.

Prerequis

Les formulaires Bedrock necessitent Geyser ou Floodgate installe sur votre serveur.

- type: bedrock
  bedrock: "simple-form"

Avec des arguments :

- type: bedrock
  bedrock: "feedback-form"
  arguments:
    - "arg1"
    - "arg2"

Depuis un plugin externe :

- type: bedrock
  bedrock: "custom-form"
  plugin: "MonPlugin"

Options :

OptionTypeDescription
bedrockStringNom du fichier de formulaire Bedrock (sans .yml)
pluginStringNom du plugin si utilisation d'un formulaire externe
argumentsListeArguments a passer au formulaire

Voir Formulaires Bedrock pour la documentation complete de configuration des formulaires Bedrock.

Prochaines etapes

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.