Vamos a ver como crear comandos en Minecraft con Spigot.
¿Qué es un comando?
Un comando es una forma de interacción con el servidor mediante el mismo chat del juego. Estos empiezan con una barra (/
) seguido del nombre, y opcionalmente pueden contener argumentos, que es información extra que le podemos pasar al servidor.
Además, existen los permisos, que hacen que podamos gestionar que jugadores pueden ejecutar ciertos comandos.
Creación de un comando
Bueno, vamos a empezar por la creación de un comando en nuestro plugin de Spigot. Para ello, empezaremos creando una clase llamada EjemploCommand
, y ha de implementar CommandExecutor
.
Vemos que la implementación de esa interface nos crea el método onCommand
, el cual se ejecutará cuando se ejecute nuestro comando. Si devolvemos false
, significa que el comando ha fallado, en cambio, si devolvemos true
, significa que el comando se ha ejecutado correctamente.
Vamos a analizar los argumentos de este método:
-
CommandSender sender: Este objeto representa quien ha ejecutado el comando. Puede ser la consola, un bloque de comandos, o un jugador.
-
Command command: Representa el comando en sí. Contiene información sobre este.
-
String label: el nombre del comando que se ha usado. Nuestro comando podrá tener aliases.
-
String[] args: Los argumentos que se han mandado al servidor.
Si no tienes los mismos nombres de los argumentos que tengo yo, recomiendo que los cambies a los que he proporcionado yo aquí.
Sabiendo esta información, haremos un comando que salude a la persona que ha enviado el comando. Vamos a usar el método sendMessage
de CommandSender.
¡Ya tendríamos nuestro primer comando! Ahora solo hace falta registrarlo. Para ello, necesitamos registrarlo en nuestro plugin.yml
, y cuando el plugin se inicia en el método onEnable
de nuestra clase principal.
Para registrarlo en el plugin.yml
, escribiremos lo siguiente:
He registrado el comando ejemplo
, con el alias hola
, y la descripción Comando para saludar
. Aquí hay más información sobre el plugin.yml
.
Por último lo registraremos en nuestra clase principal.
Ya tenemos el comando listo 🎉. Si iniciamos el juego, veremos que al ejecutar /ejemplo
o /hola
, correrá el comando que hemos creado.
Argumentos en el comando
Ahora veremos como leer los argumentos que se envían a un comando. Haremos que nuestro comando que saluda te salude por el nombre. Para ello, aceptaremos el nombre, y si el jugador no pone un nombre, cogeremos el nombre del jugador.
Volviendo a nuestro método onCommand
, vemos que tenemos un argumento que contiene los argumentos (String[] args
). Es una Array con strings, que representan los argumentos. Si realizamos las comprobaciones necesarias para ejecutar todo lo que hemos planeado, tendría que quedar un código así:
Recomiendo que analices detenidamente el código para que intentes entender qué está ocurriendo.
Ahora, para darle un toque más estético, actualizaremos el plugin.yml
para añadir como usar el comando:
Si nos fijamos he puesto el argumento entre paréntesis cuadrados (
[]
). Esto es para indicar que ese argumento es opcional. Si queremos indicar que es obligatorio, usaremos los símbolos de mayor y menor (<>
).
¡Ya estaría! Si lo probamos dentro del juego, veremos como funciona todo correctamente.
Permisos en los comandos
En Minecraft tenemos los permisos, que nos permiten determinar si un usuario puede realizar una acción. De momento no entraremos mucho en detalle, asumiremos que si comprobamos si un jugador tiene un permiso, no podrá correr el comando si no es administrador.
Para comprobar si un jugador tiene un permiso, lo podemos hacer desde el plugin.yml
, o desde el código: