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

// Карта для хранения состояний игроков
const grabpackSoundState = new Map();

system.runInterval(() => {
    for (const player of world.getAllPlayers()) {
        const inventory = player.getComponent("inventory");
        const container = inventory?.container;
        const item = container?.getItem(player.selectedSlotIndex);

        // Проверяем наш предмет
        const isHoldingGrabpack = item?.typeId === "mebesm:grabpack_green_active";

        // Получаем старое состояние или создаем новое
        const lastState = grabpackSoundState.get(player.id) || { holding: false, timer: 0 };

        if (isHoldingGrabpack) {
            // Если только что взял или таймер звука кончился
            if (!lastState.holding || lastState.timer <= 0) {
                // Запускаем звук (громкость 0.5, можно менять)
                player.runCommandAsync(`playsound electricity @a ~ ~ ~ 0.5 1`);

                // Установи таймер на длину твоего звука в тиках (20 тиков = 1 сек)
                // Если звук короткий, ставь 20-40. Если длинный — больше.
                lastState.timer = 40;
            } else {
                lastState.timer--;
            }

            // Запоминаем, что мы всё еще держим предмет
            grabpackSoundState.set(player.id, { holding: true, timer: lastState.timer });

        } else {
            // Если предмет убрали
            if (lastState.holding) {
                player.runCommandAsync(`stopsound @a electricity`);
                grabpackSoundState.set(player.id, { holding: false, timer: 0 });
            }
        }
    }
}, 1);