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_CLICKOptions 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 rafraichirchance
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 :
| Option | Type | Description |
|---|---|---|
delay | Entier | Delai en ticks avant l'execution (20 ticks = 1 seconde) |
chance | Entier | Pourcentage de chance (0-100) pour que l'action s'execute |
deny-chance-actions | Liste | Actions 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 MiniMessagemessages
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 : trueOptions :
| Option | Type | Requis | Description |
|---|---|---|---|
messages | Liste | Oui | Les lignes envoyees a tous les joueurs en ligne. Doit etre ecrit sous forme de liste YAML. |
minimessage | Booleen | Non | Interpreter 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 # Ticksbroadcast-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 # TicksOptions :
| Option | Type | Requis | Description |
|---|---|---|---|
title | Texte | Oui | La ligne de titre. Voir l'avertissement ci-dessous. |
subtitle | Texte | Oui | La ligne de sous-titre. Voir l'avertissement ci-dessous. |
start | Nombre | Non | Duree d'apparition, en ticks. Par defaut 0. |
duration | Nombre | Non | Duree d'affichage a l'ecran, en ticks. Par defaut 0. |
end | Nombre | Non | Duree 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 CHALLENGEActions 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 optionnelleSons courants :
UI_BUTTON_CLICKENTITY_EXPERIENCE_ORB_PICKUPENTITY_PLAYER_LEVELUPENTITY_VILLAGER_YESENTITY_VILLAGER_NOBLOCK_NOTE_BLOCK_PLINGBLOCK_CHEST_OPENBLOCK_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.0Actions 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 :
| Option | Type | Requis | Description |
|---|---|---|---|
commands | Liste | Oui | Les commandes a executer en tant que console |
stop-on-failure | Booleen | Non | Interrompre 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 :
| Option | Type | Defaut | Description |
|---|---|---|---|
commands | Liste | Requis | Liste des commandes parmi lesquelles choisir aleatoirement |
amount | Entier | 1 | Nombre de commandes aleatoires a executer |
command-in-chat | Booleen | false | Si 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 listeOptions :
| Option | Type | Defaut | Description |
|---|---|---|---|
commands | Liste | Requis | Liste des commandes console parmi lesquelles choisir aleatoirement |
amount | Entier | 1 | Nombre 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: closeback
Retourner a l'inventaire precedent.
- type: backrefresh
Rafraichir le bouton actuel.
- type: refreshrefresh-inventory
Rafraichir l'inventaire entier (redessiner tous les boutons).
- type: refresh-inventoryActions joueur
teleport
Teleporter le joueur a des coordonnees.
- type: teleport
world: "world"
x: 0
y: 100
z: 0
yaw: 0 # Optionnel
pitch: 0 # Optionnelconnect
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 mathematiquesActions :
| Action | Description | Exemple |
|---|---|---|
SET | Definir a une valeur specifique | value: "100" |
ADD | Ajouter a la valeur actuelle | value: "50" |
SUBTRACT | Soustraire de la valeur actuelle | value: "25" |
MULTIPLY | Multiplier la valeur actuelle | value: "2" |
DIVIDE | Diviser la valeur actuelle | value: "2" |
REMOVE | Supprimer entierement la cle | - |
Expressions mathematiques :
- type: data
action: ADD
key: "total"
value: "%zmenu_player_value_base%*1.5"
math: trueActions d'economie
currency-deposit
Ajouter de l'argent au solde du joueur.
- type: currency-deposit
amount: 100
reason: "Recompense" # Optionnelcurrency-withdraw
Retirer de l'argent du solde du joueur.
- type: currency-withdraw
amount: 50
reason: "Achat" # OptionnelAction 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://..." # Optionneldiscord-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 :
| Option | Type | Defaut | Description |
|---|---|---|---|
slot | Entier | - | Le slot a remplir (utilisez slots pour plusieurs slots) |
slots | Liste | - | La liste des slots a remplir |
in-player-inventory | Booleen | false | Place l'item dans l'inventaire du joueur au lieu du menu |
dupe-protection | Booleen | true | Protege l'item place contre la duplication |
item | Item | - | 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: DIAMONDOptions :
| Option | Type | Defaut | Description |
|---|---|---|---|
amount | Entier | 1 | Nombre d'items a retirer au joueur |
verification | String | SIMILAR | Methode de comparaison : SIMILAR ou MODELID (custom model data) |
use-cache | Booleen | false | Utilise l'item en cache lors de la construction de l'item cible |
item | Item | - | 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 : falseOptions :
| Option | Type | Defaut | Description |
|---|---|---|---|
slots | Liste | - | La liste des slots a rafraichir |
in-player-inventory | Booleen | false | Rafraichit 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: closeParametre 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: refreshBouton 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: closeOrdre 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: 0Utiliser 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)
| Option | Description |
|---|---|
delay | Delai en ticks avant l'execution |
chance | Pourcentage de chance d'execution |
deny-chance-actions | Actions alternatives si la chance echoue |
Types d'actions
| Action | Description |
|---|---|
message | Envoyer un message au joueur |
broadcast | Envoyer un message a tous, resolu par destinataire et filtrable |
broadcast_message | Envoyer un message a tous, resolu une fois pour le joueur qui a clique |
action-bar | Afficher la barre d'action |
title | Afficher titre/sous-titre |
broadcast_title | Afficher titre/sous-titre a tous les joueurs |
toast | Afficher un toast de succes |
sound | Jouer un son |
player-command | Executer une commande en tant que joueur |
console-command | Executer une commande en tant que console |
random-player-command | Executer des commandes aleatoires en tant que joueur (zMenu+) |
random-console-command | Executer des commandes console aleatoires (zMenu+) |
inventory | Ouvrir un inventaire |
close | Fermer l'inventaire |
back | Revenir en arriere |
refresh | Rafraichir le bouton |
teleport | Teleporter le joueur |
connect | Changer de serveur |
data | Modifier les donnees joueur |
currency-deposit | Ajouter de l'argent |
currency-withdraw | Retirer de l'argent |
set_item | Placer un item dans des slots du menu/joueur |
take_item | Retirer des items correspondants au joueur |
refresh_slot | Rafraichir 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 :
| Option | Type | Description |
|---|---|---|
bedrock | String | Nom du fichier de formulaire Bedrock (sans .yml) |
plugin | String | Nom du plugin si utilisation d'un formulaire externe |
arguments | Liste | Arguments a passer au formulaire |
Voir Formulaires Bedrock pour la documentation complete de configuration des formulaires Bedrock.
Prochaines etapes
- Apprenez les Donnees joueur pour stocker des valeurs
- Voir les Exigences pour les actions conditionnelles
- Creez des Patterns avec des actions par defaut