Thermal Series
scripts/gen_schema_pages.py instead.Thermal Series recipes (1.20.1), pkl4mc dialect.
Thermal isn’t open source, verified against decompiled bytecode (CFR) from the actual jars in a real modpack instance (thermal_foundation/expansion/dynamics/integration, plus thermal_core which ships jar-in-jar inside thermal_foundation’s META-INF/jarjar/). All 14 standard machines share one generic recipe shape (MachineRecipeSerializer in cofh.thermal.lib.util.recipes), same input/output/energy/experience fields, item vs. fluid auto-detected per entry. Only insolator differs (adds a water field). The 3 *_catalyst types are a separate concept (chance/energy modifiers for existing recipes when a bonus item is present), modeled separately.
energy_mod/water_mod (scale-the-default-instead-of-setting-an-absolute-value) are not exposed, set energy/water directly instead.
Usage
amends "@pkl4mc/thermal_recipes.pkl"Example
recipes
// Thermal Series recipes - one example per machine type.
// Each entry becomes `<name>.json` under this file's directory.
amends "@pkl4mc/thermal_recipes.pkl"
furnace {
new {
name = "example_furnace_iron_ingot"
inputs { new { item = "minecraft:raw_iron" } }
outputs { new { item = "minecraft:iron_ingot" } }
}
}
sawmill {
new {
name = "example_sawmill_planks"
inputs { new { tag = "minecraft:logs" } }
outputs { new { item = "minecraft:oak_planks"; count = 6 } new { item = "minecraft:stick"; count = 1; chance = 0.25 } }
}
}
pulverizer {
new {
name = "example_pulverizer_iron_dust"
inputs { new { tag = "forge:ores/iron" } }
outputs { new { item = "thermal:iron_dust"; count = 2 } new { item = "minecraft:cobblestone"; chance = 0.2 } }
}
}
pulverizer_recycle {
new {
name = "example_pulverizer_recycle_iron_dust"
inputs { new { item = "thermal:iron_dust" } }
outputs { new { item = "minecraft:raw_iron" } }
}
}
smelter {
new {
name = "example_smelter_bronze_ingot"
inputs {
new { tag = "forge:ingots/copper"; count = 3 }
new { tag = "forge:ingots/tin" }
}
outputs { new { item = "thermal:bronze_ingot"; count = 4 } }
energy = 4000
}
}
smelter_recycle {
new {
name = "example_smelter_recycle_bronze_ingot"
inputs { new { item = "thermal:bronze_ingot" } }
outputs {
new { item = "minecraft:copper_ingot"; count = 3; chance = 1.0; locked = true }
new { item = "thermal:tin_ingot"; chance = 1.0; locked = true }
}
}
}
centrifuge {
new {
name = "example_centrifuge_sludge"
inputs { new { item = "thermal:sludge" } }
outputs {
new { item = "minecraft:dirt"; chance = 0.5 }
new { item = "minecraft:clay_ball"; chance = 0.1 }
new { item = "minecraft:gravel"; chance = 0.1 }
}
}
}
press {
new {
name = "example_press_iron_plate"
inputs { new { item = "minecraft:iron_ingot" } }
outputs { new { item = "thermal:iron_plate" } }
}
}
crucible {
new {
name = "example_crucible_molten_iron"
inputs { new { item = "minecraft:iron_ingot" } }
outputs { new { fluid = "thermal:iron"; amount = 144 } }
}
}
chiller {
new {
name = "example_chiller_iron_ingot"
inputs { new { fluid = "thermal:iron"; amount = 144 } }
outputs { new { item = "minecraft:iron_ingot" } }
}
}
refinery {
new {
name = "example_refinery_separate_oil"
inputs { new { fluid = "thermal:refined_oil"; amount = 100 } }
outputs {
new { fluid = "thermal:naphtha"; amount = 40 }
new { fluid = "thermal:fuel"; amount = 60 }
}
}
}
pyrolyzer {
new {
name = "example_pyrolyzer_charcoal"
inputs { new { tag = "minecraft:logs" } }
outputs {
new { item = "minecraft:charcoal" }
new { fluid = "thermal:creosote"; amount = 20 }
}
}
}
bottler {
new {
name = "example_bottler_water_bucket"
inputs {
new { item = "minecraft:bucket" }
new { fluid = "minecraft:water"; amount = 1000 }
}
outputs { new { item = "minecraft:water_bucket" } }
}
}
brewer {
new {
name = "example_brewer_honey_water"
inputs {
new { fluid = "thermal:water"; amount = 250 }
new { item = "minecraft:honey_bottle" }
}
outputs { new { fluid = "thermal:honeyed_water"; amount = 250 } }
}
}
crystallizer {
new {
name = "example_crystallizer_certus_quartz"
inputs { new { fluid = "thermal:redstone"; amount = 100 } }
outputs { new { item = "minecraft:redstone"; count = 4 } }
}
}
insolator {
new {
name = "example_insolator_wheat_seeds"
inputs { new { item = "minecraft:wheat_seeds" } }
outputs {
new { item = "minecraft:wheat_seeds"; count = 2 }
new { item = "minecraft:wheat"; chance = 0.5 }
}
water = 20
}
}
pulverizer_catalyst {
new {
name = "example_pulverizer_catalyst_sand"
ingredient { item = "minecraft:sand" }
primaryMod = 1.1
useChance = 0.5
}
}
smelter_catalyst {
new {
name = "example_smelter_catalyst_flux"
ingredient { item = "thermal:flux_dust" }
energyMod = 0.9
}
}
insolator_catalyst {
new {
name = "example_insolator_catalyst_fertilizer"
ingredient { item = "minecraft:bone_meal" }
secondaryMod = 1.5
minChance = 0.1
}
}