Baixe o datapack pronto e completo para já utilizar neste tutorial clicando aqui
Caso você não saiba como funciona uma função clique aqui e veja este tutorial
Vamos utilizar neste tutorial a detecção por clique direito do mouse, caso queira saber mais sobre como funciona essa detecção veja este tutorial clicando aqui
Antes de começar, pegue a varinha que vai invocar as bolas de fogo com o comando abaixo
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]
Crie o seguinte scoreboard para ser utilizado como cooldown de uso da varinha
scoreboard objectives add fireball_cooldown dummy
Execute este comando para atribuir uma pontuação zerada no scoreboard para evitar problemas
scoreboard players set @a fireball_cooldown 0
Agora chegou a parte de configurar o cooldown e executar os comandos da função
Coloque dois blocos de comando Repeat (separados) como Always Active (Sempre Ativo) e os seguintes 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
O primeiro comando vai ser executado em todos os jogadores (atribuindo +1 de pontuação de forma individual) a cada tick do Minecraft: 20 ticks = 1 segundo
No segundo comando vamos detectar se atingiu a pontuação 40 que neste caso significa um cooldown de 2 segundos
Após isso, a pontuação vai ser zerada e consequentemente o cooldown para usar a varinha também
Quando o clique for realizado, a função é chamada e detecta se o coldoown está zerado para carregar o ataque
Seguem os comandos da função de carregamento do 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
Seguem os comandos da função de detecção de posição para invocar a bola de fogo
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