Create button
How to create a button
Informations
L'une des grandes caractéristiques de zMenu est la personnalisation des boutons. Vous pourrez créer des boutons pour vos plugins, ce qui permettra aux utilisateurs de n'avoir qu'un seul plugin d'inventaire pour l'ensemble du serveur. L'objectif de zMenu est de faire en sorte que le plus grand nombre possible de plugins utilisent son API, afin que les utilisateurs n'aient qu'un seul type de configuration d'inventaire pour l'ensemble de leur serveur.
Pour créer un bouton, vous aurez besoin d'au moins deux classes. Une première pour le bouton et une seconde pour le modifier. Vous pouvez également créer une interface pour implémenter votre bouton, mais ce n'est pas obligatoire.
Le code final est disponible ici : https://github.com/Maxlego08/zMenuExample
Création d'un bouton classique
Nous allons créer un simple bouton avec une action qui sera exécutée lorsqu'il sera cliqué.
1. Créer une classe de boutons
Il faut d'abord créer une classe qui sera étendue à partir de ZButton
:
Vous venez de créer un bouton, il ne vous reste plus qu'à implémenter les méthodes et à l'enregistrer.
2. Implementation
Pour l'exemple, nous ferons en sorte que lorsque le joueur clique, l'inventaire se ferme, un message lui est envoyé et il est envoyé dans le ciel.
Pour détecter le clic d'un joueur, vous devez implémenter la méthode onClick.
Dans cette méthode, nous avons le lecteur, l'événement click et l'objet InventoryDefault. Cet objet permet de gérer toutes les actions de l'inventaire. Il vous permettra de récupérer des informations sur la page, sur l'objet Inventory du spigot et bien d'autres choses.
Nous pouvons maintenant implémenter cette méthode :
Vous pouvez voir que dans cet exemple, nous faisons référence à this.plugin. Il est important de savoir que le constructeur de votre bouton peut avoir un constructeur vide ou un constructeur avec l'attribut Plugin. Vous pouvez ensuite intégrer l'interface du plugin dans votre plugin. (Cf #3 Register button)
Voici la classe avec toutes les implémentations :
3. Bouton d'enregistrement
Vous devez maintenant enregistrer le bouton. Pour enregistrer un bouton, vous avez besoin d'un ButtonLoader. Dans cet exemple, nous n'avons pas besoin d'un chargeur complexe. Nous pouvons donc utiliser la fonction NoneLoader. Ce loader vous permettra de charger un bouton très simplement. Comme nous l'avons dit dans la deuxième partie, la fonction NoneLoader vous permettra de charger votre classe avec ou sans l'élément Plugin.
Allez dans votre classe principale. Vous devrez obtenir le fichier ButtonManager et utiliser la méthode d'enregistrement pour register un bouton.
Pour récupérer le fournisseur, voici une méthode très utile :
Il suffit d'utiliser les méthodes pour enregistrer un bouton. Avant d'enregistrer vos boutons, il est conseillé de supprimer tous les boutons de votre plugin à l'aide de la méthode unregisters.
Avec le NoneLoader, vous devez spécifier le nom de votre bouton. Nous vous conseillons de mettre le <nom de votre plugin>_<le nom du bouton>
Créer un bouton complexe
1. Créer une classe de boutons
Nous allons créer un bouton pour faire de la pagination. Le bouton affichera les éléments sur plusieurs emplacements en fonction de la page. Nous devons donc créer un bouton qui sera étendu à partir de ZButton. Nous allons également créer une interface PaginationButton qui sera étendue à partir de SlotButton.
2. Implementation
zMenu utilise le TemplatePlugin. Ce plugin possède donc de nombreuses classes utilitaires. Ici, nous utiliserons la classe Pagination. Cette classe permet de trier une liste en fonction d'un nombre d'éléments et d'une page.
Voici la classe complète :
Un inventaire qui sera étendu à partir de slotButton aura un rendu spécial avec la méthode onRender. Vous pouvez activer le rendu spécial à l'aide de la méthode hasSpecialRender.
3. Bouton d'enregistrement
Pour enregistrer ce bouton, nous devons créer une class ButtonLoader.
Vous devez ensuite mettre en œuvre les 4 méthodes. La méthode getButton vous devez retourner le bouton, ici vous devez retourner le PaginationButton.class
Nous vous conseillons de mettre le <nom de votre plugin>_<le nom du bouton>
Pour la méthode load le plugin vous fournira une YamlConfiguration et le chemin d'accès à la configuration. Vous devez ensuite renvoyer l'implémentation de votre bouton. Pour pouvoir charger une liste de slots, vous disposez de la méthode loadeSlot qui, à partir d'une liste de chaînes de caractères, renvoie une liste d'entiers.
Ensuite, comme dans le premier exemple, vous devez enregistrer le bouton.
4. Inventory
Vous devez maintenant créer un inventaire pour pouvoir gérer la pagination.
Dernière mise à jour