Modding:Recetas de Fabricación
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
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:
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" } }
}
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 | Item • Entity • Entity Behaviors • Block • Block Behaviors • Block Classes • Block Entities • Block Entity Behaviors • Collectible 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 |