Остановите сервер, чтобы он не крутился в цикле падений. Откройте самый свежий отчёт о сбое и найдите первую строку, где названо что-то кроме самой игры. Отсортируйте папку mods по времени изменения и посмотрите на верх списка. Верните на место предыдущую версию этого файла. Запустите, убедитесь, что всё работает, и только потом решайте, нужно ли вам было это обновление вообще. Вот и вся процедура: она занимает около десяти минут и работает потому, что картина всегда одна и та же - вы ничего не меняли, а сервер перестал работать, а значит, что-то изменилось, и задача в том, чтобы найти что, а не переустанавливать всё подряд.
Дальше - как выполнить каждый из этих шагов, когда ответ неочевиден, а также то, чего никто не делает, пока это не обойдётся в потерянный вечер: как устроить всё так, чтобы следующее обновление не могло сделать этого снова.
Десять минут до рабочего сервера#
По порядку, и первый шаг не пропускайте.
- Остановите сервер как следует. Падающий сервер перезапускается, падает, снова перезапускается, и с каждым кругом уходит ещё немного улик. Это может вызвать и неприятности: наблюдатель за сбоями RE:NODE каждые две минуты проверяет, не уменьшилось ли время работы, и три перезапуска за час поднимают предупреждение и автоматически открывают тикет, а шесть за час ведут к приостановке. Перезапуски, которые вы запросили сами, не считаются, так что остановить сервер самостоятельно - и правильный диагностический ход, и способ не попасть в этот цикл. Другие причины того же симптома разобраны в статье почему ваш игровой сервер постоянно перезапускается.
- Заберите улики, пока они не ротировались. Скачайте самый новый файл из
crash-reports/, либоBepInEx/LogOutput.log, либо вывод консоли от последнего чистого запуска до сбоя. Сохраните его, даже когда проблему исправите. - Читайте отчёт о сбое с начала, а не с конца. Первая строка, где назван не игровой код и не загрузчик, - ваш подозреваемый.
- Проверьте время изменения.
ls -ltв папке mods или plugins, либо сортировка по дате в файловом менеджере. Самый новый файл почти всегда и есть виновник. - Верните предыдущую версию. Держите старый jar: для этого его и держат. Если не сохранили, на странице релизов самого мода лежат все прежние версии.
- Запустите и прочитайте баннер запуска. Убедитесь, что загрузилась именно та версия, которую вы вернули, и что число модов совпадает со вчерашним.
- О самом обновлении решайте отдельно, завтра, на копии. Сейчас это не срочно.
Как читать отчёт о сбое#
Minecraft пишет отчёты о сбоях в crash-reports/crash-2026-09-21_18.30.11-server.txt, а также в консоль. Структура у них постоянная, и важны только три части.
Строка Description вверху сообщает, что делала игра в момент гибели: обрабатывала тик сущности, загружала мир, инициализировала систему модов. Это говорит, на какой фазе случился сбой, и очень сильно сужает список подозреваемых: сбой во время загрузки модов - это проблема зависимости или версии, а сбой при обработке сущности - игровая ошибка в конкретном моде.
Стектрейс под ней читается сверху вниз. Это список вызовов методов, которые выполнялись, самый свежий первым, и полезная часть - названия пакетов:
java.lang.NoSuchMethodError: 'void com.example.lib.Registry.register(...)' at com.someone.theirmod.ModInit.onInitialize(ModInit.java:44) at net.fabricmc.loader.impl.FabricLoaderImpl.invokeEntrypoints(...) at net.minecraft.server.Main.main(Main.java:112)Первая строка называет ошибку. Вторая называет com.someone.theirmod - это не игра и не загрузчик, значит, смотреть надо на этот мод. Строки ниже - механизм, который его вызвал, и они редко интересны. В Forge и NeoForge отчёт часто выводит подозреваемый мод и в начале; считайте это подсказкой, а не приговором, потому что мод, который упал, нередко оказывается жертвой библиотеки, изменившейся у него под ногами.
Список модов в конце файла - то, что стоит сохранить. Это полная опись того, что загрузилось и в какой версии, а это именно то, с чем нужно сравнивать вчерашний рабочий запуск. Это лучший довод в пользу хранения журналов запуска, о чём подробнее сказано в статье журналы, которые стоит хранить.
Из загрузчиков Fabric самый дружелюбный. Когда проблема в версиях, а не в коде, Fabric Loader отказывается стартовать и выводит понятное сообщение о разрешении зависимостей, где названы мод, зависимость и версия, которую он хотел. Читайте это буквально: обычно оно право и обычно называет точное решение.
Для Valheim и других игр на Unity аналогичный файл - BepInEx/LogOutput.log, и правило то же: найдите первую строку [Error или [Warning, где назван плагин, а не сам BepInEx. Структура описана в статье моды Valheim с BepInEx на сервере.
Что на самом деле означает ошибка#
Названия ошибок Java выглядят взаимозаменяемыми, но это не так. Каждая указывает на своё решение.
| Ошибка | Что она означает | Обычное решение |
|---|---|---|
NoSuchMethodError | Мод собран под другую версию библиотеки, чем присутствующая | Подобрать версию библиотеки, которую ждёт мод |
NoClassDefFoundError | Нужный класс отсутствует полностью | Мод-зависимость отсутствует или не загрузился раньше |
ClassNotFoundException | То же, обнаружено во время работы | Поищите более раннюю ошибку в журнале |
UnsupportedClassVersionError | Скомпилировано под более новую Java, чем у вас | Обновить Java или взять более старую сборку мода |
IncompatibleClassChangeError | API изменил форму под ногами мода | Моду нужна сборка под эту версию игры |
ClassCastException во время загрузки | Две копии одной библиотеки в classpath | Удалить дубликат jar |
Mixin apply failed | Мод изменил код, который уже изменил другой мод | Настоящий конфликт. Один из двух должен обновиться |
OutOfMemoryError: Java heap space | Не ошибка мода | Больше памяти или меньше одновременно загруженных чанков |
В Paper и Spigot формулировки другие, а логика та же. org.bukkit.plugin.UnknownDependencyException: Unknown dependency Vault означает, что плагин объявил depend: [Vault] в своём plugin.yml, а Vault отсутствует или упал раньше. Предупреждение о том, что плагин собран под более старый api-version, обычно переживаемо; прямой отказ загрузки - нет.
Важная привычка: когда падает несколько плагинов, чините самую раннюю ошибку в журнале. Ошибки идут каскадом, и четыре из пяти сообщений часто оказываются следствиями первой.
Шесть способов, которыми обновление мода ломает сервер#
Почти любой случай укладывается в один из них, и узнать форму - значит сэкономить диагностику.
Сдвинулась зависимость. Мод обновился и теперь хочет пятую версию библиотеки, а у вас четвёртая, или наоборот. Это территория NoSuchMethodError, и это самая частая причина. Решение - обновить или откатить библиотеку до того, что просят заметки к релизу мода.
Изменилась версия загрузчика или игры. Модпак сам обновил версию Forge, NeoForge или Fabric Loader, либо за ночь прошло обновление игры. Всё ломается сразу, а сбой происходит при загрузке, а не в игре.
Клиент и сервер разошлись. Сервер обновился, а игроки нет, или наоборот. Симптом - вовсе не сбой: сервер спокойно работает, а всех выкидывает при подключении или вскоре начинается рассинхрон. У каждого игрока должен быть тот же мод в той же версии, и поэтому модифицированный сервер не стоит обновлять в день патча игры.
Изменилась схема конфига. Новая версия читает ключ, которого нет в вашем конфиге, или молча игнорирует переименованный, и сервер запускается, но ведёт себя неправильно. Проверьте, не переписал ли мод собственный конфиг: время изменения каталога конфигов отвечает на это.
Контент из мастерской обновился сам. Для игр со Steam Workshop это классика. Project Zomboid, Garry's Mod, DayZ и Arma подтягивают элементы мастерской при запуске, так что «ничего не менялось» просто неправда: сервер скачал новую версию чужого мода, пока вы спали. Как на самом деле работают эти загрузки, объясняет статья моды Steam Workshop на выделенных серверах.
Два мода теперь хотят одного и того же. Конфликты mixin, два мода, регистрирующих один ID блока, два чат-плагина, оба отменяющие событие. Они проявляются после обновления, потому что обновление стало затрагивать код, который другой мод уже правил. Это единственная категория, где отката одного файла может не хватить.
Возврат старой версии#
Где лежат файлы и что ещё нужно двигать вместе с ними:
| Игра | Моды лежат в | Что ещё проверить |
|---|---|---|
| Minecraft (Forge/Fabric) | mods/ | config/, версию загрузчика, libraries/ |
| Minecraft (Paper) | plugins/ | plugins/<Name>/config.yml, плагины-зависимости |
| Valheim | BepInEx/plugins/ | BepInEx/config/, версию пакета BepInEx |
| Project Zomboid | Кэш Workshop | WorkshopItems= и Mods= в INI сервера |
| Factorio | mods/ | mods/mod-list.json, версии, требуемые сохранением |
| DayZ / Arma 3 | Папки @ModName/ | keys/ и строку запуска -mod= |
| 7 Days to Die | Mods/ | ModInfo.xml каждого модлета |
| FiveM | resources/ | Строки ensure в server.cfg |
Найти изменившийся файл - однострочная задача в любом направлении:
$ ls -lt mods/ | head -10$ find mods plugins -name "*.jar" -newermt "-2 days" -printf "%T+ %p\n" | sortВ файловом менеджере панели сортировка по времени изменения делает то же самое без оболочки, и это самая полезная колонка в таблице.
Сам откат - это подмена файла, с одним правилом: не удаляйте, отключайте. Создайте рядом с mods папку mods.disabled и перемещайте файлы в неё, а не удаляйте, чтобы ошибочная догадка стоила перетаскивания, а не скачивания. Jar, который вы возвращаете, берётся из вашего собственного архива, если вы его ведёте, а если нет - из истории релизов мода: любая крупная платформа хранит старые файлы, и номера версии в имени файла обычно хватает, чтобы найти нужный.
Для Factorio механика немного иная, и её стоит знать: сохранение записывает моды и версии, с которыми создано, и откажется загружаться с неверным набором. Откат сводится к тому, чтобы вернуть в mods/ правильный name_version.zip и проверить mod-list.json:
{ "mods": [ { "name": "base", "enabled": true }, { "name": "even-distribution", "enabled": true }, { "name": "squeak-through", "enabled": false } ]}Для контента, доставляемого через Steam, фиксация делается на уровне SteamCMD через бета-ветку, а не в папке:
$ steamcmd +login anonymous +app_update 380870 -beta <branch> validate +quit380870 здесь - выделенный сервер Project Zomboid; подставьте app id своей игры. Названия веток целиком зависят от игры, многие игры не публикуют их вовсе, а список меняется, поэтому смотрите документацию самой игры, а не угадывайте название. App id и ветки как следует разобраны в статье SteamCMD простыми словами.
Когда обновление затронуло сохранение#
Это тот случай, что превращает десятиминутное исправление в целый вечер, и его стоит распознавать пораньше. Некоторые обновления модов меняют данные, записываемые в мир: новые ID блоков или предметов, новую структуру NBT, мигрированную таблицу базы. Как только мир загружен и сохранён новой версией, возврат старого мода этого не отменяет. Старая версия либо отказывается загружать мир, либо загружает его и молча удаляет всё, чего не узнаёт.
Признаки того, что вы в этом случае, а не в простом:
- Сервер хотя бы раз успешно запустился с новой версией, прежде чем всё пошло не так.
- Сбой проявляется как пропавшие блоки, пропавшие предметы или повреждённые чанки, а не как вылет при загрузке.
- В списке изменений мода упоминается миграция, data fixer или смена формата мира.
Тогда перестаньте считать это откатом и считайте восстановлением. Возьмите резервную копию до обновления, восстановите её и верните старые моды одновременно, чтобы они соответствовали друг другу. В этот момент ваша политика резервного копирования оказывается либо достаточной, либо историей, которую вы рассказываете потом; статья резервные копии, которые действительно восстанавливаются существует потому, что эти два случая выглядят одинаково, пока не попробуешь. На RE:NODE слоты для backup входят в каждый тариф, восстановление - одна кнопка, а backup можно заблокировать от ротации, и именно так нужно поступить с копией, которую вы делаете перед обновлением.
Бисекция конфликта, который никто не может прочесть#
Иногда сбой не называет ничего полезного: конфликт mixin, стектрейс целиком внутри игры или сервер, который запускается и умирает через четыре минуты. Когда чтение не помогает, делите пополам. С 40 модами бинарный поиск находит виновника за шесть перезапусков, а не за сорок.
- Скопируйте всю папку mods в безопасное место.
- Переместите половину в
mods.disabled. Запустите. Если для работы игры нужна базовая библиотека или API-мод, оставляйте её в обоих запусках. - Если всё ещё ломается, виновник в оставшейся половине. Если работает - в убранной.
- Снова разделите подозрительную группу пополам. Повторяйте.
- Когда остался один, подтвердите: верните всё на место и уберите только этот мод.
Два уточнения делают это менее болезненным. Начните с модов, у которых менялось время изменения: ответ обычно в этой группе, и вы можете уложиться в один перезапуск. А если сервер умирает через несколько минут после запуска, а не во время загрузки, причина скорее в игровом тике, а не в загрузке, поэтому проверяйте, встав в то место, где это происходит, а не выжидая.
Конфликт между двумя актуальными версиями двух модов - единственный случай, когда откат лишь временная мера. Сообщите об этом обоим авторам, приложив отчёт о сбое, пока работайте без одного из модов и загляните снова через две недели. О том, какие моды вообще стоит держать, рассказано в статье как держать модифицированный сервер в чистоте.
Как не допустить повторения#
Фиксируйте версии, а не следуйте за последней, и храните последнюю заведомо рабочую копию каждого мода в папке рядом с рабочей. Удобство, которое может стоить вам вечера, удобством не является. Конкретно:
- Держите папку `mods.backup` с точным набором, который сейчас работает, и обновляйте её после каждого удачного обновления. Она стоит места на диске и больше ничего.
- Записывайте рабочий набор. Журнал запуска уже содержит его; после каждого удачного обновления выгружайте его в текстовый файл в каталоге сервера. Сравнение двух таких файлов отвечает на вопрос «что изменилось» за пять секунд.
- Отключайте автоматические обновления, где игра это позволяет, а где нет - в основном это контент Steam Workshop, - считайте обновление запланированным событием, а не сюрпризом. Делайте это в момент, когда можете за ним следить.
- Заведите окно обновлений. Фиксированный вечер, backup сделан и заблокирован заранее, больше никто не подключён, и правило не обновляться в день выхода патча игры. Авторам модов нужна неделя.
- Проверяйте на копии. Небольшой второй сервер с теми же версиями - единственное место, где обновление может провалиться без зрителей. Дешёвый вариант описан в статье staging и production в одном аккаунте, и для игровых серверов он доступнее, чем принято думать.
- Обновляйте по одному. Шесть модов, обновлённых вместе, - это шесть подозреваемых и бисекция. По два за раз медленнее и почти никогда не стоит вечера.
Для всего этого не нужно от хостера ничего необычного. На RE:NODE моды и плагины вы загружаете сами через файловый менеджер или SFTP либо получаете через собственную поддержку мастерской игры, а белого списка разрешённых модов нет, так что версия, которую вы храните, - это версия, которую вы запускаете. Консоль показывает живой вывод без фильтрации, там вы и прочтёте баннер запуска, а файловый менеджер показывает время изменения, по которому вы найдёте изменившийся файл. Что означают остальные строки, рассказано в статье как читать консоль.
FAQ#
Как найти, какой мод сломал сервер?
Сначала посмотрите время изменения в папке mods: самый новый файл в подозреваемых примерно в девяти случаях из десяти. Если это не решает вопрос, прочитайте отчёт о сбое с начала и найдите первое название пакета, которое не принадлежит игре или загрузчику. Если и это не решает, делите пополам, отключая по половине модов.
Можно ли просто откатить мод и продолжить?
Обычно да, если сервер ещё не успел записать данные мира в новом формате. Если он успешно запустился с новой версией и люди играли, перед откатом проверьте в списке изменений мода, нет ли миграции, а если есть backup до обновления, восстанавливайтесь лучше из него.
Почему мой сервер сам обновил мод?
Контент Steam Workshop скачивается при запуске, так что любой мод из мастерской может измениться между перезапусками без вашего участия. Некоторые лаунчеры и инструменты для модпаков тоже по умолчанию следят за последним релизом. Фиксируйте версии, где игра это позволяет, и считайте перезапуск поводом для изменения стороннего контента.
Нужно ли обновлять моды в день обновления игры?
Нет. Авторам модов нужно от нескольких дней до пары недель после патча игры, а обновление обоих сразу не даёт понять, что именно сломало. Отключите автоматические обновления игры на модифицированном сервере, дождитесь, пока нужные моды выпустят совместимую сборку, и затем переводите всё в одно запланированное окно.
В отчёте назван мод, который точно в порядке. Что делать?
Это обычное дело. Мод падает потому, что изменилась библиотека, от которой он зависит, и название в трассировке - жертва, а не причина. Посмотрите, что ещё обновилось в то же время, особенно всё, что описано как API, ядро или библиотека, и проверьте, какую версию требует названный мод.
Нужен ли backup, если я храню копии старых jar?
Да, они решают разные задачи. Старые jar чинят мод, который не загружается. Backup чинит мир, изменённый модом, который загрузился. Второй случай - дорогой сбой, и он проявляется спустя часы, а не сразу.




Комментарии
Полностью анонимно: без аккаунта, без почты, без cookie. Мы храним имя, которое вы ввели, текст и время - больше ничего. Количество ссылок ограничено, разметка не отображается.