Skip to content

📚 Les APIs

iambibi_ edited this page Jun 12, 2026 · 2 revisions

Les APIs OpenMC

Table des matières

MenuLib

Créer un Menu

MenuLib est une librairie de menus Minecraft originellement créée à part d'OpenMC mais a été intégrée au projet pour l'adapter aux besoins. Elle permet de créer un menu très simplment, en créant une classe qui hérite de Menu :

public class WikiMenu extends Menu {

    public WikiMenu(Player owner) {
        super(owner); // Constructeur obligatoire
    }

    @Override
    public @NotNull Component getName() {
        return Component.text("Menu name");
    }

    @Override
    public String getTexture() {
		return ""; // Texture ItemsAdder
    }

    @Override
    public @NotNull InventorySize getInventorySize() {
        return InventorySize.LARGEST; // Inventory Sizes: 9 (SMALLEST), 18, 27, 36, 45, 54 (LARGEST)
    }

    @Override
    public void onInventoryClick(InventoryClickEvent inventoryClickEvent) {
        // Déclenché lorsqu'un click est détecté dans le menu
    }

    @Override
    public void onClose(InventoryCloseEvent event) {
        // Déclenché lorsque le menu se ferme
    }

    @Override
    public @NotNull Map<Integer, ItemMenuBuilder> getContent() {
        Map<Integer, ItemMenuBuilder> content = new HashMap<>();

        // Ajoute les items ici :
        map.put(*slot, new ItemMenuBuilder(this, *Material, *itemMeta));

        return content;
    }

    @Override
    public List<Integer> getTakableSlot() {
        return List.of(); // Liste des slots ou l'on peut placer/retirer des items
    }
}

La méthode la plus importante ici est getContent() car c'est ici ou vous allez définir les items qui se trouveront dans le menu. Elle demande une Map avec un int et un ItemMenuBuilder. L'entier *slot est le numéro du slot dans l'inventaire (en partant de 0).

Créer un ItemMenuBuilder

La classe ItemMenuBuilder regroupe beaucoup de fonctions qui permettent de bien gérer le fonctionnement du menu. Lorsqu'on créé un nouvel objet, il lui faut 2 à 3 paramètres :

  • le menu dans lequel il se trouve (obligatroire) -> this
  • l'item dont il prendra la forme (obligatoire) -> Material ou ItemStack
  • un consumer d'itemMeta qui permet de définir plusieurs propriétés à l'item (facultatif)

Exemple :

new ItemMenuBuilder(this, Material.BARREL, itemMeta -> {
    itemMeta.displayName(Component.text("Voir l'inventaire du joueur"));
    itemMeta.lore(List.of(
        Component.text("Vous permet de voir l'inventaire du joueur"),
        Component.text("Celui-ci ne saura pas que vous regardez son inventaire")
    ));
});

Vous pouvez aussi définir des actions à votre ItemMenuBuilder avec la méthode setOnClick() :

new ItemMenuBuilder(this, Material.BARREL, itemMeta -> {
    itemMeta.displayName(Component.text("Voir l'inventaire du joueur"));
    itemMeta.lore(List.of(
        Component.text("Vous permet de voir l'inventaire du joueur"),
        Component.text("Celui-ci ne saura pas que vous regardez son inventaire")
    ));
}).setOnClick(iventoryClickEvent -> openInventoryFor(player));

Ouvrir le menu

Une fois que cela est créé, vous pouvez, ouvrir le menu depuis n'importe où dans le code :

new WikiMenu(player).open();

Le Github

Les Systèmes Internes

🚧 WIP

Clone this wiki locally