Пользовательские рецепты: фигурные, бесформенные и с использованием тегов вместо перечисления каждого вида древесины
Фигурный рецепт, который не работает, обычно имеет неправильный ключ или избыточный шаблон. Здесь вы найдете JSON, трюк с тегами, который сокращает восемь рецептов до одного, и способы тестирования.
Рецепты — одни из самых простых файлов датапаков для написания, но и одни из самых простых для незаметных ошибок, потому что сломанный рецепт просто молча не работает — сетка крафта просто ничего не делает.
Фигурные
{
"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"]недействителен.
Бесформенные
{
"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, затем попробуйте сетку. Если ничего не происходит:
- Проверьте чат при перезагрузке — там сообщается о неправильном JSON.
/recipe give @s <namespace>:<recipe>— если идентификатор рецепта неверен, это вызывает ошибку, которая
говорит вам, что файл вообще не читается.
- Разблокировка рецепта отделена от существования рецепта. Рецепт работает в сетке, даже если
он никогда не появляется в Книге рецептов.
Создавайте JSON для рецептов, предикатов и наборов с проверенными ключами и тегами в Datapack JSON Builders.