Как перенести мир с одиночной игры на сервер

Подготовка: что понадобится

  1. Доступ к панели proxify.cloud (Proxmox VE) для управления выделенным сервером.
  2. SSH-доступ к Ubuntu-серверу (логин root или пользователь с sudo).
  3. Установленный на сервере Minecraft-сервер (Paper, Spigot, Fabric или Forge) и известный путь к его директории.
  4. Файл мира из одиночной игры (папка world или архив с ним).
  5. Локальный ПК с установленным архиватором (7-Zip, WinRAR) и SSH-клиентом (Termius, Tabby, встроенный терминал).

Шаг 1. Найдите папку мира на локальном компьютере

Откройте проводник и перейдите по пути в зависимости от ОС и лаунчера:

Лаунчер / Edición Путь к папке saves
Официальный лаунчер (Windows) %APPDATA%\.minecraft\saves\
Официальный лаунчер (macOS) ~/Library/Application Support/minecraft/saves/
Официальный лаунчер (Linux) ~/.minecraft/saves/
Prism Launcher / MultiMC ~/PrismLauncher/instances/<Имя_инстанса>/.minecraft/saves/
CurseForge / ATLauncher Настройки инстанса → «Open Folder» → saves/

Внутри saves найдите папку с точным названием вашего мира (например, MySurvivalWorld). Это и есть папка мира.

Важно: Если мир создан в версии с модами (Forge/Fabric), убедитесь, что на сервере установлен тот же модлоадер и те же моды той же версии. Иначе чанки сломаются или мир не запустится.


Шаг 2. Архивируйте мир для передачи

Не передавайте тысячи мелких файлов по одному — это займет вечность. Создайте архив.

Windows (PowerShell в папке saves):

Compress-Archive -Path "MySurvivalWorld" -DestinationPath "MySurvivalWorld.zip" -CompressionLevel Optimal

Linux / macOS (терминал):

tar -czvf MySurvivalWorld.tar.gz "MySurvivalWorld"

Рекомендую .tar.gz для Linux-сервера — он сохраняет права доступа и симлинки.


Шаг 3. Загрузите архив на сервер через SFTP

Подключитесь к вашему выделенному серверу на proxify.cloud по SFTP (порт 22, логин/пароль от root или sudo-пользователя). Используйте FileZilla, WinSCP или терминал.

Пример через терминал (scp):

# С локального ПК
scp MySurvivalWorld.tar.gz root@ВАШ_IP_СЕРВЕРА:/root/

Альтернатива через панель proxify.cloud:

  1. Зайдите в панель proxify.cloud → выберите ваш выделенный сервер → вкладка Console (noVNC).
  2. Логинитесь в Ubuntu.
  3. Скачайте архив прямо с GitHub/файлообменника через wget или curl, если он там лежит:
    wget "ПРЯМАЯ_ССЫЛКА_НА_АРХИВ" -O /root/MySurvivalWorld.tar.gz
    

Рекомендую класть архив в /root/ или /tmp/, а не сразу в папку сервера — так чище.


Шаг 4. Остановите Minecraft-сервер

Никогда не меняйте файлы мира на работающем сервере — это приведет к коррупции чанков.

Если сервер запущен как systemd-сервис (стандарт для выделенных серверов на Ubuntu):

systemctl stop minecraft
# или, если сервис назван иначе:
systemctl stop mc-server

Если сервер запущен в screen/tmux вручную:

  1. Зайдите в сессию: screen -r minecraft (или tmux attach -t minecraft).
  2. В консоли сервера введите: stop.
  3. Дождитесь полной остановки (Saving worlds... Done).

Проверьте, что процесс/java нет в памяти:

pgrep -fl java

Должно быть пусто.


Шаг 5. Определите путь к папке миров на сервере

Стандартные пути для популярных панелей/оберток на Ubuntu:

Тип установки Типичный путь к папке world
Чистый Paper/Spigot (ручной) /opt/minecraft/world или /home/minecraft/server/world
Docker-контейнер (itzg/minecraft-server) /opt/minecraft/data/world (внутри контейнера) или смонтированный хост-путь
PufferPanel / Pterodactyl (на proxify.cloud) /var/lib/pufferpanel/servers/<SERVER_ID>/world или /var/lib/pterodactyl/volumes/<UUID>/world
Скрипт установки (например, mcsm) /opt/mcsm/servers/<NAME>/world

Как точно узнать свой путь:

  1. Посмотрите server.properties в корне сервера:
    grep "level-name" /путь/к/серверу/server.properties
    
    По умолчанию выдаст level-name=world.
  2. Папка мира лежит рядом с server.properties (если не задан абсолютный путь в level-name).

Пример: если server.properties в /opt/minecraft/server/, то мир в /opt/minecraft/server/world/.


Шаг 6. Сделайте бэкап текущего мира сервера (на всякий случай)

# Замените путь на ваш реальный
mv /opt/minecraft/server/world /opt/minecraft/server/world_backup_$(date +%F)

Если что-то пойдет не так — вернетесь одной командой mv.


Шаг 7. Распакуйте ваш мир в папку сервера

Перейдите в директорию сервера (где лежит server.properties):

cd /opt/minecraft/server

Распакуйте архив, загруженный в Шаге 3:

# Для .tar.gz
tar -xzvf /root/MySurvivalWorld.tar.gz

# Для .zip (нужен пакет unzip: apt install unzip)
unzip /root/MySurvivalWorld.zip

Результат: появилась папка MySurvivalWorld.

Теперь переименуйте её в то имя, которое указано в server.properties (параметр level-name). По умолчанию это world:

mv MySurvivalWorld world

Критично: Папка должна называться строго так, как в level-name. Регистр важен (Linux Case-Sensitive).


Шаг 8. Исправьте права доступа (Ownership)

Файлы, созданные root через tar/scp, принадлежат root:root. Пользователь сервера (обычно minecraft или mc) не сможет в них писать.

Узнайте пользователя, от которого запускается сервер:

ps aux | grep java | head -1
# Смотрите первый столбец (USER)

Обычно это minecraft. Выставьте права рекурсивно:

chown -R minecraft:minecraft /opt/minecraft/server/world

Если сервер запускается от root (плохая практика, но бывает на выделенных серверах proxify.cloud без панели управления) — chown не нужен, но настоятельно рекомендую создать отдельного пользователя.

Права на файлы/папки (на случай сбоя umask):

find /opt/minecraft/server/world -type d -exec chmod 755 {} \;
find /opt/minecraft/server/world -type f -exec chmod 644 {} \;

Шаг 9. Проверьте совместимость версии ядра (Data Version)

Откройте файл level.dat внутри мира и проверьте DataVersion (число, например 3955 для 1.20.4).

# Нужен nbt-tools: apt install nbt-tools
nbt-dump /opt/minecraft/server/world/level.dat | grep DataVersion

Сравните с версией вашего серверного ядра (Paper/Spigot/Fabric).

  • Мир новее сервера (DataVersion больше) — не запускайте. Чанки повреждены гарантированно. Обновите сервер.
  • Мир старше сервера — нормально, сервер конвертирует при запуске (лог покажет Converting world...).
  • Версии совпадают — идеально.

Шаг 10. Настройте server.properties под одиночный мир (опционально, но важно)

Откройте конфиг:

nano /opt/minecraft/server/server.properties

Ключевые параметры, которые отличаются от дефолтных серверных настроек и важны для перенесенного одиночного мира:

Параметр Значение для одиночки Почему
gamemode survival (или creative) Сохраняет ваш гейммод
difficulty normal (или hard/easy) Как было в мире
level-seed Сид вашего мира (из F3 в игре) Для генерации новых чанков по тому же сиду
generator-settings Оставьте пустым или скопируйте из level.dat (NBT) Для кастомных миров (Amplified, Large Biomes и т.д.)
force-gamemode false Не перезаписывать гейммод игрокам при входе
spawn-protection 0 Убрать защиту спавна, если строили рядом
enable-command-block true Если в мире были командные блоки
allow-nether / allow-end true Если были посещены

Важно про level-seed: Если не указать сид, новые чанки сгенерируются с рандомным сидом — будут резкие границы. Узнайте сид: в одиночке нажмите F3 → скопируйте число напротив Seed:.


Шаг 11. Запустите сервер и проверьте логи

Запустите сервер:

systemctl start minecraft
# или
screen -dmS minecraft bash -c 'java -Xms4G -Xmx4G -jar paper.jar nogui'

Сразу смотрите логи в реальном времени:

journalctl -u minecraft -f
# или если в screen:
screen -r minecraft

Что искать в логах (успешный старт):

[Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[Server thread/INFO]: Preparing start region for dimension minecraft:the_nether
[Server thread/INFO]: Preparing start region for dimension minecraft:the_end
[Server thread/INFO]: Done (12.345s)! For help, type "help"

Если мир конвертировался из старой версии:

[Server thread/INFO]: Converting world