Vamos a ver que son las entidades de Minecraft en Spigot.
Entidades en Minecraft
Una entidad en Minecraft es algo vivo, como un creeper o un jugador, o interactuable, como un armor stand. No tiene más misterio.
Desde Java estos son representados con un objecto, estos siendo una clase específica para cada tipo de entidad.
Jugador
Un jugador también es una entidad. En el ejemplo del evento de movimiento, el objeto event
contiene un método getPlayer
, el cual nos da la entidad del jugador (de la clase Player
). Vamos a jugar un poco con la entidad.
Si exploramos todos los métodos que tiene la entidad, podemos ver que se pueden hacer una barbaridad de cosas, como enviar un mensaje. Sí, eso es lo que haremos, vamos a enviarle un mensaje al jugador conforme no se puede mover. Para ello usaremos el método sendMessage
.
Y ya estaría. Si probamos esto, veremos que nos saldrá el mensaje cada vez que nos movamos.
Living Entities (Entidades con vida)
Luego tenemos las LivingEntity
, que son entidades que simplemente tienen vida, por ejemplo, un Zombie
, o un Creeper
. Estos tienen vida, se pueden mover, pueden morir, pueden atacar, etc.
Para hacer aparecer un Zombie
cada vez que nos agachemos en el juego, usaremos el evento PlayerToggleSneakEvent
.
Uff, mucho código nuevo. Más adelante veremos cada clase y objeto importante de Spigot, de momento asumiremos cosas.
Primero de todo conseguimos el World
, que contiene un método para spawnear entidades, y lo llamamos con dos argumentos: el primero es el Location
, en este caso es donde se encuentra el jugador, y luego el tipo de entidad a partir del enum
EntityType
.
Si lo probamos dentro del juego, cuando shifteamos aparecerá un Zombie 🎉.
Entidades Básicas
Para terminar, tenemos las entidades básicas. Estas tienen nada más lo básico para existir. Significa que no tienen vida, no tienen consciencia propia, etc. Un ejemplo muy claro son los ArmorStand
. Vamos a ver como modificar uno.
Aprovechando el evento de antes, haremos que aparezca un armor stand pequeño, lo que implica que tendremos que modificarlo desde el código. El método spawnEntity
devuelve la entidad en sí. Vamos a aprovecharlo para hacer el ArmorStand
pequeño con el método setSmall(true)
.
Si probamos el código dentro del juego, vemos que aparece un Armor Stand pequeño 😀