Cómo usar NMS en Bukkit

Cómo usar NMS en Bukkit

Aunque Minecraft es acogedor para varios complementos (que puede usar para alterar su experiencia de juego) Algunos elementos del juego están protegidos de la manipulación de los complementos. Neto.Minecraft.Server (NMS) es uno de estos paquetes protegidos, ya que contiene un código de servidor vital para el juego. Este código proviene directamente de los desarrolladores de Minecraft, Mojang, y no se supone que sea accesible para los jugadores.

Con Bukkit, los jugadores pueden crear una capa de abstracción alrededor del código NMS. Esto les permite desarrollar complementos que interactúen con el código del servidor sin hacer cambios directos en la base de código que es esencial para jugar el juego. Piense en ello como una ventana que le permite ver el código que desea usar en su complemento, pero también actúa como una barrera que le impide cambiar el código directamente.

Exploremos cómo usar Bukkit con el NMS de Minecraft.

Antes de comenzar, lo que necesita saber sobre Bukkit

Bukkit es una API que le permite crear y usar complementos que alteran la forma en que experimenta el aspecto multijugador de Minecraft. Al menos, fue. La última versión de Bukkit salió en 2016, y desde entonces se ha descontinuado para dar paso a una API diferente, llamada Spigot. Mientras trabaja de manera similar a Bukkit, ofrece un mejor rendimiento del servidor.

Por lo tanto, el uso de Bukkit para sus complementos requiere que juegue una versión obsoleta de Minecraft y acepte el hecho de que Bukkit no es tan bueno como su API de reemplazo. Suponiendo que esté feliz de aceptar esos sacrificios, estas son las únicas cosas que necesita:

  • Java Development Kit (JDK) 7 o superior, y la mayoría recomienda JDK 8.

Con eso, estás listo para crear algunos complementos.

Cómo crear complementos Bukkit para Minecraft

Antes de que pueda comenzar a usar Bukkit para acceder a los NM de Minecraft, debe agregar la API como dependencia, establecer una clase principal que permita que Bukkit interactúe con el complemento que crea y proporcionar a BUKKIT la información que necesita para cargar su complemento en el juego. Cada paso requiere codificación, con los ejemplos que siguen provenientes del tutorial RIP.

Paso 1: agregue Bukkit como dependencia

En el pasado, puede agregar Bukkit como dependencia en Minecraft descargando el bukkit.Archivo JAR desde el repositorio de Bukkit y agregarlo a la classpath de su proyecto. Esa opción ya no está disponible porque el repositorio ya no es accesible.

Afortunadamente, hay un método alternativo que hace uso de la pom.archivo XML. Abra el archivo y agregue las siguientes líneas:

  espiga-repo https: // centro.spigotmc.org/nexus/content/repositories/instantáneas/      organizar.bukkit bukkit VERSIÓN proporcionó   

Paso 2: cree la clase principal de su complemento

Su complemento debe poder crear una sola instancia de su clase principal, que se utiliza para extender "Javaplugin" para que lo reconozca y le permita usar el complemento cuando está en el juego. Piense en esta clase principal como la puerta a través de la cual Bukkit puede ingresar tanto para cargar como manipular el complemento. La mayoría le da a la clase principal de su complemento el mismo nombre que el complemento en sí, lo que hace que sea más fácil referirse a la clase principal al codificar.

El siguiente código de ejemplo de RIP Tutorial ofrece un ejemplo de una clase principal para un complemento llamado "MyPlugin:"

paquete com.ejemplo.myplugin; // $ topLevelDomain.$ Dominio.$ PluginName; Org de importación.bukkit.enchufar.Java.Javaplugin; public Final Clase MyPlugin extiende Javaplugin @Override public void onenable () // llamado cuando el complemento está habilitado getLogger ().Información ("Onenable ha sido invocado!"); @Override public void onDisable () // llamado cuando el complemento está deshabilitado getLogger ().información ("Ondisable ha sido invocado!"); 

Acceder a su complemento desde otra clase

Es posible que desee acceder a su complemento a través de una clase diferente a la clase principal que crea para él, lo que podría ser útil para acceder a varios complementos en un solo juego de Minecraft.

Para hacerlo, debe almacenar una instancia de la clase principal que creó usando Bukkit para que otras clases puedan acceder a ella. Nuevamente, el siguiente código de ejemplo proviene del tutorial RIP y usa el nombre de clase "MyPlugin":

La clase pública MyPlugin extiende Javaplugin instancia privada de myplugin static myplugin; // Variable final efectiva que contiene la instancia de su complemento public MyPlugin () if (MyPlugin.instancia != NULL) // verificación innecesaria pero asegura que su complemento solo se inicialice una vez. Tirar un nuevo error ("complemento ya inicializado!"); Myplugin.instancia = esto; // El constructor de un complemento solo debe llamarse una vez public static static myplugin getInstance () // get es la instancia de retorno de su instancia de su complemento;  // tu otro código ... 

Una vez que tenga la instancia en su lugar, puede acceder a su clase principal (creada a través de Bukkit) usando el comando "getInstance ()". Aquí hay un ejemplo de eso usando la clase principal de "MyPlugin" del tutorial de RIP:

clase pública myotherClass public void dosomethminClass () myplugin.obtener Instancia().getLogger ().información ("Acabamos de usar MyPlugin");  

Paso 3 - Crea tu complemento.archivo YML

Un complemento.El archivo YML contiene información vital sobre su complemento, lo que significa que sirve como el archivo de configuración básica del complemento. Sin este archivo, Bukkit no tendrá la información que necesita para cargar su complemento a Minecraft, lo que lleva al complemento que no se carga y el juego probablemente se bloquee.

Este archivo debe contener los siguientes detalles:

  • Nombre - Este es el nombre que le ha dado a su complemento (yo.mi., "MyPlugin" de RIP Tutorial) y se mostrará en mensajes de registro y su lista de complementos.
  • Versión - Use este campo para denotar el historial de versiones del complemento, comenzando con 1.0.0 y subir a medida que alteras o editar el complemento.
  • Principal - Contiene el nombre de la clase principal del complemento, que extiende "Javaplugin", lo que permite que Bukkit ingrese al complemento. En el ejemplo del tutorial RIP, este nombre sería "paquete com.ejemplo.myplugin ", que puedes ver en el código de clase principal anterior.
  • Descripción - Una descripción básica de lo que hace su complemento.
  • Autor - Puede tener un autor único o autores múltiples, con este último denotado con soportes cuadrados y comas de la siguiente manera: [Author1, Author2, Author3].
  • Colaboradores - Usará esta sección para notar a cualquiera que contribuyó a su complemento, con el formato el mismo que para la sección "Autores".
  • Sitio web - Si tiene un sitio web para enchufar o desea vincular a las personas a la página del complemento o al repositorio de GitHub, puede ingresar la URL aquí.
  • API-Versión - Ingrese la versión de la API de Bukkit que usa aquí. Si no ingresa una versión de API, Minecraft asumirá que está cargando un complemento heredado. El complemento aún puede funcionar, aunque verá una advertencia sobre que sea una versión heredada impresa en su consola al cargar.

El siguiente es un ejemplo de un complemento.Archivo YML basado en las convenciones de nomenclatura utilizadas en el código de tutorial RIP utilizado en este artículo:

Nombre: MyPlugin Versión: 1.0.0 Principal: paquete com.ejemplo.Descripción de MyPlugin: un complemento de prueba para Minecraft Autor: RIP Tutorial Sitio web: https: // riptutorial.com/bukkit apiversion: 1.17 

¿Es Bukkit adecuado para acceder y usar NMS??

Con eso, ha creado una dependencia de Bukkit, construyó una clase principal para servir como puerta de Bukkit en el complemento y tiene un complemento.archivo YML que Bukkit puede usar para ver qué hace el complemento. Sin embargo, es posible que no desee hacerlo, ya que Bukkit está tan desactualizado que necesitará ejecutar una versión muy antigua de Minecraft para usarlo de manera efectiva. La mayoría ya se ha mudado a Sprigot, que refleja la mayor parte de lo que Bukkit hizo mientras ofrece un mejor rendimiento.

Si aún desea usar Bukkit para acceder a complementos, ¿por qué lo eligió antes de las API más modernas?? ¿Qué tipo de complementos utiliza para mejorar su experiencia de Minecraft?? Cuéntanos todo al respecto en la sección de comentarios a continuación.