Files
betterMcGuis/docs/05_PAGINATED_AND_ADVANCED_GUIS.md
T

3.2 KiB

📚 Menus Paginés, Onglets & Animations - betterMcGuis

Ce guide explore les types d'inventaires avancés : PaginatedGui, TabbedGui et AnimatedGui.


📑 Sommaire


1. Menus Paginés (PaginatedGui)

Le PaginatedGui prend en charge le calcul automatique des pages, la disposition des boutons de navigation et les indicateurs dynamiques.

var shop = BetterMcGuis.paginated("Boutique", 5)
    .fillBorder(Material.BLACK_STAINED_GLASS_PANE)
    // Personnalisation des boutons de navigation
    .previousButton(38, ItemBuilder.of(Material.ARROW).name("<yellow>◀ Page Précédente</yellow>").asGuiItem())
    .nextButton(42, ItemBuilder.of(Material.ARROW).name("<yellow>Page Suivante ▶</yellow>").asGuiItem())
    // Indicateur de page personnalisée
    .pageIndicator(40, (page, total) -> ItemBuilder.of(Material.PAPER)
        .name("<gold><bold>Page " + page + " / " + total + "</bold></gold>")
        .asGuiItem()
    );

// Ajout de 100 items au catalogue
for (int i = 1; i <= 100; i++) {
    shop.addPageItem(ItemBuilder.of(Material.GOLD_INGOT)
        .name("<yellow>Lingot #" + i + "</yellow>")
        .asGuiItem(ctx -> ctx.replySuccess("Achat réussi !"))
    );
}

shop.build().open(player);

2. Menus à Onglets (TabbedGui)

Permet de basculer instantanément entre plusieurs catégories d'items sans fermer ni rouvrir l'inventaire :

BetterMcGuis.tabbed("Menu Multi-Catégories", 4)
    // Onglet 1 : Guerrier
    .tab("warrior", 11, ItemBuilder.of(Material.IRON_SWORD).name("<red>Guerrier</red>").asGuiItem(), tabGui -> {
        tabGui.setTabItem("warrior", 20, ItemBuilder.of(Material.DIAMOND_SWORD).name("<red>Épée Lourde</red>").asGuiItem());
        tabGui.setTabItem("warrior", 24, ItemBuilder.of(Material.SHIELD).name("<gray>Bouclier</gray>").asGuiItem());
    })
    
    // Onglet 2 : Archer
    .tab("archer", 15, ItemBuilder.of(Material.BOW).name("<green>Archer</green>").asGuiItem(), tabGui -> {
        tabGui.setTabItem("archer", 22, ItemBuilder.of(Material.CROSSBOW).name("<green>Arbalète Précise</green>").asGuiItem());
    })
    
    .build()
    .open(player);

3. Menus Animés (AnimatedGui)

Permet d'animer des frames d'inventaires cadencées par tick ou secondes :

AnimatedGui animated = BetterMcGuis.animated()
    .title("<gold>Ouverture de Coffre Mystère...</gold>")
    .rows(3)
    // Frame 1
    .frame(f -> f.item(13, ItemBuilder.of(Material.CHEST).name("<yellow>Chargement.</yellow>").asGuiItem()))
    // Frame 2
    .frame(f -> f.item(13, ItemBuilder.of(Material.ENDER_CHEST).name("<gold>Chargement..</gold>").asGuiItem()))
    // Frame 3 : Révélation du lot !
    .frame(f -> f.item(13, ItemBuilder.of(Material.NETHER_STAR).name("<gradient:#00f2fe:#4facfe>Bravo ! Trésor Obtenu !</gradient>").asGuiItem()))
    .loop(false)
    .build();

animated.open(player);
animated.startAnimation(monPlugin, Duration.ofMillis(600));

📖 Étape suivante : Découvrez le cycle de vie et les événements dans 06_LIFECYCLE_AND_EVENTS.md.