Modding:Creating Recipes: Difference between revisions

From Vintage Story Wiki
m
Added out-of-date notice.
No edit summary
m (Added out-of-date notice.)
 
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
<languages/>
<languages/>
<translate>
<translate>
{{GameVersion|1.15}}
<!--T:40-->
{{GameVersion|1.19}}


<!--T:1-->
<!--T:1-->
__FORCETOC__
__FORCETOC__
{{PageOutdated|lookat={{ll|Modding:Content_Tutorial_Simple_Recipe|the simple recipes tutorial|nsp=0}}}}
Before creating recipes, we suggest you read [[Basic Item]] first in order to understand this tutorial.
Before creating recipes, we suggest you read [[Basic Item]] first in order to understand this tutorial.


Line 29: Line 32:


<!--T:8-->
<!--T:8-->
<code>P</code> and <code>S</code> are identifiers which will be defined later. Every row is separated with a space, while an empty cell is marked with an underscore <code>_</code>. The <code>width</code> of this recipe is <code>1</code> and it is <code>3</code> rows high.
<code>P</code> and <code>S</code> are identifiers which will be defined later. Every row is separated with one comma or tab (no space!), while an empty cell is marked 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 === <!--T:9-->
=== Ingredients === <!--T:9-->
Line 132: Line 135:
width: 1,
width: 1,
height: 1,
height: 1,
output: { type: "block", code: "planks-{wood}", quantity: 4  }
output: { type: "block", code: "planks-{wood}-hor", quantity: 4  }
}
}
</syntaxhighlight>
</syntaxhighlight>
Line 140: Line 143:


<!--T:33-->
<!--T:33-->
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>.
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}-hor"</code> to <code>code: "planks-birch-hor"</code>.


=== Converting an ingredient to another item upon crafting === <!--T:34-->
=== Converting an ingredient to another item upon crafting === <!--T:34-->
Sometimes you want to keep one or more of the ingredients, but convert them to a different item after crafting. For example, when crafting a honey-sulfur poultice, the player needs a bowl filled with honey, but the bowl is not consumed to craft it. Instead the bowl of honey is turned into an empty bowl. This is accomplished by adding the <code>returnedStack</code> property to the ingredient. This property's value needs to contain a <code>type</code> and <code>code</code> just like the standard ingredient properties. This tells the recipe which item to give the player back.
Sometimes you want to keep one or more of the ingredients, but convert them to a different item after crafting. For example, when crafting a honey-sulfur poultice, the player needs a bowl filled with honey, but the bowl is not consumed to craft it. Instead the bowl of honey is turned into an empty bowl. This is accomplished by adding the <code>returnedStack</code> property to the ingredient. This property's value needs to contain a <code>type</code> and <code>code</code> just like the standard ingredient properties. This tells the recipe which item to give the player back.


<!--T:41-->
Continuing with the honey-sulfur poultice example, a bowl of honey as an ingredient looks like <code>"B": { type: "block", code: "bowl-honey" }</code>, but the player would lose the bowl if the recipe were written this way. We need to add <code>returnedStack</code> to the ingredient's properties and indicate which item to replace it with. In this case, the player should receive an empty bowl in place of the bowl of honey <code>returnedStack: { type: "block", code: "bowl-burned" }</code>. This property is placed alongside the <code>type</code> and <code>code</code> properties of an ingredient. Putting it all together:
Continuing with the honey-sulfur poultice example, a bowl of honey as an ingredient looks like <code>"B": { type: "block", code: "bowl-honey" }</code>, but the player would lose the bowl if the recipe were written this way. We need to add <code>returnedStack</code> to the ingredient's properties and indicate which item to replace it with. In this case, the player should receive an empty bowl in place of the bowl of honey <code>returnedStack: { type: "block", code: "bowl-burned" }</code>. This property is placed alongside the <code>type</code> and <code>code</code> properties of an ingredient. Putting it all together:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
ingredientPattern: "SBS _L_",
ingredientPattern: "SBS,_L_",
ingredients: {
ingredients: {
"L": { type: "block", code: "linen-*" },
"L": { type: "block", code: "linen-*" },
Line 184: Line 188:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
ingredientPattern: "S_S SSS S_S",
ingredientPattern: "S_S,SSS,S_S",
ingredients: {
ingredients: {
"S": { type: "item", code: "stick" }
"S": { type: "item", code: "stick" }
Line 194: Line 198:
},
},
{
{
ingredientPattern: "P_P PSP P_P",
ingredientPattern: "P_P,PSP,P_P",
ingredients: {
ingredients: {
"P": { type: "item", code: "plank-*" },
"P": { type: "item", code: "plank-*" },
Line 209: Line 213:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
ingredientPattern: "FFS FF_",
ingredientPattern: "FFS,FF_",
requiresTrait: "clothier",
requiresTrait: "clothier",
ingredients: {
ingredients: {
Line 238: Line 242:
</syntaxhighlight>
</syntaxhighlight>


<!--T:39-->
=== Hiding recipes from 'Created by' section from handbook === <!--T:39-->
{{Navbox/modding|Vintage Story}}
Some recipes are better hidden, it can be done by adding <code>showInCreatedBy</code>.
<syntaxhighlight lang="json">
{
ingredientPattern: "H",
ingredients: {
"H": { type: "block", code: "hay-normal-ud" }
},
    showInCreatedBy: false,
width: 1,
height: 1,
output: { type: "item", code: "drygrass", quantity: 8  }
}
</syntaxhighlight>
 
=== Using liquid container as ingredient === <!--T:40-->
Some recipes use liquid containers, such as buckets, bowls or jugs. For single liquid container, it can be done by adding <code>liquidContainerProps</code> to recipe attributes. This is recipe for honey-sulfur poultice:
<syntaxhighlight lang="json">
{
    ingredientPattern: "SBS,_L_",
    ingredients: {
        "L": { type: "block", code: "linen-*" },
        "S": { type: "item", code: "powderedsulfur" },
        "B": { type: "block", code: "bowl-fired" }
    },
    attributes: {
        liquidContainerProps: {
            requiresContent: { type: "item", code: "honeyportion" },
            requiresLitres: 0.25
        }
    },
    width: 3,
    height: 2,
    output: { type: "item", code: "poultice-linen-honey-sulfur", quantity: 4  }
}
</syntaxhighlight>
 
<!--T:41-->
{{Navbox/contentmodding}}


</translate>
</translate>
Confirmedusers
536

edits