Skip to content
Tinkers' Construct

Tinkers' Construct

Generated page, edit scripts/gen_schema_pages.py instead.

Tinkers’ Construct recipes (1.20.1), pkl4mc dialect.

Covers the smeltery (melting/casting/alloying), tool building/part builder, and modifier recipe families. Field shapes verified against TConstruct’s and Mantle’s real RecordLoadable definitions (both cloned to temp/ during authoring), not docs or JEI.

Out of scope for this schema (see TODO.md roadmap notes): - allowed_materials / modifier_predicate restrictions always default to “any”, the mod’s MaterialPredicate/ModifierPredicate JSON grammars support AND/OR/tag compounds we don’t expose. - ToolCastingRecipe, ShapedMaterialsRecipe, ShapelessMaterialsRecipe, TippedToolTransformRecipe, deep custom parsers, need a dedicated pass. - Material stat/trait/tool-definition JSON (data/tconstruct/tinkering/**), a separate non-recipe datapack registry entirely. - Cosmetic id-only recipes with zero JSON fields (armor dyeing/banner/trim, beheading/shearing, tinker station/crafting table repair), nothing for a user to author.

Usage

amends "@pkl4mc/tconstruct_recipes.pkl"

Example

recipes
// Tinkers' Construct recipes - one example per type.
// Each entry becomes `<name>.json` under this file's directory.
amends "@pkl4mc/tconstruct_recipes.pkl"

melting {
  new {
    name = "example_melting_iron"
    ingredient { tag = "forge:ingots/iron" }
    result { fluid = "tconstruct:molten_iron"; amount = 90 }
    temperature = 800
    time = 60
  }
}

ore_melting {
  new {
    name = "example_ore_melting_diamond"
    ingredient { tag = "forge:ores/diamond" }
    result { fluid = "tconstruct:molten_diamond"; amount = 300 }
    temperature = 1450
    time = 355
    rate = "gem"
    byproducts { new { fluid = "tconstruct:molten_debris"; amount = 270 } }
  }
}

damagable_melting {
  new {
    name = "example_damagable_melting_iron_sword"
    ingredient { item = "minecraft:iron_sword" }
    result { fluid = "tconstruct:molten_iron"; amount = 180 }
    temperature = 800
    time = 60
    unitSize = 90
  }
}

material_melting {
  new {
    name = "example_material_melting_iron"
    input = "tconstruct:iron"
    temperature = 800
    result { fluid = "tconstruct:molten_iron"; amount = 10 }
  }
}

melting_fuel {
  new {
    name = "example_melting_fuel_lava"
    fluid { fluid = "minecraft:lava"; amount = 1 }
    duration = 20
    temperature = 1300
    rate = 20
  }
}

entity_melting {
  new {
    name = "example_entity_melting_blaze"
    entity = "minecraft:blaze"
    result { fluid = "tconstruct:blazing_blood"; amount = 20 }
    damage = 2
  }
}

alloy {
  new {
    name = "example_alloy_bronze"
    inputs {
      new { fluid = "forge:molten_copper"; amount = 270 }
      new { fluid = "forge:molten_tin"; amount = 90 }
    }
    result { fluid = "tconstruct:molten_bronze"; amount = 360 }
    temperature = 700
  }
}

casting_basin {
  new {
    name = "example_casting_basin_iron_ingot"
    cast { tag = "tconstruct:casts/multi_use/ingot" }
    fluid { fluid = "tconstruct:molten_iron"; amount = 90 }
    result { item = "minecraft:iron_ingot" }
    coolingTime = 60
  }
}

casting_table {
  new {
    name = "example_casting_table_iron_ingot"
    cast { tag = "tconstruct:casts/multi_use/ingot" }
    fluid { fluid = "tconstruct:molten_iron"; amount = 90 }
    result { item = "minecraft:iron_ingot" }
    coolingTime = 60
  }
}

container_filling_basin {
  new {
    name = "example_container_filling_basin_bucket"
    fluidAmount = 1000
    container = "minecraft:bucket"
  }
}

container_filling_table {
  new {
    name = "example_container_filling_table_bucket"
    fluidAmount = 1000
    container = "minecraft:bucket"
  }
}

cast_duplication_basin {
  new {
    name = "example_cast_duplication_basin_ingot"
    cast { tag = "tconstruct:casts/multi_use/ingot" }
    fluid { fluid = "tconstruct:molten_gold"; amount = 90 }
    coolingTime = 30
  }
}

cast_duplication_table {
  new {
    name = "example_cast_duplication_table_ingot"
    cast { tag = "tconstruct:casts/multi_use/ingot" }
    fluid { fluid = "tconstruct:molten_gold"; amount = 90 }
    coolingTime = 30
  }
}

potion_casting_basin {
  new {
    name = "example_potion_casting_basin_bottle"
    bottle { item = "minecraft:glass_bottle" }
    fluid { tag = "forge:potion" }
    result = "minecraft:potion"
  }
}

potion_casting_table {
  new {
    name = "example_potion_casting_table_bottle"
    bottle { item = "minecraft:glass_bottle" }
    fluid { tag = "forge:potion" }
    result = "minecraft:potion"
  }
}

tipping_basin {
  new {
    name = "example_tipping_basin_arrow"
    tools { item = "tconstruct:tipped_arrow" }
    fluid { tag = "forge:potion" }
    modifier = "tconstruct:potion"
  }
}

tipping_table {
  new {
    name = "example_tipping_table_arrow"
    tools { item = "tconstruct:tipped_arrow" }
    fluid { tag = "forge:potion" }
    modifier = "tconstruct:potion"
  }
}

tip_clearing_basin {
  new {
    name = "example_tip_clearing_basin_arrow"
    tools { item = "tconstruct:tipped_arrow" }
    fluid { fluid = "minecraft:water"; amount = 1 }
    modifier = "tconstruct:potion"
  }
}

tip_clearing_table {
  new {
    name = "example_tip_clearing_table_arrow"
    tools { item = "tconstruct:tipped_arrow" }
    fluid { fluid = "minecraft:water"; amount = 1 }
    modifier = "tconstruct:potion"
  }
}

material_casting_basin {
  new {
    name = "example_material_casting_basin_pick_head"
    cast { tag = "tconstruct:casts/multi_use/pick_head" }
    itemCost = 2
    result = "tconstruct:pick_head"
  }
}

material_casting_table {
  new {
    name = "example_material_casting_table_pick_head"
    cast { tag = "tconstruct:casts/multi_use/pick_head" }
    itemCost = 2
    result = "tconstruct:pick_head"
  }
}

composite_casting_basin {
  new {
    name = "example_composite_casting_basin_pick_head"
    itemCost = 2
    result = "tconstruct:pick_head"
  }
}

composite_casting_table {
  new {
    name = "example_composite_casting_table_pick_head"
    itemCost = 2
    result = "tconstruct:pick_head"
  }
}

part_swap_casting_basin {
  new {
    name = "example_part_swap_casting_basin_pickaxe"
    tools { item = "tconstruct:pick_axe" }
    itemCost = 2
    index = 0
  }
}

part_swap_casting_table {
  new {
    name = "example_part_swap_casting_table_pickaxe"
    tools { item = "tconstruct:pick_axe" }
    itemCost = 2
    index = 0
  }
}

molding_basin {
  new {
    name = "example_molding_basin_clay"
    material { item = "minecraft:clay_ball" }
    pattern { item = "tconstruct:pick_head_pattern" }
    result { item = "tconstruct:pick_head_cast" }
  }
}

molding_table {
  new {
    name = "example_molding_table_clay"
    material { item = "minecraft:clay_ball" }
    pattern { item = "tconstruct:pick_head_pattern" }
    result { item = "tconstruct:pick_head_cast" }
  }
}

material_fluid {
  new {
    name = "example_material_fluid_iron"
    fluid { fluid = "tconstruct:molten_iron"; amount = 10 }
    temperature = 800
    output = "tconstruct:iron"
  }
}

material {
  new {
    name = "example_material_iron"
    ingredient { tag = "forge:ingots/iron" }
    value = 1
    needed = 1
    material = "tconstruct:iron"
  }
}

tool_building {
  new {
    name = "example_tool_building_pickaxe"
    result = "tconstruct:pick_axe"
  }
}

tinker_station_part_swapping {
  new {
    name = "example_tinker_station_part_swapping_pickaxe"
    tools { tag = "tconstruct:modifiable/harvest" }
  }
}

tinker_station_damaging {
  new {
    name = "example_tinker_station_damaging_flint"
    ingredient { item = "minecraft:flint" }
    damageAmount = 10
  }
}

fixed_material_swapping {
  new {
    name = "example_fixed_material_swapping_pickaxe"
    tools { tag = "tconstruct:modifiable/harvest" }
    ingredient { tag = "forge:ingots/iron" }
    material = "tconstruct:iron"
    index { 0 }
  }
}

part_swapping_override {
  new {
    name = "example_part_swapping_override_pickaxe"
    tools { tag = "tconstruct:modifiable/harvest" }
    part = "tconstruct:pick_head"
    index { 0 }
  }
}

tool_material_swapping {
  new {
    name = "example_tool_material_swapping_pickaxe"
    tools { tag = "tconstruct:modifiable/harvest" }
  }
}

part_builder {
  new {
    name = "example_part_builder_adze_head"
    pattern = "tconstruct:adze_head"
    cost = 2
    output { item = "tconstruct:adze_head" }
  }
}

item_part_builder {
  new {
    name = "example_item_part_builder_stick"
    pattern = "tconstruct:tool_rod"
    output { item = "minecraft:stick" }
  }
}

part_builder_tool_recycling {
  new {
    name = "example_part_builder_tool_recycling"
    pattern { item = "tconstruct:pick_head_pattern" }
  }
}

part_builder_recycling {
  new {
    name = "example_part_builder_recycling_shovel"
    tool { item = "minecraft:iron_shovel" }
    pattern { item = "tconstruct:shovel_head_pattern" }
    results {
      ["tconstruct:shovel_head_cast"] { item = "tconstruct:shovel_head"; count = 1 }
    }
  }
}

modifier {
  new {
    name = "example_modifier_autosmelt"
    inputs {
      new { tag = "forge:storage_blocks/coal" }
    }
    tools { tag = "tconstruct:modifiable/harvest" }
    result = "tconstruct:autosmelt"
    slots { slot = "abilities"; count = 1 }
  }
}

incremental_modifier {
  new {
    name = "example_incremental_modifier_reinforced"
    input { tag = "forge:ingots/iron" }
    neededPerLevel = 1
    tools { tag = "tconstruct:modifiable/harvest" }
    result = "tconstruct:reinforced"
  }
}

swappable_modifier {
  new {
    name = "example_swappable_modifier_wood_type"
    inputs {
      new { item = "minecraft:oak_planks" }
    }
    tools { tag = "tconstruct:modifiable/harvest" }
    resultModifier = "tconstruct:extra"
    resultValue = "oak"
  }
}

multilevel_modifier {
  new {
    name = "example_multilevel_modifier_reinforced"
    inputs {
      new { tag = "forge:ingots/iron" }
    }
    tools { tag = "tconstruct:modifiable/harvest" }
    result = "tconstruct:reinforced"
    levels {
      new { level = 1 }
      new { level = new LevelRange { min = 2; max = 3 } }
    }
  }
}

multilevel_incremental_modifier {
  new {
    name = "example_multilevel_incremental_modifier_reinforced"
    input { tag = "forge:ingots/iron" }
    neededPerLevel = 1
    tools { tag = "tconstruct:modifiable/harvest" }
    result = "tconstruct:reinforced"
    levels {
      new { level = 1 }
      new { level = new LevelRange { min = 2; max = 3 } }
    }
  }
}

overslime_modifier {
  new {
    name = "example_overslime_modifier_slimy"
    ingredient { tag = "forge:slimeballs" }
    restoreAmount = 100
  }
}

crafting_overslime_modifier {
  new {
    name = "example_crafting_overslime_modifier_slimy"
    ingredient { tag = "forge:slimeballs" }
    restoreAmount = 100
  }
}

modifier_salvage {
  new {
    name = "example_modifier_salvage_autosmelt"
    tools { tag = "tconstruct:modifiable/harvest" }
    modifier = "tconstruct:autosmelt"
    slots { slot = "abilities"; count = 1 }
  }
}

modifier_repair {
  new {
    name = "example_modifier_repair_wooden"
    modifier = "tconstruct:wooden"
    ingredient { tag = "minecraft:planks" }
    repairAmount = 50
  }
}

crafting_modifier_repair {
  new {
    name = "example_crafting_modifier_repair_wooden"
    modifier = "tconstruct:wooden"
    ingredient { tag = "minecraft:planks" }
    repairAmount = 50
  }
}

remove_modifier {
  new {
    name = "example_remove_modifier"
    inputs {
      new { item = "minecraft:shears" }
    }
  }
}

extract_modifier {
  new {
    name = "example_extract_modifier"
    inputs {
      new { item = "minecraft:shears" }
    }
  }
}

modifier_sorting {
  new {
    name = "example_modifier_sorting"
    inputs {
      new { item = "minecraft:redstone" }
    }
  }
}

modifier_set_worktable {
  new {
    name = "example_modifier_set_worktable"
    dataKey = "tconstruct:persistent_data_key"
    inputs {
      new { item = "minecraft:paper" }
    }
    addToSet = true
  }
}

enchantment_converting {
  new {
    name = "example_enchantment_converting"
    groupName = "enchantment_converting"
    inputs {
      new { tag = "minecraft:enchanting_books" }
    }
    matchBook = true
    returnUnenchanted = false
  }
}

toggle_interaction {
  new {
    name = "example_toggle_interaction"
    inputs {
      new { item = "minecraft:redstone" }
    }
  }
}

severing {
  new {
    name = "example_severing_cave_spider"
    entity = "minecraft:cave_spider"
    result { item = "tconstruct:cave_spider_head" }
  }
}

ageable_severing {
  new {
    name = "example_ageable_severing_cow"
    entity = "minecraft:cow"
    adultResult { item = "minecraft:beef" }
    childResult { item = "minecraft:leather" }
  }
}