Skip to content

Recipe System

The recipe system defines crafting requirements for items. Recipes are embedded directly in item definitions and specify input materials, output items, crafting bench requirements, and processing time.

Recipes are defined within item JSON files under the Recipe property:

  • DirectoryAssets/Server/Item/Items/
    • DirectoryWeapon/
      • DirectorySword/
        • Weapon_Sword_Iron.json (contains Recipe)
      • DirectoryMace/
      • DirectoryDagger/
    • DirectoryArmor/
      • DirectoryIron/
        • Armor_Iron_Chest.json (contains Recipe)
    • DirectoryFood/
      • Food_Bread.json (contains Recipe)
      • Food_Pie_Apple.json (contains Recipe)
    • DirectoryTool/
    • DirectoryIngredient/
FieldTypeRequiredDescription
InputarrayYesRequired materials
OutputarrayNoProduced items (defaults to containing item)
PrimaryOutputobjectNoSingle primary output item (alternative to Output array)
OutputQuantityintNoQuantity multiplier for the primary output (default: 1)
BenchRequirementarrayNoRequired crafting stations
TimeSecondsfloatNoCrafting duration in seconds
KnowledgeRequiredboolNoRequires recipe knowledge
RequiredMemoriesLevelintNoMinimum world Memories level needed to craft (default: 1, meaning always available)
FieldTypeDescription
ItemIdstringItem ID to consume
ResourceTypeIdstringResource type (e.g., Fuel)
QuantityintAmount required
FieldTypeDescription
ItemIdstringItem ID to produce
QuantityintAmount produced (default: 1)
FieldTypeDescription
IdstringCrafting bench ID
TypestringRequirement type
CategoriesarrayRecipe categories this bench supports
RequiredTierLevelintMinimum bench tier level
TypeDescription
CraftingStandard crafting bench
ProcessingProcessing bench (e.g. smelting)
DiagramCraftingRequires unlocked diagram
StructuralCraftingStructural crafting bench
Weapon_Sword_Iron.json (Recipe section)
{
"Recipe": {
"TimeSeconds": 3.5,
"KnowledgeRequired": false,
"Input": [
{
"ItemId": "Ingredient_Bar_Iron",
"Quantity": 6
},
{
"ItemId": "Ingredient_Leather_Light",
"Quantity": 3
},
{
"ItemId": "Ingredient_Fabric_Scrap_Linen",
"Quantity": 3
}
],
"BenchRequirement": [
{
"Type": "Crafting",
"Categories": ["Weapon_Sword"],
"Id": "Weapon_Bench"
}
]
}
}

Key elements:

  • 3.5 second crafting time
  • No knowledge required - recipe is known by default
  • Weapon Bench required with sword crafting capability
Weapon_Mace_Iron.json (Recipe section)
{
"Recipe": {
"TimeSeconds": 3.5,
"KnowledgeRequired": false,
"Input": [
{ "ItemId": "Ingredient_Bar_Iron", "Quantity": 10 },
{ "ItemId": "Ingredient_Leather_Light", "Quantity": 4 },
{ "ItemId": "Ingredient_Fabric_Scrap_Linen", "Quantity": 3 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Categories": ["Weapon_Mace"],
"Id": "Weapon_Bench"
},
{
"Type": "DiagramCrafting",
"Categories": ["Weapons.Mace"],
"Id": "Armory"
}
]
}
}

This recipe can be crafted at:

  1. Weapon_Bench - standard crafting
  2. Armory - requires unlocked diagram
Armor_Iron_Chest.json (Recipe section)
{
"Recipe": {
"Input": [
{ "ItemId": "Ingredient_Bar_Iron", "Quantity": 16 },
{ "ItemId": "Ingredient_Leather_Light", "Quantity": 7 },
{ "ItemId": "Ingredient_Fabric_Scrap_Linen", "Quantity": 6 }
],
"BenchRequirement": [
{
"Id": "Armor_Bench",
"Type": "Crafting",
"Categories": ["Armor_Chest"]
}
],
"KnowledgeRequired": false,
"TimeSeconds": 3
}
}
Food_Bread.json (Recipe section)
{
"Recipe": {
"Input": [
{ "ItemId": "Ingredient_Dough", "Quantity": 1 },
{ "ResourceTypeId": "Fuel", "Quantity": 3 }
],
"Output": [
{ "ItemId": "Food_Bread" }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Cookingbench",
"Categories": ["Baked"]
}
],
"TimeSeconds": 5
}
}

Key features:

  • ResourceTypeId instead of ItemId - accepts any fuel type
  • Explicit Output - specifies what is produced
Food_Pie_Apple.json (Recipe section)
{
"Recipe": {
"Input": [
{ "ItemId": "Ingredient_Dough", "Quantity": 1 },
{ "ItemId": "Plant_Fruit_Apple", "Quantity": 3 },
{ "ItemId": "Ingredient_Spices", "Quantity": 1 },
{ "ResourceTypeId": "Fuel", "Quantity": 3 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Cookingbench",
"Categories": ["Baked"]
}
],
"TimeSeconds": 5,
"KnowledgeRequired": true
}
}

KnowledgeRequired: true - Recipe must be discovered/unlocked before crafting.

Bench IDDescriptionCommon Categories
Weapon_BenchWeapon craftingWeapon_Sword, Weapon_Mace, Weapon_Dagger
Armor_BenchArmor craftingArmor_Head, Armor_Chest, Armor_Legs, Armor_Hands
CookingbenchFood preparationBaked, Cooked, Prepared
ArmoryAdvanced weaponsWeapons.Sword, Weapons.Mace, Weapons.Bow
ForgerySmithingVarious
WorkbenchGeneral craftingVarious

Benches can have tier levels that unlock more advanced recipes:

{
"BenchRequirement": [
{
"Id": "Weapon_Bench",
"Type": "Crafting",
"RequiredTierLevel": 1
}
]
}

Resource types allow recipes to accept any item of a specific category:

ResourceTypeIdDescription
FuelCoal, wood, or other fuel sources
{
"Input": [
{
"ResourceTypeId": "Fuel",
"Quantity": 3
}
]
}

Categories group recipes by type for bench filtering:

  • Weapon_Sword
  • Weapon_Mace
  • Weapon_Dagger
  • Weapon_Battleaxe
  • Weapon_Bow
  • Weapon_Crossbow
  • Weapon_Shield
  • Armor_Head
  • Armor_Chest
  • Armor_Legs
  • Armor_Hands
  • Baked
  • Cooked
  • Prepared
  • Weapons.Sword
  • Weapons.Mace
  • Weapons.Bow
  • Armors.Head
  • Armors.Chest
IngredientDescription
Ingredient_Bar_CopperCopper bar
Ingredient_Bar_BronzeBronze bar
Ingredient_Bar_IronIron bar
Ingredient_Bar_SteelSteel bar
Ingredient_Bar_CobaltCobalt bar
Ingredient_Bar_MithrilMithril bar
Ingredient_Bar_AdamantiteAdamantite bar
Ingredient_Bar_ThoriumThorium bar
Ingredient_Bar_OnyxiumOnyxium bar
IngredientDescription
Ingredient_Leather_LightLight leather
Ingredient_Leather_MediumMedium leather
Ingredient_Leather_HeavyHeavy leather
Ingredient_Fabric_Scrap_LinenLinen fabric
Ingredient_Fabric_Scrap_WoolWool fabric
Ingredient_Fabric_Scrap_SilkSilk fabric
Ingredient_Fabric_Scrap_CottonCotton fabric
IngredientDescription
Ingredient_DoughBread dough
Ingredient_SpicesCooking spices
Ingredient_FlourGround flour
MyPlugin_Weapon_Custom.json
{
"Parent": "Template_Weapon_Sword",
"Recipe": {
"TimeSeconds": 4.0,
"KnowledgeRequired": false,
"Input": [
{ "ItemId": "Ingredient_Bar_Iron", "Quantity": 8 },
{ "ItemId": "Ingredient_Leather_Light", "Quantity": 4 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Weapon_Bench",
"Categories": ["Weapon_Sword"]
}
]
}
}
{
"Recipe": {
"TimeSeconds": 2.0,
"Input": [
{ "ItemId": "Ingredient_Raw_Material", "Quantity": 5 }
],
"Output": [
{ "ItemId": "MyPlugin_Item_A", "Quantity": 2 },
{ "ItemId": "MyPlugin_Item_B", "Quantity": 1 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Workbench",
"Categories": ["General"]
}
]
}
}
{
"Recipe": {
"TimeSeconds": 5.0,
"KnowledgeRequired": true,
"Input": [
{ "ItemId": "Ingredient_Bar_Mithril", "Quantity": 12 },
{ "ItemId": "Ingredient_Leather_Heavy", "Quantity": 6 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Weapon_Bench",
"Categories": ["Weapon_Sword"],
"RequiredTierLevel": 2
}
]
}
}
{
"Recipe": {
"TimeSeconds": 8.0,
"Input": [
{ "ItemId": "Ingredient_Ore_Iron", "Quantity": 3 },
{ "ResourceTypeId": "Fuel", "Quantity": 5 }
],
"Output": [
{ "ItemId": "Ingredient_Bar_Iron", "Quantity": 1 }
],
"BenchRequirement": [
{
"Type": "Crafting",
"Id": "Forgery",
"Categories": ["Smelting"]
}
]
}
}
TierMetalLeatherFabricTime
T1 (Copper)4222.5s
T2 (Iron)6333.5s
T3 (Steel)8444.5s
T4 (Cobalt)10555.5s
T5 (Mithril)12666.5s
PieceMetal MultiplierLeather Multiplier
Head1.0x0.5x
Chest2.0x1.0x
Legs1.5x0.75x
Hands0.5x0.25x
  1. Balance input costs - Higher tier items should cost more
  2. Scale crafting time - Complex items take longer
  3. Use appropriate benches - Match bench to item type
  4. Consider knowledge - Advanced recipes should require discovery
  5. Test resource availability - Ensure ingredients are obtainable
  6. Use resource types - Allow flexibility with fuel types
  7. Provide bench alternatives - Multiple crafting paths when appropriate