-
Notifications
You must be signed in to change notification settings - Fork 28
📚 Les APIs
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).
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) ->
MaterialouItemStack - un consumer d'
itemMetaqui 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));Une fois que cela est créé, vous pouvez, ouvrir le menu depuis n'importe où dans le code :
new WikiMenu(player).open();