Modding:Creating Recipes/es: Difference between revisions

From Vintage Story Wiki
(Created page with "<code>P</code> y <code>S</code> son identificadores que se definirán más adelante. Cada fila se separa con una coma o un tabulador (¡sin espacios!), mientras que una celda vacía se marca con un guión bajo <code>_</code>. El <code>ancho</code> de esta receta es <code>1</code> y tiene <code>3</code> filas de alto.")
Tags: Mobile edit Mobile web edit
(Created page with "=== Ingredientes ===")
Line 24: Line 24:
<code>P</code> y <code>S</code> son identificadores que se definirán más adelante. Cada fila se separa con una coma o un tabulador (¡sin espacios!), mientras que una celda vacía se marca con un guión bajo <code>_</code>. El <code>ancho</code> de esta receta es <code>1</code> y tiene <code>3</code> filas de alto.
<code>P</code> y <code>S</code> son identificadores que se definirán más adelante. Cada fila se separa con una coma o un tabulador (¡sin espacios!), mientras que una celda vacía se marca con un guión bajo <code>_</code>. El <code>ancho</code> de esta receta es <code>1</code> y tiene <code>3</code> filas de alto.


=== Ingredients ===
=== Ingredientes ===


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.
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.

Revision as of 19:29, 20 June 2023

Other languages:

This page was last verified for Vintage Story version 1.16.


Antes de crear recetas, le sugerimos que lea primero Ítem Básico para entender este tutorial.

Lo básico

Vamos a crear una receta para nuestra varita, que añadimos en el tutorial objetos básicos. Puedes encontrar otras recetas en assets/survival/recipes/.

Patrón de ingredientes

Empecemos declarando el patrón o disposición de la receta, en nuestro ejemplo queremos que el jugador coloque un pico encima de 2 palos

Recipe Wand Pickaxe.png

que se vería así:

	ingredientPattern: "P,S,S",
	width: 1,
	height: 3,

P y S son identificadores que se definirán más adelante. Cada fila se separa con una coma o un tabulador (¡sin espacios!), mientras que una celda vacía se marca con un guión bajo _. El ancho de esta receta es 1 y tiene 3 filas de alto.

Ingredientes

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:

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:

	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 (Pre 1.15)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}-hor", 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}-hor" to code: "planks-birch-hor".

Converting an ingredient to another item upon crafting

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 returnedStack property to the ingredient. This property's value needs to contain a type and code just like the standard ingredient properties. This tells the recipe which item to give the player back.

Continuing with the honey-sulfur poultice example, a bowl of honey as an ingredient looks like "B": { type: "block", code: "bowl-honey" }, but the player would lose the bowl if the recipe were written this way. We need to add returnedStack 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 returnedStack: { type: "block", code: "bowl-burned" }. This property is placed alongside the type and code properties of an ingredient. Putting it all together:

{
	ingredientPattern: "SBS,_L_",
	ingredients: {
		"L": { type: "block", code: "linen-*" },
		"S": { type: "item", code: "powderedsulfur" },
		"B": {
			type: "block", 
			code: "bowl-honey",
			returnedStack: { type: "block", code: "bowl-burned" }
		}
	},
	width: 3,
	height: 2,
	output: { type: "item", code: "poultice-linen-honey-sulfur", quantity: 4  }
}

Consuming more than one durability per tool

To balance durability consuming, it can be done by adding toolDurabilityCost and isTool. This is recipe for pulverizer pounder:

{
	ingredientPattern: "HL_,CL_,_L_",
	ingredients: {
		"H": { type: "item", code: "hammer-*", isTool: true, toolDurabilityCost: 10 },
		"C": { type: "item", code: "chisel-*", isTool: true, toolDurabilityCost: 10 },
		"L": { type: "block", code: "log-placed-*-ud", name: "wood" }
	},
	width: 3,
	height: 3,
	output: { type: "item", code: "pounder-oak", quantity: 1 }
}

Separating recipes on the same handbook page

Sometimes amount of recipes for one item can become overwhelming, to separate important ones, it can be done by adding recipeGroup. These are recipes for wooden ladder:

{
	ingredientPattern: "S_S,SSS,S_S",
	ingredients: {
		"S": { type: "item", code: "stick" }
	},
	width: 3,
	height: 3,
	recipeGroup: 1,
	output: { type: "block", code: "ladder-wood-north", quantity: 3  }
},
{
	ingredientPattern: "P_P,PSP,P_P",
	ingredients: {
		"P": { type: "item", code: "plank-*" },
		"S": { type: "item", code: "stick" }
	},
	width: 3,
	height: 3,
	output: { type: "block", code: "ladder-wood-north", quantity: 3  }
}

Restricting to a specific class

The recipe can be limited to a specific class. This can be done by adding requiresTrait. This is recipe for sewing kit:

{
	ingredientPattern: "FFS,FF_",
	requiresTrait: "clothier",
	ingredients: {
		"F": { type: "item", code: "flaxtwine" },
		"S": { type: "item", code: "stick" }
	},
	width: 3,
	height: 2,
	output: { type: "item", code: "sewingkit"  }
}

Copying attributes

Some recipes can require to copy attributes. This is can be done by adding copyAttributesFrom. This is recipe for labeled crate:

{
	ingredientPattern: "S,C",
	ingredients: {
		"S": { type: "item", code: "paper-parchment" },
		"C": { type: "block", code: "crate" }
	},
	shapeless: true,
	copyAttributesFrom: 'C',
	width: 1,
	height: 2,
	output: { type: "block", code: "crate", attributes: { label: "paper-empty" }  }
}
Icon Sign.png

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 Pack Temático
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 ItemEntityBlockBlock BehaviorsBlock ClassesBlock EntitiesBlock Entity BehaviorsWorld properties
Workflows & Infrastructure Modding Efficiency TipsMod-engine compatibilityMod ExtensibilityVS Engine
Additional Resources Community Resources Modding API Updates Programming Languages List of server commandsList of client commandsClient startup parametersServer startup parameters
Example ModsAPI DocsGitHub Repository