Files
Technic-Server-1.20.1/overrides/kubejs/server_scripts/key_mods/thermal.js
Jacob Vinding c4ad0f3e2e Added mod files
2025-12-26 21:38:55 +01:00

221 lines
11 KiB
JavaScript

// priority: 1
wood_types.push("thermal:rubberwood")
ServerEvents.recipes(event => {
// filter augment recipe change
event.remove({ id: "thermal:augments/item_filter_augment" })
event.shapeless("thermal:item_filter_augment", ["create:filter", "thermal:lapis_gear"])
// Augments that do nothing in 1.18.2
event.remove({ id: "thermal:augments/rs_control_augment" })
event.remove({ id: "thermal:augments/side_config_augment" })
// Silver replacements
event.replaceInput({ id: "thermal:augments/rf_coil_storage_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:augments/rf_coil_xfer_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:augments/rf_coil_augment" }, "#forge:ingots/silver", "#forge:ingots/iron")
event.replaceInput({ id: "thermal:tools/detonator" }, "#forge:ingots/silver", "#forge:ingots/lead")
// why are these even recipes?
event.remove({ id: "thermal:lightning_charge/zombified_piglin_from_pig"})
event.remove({ id: "thermal:lightning_charge/witch_from_villager"})
// duplicate storage block recipes
event.remove({ id: "thermal:storage/carrot_block" })
event.remove({ id: "thermal:storage/potato_block" })
event.remove({ id: "thermal:storage/beetroot_block" })
// Obsidian pulverizing
event.recipes.thermal.pulverizer(["create:powdered_obsidian"], "#forge:obsidian", 0, 8000)
// Ender pearl pulverizing
event.replaceOutput({ id: "thermal:machines/pulverizer/pulverizer_ender_pearl" }, "thermal:ender_pearl_dust", "ae2:ender_dust")
event.replaceOutput({ id: "thermal:earth_charge/ender_pearl_dust_from_ender_pearl" }, "thermal:ender_pearl_dust", "ae2:ender_dust")
// Bitumen crushing recipes
event.recipes.create.crushing([Item.of("thermal:bitumen"), Item.of("thermal:bitumen", 2).withChance(0.75), Item.of("thermal:tar", 1).withChance(0.75), Item.of("minecraft:sand").withChance(0.25)], "thermal:oil_sand")
event.recipes.create.crushing([Item.of("thermal:bitumen"), Item.of("thermal:bitumen", 2).withChance(0.75), Item.of("thermal:tar", 1).withChance(0.75), Item.of("minecraft:red_sand").withChance(0.25)], "thermal:oil_red_sand")
// ruby and sapphire block recipes
let blockTemplate = [ "III", "III", "III" ]
event.shaped(Item.of("thermal:ruby_block", 1), blockTemplate, { I: "#forge:gems/ruby"})
event.shapeless(Item.of("thermal:ruby", 9), ["#forge:storage_blocks/ruby"])
event.shaped(Item.of("thermal:sapphire_block", 1), blockTemplate, { I: "#forge:gems/sapphire"})
event.shapeless(Item.of("thermal:sapphire", 9), ["#forge:storage_blocks/sapphire"])
// Ruby and sapphire dusts from pulverizing
event.recipes.thermal.pulverizer("thermal:sapphire_dust", "thermal:sapphire", 0, 4000)
event.recipes.thermal.pulverizer("thermal:ruby_dust", "thermal:ruby", 0, 4000)
// Ruby and sapphire dusts from earth charges
event.shapeless(Item.of("thermal:ruby_dust"), ["#forge:gems/ruby", "thermal:earth_charge"])
event.shapeless(Item.of("thermal:sapphire_dust"), ["#forge:gems/sapphire", "thermal:earth_charge"])
// Make molten glass with the cruicible
event.recipes.thermal.crucible(Fluid.of("tconstruct:molten_glass", 1000), "#forge:sand", 0, 6000)
event.recipes.thermal.crucible(Fluid.of("tconstruct:molten_glass", 1000), "#forge:glass/colorless", 0, 3000)
// Gourmand fuel recipes for farmer's delight crates
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:carrot_crate"}, "energy": 48000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:potato_crate"}, "energy": 16000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:beetroot_crate"}, "energy": 16000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:cabbage_crate"}, "energy": 32000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:onion_crate"}, "energy": 32000})
event.custom({"type": "thermal:gourmand_fuel", "ingredient": {"item": "farmersdelight:tomato_crate"}, "energy": 16000})
// Igneous Extruder recipes
let bedrock_cobblegen = (adjacent, output) => {
event.custom({
"type": "thermal:rock_gen",
"adjacent": adjacent,
"below": "minecraft:bedrock",
"result": { "item": output }
})
}
bedrock_cobblegen("minecraft:packed_ice", "minecraft:andesite")
bedrock_cobblegen("architects_palette:polished_packed_ice", "minecraft:granite")
bedrock_cobblegen("architects_palette:chiseled_packed_ice", "minecraft:diorite")
// Also add igneous extruder recipes for the 2 create stone gen recipes
event.custom({
"type": "thermal:rock_gen",
"adjacent": "create:chocolate",
"result": { "item": "create:scoria"}
})
event.custom({
"type": "thermal:rock_gen",
"adjacent": "create:honey",
"result": { "item": "create:limestone"}
})
// thermal dynamics stuff
// thermal dynamics might be split into a compatability mod eventually
// Energy duct recipe change
event.remove({ output: "thermal:energy_duct" })
event.shaped("8x thermal:energy_duct", [ "PMP" ], {
P: "thermal:invar_ingot",
M: "minecraft:redstone"
})
// Remove existing insolator flower recipes since we're adding them back anyways
event.remove({ type: "thermal:insolator", input: "#minecraft:flowers", not:{ input:"#minecraft:saplings" } })
Ingredient.of("#minecraft:flowers").itemIds.forEach(flower => {
// Automatically adds all flowers as thermal insolator recipes. We're blacklisting special cases like leaves and saplings which are occasionally tagged as flowers for some reason
if( !( Ingredient.of("#minecraft:saplings").test(flower) || Ingredient.of("#minecraft:leaves").test(flower) ) ) {
event.custom({
"type": "thermal:insolator",
"ingredient": {
"item": flower
},
"result": [
{
"item": flower,
"chance": 2
}
],
"experience": 0
})
}
})
// port melting recipes for dusts, ingots and gems
const TICMETALS = [
"aluminum",
"amethyst_bronze",
"brass",
"bronze",
"cobalt",
"constantan",
// "copper",
"electrum",
"enderium",
// "gold",
"hepatizon",
"invar",
// "iron",
"knightslime",
// "lead",
"lumium",
"manyullyn",
"netherite",
// "nickel",
"osmium",
"pewter",
"pig_iron",
"platinum",
"queens_slime",
"refined_glowstone",
"refined_obsidian",
"rose_gold",
"signalum",
"silver",
"slimesteel",
"soulsteel",
"steel",
"tin",
"tungsten",
"uranium"// ,
// "zinc"
];
const TICGEMS = [
"diamond",
"emerald",
"quartz",
"amethyst",
]
TICMETALS.forEach(metal=>{
if (Ingredient.of(`#forge:dusts/${metal}`).first != Item.empty) {
event.custom({
type:"thermal:crucible",
ingredients:{tag: `forge:dusts/${metal}`},
result:{fluid: `tconstruct:molten_${metal}`, amount: 90},
energy:5000
}).id(`kubejs:crucible/${metal}/dust`)
}
})
TICMETALS.concat(["copper", "gold", "iron", "lead", "nickel", "zinc"]).forEach(metal=>{
let ingotTag = `forge:ingots/${metal}`
let rodTag = `forge:rods/${metal}`
let fluid = `tconstruct:molten_${metal}`
if (Ingredient.of("#" + ingotTag).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 90), "#" + ingotTag, 0, 5000).id(`kubejs:crucible/${metal}/ingot`)
event.recipes.thermal.chiller(getPreferredItemFromTag(ingotTag), [Fluid.of(fluid, 90), "thermal:chiller_ingot_cast"]).id(`kubejs:chiller/${metal}/ingot`)
}
if (Ingredient.of("#" + rodTag).first != Item.empty) {
event.recipes.thermal.chiller(getPreferredItemFromTag(rodTag), [Fluid.of(fluid, 45), "thermal:chiller_rod_cast"]).id(`kubejs:chiller/${metal}/rod`)
}
})
TICGEMS.forEach(gem=>{
let gemTag = `forge:gems/${gem}`
let fluid = `tconstruct:molten_${gem}`
if (Ingredient.of(`#forge:gems/${gem}`).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 100), "#" + gemTag, 0, 5000).id(`kubejs:crucible/${gem}/gem`)
}
})
const OTHER_INGOTS = [
{name: "brick", fluid: "tconstruct:molten_clay"},
{name: "seared_brick", fluid: "tconstruct:seared_stone"},
{name: "scorched_brick", fluid: "tconstruct:scorched_stone"},
{name: "netherite_scrap", fluid: "tconstruct:molten_debris"}
]
OTHER_INGOTS.forEach(material=>{
let name = material.name
let ingotTag = "forge:ingots/" + material.name
let fluid = material.fluid
if (Ingredient.of("#" + ingotTag).first != Item.empty) {
event.recipes.thermal.crucible(Fluid.of(fluid, 90), "#" + ingotTag, 0, 5000).id(`kubejs:crucible/${name}`)
event.recipes.thermal.chiller(getPreferredItemFromTag(ingotTag), [Fluid.of(fluid, 90), "thermal:chiller_ingot_cast"]).id(`kubejs:chiller/${name}`)
}
})
// Ball recipes
event.recipes.thermal.chiller("minecraft:slime_ball", [Fluid.of("tconstruct:earth_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/slime_ball");
event.recipes.thermal.chiller("tconstruct:sky_slime_ball", [Fluid.of("tconstruct:sky_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/sky_slime_ball");
event.recipes.thermal.chiller("tconstruct:ender_slime_ball", [Fluid.of("tconstruct:ender_slime", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/ender_slime_ball");
event.recipes.thermal.chiller("tconstruct:blood_slime_ball", [Fluid.of("tconstruct:blood", 250), "thermal:chiller_ball_cast"]).id("kubejs:chiller/blood_slime_ball");
})
ServerEvents.lowPriorityData(event => {
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/beetroot_block", ["farmersdelight:beetroot_crate", "thermal:beetroot_block"])
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/carrot_block", ["farmersdelight:carrot_crate", "thermal:carrot_block"])
addChiselingRecipe(event, "kubejs:chiseling_recipes/thermal/potato_block", ["farmersdelight:potato_crate", "thermal:potato_block"])
})