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

/* =====================================================
   🌙 SISTEMA DE FASES DA LUA
   ===================================================== */

export function getMoonPhase() {
    return world.getMoonPhase(); // Retorna 0-7
}

export function getDayTime() {
    return world.getTimeOfDay(); // 0 a 23999 ticks do dia
}

// Nomes das fases da lua com cores bonitas
const moonPhaseNames = [
    "§6Lua Cheia",          // 0
    "§cMinguante Gibosa",   // 1 ← Evento do Dragão aqui!
    "§7Quarto Minguante",   // 2
    "§8Minguante",          // 3
    "§0Lua Nova",           // 4
    "§aCrescente",          // 5
    "§bQuarto Crescente",   // 6
    "§eCrescente Gibosa"    // 7
];

// Converte ticks para horário CORRETO do Minecraft (tick 0 = 06:00)
function ticksToTime(ticks) {
    const gameHours = (ticks / 1000) % 24;           // 1000 ticks = 1 hora no jogo
    const hours = Math.floor(6 + gameHours) % 24;    // +6 porque o dia começa às 06:00
    const minutes = Math.floor((gameHours % 1) * 60);
    return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}`;
}

/* =====================================================
   🐉 EVENTO DRAGÃO DE SANGUE + ACTION BAR
   ===================================================== */

let lastEventDay = -1;   // Trava o evento por dia do mundo
let lastDayTime = 0;     // Para detectar o cruzamento da meia-noite

system.runInterval(() => {
    const dayTime = getDayTime();                    // Ticks do dia atual (0-23999)
    const moonPhase = getMoonPhase();                // Fase da lua (0-7)
    const absoluteTime = world.getAbsoluteTime();    // Ticks totais desde o início do mundo
    const currentDay = Math.floor(absoluteTime / 24000); // Dia real do mundo

    // Detecta quando o tempo cruza exatamente a meia-noite (17999 → 18000+)
    const crossedMidnight = lastDayTime < 18000 && dayTime >= 18000;

    // === DEBUG (aparece no content log) ===
    if (moonPhase === 1) {
        console.warn(`[LUA] Fase 1 (Minguante Gibosa) ativa! Ticks: ${dayTime} | Dia do mundo: ${currentDay}`);
    }
    if (crossedMidnight) {
        console.warn(`[LUA] Meia-noite cruzada! Fase atual: ${moonPhase}`);
    }

    // === EVENTO DRAGÃO DE SANGUE ===
    if (moonPhase === 1 && crossedMidnight && currentDay !== lastEventDay) {
        lastEventDay = currentDay;
        console.warn(`[LUA] ✅ EVENTO DISPARADO! Dragão de Sangue no dia ${currentDay}`);

        for (const player of world.getPlayers()) {
            try {
                player.runCommand("event entity @s dragao_sangue");
                player.runCommand("say §c🐉 Dragão de Sangue despertou!");
                console.warn(`[LUA] Comandos enviados para ${player.name}`);
            } catch (error) {
                console.error(`[LUA ERRO] Falha ao executar evento em ${player.name}: ${error.message}`);
            }
        }

        world.sendMessage("§c🌙 [Evento Global] O Dragão de Sangue surgiu sob a lua minguante!");
    }

    // Atualiza o último tick visto (essencial pro cruzamento)
    lastDayTime = dayTime;

    // === ACTION BAR ===
    const phaseName = moonPhaseNames[moonPhase] || "§fDesconhecida";
    const timeStr = ticksToTime(dayTime);

    const titleText = `${phaseName} §e⏰ §f${Math.floor(dayTime)} §7(${timeStr})`;

    for (const player of world.getPlayers()) {
        try {
            player.onScreenDisplay.setActionBar(titleText);
        } catch {}
    }

}, 5); // A cada 0.25 segundos → super preciso, sem perder o cruzamento e sem lag