import { world, system } from "@minecraft/server";

const temposRecarga = new Map();

world.afterEvents.itemUse.subscribe((evento) => {
    const player = evento.source;
    const item = evento.itemStack;

    if (!item) return;

    if (item.typeId === "nz:jutsu_clone_de_madeira") {
        const agora = Date.now();
        const ultimoUso = temposRecarga.get(player.id) || 0;
        const tempoEspera = 500; // 0.5 segundo

        if (agora - ultimoUso < tempoEspera) {
            player.sendMessage("§cAguarde para usar novamente.");
            return;
        }

        temposRecarga.set(player.id, agora);

        // Animação
        player.runCommandAsync(`playanimation @s animation.jutsu_3`);

        // Sons sequenciais
        const sons = ["seal_a"];
        sons.forEach((som, i) => {
            system.runTimeout(() => {
                player.runCommandAsync(`playsound ${som} @s ~ ~ ~ 1 1`);
            }, i * 4); // 0.2s cada
        });

        // Após 0.5s → som + projétil
        system.runTimeout(() => {
            player.runCommandAsync(`playsound seal_d @s ~ ~ ~ 1 1`);

            // Lançamento do projétil
            const direcao = player.getViewDirection();
            const head = player.getHeadLocation();
            const dimensao = player.dimension;

            const spawnPos = {
                x: head.x + direcao.x * 2,
                y: head.y + direcao.y * 2,
                z: head.z + direcao.z * 2
            };

            const projetil1 = dimensao.spawnEntity("nz:jutsu_clone_de_madeira_bullet", spawnPos); 

            const forca = 3;
            const impulso = {
                x: direcao.x * forca,
                y: direcao.y * forca,
                z: direcao.z * forca
            };

            projetil1.applyImpulse(impulso);

            const comp1 = projetil1.getComponent("minecraft:projectile");
            if (comp1) comp1.owner = player;
        }, 10); // 10 ticks = 0.5s
    }
});