Skip to content

Crafting Recipe Schema

Class: com.hypixel.hytale.server.core.asset.type.item.config.CraftingRecipe Codec: AssetBuilderCodec<String, CraftingRecipe>

Crafting recipes define how items are created from input materials at crafting stations. Recipes can be defined as standalone assets or inline within an Item definition (via the Recipe field). When inline, the item auto-generates outputs.

JSON KeyJava TypeJSON TypeRequiredDefaultDescription
InputMaterialQuantity[]array of MaterialQuantityyesRequired input materials. Each entry specifies an item (by Material ID), resource type, or tags, plus a quantity.
OutputMaterialQuantity[]array of MaterialQuantityno[]Output materials produced by the recipe. If empty and PrimaryOutput is set, auto-populated.
PrimaryOutputMaterialQuantityobjectnonullPrimary output material. When recipe is inline on an Item, this is auto-set to the parent item.
OutputQuantityIntegerintegerno1Quantity of primary output produced per craft.
BenchRequirementBenchRequirement[]array of objectsnonullRequired crafting stations (see below).
TimeSecondsDoublenumber (>=0)no0.0Crafting time in seconds. 0 means instant. Should not be set for Fieldcraft recipes.
KnowledgeRequiredBooleanbooleannofalseWhether this recipe must be discovered/learned before use. Only valid for Crafting and DiagramCrafting bench types.
RequiredMemoriesLevelIntegerinteger (>=1)no1Minimum Memories level required. Level 1 means always available. Higher levels gate recipes behind progression.

Each entry in Input and Output is a MaterialQuantity object:

JSON KeyJava TypeJSON TypeRequiredDescription
MaterialStringstringnoReference to an Item asset ID.
ResourceTypeStringstringnoResource type identifier (alternative to specific material).
TagsString[]array of stringsnoTag-based matching (any item with matching tags).
QuantityIntegerintegeryesNumber of items required/produced.
QualityStringstringnoQuality level requirement.

At least one of Material, ResourceType, or Tags should be specified per entry.

Each entry in BenchRequirement specifies a crafting station constraint:

JSON KeyJava TypeJSON TypeRequiredDescription
TypeBenchTypestring (enum)yesBench type: Crafting, Smelting, DiagramCrafting, Fieldcraft, etc.
IdStringstringnoReference to a specific bench asset.
CategoriesString[]array of stringsnoBench categories that satisfy the requirement.
RequiredTierLevelIntegerintegernoMinimum bench tier level required.

The codec enforces these validation constraints:

  • KnowledgeRequired is only valid when BenchRequirement includes a Crafting or DiagramCrafting bench type
  • DiagramCrafting recipes may have at most 1 output
  • Fieldcraft recipes should not have TimeSeconds set (instant crafting only)
{
"Input": [
{ "Material": "Wood_Oak_Planks", "Quantity": 4 },
{ "Material": "Iron_Ingot", "Quantity": 2 }
],
"OutputQuantity": 1,
"BenchRequirement": [
{ "Type": "Crafting" }
],
"TimeSeconds": 5.0
}
{
"Icon": "Icons/ItemsGenerated/Iron_Sword.png",
"Weapon": { ... },
"Recipe": {
"Input": [
{ "Material": "Iron_Ingot", "Quantity": 3 },
{ "Material": "Wood_Oak_Planks", "Quantity": 1 }
],
"BenchRequirement": [
{ "Type": "Crafting" }
]
}
}

When defined inline, PrimaryOutput is auto-set to the containing item.