Tout propriétaire de serveur Minecraft sait que pour que son serveur soit unique, il faut lui ajouter des plugins ou bien en créer un inédit. Si il n’y avait pas de plugins, les serveurs seraient tous les même. Dans ce guide, vous allez apprendre les fondamentaux de la création des plugins Minecraft Spigot et vous allez comprendre comment les configurer correctement sur votre serveur…
Sommaire
Pré-requis
Avant de vous précipiter, prenez en compte que la création d’un plugin nécessite d’avoir préalablement appris les bases du langage de programmation Java (et non JavaScript, comme certains pourraient le penser). Il vous sera donc très difficile de créer un plugin avec l’API Spigot sans connaître ne serait-ce qu’un peu de Java. Dans ce guide, nous n’allons pas vous apprendre le Java, mais ne vous inquiétez pas, il existe des centaines de milliers de tutoriels disponibles sur le vaste univers qu’est Internet. Cependant, si vous n’avez pas trop de temps à perdre et que vous voulez coder un plugin rapidement & efficacement, il existe une solution: Skript. Certes, cela tournera moins bien sur des serveurs MMO, mais si vous possédez un petit serveur vous pouvez vous le permettre. Voici un tutoriel disponible ici.
Pour écrire du code, nous allons utiliser la dernière version de l’IDE Eclipse. Il en existe d’autres comme IntelliJ Idea ou NetBeans.
Première étape: Créer le projet. Allez dans File > New > Java Project. J’appellerai le projet « TestSpigot ».
Vous pouvez faire de même, ou choisir un autre nom, cela n’affectera pas notre code. Puis, dans la partie JRE, nous allons sélectionner notre version de Java. Faites attention ! Le plugin ne marchera pas si vous choisissez une version de Java plus ancienne ou plus récente que celle de votre serveur ! Dans Use an execution environment JRE, nous allons sélectionner JavaSE-1.8. Appuyez sur Finish.
Vient ensuite une petite boîte de dialogue expliquant qu’il faudrait créer un module. N’y prêtez pas attention et cliquez sur « Don’t create » car il ne vous sera d’aucune utilité dans un plugin Spigot…
Ajout de l’API Spigot
Très bien, maintenant que vous avez créé le projet, il est temps de lui ajouter l’API Spigot, appelé ici « Library« . Pour cela, vous devez faire un clic droit sur l’icone de votre projet et cliquez sur Properties. Une interface s’affiche, allez dans l’onglet Java Build Path puis allez dans l’onglet Libraries et cliquez sur Module Path. Après cela, les boutons sur le côté droit sont disponibles ! Appuyez maintenant sur « Add External JARs » et sélectionnez l’API de Spigot que vous aurez téléchargé ici (Faites attention, ne prenez pas Bukkit, car celui-ci est désormais dépassé, même s’il est très similaire à Spigot).
Dans ce tutoriel, je vous propose d’utiliser la version de votre choix, à partir de la version 1.8. Le tutoriel devrait être compatible avec toutes les versions. Dans les captures d’écran, nous utiliserons la version 1.8. Normalement, si vous avez tout bien configuré, les images qui sont en-dessous devraient vous paraître familières. À noter: le spigot.jar que votre serveur utilisera est le même spigot.jar que vous devrez mettre dans le Modulepath.
Les bases de Spigot
Enfin ! Après avoir tout configuré, vous allez désormais pouvoir écrire votre code, et donc créer votre plugin. Premièrement, faites un clic droit sur l’icone de votre projet. Allez à New > File, et appelez le fichier plugin.yml ! Ce fichier est la base de tout notre plugin, c’est là où se stockent les commandes, et d’autres paramètres essentiels au plugin. Voici ce que vous devrez écrire dans le fichier:
Une fois que vous aurez terminé et sauvegardé ce fichier essentiel, vous devrez créer un package dans src, pour cela, vous devrez faire clic droit sur ce package en question et en créer un nouveau. Il est conseillé de le nommer avec un ordre précis: pays.auteur.plugin . Un exemple simple: fr.samcarf.testspigot ! Si vous êtes marocain, que vous vous appellez Hamid64 et que votre plugin s’appelle « ShopPlus », alors vous devrez appeler votre package de cette façon: ma.hamid64.shopplus.
Maintenant, vous allez créer dans ce package une classe. Faites un clic droit sur le package en question et créer une nouvelle classe. Il est conseillé de l’appeler Main. C’est maintenant que vous allez pouvoir réellement écrire votre code. Premièrement, votre classe doit étendre JavaPlugin. Votre début de code devrait ressembler à ça:
Puis, une fois que vous aurez terminé cela, vous devrez dire au plugin quelles actions il doit faire quand il démarrera et quand il se désactivera. C’est donc pour ça que nous allons utiliser les méthodes onEnable et onDisable. Il faut faire en sorte que lorsque le serveur s’allume, un message dans la console s’affiche. Pour envoyer du texte dans la console il suffit d’utiliser System.out.println ! Et puis, une fois que vous avez fait tout cela, votre code devrait ressembler à ça :
IMPORTANT: Maintenant que vous avez (presque) terminé d’écrire la classe Main, il est temps de la configurer dans le fichier plugin.yml de cette façon :
Dans notre cas, la classe principale s’appelle Main. Et notre package principal s’appelle fr.samcarf.testspigot. Donc, il est nécessaire d’écrire de cette façon-là:
Et voilà, vous venez de terminer la création d’un plugin très simple en Spigot ! Mais il vous reste encore beaucoup à apprendre…
Fonctions basiques (Commandes, Items…)
Afin de créer votre première commande, vous aurez besoin d’avoir préalablement écrit le nom, la description, la permission et – si vous voulez -, l’usage correct de la commande dans le fichier plugin.yml . Dans notre cas, nous avons appelé notre commande manger, donc lorsque l’on voudra l’exécuter, on devra taper /manger. Nous verrons plus tard comment exécuter une commande à partir d’un message dans le tchat. Pour cela, il faut montrer au serveur qu’il y a une commande et que l’on veut la configurer. Le code à utiliser est le suivant: (N’oubliez pas de le mettre après le system.out.println)
Ce code va expliquer au plugin que toute la configuration de la commande “Manger” sera dans la classe “CmdManger“.
Dans la classe CmdManger, vous arrivez sur un boolean onCommand qui sera auto-généré par l’efficace API Spigot. Première chose qui vous facilitera sûrement la vie, c’est de modifier les attributs et les remplacer par des abréviations. Exemple: Player = pl ; Command = cmd…
Voici le code que vous devrez utiliser et les abréviations conseillées :
Déjà, il faut vérifier que la personne qui exécute la commande est un joueur, et que cela retourne la valeur True. Voici le code que vous devrez utiliser :
Maintenant, nous allons créer une variable qui nous permettra de nous faciliter la lourde tâche qu’est de donner des items à un joueur. On l’appellera p et elle nous sera utile pour le fonctionnement d’autres variables/fonctions comme les inventaires etc. Normalement, votre code devrait ressembler à ça:
Il est désormais temps de récupérer l’inventaire du joueur et de lui ajouter le nombre de nourriture dont on il a besoin. Pour cela nous allons créer une nouvelle variable inv. Puis nous allons ordonner à i d’ajouter 32 steaks cuits nommés « Steaks-Frites » au joueur.
Il faudra donc créer une nouvelle ItemStack qui nous permettra de créer nos steaks et configurer une ItemMeta qui servira à personnaliser nos steaks. Il faudra d’abord créer l’ItemStack steak, puis créer une variable metasteak qui sera récupérée par steak. Puis, il faudra personnaliser nos steaks et définir l’ItemMeta de steak à metasteak. Faites attention ! Définir et ajouter sont deux choses différentes, si vous oubliez une des deux votre code sera erroné ! Une fois que nous avons terminé de faire cela, nous allons envoyer un message au joueur pour qu’il soit informé qu’il a reçu des steaks-frites.
Les événements
Les événements sont très utiles et permettent au joueur de pouvoir, par exemple, effectuer des quêtes, gagner des points en éliminant des joueurs ou recevoir un chaleureux message de bienvenue ! Pour pouvoir débuter dans la création et la gestion d’événements il faut d’abord inscrire la classe où nous allons les gérer dans Main. Pour cela, nous allons utiliser la méthode getServer().getPluginManager().registerEvents(new NomDeLaClasse(), this); ! Faites attention, registerEvents et non registerEvent ! Voici le code que vous devrez utiliser :
Super ! Maintenant, vous devez créer la classe qui vous permettra de gérer les événements (dans notre cas, Events). Notre classe a implémenté Events, ce qui permettra, comme son nom l’indique, de faire fonctionner les événements.
Tout d’abord, vous devez montrer au serveur qu’il s’agit d’un événement, il faut d’abord écrire @EventHandler (une annotation pour les événements), puis vous devrez écrire quel événement doit être détecté et que doit faire le plugin pendant cet événement. Dans notre cas, nous allons utiliser l’événement onPlayerJoinEvent(PlayerJoinEvent <nom>), mais sachez qu’il en existe des centaines avec l’API Spigot. Voici à quoi ressemblera votre début de code:
Maintenant, nous allons afficher un chaleureux message de bienvenue au joueur. Pour faire cela, nous allons créer une variable player qui récupérera le joueur qui a effectué l’événement avec la méthode e.getPlayer() ! Puis nous devons utiliser sendMessage() pour envoyer un message privé au joueur, récupérer le nom du joueur player puis utiliser Bukkit.BroadcastMessage() pour afficher un message public qui dit que le joueur player a rejoint le serveur !
Exportation & Finalisation
Voilà, vous venez de terminé votre plugin Minecraft. Il faut maintenant l’exporter. Si vous avez déjà utilisé Eclipse, ce sera pour vous un jeu d’enfant. Mais si vous ne vous êtes pas familiarisé avec cet IDE, voici comment faire :
- Allez dans File > Export.
- Choisissez JAR File, autrement le plugin ne fonctionnera pas.
- Choisissez le projet à exporter, dans notre cas TestSpigot.
- Cliquez sur Browse dans Select the export destination.
- Mettez le plugin dans le dossier de plugins de votre serveur.
Maintenant, notre plugin fonctionne sur le serveur ! Voici le message d’activation de la console :
Ici, notre chaleureux message de bienvenue: (pour palier au problème du pseudo collé au message, laissez un espace avant le texte…)
Et voilà les fameux steaks-frites que nous avions créé !
Et voilà ! Vous venez enfin de terminer la création de votre tout premier plugin Minecraft !
J’ai adoré le tuto ! Malheureusement, le plugin ne marche pas, il est installé sur le serveur mais pourtant rien ne se passe… rien dans la console, aucun message de bienvenue et sur eclipse ça me disait qu’il y avait plein d’erreurs.
Est-ce que ce serait possible de trouver une solution ?
Bonjour,
Le plugin s’est bien installé sur mon serveur, le message de bienvenue s’affiche bien, mais lorsque j’effectue la commande, je reçois ce message : « I’m sorry, but you do not have permissions to performe this command. Please contact the server administrator if you believe that this is a mistake. »
De plus, lorsque j’effectue la commande dans la console du serveur sur OMGserv, rien ne se passe (J’ai rajouté une ligne de commande pour afficher une phrase dans le chat).
Avez-vous une solution à ce problème ?
Merci d’avance
Tu dois mettre la version de ton plugin, c’est-à-dire si c’est la version 1.0 (avec toutes ses variantes, 1.0.1 etc.) du plugin, et l’api-version = version du serveur, si le serveur est en 1.8 ou en 1.16 par exemple :)
Eclipse cherche sur son marketplace un éditeur de texte pour les fichiers yml, annule l’opération et double-clic sur le fichier !
Et désolé pour le retard que j’ai pris, ces derniers temps je n’étais pas beaucoup disponible :(
bonjour lorsque j’ouvre mon plugin.yml cela m’affiche :
An internal error occurred during: « Search Marketplace for compatible editors (*.yml) ».
Bonjour si la version de mon plugin est en 1.12.2 du coup je mets dans plugin.yml
mais alors qu’est-ce que je mets dans
? car vous quand vous l’avez fait vous avez fait
et
pouriez vous modifier les block de code ?