+0

Cómo usar proyectiles y crear un arma en Minecraft Spigot



Vamos a ver como usar proyectiles en Spigot, y como crear un arma en Minecraft.

¿Qué es un proyectil?

En Minecraft, un proyectil es una entidad que tiene una trayectoria basada en la dirección que un jugador ha lanzado o esa misma entidad se ha spawneado. Algunos ejemplos serían como las flechas de los arcos o los huevos...

Podemos aprovechar esta mecánica para hacer proyectiles personalizados a nuestro gusto e incluso crear armas, pero bueno, no nos precipitemos, vamos a empezar por lo básico.

Crear un proyectil

Crear un proyectil es muy sencillo, nada más necesitamos una instancia del objeto Player y la clase del proyectil que queremos lanzar. Por ejemplo, si queremos lanzar un huevo necesitaremos la clase Egg y un jugador.

Para lanzar el proyectil vamos a llamar al método launchProjectile desde el objeto Jugador y dentro pasarle la clase del proyectil que queremos lanzar.

player.launchProjectile(Egg.class);

¡Ya está! No tiene más misterio. Ahora bien, ¿cómo podemos crear un arma?

Crear un arma en Minecraft

Si extraemos un poco la idea de un arma en Minecraft, podríamos separarlo en un ítem que tenemos en el inventario y cuando interactuamos con él, lanza un proyectil. Y déjame decirte que sí, es así de fácil crear un arma.

Así que empezaremos denominando la azada de diamante como, no sé, pistola, por ejemplo. Y haremos que cuando un jugador interactúe con una azada de diamante, este lance un proyectil.

Para la interacción con el arma, podemos usar el evento PlayerInteractEvent, y para el proyectil el método que hemos aprendido más arriba. Para el proyectil usaremos una flecha y así le podremos asignar el daño que nosotros queramos.

@EventHandler  
public void onPlayerInteract(PlayerInteractEvent event) {  
    Player player = event.getPlayer();  
  
    if (event.hasItem() && event.getItem().getType() == Material.DIAMOND_HOE) {  
        Arrow arrow = player.launchProjectile(Arrow.class);  
          
        arrow.setDamage(4D);  
    }  
}

¡Así de simple 😄!