import { world } from "@minecraft/server";
let isSubscribed = false;

export function initialize() {
    if (isSubscribed) return; // Si ya está suscrito, no hacer nada
    // Suscribirse al evento `playerSpawn` solo una vez por jugador
    world.afterEvents.playerSpawn.subscribe(({ player }) => {
        // Verificar si el jugador ya tiene la etiqueta "respawned" para asegurarse de que solo se ejecute una vez
        if (!player.hasTag("respawned")) {
            // Realizar las acciones necesarias solo si el jugador no ha sido marcado como "respawned"
            //  world.sendMessage("¡Bienvenido de nuevo, " + player.name + "!");
            player.runCommand(`tag @s remove dcursed`);
            player.runCommand(`tag @s remove invulnerable`);  // Eliminar la invulnerabilidad
            player.runCommand(`execute as @a at @s unless entity @s[hasitem=[{item=dungeon:totemofrecovery}]] run tag @s remove totemofrecovery`);  // Eliminar la invulnerabilidad
            // Agregar la etiqueta "respawned" para asegurarse de que no se ejecute nuevamente en este respawn
            player.addTag("respawned");

            player.runCommand(`scoreboard players reset @s stonetest`);  // Eliminar contador de petrificación
            player.runCommand(`inputpermission set @s camera enabled`);  // Habilitar la camara
            player.runCommand(`inputpermission set @s movement enabled`);  // Habilitar el movimiento
            player.runCommand(`give @s[tag=!guide_book] dungeon:vampiric_amulet 1 0 {"keep_on_death": {}}`);  //Recibir amuleto espectral
            player.runCommand(`give @s[tag=!guide_book] dungeon:guide_book 1 0 {"keep_on_death": {}}`);  //Recibir libro de viaje
            player.runCommand(`tag @s remove stone_player`);  // Eliminar la petrificación
            player.runCommand(`tag @s remove stone`);  // Eliminar la petrificación por gorgona
            player.runCommand(`tag @s remove poison_inmunity`);  // Eliminar la veneno
            player.runCommand(`tag @s remove wither_inmunity`);  // Eliminar la wither
            player.runCommand(`tag @s remove fatigueinmunity`);  // Eliminar la fatiga minera
            player.runCommand(`tag @s remove weakness_inmunity`);  // Eliminar la debilidad
            player.runCommand(`tag @s remove slowness_inmunity`);  // Eliminar la lentitud
            player.runCommand(`function no_light`);           
        }
    });
    isSubscribed = true;

}
