В этом гайде вы сделаете Рубиновый блок: блестящий красный куб, который слегка светится, добывается не сразу и выпадает сам собой, когда его ломают. Это "hello world" в создании блоков, и любой более навороченный блок начинается точно так же.
Сделать его можно двумя способами. Быстрый займёт пару минут на телефоне. Ручной научит вас, зачем нужен каждый файл.
Быстрый способ: GodCraft
GodCraft сам создаёт блок, его текстуру, название и добычу. Вам не придётся трогать ни одного JSON-файла.
- Откройте Мастерскую и добавьте в свой аддон Блок.
- Нарисуйте грани в пиксельном редакторе или возьмите ванильную текстуру и перекрасьте её.
- Укажите, сколько времени он добывается, сколько света даёт и что из него выпадает.
- Нажмите Экспорт. GodCraft запишет манифесты, UUID и языковые файлы и выдаст вам
.mcaddon.
Хотите узнать, что происходит внутри? Читайте дальше.
Вручную
Вам нужны уже настроенные пакет поведения (BP) и пакет ресурсов (RP). Если вы их ещё не сделали, сначала пройдите Настройку проекта. Мы будем использовать пространство имён myname; везде замените его на своё короткое имя.
Вот все файлы, с которыми вы будете работать:
| Файл | Пакет | Что делает |
|---|---|---|
blocks/ruby_block.json | BP | Что это за блок и как он себя ведёт |
loot_tables/blocks/ruby_block.json | BP | Что из него выпадает |
textures/blocks/ruby_block.png | RP | Картинка |
textures/terrain_texture.json | RP | Даёт картинке короткое имя |
blocks.json | RP | Звук, который он издаёт |
texts/en_US.lang | RP | Название, которое видят игроки |
Шаг 1: файл блока
Создайте этот файл в пакете поведения:
{
"format_version": "1.26.50",
"minecraft:block": {
"description": {
"identifier": "myname:ruby_block",
"menu_category": {
"category": "construction"
}
},
"components": {
"minecraft:destructible_by_mining": {
"seconds_to_destroy": 3
},
"minecraft:destructible_by_explosion": {
"explosion_resistance": 6
},
"minecraft:friction": 0.4,
"minecraft:light_emission": 4,
"minecraft:map_color": "#9b1c2b",
"minecraft:geometry": "minecraft:geometry.full_block",
"minecraft:material_instances": {
"*": {
"texture": "ruby_block",
"render_method": "opaque"
}
},
"minecraft:loot": "loot_tables/blocks/ruby_block.json"
}
}
}Часть description говорит, кто этот блок:
identifier- это ID блока из вашего пространства имён и названия. Его вы будете вводить в командах вроде/give @s myname:ruby_block.menu_categoryвыбирает вкладку творческого инвентаря. Варианты:construction,nature,equipment,itemsиnone(скрыт).
Часть components говорит, как он себя ведёт:
minecraft:destructible_by_mining:seconds_to_destroy- сколько времени его добывать голой рукой. У каменных блоков обычно от 1.5 до 3.minecraft:destructible_by_explosion: чем большеexplosion_resistance, тем труднее его взорвать динамиту и криперам.minecraft:friction: число от 0 до 0.9. Чем больше, тем лучше сцепление; у блоков вроде льда значение маленькое.minecraft:light_emission: целое число от 0 (нет света) до 15 (ярко, как факел или светокамень).minecraft:map_color: цвет блока на карте в формате hex.minecraft:geometry: форма.minecraft:geometry.full_block- обычный куб, так что файл модели не нужен.minecraft:material_instances: какая текстура на какой грани. Ключ*означает "все грани".texture- короткое имя, которое вы зададите в шаге 3.minecraft:loot: таблица добычи, которая используется, когда блок ломают.
Разные грани
Хотите, чтобы верх и бока отличались, как у блока травы? Добавьте рядом с * в material_instances ещё ключи, например up, down, north, south, east и west. Любая грань, которую вы не указали, берёт *.
Шаг 2: текстура
Нарисуйте PNG размером 16x16 пикселей и сохраните его в пакете ресурсов как RP/textures/blocks/ruby_block.png.
Впервые рисуете пиксель-арт? В гайде Пиксельные текстуры рассказано о размерах, прозрачности и тенях.
Шаг 3: дайте текстуре короткое имя
Блоки не ссылаются на PNG-файлы напрямую. Они используют короткое имя из terrain_texture.json. Если этот файл в пакете уже есть, добавьте запись ruby_block в texture_data. Если нет, создайте его:
{
"resource_pack_name": "myname",
"texture_name": "atlas.terrain",
"texture_data": {
"ruby_block": {
"textures": "textures/blocks/ruby_block"
}
}
}Обратите внимание: в конце пути нет .png. Игра сама найдёт файл.
Шаг 4: звук
Файл blocks.json в пакете ресурсов говорит игре, какой набор звуков играть, когда по блоку ходят, ставят его или ломают:
{
"format_version": "1.21.40",
"myname:ruby_block": {
"sound": "stone"
}
}Другие частые наборы звуков ванильных блоков: wood, glass, metal, grass, sand, cloth, copper и deepslate.
Шаг 5: название
Без названия игра покажет что-то вроде tile.myname:ruby_block.name. Добавьте эту строку в языковой файл:
tile.myname:ruby_block.name=Ruby BlockШаг 6: добыча
Таблица добычи решает, что выпадет. Эта выдаёт сам блок, один раз:
{
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "myname:ruby_block"
}
]
}
]
}Замените name на ID любого предмета, например minecraft:diamond, чтобы из блока выпадало что-то другое.
Проверьте блок
- Экспортируйте и установите оба пакета, как показано в разделе Экспорт и установка, а затем включите их в мире.
- Откройте творческий инвентарь и загляните во вкладку Строительство или выполните
/give @s myname:ruby_block. Смотрите /give. - Поставьте его ночью: он должен мягко светиться.
- Переключитесь в режим выживания и добудьте его. Это должно занять несколько секунд, а выпасть должен сам блок.
Частые проблемы
Фиолетово-чёрная шахматка
Игра не может найти текстуру. Проверьте, что короткое имя в material_instances точно совпадает с ключом в terrain_texture.json, а путь в terrain_texture.json совпадает с настоящим расположением файла без .png.
- Блока нет в инвентаре. Проверьте, что
menu_categoryне равенnoneи что пакет поведения включён. - У блока странное название. В строке
.langдолжен быть полный ID вместе с пространством имён. - Из блока ничего не выпадает. Проверьте, что путь в
minecraft:lootначинается сloot_tables/и совпадает с именем файла.
Другие решения есть в разделе Когда что-то сломалось.
Что дальше
- Посмотрите все компоненты блоков в справочнике, начиная с material instances.
- Узнайте, как Mojang делает свои блоки, в разделе Ванильные блоки.
- Готовы к чему-то живому? Попробуйте Ваш первый моб.