Vertex Studio

gui/*.yml — structure commune à tous les menus

4 min de lecture · Mis à jour le 24 septembre 2026

Modifier cette page

9. gui/*.yml — structure commune à tous les menus

Tout menu (gui/main.yml, gui/admin.yml, gui/jobs/miner/main.yml, un menu custom...) partage exactement la même structure. Cette section documente toutes les clés possibles ; les sections 11 et 12 montrent les fichiers réels livrés.

9.1 Squelette

yaml
title: "<gradient:#9827F5:#F179B5>Mon menu</gradient>"
rows: 6
  • title : accepte MiniMessage et les placeholders du contexte.
  • rows : de 1 à 6 (9 à 54 emplacements). C'est la seule façon de contrôler la taille de l'inventaire — pas de valeur par défaut cachée, tu dois toujours la préciser.

9.2 Conditions et actions d'ouverture

python
open-conditions:
  - "permission advancedjobs.admin"
open-actions:
  - "[sound] BLOCK_CHEST_OPEN"

open-conditions : si une seule échoue, le menu ne s'ouvre pas (message gui.no-access). open-actions : exécutées à chaque ouverture réussie, avant que le menu ne soit affiché.

9.3 Contenu dynamique (content)

css
content: JOBS

Remplit automatiquement les slots de pagination avec une liste générée par le plugin. Valeurs possibles :

content: Fournit Placeholders spécifiques
JOBS tous les jobs accessibles au joueur %job%, %job_display%, %description%, %joined%, %level%, %max_level%, %progress%
ACTIONS toutes les actions du job courant %action_type%, %target%, %target_name%, %xp%, %money%, %points%, %coins%
LEVELS tous les niveaux du job courant %level%, %required_xp%, %status% (REACHED/LOCKED), %rewards%
REWARD_TRAIN tous les paliers du Reward Train du job courant %level%, %status% (LOCKED/AVAILABLE/CLAIMED), %rewards%
TOP le classement du job courant %position%, %name%, %level%, %total_xp%, %points%, %coins%, %money%
STATISTICS les statistiques du job courant pour le joueur %statistic%, %statistic_raw%, %amount%
BOOSTERS tous les boosters définis dans boosters/*.yml %booster%, %booster_display%, %xp_multiplier%, %money_multiplier%, %points_multiplier%, %duration%, %jobs%
yaml
content-item:
  provider: VANILLA
  material: STONE
  name: "%job_display%"
  lore: ["..."]

Modèle appliqué à chaque entrée de la liste. Les placeholders spécifiques du tableau ci-dessus sont disponibles ici en plus de tous les placeholders globaux (section 15).

yaml
content-item-states:
  locked:
    material: MINECART
  available:
    material: CHEST_MINECART
    glow: true
  claimed:
    material: LIME_WOOL

content-item-state-placeholder: status   # optionnel, defaut "status"

Icône différente selon la valeur d'un placeholder — pas juste une apparence unique. Chaque clé est comparée (en majuscules) à la valeur courante du placeholder choisi. C'est ce qui fait qu'un wagon du Reward Train passe de minecart vide → coffre → laine verte automatiquement (voir l'exemple complet en section 12). Fonctionne pour n'importe quel content:, pas seulement REWARD_TRAIN — tu pourrais par exemple donner une icône différente à un job selon %joined% (true/false).

yaml
pagination:
  enabled: true
  mode: AUTO
  item-slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25]

update-interval: 200
  • item-slots : liste des emplacements où les entrées de content sont placées. Le nombre d'entrées par page = longueur de cette liste.
  • mode: AUTO : toutes les entrées sont réparties automatiquement sur plusieurs pages virtuelles (un seul fichier, pagination gérée par le plugin). [next-page]/[previous-page] changent juste le numéro de page affiché dans ce même fichier.
  • mode: MANUAL : réservé aux menus sans content: — chaque page est un fichier distinct nommé <dossier>/page-<N>.yml, entièrement rédigé à la main. [next-page]/[previous-page] ouvrent alors réellement le fichier suivant. Voir l'exemple complet en section 11.4.
  • update-interval (optionnel) : si présent et > 0, le menu se redessine tout seul toutes les N ticks tant qu'il reste ouvert — utile pour un classement qui se met à jour sans action du joueur. Fonctionne uniquement sur un menu avec content: défini.

9.4 Items statiques

yaml
items:
  mon-item:
    slot: 10          # OU slots: [10, 11, 12] pour repeter le meme item
    priority: 0         # optionnel, defaut 0 — voir note ci-dessous
    provider: VANILLA
    material: DIAMOND
    name: "..."
    lore: ["..."]
    animation: reward-train         # optionnel
    states: { ... }                  # optionnel, meme format que content-item-states
    state-placeholder: status        # optionnel, defaut "status"
    view-conditions: ["..."]
    click-conditions: ["..."]
    actions: ["..."]                  # n'importe quel type de clic
    left-actions: ["..."]
    right-actions: ["..."]
    shift-left-actions: ["..."]
    shift-right-actions: ["..."]
    middle-actions: ["..."]
    drop-actions: ["..."]
    deny-actions: ["..."]              # executees si click-conditions echoue
  • view-conditions : si une seule échoue, l'item n'apparaît pas du tout dans le menu.
  • click-conditions : si une seule échoue au moment du clic, deny-actions s'exécute à la place des actions normales (utile pour un son d'erreur).
  • priority : détermine l'ordre de dessin quand deux items partagent le même slot (ex. un filler en fond et un bouton par-dessus). Les items de priorité plus élevée sont dessinés après et recouvrent ceux de priorité plus basse. Convention utilisée partout dans les fichiers livrés : le fond (filler) a priority: -100, les vrais boutons restent à 0 (valeur par défaut) et s'affichent donc par-dessus.
  • content-item (comme nom de clé dans items:) : cas spécial, sert uniquement à déclarer les actions/animation/states du modèle défini par content-item: au niveau racine (pas besoin de slot, il est fourni par la pagination).