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"
]
}
Безусловно, Вы можете добавлять что-то в этот код, например, проигрывать звук при крафте или призывать корову, но убирать что-то крайне не рекомендуется.