Свои иконки предметов, шрифт с логотипом проекта, кастомные модели оружия — всё это раздаётся игрокам автоматически при входе. Механика подключения resource-pack на сервере Minecraft держится на двух параметрах в server.properties и одном требовании: файл должен лежать на прямой ссылке, доступной снаружи.
Именно на ссылке спотыкается большинство: Яндекс.Диск и Google Drive отдают HTML-страницу вместо архива, и клиент честно сообщает об ошибке.
Куда прописывается resource-pack на сервере Minecraft
resource-pack=https://example.ru/packs/mypack.zip
resource-pack-sha1=8f4e2c1a9b3d5e7f0a1b2c3d4e5f60718293a4b5
require-resource-pack=false
resource-pack-prompt=Пак с текстурами нашего сервераЧто делает каждая (полное описание ключей — на Minecraft Wiki):
resource-pack— прямая ссылка на zip-архив. Именно на файл, а не на страницу скачивания.resource-pack-sha1— хэш файла. Клиент кэширует пак по хэшу: если он не менялся, повторная загрузка не происходит. Без хэша пак качается заново при каждом входе.require-resource-pack=true— принудительная загрузка. Отказавшийся игрок получает кик. Появилось в 1.17.resource-pack-prompt— текст в окне подтверждения.
Остальные параметры файла разобраны в настройке server.properties. После правок нужен полный рестарт — /reload эти строки не подхватывает.
Где взять прямую ссылку
Требование одно: по ссылке должен отдаваться сам zip с заголовком Content-Type: application/zip. Проверить просто — вставьте адрес в браузер в режиме инкогнито. Начал скачиваться файл — годится, открылась страница — нет.
Рабочие варианты:
- Свой сервер. Если рядом крутится веб-сервер, положите пак в статику. Дёшево и предсказуемо.
- GitHub Releases. Ссылка вида
https://github.com/user/repo/releases/download/v1/pack.zipотдаёт файл напрямую. Бесплатно и без лимитов на скачивание. - Dropbox. Работает, если заменить
?dl=0на?dl=1в конце ссылки. - Специализированные хостинги паков вроде MCPacks — заточены ровно под эту задачу.
Не работают: Яндекс.Диск, Google Drive, Mail-облако, любые файлообменники с капчей и таймером. Они отдают HTML-страницу, клиент видит не zip и пишет Failed to download resource pack.
Как посчитать SHA-1
Linux и macOS:
sha1sum mypack.zip
shasum -a 1 mypack.zipWindows (PowerShell):
Get-FileHash mypack.zip -Algorithm SHA1Хэш вставляется строчными буквами, без пробелов и дефисов. Считать нужно ровно тот файл, который лежит по ссылке — если вы пересобрали архив после подсчёта, хэш перестанет совпадать, и клиент откажется применять пак.
Отсюда золотое правило обновления: изменили пак — пересчитали хэш — обновили server.properties — перезапустили сервер. Пропустите шаг, и игроки будут сидеть на старой версии из кэша, а вы гадать, почему новые текстуры не видны.
Размер и скорость
Клиент качает пак при подключении, до входа в мир. Пятидесятимегабайтный архив на медленном интернете — это минута чёрного экрана и часть игроков, которые решат, что сервер завис.
Ориентиры по объёму:
- до 5 МБ — незаметно;
- 5–20 МБ — терпимо, если пак того стоит;
- больше 50 МБ — заметный отвал игроков на входе.
У клиента есть жёсткий лимит размера серверного пака (в современных версиях — порядка 250 МБ, в старых меньше), но приближаться к нему не стоит.
Чем ужимают: конвертируют текстуры в оптимизированный PNG, выкидывают неиспользуемые файлы, убирают звуки в высоком битрейте (ogg занимает больше всего), не тащат в пак исходники в PSD.
Принудительный пак: когда включать
require-resource-pack=true оправдан, если без пака игра просто не работает — кастомные предметы выглядят палками, а меню магазина превращается в кашу из символов.
Во всех остальных случаях лучше оставить false: часть аудитории играет со своими шейдерами и модами, и жёсткий кик их отпугнёт.
Промежуточный вариант — выдавать пак по желанию, через команду плагина. ItemsAdder, Oraxen и ResourcePackAPI умеют отправлять пак конкретному игроку или группе, а не всем подряд. Это удобно, когда у разных миров под Multiverse разное оформление.
Ресурспак и Bedrock
Bedrock-игроки, зашедшие через Geyser, Java-пак не получат — форматы разные. Для них нужен отдельный .mcpack, который кладётся в plugins/Geyser-Spigot/packs и раздаётся автоматически. Подробности по кроссплею — в статье про Geyser и Floodgate.
Если сервер за прокси, пак удобнее отдавать плагином на Velocity — тогда он грузится один раз при входе в сеть, а не при каждом переходе между бэкендами.
Частые вопросы
Что делать, если игрок видит «Failed to download resource pack»?
По порядку: ссылка не прямая, файл больше лимита, сервер с паком недоступен, битый zip. Проверьте ссылку в инкогнито — это отсекает 80% случаев.
Почему пак применился, но текстуры старые?
Не совпадает SHA-1, клиент взял версию из кэша. Пересчитайте хэш. Игроку помогает удаление папки server-resource-packs в .minecraft.
Можно ли раздать несколько паков сразу?
С 1.20.3 сервер умеет отправлять стек паков, но server.properties поддерживает только один. Несколько — через плагины или объединением в один архив.
Почему пак не грузится только у части игроков?
Обычно это античит-моды или сборки с OptiFine, конфликтующие по формату pack_format. Проверьте, что значение в pack.mcmeta соответствует версии игры: 34 для 1.21, 18 для 1.20.2 и так далее.
Как проверить, что архив собран правильно?
Внутри zip в корне должны лежать pack.mcmeta и папка assets, без лишней вложенной директории. Лишний уровень — пак «не видит» игра.
Коротко
Прямая ссылка → SHA-1 → две строки в server.properties → рестарт. Дальше следите за размером и не забывайте пересчитывать хэш при каждом обновлении пака. Более подробный разбор с вариантами раздачи есть в статье как раздать ресурспак на сервере.
Если нужен сервер с панелью, где server.properties правится в браузере, — тарифы на Minecraft.