Modding:Creating Recipes: Difference between revisions
CreativeMD (talk | contribs) No edit summary |
m (Grammar and stuff) |
||
(4 intermediate revisions by one other user not shown) | |||
Line 19: | Line 19: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<code>P</code> and <code>S</code> are identifiers which will be defined later. Every row is separated with a tab, while an empty cell is | <code>P</code> and <code>S</code> are identifiers which will be defined later. Every row is separated with a tab, 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 === | === Ingredients === | ||
All we need to do now | 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"> | <syntaxhighlight lang="json"> | ||
ingredients: { | ingredients: { | ||
"P": { type: "item", code: "pickaxe-copper"}, | "P": { type: "item", code: "game:pickaxe-copper"}, | ||
"S": { type: "item", code: "stick"} | "S": { type: "item", code: "game:stick"} | ||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<code>Type</code> is either <code>block</code> or <code>item</code> depending whether it's an item or a block. | <code>Type</code> is either <code>block</code> or <code>item</code> depending whether it's an item or a block. | ||
When recipes have vanilla items they need <code>game:</code> in front of the item name. When they are from your own mod you can just put the item name. | |||
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: | 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: | ||
Line 43: | Line 45: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
ingredients: { | ingredients: { | ||
"P": { type: "item", code: "pickaxe-copper"}, | "P": { type: "item", code: "game:pickaxe-copper"}, | ||
"S": { type: "item", code: "stick", quantity: 2} | "S": { type: "item", code: "game:stick", quantity: 2} | ||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 52: | Line 54: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
ingredients: { | ingredients: { | ||
"P": { type: "item", code: "pickaxe-copper", isTool: true}, | "P": { type: "item", code: "game:pickaxe-copper", isTool: true}, | ||
"S": { type: "item", code: "stick"} | "S": { type: "item", code: "game:stick"} | ||
}, | }, | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 66: | Line 68: | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Theoretically we could add the <code>quantity</code> property here as well. | Theoretically, we could add the <code>quantity</code> property here as well. | ||
=== Distributing === | === Distributing === | ||
This is | This is what our final recipe looks like: | ||
<syntaxhighlight lang="json"> | <syntaxhighlight lang="json"> | ||
Line 78: | Line 80: | ||
height: 3, | height: 3, | ||
ingredients: { | ingredients: { | ||
"P": { type: "item", code: "pickaxe-copper"}, | "P": { type: "item", code: "game:pickaxe-copper"}, | ||
"S": { type: "item", code: "stick"} | "S": { type: "item", code: "game:stick"} | ||
}, | }, | ||
output: { type: "item", code: "wand-pickaxe"} | output: { type: "item", code: "wand-pickaxe"} | ||
Line 98: | Line 100: | ||
ingredientPattern: "L", | ingredientPattern: "L", | ||
ingredients: { | ingredients: { | ||
"L": { type: "block", code: "log-*-ud", name: "wood" } | "L": { type: "block", code: "game:log-*-ud", name: "wood" } | ||
}, | }, | ||
width: 1, | width: 1, | ||
Line 109: | Line 111: | ||
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}"</code> to <code>code: "planks-birch"</code>. | ||
{{Navbox/modding|Vintage Story}} |
Revision as of 18:31, 2 October 2018
Before creating recipes, we suggest you read Basic Item first in order to understand this tutorial.
Basics
Let's create a recipe for our wand, which we added in basic items tutorial.
Ingredient Pattern
Let's begin by declaring the pattern or layout of the recipe, in our example we'll want the player to place a pickaxe on top of 2 sticks
which would look like this:
ingredientPattern: "P S S",
width: 1,
height: 3,
P
and S
are identifiers which will be defined later. Every row is separated with a tab, while an empty cell is marked with an underscore _
. The width
of this recipe is 1
and it is 3
rows high.
Ingredients
All we need to do now is to define the identifiers we have used before. In our example P
stands for a copper pickaxe and S
for an ordinary stick.
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper"},
"S": { type: "item", code: "game:stick"}
},
Type
is either block
or item
depending whether it's an item or a block.
When recipes have vanilla items they need game:
in front of the item name. When they are from your own mod you can just put the item name.
In order to find out the code
of each item (or block), you can type .edi
into console, which will add the code property to the tooltip:
Furthermore, we could add a required quantity to our ingredients, so instead of one stick per slot we could make it require more:
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper"},
"S": { type: "item", code: "game:stick", quantity: 2}
},
Another thing we could do is instead of consuming the pickaxe, we could use it as a tool:
ingredients: {
"P": { type: "item", code: "game:pickaxe-copper", isTool: true},
"S": { type: "item", code: "game:stick"}
},
This would cause the pickaxe to lose one durability during crafting, instead of consuming the whole pickaxe at once.
Output
We still need to define the output, which is rather similar to defining the ingredients:
output: { type: "item", code: "wand-pickaxe"}
Theoretically, we could add the quantity
property here as well.
Distributing
This is what our final recipe looks like:
{
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"}
}
In order to add those crafting recipes to your mod, you have to create another folder in your workspace assets/myadvancedwand/recipes/grid/
and copy the files in there.
You can download the full mod including the items here.
Advanced
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:
{
ingredientPattern: "L",
ingredients: {
"L": { type: "block", code: "game:log-*-ud", name: "wood" }
},
width: 1,
height: 1,
output: { type: "block", code: "planks-{wood}", quantity: 4 }
}
Instead of having a recipe for every wood type, you can assign a name to an ingredient (in this case it is name: "wood"
) and everything identified by *
will later on replaced be for the output. Meaning {wood}
will be replaced by the type of the giving log.
For example if we would have a birch log block, its code would be log-birch-ud
, so *
would stand for birch
, therefore the output will be converted from code: "planks-{wood}"
to code: "planks-birch"
.
Wondering where some links have gone?
The modding navbox is going through some changes! Check out Navigation Box Updates for more info and help finding specific pages.
Modding | |
---|---|
Modding Introduction | Getting Started • Theme Pack |
Content Modding | Content Mods • Developing a Content Mod • Basic Tutorials • Intermediate Tutorials • Advanced Tutorials • Content Mod Concepts |
Code Modding | Code Mods • Setting up your Development Environment |
Property Overview | Item • Entity • Block • Block Behaviors • Block Classes • Block Entities • Block Entity Behaviors • World properties |
Workflows & Infrastructure | Modding Efficiency Tips • Mod-engine compatibility • Mod Extensibility • VS Engine |
Additional Resources | Community Resources • Modding API Updates • Programming Languages • List of server commands • List of client commands • Client startup parameters • Server startup parameters Example Mods • API Docs • GitHub Repository |