Строчные ссылки на файлы модов и своё ожидание готовности
Игра приводит путь к вложенным файлам анимаций в нижний регистр целиком, вместе с именем папки мода. На Linux такие файлы не находятся, и сервер сыплет в лог сотнями FileNotFoundException. Кнопка на вкладке «Моды» раскладывает рядом строчные симлинки: файлы модов не меняются, повторный запуск после докачки безопасен, а на файловых системах без различия регистра кнопка честно говорит, что делать нечего. Ожидание строки о готовности стало настройкой профиля со значением по умолчанию 30 минут вместо общих 15. Сборке на три сотни модов пятнадцати не хватает, и панель объявляла бы работающим сервер, который ещё никого не пустит. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
@@ -225,6 +225,11 @@ const STRINGS = {
|
||||
"mods.mapsTitle": "Карты (Map)",
|
||||
"mods.mapsPlaceholder": "Например: Muldraugh, KY",
|
||||
"mods.mapsHint": "Каждая карта с новой строки. Первой должна идти карта мода, последней — базовая.",
|
||||
"mods.caseTitle": "Регистр имён файлов модов",
|
||||
"mods.caseHint": "Игра приводит путь к файлам анимаций в нижний регистр целиком, включая имя папки мода. На Linux такие файлы не находятся, и сервер сыплет в лог ошибки AnimNode.Parse. Кнопка кладёт рядом строчные ссылки — файлы модов при этом не меняются. Запускайте после каждой докачки модов.",
|
||||
"mods.caseApply": "Разложить строчные ссылки",
|
||||
"mods.caseConfirm": "Разложить строчные ссылки на файлы модов?\n\nСуществующие файлы не изменятся. Сервер перечитает анимации при следующем запуске.",
|
||||
"mods.caseStarted": "Задача запущена — следите за вкладкой «Консоль»",
|
||||
"mods.summary": "Модов: {total}, включено: {enabled}, пакетов мастерской: {workshop}",
|
||||
"mods.local": "локальный мод",
|
||||
"mods.notFound": "файлы не найдены — сервер скачает их при запуске",
|
||||
@@ -277,6 +282,8 @@ const STRINGS = {
|
||||
"profiles.memoryMin": "Память JVM, начальная",
|
||||
"profiles.memoryMinPlaceholder": "не задана",
|
||||
"profiles.memoryMinHint": "Пусто — JVM берёт память по мере надобности. Если задать, она займёт этот объём сразу при старте и не сможет подняться, когда его нет.",
|
||||
"profiles.startupTimeout": "Ожидание готовности, минут",
|
||||
"profiles.startupTimeoutHint": "Сколько ждать строку «SERVER STARTED», прежде чем считать сервер работающим. Сборке на сотни модов нужны десятки минут. Пусто — значение по умолчанию.",
|
||||
"profiles.adminPassword": "Пароль админа игры",
|
||||
"profiles.adminPasswordSet": "пароль задан",
|
||||
"profiles.adminPasswordUnset": "не задан",
|
||||
@@ -568,6 +575,11 @@ const STRINGS = {
|
||||
"mods.mapsTitle": "Maps (Map)",
|
||||
"mods.mapsPlaceholder": "For example: Muldraugh, KY",
|
||||
"mods.mapsHint": "One map per line. The mod map goes first, the base map last.",
|
||||
"mods.caseTitle": "Mod file name case",
|
||||
"mods.caseHint": "The game lowercases the whole path to animation files, the mod folder name included. On Linux those files are not found and the server floods the log with AnimNode.Parse errors. The button puts lowercase symlinks next to them — mod files themselves are left alone. Run it after every mod download.",
|
||||
"mods.caseApply": "Create lowercase links",
|
||||
"mods.caseConfirm": "Create lowercase links to the mod files?\n\nExisting files are left untouched. The server re-reads animations on the next start.",
|
||||
"mods.caseStarted": "The task has started — watch the Console tab",
|
||||
"mods.summary": "Mods: {total}, enabled: {enabled}, Workshop items: {workshop}",
|
||||
"mods.local": "local mod",
|
||||
"mods.notFound": "files not found — the server will download them on startup",
|
||||
@@ -620,6 +632,8 @@ const STRINGS = {
|
||||
"profiles.memoryMin": "JVM memory, initial",
|
||||
"profiles.memoryMinPlaceholder": "not set",
|
||||
"profiles.memoryMinHint": "Empty — the JVM takes memory as it needs it. If set, it grabs that much at startup and fails to start when the machine has less.",
|
||||
"profiles.startupTimeout": "Readiness wait, minutes",
|
||||
"profiles.startupTimeoutHint": "How long to wait for the \"SERVER STARTED\" line before treating the server as running. A collection with hundreds of mods needs tens of minutes. Empty — the default.",
|
||||
"profiles.adminPassword": "Game admin password",
|
||||
"profiles.adminPasswordSet": "password set",
|
||||
"profiles.adminPasswordUnset": "not set",
|
||||
|
||||
Reference in New Issue
Block a user