Получать свой предмет в творческом — это классно, конечно. Но ещё круче было бы добавить возможность получить его в выживании. В майнкрафте есть много вариантов получения чего-либо. Например добыча, крафты всевозможные, дроп с мобов и т.д. Но сегодня мы затронем рецепты для одного из главных атрибутов игры – верстака. Про формат рецептов можно ещё подробнее прочитать на вики.
Ресурсы для рецептов
Как вы могли уже заметить, очень многие ресурсы игры вынесены отдельно (чаще всего в виде json файлов). Рецепты не исключение. Но они находятся не в папке assets, а в папке data.
Если у вас её ещё нет, так что добавим её, а заодно и остальные необходимые нам далее:
1 |
resources/data/YOUR_MODID/recipes |
Имена рецептов должны соответствовать правилам (без запрещенных символов и т.д.) но не имеют привязки в чему-либо, как это было с предметами. Любой подходящий рецепт в папке recipes будет считан при загрузке игры.
Если говорить конкретно о крафте, то у нас есть два варианта рецептов. Со строгим шаблоном крафта, и со свободным. Сегодня мы попробуем оба варианта.
Для примера я буду использовать предмет из серии материалов по Forge: gsmod:stone_stick. Это была каменная палка и предлагаю сделать для неё рецепт крафта из блоков булыжника и камня.
Строгий рецепт
Добавляем в папку recipes файл stick_but_stone.json, а внутри пишем:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "type": "minecraft:crafting_shaped", "pattern": [ "X", "Y" ], "key": { "X": { "item": "minecraft:stone" }, "Y": { "item": "minecraft:cobblestone" } }, "result": { "item": "gsmod:stone_stick", "count": 2 } } |
Разберём что тут. Как видите, тип рецепта: crafting_shaped. Значит, что для получения результата нужно чётко соответствовать шаблону, который изображен ниже. Далее идёт расшифровка ключей и результат. Предлагаю проверить, что же у нас получилось.
А если поменять местами? Нет, рецепт ведь строгий.
В том и суть рецептов, где есть шаблон крафта.
Свободный рецепт
Теперь добавим ещё один json рецепта, но напишем там это:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
{ "type": "minecraft:crafting_shapeless", "ingredients": [ { "item": "minecraft:stone" }, { "item": "minecraft:stone" }, { "item": "minecraft:stick" } ], "result": { "item": "gsmod:stone_stick", "count": 3 } } |
Теперь нет никакого шаблона, но есть список ингредиентов, которые должны быть в сетке крафта. Запускаем!
Теги
Вы могли заметить, что в рецептах некоторые блоки и предметы взаимозаменяемые. Например уголь. Для создания факела можно использовать как обычный, каменный, так и древесный. Можно, конечно, и два рецепта сделать, но это не обязательно, ведь есть теги!
Тут просто посмотрим на рецепт из игры:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
{ "type": "minecraft:crafting_shaped", "pattern": [ " S ", "SCS", "LLL" ], "key": { "L": { "tag": "minecraft:logs" }, "S": { "item": "minecraft:stick" }, "C": { "tag": "minecraft:coals" } }, "result": { "item": "minecraft:campfire" } } |
Вместо конкретного item тут указан tag coals. К этом тегу и принадлежат оба уголька. Более того, подойдут вообще все предметы, которые будут помечены этим тегом. С такой позиции польза очевидна.
Но создание тегов я вынесу отдельно, а на этом пока всё. Базовые рецепты крафта разобрали, а заодно добавили пару своих.
Список всех уроков: Создание модов для Minecraft 1.15-1.17 [Forge/Fabric]
Исходный код проекта на Github