Files
betterMcGuis/docs/04_PATTERNS_AND_MASKS.md

83 lines
2.5 KiB
Markdown

# 🎨 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`) ?](#1-quest-ce-quun-motif-ascii-guipattern-)
- [2. Déclaration et Utilisation](#2-déclaration-et-utilisation)
- [3. Masques de Sélection de Slots (`GuiMask`)](#3-masques-de-sélection-de-slots-guimask)
---
## 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
```java
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 :
```java
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 :
```java
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](05_PAGINATED_AND_ADVANCED_GUIS.md).