MAATRIX GAMES / Блог / Ресурс-паки и датапаки: установка на сервер

Ресурс-паки и датапаки: установка на сервер

MAATRIX GAMES

Хотите перекрасить сервер под свою тематику или поменять баланс крафта — и путаетесь, что для этого нужно: ресурс-пак или датапак? Путаница на пустом месте: это два совершенно разных механизма, один меняет картинку, другой — правила игры, и работают они по-разному даже с точки зрения того, где физически лежат файлы и кто их применяет. Разберём оба по порядку: что это, куда класть, как проверить, что заработало, и на какие грабли обычно натыкаются в первый раз.

Ресурс-пак и датапак — принципиально разные вещи

Ресурс-пак (resource pack) меняет визуал и звук: текстуры блоков и мобов, 3D-модели предметов, звуковые эффекты, музыку, шрифты, даже язык интерфейса. Это чисто клиентская история — файлы применяются в момент захода игрока на сервер, но обрабатывает их клиент Minecraft на стороне игрока. Сервер сам по себе картинку не рисует, он может только предложить игроку скачать пак или потребовать это как условие входа.

Датапак (data pack) меняет игровую логику: рецепты крафта, лут-таблицы (что выпадает из сундуков и мобов), продвижения (advancements), кастомные функции на встроенном языке команд, генерацию структур, поведение конкретных предметов через кастомную механику. Датапак работает на сервере — клиенту вообще ничего скачивать не нужно, игрок просто видит результат (новый рецепт, изменённый лут) без каких-либо действий со своей стороны.

Итого: ресурс-пак — это то, что видит и слышит игрок локально у себя, датапак — это то, как ведёт себя игровой мир на сервере. Их можно использовать вместе и независимо друг от друга, и они решают совсем разные задачи — не путайте их между собой, когда ищете готовые паки в интернете: часто под одним и тем же названием тематического "пака" на самом деле идёт связка из обоих типов сразу.

Ресурс-пак: как сервер предлагает его игроку

Сервер не хранит и не раздаёт ресурс-пак сам по себе — ему нужна прямая ссылка на готовый zip-архив, размещённый где-то в интернете (на вашем же хостинге, в облачном хранилище с прямой ссылкой на файл, или на специализированных сервисах вроде MC-Packs). В server.properties за это отвечают четыре параметра:

resource-pack=https://example.com/packs/my-texture-pack.zip
resource-pack-sha1=3f786850e387550fdab836ed7e6dc881de23001
resource-pack-prompt=Скачайте пак текстур для этого сервера — иначе часть блоков будет выглядеть по-разному у игроков
require-resource-pack=false
  • resource-pack — прямая ссылка на zip-файл. Важно: ссылка должна отдавать файл напрямую (без редиректов и без HTML-страницы вместо архива), иначе клиент не сможет его скачать.
  • resource-pack-sha1 — контрольная сумма SHA-1 архива. Клиент сверяет её после скачивания, и если сумма не совпадает, пак не применится. Посчитать её можно так:
# Linux/macOS
sha1sum my-texture-pack.zip

# macOS (альтернатива)
shasum -a 1 my-texture-pack.zip
  • resource-pack-prompt — текст, который увидит игрок в диалоге "скачать пак?" при входе. Без него Minecraft покажет стандартную фразу, с ним — вашу.
  • require-resource-pack — если true, игрок, отказавшийся скачать пак (или у которого он не загрузился), будет отключён от сервера с соответствующим сообщением. Ставьте true только если без пака игра реально ломается (например, кастомные модели предметов критичны для геймплея) — для чисто косметических паков лучше оставить false, чтобы не терять игроков на пустом месте.

Поднять сервер Minecraft за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Пошаговая установка ресурс-пака

  1. Соберите или скачайте архив. Структура минимального ресурс-пака: в корне zip лежит pack.mcmeta и папка assets/. Пример pack.mcmeta:
{
  "pack": {
    "pack_format": 34,
    "description": "Тематический пак для сервера"
  }
}

Число pack_format жёстко привязано к версии Minecraft (для 1.20.x это один диапазон значений, для 1.21.x — другой). Несовпадение формата не всегда ломает пак полностью, но клиент покажет предупреждение "этот пак предназначен для другой версии игры", а часть ассетов может не подхватиться — сверяйтесь с официальной вики Minecraft на актуальные номера под вашу версию перед сборкой.

  1. Разместите zip там, где есть прямая ссылка. Проще всего — залить архив на тот же веб-сервер, где крутится сайт вашего проекта, или на файловый хостинг с прямыми ссылками. Проверьте ссылку в браузере: если по клику сразу начинается скачивание zip, а не открывается страница — всё правильно.
  1. Посчитайте SHA-1 и пропишите оба параметра (resource-pack и resource-pack-sha1) в server.properties, добавьте понятный resource-pack-prompt.
  1. Перезапустите сервер. В отличие от датапаков, для ресурс-пака /reload не поможет — параметры server.properties подхватываются только при старте процесса. Игроки, уже находящиеся на сервере в момент, когда вы поменяли пак, получат предложение скачать новую версию только при следующем входе.
  1. Проверьте на своём клиенте. Зайдите на сервер, подтвердите скачивание пака в диалоге — и посмотрите, применились ли текстуры. Если пак не грузится, первым делом проверяйте именно доступность прямой ссылки и совпадение SHA-1 — это две самые частые причины молчаливого отказа клиента применять пак.

Датапак: где живёт и как устроен

Датапак — это папка (или zip-архив с такой же внутренней структурой) внутри world/datapacks/, где world — это папка мира вашего сервера (её имя задаётся параметром level-name в server.properties, по умолчанию так и называется world). Минимальная структура датапака:

world/datapacks/my_datapack/
├── pack.mcmeta
└── data/
    └── my_namespace/
        ├── recipe/
        │   └── custom_recipe.json
        ├── loot_table/
        │   └── custom_loot.json
        └── function/
            └── my_function.mcfunction

pack.mcmeta датапака устроен так же, как у ресурс-пака, только смысл pack_format немного другой набор чисел — версии датапаков и ресурс-паков нумеруются отдельно, не путайте их между собой при поиске готовых значений:

{
  "pack": {
    "pack_format": 26,
    "description": "Кастомные рецепты и лут для сервера"
  }
}

Внутри data/<namespace>/ лежит вся логика: JSON-файлы рецептов и лут-таблиц, .mcfunction файлы с последовательностями команд, продвижения, теги (например, чтобы добавить предмет в существующую категорию крафта). Формат этих JSON-файлов задокументирован на официальной вики Minecraft — руками их пишут редко, обычно берут готовый датапак и правят конкретные значения под себя.

Установка датапака и команда /reload

  1. Скачайте или соберите датапак — либо готовую папку, либо zip-архив (оба варианта работают одинаково, класть в datapacks/ можно и то, и другое без распаковки).
  1. Загрузите файл на сервер. Через FTP/SFTP-клиент (FileZilla, WinSCP) или файловый менеджер в панели управления хостинга — положите папку или zip прямо в world/datapacks/, рядом с уже установленными паками, если они есть.
  1. Примените без рестарта командой /reload. В отличие от ресурс-пака, датапаки подхватываются на лету — команду вводит игрок с правами оператора (или через консоль сервера):
/reload

Сервер пересканирует папку datapacks/, подгрузит новые и выгрузит удалённые паки. Учтите: /reload иногда приводит к кратковременному фризу сервера на пару секунд, особенно если датапаков много или они тяжёлые по логике — лучше делать это не в разгар боя с боссом, а в спокойный момент.

  1. Проверьте список активных датапаков командой:
/datapack list

Она покажет, какие паки включены (enabled), а какие есть в папке, но выключены (available). Если ваш новый датапак попал во вторую категорию — включите его явно:

/datapack enable "file/my_datapack"
  1. Проверьте результат в игре — откройте верстак (для рецептов), убейте моба или откройте сундук (для лута), выполните кастомную команду (для функций). Если ничего не изменилось, проверьте лог сервера (logs/latest.log) на ошибки парсинга JSON — опечатка в одной запятой в лут-таблице не уронит сервер, но тихо не даст датапаку загрузиться.

Где брать готовые паки и на что смотреть с авторскими правами

Ресурс-паки ищут на Planet Minecraft, CurseForge и Modrinth — там указана лицензия автора прямо на странице пака. Датапаки чаще всего лежат на тех же CurseForge и Modrinth, плюс на специализированных сайтах вроде Vanilla Tweaks, где собраны десятки небольших "точечных" датапаков (расширенный лут в шалкерах, автоматическая сортировка сундуков, кастомные команды телепорта) — их удобно комбинировать по одному, а не ставить целиком чужую сборку.

Важный нюанс с правами: большинство паков распространяются под лицензиями вроде CC-BY-NC (некоммерческое использование с указанием автора) — если сервер монетизируется (донат-магазин, платный ранг), формально стоит либо получить разрешение автора, либо выбрать пак с более свободной лицензией. Не берите паки с пиратских агрегаторов без указания источника и автора — риск не только в юридической стороне, но и в том, что такие архивы иногда содержат не то, что заявлено на упаковке. Если собираете модпак с модами и датапаками одновременно, стоит заранее свериться с разницей платформ — она хорошо разобрана в статье про выбор между Forge, Fabric и Paper: датапаки работают на любой из этих платформ (это ванильный механизм), а вот совместимость с конкретными модами уже зависит от сборки.

Поднять сервер Minecraft за пару минут

Готовый образ MAATRIX GAMES: NVMe, AMD EPYC, DDoS-защита, панель управления. Локации UK, US, RU. Оплата картой РФ, СБП или криптой.

Создать сервер

Частые вопросы

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

Да, датапак применяется сразу после установки и /reload — но он не переписывает то, что уже сгенерировано (например, лут в уже открытых сундуках не изменится, изменится только для новых). Для рецептов и функций разницы нет — они начинают работать сразу для всех.

Почему у одного игрока пак применился, а у другого нет?

Чаще всего дело в кэше клиента — Minecraft хранит скачанные ресурс-паки локально и может не перекачать обновлённую версию, если имя файла и часть параметров не изменились. Попросите игрока очистить кэш ресурс-паков в настройках клиента или переименуйте архив при каждом обновлении.

Работает ли require-resource-pack вместе с require-resource-pack=false у части игроков?

Нет, это глобальная серверная настройка — она одна на весь сервер и применяется ко всем подключениям одинаково, выборочно отключить требование для отдельных игроков нельзя.

Нужно ли перезапускать сервер после каждого нового датапака?

Нет, для этого и существует /reload — рестарт нужен только для параметров server.properties, включая настройки ресурс-пака.

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

Да, ограничений по количеству нет — просто кладите каждый в свою подпапку внутри world/datapacks/. Если два датапака трогают один и тот же рецепт или лут-таблицу, применится тот, что идёт последним по алфавитному порядку имён папок (или по явному приоритету, если он задан в pack.mcmeta через overlays) — при конфликтах проверяйте лог на предупреждения.