Confirmedusers, editor, Administrators
886
edits
CreativeMD (talk | contribs) (Created page with "__FORCETOC__ Before you should start here. I highly recommend to read Creating Items first in order to understand this tutorial properly. == Basics == === Ingredient Pat...") |
CreativeMD (talk | contribs) No edit summary |
||
Line 3: | Line 3: | ||
== Basics == | == Basics == | ||
Let's create an recipe for our wand (which we added in [[Creating Items|creating items]] tutorial). | |||
=== Ingredient Pattern === | === Ingredient Pattern === | ||
In order to tell the game what to put where we can use the pattern. In our example we want to add this recipe to the game | |||
[[File:Recipe Wand Pickaxe.png]] | |||
which would look like this: | |||
<syntaxhighlight lang="json"> | |||
ingredientPattern: "P S S", | |||
width: 1, | |||
height: 3, | |||
</syntaxhighlight> | |||
<code>P</code> and <code>S</code> are identifier which will be defined later. Every row is separated with a tab, while an empty cell is mark with an underscore <code>_</code>. The <code>width</code> of this recipe is <code>1</code> and it is <code>3</code> rows high. | |||
=== Ingredients === | === Ingredients === | ||
All we need to do now, is to define the identifiers we have used before. In our example <code>P</code> stands for a copper pickaxe and <code>S</code> for an ordinary stick. | |||
<syntaxhighlight lang="json"> | |||
ingredients: { | |||
"P": { type: "item", code: "pickaxe-copper"}, | |||
"S": { type: "item", code: "stick"} | |||
}, | |||
</syntaxhighlight> | |||
<code>Type</code> is either <code>block</code> or <code>item</code> depending whether it's an item or a block. | |||
In order to find out the <code>code</code> of each item (or block), you can type <code>.edi</code> into console, which will add the code property to the tooltip: | |||
[[File:Recipe Stick Tooltip.png]] | |||
Furthermore, we could add a required quantity to our ingredients, so instead of one stick per slot we could make it require more: | |||
<syntaxhighlight lang="json"> | |||
ingredients: { | |||
"P": { type: "item", code: "pickaxe-copper"}, | |||
"S": { type: "item", code: "stick", quantity: 2} | |||
}, | |||
</syntaxhighlight> | |||
Another thing we could do is instead of consuming the pickaxe, we could use it as a tool: | |||
<syntaxhighlight lang="json"> | |||
ingredients: { | |||
"P": { type: "item", code: "pickaxe-copper", isTool: true}, | |||
"S": { type: "item", code: "stick"} | |||
}, | |||
</syntaxhighlight> | |||
This would cause the pickaxe to lose one durability during crafting, instead of consuming the whole pickaxe at once. | |||
=== Output === | === Output === | ||
We still need to define the output, which is rather similar to defining the ingredients: | |||
<syntaxhighlight lang="json"> | |||
output: { type: "item", code: "wand-pickaxe"} | |||
</syntaxhighlight> | |||
Theoretically we could add the <code>quantity</code> property here as well. | |||
=== Distributing === | |||
This is how our final recipe looks like: | |||
<syntaxhighlight lang="json"> | |||
{ | |||
ingredientPattern: "P S S", | |||
width: 1, | |||
height: 3, | |||
ingredients: { | |||
"P": { type: "item", code: "pickaxe-copper"}, | |||
"S": { type: "item", code: "stick"} | |||
}, | |||
output: { type: "item", code: "wand-pickaxe"} | |||
} | |||
</syntaxhighlight> | |||
You can download all 3 recipes [http://wiki.vintagestory.at/images/8/87/MyWandRecipeMod.zip here]. | |||
== Advanced == | == Advanced == | ||
Line 16: | Line 91: | ||
=== Type based recipes === | === Type based recipes === | ||
There are more complicated things you can do with recipes. This the recipe for wooden planks which are crafted out of logs: | |||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
{ | { | ||
Line 28: | Line 103: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Instead of having a recipe for every wood type, you can assign a name to an ingredient (in this case it is <code>name: "wood"</code>) and everything identified by <code>*</code> will later on replaced be for the output. Meaning <code>{wood}</code> will be replaced by the type of the giving log. | |||
For example if we would have a birch log block, its code would be <code>log-birch-ud</code>, so <code>*</code> would stand for <code>birch</code>, therefore the output will be converted from <code>code: "planks-{wood}"</code> to <code>code: "planks-birch"</code>. |