Descarga el datapack listo y completo para usar en este tutorial haciendo clic aquí
Si no sabes cómo funciona una función haz clic aquí y mira este tutorial
En este tutorial utilizaremos la detección por clic derecho del mouse. Si quieres saber más sobre cómo funciona esta detección mira este tutorial haciendo clic aquí
Antes de comenzar, consigue la varita que invocará las bolas de fuego con el comando de abajo
give @p minecraft:stick[food={nutrition:0,saturation:0.0,can_always_eat:true},minecraft:consumable={consume_seconds:1000000},minecraft:custom_data={Fireball_Wand:1b},minecraft:custom_name="Fireball Wand",minecraft:enchantment_glint_override=true]
Crea el siguiente scoreboard para usarlo como cooldown de uso de la varita
scoreboard objectives add fireball_cooldown dummy
Ejecuta este comando para asignar una puntuación en 0 en el scoreboard y evitar problemas
scoreboard players set @a fireball_cooldown 0
Ahora llegó la parte de configurar el cooldown y ejecutar los comandos de la función
Coloca dos bloques de comando Repeat (separados) como Always Active (Siempre Activo) y los siguientes comandos
execute as @a if score @s fireball_cooldown matches 1.. run scoreboard players add @s fireball_cooldown 1
execute as @a if score @s fireball_cooldown matches 40.. run scoreboard players set @s fireball_cooldown 0
El primer comando se ejecutará en todos los jugadores (sumando +1 de puntuación de forma individual) en cada tick de Minecraft: 20 ticks = 1 segundo
En el segundo comando vamos a detectar si alcanzó la puntuación 40, que en este caso significa un cooldown de 2 segundos
Después de eso, la puntuación será reiniciada y, en consecuencia, el cooldown para usar la varita también
Cuando se realice el clic, la función es llamada y detecta si el cooldown está en 0 para ejecutar el ataque
A continuación están los comandos de la función de carga del ataque
advancement revoke @s from comandos:click_fireball_attack
execute if score @s fireball_cooldown matches 0 run execute anchored eyes positioned ^ ^ ^ summon fireball run function comandos:fireball_attack_position
execute if score @s fireball_cooldown matches 0 run scoreboard players set @s fireball_cooldown 1
A continuación están los comandos de la función de detección de posición para invocar la bola de fuego
execute positioned 0.0 0.0 0.0 run tp @s ^ ^ ^0.1
data modify storage test Motion set from entity @s Pos
tp @s ~ ~ ~
data modify entity @s Motion set from storage test Motion