1. Вики
  2. /Блоки
  3. /Ваш первый блок

Ваш первый блок

Сделайте светящийся рубиновый блок для Minecraft Bedrock: файл блока, текстура, звук, название и добыча, шаг за шагом.

В этом гайде вы сделаете Рубиновый блок: блестящий красный куб, который слегка светится, добывается не сразу и выпадает сам собой, когда его ломают. Это "hello world" в создании блоков, и любой более навороченный блок начинается точно так же.

Сделать его можно двумя способами. Быстрый займёт пару минут на телефоне. Ручной научит вас, зачем нужен каждый файл.

Быстрый способ: GodCraft

GodCraft сам создаёт блок, его текстуру, название и добычу. Вам не придётся трогать ни одного JSON-файла.

  1. Откройте Мастерскую и добавьте в свой аддон Блок.
  2. Нарисуйте грани в пиксельном редакторе или возьмите ванильную текстуру и перекрасьте её.
  3. Укажите, сколько времени он добывается, сколько света даёт и что из него выпадает.
  4. Нажмите Экспорт. GodCraft запишет манифесты, UUID и языковые файлы и выдаст вам .mcaddon.

Хотите узнать, что происходит внутри? Читайте дальше.

Вручную

Вам нужны уже настроенные пакет поведения (BP) и пакет ресурсов (RP). Если вы их ещё не сделали, сначала пройдите Настройку проекта. Мы будем использовать пространство имён myname; везде замените его на своё короткое имя.

Вот все файлы, с которыми вы будете работать:

ФайлПакетЧто делает
blocks/ruby_block.jsonBPЧто это за блок и как он себя ведёт
loot_tables/blocks/ruby_block.jsonBPЧто из него выпадает
textures/blocks/ruby_block.pngRPКартинка
textures/terrain_texture.jsonRPДаёт картинке короткое имя
blocks.jsonRPЗвук, который он издаёт
texts/en_US.langRPНазвание, которое видят игроки

Шаг 1: файл блока

Создайте этот файл в пакете поведения:

BP/blocks/ruby_block.json
{
  "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. Если нет, создайте его:

RP/textures/terrain_texture.json
{
  "resource_pack_name": "myname",
  "texture_name": "atlas.terrain",
  "texture_data": {
    "ruby_block": {
      "textures": "textures/blocks/ruby_block"
    }
  }
}

Обратите внимание: в конце пути нет .png. Игра сама найдёт файл.

Шаг 4: звук

Файл blocks.json в пакете ресурсов говорит игре, какой набор звуков играть, когда по блоку ходят, ставят его или ломают:

RP/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. Добавьте эту строку в языковой файл:

RP/texts/en_US.lang
tile.myname:ruby_block.name=Ruby Block

Шаг 6: добыча

Таблица добычи решает, что выпадет. Эта выдаёт сам блок, один раз:

BP/loot_tables/blocks/ruby_block.json
{
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "item",
          "name": "myname:ruby_block"
        }
      ]
    }
  ]
}

Замените name на ID любого предмета, например minecraft:diamond, чтобы из блока выпадало что-то другое.

Проверьте блок

  1. Экспортируйте и установите оба пакета, как показано в разделе Экспорт и установка, а затем включите их в мире.
  2. Откройте творческий инвентарь и загляните во вкладку Строительство или выполните /give @s myname:ruby_block. Смотрите /give.
  3. Поставьте его ночью: он должен мягко светиться.
  4. Переключитесь в режим выживания и добудьте его. Это должно занять несколько секунд, а выпасть должен сам блок.

Частые проблемы

Фиолетово-чёрная шахматка

Игра не может найти текстуру. Проверьте, что короткое имя в material_instances точно совпадает с ключом в terrain_texture.json, а путь в terrain_texture.json совпадает с настоящим расположением файла без .png.

  • Блока нет в инвентаре. Проверьте, что menu_category не равен none и что пакет поведения включён.
  • У блока странное название. В строке .lang должен быть полный ID вместе с пространством имён.
  • Из блока ничего не выпадает. Проверьте, что путь в minecraft:loot начинается с loot_tables/ и совпадает с именем файла.

Другие решения есть в разделе Когда что-то сломалось.

Что дальше

We use cookies to improve your experience and analyse site traffic. Learn more