Skip to content

Отладка страницы ​

У страницы внутри Minecraft нет ни адресной строки, ни кнопки перезагрузки, ни инспектора — поэтому когда она открывается пустой, смотреть вроде бы некуда. Эта страница — про то, куда.

Всё описанное здесь — клиентское: это настройка на машине, где открыта страница, а не то, что сервер включает своим игрокам.

Экран настроек ​

У WebGUI есть один собственный экран, и открывается он из игрового списка модов:

ЗагрузчикКак добраться
NeoForgeMods → WebGUI → Config
FabricMods (Mod Menu) → WebGUI → кнопка настроек

Своего списка модов у Fabric нет, поэтому там нужен Mod Menu. Без него ту же настройку можно прописать руками — см. файл конфига ниже.

Настройки сохраняются в момент изменения, в config/webgui/client.json.

Инструменты разработчика страниц ​

Включите — и то, что о странице знает сам Chromium, поедет в лог игры: ровно то, что показывает консоль DevTools в браузере.

[JCEF-Lifecycle/INFO]  (webgui) webgui devtools: watching http://127.0.0.1:25580/88cd…/index.html
[JCEF-Lifecycle/WARN]  (webgui) webgui devtools: console.warning: a warning from the page  at index.html:60
[JCEF-Lifecycle/ERROR] (webgui) webgui devtools: [network] Failed to load resource: the server
    responded with a status of 404 (Not Found)  http://127.0.0.1:25580/88cd…/missing-on-purpose.png
[JCEF-Lifecycle/ERROR] (webgui) webgui devtools: uncaught Error: deliberate failure  at inner index.html:44

Конкретно:

  • console.log, console.warn, console.error — с файлом и строкой, откуда вызвали, и с уровнем лога игры под уровень консоли.
  • Непойманные исключения — с сообщением и местом, где брошены, включая те, что происходят до того, как заработает ваша собственная обработка ошибок.
  • Упавшие запросы — с URL и статусом: 404 на файл с опечаткой, 500 от вашего API, запрос, который вообще не подключился.
  • Предупреждения браузера, которых иначе не видно: заблокированный mixed content, отказы CORS, устаревшие API.

Работает для любой страницы — и для той, что раздаёт сервер, и для вашей на своём домене.

Это для разработки, а не для игры

По умолчанию выключено, и игроку включать это незачем: болтливая страница раздувает лог, а для работы страницы это не нужно. Включайте, пока делаете страницу, и выключайте потом.

Пишется не больше 20 сообщений в секунду; дальше остаток секунды отбрасывается с одной строкой об этом — страница в цикле не забьёт диск.

Полный инспектор в вашем браузере ​

Порт remote debugging у Chromium даёт настоящие DevTools — дерево DOM, панель Network, Sources с брейкпойнтами — подключённые к странице внутри игры. Добавьте один игровой аргумент там, где ваш лаунчер позволяет их задавать:

--remote-debugging-port=9222

Затем откройте http://127.0.0.1:9222 в Chrome (или chrome://inspect → Configure → добавить 127.0.0.1:9222) и выберите страницу. Это тот же инспектор, что и на обычном сайте.

Мод включить это за вас не может: свитч читается при запуске Chromium из командной строки процесса, а она фиксируется до того, как запустится любой мод. Но экран настроек WebGUI показывает, включено ли это, и печатает адрес, если да.

Это отладочный порт, а не приватный

Всё, что может дотянуться до этого порта, может управлять браузером внутри вашей игры. Порт привязан к loopback, так что из сети — никто, но без нужды его лучше не держать включённым.

Куда именно добавлять аргумент

Это игровой аргумент, а не JVM: он идёт после главного класса, рядом с --username и прочими, а игра пропускает незнакомые ей аргументы дальше. Поле для игровых аргументов есть не в каждом лаунчере; в dev-окружении на Gradle это runClient --args="--remote-debugging-port=9222".

Что попадает в лог всегда, без всяких настроек ​

  • console.* со страницы. Форвардится и так, давно — настройка добавляет файл, строку и стек, а не само сообщение.

  • Файлы, которые встроенная страница запросила и не получила, вместе с тем, что делать:

    webgui: page asset /assets/app.js was requested without this session's prefix, so it
    cannot be served. A build that emits absolute paths like /assets/app.js does this -
    rebuild it with a relative base (Vite base: './', CRA homepage: '.').
    Requested by: http://127.0.0.1:25580/df55…/index.html

    Каждый уникальный путь сообщается один раз. См. Страницы, которые раздаёт сервер.

Где лежит лог ​

ЛаунчерФайл
Официальный лаунчер.minecraft/logs/latest.log
Prism / MultiMCвкладка Minecraft Log у инстанса или <инстанс>/minecraft/logs/latest.log
Modrinth App<профиль>/logs/latest.log

Все строки этой фичи начинаются с webgui, так что latest.log, отфильтрованный по этому слову, — обычно вся картина целиком.

Файл конфига ​

config/webgui/client.json, рядом с конфигом сервера:

json
{
  "devTools": false
}

Пишется при каждом изменении настройки, читается при запуске. Правка руками работает — это и есть путь на Fabric без Mod Menu, — но игра читает файл один раз, при старте, поэтому после правки нужен перезапуск.

Чем это не является ​

Настройка инструментов разработчика — это не окно DevTools: тут нет дерева DOM, которое можно потыкать, нет вкладки Sources, нет брейкпойнтов. Она читает протокол DevTools, которому не нужны ни окно, ни порт — потому и работает от одного переключателя, тогда как инспектору нужен аргумент запуска выше.

Переключатель — когда нужны ошибки страницы в логе без всякой настройки. Порт remote debugging — когда нужно по-настоящему инспектировать страницу.