Создание рецептов
Прежде чем создавать рецепты, рекомендуем сначала прочитать Основа предмета, чтобы понять это руководство.
Основы
Давайте создадим рецепт для нашей палочки, который мы добавили в руководстве основа предмета.
Шаблон ингредиентов
Давайте начнем с объявления шаблона или макета рецепта, в нашем примере мы хотим, чтобы игрок поместил кирку поверх двух палочек.
который будет выглядеть так:
ingredientPattern: "P,S,S",
width: 1,
height: 3,
P
и S
являются идентификаторами, которые будут определены позже. Каждая строка разделена запятой, а пустая ячейка помечена подчеркиванием _
. Ширина
этого рецепта 1
и в нем 3
строки. Не ставьте пробелы между ячейками, например _ P _
это 5, а не 3 ячейки.
Ингредиенты
Все, что нам нужно сделать сейчас, это определить идентификаторы, которые мы использовали ранее. В нашем примере P
обозначает медную кирку, а S
- обычную палку.
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper"},
"S": { type: "item", code: "game:stick"}
},
Type
является либо block
, либо item
, в зависимости от того, является ли он предметом или блоком.
Когда в рецептах есть ванильные предметы, им нужно game:
перед названием предмета. Когда они из вашего собственного мода, вы можете просто поставить название предмета.
Чтобы узнать code
каждого предмета (или блока), вы можете ввести .edi
в консоль, которая добавит свойство code в всплывающую подсказку:
Кроме того, мы могли бы добавить необходимое количество к нашим ингредиентам, поэтому вместо одной палки на слот мы могли бы потребовать больше:
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper"},
"S": { type: "item", code: "game:stick", quantity: 2}
},
Еще одна вещь, которую мы могли бы сделать - вместо того, чтобы потреблять кирку, мы могли бы использовать ее как инструмент:
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper", isTool: true},
"S": { type: "item", code: "game:stick"}
},
Это может привести к тому, что кирка потеряет одну прочность во время крафта, вместо того, чтобы потреблять всю кирку сразу.
Возврат (выход)
Нам все еще нужно определить результат, который довольно похож на определение ингредиентов:
output: { type: "item", code: "wand-pickaxe"}
Теоретически, мы могли бы также добавить свойство quantity
(количество) здесь.
Распространение
Вот как выглядит наш последний рецепт:
{
ingredientPattern: "P,S,S",
width: 1,
height: 3,
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper"},
"S": { type: "item", code: "game:stick"}
},
output: { type: "item", code: "wand-pickaxe"}
}
Чтобы добавить эти рецепты для крафта в ваш мод, вам нужно создать еще одну папку в вашем рабочем пространстве assets/myadvancedwand/recipes/grid/
и скопировать туда файлы.
Вы можете скачать полный мод, включая предметы здесь.
Продвинутые рецепты
Типовые рецепты
Есть более сложные вещи, которые вы можете сделать с рецептами. Это рецепт для деревянных досок, которые сделаны из бревен:
{
ingredientPattern: "L",
ingredients: {
"L": { type: "block", code: "game:log-*-ud", name: "wood" }
},
width: 1,
height: 1,
output: { type: "block", code: "planks-{wood}", quantity: 4 }
}
Вместо того, чтобы иметь рецепт для каждого типа древесины, вы можете назначить имя ингредиенту (в данном случае это name: "wood"
), и все обозначенное *
, позже будет заменено на выходе. Значение {wood}
будет заменено типом используемого дерева.
Например, если бы у нас был блок бревна березы, его код был бы log-birch-ud
, поэтому *
будет означать birch
, поэтому выходные данные будут преобразованы из code: "planks-{wood}"
в code: "planks-birch"
.
Main Page: Modding |
Basics | Mod Types | Asset System | Textures | Items | Recipes | Blocks | Model Creator | Release |
Advanced | Setup(Windows,Linux) | Items (Code, JSON) | Blocks | Item-Block interactions | Block Behaviors | Block Entities | Particles | World Access |
Worldgen | Terrain | Ores | Trees | WorldGen API |
Rendering | Shaders and Renderers |
Property Overview | Item | Block | Block Behaviors | Block Classes | Block Entities | Block Entity Behaviors |