Comment utiliser NMS dans Bukkit

Bien que Minecraft accueille divers plugins (que vous pouvez utiliser pour modifier votre expérience de jeu), certains éléments du jeu sont protégés de la manipulation des plugins. Filet. Minecraft. Server (NMS) est l'un de ces packages protégés, car il contient un code de serveur vital pour le jeu. Ce code provient directement des développeurs de Minecraft, Mojang, et n'est pas censé être accessible aux joueurs.

Comment utiliser NMS dans Bukkit

Avec Bukkit, les joueurs peuvent créer une couche d'abstraction autour du code NMS. Cela leur permet de développer des plug-ins qui interagissent avec le code du serveur sans apporter de modifications directes à la base de code essentielle pour jouer au jeu. Considérez-le comme une fenêtre qui vous permet de regarder le code que vous souhaitez utiliser dans votre plugin mais agit également comme une barrière qui vous empêche de modifier directement le code.

Explorons comment utiliser Bukkit avec le NMS de Minecraft.

Avant de commencer - Ce que vous devez savoir sur Bukkit

Bukkit est une API qui vous permet de créer et d'utiliser des plugins qui modifient votre expérience de l'aspect multijoueur de Minecraft. Au moins, ça l'était. La dernière version de Bukkit est sortie en 2016, et elle a depuis été abandonnée pour faire place à une API différente, nommée Spigot. Tout en fonctionnant de la même manière que Bukkit, il offre de meilleures performances de serveur.

Ainsi, l'utilisation de Bukkit pour vos plugins vous oblige à la fois à jouer à une version obsolète de Minecraft et à accepter le fait que Bukkit n'est pas aussi bon que son API de remplacement. En supposant que vous soyez heureux d'accepter ces sacrifices, voici les seules choses dont vous avez besoin :

  • Java Development Kit (JDK) 7 ou supérieur, la plupart recommandant JDK 8.

Avec cela, vous êtes prêt à créer des plugins.

Comment créer des plugins Bukkit pour Minecraft

Avant de pouvoir commencer à utiliser Bukkit pour accéder au NMS de Minecraft, vous devez ajouter l'API en tant que dépendance, définir une classe principale qui permet à Bukkit d'interagir avec le plugin que vous créez et de fournir à Bukkit les informations dont il a besoin pour charger votre plugin dans le jeu. Chaque étape nécessite un codage, les exemples qui suivent provenant de Tutoriel RIP.

Étape 1 - Ajouter Bukkit en tant que dépendance

Dans le passé, vous pouviez ajouter Bukkit en tant que dépendance dans Minecraft en téléchargeant le fichier Bukkit.jar à partir du référentiel Bukkit et en l'ajoutant au chemin de classe de votre projet. Cette option n'est plus disponible car le référentiel n'est plus accessible.

Heureusement, il existe une méthode alternative qui utilise le fichier pom.xml de votre jeu. Ouvrez le fichier et ajoutez les lignes suivantes :

spigot-repohttps://hub.spigotmc.org/nexus/content/repositories/snapshots/API Bukkitorg.bukkitbukkit{VERSION}fourni

Étape 2 - Créez la classe principale de votre plugin

Votre plugin doit pouvoir créer une seule instance de sa classe principale, qui est utilisée pour étendre "JavaPlugin" afin qu'il reconnaisse et vous permette d'utiliser le plugin lorsque vous êtes en jeu. Considérez cette classe principale comme la porte par laquelle Bukkit peut entrer pour charger et manipuler le plugin. La plupart donnent à la classe principale de leur plugin le même nom que le plugin lui-même, ce qui facilite la référence à la classe principale lors du codage.

L'exemple de code suivant du didacticiel RIP offre un exemple de classe principale pour un plug-in nommé "MyPlugin :"

package com.example.myplugin; //{$TopLevelDomain}.{$Domain}.{$PluginName}; importer org.bukkit.plugin.java. Plug-in Java; public final class MyPlugin extend JavaPlugin { @Override public void onEnable() { //Appelé lorsque le plugin est activé getLogger().info("onEnable a été invoqué !"); } @Override public void onDisable() { //Appelé lorsque le plugin est désactivé getLogger().info("onDisable a été invoqué !"); } }

Accéder à votre plugin depuis une autre classe

Vous souhaiterez peut-être accéder à votre plugin via une classe différente de la classe principale que vous créez pour lui, ce qui pourrait être utile pour accéder à plusieurs plugins dans un seul jeu Minecraft.

Pour ce faire, vous devez d'abord stocker une instance de la classe principale que vous avez créée à l'aide de Bukkit afin que d'autres classes puissent y accéder. Encore une fois, l'exemple de code suivant provient du didacticiel RIP et utilise le nom de classe "MyPlugin" :

public class MyPlugin étend JavaPlugin { instance privée statique de MyPlugin; //Variable effectivement finale contenant l'instance de votre plugin public MyPlugin(){ if (MyPlugin.instance != null) { //Vérification inutile mais garantit que votre plugin n'est initialisé qu'une seule fois. throw new Error("Plugin déjà initialisé!"); } MonPlugin.instance = this; // Le constructeur d'un plugin ne doit être appelé qu'une seule fois } public static MyPlugin getInstance(){ // Récupère l'instance de retour de l'instance de votre plugin; } //votre autre code... }

Une fois que vous avez l'instance en place, vous pouvez accéder à votre classe principale (créée via Bukkit) en utilisant la commande "getInstance()". En voici un exemple utilisant la classe principale "MyPlugin" de RIP Tutorial :

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Nous venons d'utiliser MyPlugin"); } }

Étape 3 - Créez votre fichier plugin.yml

Un fichier plugin.yml contient des informations vitales sur votre plugin, ce qui signifie qu'il sert de fichier de configuration de base du plugin. Sans ce fichier, Bukkit n'aura pas les informations dont il a besoin pour charger votre plugin dans Minecraft, ce qui entraînera l'échec du chargement du plugin et le plantage probable du jeu.

Ce fichier doit contenir les détails suivants :

  • Nom - Il s'agit du nom que vous avez donné à votre plugin (c'est-à-dire "MyPlugin" de RIP Tutorial) et il s'affichera dans les messages de journal et dans votre liste de plugins.
  • Version - Utilisez ce champ pour indiquer l'historique des versions du plug-in, en commençant par 1.0.0 et en remontant au fur et à mesure que vous modifiez ou modifiez le plug-in.
  • Principal – Contient le nom de la classe principale du plugin, qui étend « JavaPlugin », permettant à Bukkit d'entrer dans le plugin. Dans l'exemple du didacticiel RIP, ce nom serait "package com.example.myplugin", que vous pouvez voir dans le code de la classe principale ci-dessus.
  • Description – Une description de base de ce que fait votre plugin.
  • Auteur – Vous pouvez avoir un seul auteur ou plusieurs auteurs, ces derniers étant indiqués par des crochets et des virgules comme suit – [Auteur1, Auteur2, Auteur3].
  • Contributeurs – Vous utiliserez cette section pour noter toute personne ayant contribué à votre plugin, le formatage étant le même que pour la section « Auteurs ».
  • Site Internet – Si vous avez un site Web à brancher ou souhaitez lier des personnes à la page du plugin ou au référentiel GitHub, vous pouvez entrer l'URL ici.
  • Version API – Entrez la version de l'API Bukkit que vous utilisez ici. Si vous n'entrez pas de version d'API, Minecraft supposera qu'il charge un plugin hérité. Le plugin peut toujours fonctionner, même si vous verrez un avertissement indiquant qu'il s'agit d'une version héritée imprimée dans votre console lors du chargement.

Voici un exemple de fichier plugin.yml basé sur les conventions de dénomination utilisées dans le code du didacticiel RIP utilisé dans cet article :

nom: MonPlugin. version: 1.0.0. main: package com.example.myplugin. description: Un plugin de test pour Minecraft. auteur: Tutoriel RIP. site Internet: https://riptutorial.com/bukkit. version API: 1.17. 

Bukkit convient-il pour accéder et utiliser NMS ?

Avec cela, vous avez créé une dépendance Bukkit, construit une classe principale pour servir de porte d'entrée de Bukkit au plugin, et avez un fichier plugin.yml que Bukkit peut utiliser pour voir ce que fait le plugin. Cependant, vous ne voudrez peut-être pas le faire, car Bukkit est tellement obsolète que vous devrez exécuter une très ancienne version de Minecraft pour l'utiliser efficacement. La plupart sont déjà passés à Sprigot, qui reflète la plupart de ce que Bukkit a fait tout en offrant de meilleures performances.

Si vous souhaitez toujours utiliser Bukkit pour accéder aux plugins, pourquoi l'avez-vous choisi plutôt que des API plus modernes? Quels types de plugins utilisez-vous pour améliorer votre expérience Minecraft? Dites-nous tout à ce sujet dans la section des commentaires ci-dessous.