Cómo usar NMS en Bukkit

Aunque Minecraft da la bienvenida a varios complementos (que puedes usar para modificar tu experiencia de juego), algunos elementos del juego están protegidos contra la manipulación de complementos. Net.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.

Cómo usar NMS en Bukkit

Con Bukkit, los jugadores pueden crear una capa de abstracción alrededor del código NMS. Esto les permite desarrollar complementos que interactúan con el código del servidor sin realizar cambios directos en el código base que es esencial para jugar. 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 NMS de Minecraft.

Antes de comenzar: lo que necesita saber sobre Bukkit

Bukkit es una API que te permite crear y usar complementos que alteran la forma en que experimentas el aspecto multijugador de Minecraft. Al menos, lo fue. La última versión de Bukkit salió en 2016 y desde entonces se suspendió para dar paso a una API diferente, llamada Spigot. Si bien funciona de manera similar a Bukkit, ofrece un mejor rendimiento del servidor.

Por lo tanto, usar 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:

1689225308 796 Como usar NMS en Bukkit

  • 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 de Bukkit para Minecraft

1689225308 454 Como usar NMS en Bukkit

Antes de que pueda comenzar a usar Bukkit para acceder al NMS de Minecraft, debe agregar la API como una dependencia, establecer una clase principal que le permita a Bukkit interactuar con el complemento que crea y proporcionarle a Bukkit la información que necesita para cargar su complemento en el juego. Cada paso requiere codificación, y los ejemplos que siguen provienen de Tutorial RIP.

Paso 1: agregue Bukkit como dependencia

En el pasado, podía agregar Bukkit como una dependencia en Minecraft descargando el archivo Bukkit.jar del repositorio de Bukkit y agregándolo a la ruta de clases de su proyecto. Esa opción ya no está disponible porque ya no se puede acceder al Repositorio.

Afortunadamente, existe un método alternativo que utiliza el archivo pom.xml de tu juego. Abra el archivo y agregue las siguientes líneas:



grifo-repo
https://hub.spigotmc.org/nexus/content/repositories/snapshots/





org.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 usa para extender "JavaPlugin" para que 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 para cargar y manipular el complemento. La mayoría le da a la clase principal de su complemento el mismo nombre que el propio complemento, lo que facilita la referencia 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.miplugin; //{$Dominio de nivel superior}. {$Dominio}. {$Nombre del complemento}; importar org.bukkit.plugin.java.JavaPlugin; public final class MyPlugin extends JavaPlugin { @Override public void onEnable() { //Llamado cuando el complemento está habilitado getLogger().info("¡onEnable ha sido invocado!"); } @Override public void onDisable() { // Llamado cuando el complemento está deshabilitado getLogger().info ("¡onDisable ha sido invocado!"); } }

Accediendo 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 hacer eso, primero 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 de RIP Tutorial y usa el nombre de clase "MyPlugin":

clase pública MyPlugin extiende JavaPlugin { instancia privada estática de MyPlugin; //Variable final efectiva que contiene la instancia de su complemento public MyPlugin(){ if(MyPlugin.instance!= null) { //Comprobación innecesaria pero asegura que su complemento solo se inicializa una vez. throw new Error("¡Complemento ya inicializado!"); } MiPlugin.instancia = esto; //El constructor de un complemento solo debe llamarse una vez } public static MyPlugin getInstance(){ //Obtenga la instancia de retorno de la 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 "MyPlugin" de RIP Tutorial:

public class MyOtherClass { public void doSomethingWithMainClass(){ MyPlugin.getInstance().getLogger().info("Acabamos de usar MyPlugin"); } }

Paso 3: cree su archivo plugin.yml

Un archivo plugin.yml contiene información vital sobre su complemento, lo que significa que sirve como archivo de configuración básica del complemento. Sin este archivo, Bukkit no tendrá la información que necesita para cargar su complemento en Minecraft, lo que provocará que el complemento no se cargue y es probable que el juego se bloquee.

Este archivo debe contener los siguientes detalles:

  • Nombre – Este es el nombre que le ha dado a su complemento (es decir, “MyPlugin” de RIP Tutorial) y se mostrará en los mensajes de registro y en su lista de complementos.
  • Versión – Use este campo para indicar el historial de versiones del complemento, comenzando con 1.0.0 y subiendo a medida que modifica o edita el complemento.
  • Principal – Contiene el nombre de la clase principal del complemento, que amplía "JavaPlugin", lo que permite que Bukkit ingrese al complemento. En el ejemplo del tutorial RIP, este nombre sería "paquete com.example.myplugin", que puede ver en el código de la clase principal anterior.
  • Descripción – Una descripción básica de lo que hace tu plugin.
  • Autor – Puede tener un solo autor o múltiples autores, siendo estos últimos indicados con corchetes y comas de la siguiente manera – [Author1, Author2, Author3].
  • Colaboradores – Usará esta sección para anotar a cualquiera que haya contribuido a su complemento, con el mismo formato que para la sección "Autores".
  • Sitio web – Si tiene un sitio web para conectar, o desea vincular a las personas a la página del complemento o al repositorio de GitHub, puede ingresar la URL aquí.
  • Versión API – Introduzca aquí la versión de la API de Bukkit que utiliza. Si no ingresa una versión de API, Minecraft asumirá que está cargando un complemento heredado. Es posible que el complemento aún funcione, aunque verá una advertencia de que se trata de una versión heredada impresa en su consola al cargar.

El siguiente es un ejemplo de un archivo plugin.yml basado en las convenciones de nomenclatura utilizadas en el código del Tutorial RIP utilizado en este artículo:

nombre: MyPlugin versión: 1.0.0 principal: paquete com.example.myplugin descripción: Un complemento de prueba para Minecraft autor: RIP Tutorial sitio web: https://riptutorial.com/bukkit api-version: 1.17

¿Bukkit es adecuado para acceder y usar NMS?

Con eso, creó una dependencia de Bukkit, creó una clase principal para que sirva como puerta de acceso de Bukkit al complemento y tiene un archivo plugin.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 pasó a Sprigot, que refleja la mayor parte de lo que hizo Bukkit al tiempo que ofrece un mejor rendimiento.

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