Écrire des menus
Premier menu #
Chaque fichier .yml placé dans plugins/CrossMenu/menus/ est un menu. Le chemin sans .yml devient son identifiant.
title: "&8Shop"
rows: 3
open-commands: [shop]
items:
diamonds:
slot: 13
material: DIAMOND
name: "&bDiamonds"
lore:
- "&7Click to buy"
left-actions:
- "[console] give {player} diamond 1"
- "[message] &aPurchased."Utilisez type: confirm ou type: input pour les menus de confirmation et de saisie de texte. Les joueurs Bedrock reçoivent des formulaires natifs lorsque Geyser ou Floodgate est disponible. Les dialogues Java sont utilisés lorsque le serveur les prend en charge ; sinon CrossMenu ouvre la version en coffre.
Ouvrir un menu sans commande #
Outre open-commands, un menu peut s'ouvrir lorsqu'un joueur se connecte ou clique avec un certain objet :
open-triggers:
join: true # open shortly after joining
join-delay-ticks: 40 # default 20, allowed 1-1200
item:
material: COMPASS # the item in the main hand
name: "&aServer menu" # optional; colour codes are ignored when comparing
click: right # right (default), left or anyL'open-permission, l'open-requirement et la limite de fréquence d'ouverture du menu s'appliquent comme d'habitude. Un clic qui correspond est annulé, l'objet ne fait donc rien d'autre. Un seul menu peut revendiquer un déclencheur : si deux menus revendiquent la même connexion ou le même objet et le même clic, celui dont l'identifiant vient en premier l'emporte et la console l'indique. Pour un PNJ Citizens, donnez au PNJ une commande de joueur crossmenu open <menu>.
Composants #
Placez les définitions partagées dans n'importe quel fichier .yml sous plugins/CrossMenu/components/. Chaque clé de premier niveau est un composant.
# components/common.yml
close-button:
material: BARRIER
name: "&cClose"
actions: ["[close]"]
dark-pane:
material: BLACK_STAINED_GLASS_PANE
name: " "Utilisez un composant dans un menu et ne remplacez que ce qui change :
items:
close:
component: close-button
slot: 22
back:
extends: [close-button, dark-pane]
slot: 18
name: "&eBack"Les composants fusionnent de gauche à droite. Les clés écrites dans le menu l'emportent toujours. Les listes et les valeurs scalaires sont remplacées en bloc. Une clé locale vide supprime la valeur héritée. Les noms inconnus, les boucles et les conflits de type sont signalés avec leur fichier source et leur ligne.
Mises en page matrix #
Une matrix rend les agencements d'inventaire lisibles. Chaque ligne doit contenir exactement neuf caractères. . et les espaces sont des cellules vides.
rows: 3
matrix:
- "OOOOOOOOO"
- "O..S.C..O"
- "OOOOOOOOO"
items:
shop:
symbol: S
material: EMERALD
name: "&aShop"
close:
symbol: C
component: close-button
fill-item:
material: GRAY_STAINED_GLASS_PANE
name: " "fill-item couvre les cellules qu'aucun objet visible n'occupe et s'affiche toujours derrière les objets normaux. Les numéros d'emplacement et les symboles peuvent être utilisés dans le même menu.
Actions et conditions #
Les actions courantes comprennent les commandes de joueur et de console, les messages, les annonces, les sons, les titres, la navigation entre menus, la fermeture, l'actualisation, la connexion, les modifications d'économie et d'objets.
left-actions:
- "[takemoney] 250"
- "[console] give {player} diamond 1"
- "[sound] entity.player.levelup"
left-click-requirement:
requirements:
funds:
type: has money
amount: 250
deny-actions:
- "[message] &cYou need $250."Les conditions couvrent les permissions, l'argent, l'expérience, les objets, les comparaisons, la détection Java/Bedrock, le monde, le mode de jeu, la date/l'heure et les groupes logiques. Les alias de DeluxeMenus tels que perm, hasitem, equals, greater than, not equal to et != sont acceptés.
[player] exécute la commande exactement telle qu'elle est écrite. Si aucun plugin n'enregistre cette commande, rien ne se passe et le joueur ne voit aucun message (DeluxeMenus affiche ici le « Unknown command » du serveur). Tapez vous-même une nouvelle commande une fois pour vérifier qu'elle existe.
Consultez les menus d'exemple inclus pour les types de clic, la pagination, les animations, les calculs, les listes générées, les variantes de langue, les délais d'attente et les limites d'utilisation.