Files
betterMcGuis/docs/02_GUI_BUILDER_DSL.md

2.7 KiB

🏗️ Fluent GUI Builder DSL - betterMcGuis

La création de menus repose sur un pattern Builder chainable, fluide et modulaire.


📑 Sommaire


1. Configuration des Dimensions et Types d'Inventaires

Vous pouvez configurer des coffres standards de 1 à 6 lignes, ou des types d'inventaires Bukkit spécifiques :

// Coffre 3 lignes (27 slots)
BetterMcGuis.builder("Titre", 3);

// Types spécifiques via GuiType
BetterMcGuis.builder()
    .title("<yellow>Distributeur</yellow>")
    .type(GuiType.DISPENSER); // DISPENSER, DROPPER, HOPPER, ANVIL, WORKBENCH, BREWING

2. Placement des Items

Vous pouvez positionner des items selon trois méthodes d'adressage :

var builder = BetterMcGuis.builder("Exemple", 4);

// Par slot absolu (0-indexé, 0 à 35)
builder.item(13, monItem);

// Par coordonnées ligne/colonne (0-indexé, ligne 1, col 4)
builder.item(1, 4, monItem);

// Par SlotPos
builder.item(SlotPos.of(1, 4), monItem);

3. Remplissage et Bordures

Des méthodes utilitaires permettent de remplir instantanément l'inventaire ou ses contours :

// Remplit toutes les bordures extérieures avec du vitrage teinté
builder.fillBorder(Material.GRAY_STAINED_GLASS_PANE);

// Remplit une plage continue de slots
builder.fillRange(SlotRange.of(10, 16), monItem);

// Remplit tout l'inventaire
builder.fill(monItem);

4. Propriétés Dynamiques

Vous pouvez attacher des données arbitraires à l'instance de GUI pour les partager entre callbacks :

Gui gui = BetterMcGuis.builder("Profil", 3)
    .property("targetPlayerUuid", target.getUniqueId())
    .property("openedAt", System.currentTimeMillis())
    .build();

// Récupération typée dans un callback
UUID uuid = gui.getProperty("targetPlayerUuid", UUID.class);

5. Contrôle du Cycle de Vie et Ouvertures

  • gui.open(Player) : Ouvre l'inventaire pour le joueur.
  • gui.close(Player) : Ferme l'inventaire.
  • gui.refresh(Player) : Met à jour visuellement les items sans réouverture.
  • gui.refreshAll() : Rafraîchit l'affichage pour tous les spectateurs actifs.
  • gui.setTitle("<green>Nouveau Titre</green>") : Modifie le titre du menu.

📖 Étape suivante : Découvrez la création d'items avec 03_ITEM_BUILDER_AND_ITEMS.md.