Cualquier propietario de un servidor de Minecraft sabe que para que su servidor sea único, debe agregarle complementos o crear uno nuevo. Si no hubiera complementos, los servidores serían todos iguales. En esta guía, aprenderá los fundamentos de la creación de complementos de Minecraft Spigot y comprenderá cómo configurarlos correctamente en su servidor…
Resumen
requisitos previos
Antes de precipitarse, tenga en cuenta que crear un complemento requiere haber aprendido previamente los conceptos básicos del lenguaje de programación Java (y no JavaScript, como algunos podrían pensar). Por lo tanto, será muy difícil para usted crear un complemento con la API de Spigot sin saber siquiera un poco de Java. En esta guía no te vamos a enseñar Java, pero no te preocupes, hay cientos de miles de tutoriales disponibles en el vasto universo que es Internet. Sin embargo, si no tiene mucho tiempo libre y desea codificar un complemento de manera rápida y eficiente, hay una solución: Skript. Es cierto que no funcionará tan bien en los servidores MMO, pero si tiene un servidor pequeño, puede permitírselo. Aquí hay un tutorial disponible aquí .
Para escribir código, utilizaremos la última versión del IDE de Eclipse . Hay otros como IntelliJ Idea o NetBeans .
Primer paso: Crear el proyecto. Vaya a Archivo > Nuevo > Proyecto Java . Llamaré al proyecto «TestSpigot».
![Un nuevo proyecto para su plugin Spigot](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/newproje.png)
Puedes hacer lo mismo, o elegir otro nombre, no afectará nuestro código. Luego, en la parte de JRE , seleccionaremos nuestra versión de Java. Presta atención ! ¡El complemento no funcionará si elige una versión más antigua o más nueva de Java que su servidor! En Usar un entorno de ejecución JRE , seleccionaremos JavaSE-1.8 . Pulse Finalizar .
![Creando un nuevo proyecto con Eclipse IDE](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/jre.png)
Luego viene un pequeño cuadro de diálogo que explica que se debe crear un módulo. No le hagas caso y haz clic en » No crear » porque no te servirá de nada en un plugin de Spigot…
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/modl.png)
API de Spigot agregada
Muy bien, ahora que ha creado el proyecto, es hora de agregarle la API de Spigot, llamada aquí » Biblioteca «. Para ello, debes hacer clic derecho sobre el icono de tu proyecto y hacer clic en Propiedades . Se muestra una interfaz, vaya a la pestaña Java Build Path , luego vaya a la pestaña Libraries y haga clic en Module Path. ¡Después de eso, los botones en el lado derecho están disponibles! Ahora presiona » Agregar JARs Externos » y selecciona la API de Spigot que habrás descargado aquí (Cuidado, no tomes Bukkit , porque ahora está desactualizado, aunque es muy similar a Spigot).
En este tutorial, le sugiero que use la versión de su elección, desde la versión 1.8. El tutorial debe ser compatible con todas las versiones. En las capturas de pantalla usaremos la versión 1.8 . Normalmente, si tiene todo configurado correctamente, las imágenes a continuación le resultarán familiares. Nota: el spigot.jar que usará su servidor es el mismo spigot.jar que deberá colocar en Modulepath .
Conceptos básicos de la espiga
Al final ! Después de haber configurado todo, ahora podrá escribir su código y, por lo tanto, crear su complemento. Primero, haga clic derecho en el ícono de su proyecto. Vaya a Nuevo > Archivo y asigne al archivo el nombre plugin.yml. Este archivo es la base de todos nuestros complementos, es donde se almacenan los comandos y otros parámetros esenciales para el complemento. Esto es lo que necesitará para escribir en el archivo:
nombre: TestSpigot #nombre del complemento
main: #llegaremos a eso más tarde
autor: samcarf3 #Plugin autor
versión: 1.0 #Versión del complemento
dependencias: #de qué complemento dependerá, en nuestro caso no usaremos ningún otro complemento...
api-version: 1.8 #Versión en la que funcionará el complemento
comandos: #comandos
comer: #el comando comer, no pone tabulación, sino 2 espacios
permiso: eat.use #permiso
descripción: te permite comer alimentos fácilmente #la descripción que se muestra cuando lo haces /ayuda
Una vez hayas terminado y guardado este imprescindible archivo, tendrás que crear un paquete en src , para ello tendrás que hacer clic derecho sobre este paquete en cuestión y crear uno nuevo. Es recomendable nombrarlo con un orden preciso: country.author.plugin . Un ejemplo simple: fr.samcarf.testspigot ! Si es marroquí, su nombre es Hamid64 y su complemento se llama «ShopPlus», entonces deberá llamar a su paquete de esta manera: ma.hamid64.shopplus .
Ahora creará en este paquete una clase. Haga clic derecho en el paquete en cuestión y cree una nueva clase. Se recomienda llamarlo Principal. Ahora es cuando realmente puedes escribir tu código. Primero, su clase debe extender JavaPlugin. Su código inicial debería verse así:
paquete fr . samcarf _ piloto de prueba ;
importar organización . bukkit _ complemento _ Java . Complemento Java ;
clase pública Main extiende JavaPlugin {
}
Luego, una vez que haya completado eso, deberá decirle al complemento qué acciones debe hacer cuando se inicia y cuando se desactiva. Por eso vamos a usar los métodos onEnable y onDisable . Se debe asegurar que al encender el servidor se muestre un mensaje en la consola. ¡ Para enviar texto en la consola, simplemente use System.out.println ! Y luego, una vez que haya hecho todo eso, su código debería verse así:
xxxxxxxxxx
paquete fr . samcarf _ piloto de prueba ;
importar organización . bukkit _ complemento _ Java . Complemento Java ;
clase pública Main extiende JavaPlugin {
@Anular
public void onEnable () {
sistema _ fuera _ println ( "Prueba de llave habilitada" );
}
@Anular
vacío público en Deshabilitar () {
sistema _ fuera _ println ( "Oh, no, el servidor se está cerrando..." );
}
}
IMPORTANTE: ahora que (casi) ha terminado de escribir la clase principal, es hora de configurarla en el archivo plugin.yml de esta manera:
xxxxxxxxxx
nombre : // Nombre del complemento
mano : . // Nombre de la clase principal
version : // Versión de su complemento
autor : // Nombre del autor
api - version : // se necesita la versión de spigot
En nuestro caso, la clase principal se llama Main. Y nuestro paquete principal se llama fr.samcarf.testspigot . Entonces, es necesario escribir de esta manera:
xxxxxxxxxx
nombre : Prueba de grifo
mano : fr . samcarf _ piloto de prueba Mano
versión : 1.0 . 0
autor : samcraft3
api - versión : 1.8
¡Listo, acaba de terminar de crear un complemento muy simple en Spigot! Pero todavía tienes mucho que aprender…
Funciones básicas (Comandos, Items…)
Para crear tu primer comando, deberás haber escrito previamente el nombre, la descripción, el permiso y, si quieres, el uso correcto del comando en el archivo plugin.yml. En nuestro caso, llamamos a nuestro comando comer, así que cuando queramos ejecutarlo, tendremos que escribir /comer . Más adelante veremos cómo ejecutar un comando desde un mensaje de chat. Para ello, tienes que mostrarle al servidor que hay un comando y que quieres configurarlo. El código a utilizar es: (Recuerda ponerlo después de system.out.println)
xxxxxxxxxx
esto _ getCommand ( "comer" ). setExecutor ( nuevo CmdManger ());
Este código le explicará al complemento que toda la configuración del comando «Comer» estará en la clase » CmdManger «.
En la clase CmdManger, llega a un onCommand booleano que será generado automáticamente por la eficiente API de Spigot. Lo primero que seguramente te hará la vida más fácil es modificar los atributos y reemplazarlos por abreviaturas. Ejemplo: Jugador = pl; Comando = cmd…
Aquí está el código que debe usar y las abreviaturas recomendadas:
Ya, debemos verificar que la persona que ejecuta el comando sea un jugador, y que devuelva el valor True . Aquí está el código que necesitarás usar:
xxxxxxxxxx
@Anular
booleano público onCommand ( CommandSender sender , Command cmd , String label , String [] args ) {
if ( instancia del remitente del jugador ) {
}
devolver verdadero ;
}
}
Ahora, vamos a crear una variable que nos permitirá facilitar la pesada tarea de dar artículos a un jugador. Lo llamaremos p y será útil para la operación de otras variables/funciones como inventarios , etc. Normalmente su código debería verse así:
xxxxxxxxxx
clase pública CmdManger implementa CommandExecutor {
@Anular
booleano público onCommand ( CommandSender sender , Command cmd , String label , String [] args ) {
if ( instancia del remitente del jugador ) {
Jugador p = ( Jugador ) remitente ;
}
devolver verdadero ;
}
}
Ahora es el momento de recuperar el inventario del jugador y agregar la cantidad de alimentos que necesita. Para ello crearemos una nueva variable inv . Luego ordenaremos que agregue 32 bistecs cocidos llamados «Steaks-Frites» al reproductor.
Por lo tanto, tendremos que crear un nuevo ItemStack que nos permitirá crear nuestros filetes y configurar un ItemMeta que se utilizará para personalizar nuestros filetes. Primero deberá crear el bistec ItemStack , luego crear un metasteak variable que será recuperado por bistec
xxxxxxxxxx
clase pública CmdManger implementa CommandExecutor {
@Anular
booleano público onCommand ( CommandSender sender , Command cmd , String label , String [] args ) {
if ( instancia de remitente del jugador ) {
Jugador jugador = ( Jugador ) remitente ;
Inventario inv = p . obtenerInventario ();
Bistec ItemStack = new ItemStack ( Material.COOKED_BEEF , 32 ) ; _ //Artículo + Número de artículo
ItemMeta metasteak = bistec . getItemMeta (); // ¡Recupera el meta del artículo para personalizarlo!
metabistec _ setDisplayName ( "§cSteak§eFries" ); //§ es el signo de los códigos de color de Minecraft. Cada letra/número está asociado con un color.
bistec _ setItemMeta ( metasteak ); //Define de una vez por todas la meta de nuestros magníficos filetes y papas fritas.
jugador _ sendMessage ( "§a¡Aquí está su delicioso bistec con papas fritas!" );
inversión _ addItem ( filete ); //añadir los bistecs al inventario del jugador.
}
devolver verdadero ;
}
}
Los eventos
Los eventos son muy útiles y permiten al jugador, por ejemplo, realizar misiones , ganar puntos eliminando jugadores o recibir un cálido mensaje de bienvenida . Para poder empezar a crear y gestionar eventos, primero debemos registrar en Main la clase donde los vamos a gestionar. Para ello utilizaremos el método getServer().getPluginManager().registerEvents(new NomDeLaClasse(), this); ! ¡ Presta atención, registerEvents y no registerEvent ! Aquí está el código que necesitarás usar:
xxxxxxxxxx
paquete fr . samcarf _ piloto de prueba ;
importar organización . bukkit _ complemento _ Java . Complemento Java ;
clase pública Main extiende JavaPlugin {
@Anular
public void onEnable () {
sistema _ fuera _ println ( "Prueba de llave habilitada" );
esto _ getCommand ( "comer" ). setExecutor ( nuevo CmdManger ());
obtenerServidor (). getPluginManager (). registrarseEventos ( nuevos Eventos (), este );
}
@Anular
vacío público en Deshabilitar () {
sistema _ fuera _ println ( "Oh, no, el servidor se está cerrando..." );
}
}
Estupendo ! Ahora necesita crear la clase que le permitirá manejar eventos (en nuestro caso, Eventos). Nuestra clase ha implementado Events , que, como sugiere su nombre, hará que los eventos funcionen.
Primero debe mostrarle al servidor que es un evento, primero debe escribir @EventHandler (una anotación para eventos), luego debe escribir qué evento debe detectarse y qué debe hacer el complemento durante este evento. En nuestro caso, vamos a utilizar el evento onPlayerJoinEvent(PlayerJoinEvent <name>) , pero tenga en cuenta que hay cientos de ellos con la API de Spigot . Así es como se verá su código inicial:
xxxxxxxxxx
paquete fr . samcarf _ piloto de prueba ;
importar organización . bukkit _ evento _ controlador de eventos ;
importar organización . bukkit _ evento _ oyente ;
importar organización . bukkit _ evento _ jugador _ PlayerJoinEvent ;
Eventos de clase pública implementa Listener {
@Controlador de eventos
public void onPlayerJoin ( PlayerJoinEvent e ) { //¿Qué es el evento y cómo se llamará? En nuestro caso, se llamará e.
}
}
Ahora mostraremos un cálido mensaje de bienvenida al jugador. Para hacer esto, crearemos una variable de jugador que recuperará al jugador que realizó el evento con el método e.getPlayer() . Luego, debemos usar sendMessage() para enviar un mensaje privado al jugador, obtener el nombre del jugador y luego usar Bukkit.BroadcastMessage() para mostrar un mensaje público que dice que el jugador se ha unido al servidor.
xxxxxxxxxx
paquete fr . samcarf _ piloto de prueba ;
importar organización . bukkit _ bukit ;
importar organización . bukkit _ ChatColor ;
importar organización . bukkit _ entidad _ jugador ;
importar organización . bukkit _ evento _ controlador de eventos ;
importar organización . bukkit _ evento _ oyente ;
importar organización . bukkit _ evento _ jugador _ PlayerJoinEvent ;
Eventos de clase pública implementa Listener {
@Controlador de eventos
public void onPlayerJoin ( PlayerJoinEvent e ) { //¿Qué es el evento y cómo se llamará? En nuestro caso, se llamará e.
jugador jugador = e . obtenerJugador (); //Crear la variable p.
jugador _ sendMessage ( ChatColor.DARK_GREEN + " ¡ Bienvenido !" ); //Enviar un mensaje privado al jugador
Bukkit . broadcastMessage ( ChatColor . GREEN + player . getName () + ChatColor . DARK_RED + "¡se unió al servidor!" ); //Envía un mensaje público diciendo que el jugador no se ha unido al servidor
}
}
Exportar y finalizar
Eso es todo, acabas de terminar tu complemento de Minecraft. Ahora tienes que exportarlo. Si ha usado Eclipse antes, esto será muy fácil para usted. Pero si no está familiarizado con este IDE, aquí le mostramos cómo hacerlo:
- Vaya a Archivo > Exportar .
- Elija Archivo JAR , de lo contrario, el complemento no funcionará.
- Elija el proyecto para exportar, en nuestro caso TestSpigot .
- Haga clic en Examinar en Seleccione el destino de exportación.
- Coloque el complemento en la carpeta de complementos de su servidor .
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/export.png)
¡Ahora nuestro complemento se está ejecutando en el servidor! Aquí está el mensaje de activación de la consola:
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/cmd.png)
Aquí, nuestro cálido mensaje de bienvenida: (para superar el problema del apodo pegado al mensaje, deje un espacio antes del texto…)
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/join.png)
¡Y aquí están los famosos bistecs y papas fritas que habíamos creado!
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/steakfrites.png)
![](https://zonaminecraft.net/blog/wp-content/uploads/2022/05/steakfrites2.png)
¡Y ahí lo tienes! ¡Finalmente ha terminado de crear su primer complemento de Minecraft!