import { world } from "@minecraft/server";
import "./carne_pudricion.js";
import "./armor_mcark.js";
import "./planes_system.js";
import "./steam_berries_mc_ark.js";
import "./narcoberry_mc_ark.js";
import "./meat_mc_ark.js";
import "./spear_mcark.js"; 
import "./ambient_sounds_mcark.js"; 


const itemID = "mc_ark:whip"; // ID del látigo
const special_attack = "mc_ark:whip_special"; // ID del bastón mágico
const mazomaderaID = "mc_ark:wooden_club"; // ID del mazomadera
const ironHelmetID = "minecraft:iron_helmet"; // ID del casco de hierro
 
// Objeto para almacenar el contador de golpes por jugador
const hitCounts = new Map(); 
   
world.afterEvents.itemUse.subscribe((use) => {
    try {
        let item = use.itemStack;
        let player = use.source;

        // Verificar si el ítem usado es el látigo
        if (item.typeId === itemID) {
            console.warn("Whip used"); // Mensaje de depuración

            // Conjunto de comandos adaptados
            player.runCommandAsync("tag @s[tag=!in_attack] add attack_solicitud");
            player.runCommandAsync("tag @e[family=adult,r=6] add attack_solicitud");
            player.runCommandAsync("tag @s[tag=trike_rider_possible_attack] add attack_solicitud");
            player.runCommandAsync("tag @e[family=tamed_adult_trike,r=6] add attack_solicitud");
            player.runCommandAsync("tag @s[tag=in_attack] remove in_attack");
            player.runCommandAsync("tag @s[tag=in_attack] remove in_attack_trike");

            console.warn("Commands executed"); // Mensaje de depuración
        }

        // Verificar si el ítem usado es el bastón mágico
        if (item.typeId === special_attack) {
            console.warn("Bastón mágico usado"); // Mensaje de depuración

            // Aplicar el efecto de velocidad al jugador
            player.runCommandAsync("tag @e[family=adult,r=4] add attack_solicitud_especial"); 
            player.runCommandAsync("execute as @s[tag=trike_rider_possible_attack] run tag @e[family=tamed_adult_trike,r=4] add attack_solicitud"); 
            console.warn("Efecto de velocidad aplicado"); // Mensaje de depuración
        } 

        // Verificar si el ítem usado es el mazomadera
        if (item.typeId === mazomaderaID) {
            console.warn("Mazomadera usado"); // Mensaje de depuración

            // Obtener la entidad golpeada (enemigo)
            const target = use.getEntitiesFromViewDirection()[0]; // Obtiene la primera entidad en la dirección de mirada del jugador

            if (target) {
                // Verificar si el jugador tiene un casco de hierro equipado
                const helmet = player.getComponent("equippable").getEquipment("head");
                if (helmet && helmet.typeId === ironHelmetID) {
                    // Aplicar efecto de veneno a la criatura golpeada
                    target.runCommandAsync("effect @s poison 5 1"); // Veneno nivel 1 durante 5 segundos
                    console.warn("Efecto de veneno aplicado a la criatura golpeada");
                } else {
                    console.warn("El jugador no tiene un casco de hierro equipado");
                }
            } else {
                console.warn("No se encontró ninguna entidad golpeada");
            }
        }

    } catch (error) {
        console.error("Error:", error);
    } 
});