+0

Reproducir sonidos y aplicar efectos o pociones



Vamos a ver como reproducir sonidos y gestionar pociones en Spigot Minecraft.

Sonidos en Spigot

En Spigot tenemos un enum donde está toda la información sobre todos los sonidos de Minecraft. Este enum se llama Sound.

En Spigot hay dos formas de reproducir un sonido:

  • Global: El sonido reproducido es escuchado por todo el servidor, siempre que los jugadores se encuentren dentro del rango del sonido
  • Por jugador: El sonido es enviado únicamente a un jugador, y solo él podrá escucharlo.

Hay muchas maneras de enviar sonidos desde Spigot. Se puede enviar un sonido con el método playSound desde un objeto World, hasta una entidad.

// Este enviaría un sonido global, que se reproducirá desde location con 10 de volumen.
world.playSound(location, Sound.ENTITY_GENERIC_EXPLODE, 10f, 1f);

En el sonido tenemos diferentes parámetros, como la categoría (se encuentran en el enum SoundCategory), el volumen (no indica el volumen, sino la distancia a la que el sonido se escuchará) y el pitch o tono del sonido (si se reproducirá más rápido y agudo, o más lento y grave).

Notas musicales con sonidos

En Spigot podemos reproducir canciones con simples sonidos de Minecraft. Los más usados con los del bloque de notas, ya que contiene 16 instrumentos.

Además, cada instrumento puede tener un pitch, el cual modificará la tonalidad del sonido, para acabar produciendo canciones.

Te dejo una tabla con los valores del pitch respecto a la nota musical:

Nota MusicalPitch
F♯/G♭- Fi/Se0.5
G - Sol0.529732
G♯/A♭- Si/Le0.561231
A - La0.594604
A♯/B♭- Li/Te0.629961
B - Ti0.667420
C - Do0.707107
C♯/D♭- Di/Ra0.749154
D - Re0.793701
D♯/E♭- Ri/Me0.840896
E - Mi0.890899
F - Fa0.943874
F♯/G♭- Fi/Se1.0
G - Sol1.059463
G♯/A♭- Si/Le1.122462
A - La1.189207
A♯/B♭- Li/Te1.259921
B - Ti1.334840
C - Do1.414214
C♯/D♭- Di/Ra1.498307
D - Re1.587401
D♯/E♭- Ri/Me1.681793
E - Mi1.781797
F - Fa1.887749
F♯/G♭- Fi/Se2.0
Teclado con las notas musicales presentes en Minecraft

Teclado con las notas musicales presentes en Minecraft

Efectos y Pociones

En Spigot podemos añadir o quitar pociones a los jugadores, con el nivel que queramos, el tiempo e incluso ocultar al jugador que tiene un efecto. Vamos a ver como hacer todo esto.

Para empezar necesitaremos un objeto de Player (jugador) y si nos fijamos en la documentación, veremos que existe el método addPotionEffect y removePotionEffect.

Añadir efecto de poción

Para añadir un efecto de poción a un jugador necesitaremos crear una instancia del objeto PotionEffect, el cual guarda la información de la poción que le queremos dar al jugador. Aquí podemos especificar la potencia, la duración e incluso ocultar el efecto (todo ello en el constructor).

player.addPotionEffect(new PotionEffect(PotionEffectType.REGENERATION, 10, 10, false, false, false));

¡Truco! Si queremos que la poción dure muchísimo (casi infinito), podemos usar Integer.MAX_VALUE en el argumento de tiempo.

¡Ojo! El argumento de amplifier o potencia empieza desde el 0 hasta el 254, el 0 siendo el efecto a nivel 1, y el 254 siendo la máxima potencia del efecto.

Quitar efectos al jugador

Para quitar efectos de poción al jugador usamos el método removePotionEffect del objeto jugador, seguido del tipo de efecto que le queremos quitar.

player.removePotionEffect(PotionEffectType.REGENERATION);

Si queremos quitarle todos los efectos al jugador, podríamos hacer un bucle y quitarle todos los efectos posibles que pueda tener.

for (PotionEffect effect : player.getActivePotionEffects()) {  
    player.removePotionEffect(effect.getType());  
}