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.
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 Musical | Pitch |
---|---|
F♯/G♭- Fi/Se | 0.5 |
G - Sol | 0.529732 |
G♯/A♭- Si/Le | 0.561231 |
A - La | 0.594604 |
A♯/B♭- Li/Te | 0.629961 |
B - Ti | 0.667420 |
C - Do | 0.707107 |
C♯/D♭- Di/Ra | 0.749154 |
D - Re | 0.793701 |
D♯/E♭- Ri/Me | 0.840896 |
E - Mi | 0.890899 |
F - Fa | 0.943874 |
F♯/G♭- Fi/Se | 1.0 |
G - Sol | 1.059463 |
G♯/A♭- Si/Le | 1.122462 |
A - La | 1.189207 |
A♯/B♭- Li/Te | 1.259921 |
B - Ti | 1.334840 |
C - Do | 1.414214 |
C♯/D♭- Di/Ra | 1.498307 |
D - Re | 1.587401 |
D♯/E♭- Ri/Me | 1.681793 |
E - Mi | 1.781797 |
F - Fa | 1.887749 |
F♯/G♭- Fi/Se | 2.0 |
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).
¡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.
Si queremos quitarle todos los efectos al jugador, podríamos hacer un bucle y quitarle todos los efectos posibles que pueda tener.