kirosnn
  • đź‘‹Accueil
  • dAPi
    • đź’ˇPrĂ©sentation
    • đź““YAML
    • đź““Scoreboard
    • đź““Placeholders
    • đź““Commandes | Sous-commandes
    • đź““Base64
    • đź““GUIS
Powered by GitBook
On this page
  • Gestion des GUIS
  • Introduction
  • CrĂ©er un GUI
  • MĂ©thodes disponibles

Was this helpful?

  1. dAPi

GUIS

Documentation pour l'API (GUIS).


Gestion des GUIS

Introduction

La création et l’utilisation de GUIs dans Minecraft sont essentielles pour offrir une interface intuitive aux joueurs ou pour permettre l’interaction avec des systèmes complexes de manière visuelle et organisée. Avec la modularité de dAPI, vous pouvez rapidement :

  • CrĂ©er des GUIS.

  • Action prĂ© créé pour simplifier vos crĂ©ations .

  • Pas besoin de listener.

  • A un but d'ĂŞtre le plus poussĂ©.


Créer un GUI

Étape 1 : Importer BaseGUI

Pour commencer, importez la classe BaseGUI dans votre projet :

import fr.kirosnn.dAPI.guis.BaseGUI;

Étape 2 : Créer un constructeur utilisant BaseGUI

public class AdvancedGUI extends BaseGUI {
    private final Player player;

    public AdvancedGUI(Player player) {
        super("Menu avancé", 3); // Crée un GUI s'appelant "Menu avancé" de 3 lignes
        this.player = player;
    }

Étape 2 : Créer le GUI

Pour créer le GUI, il vous faudra utiliser la méthode void initalize().

Étape 3 : Créer des items

Étape 4 : Ouvrir le GUI

    /** Exemple de commande ouvrant le AdvancedGUI */
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if (sender instanceof Player player && command.getName().equalsIgnoreCase("advancedgui")) {
            AdvancedGUI gui = new AdvancedGUI(player);
            gui.open(player);
            return true;
        }

Étape 5 : Exemple complet de GUI

package fr.kirosnn.dExample.gui;

import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemFlag;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.Arrays;
import java.util.List;
import java.util.Map;

/**
 * Exemple avancé d'une GUI utilisant toutes les fonctionnalités.
 */
public class AdvancedGUI extends BaseGUI {

    private final Player player;

    public AdvancedGUI(Player player) {
        super("Menu avancé", 3);
        this.player = player;
    }

    @Override
    public void initialize() {
        Map<Enchantment, Integer> enchants = Map.of(Enchantment.EFFICIENCY, 1);
        List<ItemFlag> flags = List.of(ItemFlag.HIDE_ENCHANTS);
        List<String> loreItem1 = List.of("§7Appuyer ici pour fermer le menu");
        List<String> loreItem6 = Arrays.asList("§7Salut", "§aFonctionnalité spéciale");

        // Item 1 : Fermer le menu
        ItemStack closeItem = createItem(Material.BARRIER, "§cFermer le menu");
        setItem(11, closeItem, closeAction(), null, null, loreItem1);

        // Item 2 : Exécuter une commande en fermant le GUI
        ItemStack commandItem = createItem(Material.DIAMOND_SWORD, "§6Exécuter /help");
        setItem(13, commandItem, commandAction("help"), null, null, null);

        // Item 3 : Ouvrir un site
        ItemStack websiteItem = createItem(Material.PAPER, "§bOuvrir le site");
        setItem(21, websiteItem, openWebsiteAction("https://example.com", "§aCliquez ici pour visiter : §b{url}"), null, null, null);

        // Item 4 : Ouvrir une autre GUI
        ItemStack anotherGUIItem = createItem(Material.CHEST, "§aOuvrir une autre GUI");
        setItem(23, anotherGUIItem, openGUIAction(new ExampleGUI(player), player), null, null, null);

        // Item 5 : Changer un item avec une action
        ItemStack toggleItem = createItem(Material.RED_WOOL, "§cDésactivé");
        ItemStack toggledItem = createItem(Material.GREEN_WOOL, "§aActivé");

        // Lore, enchantements et flags pour l'item initial
        List<String> initialLore = Arrays.asList("§7Cliquez pour activer");
        Map<Enchantment, Integer> initialEnchants = Map.of(Enchantment.EFFICIENCY, 1);
        List<ItemFlag> initialFlags = Arrays.asList(ItemFlag.HIDE_ENCHANTS);

        // Lore, enchantements et flags pour l'item alternatif
        List<String> alternateLore = Arrays.asList("§7Cliquez pour désactiver");
        Map<Enchantment, Integer> alternateEnchants = Map.of(Enchantment.SHARPNESS, 1);
        List<ItemFlag> alternateFlags = Arrays.asList(ItemFlag.HIDE_ATTRIBUTES);

        // Ajout de l'item avec basculement
        setItemWithToggleAction(
                15,
                toggleItem,
                toggledItem,
                event -> {
                    Player player = (Player) event.getWhoClicked();
                    player.sendMessage("§aVous avez basculé l'état de l'item !");
                },
                initialEnchants,
                alternateEnchants,
                initialFlags,
                alternateFlags,
                initialLore,
                alternateLore
        );

        // Item 6 : Item avec enchantment, lore et flags
        ItemStack itemInteresting = createItem(Material.NETHERITE_SWORD, "§8Un item surprenant");
        setItem(22, itemInteresting, null, enchants, flags, loreItem6);

        // Définir un item dans plusieurs slots
        ItemStack decorationItem = createItem(Material.GRAY_STAINED_GLASS_PANE, " ");
        setItems(Arrays.asList(0, 1, 2, 3, 4, 5, 6, 7, 8), decorationItem, null, null, null, null);
    }

    /**
    * Méthode que j'utilise ici pour créer un item.
    */
    private ItemStack createItem(Material material, String name) {
        ItemStack item = new ItemStack(material);
        ItemMeta meta = item.getItemMeta();
        if (meta != null) {
            meta.setDisplayName(name);
            item.setItemMeta(meta);
        }
        return item;
    }
}

Méthodes disponibles

Voici un tableau pour les méthodes et un autre pour les actions de ta classe BaseGUI.

Méthodes

Méthode
Description

BaseGUI(String title, int rows)

Constructeur pour créer une GUI avec un titre et un nombre de lignes.

setItems(List<Integer> slots, ItemStack item, Consumer<InventoryClickEvent> action, Map<Enchantment, Integer> enchants, List<ItemFlag> flags, List<String> lore)

Définit un item sur plusieurs emplacements avec une action et une configuration complète.

setItem(int slot, ItemStack item, Consumer<InventoryClickEvent> action, Map<Enchantment, Integer> enchants, List<ItemFlag> flags, List<String> lore)

Définit un item sur un emplacement donné avec une configuration complète.

setItemWithToggleAction(int slot, ItemStack initialItem, ItemStack alternateItem, Consumer<InventoryClickEvent> additionalAction, ...)

Définit un item avec une action qui alterne entre deux items lorsqu'il est cliqué, avec configuration des enchantements, flags et lore.

open(Player player)

Ouvre la GUI pour un joueur spécifique.

onInventoryClick(InventoryClickEvent event)

Gère les clics d'inventaire et exécute les actions associées aux emplacements.

onInventoryDrag(InventoryDragEvent event)

EmpĂŞche le drag-and-drop dans l'inventaire de la GUI.

closeAction()

Retourne une action prédéfinie qui ferme la GUI lors du clic.

commandAction(String command)

Retourne une action prédéfinie qui exécute une commande lorsqu'un joueur clique sur un item.

openWebsiteAction(String url, String message)

Retourne une action prédéfinie qui envoie un message contenant un lien URL et ferme la GUI.

openGUIAction(BaseGUI gui, Player player)

Retourne une action prédéfinie qui ouvre une autre GUI pour le joueur actuel.


Différentes actions disponible

Action
Description

closeAction()

Ferme la GUI actuelle lorsqu'un joueur clique sur un item.

commandAction(String command)

Exécute une commande spécifique et ferme la GUI.

openWebsiteAction(String url, String message)

Ferme la GUI, puis envoie un message personnalisé avec un lien vers un site web.

openGUIAction(BaseGUI gui, Player player)

Ouvre une autre GUI (héritant de BaseGUI) pour le joueur actuel.

Pratique pour créer vos meilleurs GUIS, non ?

PreviousBase64

Last updated 4 months ago

Was this helpful?

Pour ajouter des items à votre GUI, vous pouvez utiliser les méthodes en utilisant

đź““
ci-dessous
les actions .