Files
betterMcGuis/docs/04_PATTERNS_AND_MASKS.md
T

2.5 KiB

🎨 Motifs & Masques ASCII - betterMcGuis

La création de mises en page complexes est grandement facilitée par le système de Motifs (Patterns) et Masques (Masks) textuels.


📑 Sommaire


1. Qu'est-ce qu'un Motif ASCII (GuiPattern) ?

Un GuiPattern vous permet de dessiner littéralement la disposition visuelle de votre inventaire sous forme de lignes de texte, où chaque caractère représente un type d'item.


2. Déclaration et Utilisation

GuiPattern pattern = BetterMcGuis.pattern(
        "#########",
        "# S K Q #",
        "#       #",
        "#   C   #",
        "#########"
    )
    .bindFiller('#', Material.BLACK_STAINED_GLASS_PANE)
    .bind('S', ItemBuilder.of(Material.EMERALD).name("<green>Boutique</green>").asGuiItem(this::ouvrirShop))
    .bind('K', ItemBuilder.of(Material.CHEST).name("<gold>Kits</gold>").asGuiItem(this::ouvrirKits))
    .bind('Q', ItemBuilder.of(Material.BOOK).name("<aqua>Quêtes</aqua>").asGuiItem(this::ouvrirQuetes))
    .bind('C', ItemBuilder.of(Material.BARRIER).name("<red>Fermer</red>").asGuiItem(GuiClickContext::close))
    .build();

// Application directe sur le GUI
BetterMcGuis.builder("Menu Principal", 5)
    .pattern(pattern)
    .build()
    .open(player);

Vous pouvez aussi définir le motif directement dans le builder de manière fluide :

BetterMcGuis.builder("Menu Compact", 3)
    .pattern(p -> p
        .lines(
            "111111111",
            "1  D  1",
            "111111111"
        )
        .bindFiller('1', Material.GRAY_STAINED_GLASS_PANE)
        .bind('D', ItemBuilder.of(Material.DIAMOND).name("<aqua>Trésor</aqua>").asGuiItem())
    )
    .build();

3. Masques de Sélection de Slots (GuiMask)

Un GuiMask permet de sélectionner des ensembles de slots spécifiques via une matrice binaire (0 et 1) pour définir par exemple des zones d'items paginés ou des slots éditables :

GuiMask masqueZone = new GuiMask(
    "000000000",
    "011111110",
    "011111110",
    "000000000"
);

// Utilisation pour définir les slots d'un menu paginé
BetterMcGuis.paginated("Boutique", 4)
    .itemSlots(masqueZone)
    .build();

📖 Étape suivante : Découvrez les menus avancés dans 05_PAGINATED_AND_ADVANCED_GUIS.md.