MC Toolkit

Руководства / Команды и данные

Пользовательские рецепты: shaped, shapeless и теги вместо перечисления каждой древесины

Если shaped-рецепт не крафтится, обычно проблема в ключе. Здесь — JSON, то, что игра сама обрезает в шаблоне, трюк с тегом, превращающий тринадцать рецептов в один, и способы проверки.

Рецепты — одни из самых простых файлов датапака и одни из самых простых в незаметной ошибке: сломанный рецепт молчит, сетка крафта просто ничего не делает.

Shaped

{
  "type": "minecraft:crafting_shaped",
  "pattern": [ "SSS", "S S", "SSS" ],
  "key": { "S": "minecraft:stone" },
  "result": { "id": "minecraft:furnace", "count": 1 }
}

Три правила, из-за которых возникает большинство ошибок:

  • Каждый символ в pattern должен присутствовать в key, кроме пробела, который означает пустую ячейку.
  • Шаблон относителен, а не абсолютен. Игра обрезает пустые строки и столбцы по краям, так что сетка 2×2, дополненная пробелами до 3×3, всё равно скрафтится в любом месте сетки — но записать её двумя строками по два символа понятнее.
  • Все строки должны быть одной длины. ["SS", "S"] недопустим.

Shapeless

{
  "type": "minecraft:crafting_shapeless",
  "ingredients": ["minecraft:stone", "minecraft:coal"],
  "result": { "id": "minecraft:torch", "count": 4 }
}

Порядок не важен. Повторяющиеся предметы указываются по одному разу каждый — два угля означают две записи.

Теги сворачивают целое семейство в один рецепт

Вместо тринадцати рецептов для тринадцати видов досок:

"key": { "P": "#minecraft:planks" }

# обозначает тег предметов. #minecraft:planks, #minecraft:logs, #minecraft:wool, #minecraft:stone_crafting_materials и десятки других уже существуют. Чтобы определить свой, нужен один файл:

data/<namespace>/tags/item/my_metals.json
{ "values": ["minecraft:iron_ingot", "minecraft:gold_ingot"] }

Обратите внимание на tags/item/ — единственное число item, множественное tags. Это несоответствие настоящее.

Результат с компонентами

"result": {
  "id": "minecraft:diamond_sword",
  "count": 1,
  "components": { "minecraft:custom_name": "Excalibur", "minecraft:enchantments": { "sharpness": 5 } }
}

Так пользовательский предмет становится крафтящимся без мода.

Другие типы рецептов

crafting_shaped и crafting_shapeless — лишь два из многих. Также доступны: smelting, blasting, smoking, campfire_cooking, stonecutting, smithing_transform и smithing_trim. Типы готовки принимают cookingtime и experience; камнерез принимает один ингредиент и количество.

Проверка

/reload, затем попробуйте сетку. Если ничего не происходит:

  1. Проверьте лог игры (latest.log) после /reload — некорректный JSON сообщается там, а не в чате.
  2. /recipe give @s <namespace>:<recipe> — если id рецепта неверный, это выдаст ошибку, а значит, файл вообще не читается.
  3. Разблокировка рецепта — не то же самое, что его существование. Рецепт работает в сетке, даже если он никогда не появляется в книге рецептов.

Собирайте JSON рецептов, предикатов и наборов, проверяя ключи и теги в Datapack JSON Builders.

Конструкторы JSON для наборов данных →

Другие руководства

Смотреть все →