Как установить датапаки на сервер

1. Подготовка и доступ к серверу через proxify.cloud

  1. Авторизуйтесь в панели proxify.cloud.
  2. В списке услуг выберите ваш выделенный сервер (Dedicated Server) с установленным Ubuntu.
  3. Откройте вкладку Console (VNC-консоль) или используйте SSH-клиент (Termius, PuTTY, терминал Linux/macOS) для подключения по IP-адресу сервера.
    • Логин по умолчанию: root (или созданный вами пользователь с sudo).
    • Пароль указан в письме с данными сервера или в панели proxify.cloud во вкладке Access & Security.
ssh root@ВАШ_IP_АДРЕС

2. Определение пути к файлам сервера

На выделенных серверах proxify.cloud файлы Minecraft обычно находятся в домашней директории пользователя, от имени которого запущен сервер, или в /opt/minecraft. Проверьте системные службы или скрипты запуска.

  1. Посмотрите, под каким пользователем запущен процесс Java:
ps aux | grep java

Пример вывода:

minecraft  1234  150  12.3  8500000 1200000 pts/0  Sl   10:00   0:45 java -Xms4G -Xmx4G -jar paper.jar nogui
  1. Определите рабочую директорию этого процесса:
pwdx 1234

Результат (пример): /home/minecraft/server. Это ваш корневой путь сервера ($SERVER_ROOT). Далее в инструкции используйте этот путь.

3. Остановка сервера перед установкой

Установка датапаков на работающий сервер может привести к повреждению миров или ошибкам загрузки. Обязательно остановите сервер корректно.

  1. Если сервер запущен через systemd (стандарт для proxify.cloud Ubuntu):
sudo systemctl stop minecraft
  1. Если сервер запущен в screen/tmux вручную:
    • Подключитесь к сессии: screen -r minecraft (или tmux attach -t minecraft).
    • Введите команду stop в консоли сервера.
    • Дождитесь полной остановки (процесс java исчезнет из ps aux).

4. Понимание структуры датапаков

Датапаки устанавливаются на уровне конкретного мира, а не глобально для всего сервера.

Путь к папке датапаков:

$SERVER_ROOT/world/datapacks/

Где world — это имя папки вашего основного мира (задается в server.properties параметром level-name). Если у вас несколько миров (Nether, End, мультиверс через плагины), датапаки нужно устанавливать в папку datapacks каждого мира отдельно.

Пример структуры:

/home/minecraft/server/
├── paper.jar
├── server.properties
├── world/                 <-- level-name=world
│   ├── datapacks/         <-- СЮДА КЛАДЕМ ДАТАПАКИ
│   ├── region/
│   └── level.dat
├── world_nether/          <-- level-name=world_nether (если отдельно)
│   └── datapacks/
└── world_the_end/
    └── datapacks/

5. Скачивание датапаков (прямые ссылки)

Лучше всего скачивать файлы прямо на сервер через wget или curl, чтобы не загружать их на ПК и не передавать через SFTP.

  1. Перейдите в папку датапаков целевого мира:
cd /home/minecraft/server/world/datapacks
  1. Скачайте датапак (пример: Vanilla Tweaks — "Double Shulker Shells"). Используйте прямую ссылку на .zip файл.
wget -O double_shulker_shells.zip "https://vanillatweaks.net/share/double-shulker-shells-1.21.zip"

Важно: Файл должен иметь расширение .zip. Не распаковывайте его — Minecraft читает датапаки именно как ZIP-архивы. Имя файла может быть любым, но без пробелов и кириллицы.

  1. Проверьте, что файл скачался и не пустой:
ls -lh *.zip
file double_shulker_shells.zip

Вывод file должен содержать Zip archive data.

6. Установка через SFTP (альтернатива)

Если у вас файл на локальном компьютере:

  1. В панели proxify.cloud во вкладке Access & Security проверьте, что порт 22 (SSH/SFTP) открыт в фаерволе (Firewall).
  2. Подключитесь через FileZilla / WinSCP / Termius:
    • Host: IP сервера
    • Port: 22
    • Protocol: SFTP
    • User: minecraft (или root, но тогда исправьте права доступа)
    • Password: ваш пароль SSH
  3. Перетащите .zip файл в /home/minecraft/server/world/datapacks/.
  4. Критически важно: Если загружали от root, верните права пользователю сервера:
chown -R minecraft:minecraft /home/minecraft/server/world/datapacks/

7. Проверка совместимости версий

Датапак должен соответствовать версии ядра сервера (Paper/Spigot/Purpur/Folia).

  1. Узнайте версию сервера:
grep "version" /home/minecraft/server/paper.jar 2>/dev/null | head -1 || java -jar /home/minecraft/server/paper.jar --version 2>&1 | head -5

Или просто посмотрите лог запуска latest.log на строку Starting minecraft server version 1.21.x.

  1. Сравните с версией датапака (обычно указана в названии файла или на сайте загрузки).
    • Формат датапака (pack_format) для версий:
      • 1.21.x → 48 (или 48-52 для экспериментальных)
      • 1.20.x → 41 (1.20.4), 34 (1.20-1.20.3)
      • 1.19.x → 10 (1.19.3-1.19.4), 9 (1.19-1.19.2)
    • Откройте pack.mcmeta внутри архива для точной проверки:
      unzip -p double_shulker_shells.zip pack.mcmeta
      
      Пример корректного pack.mcmeta для 1.21:
      {"pack":{"pack_format":48,"description":"Vanilla Tweaks"}}
      

8. Настройка server.properties (для новых миров)

Если вы создаете новый мир и хотите, чтобы датапаки применились сразу при генерации:

  1. Остановите сервер.
  2. Удалите старую папку мира (или переименуйте): mv world world_old_backup.
  3. Положите нужные датапаки в /home/minecraft/server/world/datapacks/ до первого запуска (папка world создастся при старте, поэтому создайте её вручную: mkdir -p world/datapacks).
  4. Запустите сервер. Датапаки применятся при генерации чанков.

Для существующего мира датапаки подключатся при следующем заходе игрока / перезагрузке чанков (команда /reload или рестарт).

9. Запуск сервера и верификация

  1. Запустите сервер через systemd (стандарт proxify.cloud):
sudo systemctl start minecraft
  1. Следите за логом в реальном времени:
tail -f /home/minecraft/server/logs/latest.log
  1. Найдите строки загрузки датапаков:
[Server thread/INFO]: Loaded 7 recipes
[Server thread/INFO]: Loaded 12 advancements
[Server thread/INFO]: Found 3 data packs in world 'world': [vanilla, double_shulker_shells, another_pack]

Если датапак не появился в списке — проверьте расширение файла (обязательно .zip), права доступа и версию pack_format.

10. Проверка внутри игры

  1. Зайдите на сервер.
  2. Введите команду:
    /datapack list
    
  3. В чате появится список. Ваш датапак должен быть в разделе Enabled (или Available — тогда включите командой /datapack enable "file/имя_файла").
  4. Проверьте работоспособность фичи датапака (крафт, дроп, адвансмент).

11. Обновление датапаков

  1. Остановите сервер (systemctl stop minecraft).
  2. Удалите старый .zip из world/datapacks/.
  3. Скачайте новую версию (шаг 5).
  4. Запустите сервер.
  5. Важно: После обновления датапаков, меняющих генерацию мира (новые структуры, биомы), уже сгенерированные чанки не изменятся. Эффект виден только в новых чанках.

12. Автоматизация через скрипт (опционально)

Создайте скрипт для быстрого обновления набора датапаков:

cat > /home/minecraft/update_datapacks.sh << 'EOF'
#!/bin/bash
SERVER_ROOT="/home/minecraft/server"
WORLD="world"
cd "$SERVER_ROOT/$WORLD/datapacks" || exit 1

# Массив ссылок (прямые .zip)
PACKS=(
  "https://vanillatweaks.net/share/double-shulker-shells-1.21.zip double_shulker.zip"
  "https://example.com/another_pack.zip another_pack.zip"
)

for entry in "${PACKS[@]}"; do
  URL=$(echo $entry | awk '{print $1}')
  NAME=$(echo $entry | awk '{print $2}')
  echo "Updating $NAME..."
  wget -q -O "$NAME.tmp" "$URL" && mv "$NAME.tmp" "$NAME"
done

chown -R minecraft:minecraft "$SERVER_ROOT/$WORLD/datapacks"
echo "Done. Restart server to apply."
EOF

chmod +x /home/minecraft/update_datapacks.sh

Запуск: sudo -u minecraft /home/minecraft/update_datapacks.sh (перед рестартом).


Возможные проблемы и решения

1. Датапак не появляется в /datapack list

  • Причина: Файл не .zip (например, .jar или папка).
  • Решение: Только .zip архивы. Если скачали папку — запакуйте: zip -r pack_name.zip pack_folder/.
  • Причина: Не тот мир. Вы кладете в world/datapacks, а сервер грузит world_new.
  • Решение: Проверьте level-name в server.properties и кладите датапаки именно туда.

2. Ошибка Missing pack.mcmeta или Unsupported pack format

  • Причина: Внутри архива нет pack.mcmeta или pack_format не совпадает с версией сервера.