Même si cela peut paraître difficile, créer un plugin sous Spigot est assez simple lorsqu’on a déjà les bases en Java ou même d’un autre langage de programmation. Dans le cas contraire, il suffit d’être patient, galérer, recommencer, aimer apprendre et surtout aimer lire. Ce guide vous apprendra à installer le nécessaire pour commencer à développer votre propre plugin. Cependant, si vous n’avez jamais géré ou installé un serveur Minecraft, il est peut-être un peu trop tôt pour commencer à développer des plugins.
Sachez que Spigot reprend les sources de Bukkit, donc toutes les fonctionnalités de Bukkit sont disponibles sur Spigot.
Tout d’abord, il faut savoir un minimum lire l’anglais, beaucoup de tutoriels (de bonne qualité) sont dans cette langue.
Je ne vous apprendrai pas à développer en Java dans ce tutoriel. Quelques informations vous seront données mais ce n’est pas le but ici. Il vous faudra donc une certaine logique à adopter. Sachez qu’un ordinateur fait bêtement ce que vous lui dites de faire, alors chaque détail compte. Les plus grandes failles de l’informatique, ce sont les humains !
Pour cela, on utilise des IDE (Integrated Development Environment) ou EDI (Environnement de Développement Intégré). Ce sont des logiciels facilitant le développement de programmes grâce à divers outils.
Je vous renvoie au tutoriel de Robin4002, il explique très bien comment installer un IDE (ou EDI) nécessaire pour le développement Java.
Sachez qu’il vaut mieux développer en anglais (nom des dossiers/fichiers, langage de votre IDE) et même dans le code, parce que si vous voulez avoir de l’aide sur internet, les meilleurs forums et les plus actifs sont anglophones.
Tout d’abord, lancez Eclipse, puis créez un répertoire (Workspace) où se trouveront tous vos futurs projets.
Vous tomberez sur la fenêtre de bienvenue d’Eclipse, cliquez sur “Go to WorkBench” (aller dans l’espace de travail) qui ouvrira une nouvelle fenêtre. C’est ici que l’on développera notre plugin.
Pour créer un nouveau projet, allez dans la fenêtre “Project Explorer”, faites un clic droit > New > Project.
Ou allez dans le menu File > New > Project.
Une nouvelle fenêtre apparaît avec plusieurs dossiers. Seul le Java nous intéresse pour le moment donc ouvrez “Java” puis cliquez sur “Java Project”. Choisissez le nom de votre projet (vous pouvez choisir la version de Java que vous utiliserez, mais il vaut mieux utiliser la dernière version installée sur votre ordinateur, c’est-à-dire celle proposée par défaut) et ensuite cliquez sur “Finish”.
Après avoir créé votre projet, Eclipse vous demandera si vous voulez adapter votre fenêtre au développement Java, personnellement je trouve que cela aide donc n’hésitez pas à accepter.
Vous disposez maintenant de ces éléments :
“src” sera l’endroit où nous écrirons notre plugin, notre dossier source. “JRE System Library” est l’API de Java, ce qui nous permettra de l’utiliser.
Nous devons importer l’API de Spigot, qui n’est d’autre que le .jar utilisé pour lancer un serveur Spigot. Il suffira de l’importer dans nos librairies. Pour avoir ce .jar, je vous renvoie à la page officielle de téléchargement de Spigot !
Créez un nouveau dossier quelque part sur votre ordinateur où vous copierez toutes les versions du serveur de Spigot ; vous ne serez pas obligé de re-télécharger le .jar ou de le rechercher. En important plusieurs versions de Spigot, votre plugin sera compatible avec plusieurs versions de serveur. N’oubliez pas que certaines fonctionnalités sont propres à différentes versions. Il vous faudra donc régler les problèmes de compatibilité. Mais nous verrons cela beaucoup plus tard.
Pour importer Spigot, clic droit sur notre projet > Build Path > Configure Build Path.
Ensuite, allez dans l’onglet “Libraries” et cliquez sur “Add External JARs” et allez choisir le .jar téléchargé précédemment ou que vous avez déjà.
Maintenant, commençons notre plugin ! Nous devons créer un nouveau “package” (paquet ou dossier) où se trouveront toutes nos classes. Les classes sont des fichiers contenant notre code. Aucune majuscule pour les “packages”, cela est réservé aux classes.
L’usage fait que, habituellement, le package suivant le dossier source (“src”) soit nommé de cette façon :
Si par exemple vous travaillez pour une entreprise qui s’appelle Clap Your Hands, qui est chinoise et qui veut créer une application nommée “Flying Carpet”, cela donnera : “cn.clapyourhands.flyingcarpet”.
Cela permet d’avoir un peu plus d’informations sur l’auteur ou le commanditaire.
Ensuite dans ce package, créez la classe principale de votre plugin, nommez cette classe “Main”. C’est ici que le serveur initialisera votre plugin.
Vous pouvez nommer chacune des classes comme bon vous semble, mais il est plus pratique d’appeler une classe par son rôle. Donc ici, “Main” pour la classe principale.
Vous devriez maintenant avoir ceci :
Changez “public class Main” par :
public class Main extends JavaPlugin
Vous devriez normalement voir une erreur, une ligne rouge se trouvant en dessous du “JavaPlugin”, c’est parce qu’il faut informer notre classe d’où se trouve la classe dont elle est l’extension.
À chaque fois que vous utilisez une classe qui ne se trouve pas dans le même package que celle que vous utilisez, il va falloir l’importer. Pas d’inquiétude, Eclipse est là pour nous aider, il suffit de passer la souris dessus et de cliquer sur “imports …”. Nous pouvons aussi tout importer automatiquement grâce au raccourci : ctrl + maj + O.
Une nouvelle ligne apparaît après le “package fr.minecraft.helloworld”, “import org.bukkit.java.JavaPlugin”.
Parfois, Eclipse nous propose plusieurs choix, c’est parce que plusieurs classes dans différents packages ou librairies utilisent le même nom, à vous de vous documenter pour savoir quelle classe répond à vos attentes.
Vous allez ajouter ces deux “functions” (méthodes) entre les crochets de votre “public class Main extends JavaPlugin”:
public void onEnable() { Bukkit.getConsoleSender().sendMessage("Merci d'avoir installé mon plugin."); } public void onDisable() { Bukkit.getConsoleSender().sendMessage("A la prochaine !"); }
Pour tout apprendre sur les méthodes, je vous renvoie ici.
Tout d’abord, avant d’exporter son plugin, il faut créer le fichier “plugin.yml” dans le dossier “src”, donc faites un clic droit sur ce dernier > New > File.
Puis dans la section “File name”, mettez “plugin.yml”. C’est ici que seront stockées les informations de notre plugin, comme le chemin de la classe principale, le nom de notre plugin, sa version etc. C’est dans ce fichier que l’on recense aussi les commandes et les permissions. Mais nous verrons cela plus tard.
Vous trouverez la totalité des informations ici. Mais les informations les plus basiques et essentielles sont celles-ci :
main: fr.minecraft.helloworld.Main name: HelloWorld description: Un plugin pour Minecraft.fr author: Plx0wn version: 1.0
Maintenant, commençons à exporter notre plugin. Faites clic droit sur notre projet > Export > Java > Jar File.
Ensuite, indiquez le nom et l’emplacement du .jar qui deviendra votre plugin et cliquez sur “Finish”.
Maintenant, il ne reste plus qu’à l’installer dans le dossier “plugins” de votre serveur et à le démarrer !
Si vous voulez que vos textes soient en couleurs (les couleurs de Minecraft : &a, &b, &4…), voici un court exemple qui sera approfondi dans le prochain article.
Pour cela, il suffit de rajouter “ChatColor.LACOULEUR +” devant votre texte.
Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "Merci d'avoir installé mon plugin.");
Pour voir la liste complète des couleurs, juste après le “ChatColor.”, faites crtl + espace et Eclipse vous donnera toutes les possibilités.
Forums :
Spigot docs : https://hub.spigotmc.org/javadocs/spigot/overview-summary.html
OpenClassRoom : https://openclassrooms.com/courses/apprenez-a-programmer-en-java
Pour conclure, n’hésitez pas à chercher sur internet, par exemple : “Spigot how summon entity” (Spigot comment faire apparaître une entité). La plupart du temps, des tutoriels ont déjà été écrits ou il existe déjà des réponses à la plupart des questions sur des forums. Il y a bien évidemment plus de résultats en cherchant en anglais.