Как безопасно обновить Minecraft-сервер и не потерять работоспособность и миры

Руководство Как безопасно обновить Minecraft-сервер и не потерять работоспособность и миры

Поддерживаемые версии
  1. Отсутствует

Как безопасно обновить Minecraft-сервер и не потерять мир​


Коротко: обновление сервера - это не просто заменить paper.jar и нажать «Старт». Нормальное обновление состоит из бэкапа, тестового запуска, проверки Java, обновления плагинов, чтения логов и плана отката.

Если сделать всё правильно, обновление обычно проходит спокойно. Если делать наугад, можно получить сломанные плагины, пустой Nether, ошибки Java, нерабочий донат, несовместимые ресурспаки и мир, который уже нельзя вернуть на старую версию.

Главная схема:

Код:
бэкап -> тестовая копия -> Java -> плагины -> ядро -> проверка логов -> проверка игроком -> основной сервер

Главное правило: никогда не обновляй основной сервер без полного бэкапа.

Полный бэкап - это не только папка world. Нужно сохранить:

  • миры: world, world_nether, world_the_end и все кастомные миры;
  • плагины: папку plugins целиком;
  • конфиги ядра: server.properties, bukkit.yml, spigot.yml, папку config;
  • стартовые файлы: start.bat, start.sh, параметры запуска;
  • базы данных: MySQL/MariaDB/SQLite, если плагины используют базу;
  • ресурс-пак, если он лежит на сервере;
  • логи, если обновляешься после проблемы и надо понять, что было до неё.

Важно: бэкап должен быть проверяемым. Архив, который невозможно распаковать, - это не бэкап, а декорация.

Что нельзя делать:

  • Не заменяй jar ядра, пока сервер работает.
  • Не обновляйся через /reload.
  • Не обновляй все плагины вслепую на основном сервере.
  • Не удаляй старые конфиги сразу после обновления.
  • Не пытайся откатить мир на старую версию без бэкапа.
  • Не переходи на новую major-версию в день релиза, если сервер коммерческий или с большим онлайном.
  • Не ставь dev-build ядра/плагинов на продакшен, если не понимаешь, зачем он тебе нужен.

Когда мир открывается в новой версии Minecraft, сервер может обновить данные чанков, блоков, сущностей, структур и предметов. После этого старое ядро может уже не понимать эти данные.

Типичная ошибка:

Код:
Server attempted to load chunk saved with newer version of minecraft

Это означает, что мир уже был открыт в более новой версии. Нормальный откат в такой ситуации - только через бэкап, сделанный до обновления.

Не используй флаги вроде -DPaper.ignoreWorldDataVersion=true на основном мире. Да, сервер может попытаться запуститься, но это неподдерживаемый путь, который может окончательно повредить мир.

Перед обновлением составь маленькую таблицу:

Код:
Текущая версия сервера: Paper/Purpur/Spigot 1.xx.x
Новая версия: Paper/Purpur 1.xx.x или 26.x
Java сейчас: java -version
Нужная Java:
Список плагинов:
Есть ли Geyser/Floodgate:
Есть ли ViaVersion/ViaBackwards:
Есть ли ресурс-пак:
Есть ли MySQL:
Есть ли бэкап:
Есть ли тестовый сервер:

Это скучно, но именно такая скука спасает сервер.

Проверь Java:

Код:
java -version

По актуальным требованиям Paper:

  • 1.17 - 1.19 - Java 17;
  • 1.20 - 1.21.11 - Java 21;
  • 26.1+ - Java 25.

Если сервер не стартует и пишет что-то вроде:

Код:
UnsupportedClassVersionError
class file version ...
Java Runtime only recognizes ...

значит jar был собран под более новую Java, чем та, на которой ты запускаешь сервер.

Лучший способ обновиться спокойно - сначала поднять копию.

Структура может быть такой:

Код:
test-server/
  server.jar
  plugins/
  world/
  world_nether/
  world_the_end/
  config/
  server.properties

На тестовом сервере:

  • не используй реальные токены Discord-ботов;
  • не подключай реальный донат;
  • не подключай боевую MySQL-базу без копии;
  • поставь другой порт в server.properties;
  • если стоит прокси, не подключай тестовый сервер к основной сети без необходимости;
  • запускай тест отдельно от основного сервера.

В server.properties для теста можно поставить:

Код:
server-port=25566
enable-rcon=false
online-mode=true
motd=Test update server

Перед бэкапом останови сервер командой:

Код:
stop

Пример на Linux:

Код:
tar -czf backup-before-update-2026-06-01.tar.gz world world_nether world_the_end plugins config server.properties bukkit.yml spigot.yml start.sh

Если есть MySQL/MariaDB:

Код:
mysqldump -u USER -p DATABASE > database-before-update-2026-06-01.sql

После создания архива проверь, что он реально открывается.

Перед сменой версии проверь каждый важный плагин:

  • есть ли поддержка новой версии Minecraft;
  • какая нужна Java;
  • не появилась ли новая зависимость;
  • не изменился ли конфиг;
  • нет ли предупреждений в changelog;
  • нет ли отдельной версии для Paper/Folia/Velocity.

Особенно внимательно проверь:

  • ProtocolLib;
  • PlaceholderAPI;
  • Vault или его замену;
  • LuckPerms;
  • WorldEdit/FastAsyncWorldEdit;
  • WorldGuard;
  • CoreProtect;
  • ItemsAdder/Oraxen/Nexo;
  • ModelEngine/MythicMobs;
  • Geyser/Floodgate;
  • ViaVersion/ViaBackwards/ViaRewind;
  • античиты;
  • плагины на донат, кейсы, меню, экономику и авторизацию.

Если плагин не обновлялся годами и завязан на NMS, шанс поломки выше.

Папка plugins/update в Paper

У Paper есть удобный способ обновлять плагины без ручной замены jar во время работы сервера.

  1. Создай папку:
    plugins/update
  2. Положи туда новые jar-файлы плагинов.
  3. Полностью перезапусти сервер.

Paper сам заменит плагины при старте.

Важно: не надо менять jar-файлы прямо в plugins, пока сервер работает.

Общий порядок такой:

  1. Скачай новое ядро только с официального сайта.
  2. Останови сервер.
  3. Переименуй старый jar, например:
    paper-old.jar
  4. Положи новый jar.
  5. Проверь, что стартовый файл запускает именно новый jar.
  6. Запусти сервер и смотри консоль.

Пример старта:

Код:
java -Xms4G -Xmx4G -jar paper.jar --nogui

Если у тебя в start.bat написано:

Код:
java -Xmx4G -jar paper-1.20.4.jar nogui

а ты скачал paper-1.21.11.jar, сервер всё равно будет запускать старый файл. Либо переименуй новый jar в старое имя, либо измени start-файл.

Не используй --forceUpgrade без причины

В большинстве случаев это не нужно. Paper умеет обновлять мир постепенно во время игры. Полный force-upgrade может занять много времени, сильно нагрузить диск и не решает проблемы несовместимых плагинов.

Использовать --forceUpgrade стоит только если ты понимаешь, зачем это делаешь, и у тебя есть свежий бэкап.

На первом запуске не спеши заходить и радоваться. Смотри консоль.

Ищи такие вещи:

  • ERROR;
  • WARN;
  • UnsupportedClassVersionError;
  • UnknownDependencyException;
  • NoClassDefFoundError;
  • Could not load plugin;
  • Failed to load;
  • OutOfMemoryError;
  • Server attempted to load chunk saved with newer version.

Если какой-то плагин красный в /plugins, это не “ничего страшного”. Это значит, что он не включился.

После успешного старта проверь:

  • заход обычного игрока без OP;
  • команды доната;
  • права LuckPerms;
  • префиксы и чат;
  • меню;
  • экономику;
  • магазины;
  • кейсы;
  • приваты WorldGuard;
  • откаты CoreProtect;
  • порталы Nether/End;
  • кастомные миры;
  • NPC;
  • мобы;
  • ресурс-пак;
  • Geyser/Floodgate, если есть Bedrock;
  • ViaVersion/ViaBackwards, если поддерживаешь разные версии клиента.

Проверять нужно не только под OP. Многие ошибки видны только у обычного игрока.

ViaVersion:

  • ViaVersion позволяет новым клиентам заходить на старый сервер.
  • ViaBackwards позволяет старым клиентам заходить на новый сервер.
  • ViaRewind нужен для очень старых клиентов вроде 1.8/1.7, где это поддерживается.

Если обновляешь сервер и хочешь, чтобы игроки со старых версий всё ещё заходили, тебе обычно нужны ViaVersion + ViaBackwards.

Но: старый клиент не узнает новые блоки, новые предметы и новые механики. Он может видеть заменённые блоки, сталкиваться с ограничениями интерфейса или не иметь доступа к новым функциям.

Например, клиенты ниже 1.17 не умеют нормально работать с высотой мира ниже Y=0. Это не баг твоего сервера, а ограничение старой версии клиента.

Если у тебя сеть через Velocity/BungeeCord, не ставь Via* хаотично везде. Обычно выбирают один подход:

  • Via* только на прокси;
  • или Via* на всех backend-серверах.

Geyser/Floodgate:

Перед обновлением обязательно проверь:

  • поддерживает ли Geyser новую Java-версию сервера;
  • поддерживает ли Floodgate новую версию;
  • не нужен ли dev build;
  • не изменились ли настройки прокси;
  • не конфликтует ли Geyser с ViaVersion.

Geyser часто зависит от конкретных изменений протокола. После релиза новой версии Minecraft поддержка может появиться не сразу. Если Bedrock-игроки важны, не обновляй основу до тех пор, пока Geyser стабильно не поддерживает нужную версию.

Если обновляешься с очень старой версии

Переход с условной 1.12.2 или 1.16.5 сразу на актуальную версию - это не обычное обновление, а миграция.

Лучше идти ступенями:

Код:
1.12.2 -> 1.16.5 -> 1.18.2 -> 1.20.6 -> 1.21.11/26.x

Проблемы при больших прыжках:

  • меняется Java;
  • ломаются старые плагины;
  • меняются ID предметов и блоков;
  • меняются форматы мира;
  • старые конфиги не подходят новым версиям;
  • античиты и NMS-плагины могут умереть полностью.

Если переходишь со Spigot на Paper/Purpur

Для большинства обычных серверов Paper/Purpur - нормальный выбор. Но перед переходом:

  • сделай полный бэкап;
  • проверь плагины на совместимость с Paper;
  • не переходи одновременно на новое ядро и новую версию Minecraft, если сервер большой;
  • сначала смени ядро на той же версии, потом обновляй Minecraft.

Например:

Код:
Spigot 1.20.4 -> Paper 1.20.4 -> Paper 1.21.11

Так проще понять, что именно сломалось: переход на Paper или переход на новую версию Minecraft.

Если у тебя Forge/Fabric/modded-сервер

Paper не поддерживает Forge/Fabric-моды. Если твой мир использовал модовые блоки, предметы, биомы или сущности, Paper не сможет нормально их загрузить.

Не стоит просто брать модовый мир и запускать его на Paper. Сначала проверь:

  • есть ли в мире модовые блоки;
  • есть ли модовые предметы в инвентарях;
  • используются ли модовые биомы/структуры;
  • есть ли замены плагинами.

Гибридные ядра “моды + плагины” требуют отдельного тестирования. Не ставь их на основной сервер без копии мира.

План для маленького сервера:

  1. Предупреди игроков.
  2. Останови сервер.
  3. Сделай полный бэкап.
  4. Скопируй сервер в тестовую папку.
  5. Обнови Java, если нужно.
  6. Обнови плагины на тесте.
  7. Обнови ядро на тесте.
  8. Запусти тест и проверь логи.
  9. Зайди обычным игроком и проверь основные функции.
  10. Если всё нормально - повтори на основном сервере.

План для проекта с онлайном:

  1. Назначь окно работ: например, 03:00-04:00.
  2. За день предупреди игроков в Discord/Telegram.
  3. Сделай бэкап заранее и ещё один прямо перед обновлением.
  4. Подними тестовую копию.
  5. Проверь все критические сценарии.
  6. Составь список плагинов, которые обновляешь.
  7. Составь список плагинов, которые временно отключаешь.
  8. Подготовь план отката.
  9. Обнови основной сервер.
  10. После запуска 15-30 минут следи за логами.
  11. Попроси нескольких игроков проверить разные режимы.

План отката:

Код:
Если сервер не стартует:
1. Остановить сервер.
2. Вернуть старый jar.
3. Вернуть папку plugins из бэкапа.
4. Вернуть миры из бэкапа, если они уже открывались новой версией.
5. Вернуть базу данных из дампа, если плагины успели изменить данные.
6. Запустить старую версию.

Если новая версия уже открыла мир, просто заменить jar обратно недостаточно. Нужен бэкап мира до обновления.

Ошибка 1: сервер не запускается после обновления

Проверь Java:

Код:
java -version

Если версия Java старая, обнови её или выбери правильную версию ядра.

Ошибка 2: плагины красные

Смотри logs/latest.log. Часто причина в зависимости:

Код:
UnknownDependencyException: Unknown/missing dependency plugins: [ProtocolLib]

Значит не хватает ProtocolLib или он не той версии.

Ошибка 3: мир не открывается на старой версии

Если мир уже был открыт новой версией, откат через старый jar не поддерживается. Восстанавливай мир из бэкапа.

Ошибка 4: игроки старых версий не заходят

Проверь ViaVersion/ViaBackwards. Возможно, плагин ещё не поддерживает новую версию Minecraft или стоит не там: на прокси/бекенде.

Ошибка 5: Bedrock-игроки не заходят

Проверь Geyser/Floodgate и их совместимость с новой Java-версией сервера.

Ошибка 6: пропали префиксы/экономика

Проверь Vault/замену Vault, LuckPerms, чат-плагин и PlaceholderAPI.

Ошибка 7: сервер запустился, но лагает

Поставь/обнови Spark и сними профиль. Не угадывай по ощущениям.

Перед нажатием «Старт» проверь:

  • Бэкап миров есть.
  • Бэкап базы есть.
  • Бэкап plugins есть.
  • Java подходит под новую версию.
  • Ядро скачано с официального сайта.
  • Плагины обновлены.
  • Зависимости обновлены.
  • Тестовый сервер запускался.
  • Обычный игрок проверен.
  • План отката есть.

Если хотя бы половина пунктов не выполнена, обновление лучше отложить.

Итог​


Безопасное обновление - это не “поставил новый jar и молюсь”. Это нормальный порядок действий:

бэкап -> тестовая копия -> Java -> плагины -> ядро -> проверка логов -> проверка игроком -> только потом основной сервер.

Самое важное: новую версию всегда можно попробовать на копии, но нельзя гарантированно откатить мир назад без бэкапа.

Полезные ссылки​


  • Facepalm (-1)
Реакции: Art_Farm
Автор
MEvgeniy
Просмотры
66
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя MEvgeniy

Поделиться ресурсом

Назад
Сверху Снизу