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

// Función para invocar una TNT en la ubicación exacta de un jugador
function spawnTNTOnPlayer(player, timeOfDay) {
    const pos = player.location;
    const dimension = player.dimension;
    dimension.spawnEntity("minecraft:tnt", pos);
    console.log(`TNT generada en ${player.name} (${timeOfDay})`);
}

// Sistema que se ejecuta a intervalos regulares (20 ticks = 1 segundo)
system.runInterval(() => {
    try {
        // Obtener la hora actual del mundo (0-23999 ticks)
        const currentTime = world.getAbsoluteTime() % 24000;

        // Rangos de tiempo (aproximados)
        // Amanecer: El sol comienza a salir alrededor de los 0 ticks. 20 segundos antes serían unos 400 ticks.
        const dawnStart = 0; // Aproximadamente 20 segundos antes del amanecer visible
        const dawnEnd = 80;

        // Mediodía: Alrededor de 6000 ticks
        const noonStart = 5900;
        const noonEnd = 6100;

        // Atardecer: El sol comienza a ocultarse alrededor de los 12000 ticks.
        // Ajustaremos el rango para capturar el inicio del ocultamiento.
        const duskStart = 12500; // Ajustado para ser antes del anochecer completo
        const duskEnd = 13000;
 
        // Noche (aproximadamente)
        const nightStart = 13500;
        const nightEnd = 14000;

        // Obtener todos los jugadores en el mundo
        const players = world.getAllPlayers();  

        // Verificar si está amaneciendo (un poco antes)
        if (currentTime >= dawnStart && currentTime <= dawnEnd) {
            if (players.length > 0) {
                for (const player of players) {
            player.runCommandAsync("execute as @s[tag=!amanecer_sound] run playsound sound.morning_sound_mcark @s");
            player.runCommandAsync("tag @s add amanecer_sound");

                }
            } else {
                console.log("Amanecer - No hay jugadores."); 
            }
        }
        else if (currentTime >= noonStart && currentTime <= noonEnd) {
            if (players.length > 0) {
                for (const player of players) {
            player.runCommandAsync("execute as @s[tag=!mediodia_sound] run playsound sound.noon_sound_mcark @s");
            player.runCommandAsync("tag @s add mediodia_sound"); 

                }
            } else {
                console.log("Mediodía - No hay jugadores.");
            }
        }  
        // Verificar si es mediodía
        // Verificar si el sol se está ocultando (atardecer - corregido)
        else if (currentTime >= duskStart && currentTime <= duskEnd) {
            if (players.length > 0) {
                for (const player of players) {
            player.runCommandAsync("execute as @s[tag=!atardecer_sound] run playsound sound.night_sound_mcark @s");
            player.runCommandAsync("tag @s add atardecer_sound");

                } 
            } else {
                console.log("Atardecer - No hay jugadores.");
            }
        }
        // Verificar si es noche (aproximadamente)
        else if (currentTime >= nightStart && currentTime <= nightEnd) {
            if (players.length > 0) {
                for (const player of players) {
            player.runCommandAsync("tag @s remove mediodia_sound");
            player.runCommandAsync("tag @s remove atardecer_sound");
            player.runCommandAsync("tag @s remove amanecer_sound");

                }
            } else {
                console.log("Noche - No hay jugadores.");
            }
        }

    } catch (error) {
        console.error("Error en el sistema de tiempo:", error);
    }
}, 20);
