Placeholders
Tous les placeholders disponibles dans zMenu
zMenu fournit des placeholders integres et supporte PlaceholderAPI pour le contenu dynamique dans vos inventaires.
Placeholders integres
Ces placeholders sont disponibles sans plugins supplementaires :
Placeholders joueur
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%player% | Nom du joueur | Notch |
Placeholders de pagination
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%page% | Numero de page actuel | 1 |
%maxPage% | Numero de page maximum | 5 |
%max-page% | Numero de page maximum (alias) | 5 |
%zmenu_player_page% | Page actuelle (format PAPI) | 1 |
%zmenu_player_next_page% | Numero de page suivante | 2 |
%zmenu_player_previous_page% | Numero de page precedente | 0 |
%zmenu_player_max_page% | Page maximum (format PAPI) | 5 |
Placeholders d'historique d'inventaire
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%zmenu_player_previous_inventories% | Nombre d'inventaires precedents dans l'historique | 3 |
Placeholders mathematiques
Effectuez des calculs directement dans votre configuration :
| Placeholder | Description | Exemple |
|---|---|---|
%zmenu_math_<expression>% | Calculer une expression mathematique | %zmenu_math_5+5% → 10 |
%zmenu_formatted_math_<expression>% | Resultat mathematique formate | %zmenu_formatted_math_1000+500% → 1 500 |
Operations supportees :
- Addition :
+ - Soustraction :
- - Multiplication :
* - Division :
/ - Parentheses :
()
Exemples :
lore:
- "&7Resultat : %zmenu_math_10*5%" # Sortie : 50
- "&7Solde : %zmenu_formatted_math_{vault_eco_balance}*2%"Placeholders de donnees joueur
| Placeholder | Description |
|---|---|
%zmenu_player_value_<cle>% | Obtenir la valeur des donnees joueur |
Exemple :
lore:
- "&7Pieces : &6%zmenu_player_value_coins%"
- "&7Kills : &c%zmenu_player_value_kills%"Placeholders d'arguments de commande
| Placeholder | Description |
|---|---|
%zmenu_argument_<cle>% | Obtenir la valeur d'un argument de commande |
Ce placeholder recupere les arguments passes via les commandes personnalisees configurees dans zMenu.
Exemple :
Configuration de la commande :
# Dans commands/commands.yml
commands:
punish:
command: punish
arguments:
- player
inventory: example_punishUtilisation de l'argument dans votre inventaire :
items:
player-info:
item:
material: PLAYER_HEAD
playerHead: "%zmenu_argument_player%"
name: "&cPunir %zmenu_argument_player%"
lore:
- "&7Cliquez pour punir ce joueur"Quand un joueur execute /punish Notch, le placeholder %zmenu_argument_player% retournera Notch.
Placeholders de placeholders globaux
| Placeholder | Description |
|---|---|
%zmenu_global_placeholders_<cle>% | Obtenir la valeur d'un placeholder global |
Exemple :
# Dans global-placeholders.yml
server-name: "Mon Serveur"
# Dans l'inventaire
name: "&6%zmenu_global_placeholders_server-name%"Placeholders de temps
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%zmenu_time_unix_timestamp% | Timestamp Unix actuel (en secondes) | 1704067200 |
%zmenu_time_next_day_unix_timestamp% | Timestamp Unix de demain (en secondes) | 1704153600 |
%zmenu_time_today_start_unix_timestamp% | Timestamp du debut d'aujourd'hui (en secondes) | 1704067200 |
Placeholders d'inventaire joueur
Ces placeholders sont particulierement utiles lorsque l'inventaire du bas est masque avec clear-inventory: true, permettant de verifier l'espace disponible avant de donner des items (par exemple dans les menus de shop).
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%zmenu_player_empty_slots% | Nombre de slots libres dans l'inventaire du joueur | 12 |
%zmenu_player_item_count_<MATERIAL>% | Quantite totale d'un item specifique dans l'inventaire | 64 |
Exemples :
# Afficher les slots libres dans le lore
lore:
- "&7Slots libres : &a%zmenu_player_empty_slots%"
- "&7Diamants : &b%zmenu_player_item_count_DIAMOND%"
# Empecher l'achat quand l'inventaire est plein
click-requirement:
requirements:
- type: placeholder
value: "%zmenu_player_empty_slots%"
action: SUPERIOR_OR_EQUAL
number: 1
deny:
- type: message
messages:
- "&cVotre inventaire est plein !"Placeholders de statistiques
| Placeholder | Description | Exemple de sortie |
|---|---|---|
%zmenu_statistic_hours_played% | Heures jouees (arrondi) | 42 |
%zmenu_statistic_time_played% | Temps de jeu formate | 1j 18h 30m |
Integration PlaceholderAPI
zMenu supporte entierement PlaceholderAPI. Tout placeholder PAPI fonctionne dans :
- Titres d'inventaire
- Noms d'items
- Lore d'items
- Messages
- Exigences
- Actions
Expansions PlaceholderAPI populaires
Installez les expansions avec : /papi ecloud download <nom>
| Expansion | Placeholders | Exemple |
|---|---|---|
| Player | %player_name%, %player_health%, %player_level% | %player_name% → Notch |
| Vault | %vault_eco_balance%, %vault_eco_balance_formatted% | %vault_eco_balance% → 1500.00 |
| Statistic | %statistic_deaths%, %statistic_kills% | %statistic_deaths% → 42 |
| Server | %server_online%, %server_max_players% | %server_online% → 50 |
| LuckPerms | %luckperms_prefix%, %luckperms_primary_group_name% | %luckperms_prefix% → [Admin] |
Utilisation de PlaceholderAPI
items:
profile:
slot: 4
item:
material: PLAYER_HEAD
playerHead: "%player_name%"
name: "&6Profil de %player_name%"
lore:
- "&8&m─────────────────"
- ""
- "&7Sante : &c%player_health%&7/&c%player_max_health%"
- "&7Niveau : &a%player_level%"
- "&7Solde : &6$%vault_eco_balance_formatted%"
- ""
- "&7Kills : &a%statistic_player_kills%"
- "&7Morts : &c%statistic_deaths%"
- ""
- "&8&m─────────────────"Placeholders locaux
Definissez des placeholders specifiques a un inventaire :
# Dans votre fichier d'inventaire
local-placeholders:
prix: "100"
nom-item: "Epee speciale"
items:
shop-item:
item:
name: "&6%nom-item%"
lore:
- "&7Prix : &a$%prix%"Modificateurs de placeholders
Les placeholders propres a zMenu (arguments de commande, %page%, %player%, saisies des formulaires Bedrock, saisies des dialogues...) peuvent etre transformes directement dans le placeholder, en ajoutant un ou plusieurs modificateurs apres un point :
# /shop <category>
- "&7Categorie : &f%category.capitalize%" # weapons -> Weapons
- "&7Page &f%page.pad:2%" # 3 -> 03
- "&7Nom : &f%name.trim.max:16%" # les modificateurs peuvent etre enchaines
- "&7Quantite : &f%amount.default:1%" # 1 quand l'argument est vide
- "console-command: give %player% diamond %amount.int.safe%"| Modificateur | Exemple | Resultat |
|---|---|---|
upper / lower | %name.upper% | Majuscules / minuscules |
capitalize | %name.capitalize% | Premiere lettre en majuscule, le reste en minuscules |
trim | %name.trim% | Retire les espaces autour |
length | %name.length% | Nombre de caracteres |
empty | %name.empty% | true si vide |
isnumber | %amount.isnumber% | true si la valeur est un nombre |
safe | %name.safe% | Retire ;, &, § et les retours a la ligne (sur dans une commande) |
default:<valeur> | %amount.default:1% | <valeur> si vide |
max:<n> | %name.max:16% | Coupe a <n> caracteres |
pad:<n> | %page.pad:3% | Complete avec des zeros a gauche jusqu'a <n> caracteres |
int, round, floor, ceil | %price.round% | Nombre entier |
abs | %value.abs% | Valeur absolue |
negative, even | %value.even% | true / false |
0f, 1f, 2f, 3f | %price.2f% | Nombre avec 0 a 3 decimales |
comma | %price.comma% | Separateur de milliers (1,234,567) |
add_one, remove_one | %page.add_one% | Valeur + 1 / - 1 |
add:<n>, sub:<n> | %page.add:10% | Valeur + n / - n |
Un modificateur inconnu, un argument manquant ou un modificateur numerique applique a une valeur non numerique donne un resultat vide. Les anciens prefixes (%upper_cle%, %lower_cle%, %capitalize_cle%, %add_one_cle%, %remove_one_cle%) fonctionnent toujours.
Les modificateurs s'appliquent aux placeholders propres a zMenu, pas aux placeholders PlaceholderAPI. Pour PlaceholderAPI, utilisez les options de formatage de l'expansion.
Cache des placeholders
Pour de meilleures performances, vous pouvez activer le cache des placeholders dans config.yml :
# Activer le cache PlaceholderAPI
enable-cache-placeholder-api: true
# Duree du cache en ticks (20 ticks = 1 seconde)
cache-placeholder-api: 20Le cache signifie que les placeholders ne se mettront pas a jour instantanement. Activez-le uniquement si vous avez des problemes de performances et comprenez les implications.
Placeholders imbriques
Vous pouvez utiliser des placeholders a l'interieur d'autres placeholders :
# Utilisation des donnees joueur dans les maths
lore:
- "&7Double pieces : %zmenu_math_{zmenu_player_value_coins}*2%"Exigences avec placeholders
Utilisez des placeholders dans les exigences pour creer des conditions dynamiques :
click-requirement:
requirements:
- type: placeholder
value: "%vault_eco_balance%"
action: SUPERIOR_OR_EQUAL
number: 100
deny:
- type: message
messages:
- "&cVous avez besoin d'au moins 100$ !"Formatage des placeholders
Nombres
Pour les nombres formates, utilisez les variantes _formatted quand disponibles :
%vault_eco_balance_formatted%au lieu de%vault_eco_balance%%zmenu_formatted_math_<expr>%au lieu de%zmenu_math_<expr>%
Couleurs dans les placeholders
Certains placeholders incluent des codes couleur. Pour les conserver :
name: "%luckperms_prefix% %player_name%" # Garde les couleursDebugger les placeholders
Si les placeholders ne fonctionnent pas :
-
Verifiez que PlaceholderAPI est installe
/papi info -
Testez le placeholder
/papi parse me %nom_placeholder% -
Verifiez que l'expansion est installee
/papi list -
Installez les expansions manquantes
/papi ecloud download <expansion> /papi reload
Tableau de reference rapide
| Categorie | Placeholder | Description |
|---|---|---|
| Joueur | %player% | Nom du joueur |
| Page | %page% | Page actuelle |
| Page | %maxPage% | Page max |
| Math | %zmenu_math_<expr>% | Calculer expression |
| Donnees | %zmenu_player_value_<cle>% | Donnees joueur |
| Argument | %zmenu_argument_<cle>% | Argument de commande |
| Global | %zmenu_global_placeholders_<cle>% | Valeur globale |
| Temps | %zmenu_time_unix_timestamp% | Temps Unix |
| Inventaire | %zmenu_player_empty_slots% | Slots libres |
| Inventaire | %zmenu_player_item_count_<MAT>% | Quantite d'item |
| Stats | %zmenu_statistic_hours_played% | Heures jouees |
Prochaines etapes
- Apprenez les Placeholders globaux
- Configurez les Donnees joueur pour les valeurs personnalisees
- Creez des Exigences dynamiques