Если вы когда-нибудь запускали сервер Minecraft, особенно на Spigot или PaperSpigot, то наверняка сталкивались с загадочным файлом session.lock в папке мира. Что это за зверь, почему он появляется, и как не дать ему испортить вам жизнь — сейчас разберёмся!


Что такое session.lock и зачем он нужен

Файл session.lock — это своего рода сторожевой пес вашего игрового мира. Он хранит метку времени (в миллисекундах с 1 января 1970 года), которая показывает, когда сервер последний раз обращался к файлам мира. Его задача — не дать двум экземплярам сервера одновременно работать с одним и тем же миром, чтобы избежать катастрофы в виде повреждённых данных.

В техническом плане это 8-байтовый файл с 64-битным целым числом в формате big-endian. При запуске сервера он создаётся и обновляется, а при корректном завершении работы — удаляется или становится неактивным.


Почему session.lock появляется при каждом запуске сервера

Если вы замечаете, что файл session.lock появляется заново при каждом старте, это обычно сигнал о том, что сервер не завершил работу корректно. Например, если вы убиваете процесс сервера через Ctrl+C или аварийно закрываете консоль, сервер не успевает удалить или обновить этот файл.

В результате при следующем запуске сервер думает: "Эй, кто-то уже работает с этим миром!" — и выдаёт ошибку Failed to check session lock, блокируя запуск.


Как понять, что сервер не завершил работу корректно

Признаки:

  • В консоли появляется ошибка net.Minecraft.server.WorldConflictException: Failed to check session lock, aborting.
  • Файл session.lock остаётся в папке мира после остановки сервера.
  • Сервер не запускается, выдавая сообщение о блокировке мира.

Проверить можно просто: если сервер выключен, а файл session.lock всё ещё существует и не обновляется, значит, предыдущий запуск завершился некорректно.


Как правильно завершать работу сервера

В Spigot и PaperSpigot есть встроенные команды для безопасного останова:

  • /stop — корректно останавливает сервер, сохраняя все данные и удаляя блокировки.
  • /restart — останавливает и сразу запускает сервер заново, тоже безопасно.

Используйте именно эти команды, а не Ctrl+C или убийство процесса, чтобы избежать проблем с session.lock.


Можно ли вручную удалять session.lock

Да, но с оговорками! Удалять session.lock можно только если сервер точно остановлен и не работает с этим миром. Иначе вы рискуете повредить файлы мира.

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

  • Сделайте резервную копию папки мира.
  • Убедитесь, что сервер полностью остановлен (проверьте процессы в диспетчере задач или через команду ps в Linux).
  • Проверьте права доступа к файлам, чтобы избежать ошибок.

Как удалить session.lock на Windows и Linux

ОС Шаги удаления session.lock
Windows 1. Остановите сервер через консоль или панель управления.
2. Откройте папку мира (обычно world или имя из server.properties).
3. Найдите и удалите файл session.lock.
Linux 1. Остановите сервер командой /stop или через панель.
2. Перейдите в папку мира (cd /path/to/world).
3. Выполните rm session.lock.

После удаления запускайте сервер заново.


Что делать после непредвиденного сбоя сервера

Если сервер упал или был убит, и вы не можете запустить мир из-за session.lock:

  • Остановите сервер, если он ещё работает.
  • Сделайте резервную копию папки мира.
  • Удалите файл session.lock.
  • Запустите сервер заново.

Если ошибка повторяется — проверьте логи сервера на предмет других проблем, например, конфликтов плагинов или повреждений файлов.


Можно ли запускать несколько серверов с одним миром

Категорически нет! Одновременная работа нескольких экземпляров сервера с одним и тем же миром приводит к конфликтам и повреждению данных. Именно для предотвращения этого и существует session.lock.


Особенности PaperSpigot 1.16.5 и session.lock

PaperSpigot 1.16.5 использует тот же механизм блокировки мира через session.lock, как и Spigot. Разница в том, что Paper оптимизирован для стабильности и производительности, но правила работы с файлом блокировки остаются прежними.


Немного о структуре мира и файлах

Мир Minecraft делится на чанки размером 16×128×16 блоков. Они хранятся в папках, названия которых зависят от координат чанков по осям X и Z, преобразованных в base36 с учётом отрицательных значений.

Файл level.dat — это сердце мира, где хранится:

  • Seed генерации мира
  • Координаты спауна (SpawnX, SpawnY, SpawnZ)
  • Текущее время суток (в тактах, 20 тактов = 1 секунда)
  • Данные игрока: позиция, здоровье, инвентарь и прочее

Файл session.lock гарантирует, что только один процесс работает с этими файлами.


Таблица: основные файлы и их назначение

Файл Назначение
session.lock Блокировка мира, предотвращает одновременный доступ
level.dat Глобальные параметры мира и данные игрока
c.x.z.dat Данные чанка с координатами x, z

Как избежать проблем с session.lock

  • Всегда останавливайте сервер через /stop или /restart.
  • Не убивайте процесс сервера через Ctrl+C или диспетчер задач.
  • Делайте регулярные резервные копии мира.
  • Следите за плагинами — некоторые могут вызывать сбои.
  • Проверяйте логи сервера на ошибки.

Что делать, если сервер не запускается после удаления session.lock

  • Проверьте, что сервер действительно остановлен.
  • Убедитесь, что права доступа к папке мира корректны.
  • Проверьте логи на другие ошибки.
  • Попробуйте восстановить мир из резервной копии.
  • Если доступ к панели управления отсутствует, используйте FTP или SSH для удаления файла.

Как сообщать игрокам о проблемах с сервером

Прозрачность — залог доверия! Если сервер временно недоступен:

  • Сообщите игрокам о причинах и примерном времени восстановления.
  • Используйте Discord, сайт или внутриигровые сообщения.
  • После восстановления кратко опишите, что было сделано.

Итог

Файл session.lock — это ваш защитник от одновременного доступа к миру Minecraft. Он может стать источником проблем, если сервер не завершает работу корректно. Но зная, как с ним обращаться, вы легко решите любые вопросы с запуском сервера и сохраните мир в целости.


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