Aller au contenu principal

Introduction a l'API

zMenu fournit une API complete permettant aux developpeurs de s'integrer et d'etendre les fonctionnalites du plugin. Ce guide vous aidera a demarrer avec l'API zMenu.

Depot Maven​

Ajoutez le depot GroupeZ a votre pom.xml :

<repositories>
<repository>
<id>groupez</id>
<url>https://repo.groupez.dev/releases</url>
</repository>
</repositories>

Dependance Maven​

Ajoutez l'API zMenu comme dependance :

<dependencies>
<dependency>
<groupId>fr.maxlego08.menu</groupId>
<artifactId>zmenu-api</artifactId>
<version>1.1.0.0</version>
<scope>provided</scope>
</dependency>
</dependencies>

Gradle​

Pour les utilisateurs de Gradle :

repositories {
maven { url 'https://repo.groupez.dev/releases' }
}

dependencies {
compileOnly 'fr.maxlego08.menu:zmenu-api:1.1.0.0'
}

Kotlin DSL​

repositories {
maven("https://repo.groupez.dev/releases")
}

dependencies {
compileOnly("fr.maxlego08.menu:zmenu-api:1.1.0.0")
}

Dependance du Plugin​

Ajoutez zMenu comme dependance dans votre plugin.yml :

# Dependance obligatoire (le plugin ne se chargera pas sans zMenu)
depend: [zMenu]

# Dependance optionnelle (le plugin se chargera meme sans zMenu)
softdepend: [zMenu]

Obtenir l'API​

Acceder a l'Instance du Plugin​

import fr.maxlego08.menu.api.MenuPlugin;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin {

private MenuPlugin menuPlugin;

@Override
public void onEnable() {
// Obtenir l'instance de zMenu
this.menuPlugin = (MenuPlugin) Bukkit.getPluginManager().getPlugin("zMenu");

if (this.menuPlugin == null) {
getLogger().severe("zMenu non trouve ! Desactivation du plugin...");
Bukkit.getPluginManager().disablePlugin(this);
return;
}

getLogger().info("Connexion reussie a zMenu !");
}

public MenuPlugin getMenuPlugin() {
return this.menuPlugin;
}
}

Connexion Securisee avec Dependance Optionnelle​

import fr.maxlego08.menu.api.MenuPlugin;
import org.bukkit.Bukkit;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin {

private MenuPlugin menuPlugin;
private boolean zMenuEnabled = false;

@Override
public void onEnable() {
// Tenter de se connecter a zMenu
hookZMenu();

if (zMenuEnabled) {
getLogger().info("Integration zMenu activee !");
// Enregistrer les fonctionnalites specifiques a zMenu
} else {
getLogger().info("zMenu non trouve, fonctionnement sans integration.");
}
}

private void hookZMenu() {
Plugin plugin = Bukkit.getPluginManager().getPlugin("zMenu");
if (plugin != null && plugin.isEnabled()) {
this.menuPlugin = (MenuPlugin) plugin;
this.zMenuEnabled = true;
}
}

public boolean isZMenuEnabled() {
return this.zMenuEnabled;
}

public MenuPlugin getMenuPlugin() {
return this.menuPlugin;
}
}

Interfaces Principales​

L'API zMenu fournit plusieurs interfaces principales :

L'interface principale du plugin donnant acces a tous les gestionnaires :

MenuPlugin menuPlugin = ...;

// Gestion des inventaires
InventoryManager inventoryManager = menuPlugin.getInventoryManager();

// Enregistrement des types de boutons
ButtonManager buttonManager = menuPlugin.getButtonManager();

// Gestion des commandes
CommandManager commandManager = menuPlugin.getCommandManager();

// Gestion des donnees joueur
DataManager dataManager = menuPlugin.getDataManager();

Gestionnaires Principaux​

GestionnaireFonction
InventoryManagerCharger, gerer et ouvrir les inventaires
ButtonManagerEnregistrer des types de boutons personnalises
CommandManagerEnregistrer des commandes personnalisees
DataManagerAcceder au stockage des donnees joueur

Structure de l'API​

fr.maxlego08.menu.api
├── MenuPlugin # Interface principale du plugin
├── InventoryManager # Operations sur les inventaires
├── ButtonManager # Enregistrement des boutons
├── CommandManager # Gestion des commandes
├── DataManager # Acces aux donnees joueur
├── button/
│ ├── Button # Interface des boutons
│ └── ButtonLoader # Chargement des boutons
├── action/
│ ├── Action # Interface des actions
│ └── ActionLoader # Chargement des actions
├── requirement/
│ ├── Requirement # Interface des conditions
│ └── Permissible # Verification des permissions
└── event/
├── ButtonLoadEvent
├── InventoryLoadEvent
└── PlayerOpenInventoryEvent

Bonnes Pratiques​

  1. Toujours verifier la nullite lors de la recuperation de l'instance du plugin zMenu
  2. Utiliser les dependances optionnelles si votre plugin peut fonctionner sans zMenu
  3. Ne pas stocker les references aux gestionnaires - les recuperer au moment ou vous en avez besoin
  4. Gerer les exceptions correctement lors du travail avec les inventaires
  5. Tester minutieusement avec differentes versions de zMenu

Exemple de Plugin Complet​

package com.example.myplugin;

import fr.maxlego08.menu.api.MenuPlugin;
import fr.maxlego08.menu.api.InventoryManager;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class MyPlugin extends JavaPlugin {

private MenuPlugin menuPlugin;

@Override
public void onEnable() {
// Se connecter a zMenu
this.menuPlugin = (MenuPlugin) Bukkit.getPluginManager().getPlugin("zMenu");

if (this.menuPlugin == null) {
getLogger().severe("zMenu est requis !");
Bukkit.getPluginManager().disablePlugin(this);
return;
}

getLogger().info("MyPlugin active avec l'integration zMenu !");
}

@Override
public boolean onCommand(CommandSender sender, Command command,
String label, String[] args) {
if (!(sender instanceof Player)) {
sender.sendMessage("Joueurs uniquement !");
return true;
}

Player player = (Player) sender;
InventoryManager manager = menuPlugin.getInventoryManager();

// Ouvrir un inventaire zMenu
manager.getInventory("my-menu").ifPresent(inv -> {
manager.openInventory(player, inv);
});

return true;
}
}

Etapes Suivantes​

Support​

Pour le support de l'API :

Copyright © 2026 GroupeZ|Build #loading...|-