Отладка страницы
У страницы внутри Minecraft нет ни адресной строки, ни кнопки перезагрузки, ни инспектора — поэтому когда она открывается пустой, смотреть вроде бы некуда. Эта страница — про то, куда.
Всё описанное здесь — клиентское: это настройка на машине, где открыта страница, а не то, что сервер включает своим игрокам.
Экран настроек
У WebGUI есть один собственный экран, и открывается он из игрового списка модов:
| Загрузчик | Как добраться |
|---|---|
| NeoForge | Mods → WebGUI → Config |
| Fabric | Mods (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, рядом с конфигом сервера:
{
"devTools": false
}Пишется при каждом изменении настройки, читается при запуске. Правка руками работает — это и есть путь на Fabric без Mod Menu, — но игра читает файл один раз, при старте, поэтому после правки нужен перезапуск.
Чем это не является
Настройка инструментов разработчика — это не окно DevTools: тут нет дерева DOM, которое можно потыкать, нет вкладки Sources, нет брейкпойнтов. Она читает протокол DevTools, которому не нужны ни окно, ни порт — потому и работает от одного переключателя, тогда как инспектору нужен аргумент запуска выше.
Переключатель — когда нужны ошибки страницы в логе без всякой настройки. Порт remote debugging — когда нужно по-настоящему инспектировать страницу.