neuralgia/kubejs/server_scripts/tfc/recipes.metals.js
2025-08-21 12:06:38 +01:00

431 lines
15 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// priority: 0
"use strict";
function registerTFCMetalsRecipes(event) {
//#region Alloying
// Fix ratios of TFC alloys to match GT's
event.recipes.tfc.alloy('tfc:bronze', [
TFC.alloyPart('tfc:copper', 0.7, 0.8),
TFC.alloyPart('tfc:tin', 0.2, 0.3)
]).id('tfc:alloy/bronze')
event.recipes.tfc.alloy('tfc:brass', [
TFC.alloyPart('tfc:copper', 0.7, 0.8),
TFC.alloyPart('tfc:zinc', 0.2, 0.3)
]).id('tfc:alloy/brass')
// New alloys
event.recipes.tfc.alloy('tfg:red_alloy', [
TFC.alloyPart('tfg:redstone', 0.75, 0.85),
TFC.alloyPart('tfc:copper', 0.15, 0.25)
]).id('tfg:alloy/red_alloy')
event.recipes.tfc.alloy('tfg:tin_alloy', [
TFC.alloyPart('tfc:tin', 0.45, 0.55),
TFC.alloyPart('tfc:cast_iron', 0.45, 0.55)
]).id('tfg:alloy/tin_alloy')
event.recipes.tfc.alloy('tfg:invar', [
TFC.alloyPart('tfc:nickel', 0.60, 0.70),
TFC.alloyPart('tfc:cast_iron', 0.30, 0.40)
]).id('tfg:alloy/invar')
event.recipes.tfc.alloy('tfg:potin', [
TFC.alloyPart('tfc:copper', 0.63, 0.69),
TFC.alloyPart('tfc:tin', 0.19, 0.25),
TFC.alloyPart('tfg:lead', 0.08, 0.14)
]).id('tfg:alloy/potin')
event.recipes.tfc.alloy('tfg:cobalt_brass', [
TFC.alloyPart('tfc:brass', 0.74, 0.81),
TFC.alloyPart('tfg:cobalt', 0.08, 0.14),
TFC.alloyPart('tfg:aluminium_silicate', 0.08, 0.14)
]).id('tfg:alloy/cobalt_brass')
//#endregion
//#region Фикс рецептов колоколов
//#region Из золота
event.recipes.tfc.casting(`minecraft:bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:gold', 144), 1)
.id(`tfc:casting/gold_bell`)
event.recipes.tfc.heating(`minecraft:bell`, 1060)
.resultFluid(Fluid.of('gtceu:gold', 144))
.id(`tfc:heating/gold_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Gold, 144)),
[
Fluid.of(GTMaterials.Gold.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Gold.getName()}_bell_mold`)
//#endregion
//#region Из латуни
event.recipes.tfc.casting(`tfc:brass_bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:brass', 144), 1)
.id(`tfc:casting/brass_bell`)
event.recipes.tfc.heating(`tfc:brass_bell`, 930)
.resultFluid(Fluid.of('gtceu:brass', 144))
.id(`tfc:heating/brass_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Brass, 144)),
[
Fluid.of(GTMaterials.Brass.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Brass.getName()}_bell_mold`)
//#endregion
//#region Из бронзы
event.recipes.tfc.casting(`tfc:bronze_bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:bronze', 144), 1)
.id(`tfc:casting/bronze_bell`)
event.recipes.tfc.heating(`tfc:bronze_bell`, 930)
.resultFluid(Fluid.of('gtceu:bronze', 144))
.id(`tfc:heating/bronze_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Bronze, 144)),
[
Fluid.of(GTMaterials.Bronze.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Bronze.getName()}_bell_mold`)
//#endregion
//#endregion
//#region Рецепты ковки TFC слитков в GT машинах
// Сырая крица -> Укрепленная крица
event.recipes.gtceu.forge_hammer('tfg/refined_bloom')
.itemInputs('tfc:raw_iron_bloom')
.itemOutputs('tfc:refined_iron_bloom')
.duration(200)
.EUt(4)
// Укрепленная крица -> Слиток кованного железа
event.recipes.gtceu.forge_hammer('tfg/wrought_iron_ingot')
.itemInputs('tfc:refined_iron_bloom')
.itemOutputs('gtceu:wrought_iron_ingot')
.duration(200)
.EUt(4)
// Чугун -> Высокоуглеродная сталь
event.recipes.gtceu.forge_hammer('tfg/high_carbon_steel')
.itemInputs('tfc:metal/ingot/pig_iron')
.itemOutputs('tfc:metal/ingot/high_carbon_steel')
.duration(300)
.EUt(4)
// Высокоуглеродная сталь -> Cталь
event.recipes.gtceu.forge_hammer('tfg/steel')
.itemInputs('tfc:metal/ingot/high_carbon_steel')
.itemOutputs('gtceu:steel_ingot')
.duration(300)
.EUt(4)
// Высокоуглеродная черная сталь -> черная сталь
event.recipes.gtceu.forge_hammer('tfg/black_steel')
.itemInputs('tfc:metal/ingot/high_carbon_black_steel')
.itemOutputs('tfc:metal/ingot/black_steel')
.duration(300)
.EUt(4)
// Высокоуглеродная синяя сталь -> синяя сталь
event.recipes.gtceu.forge_hammer('tfg/blue_steel')
.itemInputs('tfc:metal/ingot/high_carbon_blue_steel')
.itemOutputs('tfc:metal/ingot/blue_steel')
.duration(400)
.EUt(4)
// Высокоуглеродная красная сталь -> красная сталь
event.recipes.gtceu.forge_hammer('tfg/red_steel')
.itemInputs('tfc:metal/ingot/high_carbon_red_steel')
.itemOutputs('tfc:metal/ingot/red_steel')
.duration(400)
.EUt(4)
// Слабая сталь + Чугун -> Высокоуглеродная черная сталь
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_black_steel',
['tfc:metal/ingot/weak_steel', 'tfc:metal/ingot/pig_iron', 'tfc:powder/flux'])
.heated()
.recipeTier(1)
.id(`greate:compacting/high_carbon_black_steel`)
event.recipes.gtceu.alloy_smelter('tfg/high_carbon_black_steel')
.itemInputs('tfc:metal/ingot/weak_steel', 'tfc:metal/ingot/pig_iron')
.itemOutputs('2x tfc:metal/ingot/high_carbon_black_steel')
.duration(600)
.EUt(4)
// Слабая синяя сталь + Черная сталь -> Высокоуглеродная синяя сталь
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_blue_steel',
['tfc:metal/ingot/weak_blue_steel', 'tfc:metal/ingot/black_steel', 'tfc:powder/flux'])
.heated()
.recipeTier(1)
.id(`greate:compacting/high_carbon_blue_steel`)
event.recipes.gtceu.alloy_smelter('tfg/high_carbon_blue_steel')
.itemInputs('tfc:metal/ingot/weak_blue_steel', 'tfc:metal/ingot/black_steel')
.itemOutputs('2x tfc:metal/ingot/high_carbon_blue_steel')
.duration(700)
.EUt(4)
// Слабая красная сталь + Черная сталь -> Высокоуглеродная красная сталь
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_red_steel',
['tfc:metal/ingot/weak_red_steel', 'tfc:metal/ingot/black_steel', 'tfc:powder/flux'])
.heated()
.recipeTier(1)
.id(`greate:compacting/high_carbon_red_steel`)
event.recipes.gtceu.alloy_smelter('tfg/high_carbon_red_steel')
.itemInputs('tfc:metal/ingot/weak_red_steel', 'tfc:metal/ingot/black_steel')
.itemOutputs('2x tfc:metal/ingot/high_carbon_red_steel')
.duration(700)
.EUt(4)
// Rose Gold + Sterling Silver
const copper_types = [
"#forge:ingots/copper",
"#forge:dusts/copper",
"#forge:ingots/annealed_copper",
"#forge:dusts/annealed_copper"
];
const gold_types = [
"#forge:ingots/gold",
"#forge:dusts/gold"
];
const silver_types = [
"#forge:ingots/silver",
"#forge:dusts/silver"
];
copper_types.forEach(copper_types_array => {
gold_types.forEach(gold_types_array => {
event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
silver_types.forEach(silver_types_array => {
event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
});
const TFC_INTERMEDIATE_METALS =
[
{ metal: 'pig_iron', meltTemp: 1535 },
{ metal: 'high_carbon_steel', meltTemp: 1540 },
{ metal: 'high_carbon_black_steel', meltTemp: 1540 },
{ metal: 'high_carbon_red_steel', meltTemp: 1540 },
{ metal: 'high_carbon_blue_steel', meltTemp: 1540 },
{ metal: 'weak_steel', meltTemp: 1540 },
{ metal: 'weak_blue_steel', meltTemp: 1540 },
{ metal: 'weak_red_steel', meltTemp: 1540 },
{ metal: 'unknown', meltTemp: 400 }
]
TFC_INTERMEDIATE_METALS.forEach(x => {
event.recipes.tfc.casting(`tfc:metal/ingot/${x.metal}`, 'tfc:ceramic/ingot_mold', Fluid.of(`tfc:metal/${x.metal}`, 144), 0.1)
.id(`tfc:casting/${x.metal}_ingot`)
event.recipes.tfc.casting(`tfc:metal/ingot/${x.metal}`, 'tfc:ceramic/fire_ingot_mold', Fluid.of(`tfc:metal/${x.metal}`, 144), 0.01)
.id(`tfc:casting/${x.metal}_fire_ingot`)
event.recipes.tfc.heating(`tfc:metal/ingot/${x.metal}`, x.meltTemp)
.resultFluid(Fluid.of(`tfc:metal/${x.metal}`, 144))
.id(`tfc:heating/metal/${x.metal}_ingot`)
event.recipes.create.filling(
Item.of('tfc:ceramic/ingot_mold',
{
tank: {
FluidName: `tfc:metal/${x.metal}`,
Amount: 144
}
}),
[
Fluid.of(`tfc:metal/${x.metal}`, 144),
Item.of('tfc:ceramic/ingot_mold').strongNBT()
])
.id(`tfg:tfc/filling/${x.metal}_ingot`)
event.recipes.create.filling(
Item.of('tfc:ceramic/fire_ingot_mold',
{
tank: {
FluidName: `tfc:metal/${x.metal}`,
Amount: 144
}
}),
[
Fluid.of(`tfc:metal/${x.metal}`, 144),
Item.of('tfc:ceramic/fire_ingot_mold').strongNBT()
]
).id(`tfg:tfc/filling/${x.metal}_fire_ingot`)
})
//#endregion
//#region Фикс рецептов металлических предметов
// Рецепт Jacks
event.recipes.tfc.welding('tfc:jacks', '#forge:rods/brass', '#forge:plates/brass', 2)
.id(`tfc:welding/jacks`)
event.recipes.greate.compacting('tfc:jacks', ['#forge:rods/brass', '#forge:plates/brass', 'tfc:powder/flux'])
.heated()
.recipeTier(0)
.id('greate:compacting/jacks')
// Декрафт Jacks
event.recipes.tfc.heating('tfc:jacks', 930)
.resultFluid(Fluid.of('gtceu:brass', 144))
.id(`tfc:heating/jacks`)
// Декрафт Gem Saw
event.recipes.tfc.heating('tfc:gem_saw', 930)
.resultFluid(Fluid.of('gtceu:brass', 72))
.id(`tfc:heating/gem_saw`)
// Декрафт сырой крицы в жидкость
event.recipes.tfc.heating(`tfc:raw_iron_bloom`, 1535)
.resultFluid(Fluid.of('gtceu:iron', 144))
.id(`tfc:heating/raw_bloom`)
// Декрафт укрепленной крицы в жидкость
event.recipes.tfc.heating(`tfc:refined_iron_bloom`, 1535)
.resultFluid(Fluid.of('gtceu:iron', 144))
.id(`tfc:heating/refined_bloom`)
// Гриль
event.recipes.tfc.heating('tfc:wrought_iron_grill', 1535)
.resultFluid(Fluid.of('gtceu:iron', 288))
.id(`tfc:heating/grill`)
// Ванильная дверь декрафт
event.recipes.tfc.heating('minecraft:iron_door', 1535)
.resultFluid(Fluid.of('gtceu:iron', 288))
.id(`tfc:heating/iron_door`)
// Ванильная дверь на наковальне
event.recipes.tfc.anvil('minecraft:iron_door', '#forge:double_plates/wrought_iron', ['hit_last', 'draw_not_last', 'punch_not_last'])
.tier(3)
.id(`tfc:anvil/iron_door`)
// Bloom -> Wrought Iron Ingot
event.recipes.tfc.anvil('gtceu:wrought_iron_ingot', 'tfc:refined_iron_bloom', ['hit_last', 'hit_second_last', 'hit_third_last'])
.tier(2)
.id('tfc:anvil/wrought_iron_from_bloom')
// High Carbon Steel Ingot -> Steel Ingot
event.recipes.tfc.anvil('gtceu:steel_ingot', 'tfc:metal/ingot/high_carbon_steel', ['hit_last', 'hit_second_last', 'hit_third_last'])
.tier(3)
.id('tfc:anvil/steel_ingot')
// High Carbon Black Steel Ingot -> Black Steel Ingot
event.recipes.tfc.anvil('tfc:metal/ingot/black_steel', 'tfc:metal/ingot/high_carbon_black_steel', ['hit_last', 'hit_second_last', 'hit_third_last'])
.tier(4)
.id('tfc:anvil/black_steel_ingot')
// High Carbon Red Steel Ingot -> Red Steel Ingot
event.recipes.tfc.anvil('tfc:metal/ingot/red_steel', 'tfc:metal/ingot/high_carbon_red_steel', ['hit_last', 'hit_second_last', 'hit_third_last'])
.tier(5)
.id('tfc:anvil/red_steel_ingot')
// High Carbon Blue Steel Ingot -> Blue Steel Ingot
event.recipes.tfc.anvil('tfc:metal/ingot/blue_steel', 'tfc:metal/ingot/high_carbon_blue_steel', ['hit_last', 'hit_second_last', 'hit_third_last'])
.tier(5)
.id('tfc:anvil/blue_steel_ingot')
// Cast iron -> Raw Iron Bloom
event.recipes.tfc.bloomery('tfc:raw_iron_bloom', 'minecraft:charcoal', Fluid.of('gtceu:iron', 144), 15000)
.id('tfc:bloomery/raw_iron_bloom')
// Cast Iron -> Pig Iron
event.recipes.tfc.blast_furnace(Fluid.of('tfc:metal/pig_iron', 1), '#tfc:flux', Fluid.of('gtceu:iron', 1))
.id('tfc:blast_furnace/pig_iron')
//#endregion
//#region Gravel Deposit Washing
const deposit_ores = [
'native_gold',
'native_copper',
'native_silver',
'cassiterite'
];
global.TFC_STONE_TYPES.forEach(stone => {
deposit_ores.forEach(ore => {
event.recipes.gtceu.ore_washer(`tfc:ore_washer/water/deposit/${ore}/${stone}`)
.itemInputs(`1x tfc:deposit/${ore}/${stone}`)
.inputFluids("#tfg:clean_water 100")
.circuit(4)
.itemOutputs(`1x tfc:ore/normal_${ore}`)
.duration(400)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.ore_washer(`tfc:ore_washer/distilled_water/deposit/${ore}/${stone}`)
.itemInputs(`1x tfc:deposit/${ore}/${stone}`)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.circuit(4)
.itemOutputs(`1x tfc:ore/normal_${ore}`)
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
})
})
//#endregion
// Melting powders
const METAL_POWDERS = [
{ powder: 'tfc:powder/native_copper', material: GTMaterials.Copper },
{ powder: 'tfc:powder/native_gold', material: GTMaterials.Gold },
{ powder: 'tfc:powder/hematite', material: GTMaterials.Hematite },
{ powder: 'tfc:powder/native_silver', material: GTMaterials.Silver },
{ powder: 'tfc:powder/cassiterite', material: GTMaterials.Cassiterite },
{ powder: 'tfc:powder/bismuthinite', material: GTMaterials.Bismuth },
{ powder: 'tfc:powder/garnierite', material: GTMaterials.Garnierite },
{ powder: 'tfc:powder/malachite', material: GTMaterials.Malachite },
{ powder: 'tfc:powder/magnetite', material: GTMaterials.Magnetite },
{ powder: 'tfc:powder/limonite', material: GTMaterials.YellowLimonite },
{ powder: 'tfc:powder/sphalerite', material: GTMaterials.Sphalerite },
{ powder: 'tfc:powder/tetrahedrite', material: GTMaterials.Tetrahedrite },
{ powder: 'tfc:powder/pyrite', material: GTMaterials.Pyrite }
]
METAL_POWDERS.forEach(x => {
const tfcProperty = x.material.getProperty(TFGPropertyKey.TFC_PROPERTY)
let outputMaterial = (tfcProperty.getOutputMaterial() === null) ? x.material : tfcProperty.getOutputMaterial()
event.recipes.tfc.heating(x.powder, tfcProperty.getMeltTemp())
.resultFluid(Fluid.of(outputMaterial.getFluid(), global.calcAmountOfMetalProcessed(36, tfcProperty.getPercentOfMaterial())))
.id(`tfg:heating/powder/${x.material.getName()}`)
})
}