Как сделать свой ресурспак для Minecraft
Пошаговое руководство по созданию ресурспака для Minecraft: структура папок, pack.mcmeta, замена текстур и звуков, кастомные модели, упаковка и тест.
Кратко: Ресурспак - это zip-архив с чёткой структурой папок, файлом pack.mcmeta и ассетами. Создать его можно в любом текстовом редакторе и графическом редакторе без модов. После упаковки достаточно указать ссылку в server.properties - и все игроки сервера получат твои текстуры автоматически.
Как сделать свой ресурспак для Minecraft
Собственный ресурспак даёт серверу уникальный визуальный стиль: замену стандартных текстур блоков и предметов, новые звуки, кастомные 3D-модели через механику CustomModelData - и всё это без единого мода. В 2026 году формат ресурспаков устоялся начиная с Minecraft 1.14, а актуальный pack_format для 1.21+ равен 34. Создание пака доступно любому человеку с Photoshop или даже Paint.NET: никаких специальных знаний Java или Python не требуется. В этой статье разберём полный путь от пустой папки до работающего пака на сервере.
Pterohost - игровой хостинг с NVMe-дисками, DDoS-защитой уровня L3/L4/L7 и поддержкой 24/7 - идеальная база для сервера с кастомным ресурспаком. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг
Структура папок ресурспака
Ресурспак - это обычная папка (или zip-архив) с жёстко заданной иерархией. Minecraft не читает файлы вне этой структуры. Вот минимальный скелет:
my_resourcepack/
├── pack.mcmeta
├── pack.png (необязательно, превью 64x64 или 128x128)
└── assets/
└── minecraft/
├── textures/
│ ├── block/
│ ├── item/
│ ├── entity/
│ └── gui/
├── models/
│ ├── block/
│ └── item/
├── sounds/
└── sounds.json
Папка assets/minecraft/ - пространство имён (namespace) ванильной игры. Если ты создаёшь контент для стороннего мода или для своей игры поверх ванилли - можно добавить свой namespace, например assets/myserver/. Для чистой замены ванильных ассетов используй только assets/minecraft/.
Правила именования файлов:
- только строчные буквы
a-z, цифры0-9, символы_,-,. - никаких пробелов и кириллицы в именах файлов и папок
- расширение
.pngдля текстур,.jsonдля моделей,.oggдля звуков
pack.mcmeta и pack_format
Файл pack.mcmeta - обязательный манифест, без него Minecraft не увидит пак. Это JSON-файл:
{
"pack": {
"pack_format": 34,
"description": "Мой кастомный ресурспак для сервера"
}
}
Поле description поддерживает цвета через коды форматирования (§6 и т.д.), но в большинстве случаев достаточно просто текста.
Таблица актуальных значений pack_format по версиям:
| Версия Minecraft | pack_format |
|---|---|
| 1.21 - 1.21.1 | 34 |
| 1.20.5 - 1.20.6 | 32 |
| 1.20.3 - 1.20.4 | 26 |
| 1.20.2 | 22 |
| 1.20 - 1.20.1 | 22 |
| 1.19.4 | 13 |
| 1.19 - 1.19.3 | 12 |
| 1.18 - 1.18.2 | 8 |
| 1.17 - 1.17.1 | 7 |
Если ты хочешь, чтобы пак работал на нескольких версиях, можно указать диапазон через поле supported_formats (появилось в 1.20.2+):
{
"pack": {
"pack_format": 34,
"supported_formats": [22, 34],
"description": "Совместимый пак"
}
}
Значение pack_format при этом должно соответствовать старшей поддерживаемой версии.
Замена текстур блоков и предметов
Самое простое - заменить текстуру существующего блока или предмета. Например, хочешь изменить внешний вид камня (stone).
Алгоритм:
- Найди оригинал в установленных файлах игры - в папке
.minecraft/versions/{версия}/{версия}.jar(это обычный zip, открой архиватором). - Внутри jar найди
assets/minecraft/textures/block/stone.png. - Скопируй его в свой пак по тому же пути:
assets/minecraft/textures/block/stone.png. - Отредактируй PNG в своём редакторе. Размер должен быть кратным 2 (16x16, 32x32 и т.д.).
- Сохрани файл.
Для анимированных текстур (лава, вода, порталы) рядом с PNG кладётся файл .mcmeta. Например, для анимации lava_still.png нужен lava_still.png.mcmeta:
{
"animation": {
"frametime": 2,
"frames": [0, 1, 2, 3, 4, 5, 6, 7]
}
}
Здесь frametime - количество тиков на кадр (1 тик = 0.05 секунды), frames - порядок кадров. Сами кадры расположены вертикально в одном PNG-файле: если текстура 16x16 и кадров 8, то файл должен быть 16x128.
Замена звуков
Звуки в Minecraft хранятся в .ogg формате. Вот как заменить, например, звук удара по камню:
Шаг 1. Создай папку assets/minecraft/sounds/dig/ в своём паке.
Шаг 2. Положи туда файл stone1.ogg (или stone2.ogg и т.д. - Minecraft случайно выбирает из вариантов).
Шаг 3. Создай или дополни assets/minecraft/sounds.json:
{
"dig.stone": {
"sounds": [
"dig/stone1",
"dig/stone2"
]
}
}
Пути в sounds.json указываются без расширения .ogg и без assets/minecraft/sounds/. Minecraft сам добавит эти части пути.
Для конвертации аудио в .ogg без потери качества удобно использовать ffmpeg:
ffmpeg -i input.mp3 -c:a libvorbis -q:a 5 output.ogg
Битрейт -q:a 5 даёт качество около 160 кбит/с - оптимальный баланс для игровых звуков. Файлы весом больше 1-2 МБ нежелательны: они замедляют загрузку пака игроками.
Кастомные 3D-модели через CustomModelData
Механика CustomModelData позволяет привязать произвольную 3D-модель к конкретному числовому ключу на предмете. Это стандарт де-факто для серверных кастомных предметов - используют плагины ItemsAdder, Nexo (бывший Oraxen) и ручная реализация.
Создание модели
Модели Minecraft - это JSON-файлы. Простейшая плоская модель предмета (спрайт):
{
"parent": "item/handheld",
"textures": {
"layer0": "item/my_sword"
}
}
Эту модель кладём в assets/minecraft/models/item/my_sword.json, текстуру - в assets/minecraft/textures/item/my_sword.png.
Для полноценных 3D-моделей (например меч с особой формой рукоятки) удобнее использовать Blockbench - бесплатный редактор моделей Minecraft с экспортом в JSON. Он работает как веб-приложение на blockbench.net и как десктопная программа.
Привязка к предмету
Чтобы Minecraft показывал нашу модель при определённом значении CustomModelData, нужно переопределить модель базового предмета. Например, перегрузим деревянный меч:
Файл assets/minecraft/models/item/wooden_sword.json:
{
"parent": "item/handheld",
"textures": {
"layer0": "item/wooden_sword"
},
"overrides": [
{ "predicate": { "custom_model_data": 1001 }, "model": "item/my_sword" },
{ "predicate": { "custom_model_data": 1002 }, "model": "item/my_axe_custom" }
]
}
Теперь когда игрок держит деревянный меч с тегом {CustomModelData:1001}, Minecraft покажет модель item/my_sword. Выдать такой предмет можно командой:
/give @p minecraft:wooden_sword{CustomModelData:1001} 1
Важно: числа custom_model_data в overrides должны быть строго в возрастающем порядке, иначе Minecraft не будет читать предикаты корректно.
Примечание о Minecraft 1.21.4+
Начиная с 1.21.4 Mojang ввёл новую систему компонентов предметов, и старый формат тега {CustomModelData:N} был заменён на item_model и custom_model_data как компоненты. В ресурспаках для 1.21.4+ рекомендуется использовать новый синтаксис:
/give @p minecraft:wooden_sword[custom_model_data={floats:[1001]}] 1
Если твой сервер работает на 1.21 или ниже - используй старый формат с фигурными скобками.
Работа с текстурами GUI и шрифтами
Замена элементов интерфейса - один из самых популярных запросов для серверных паков. Текстуры GUI лежат в assets/minecraft/textures/gui/.
Часто меняют:
widgets.png- кнопки и полосы прокруткиicons.png- иконки здоровья, голода, опытаcontainer/- интерфейсы сундука, верстака, печиtitle/- фон главного меню
Кастомные шрифты позволяют добавить собственные символы и иконки в чат и книги. Шрифт задаётся в assets/minecraft/font/default.json и ссылается на PNG-спрайт лист. Это продвинутая тема, которую активно используют для создания кастомных HUD без модов.
Упаковка в ZIP-архив
Ресурспак должен быть zip-архивом, в корне которого находятся pack.mcmeta и папка assets/. Важно: архивировать нужно содержимое папки, а не саму папку.
Linux / macOS:
cd my_resourcepack
zip -r ../my_resourcepack.zip .
Windows (PowerShell):
cd my_resourcepack
Compress-Archive -Path * -DestinationPath ..\my_resourcepack.zip
Проверь структуру архива перед публикацией:
unzip -l my_resourcepack.zip | head -20
В выводе первыми строками должны быть pack.mcmeta и assets/, а не my_resourcepack/pack.mcmeta. Если видишь вложенную папку - ты запаковал папку целиком, нужно переупаковать.
Подключение ресурспака к серверу
Загрузи zip-файл на хостинг с прямой ссылкой для скачивания. Подойдут:
- собственный CDN или веб-сервер (самый надёжный вариант)
- GitHub Releases (прямая ссылка на asset)
- Dropbox с
?dl=1в конце ссылки
Получи SHA-1 хеш файла:
sha1sum my_resourcepack.zip
# или на macOS:
shasum -a 1 my_resourcepack.zip
Пропиши в server.properties:
resource-pack=https://example.com/my_resourcepack.zip
resource-pack-sha1=a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4e5f6a1b2
resource-pack-prompt=§eУстанови ресурспак для лучшего опыта!
resource-pack-required=false
Если resource-pack-required=true, игроки без принятого пака не смогут зайти на сервер. Это полезно для RPG-проектов, где визуал критичен.
После изменения server.properties перезапусти сервер. Новые игроки получат приглашение установить пак при входе. Старые игроки увидят обновление при следующем входе.
Тестирование и отладка
Самый быстрый цикл тестирования - в одиночной игре:
- Положи папку пака в
.minecraft/resourcepacks/ - Зайди в Настройки - Ресурспаки и активируй его
- Сделай изменение в файле
- Нажми F3+T для перезагрузки ресурспаков без выхода из игры
Для диагностики проблем открой консоль игры (F3 в режиме разработчика) или посмотри latest.log в папке .minecraft/logs/. Типичные ошибки в логах:
| Ошибка в логе | Причина |
|---|---|
Invalid pack_format | Неверное значение в pack.mcmeta |
Unable to load model | Неверный путь или синтаксис в JSON-модели |
PNG: bad header | Повреждённый или не-PNG файл с расширением .png |
missing texture | Текстура указана в модели, но файл не найден |
sounds.json: unknown sound event | Опечатка в имени события в sounds.json |
Для валидации JSON-файлов используй любой онлайн-валидатор или python3 -m json.tool model.json - он покажет синтаксическую ошибку с номером строки.
Частые ошибки при создании ресурспака
Неверная структура архива. Самая распространённая ошибка - внутри zip находится папка my_resourcepack/, а не сразу pack.mcmeta. Minecraft в этом случае просто не видит пак.
Кириллица в именах файлов. Путь textures/блоки/камень.png не будет работать. Используй только ASCII-символы в нижнем регистре.
Неправильный размер текстуры. Размер 24x24 или 48x48 вызовет артефакты рендеринга. Допустимы только степени двойки: 16, 32, 64, 128, 256.
Устаревший pack_format. Пак с pack_format: 8 (для 1.18) на сервере 1.21 вызовет предупреждение и возможные несовместимости. Всегда обновляй значение при смене версии сервера.
Конфликт предикатов CustomModelData. Если два значения не отсортированы по возрастанию в массиве overrides, Minecraft обработает только ту часть массива, что идёт до неупорядоченного элемента.
Отсутствующий SHA-1 на сервере. Без корректного хеша в resource-pack-sha1 Minecraft каждый раз будет заново скачивать пак при входе игрока, даже если файл не менялся. Это увеличивает время входа и нагрузку на хостинг файлов.
Связанные материалы
Если ты настраиваешь сервер с нуля, полезно ознакомиться с руководством по server.properties - там описаны все ключевые параметры, включая resource-pack-*. При проблемах с производительностью после добавления кастомных текстур загляни в гайд по устранению лагов сервера. Для раздачи кастомных предметов игрокам через команды удобно использовать систему прав - читай про настройку LuckPerms.
Заключение
Создание ресурспака для Minecraft - прямолинейный процесс, если понимать структуру: файл pack.mcmeta с правильным pack_format, папка assets/minecraft/ с текстурами в PNG и моделями в JSON. Для базовой замены текстур достаточно 30-60 минут даже без опыта. Кастомные 3D-модели через CustomModelData требуют чуть больше времени, но открывают возможности, недоступные без модов. Главное - тщательно проверять структуру zip-архива перед публикацией и всегда обновлять SHA-1 хеш в server.properties после каждой замены файла. Результат того стоит: сервер с уникальным визуальным стилем выделяется среди тысяч других и удерживает игроков намного эффективнее.
Pterohost - надёжный хостинг Minecraft с NVMe SSD, автоматической DDoS-защитой и живой поддержкой круглосуточно: идеальное место для запуска сервера с твоим ресурспаком. Промокод 4START даёт -20% на первый заказ. Заказать Minecraft хостинг