Files
minecraft-builder-mcp/docs/ONE_CLIENT_TEST.md
T

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 на платформе перед башней; автоматического переключения внутри плагина пока нет.

Что проверено

  1. Prism загрузил Fabric-мод и подключил одного игрока к Paper. HTTP Worker сообщил подключение и правильный UUID.
  2. Через агентский маршрут Paper подготовлена и применена постройка из 575 блоков на ранее пустом участке. Создана именованная часть One-client camera test tower с точной маской записи.
  3. Первый снимок остановился с view_changed, без возврата старого кадра. При повторе неподвижный клиент дал настоящий PNG 1280×720. Метаданные подтверждают заданные yaw/pitch, 20 стабильных тиков и три кадра; запрос занял 2.052 секунды после задержки оператора.
  4. Успешно снят второй ракурс и дневной вариант первого.
  5. Отдельный 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.