Modding:Creating Recipes/es: Difference between revisions

From Vintage Story Wiki
(Created page with "== Distribución ==")
(Created page with "=== Copia de atributos === Algunas recetas pueden requerir copiar atributos. Esto se puede hacer añadiendo <code>copyAttributesFrom</code>. Esta es la receta para la caja etiquetada: <syntaxhighlight lang="json"> { 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:...")
 
(14 intermediate revisions by the same user not shown)
Line 75: Line 75:
== Distribución ==
== Distribución ==


This is what our final recipe looks like:
Este es el aspecto de nuestra receta final:


<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
Line 90: Line 90:
</syntaxhighlight>
</syntaxhighlight>


In order to add those crafting recipes to your mod, you have to create another folder in your workspace <code>assets/myadvancedwand/recipes/grid/</code> and copy the files in there.
Para añadir esas recetas de fabricación a tu mod, tienes que crear otra carpeta en tu espacio de trabajo <code>assets/mivaritaavanzada/recipes/grid/</code> y copiar los archivos ahí.


You can download the full mod including the items (Pre 1.15)[[Media:MyWandRecipe.zip|here]].
Puedes descargar el mod completo incluyendo los items (Pre 1.15)[[Media:MyWandRecipe.zip|aquí]].


== Advanced ==
== Advanzado ==


=== Type based recipes ===
=== Recetas basadas en tipos ===


There are more complicated things you can do with recipes. This the recipe for wooden planks which are crafted out of logs:
Hay cosas más complicadas que se pueden hacer con las recetas. Esta es la receta de los tablones de madera que se fabrican con troncos:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
Line 111: Line 111:
</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.
En lugar de tener una receta para cada tipo de madera, puede asignar un nombre a un ingrediente (en este caso es <code>name: "wood"</code>) y todo lo identificado por <code>*</code> será posteriormente sustituido para la salida. Es decir, <code>{wood}</code> se sustituirá por el tipo de leña que se dé.


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>.
Por ejemplo si tuviéramos un bloque de troncos de abedul, su código sería <code>log-birch-ud</code>, por lo que <code>*</code> significaría <code>birch</code>(abedul), por lo tanto la salida se convertirá de <code>code: "planks-{wood}-hor"</code> a <code>code: "planks-birch-hor"</code>.


=== Converting an ingredient to another item upon crafting ===
=== Convertir un ingrediente en otro objeto al fabricarlo ===
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.
A veces querrás conservar uno o varios ingredientes, pero convertirlos en un objeto diferente después de fabricarlo. Por ejemplo, para fabricar una cataplasma de miel y azufre, el jugador necesita un cuenco lleno de miel, pero el cuenco no se consume para fabricarla. El cuenco de miel se convierte en un cuenco vacío. Esto se consigue añadiendo la propiedad <code>returnedStack</code> al ingrediente. El valor de esta propiedad debe contener un <code>type</code> y un <code>code</code>, al igual que las propiedades estándar de los ingredientes. Esto le indica a la receta qué elemento debe devolver al jugador.


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:
Siguiendo con el ejemplo de la cataplasma de miel y azufre, un cuenco de miel como ingrediente tiene el siguiente aspecto <code>"B": { type: "block", code: "bowl-honey" }</code>, pero el jugador perdería el cuenco si la receta estuviera escrita así. Tenemos que añadir <code>returnedStack</code> a las propiedades del ingrediente e indicar con qué elemento reemplazarlo. En este caso, el jugador debería recibir un cuenco vacío en lugar del cuenco de miel <code>returnedStack: { type: "block", code: "bowl-burned" }</code>. Esta propiedad se coloca junto a las propiedades <code>type</code> y <code>code</code> de un ingrediente. Poniéndolo todo junto:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
Line 137: Line 137:
</syntaxhighlight>
</syntaxhighlight>


=== Consuming more than one durability per tool ===
=== Consumir más durabilidad por herramienta ===
To balance durability consuming, it can be done by adding <code>toolDurabilityCost</code> and <code>isTool</code>. This is recipe for pulverizer pounder:
Para equilibrar la durabilidad que consume, se puede hacer mediante la adición de <code>toolDurabilityCost</code> y <code>isTool</code>. Esta es la receta para el mazo de pulverizador:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
Line 153: Line 153:
</syntaxhighlight>
</syntaxhighlight>


=== Separating recipes on the same handbook page ===
=== Separar recetas en la misma página del manual ===
Sometimes amount of recipes for one item can become overwhelming, to separate important ones, it can be done by adding <code>recipeGroup</code>. These are recipes for wooden ladder:
A veces la cantidad de recetas para un artículo puede llegar a ser abrumadora, para separar las importantes, se puede hacer mediante la adición de <code>recipeGroup</code>. Estas son las recetas para la escalera de madera:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
Line 178: Line 178:
</syntaxhighlight>
</syntaxhighlight>


=== Restricting to a specific class ===
=== Restringir a una clase específica ===
The recipe can be limited to a specific [[Classes|class]]. This can be done by adding <code>requiresTrait</code>. This is recipe for sewing kit:
La receta puede limitarse a una [[Classes/es|clase]] específica. Esto se puede hacer añadiendo <code>requiresTrait</code>. Esta es la receta para el kit de costura:
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{
Line 194: Line 194:
</syntaxhighlight>
</syntaxhighlight>


=== Copying attributes ===
=== Copia de atributos ===
Some recipes can require to copy attributes. This is can be done by adding <code>copyAttributesFrom</code>. This is recipe for labeled crate:
Algunas recetas pueden requerir copiar atributos. Esto se puede hacer añadiendo <code>copyAttributesFrom</code>. Esta es la receta para la caja etiquetada:  
<syntaxhighlight lang="json">
<syntaxhighlight lang="json">
{
{

Latest revision as of 14:43, 21 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

Ahora sólo tenemos que definir los identificadores que hemos utilizado antes. In our example P representa un pico de cobre y S para un palo ordinario.

	ingredients: {
		"P": { type: "item", code: "game:pickaxe-copper"},
		"S": { type: "item", code: "game:stick"}
	},

El Type es block o item dependiendo de si es un ítem o un bloque.

Cuando las recetas tienen objetos vanilla necesitan game: delante del nombre del objeto. Cuando son de tu propio mod puedes poner solo el nombre del item.

Para averiguar el code de cada elemento (o bloque), puede escribir .edi en la consola, lo que añadirá la propiedad de código a la descripción emergente:

Recipe Stick Tooltip.png


Además, podríamos añadir una cantidad requerida a nuestros ingredientes, por lo que en lugar de un palo por ranura podríamos hacer que requiriera más:

	ingredients: {
		"P": { type: "item", code: "game:pickaxe-copper"},
		"S": { type: "item", code: "game:stick", quantity: 2}
	},

Otra cosa que podríamos hacer es, en lugar de consumir el pico, utilizarlo como herramienta:

	ingredients: {
		"P": { type: "item", code: "game:pickaxe-copper", isTool: true},
		"S": { type: "item", code: "game:stick"}
	},

Esto haría que el pico pierda uno de durabilidad durante la elaboración, en lugar de consumir todo el pico a la vez.

Salida

Todavía tenemos que definir la salida, que es bastante similar a la definición de los ingredientes:

	output: { type: "item", code: "wand-pickaxe"}

Teóricamente, también podríamos añadir aquí la propiedad quantity.

Distribución

Este es el aspecto de nuestra receta final:

{
	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"}
}

Para añadir esas recetas de fabricación a tu mod, tienes que crear otra carpeta en tu espacio de trabajo assets/mivaritaavanzada/recipes/grid/ y copiar los archivos ahí.

Puedes descargar el mod completo incluyendo los items (Pre 1.15)aquí.

Advanzado

Recetas basadas en tipos

Hay cosas más complicadas que se pueden hacer con las recetas. Esta es la receta de los tablones de madera que se fabrican con troncos:

{
	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  }
}

En lugar de tener una receta para cada tipo de madera, puede asignar un nombre a un ingrediente (en este caso es name: "wood") y todo lo identificado por * será posteriormente sustituido para la salida. Es decir, {wood} se sustituirá por el tipo de leña que se dé.

Por ejemplo si tuviéramos un bloque de troncos de abedul, su código sería log-birch-ud, por lo que * significaría birch(abedul), por lo tanto la salida se convertirá de code: "planks-{wood}-hor" a code: "planks-birch-hor".

Convertir un ingrediente en otro objeto al fabricarlo

A veces querrás conservar uno o varios ingredientes, pero convertirlos en un objeto diferente después de fabricarlo. Por ejemplo, para fabricar una cataplasma de miel y azufre, el jugador necesita un cuenco lleno de miel, pero el cuenco no se consume para fabricarla. El cuenco de miel se convierte en un cuenco vacío. Esto se consigue añadiendo la propiedad returnedStack al ingrediente. El valor de esta propiedad debe contener un type y un code, al igual que las propiedades estándar de los ingredientes. Esto le indica a la receta qué elemento debe devolver al jugador.

Siguiendo con el ejemplo de la cataplasma de miel y azufre, un cuenco de miel como ingrediente tiene el siguiente aspecto "B": { type: "block", code: "bowl-honey" }, pero el jugador perdería el cuenco si la receta estuviera escrita así. Tenemos que añadir returnedStack a las propiedades del ingrediente e indicar con qué elemento reemplazarlo. En este caso, el jugador debería recibir un cuenco vacío en lugar del cuenco de miel returnedStack: { type: "block", code: "bowl-burned" }. Esta propiedad se coloca junto a las propiedades type y code de un ingrediente. Poniéndolo todo junto:

{
	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  }
}

Consumir más durabilidad por herramienta

Para equilibrar la durabilidad que consume, se puede hacer mediante la adición de toolDurabilityCost y isTool. Esta es la receta para el mazo de pulverizador:

{
	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 }
}

Separar recetas en la misma página del manual

A veces la cantidad de recetas para un artículo puede llegar a ser abrumadora, para separar las importantes, se puede hacer mediante la adición de recipeGroup. Estas son las recetas para la escalera de madera:

{
	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  }
}

Restringir a una clase específica

La receta puede limitarse a una clase específica. Esto se puede hacer añadiendo requiresTrait. Esta es la receta para el kit de costura:

{
	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"  }
}

Copia de atributos

Algunas recetas pueden requerir copiar atributos. Esto se puede hacer añadiendo copyAttributesFrom. Esta es la receta para la caja etiquetada:

{
	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