feat: initialisation complète de la bibliothèque betterMcGuis (Fluent DSL, ItemBuilder, PaginatedGui, TabbedGui, AnimatedGui, Patterns ASCII, Moteur d'événements, Sécurité anti-glitch et documentation)

This commit is contained in:
2026-08-23 18:10:49 +02:00
parent b88eaad155
commit 806d1789a1
63 changed files with 6233 additions and 2 deletions
@@ -0,0 +1,55 @@
package fr.luc.bettermcguis.pattern;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
/**
* Représente un masque de sélection de slots basé sur des lignes de caractères binaires (0 et 1 ou caractères au choix).
*/
public class GuiMask {
private final List<String> lines = new ArrayList<>();
private final char activeChar;
/**
* Crée un masque avec '1' comme caractère actif par défaut.
*/
public GuiMask(String... lines) {
this('1', lines);
}
/**
* Crée un masque en précisant le caractère actif.
*
* @param activeChar Le caractère représentant un slot sélectionné.
* @param lines Les lignes du masque.
*/
public GuiMask(char activeChar, String... lines) {
this.activeChar = activeChar;
if (lines != null) {
this.lines.addAll(Arrays.asList(lines));
}
}
/**
* Résout la liste des slots sélectionnés par ce masque pour des dimensions données.
*
* @param rows Le nombre de lignes.
* @param cols Le nombre de colonnes (ex: 9).
* @return La liste des slots actifs (0-indexés).
*/
public List<Integer> resolveSlots(int rows, int cols) {
List<Integer> slots = new ArrayList<>();
for (int r = 0; r < Math.min(lines.size(), rows); r++) {
String line = lines.get(r);
for (int c = 0; c < Math.min(line.length(), cols); c++) {
if (line.charAt(c) == activeChar) {
slots.add(r * cols + c);
}
}
}
return Collections.unmodifiableList(slots);
}
}