2. Рецепты - LeonidMem/CoreM GitHub Wiki

Прежде, чем создавать рецепты, нужно будет подписаться на верстак при помощи такой строчки кода в функции, которая будет вызываться при загрузке датапака:

function corem:subscribe/workbench

Создать собственный рецепт не так уж и сложно. Есть два варианта:

1. Использовать специальную утилиту, которая соберёт шаблон буквально за минуту.

Для этого скачайте recipe_utility.py, далее запустите этот файл через Python (если он не установлен, можно запустить тут: OnlineGDB). Следуйте инструкциям и у Вас всё получится!

Стоит отметить, что если Вы выберите опцию создания файла, то он создатся в той же директории, где и находится recipe_utility.py!

2. Писать код вручную.

Для начала, создайте функцию с любым названием и вставьте следующий код:

# Вы должны заменить тег "corem.gapple", а также все остальные на уникальные для того, чтобы не было каких-либо накладок,
# Например, если у Вас два рецепта для земли в датапаке "Example", поменяйте тег в первом рецепте
# на "example.recipe.dirt.first", а во втором на "example.recipe.dirt.second"

# Отображение возможности скрафтить в верстаке:
execute if block ~ ~ ~ barrel{Items:[{Slot:2b,id:"minecraft:gold_block"},{Slot:3b,id:"minecraft:gold_block"},{Slot:4b,id:"minecraft:gold_block"},{Slot:11b,id:"minecraft:gold_block"},{Slot:12b,id:"minecraft:apple"},{Slot:13b,id:"minecraft:gold_block"},{Slot:20b,id:"minecraft:gold_block"},{Slot:21b,id:"minecraft:gold_block"},{Slot:22b,id:"minecraft:gold_block"}]} run tag @s add corem.gapple.check

execute if entity @s[tag=corem.gapple.check,scores={corem.workbench=0}] run data modify block ~ ~ ~ Items[{Slot:15b}] set value {Slot:15b,id:"minecraft:enchanted_golden_apple",tag:{Tags:[corem.clear]},Count:1}
execute if entity @s[tag=corem.gapple.check] run scoreboard players set @s corem.workbench 2

# Если игрок "скрафтил" вещь, то эта вещь у него забирается и заменяется на нормальную во избежание утраты вещей игрока
execute if entity @s[tag=corem.gapple.check] if data block ~ ~ ~ Items[{Slot:15b,id:"minecraft:barrier"}] run tag @s add corem.gapple.crafted

execute if entity @s[tag=corem.gapple.crafted] run clear @a[distance=..6] enchanted_golden_apple{Tags:[corem.clear]}
execute if entity @s[tag=corem.gapple.crafted] run give @p enchanted_golden_apple 1
execute if entity @s[tag=corem.gapple.crafted] run function corem:custom_wb/count
execute if entity @s[tag=corem.gapple.crafted] run scoreboard players set @s corem.workbench 0

execute if entity @s[tag=!corem.gapple.check] if data block ~ ~ ~ Items[{Slot:15b,id:"minecraft:enchanted_golden_apple",tag:{Tags:[corem.clear]}}] run scoreboard players set @s corem.workbench 0

tag @s remove corem.gapple.crafted
tag @s remove corem.gapple.check

Стоит отметить, что функция будет выполняться от имени облака с эффектами, на котором и основана вся работа верстака.

Если же в рецепте есть воздух, например, в середине, то нужно добавить unless block ~ ~ ~ barrel{Items:[{Slot:12b}]} и убрать в моём случае {Slot:12b,id:"minecraft:apple"} в if block ~ ~ ~ barrel{...}.

После того, как Вы создали функцию с рецептом, нужно создать файл custom_recipes.json по пути data/corem/tags/functions/ и изменить его по такому шаблону:

{
    "values": [
        "datapack_name:path_to_recipe1",
        "datapack_name:path_to_recipe2"
    ]
}

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