6.1 KiB
Проверка с одним клиентом Prism
Проверка выполнена в существующем профиле 26.2 MCP Building: Minecraft 26.2, Fabric Loader 0.19.5, Fabric API 0.160.0+26.2 и Java 25.0.1 из Prism. Установлен собранный minecraft-builder-camera-0.1.0-SNAPSHOT.jar.
Пользователь выбрал автономный профиль для локального теста. В этой рабочей установке .runtime/server/server.properties содержит online-mode=false, server-ip=127.0.0.1, server-port=25575; слушающий адрес не расширялся. Это изменение тестовой конфигурации, обычная первоначальная подготовка dev-server.py по-прежнему включает проверку аккаунта.
В приватном конфиге плагина owner-uuid и camera-player-uuid совпадают. Игроку выданы права оператора на этом тестовом сервере; allow-local-automation остаётся выключенным, все вызовы выполнялись с областью владельца. Для фотографий режим временно менялся на spectator. После проверки игрок возвращён в creative на платформе перед башней; автоматического переключения внутри плагина пока нет.
Что проверено
- Prism загрузил Fabric-мод и подключил одного игрока к Paper. HTTP Worker сообщил подключение и правильный UUID.
- Через агентский маршрут Paper подготовлена и применена постройка из 575 блоков на ранее пустом участке. Создана именованная часть
One-client camera test towerс точной маской записи. - Первый снимок остановился с
view_changed, без возврата старого кадра. При повторе неподвижный клиент дал настоящий PNG 1280×720. Метаданные подтверждают заданные yaw/pitch, 20 стабильных тиков и три кадра; запрос занял 2.052 секунды после задержки оператора. - Успешно снят второй ракурс и дневной вариант первого.
- Отдельный MCP stdio-клиент запросил новый снимок и получил один
ImageContentс PNG. Текстовый блок содержал только метаданные, без base64. Проверены идентификатор, время снимка, сигнатура и размеры PNG. Изображение просмотрено: на нём тестовая башня, кадр без HUD.
Все изображения — исходные данные Minecraft framebuffer. Они не генерировались нейросетью и не ретушировались. serverRevisionVerified: false остаётся честным ограничением: клиентская готовность пока эвристическая. Первый ход модели через codex-acp этим тестом не проверялся.
Локальные результаты:
.runtime/camera-test/build.json— идентификатор плана/операции, число блоков, часть и область..runtime/camera-test/20260912T192813Z-2b100930.pngи соседний JSON — первый успешный ракурс..runtime/camera-test/20260912T192831Z-776d8f9e.png— второй ракурс..runtime/camera-test/20260912T192909Z-76b04afd.png— дневной кадр..runtime/camera-test/mcp-975cd742-d23f-4b8d-bcc8-dc6e151a8f5c.pngи соседний JSON — изображение, полученное через MCP.
Башня оставлена для осмотра около 12, 95, 12, на платформе x/z=4..20, y=94. Она пересекает область автоматических серверных тестов. Перед их повторным запуском нужен отдельный чистый тестовый мир или проверяемая отмена этой операции; тесты сами не удаляют занятую область.
Повторение снимка
В Prism у профиля настроен wrapper python3 /путь/к/minecraft-builder-mcp/scripts/camera-wrapper.py. Он читает приватный ключ камеры из Paper config и передаёт только процессу Java через окружение. Секрет не помещается в instance.cfg или командную строку. Исходный instance.cfg и options.txt сохранены в .runtime/prism-one-client-backup.
После подключения, из игры:
/gamemode spectator
/ai camera save test
Сохранять ракурс нужно внутри выбранной области. Из корня проекта:
python3 scripts/live-camera-test.py --delay 8
Вернуться в окно Minecraft, закрыть меню/чат и не двигаться до завершения. Скрипт сохраняет новый PNG и очищенные метаданные. Затем можно вручную выполнить /gamemode creative.
bridge/test/live-camera.mjs отдельно проверяет MCP ImageContent. Он требует доверенные переменные MCB_AGENT_TOKEN, MCB_PLAYER_ID, MCB_PROJECT_ID, JSON-позу MCB_CAPTURE_POSE и необязательный MCB_AFTER_OPERATION_ID. Снимок перемещает настроенного наблюдателя; это явный интеграционный тест, он не входит в обычный npm test.