Строчные ссылки на файлы модов и своё ожидание готовности
CI / test (push) Successful in 24s
Release / release (push) Successful in 28s

Игра приводит путь к вложенным файлам анимаций в нижний регистр целиком,
вместе с именем папки мода. На Linux такие файлы не находятся, и сервер
сыплет в лог сотнями FileNotFoundException. Кнопка на вкладке «Моды»
раскладывает рядом строчные симлинки: файлы модов не меняются, повторный
запуск после докачки безопасен, а на файловых системах без различия
регистра кнопка честно говорит, что делать нечего.

Ожидание строки о готовности стало настройкой профиля со значением по
умолчанию 30 минут вместо общих 15. Сборке на три сотни модов пятнадцати
не хватает, и панель объявляла бы работающим сервер, который ещё никого
не пустит.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-09-07 17:30:40 +03:00
co-authored by Claude Opus 5
parent e0c33706b3
commit 5d9bedaad2
11 changed files with 511 additions and 38 deletions
+42 -1
View File
@@ -18,7 +18,7 @@
сохраняется), перезапуск, автоподъём после падения, автозапуск вместе с
менеджером. «Работает» панель показывает не раньше, чем сервер напечатает
`*** SERVER STARTED ****`: пока идёт загрузка мира, состояние остаётся
«Запускается».
«Запускается». Сколько ждать эту строку — настройка профиля.
- **Живая консоль** — вывод сервера в реальном времени и отправка любых команд
(`players`, `save`, `servermsg`, `kickuser`, …).
- **Мониторинг** — состояние, аптайм, CPU и память процесса сервера, свободные
@@ -28,6 +28,8 @@
самого конфига, поиск идёт и по названию, и по описанию.
- **Мод-менеджер** — моды списком с галочками и перетаскиванием порядка
загрузки, добавление по ссылке и разворачивание коллекций Steam целиком.
Отдельная кнопка лечит ошибки анимаций у модов с заглавными буквами в
именах файлов.
- **Импорт пресетов сборок** — ZIP-пакет сборки загружается прямо в панель:
конфиг, песочница и точки появления попадают в новый или существующий
профиль, свои порты и пароли при этом сохраняются. Отдельно принимаются
@@ -286,6 +288,32 @@ Mod ID, который нужен серверу, лежит внутри сам
Один пакет мастерской может содержать несколько модов — в списке они идут
отдельными строками, и включать их можно по отдельности.
### Регистр имён файлов модов
Project Zomboid приводит путь к вложенным файлам анимаций в нижний регистр
целиком — вместе с именем папки мода. На Windows это незаметно, а на Linux
сервер такие файлы не находит и сыплет в лог сотнями исключений:
```
AnimNode.Parse threw an exception reading file: .../GunsOfMarz/.../UnloadShotgun_HB.xml
FileNotFoundException: .../gunsofmarz/.../loadshotgun_hb.xml (No such file or directory)
```
Читаемый файл — с правильным регистром, а ссылка внутри него резолвится
строчными буквами. Переименование не помогает: в нижний регистр уходит весь
путь, включая папку мода, а ссылки внутри модов написаны вразнобой.
Кнопка **«Разложить строчные ссылки»** на вкладке «Моды» кладёт рядом с каждым
именем, где есть заглавные буквы, симлинк на него же строчными. Файлы модов не
меняются: операция только добавляет имена и никогда не переписывает
существующие. Повторный запуск безопасен и дёшев — уже готовые ссылки
пропускаются, поэтому кнопку удобно нажимать после каждой докачки модов.
Останавливать сервер не нужно, но анимации читаются один раз при загрузке мира
— чтобы ссылки подхватились, сервер надо перезапустить. На файловых системах,
которые сами не различают регистр (Windows, macOS), кнопка сообщает, что делать
нечего.
## Редактор конфигов
Вкладки «Конфиг сервера» и «Песочница» показывают параметры не сплошным
@@ -345,6 +373,19 @@ Mod ID, который нужен серверу, лежит внутри сам
`server_name`, `admin_password` и `java_memory` превращаются в первый профиль
при первом запуске.
### Ожидание готовности
Панель считает сервер работающим, увидев в его выводе строку
`*** SERVER STARTED ****`. Пока строки нет, состояние — «Запускается», и это
честно: до неё сервер не принимает подключения.
Строка может и не прийти — своя сборка или своя версия сервера назовёт её
иначе. На этот случай у профиля есть **ожидание готовности**: по его истечении
панель считает сервер запущенным и пишет об этом в консоль. По умолчанию — 30
минут; ванильный сервер поднимается за минуту, а сборке на три сотни модов
нужно больше десяти. Если ваша сборка грузится дольше, поднимите значение,
иначе панель скажет «Работает» серверу, который ещё никого не пустит.
## Обновление
Панель показывает свою версию и следит за релизами в репозитории: вкладка