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

export function initialize() {
    if (isSubscribed) return; // Si ya estamos suscritos, 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 invulnerable`);  // Eliminar la invulnerabilidad
            player.runCommand(`execute as @a at @s unless entity @s[hasitem=[{item=dungeon:totemofrecovery,location=slot.inventory,slot=21},{item=dungeon:totemofrecovery,location=slot.inventory,slot=22},{item=dungeon:totemofrecovery,location=slot.inventory,slot=23},{item=dungeon:totemofrecovery,location=slot.inventory,slot=24},{item=dungeon:totemofrecovery,location=slot.inventory,slot=25},{item=dungeon:totemofrecovery,location=slot.inventory,slot=26}]] 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: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


            // Nota: Si quieres que el jugador tenga un estado "respawned" solo en ese respawn, también podrías usar `player.removeTag("respawned")` cuando muera, pero eso es opcional dependiendo de cómo manejes el ciclo de vida de los jugadores.
        }
    });
    isSubscribed = true;

}
