import {
    world,
    EntityComponentTypes
} from '@minecraft/server';

// -----------------------------------------------------------
// 1. КОНСТАНТЫ
// -----------------------------------------------------------

const POPPY_ID = "mebesm:poppy";
const KISSY_MISSY_ID = "mebesm:kissy_missy"; // Сущность, которую нужно найти
const KISSY_POPPY_ID = "mebesm:kissy_missy_poppy"; // Сущность, которую нужно заспавнить
const POPPY_INTERACTION_RADIUS = 3; // Радиус поиска Kissy Missy


// -----------------------------------------------------------
// 2. ЛОГИКА ВЗАИМОДЕЙСТВИЯ (УДАР)
// -----------------------------------------------------------

/**
 * Обрабатывает событие удара по сущности.
 * Проверяет, был ли удар нанесен по POPPY игроком.
 */
function handlePoppyHit(event) {
    const { damagingEntity, hitEntity } = event;

    // 1. Проверяем, что удар нанесен игроком
    if (damagingEntity.typeId !== "minecraft:player") {
        return;
    }

    // 2. Проверяем, что удар нанесен по POPPY
    if (hitEntity.typeId !== POPPY_ID) {
        return;
    }

    // 3. Если все условия соблюдены, запускаем логику трансформации
    try {
        const dimension = hitEntity.dimension;
        const poppyLocation = hitEntity.location;

        // Ищем Kissy Missy в радиусе 3 блоков от POPPY
        const nearbyKissies = dimension.getEntities({
            type: KISSY_MISSY_ID,
            location: poppyLocation,
            maxDistance: POPPY_INTERACTION_RADIUS
        });

        // Если Kissy Missy найдена
        if (nearbyKissies.length > 0) {
            const targetKissy = nearbyKissies[0];

            // 4. Трансформация:
            // a. Спавним новую сущность на месте Kissy
            dimension.spawnEntity(KISSY_POPPY_ID, targetKissy.location);

            // b. Удаляем старые сущности
            targetKissy.remove(); // Удаляем mebesm:kissy_missy
            hitEntity.remove();   // Удаляем mebesm:poppy

            console.warn(`[Poppy Interaction] Успешная трансформация: ${KISSY_MISSY_ID} -> ${KISSY_POPPY_ID}`);
        }
    } catch (e) {
        console.error(`[ERROR] Ошибка логики Poppy: ${e}`);
    }
}


// -----------------------------------------------------------
// 3. ЗАПУСК ЛОГИКИ
// -----------------------------------------------------------

// Подписываемся на событие удара по сущности
world.afterEvents.entityHitEntity.subscribe(handlePoppyHit);

console.warn("✅ [POPPY INTERACTION] Скрипт взаимодействия Poppy запущен.");