Копии и обновления
Копии мира
Создать копию сейчас делает её немедленно. На время работы сервер перестаёт сохранять мир автоматически, чтобы в архив попал целый мир, а не половина одного и половина другого.
Копии можно делать и по расписанию — раз во столько-то минут, хранить столько-то штук — это настраивается на вкладке Установка и запуск.
Восстановить выбранную возвращает копию на место. Тот мир, который сейчас, не удаляется: он переименовывается в world_before_restore и дату. Если копия окажется не той, ничего не потеряно.
Смена ядра
Обновить ядро сервера ставит выбранную версию, мир остаётся на месте.
Создать сервер заново — та же установка, но мир начинается с нуля. Старый тоже не удаляется: он переименовывается в world_before и дату, вместе с адом и краем.
Порядок шагов выбран так, чтобы неудача была безобидной. Файл скачивается на сам сервер, мимо вашего домашнего интернета, и проверяется по контрольной сумме. И только потом сервер останавливается. Старое ядро переименовывается в своё же имя с датой и .bak — вернуться можно одним движением.
Состояние службы перечитывается прямо перед подменой, а не берётся с экрана: иначе файл можно заменить под работающим сервером и отрапортовать об успехе, пока он крутит старый код. Сервер, который был остановлен, таким и останется. Если он не поднимется, программа так и скажет и назовёт файл, к которому откатываться.
Версия читается из самого ядра, из version.json внутри jar. Это единственный ответ, который не устаревает: журнал в полночь ротируется и стартовую строку теряет, отметка от прошлой установки врёт, если файл подменили руками, — а файл всегда тот, что запустится.
Какие ядра обновляются
Mojang, Paper и Fabric. Все трое выкладывают готовый файл по прямой ссылке, его можно скачать и подменить. У Fabric это не установщик, а небольшая программа запуска сервера, которая дотягивает остальное при первом запуске; моды в папке при смене версии загрузчика не трогаются.
Forge — нет, и причину стоит знать. С версии 1.17 сервер Forge запускается не jar-ом, а списком аргументов, путь к которому содержит версию Forge. Обновление меняет саму командную строку в файле службы, а он принадлежит root. Дело не в сложностях с временными файлами, а в том, что после обновления сервер надо запускать иначе.
Сама панель
Программа сама смотрит, не вышла ли новая версия, и показывает полоску, когда вышла, вместе с тем, что в ней нового. Обновить ставит и перезапускает, Позже оставляет всё как есть до следующего раза.