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

1340 lines
56 KiB
JavaScript

// priority: 2
function ifiniDeploying(event, output, input, tool) {
return {
"type": "create:deploying",
"ingredients": [
Ingredient.of(input).toJson(),
Ingredient.of(tool).toJson()
],
"results": [
Item.of(output)
],
"keepHeldItem": true
}
}
ServerEvents.recipes(event => {
/**
* Used to store the name of an item when making sequenced assembly recipes
* @type {string}
*/
let transitional
// - - - - - Chapter 1 - - - - -
// Wood slab cutting
let plankCutting = (wood) => {
// Some mods name their wood slabs 'planks_slab' for some reason
// Mods that do this don't get given auto-generated slab cutting recipes by Create
if (!Item.exists(wood + "_slab")) {
let planks = wood + "_planks"
let slab = wood + "_planks_slab"
event.recipes.create.cutting(Item.of(slab, 2), planks).processingTime(150).id(`kubejs:cutting/${wood.split(":")[1]}_slab`)
}
}
wood_types.forEach(plankCutting)
// Remove andesite recipe (and granite and diorite)
event.remove({ id: "minecraft:diorite" })
event.remove({ id: "minecraft:andesite" })
event.remove({ id: "minecraft:granite" })
// algal blend
event.remove({ id: "architects_palette:algal_blend" })
event.shaped(Item.of("architects_palette:algal_blend", 4), [
"SS",
"AA"
], {
A: "minecraft:clay_ball",
S: ["minecraft:kelp", "minecraft:seagrass"]
})
event.shaped(Item.of("architects_palette:algal_blend", 4), [
"AA",
"SS"
], {
A: "minecraft:clay_ball",
S: ["minecraft:kelp", "minecraft:seagrass"]
})
event.recipes.create.mixing(Item.of("architects_palette:algal_blend", 2), ["minecraft:clay_ball", ["minecraft:kelp", "minecraft:seagrass"]])
// algal brick
event.remove({ output: "architects_palette:algal_brick" })
event.smelting("architects_palette:algal_brick", "architects_palette:algal_blend").xp(0).cookingTime(120)
// Andesite alloy
event.remove({ id: "tconstruct:compat/create/andesite_alloy_iron" })
event.remove({ id: "create:crafting/materials/andesite_alloy" })
event.remove({ id: "create:crafting/materials/andesite_alloy_from_zinc" })
event.remove({ id: "create:mixing/andesite_alloy" })
event.remove({ id: "create:mixing/andesite_alloy_from_zinc" })
event.remove({ id: "thermal:compat/create/smelter_create_alloy_andesite_alloy" })
event.remove({ id: "thermal:compat/create/smelter_create_alloy_andesite_alloy" })
event.remove({ id: "tconstruct:compat/create/andesite_alloy_zinc" })
event.remove({ id: "tconstruct:compat/create/andesite_alloy_iron" })
event.shaped(Item.of("create:andesite_alloy", 2), [
"SS",
"AA"
], {
A: "minecraft:andesite",
S: "architects_palette:algal_brick"
})
event.shaped(Item.of("create:andesite_alloy", 2), [
"AA",
"SS"
], {
A: "minecraft:andesite",
S: "architects_palette:algal_brick"
})
event.recipes.create.mixing(Item.of("create:andesite_alloy", 2), ["architects_palette:algal_brick", "minecraft:andesite"])
// kinetic assembly
transitional = "kubejs:incomplete_kinetic_mechanism"
event.recipes.create.sequenced_assembly([
"kubejs:kinetic_mechanism",
], "#minecraft:wooden_slabs", [
event.recipes.create.deploying(transitional, [transitional, "create:andesite_alloy"]),
event.recipes.create.deploying(transitional, [transitional, "create:andesite_alloy"]),
event.recipes.create.deploying(transitional, [transitional, "#kubejs:saws"])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:kinetic_mechanism")
// Handcrafting recipe
event.shapeless("kubejs:kinetic_mechanism", ["#kubejs:saws", "create:cogwheel", "create:andesite_alloy", "#minecraft:logs"]).id("kubejs:kinetic_mechanism_manual_only")
// Andesite machines
donutCraft(event, "kubejs:andesite_machine", "create:andesite_casing", "kubejs:kinetic_mechanism")
// secondary materials
event.replaceInput({ id: "create:crafting/kinetics/brass_hand" }, "#forge:plates/brass", "create:golden_sheet")
event.remove({ output: "thermal:drill_head" })
event.shaped("thermal:drill_head", [
"NN ",
"NLP",
" PL"
], {
N: "minecraft:iron_nugget",
P: "create:iron_sheet",
L: "thermal:lead_ingot"
})
event.remove({ output: "thermal:saw_blade" })
event.shaped("thermal:saw_blade", [
"NPN",
"PLP",
"NPN"
], {
N: "minecraft:iron_nugget",
P: "create:iron_sheet",
L: "thermal:lead_ingot"
})
// Machine Crafting
andesiteMachine(event, Item.of("create:portable_storage_interface", 2))
andesiteMachine(event, Item.of("create:encased_fan", 1), "create:propeller")
andesiteMachine(event, Item.of("create:mechanical_press", 1), "minecraft:iron_block")
andesiteMachine(event, Item.of("mbd2:strainer", 1), "minecraft:iron_bars")
andesiteMachine(event, Item.of("create:mechanical_mixer", 1), "create:whisk")
andesiteMachine(event, Item.of("create:mechanical_drill", 1), "thermal:drill_head")
andesiteMachine(event, Item.of("create:mechanical_saw", 1), "thermal:saw_blade")
if (Platform.isLoaded("createdeco")) { andesiteMachine(event, Item.of("create:mechanical_roller", 1), "createdeco:andesite_hull") } else { andesiteMachine(event, Item.of("create:mechanical_roller", 1), "create:andesite_alloy_block") }
if (Platform.isLoaded("rechiseledcreate")) { andesiteMachine(event, Item.of("rechiseledcreate:mechanical_chisel", 1), "rechiseled:chisel") }
andesiteMachine(event, Item.of("create:deployer", 1), "create:brass_hand")
andesiteMachine(event, Item.of("create:mechanical_harvester", 2))
andesiteMachine(event, Item.of("create:mechanical_plough", 2))
andesiteMachine(event, Item.of("create:contraption_controls", 1))
andesiteMachine(event, Item.of("thermal:device_tree_extractor", 1), "minecraft:bucket")
andesiteMachine(event, Item.of("ae2:meteorite_compass", 1), "minecraft:compass")
andesiteMachine(event, Item.of("ae2:charger", 1), "ae2:certus_quartz_crystal")
andesiteMachine(event, Item.of("thermal:dynamo_stirling", 1), "thermal:rf_coil")
andesiteMachine(event, Item.of("create:andesite_funnel", 4))
andesiteMachine(event, Item.of("create:andesite_tunnel", 4))
andesiteMachine(event, Item.of("kubejs:pipe_module_utility", 4))
// Gourmand Upgrade
createMachine("thermal:dynamo_stirling", event, "thermal:dynamo_gourmand", "minecraft:golden_carrot")
createMachine("thermal:dynamo_stirling", event, "thermal:dynamo_gourmand", "minecraft:golden_apple")
// - - - - - Chapter 1A - - - - -
event.remove({ type: "thermal:tree_extractor" })
wood_types.forEach(wood => {
if (Item.exists(wood + "_log") && Item.exists(wood + "_leaves") && Item.exists(wood + "_sapling")) {
addTreeOutput(event, wood + "_log", wood + "_leaves").id("kubejs:devices/tree_extractor/tree_extractor_" + wood.split(":")[1])
}
})
// addTreeOutput( "tconstruct:greenheart_log", "tconstruct:earth_slime_leaves", {fluid: "tconstruct:earth_slime", amount: 10})
// addTreeOutput( "tconstruct:skyroot_log", "tconstruct:sky_slime_leaves", {fluid: "tconstruct:sky_slime", amount: 10})
// Rubber
event.remove({ id: "thermal:rubber_3" })
event.remove({ id: "thermal:rubber_from_dandelion" })
event.remove({ id: "thermal:rubber_from_vine" })
event.custom({
"type": "create:mixing",
"ingredients": [
{ "item": "minecraft:vine", "count": 4 },
{ "fluid": "minecraft:water", "amount": 250 }
],
"results": [
{ "item": "thermal:rubber" }
]
})
event.custom({
"type": "create:mixing",
"ingredients": [
{ "tag": "minecraft:flowers", "count": 4 },
{ "fluid": "minecraft:water", "amount": 250 }
],
"results": [
{ "item": "thermal:rubber" }
]
})
event.custom({
"type": "create:compacting",
"ingredients": [
{ "fluid": "thermal:resin", "amount": 250 }
],
"results": [
{ "item": "thermal:rubber" }
]
})
// Belts
event.remove({ id: "create:crafting/kinetics/belt_connector" })
event.shaped(Item.of("create:belt_connector", 3), [
"SSS",
"SSS"
], {
S: "thermal:cured_rubber"
})
// Sealed mechanism assembly
transitional = "kubejs:incomplete_sealed_mechanism"
event.recipes.create.sequenced_assembly([
"kubejs:sealed_mechanism",
], "kubejs:kinetic_mechanism", [
event.recipes.create.deploying(transitional, [transitional, "thermal:cured_rubber"]),
event.recipes.create.deploying(transitional, [transitional, "thermal:cured_rubber"]),
event.recipes.create.pressing(transitional, [transitional])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:sealed_mechanism")
// manual crafting
event.shaped("kubejs:sealed_mechanism", [
"SCS"
], {
C: "kubejs:kinetic_mechanism",
S: "thermal:cured_rubber"
}).id("kubejs:sealed_mechanism_manual_only")
// Copper Machines
donutCraft(event, "kubejs:copper_machine", "create:copper_casing", "kubejs:sealed_mechanism")
// Machine Crafting
copperMachine(event, Item.of("create:copper_backtank", 1), "minecraft:copper_block")
copperMachine(event, Item.of("create:portable_fluid_interface", 2))
copperMachine(event, Item.of("create:spout", 1), "minecraft:hopper")
copperMachine(event, Item.of("thermal:upgrade_augment_1", 1), "minecraft:redstone")
copperMachine(event, Item.of("create:hose_pulley", 1))
copperMachine(event, Item.of("create:item_drain", 1), "minecraft:iron_bars")
copperMachine(event, Item.of("thermal:dynamo_magmatic", 1), "thermal:rf_coil")
copperMachine(event, Item.of("thermal:device_water_gen", 1), "minecraft:bucket")
copperMachine(event, Item.of("create:smart_fluid_pipe", 2))
copperMachine(event, Item.of("kubejs:attachment_base", 1), "create:mechanical_pump")
// smeltery controller recipe
event.remove({ id: "tconstruct:smeltery/casting/seared/smeltery_controller" })
event.remove({ id: "tconstruct:smeltery/melting/metal/copper/smeltery_controller" })
donutCraft(event, "tconstruct:smeltery_controller", "#tconstruct:seared_blocks", "kubejs:sealed_mechanism").modifyResult((grid, result) => {
let item = grid.find("#tconstruct:seared_blocks")
return result.withNBT({ texture: item.id })
})
// - - - - - Chapter 1B - - - - -
// Sturdy sheets are not used. It is replaced by reinforced mechanisms
event.remove({ id: "create:sequenced_assembly/sturdy_sheet" })
// Magma blocks
event.blasting("minecraft:magma_block", "minecraft:deepslate")
// Magma to obsidian is a vanilla create recipe
// reinforced mechanism assembly
transitional = "kubejs:incomplete_reinforced_mechanism"
event.recipes.create.sequenced_assembly([
"kubejs:reinforced_mechanism",
], "kubejs:kinetic_mechanism", [
event.recipes.create.deploying(transitional, [transitional, "minecraft:obsidian"]),
event.recipes.create.deploying(transitional, [transitional, "minecraft:obsidian"]),
event.recipes.create.pressing(transitional, [transitional])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:reinforced_mechanism")
// manual crafting
event.shaped("kubejs:reinforced_mechanism", [
"OCO"
], {
C: "kubejs:kinetic_mechanism",
O: "minecraft:obsidian"
}).id("kubejs:reinforced_mechanism_manual_only")
// Gold machine
donutCraft(event, "kubejs:gold_machine", "create:railway_casing", "kubejs:reinforced_mechanism")
// Machine Crafting
goldMachine(event, Item.of("create:controls", 1), "minecraft:lever")
goldMachine(event, Item.of("create:track_station", 2))
goldMachine(event, Item.of("create:track_signal", 4))
goldMachine(event, Item.of("create:schedule", 4))
goldMachine(event, Item.of("create:track_observer", 2))
if (Platform.isLoaded("railways")) {
goldMachine(event, Item.of("railways:semaphore", 4))
goldMachine(event, Item.of("railways:conductor_whistle", 4))
goldMachine(event, Item.of("railways:track_coupler", 2))
goldMachine(event, Item.of("railways:track_switch_andesite", 1), "create:andesite_alloy")
goldMachine(event, Item.of("railways:track_switch_brass", 1), "create:brass_ingot")
}
// - - - - - Chapter 2 - - - - -
event.remove({ id: "create:milling/compat/ae2/sky_stone_block" })
event.remove({ id: "create:milling/compat/ae2/nether_quartz" })
event.remove({ id: "create:milling/compat/ae2/certus_quartz" })
event.remove({ id: "create:crafting/materials/electron_tube" })
event.remove({ id: "create:crafting/materials/rose_quartz" })
event.remove({ id: "create:sandpaper_polishing/rose_quartz" })
event.remove({ id: "create:sandpaper_polishing/rose_quartz" })
{ // This is a part of the chapter 2 script for some reason
let redstoneTransmute = (input, output) => {
event.custom({
"type": "tconstruct:casting_basin",
"cast": { "item": input },
"cast_consumed": true,
"fluid": {
"name": "thermal:redstone",
"amount": 50
},
"result": output,
"cooling_time": 30
})
}
redstoneTransmute("minecraft:cobblestone", "minecraft:netherrack")
redstoneTransmute("minecraft:sand", "minecraft:red_sand")
}
// Infinite Sky Stone
event.recipes.create.milling(["ae2:sky_dust", "ae2:sky_stone_block"], "ae2:sky_stone_block").processingTime(1000)
// Infinite Certus Quartz
event.shapeless("2x kubejs:certus_crystal_seed", ["ae2:certus_quartz_dust", "#minecraft:sand"])
event.remove({ id: "ae2:transform/certus_quartz_crystals" })
event.recipes.create.milling(["ae2:certus_quartz_dust"], "#ae2:all_certus_quartz").processingTime(200)
event.recipes.create.milling(["thermal:quartz_dust"], "minecraft:quartz").processingTime(200)
event.recipes.create.mechanical_crafting(Item.of("kubejs:certus_crystal_seed", 2), ["A"], { A: "ae2:certus_quartz_crystal" })
event.recipes.create.mechanical_crafting(Item.of("kubejs:fluix_crystal_seed", 2), ["A"], { A: "ae2:fluix_crystal" })
let grow = (from, via, to) => {
event.custom({
"type": "create:sequenced_assembly",
"ingredient": { "item": from },
"loops": 4,
"results": [{ "item": to }],
"sequence": [
{
"type": "create:filling",
"ingredients": [
{ "item": via },
{ "fluid": "minecraft:water", "amount": 500 }
],
"results": [{ "item": via }]
}
],
"transitionalItem": { "item": via }
}).id("kubejs:grow_" + to.split(":")[1])
}
grow("kubejs:certus_crystal_seed", "kubejs:growing_certus_seed", "kubejs:tiny_certus_crystal")
grow("kubejs:fluix_crystal_seed", "kubejs:growing_fluix_seed", "kubejs:tiny_fluix_crystal")
grow("kubejs:tiny_certus_crystal", "kubejs:growing_tiny_certus_crystal", "kubejs:small_certus_crystal")
grow("kubejs:tiny_fluix_crystal", "kubejs:growing_tiny_fluix_crystal", "kubejs:small_fluix_crystal")
grow("kubejs:small_certus_crystal", "kubejs:growing_small_certus_crystal", "ae2:certus_quartz_crystal")
grow("kubejs:small_fluix_crystal", "kubejs:growing_small_fluix_crystal", "ae2:fluix_crystal")
// Volatile Sky Solution
event.custom({
"type": "create:mixing",
"ingredients": [
{ "item": "ae2:sky_dust", "count": 4 },
{ "fluid": "minecraft:water", "amount": 500 }
],
"results": [
{ "fluid": "kubejs:volatile_sky_solution", "amount": 500 }
]
})
// Destabilized Redstone
event.custom({
"type": "create:mixing",
"ingredients": [
{ "item": "ae2:charged_certus_quartz_crystal" },
{ "fluid": "kubejs:volatile_sky_solution", "amount": 250 }
],
"results": [
{ "item": "ae2:certus_quartz_crystal" },
{ "fluid": "thermal:redstone", "amount": 250 }
]
})
// Rose Quartz
event.shapeless("create:rose_quartz", [["minecraft:quartz", "ae2:certus_quartz_crystal", "ae2:charged_certus_quartz_crystal"], "minecraft:redstone", "minecraft:redstone", "minecraft:redstone", "minecraft:redstone"])
// Polished Rose Quartz
event.custom({
"type": "create:mixing",
"ingredients": [
{ "item": "ae2:certus_quartz_crystal" },
{ "fluid": "thermal:redstone", "amount": 250 }
],
"results": [
{ "item": "create:polished_rose_quartz" }
]
})
// Electron tubes
event.custom({
"type": "create:filling",
"ingredients": [
{ "item": "create:polished_rose_quartz" },
{ "fluid": "tconstruct:molten_iron", "amount": 10 }
],
"results": [
{ "item": "create:electron_tube" }
]
})
// Precision mechanisms
event.remove({ id: "create:sequenced_assembly/precision_mechanism" })
transitional = "create:incomplete_precision_mechanism"
event.recipes.create.sequenced_assembly([
"create:precision_mechanism",
], "kubejs:kinetic_mechanism", [
event.recipes.create.deploying(transitional, [transitional, "create:electron_tube"]),
event.recipes.create.deploying(transitional, [transitional, "create:electron_tube"]),
event.recipes.create.deploying(transitional, [transitional, "#kubejs:screwdrivers"])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:precision_mechanism")
// Brass Machines
donutCraft(event, "kubejs:brass_machine", "create:brass_casing", "create:precision_mechanism")
// Machine Crafting
brassMachine(event, Item.of("create:mechanical_crafter", 3), "minecraft:crafting_table")
brassMachine(event, Item.of("create:sequenced_gearshift", 2))
brassMachine(event, Item.of("create:steam_engine", 1))
brassMachine(event, Item.of("create:rotation_speed_controller", 1))
brassMachine(event, Item.of("create:mechanical_arm", 1))
brassMachine(event, Item.of("create:stockpile_switch", 2))
brassMachine(event, Item.of("create:content_observer", 2))
brassMachine(event, Item.of("thermal:machine_press", 1), "minecraft:dropper")
brassMachine(event, Item.of("torchmaster:feral_flare_lantern", 1), "minecraft:glowstone_dust")
brassMachine(event, Item.of("thermal:dynamo_numismatic", 1), "thermal:rf_coil")
brassMachine(event, Item.of("create:brass_funnel", 4))
brassMachine(event, Item.of("create:brass_tunnel", 4))
brassMachine(event, Item.of("create:elevator_pulley", 1))
brassMachine(event, Item.of("kubejs:pipe_module_tier_1", 4))
// Lapidary Upgrade
createMachine("thermal:dynamo_numismatic", event, Item.of("thermal:dynamo_lapidary", 1), "thermal:lapis_gear")
// - - - - - Chapter 2A - - - - -
// Vine Transmutation
donutCraft(event, "minecraft:weeping_vines", "occultism:spirit_attuned_gem", "minecraft:twisting_vines")
donutCraft(event, "minecraft:twisting_vines", "occultism:spirit_attuned_gem", "minecraft:weeping_vines")
// Liquid soul sand
event.remove({ id: "tconstruct:smeltery/melting/soul/sand" })
event.recipes.create.mixing(Fluid.of("tconstruct:liquid_soul", 500), ["minecraft:twisting_vines", "minecraft:weeping_vines"]).heated()
// Infernal Mechanisms
event.custom({
"type": "create:sequenced_assembly",
"ingredient": { "item": "create:precision_mechanism" },
"loops": 1,
"results": [
{ "item": "kubejs:infernal_mechanism" }
],
"sequence": [
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_infernal_mechanism" },
{ "fluid": "tconstruct:liquid_soul", "amount": 500 }
],
"results": [
{ "item": "kubejs:incomplete_infernal_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_infernal_mechanism" },
{ "fluid": "minecraft:lava", "amount": 1000 }
],
"results": [
{ "item": "kubejs:incomplete_infernal_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_infernal_mechanism" },
{ "fluid": "minecraft:lava", "amount": 1000 }
],
"results": [
{ "item": "kubejs:incomplete_infernal_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_infernal_mechanism" },
{ "fluid": "minecraft:lava", "amount": 1000 }
],
"results": [
{ "item": "kubejs:incomplete_infernal_mechanism" }
]
}
],
"transitionalItem": { "item": "kubejs:incomplete_infernal_mechanism" }
}).id("kubejs:infernal_mechanism")
// Zinc Machines
donutCraft(event, "kubejs:zinc_machine", "kubejs:zinc_casing", "kubejs:infernal_mechanism")
// Machine Crafting
zincMachine(event, Item.of("thermal:device_rock_gen", 1), "minecraft:piston")
zincMachine(event, Item.of("thermal:device_collector", 1), "minecraft:ender_pearl")
zincMachine(event, Item.of("thermal:device_nullifier", 1), "minecraft:lava_bucket")
zincMachine(event, Item.of("thermal:device_potion_diffuser", 1), "minecraft:glass_bottle")
zincMachine(event, Item.of("torchmaster:megatorch", 1), "minecraft:torch")
zincMachine(event, Item.of("thermal:upgrade_augment_2", 1), "minecraft:redstone")
// Foundry Controller Recipe
event.remove({ id: "tconstruct:smeltery/casting/scorched/foundry_controller" })
event.remove({ id: "tconstruct:smeltery/melting/obsidian/foundry_controller" })
donutCraft(event, "tconstruct:foundry_controller", "#tconstruct:scorched_blocks", "kubejs:infernal_mechanism").modifyResult((grid, result) => {
let item = grid.find("#tconstruct:scorched_blocks")
return result.withNBT({ texture: item.id })
})
// - - - - - Chapter 2b - - - - -
// Logistic Mechanisms
// TODO: make the line for this, uses above as a placeholder
// Liquid Pulp
event.custom({
"type": "create:mixing",
"heatRequirement": "heated",
"ingredients": [
{ "item": "create:pulp", "count": 2 },
{ "fluid": "minecraft:water", "amount": 500 }
],
"results": [
{ "fluid": "kubejs:liquid_pulp", "amount": 500 }
]
})
event.custom({
"type": "create:sequenced_assembly",
"ingredient": { "item": "create:precision_mechanism" },
"loops": 4,
"results": [
{ "item": "kubejs:logistic_mechanism" }
],
"sequence": [
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_logistic_mechanism" },
{ "fluid": "create:potion", "nbt": { "Bottle": "REGULAR", "Potion": "kubejs:haste" }, "amount": 250 }
],
"results": [
{ "item": "kubejs:incomplete_logistic_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_logistic_mechanism" },
{ "fluid": "kubejs:liquid_pulp", "amount": 200 }
],
"results": [
{ "item": "kubejs:incomplete_logistic_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_logistic_mechanism" },
{ "fluid": "kubejs:liquid_pulp", "amount": 200 }
],
"results": [
{ "item": "kubejs:incomplete_logistic_mechanism" }
]
},
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_logistic_mechanism" },
{ "fluid": "kubejs:liquid_pulp", "amount": 200 }
],
"results": [
{ "item": "kubejs:incomplete_logistic_mechanism" }
]
}
],
"transitionalItem": { "item": "kubejs:incomplete_logistic_mechanism" }
}).id("kubejs:logistic_mechanism")
donutCraft(event, "kubejs:lead_machine", "kubejs:lead_casing", "kubejs:logistic_mechanism")
leadMachine(event, Item.of("create:package_frogport", 1), "#forge:slimeballs")
leadMachine(event, Item.of("create:packager", 1), "create:cardboard_block")
leadMachine(event, Item.of("create:repackager", 1), "create:bound_cardboard_block")
leadMachine(event, Item.of("create:redstone_requester", 1), "create:stock_link")
leadMachine(event, Item.of("create:factory_gauge", 2))
// Stock Link Recipe
event.replaceInput({ id: "create:crafting/logistics/stock_link" }, "create:item_vault", "kubejs:lead_casing")
// - - - - - Chapter 3 - - - - -
// Fern Transmutation
let fern1 = "kubejs:ender_slimy_fern_leaf"
let fern2 = "kubejs:sky_slimy_fern_leaf"
let fern3 = "kubejs:earth_slimy_fern_leaf"
event.shapeless(fern1, ["occultism:spirit_attuned_gem", fern2, fern2, fern2, fern2, fern3, fern3, fern3, fern3])
event.shapeless(fern2, ["occultism:spirit_attuned_gem", fern3, fern3, fern3, fern3, fern1, fern1, fern1, fern1])
event.shapeless(fern3, ["occultism:spirit_attuned_gem", fern2, fern2, fern2, fern2, fern1, fern1, fern1, fern1])
// Fern Cutting
let chop = (type, output) => {
let fern = `tconstruct:${type}_slime_fern`
let leaf = `kubejs:${type}_slimy_fern_leaf`
let paste = `kubejs:${type}_slime_fern_paste`
event.custom({
"type": "farmersdelight:cutting",
"ingredients": [{ "item": fern }],
"tool": { "tag": "forge:tools/knives" },
"result": [Item.of(leaf, 2)]
}).id(`kubejs:cutting/${type}_slime_fern_leaf`)
event.custom(ifiniDeploying(event, Item.of(leaf, 2), fern, "#forge:tools/knives")).id(`kubejs:deploying/${type}_slime_fern_leaf_using_deployer`)
event.custom({
"type": "occultism:spirit_fire",
"ingredient": { "item": leaf },
"result": { "item": fern }
})
event.recipes.create.milling([paste], leaf)
event.campfireCooking(output, paste).cookingTime(300)
}
chop("earth", "minecraft:gunpowder")
chop("sky", "minecraft:bone_meal")
chop("ender", "ae2:ender_dust")
// Crushing Wheel Recipe... Does this belong with chapter 2?
event.remove({ id: "create:mechanical_crafting/crushing_wheel" })
event.recipes.create.mechanical_crafting(Item.of("create:crushing_wheel", 2), [
" AAA ",
"AABAA",
"ABBBA",
"AABAA",
" AAA "
], {
A: "#forge:cobblestone",
B: "minecraft:stick"
})
// Singularties
event.recipes.create.crushing([Item.of("ae2:singularity").withChance(1)], "create:crushing_wheel").processingTime(250)
// Quantum Entangled Singularties are from ae2
// Dye Entangled Singularties
let dyes = ["minecraft:orange_dye", "minecraft:magenta_dye", "minecraft:light_blue_dye", "minecraft:yellow_dye", "minecraft:lime_dye", "minecraft:pink_dye", "minecraft:cyan_dye", "minecraft:purple_dye", "minecraft:blue_dye", "minecraft:brown_dye", "minecraft:green_dye", "minecraft:red_dye"]
event.recipes.create.compacting("1x " + "kubejs:dye_entangled_singularity", [dyes, Item.of("ae2:quantum_entangled_singularity", 1)])
// The mysterious conversion jei entry for entangled singularities has been moved moved to client scripts
// Paint Balls
event.remove({ id: /ae2:tools\/paintballs.*/ })
event.recipes.create.crushing([
Item.of("ae2:red_paint_ball", 1).withChance(.90),
Item.of("ae2:yellow_paint_ball", 1).withChance(.80),
Item.of("ae2:green_paint_ball", 1).withChance(.70),
Item.of("ae2:blue_paint_ball", 1).withChance(.60),
Item.of("ae2:magenta_paint_ball", 1).withChance(.50)],
"kubejs:dye_entangled_singularity").processingTime(50)
// Paint Ball Depleting
let colors = ["red", "yellow", "green", "blue", "magenta", "black"]
for (let index = 0; index < colors.length; index++) {
let element = colors[index];
if (index == colors.length - 1)
continue;
event.recipes.create.emptying([`ae2:${colors[index + 1]}_paint_ball`, Fluid.of("kubejs:chromatic_waste", 250)], `ae2:${element}_paint_ball`)
}
// Chromatic Compound
event.recipes.create.mechanical_crafting("create:chromatic_compound", [
"AA",
"AA"
], {
A: "ae2:magenta_paint_ball"
})
// Easy Torch Recipe for those who can't afford beacons
event.campfireCooking("minecraft:torch", "minecraft:stick").cookingTime(20)
// Radiant Coils
event.recipes.create.pressing("kubejs:radiant_sheet", "create:refined_radiance")
event.recipes.create.mechanical_crafting("kubejs:radiant_coil", ["A"], { A: "kubejs:radiant_sheet" })
// Chromatic Resonator
event.shaped("kubejs:chromatic_resonator", [
" R ",
"R S",
"LS "
], {
R: "thermal:ruby",
L: "thermal:lead_ingot",
S: "thermal:sapphire"
})
// Inductive Mechanisms
transitional = "kubejs:incomplete_inductive_mechanism"
event.recipes.create.sequenced_assembly([
"kubejs:inductive_mechanism",
], "create:precision_mechanism", [
event.recipes.create.deploying(transitional, [transitional, "kubejs:radiant_coil"]),
event.recipes.create.deploying(transitional, [transitional, "kubejs:radiant_coil"]),
event.recipes.create.deploying(transitional, [transitional, "#kubejs:chromatic_resonators"])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:inductive_mechanism")
// Invar line is included in metallury.js
// Invar Machines
event.remove({ output: "thermal:machine_frame" })
donutCraft(event, "thermal:machine_frame", "kubejs:invar_casing", "kubejs:inductive_mechanism")
// Machine Crafting
invarMachine(event, Item.of("thermal:dynamo_compression", 1), "thermal:rf_coil")
invarMachine(event, Item.of("kubejs:pipe_module_tier_2", 4))
// Disenchantment Upgrade
createMachine("thermal:dynamo_compression", event, Item.of("thermal:dynamo_disenchantment", 1), "occultism:spirit_attuned_gem")
// Default thermal machine recipes are kept in.
// Check older versions of the script to see commented out code for thermal machine crafting recipes
// - - - - - Chapter 3A - - - - -
// Chorus Fruit comes from the default thermal insolator recipe
// Gold and Silver melting, might belong with market recipes
event.custom({
"type": "tconstruct:melting",
"ingredient": { "tag": "forge:coins/silver" },
"result": {
"fluid": "tconstruct:molten_silver",
"amount": 10
},
"temperature": 790,
"time": 40
})
event.custom({ // worth it!
"type": "tconstruct:melting",
"ingredient": { "tag": "forge:coins/gold" },
"result": {
"fluid": "tconstruct:molten_gold",
"amount": 10
},
"temperature": 790,
"time": 40
})
// Enderium Ingots
event.recipes.thermal.smelter("thermal:enderium_ingot", ["#forge:ingots/silver", "minecraft:chorus_fruit", "minecraft:ender_pearl"], 0, 10000)
event.recipes.thermal.smelter("thermal:enderium_ingot", ["#forge:ingots/silver", "minecraft:chorus_fruit", Item.of("ae2:ender_dust", 4)], 0, 10000)
// Abstruse Mechanisms
event.recipes.thermal.smelter("kubejs:abstruse_mechanism", ["kubejs:inductive_mechanism", "thermal:enderium_ingot"], 0, 2000)
// Ender Slime Ball?
event.recipes.create.mixing(["tconstruct:ender_slime_ball"], ["minecraft:chorus_fruit", "#forge:slimeballs"])
// Enderium Machines
donutCraft(event, "kubejs:enderium_machine", "kubejs:enderium_casing", "kubejs:abstruse_mechanism")
// Machine Crafting
enderiumMachine(event, Item.of("enderstorage:ender_chest", 1), "minecraft:chest")
enderiumMachine(event, Item.of("enderstorage:ender_tank", 1), "create:fluid_tank")
enderiumMachine(event, Item.of("thermal:upgrade_augment_3", 1), "minecraft:redstone")
enderiumMachine(event, Item.of("ae2:quantum_ring", 1), "ae2:energy_cell")
enderiumMachine(event, Item.of("ae2:quantum_link", 1), "ae2:fluix_pearl")
enderiumMachine(event, Item.of("thermal:fluid_duct", 16), "create:fluid_pipe")
enderiumMachine(event, Item.of("kubejs:pipe_module_tier_3", 4))
// Fluid Cells moved to enderium due to being able to transport fluids more efficiently than pipes
event.replaceInput({ id: "thermal:fluid_cell_frame" }, "#forge:glass", ["thermal:fluid_duct", "thermal:fluid_duct_windowed"])
// Windowed fluiducts
event.remove({ output: "thermal:fluid_duct_windowed" })
event.shapeless("thermal:fluid_duct_windowed", ["thermal:fluid_duct"])
event.shapeless("thermal:fluid_duct", ["thermal:fluid_duct_windowed"])
// - - - - - Chapter 4 - - - - -
// Circuit Scraps
event.stonecutting("ae2:silicon_press", "kubejs:circuit_scrap")
event.stonecutting("ae2:engineering_processor_press", "kubejs:circuit_scrap")
event.stonecutting("ae2:calculation_processor_press", "kubejs:circuit_scrap")
event.stonecutting("ae2:logic_processor_press", "kubejs:circuit_scrap")
event.shaped(Item.of("kubejs:circuit_scrap", 2), [" A ", "ABA", " A "], { A: "thermal:invar_ingot", B: "#kubejs:circuit_press" })
// Pyrolyzer charcoal
event.remove({ id: "thermal:machines/pyrolyzer/pyrolyzer_logs" })
event.recipes.thermal.pyrolyzer([Item.of("minecraft:charcoal", 2), Fluid.of("thermal:creosote", 50)], "#minecraft:logs", 0.15, 1000)
// Coal Coke
event.recipes.thermal.pyrolyzer(["thermal:coal_coke", Fluid.of("thermal:creosote", 50)], "minecraft:charcoal", 0.15, 2000)
// Coke Chunk
event.custom({
"type": "create:sequenced_assembly",
"ingredient": { "item": "thermal:coal_coke" },
"loops": 2,
"results": [{ "item": "kubejs:coke_chunk" }],
"sequence": [
{
"type": "create:filling",
"ingredients": [
{ "item": "kubejs:incomplete_coke_chunk" },
{ "fluid": "minecraft:water", "amount": 250 }
],
"results": [{ "item": "kubejs:incomplete_coke_chunk" }]
},
{
"type": "create:cutting",
"ingredients": [{ "item": "kubejs:incomplete_coke_chunk" }],
"results": [{ "item": "kubejs:incomplete_coke_chunk" }],
"processingTime": 100
}
],
"transitionalItem": { "item": "kubejs:incomplete_coke_chunk" }
}).id("kubejs:coke_cutting")
// Sand Ball
event.recipes.create.splashing([
Item.of("kubejs:sand_ball").withChance(0.125)
], "minecraft:sandstone")
event.recipes.thermal.bottler("kubejs:sand_ball", [Fluid.of("minecraft:water", 50), "#forge:sand/colorless"], 0, 1000)
// Sand Chunks
event.recipes.create.emptying(["kubejs:rough_sand", Fluid.of("kubejs:fine_sand", 500)], "kubejs:sand_ball")
// Entropy manipulator (for blizz cubes)
event.remove({ id: "ae2:tools/misctools_entropy_manipulator" })
event.shaped("ae2:entropy_manipulator", [
"S ",
" M ",
" M"
], {
M: "thermal:lead_plate",
S: "ae2:fluix_crystal"
})
let blizz = "thermal:blizz_powder"; let basalz = "thermal:basalz_powder"
// remove handcrafting recipes for blizz and basalz powder
event.remove({ id:blizz })
event.remove({ id:basalz })
event.remove({ id:"thermal:machines/pulverizer/pulverizer_blizz_rod" })
event.remove({ id:"thermal:machines/pulverizer/pulverizer_basalz_rod" })
event.recipes.thermal.pulverizer([Item.of(blizz).withChance(2.5), Item.of("minecraft:snowball").withChance(0.25)], "thermal:blizz_rod", 0, 800).id("kubejs:machines/pulverizer/blizz_powder")
event.recipes.thermal.pulverizer([Item.of(basalz).withChance(2.5), Item.of("thermal:slag").withChance(0.25)], "thermal:basalz_rod", 0, 800).id("kubejs:machines/pulverizer/basalz_powder")
// Crushing powder recipes
event.recipes.create.crushing([Item.of(blizz, 1), Item.of(blizz, 1).withChance(.5)], "thermal:blizz_rod")
event.recipes.create.crushing([Item.of(basalz, 1), Item.of(basalz, 1).withChance(.5)], "thermal:basalz_rod")
// Ice and Earth Charges
event.remove({ id: "thermal:ice_charge_3" })
event.remove({ id: "thermal:earth_charge_3" })
event.recipes.create.compacting("thermal:ice_charge", [blizz, blizz, blizz, blizz, blizz, blizz, blizz, blizz])
event.recipes.create.compacting("thermal:earth_charge", [basalz, basalz, basalz, basalz, basalz, basalz, basalz, basalz])
// Purified Sand
event.recipes.thermal.smelter(
["kubejs:purified_sand"],
["kubejs:rough_sand", "thermal:earth_charge"],
0,
5000)
// Silicon Compound
event.custom({
"type": "create:compacting",
"ingredients": [
{ "fluid": "kubejs:fine_sand", "amount": 500 },
{ "item": "kubejs:purified_sand" },
{ "item": "kubejs:coke_chunk" }
],
"results": [
{ "item": "kubejs:silicon_compound" }
]
})
// Silicon
event.recipes.thermal.smelter(
["ae2:silicon"],
["kubejs:silicon_compound", "thermal:ice_charge"],
0,
5000)
event.remove({ output: "ae2:silicon" })
// Goodbye Inscriber
event.remove({ id: "ae2:network/blocks/inscribers" })
event.remove({ type: "ae2:inscriber" })
// all gem melting recipes are automatically ported to megma crucible recipe in thermal.js
// Printed Processors
event.custom({
"type": "tconstruct:casting_table",
"cast": { "item": "ae2:calculation_processor_press" },
"cast_consumed": false,
"fluid": { "tag": "tconstruct:molten_copper", "amount": 90 },
"result": { "item": "ae2:printed_calculation_processor" },
"cooling_time": 150
})
event.custom({
"type": "tconstruct:casting_table",
"cast": { "item": "ae2:logic_processor_press" },
"cast_consumed": false,
"fluid": { "tag": "tconstruct:molten_gold", "amount": 90 },
"result": { "item": "ae2:printed_logic_processor" },
"cooling_time": 150
})
event.custom({
"type": "tconstruct:casting_table",
"cast": { "item": "ae2:engineering_processor_press" },
"cast_consumed": false,
"fluid": { "tag": "tconstruct:molten_diamond", "amount": 100 },
"result": { "item": "ae2:printed_engineering_processor" },
"cooling_time": 150
})
// Chiller recipes for printed processors
event.recipes.thermal.chiller("ae2:printed_calculation_processor", [Fluid.of("tconstruct:molten_copper", 90), "ae2:calculation_processor_press"], 0, 5000)
event.recipes.thermal.chiller("ae2:printed_logic_processor", [Fluid.of("tconstruct:molten_gold", 90), "ae2:logic_processor_press"], 0, 5000)
event.recipes.thermal.chiller("ae2:printed_engineering_processor", [Fluid.of("tconstruct:molten_diamond", 100), "ae2:engineering_processor_press"], 0, 5000)
// Printed Silicon
event.custom(ifiniDeploying(event, "ae2:printed_silicon", "ae2:silicon", "ae2:silicon_press"))
// Processors
let processorTypes = ["calculation", "logic", "engineering"]
processorTypes.forEach(e => {
let transitional = `kubejs:incomplete_${e}_processor`
event.custom({
"type": "create:sequenced_assembly",
"ingredient": {
"item": "ae2:printed_silicon"
},
"loops": 1,
"results": [
{
"item": `ae2:${e}_processor`
}
],
"sequence": [
{
"type": "create:deploying",
"ingredients": [
{
"item": transitional
},
{
"item": `ae2:printed_${e}_processor`
}
],
"results": [
{
"item": transitional
}
]
},
{
"type": "create:filling",
"ingredients": [
{
"item": transitional
},
{
"fluid": "thermal:redstone",
"amount": 250
}
],
"results": [
{
"item": transitional
}
]
},
{
"type": "create:pressing",
"ingredients": [
{
"item": transitional
}
],
"results": [
{
"item": transitional
}
]
}
],
"transitionalItem": {
"item": transitional
}
}).id("kubejs:" + e + "_processor")
})
// Flash Drive
event.shaped("kubejs:flash_drive", [
"SCA"
], {
A: "tconstruct:cobalt_ingot",
C: "ae2:logic_processor",
S: "minecraft:iron_ingot"
})
// Calculation Mechanisms
transitional = "kubejs:incomplete_calculation_mechanism"
event.recipes.create.sequenced_assembly([
"kubejs:calculation_mechanism",
], "kubejs:inductive_mechanism", [
event.recipes.create.deploying(transitional, [transitional, "ae2:printed_silicon"]),
event.recipes.create.deploying(transitional, [transitional, "ae2:printed_silicon"]),
event.recipes.create.deploying(transitional, [transitional, "#kubejs:flash_drives"])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:calculation_mechanism")
// Quartz Glass
event.remove({ output: "ae2:quartz_glass" })
event.recipes.thermal.smelter("ae2:quartz_glass", [["ae2:certus_quartz_dust", "thermal:quartz_dust"]])
// Fluix Crystals
event.recipes.thermal.smelter(Item.of("ae2:fluix_crystal", 2), ["minecraft:quartz", "ae2:charged_certus_quartz_crystal", "minecraft:redstone"])
// ME Controller
event.remove({ output: "ae2:controller" })
donutCraft(event, "ae2:controller", "kubejs:fluix_casing", "kubejs:calculation_mechanism")
// Machine Crafting
fluixMachine(event, Item.of("ae2:condenser", 1), "ae2:fluix_pearl")
fluixMachine(event, Item.of("ae2:drive", 1), "ae2:engineering_processor")
fluixMachine(event, Item.of("ae2:formation_core", 4), "ae2:logic_processor")
fluixMachine(event, Item.of("ae2:annihilation_core", 4), "ae2:calculation_processor")
fluixMachine(event, Item.of("ae2:chest", 1), "minecraft:chest")
// Recipe Tweaks
event.replaceInput({ type: "minecraft:crafting_shaped", id: /ae2:.*/ }, "#forge:ingots/iron", "thermal:lead_plate")
event.replaceInput({ id: "ae2:network/cells/item_storage_components_cell_1k_part" }, "minecraft:redstone", "kubejs:calculation_mechanism")
event.replaceInput({ id: "ae2:network/cells/item_storage_components_cell_1k_part" }, "ae2:logic_processor", "#forge:dusts/redstone")
event.replaceInput({ id: "ae2:network/cells/spatial_components" }, "minecraft:glowstone_dust", "kubejs:calculation_mechanism")
event.replaceInput({ id: "ae2:network/cells/spatial_components" }, "ae2:engineering_processor", "#forge:dusts/glowstone")
event.replaceInput({ id: "ae2:network/crafting/patterns_blank" }, "minecraft:glowstone_dust", "kubejs:calculation_mechanism")
// - - - - - Finale (Chapter 5) - - - - -
// Chiller Casts
event.remove({ id: "thermal:chiller_ball_cast" })
event.remove({ id: "thermal:chiller_rod_cast" })
event.remove({ id: "thermal:chiller_ingot_cast" })
event.stonecutting("thermal:chiller_ball_cast", "thermal:nickel_plate")
event.stonecutting("thermal:chiller_rod_cast", "thermal:nickel_plate")
event.stonecutting("thermal:chiller_ingot_cast", "thermal:nickel_plate")
// Printable Integers and Operators
let castTypes = ["three", "eight", "plus", "minus", "multiply", "divide"]
castTypes.forEach(e => {
let cast = `kubejs:${e}_cast`
let result = `kubejs:${e}`
event.stonecutting(cast, "thermal:nickel_plate")
event.custom({
"type": "tconstruct:casting_table",
"cast": {
"item": cast
},
"fluid": {
"name": "kubejs:raw_logic",
"amount": 1
},
"result": Item.of(result),
"cooling_time": 10
})
event.custom({
"type": "thermal:chiller",
"ingredients": [
Fluid.of("kubejs:raw_logic", 1).toJson(),
Item.of(cast).toJson()
],
"result": [
Item.of(result)
],
"energy": 100,
})
})
// Math Operations
let nums = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
let ops = [(a, b) => a + b, (a, b) => a - b, (a, b) => a * b, (a, b) => b == 0 ? "error" : a / b]
let opNames = ["plus", "minus", "multiply", "divide"]
for (let a = 0; a < 10; a++) {
for (let b = 0; b < 10; b++) {
for (let op = 0; op < ops.length; op++) {
let result = ops[op](a, b)
let output;
if (result == "error")
output = "kubejs:missingno"
else if (result < 0)
continue
else if (result > 9)
continue
else if (result % 1 != 0)
continue
else
output = "kubejs:" + nums[result]
event.custom({
"type": "create:mechanical_crafting",
"pattern": [
"AOB"
],
"key": {
"A": {
"item": "kubejs:" + nums[a]
},
"O": {
"item": "kubejs:" + opNames[op]
},
"B": {
"item": "kubejs:" + nums[b]
}
},
"result": {
"item": output
},
"acceptMirrored": false
}).id(`kubejs:calculation/${nums[a]}_${opNames[op]}_${nums[b]}_equals_${nums[result]}`)
event.custom({
"type": "create:mechanical_crafting",
"pattern": [
"A",
"O",
"B"
],
"key": {
"A": {
"item": "kubejs:" + nums[a]
},
"O": {
"item": "kubejs:" + opNames[op]
},
"B": {
"item": "kubejs:" + nums[b]
}
},
"result": {
"item": output
},
"acceptMirrored": false
}).id(`kubejs:calculation/${nums[a]}_${opNames[op]}_${nums[b]}_equals_${nums[result]}_vertical`)
}
}
}
// Digit Melting
let meltOrCrucible = (id, out, outAmount) => {
event.recipes.thermal.crucible(Fluid.of(out, outAmount), [id], 0, 100)
event.custom({
"type": "tconstruct:melting",
"ingredient": { "item": id },
"result": {
"fluid": out,
"amount": outAmount
},
"temperature": 200,
"time": 20
})
}
meltOrCrucible("kubejs:calculation_mechanism", "kubejs:raw_logic", 30)
meltOrCrucible("kubejs:zero", "kubejs:number_0", 1)
meltOrCrucible("kubejs:one", "kubejs:number_1", 1)
meltOrCrucible("kubejs:two", "kubejs:number_2", 1)
meltOrCrucible("kubejs:three", "kubejs:number_3", 1)
meltOrCrucible("kubejs:four", "kubejs:number_4", 1)
meltOrCrucible("kubejs:five", "kubejs:number_5", 1)
meltOrCrucible("kubejs:six", "kubejs:number_6", 1)
meltOrCrucible("kubejs:seven", "kubejs:number_7", 1)
meltOrCrucible("kubejs:eight", "kubejs:number_8", 1)
meltOrCrucible("kubejs:nine", "kubejs:number_9", 1)
// Liquid Matrix
let alloyAmount = 10
let outAmount = 50
event.custom({
"type": "tconstruct:alloy",
"inputs": [
{ "name": "kubejs:number_0", "amount": alloyAmount },
{ "name": "kubejs:number_1", "amount": alloyAmount },
{ "name": "kubejs:number_2", "amount": alloyAmount },
{ "name": "kubejs:number_3", "amount": alloyAmount },
{ "name": "kubejs:number_4", "amount": alloyAmount },
{ "name": "kubejs:number_5", "amount": alloyAmount },
{ "name": "kubejs:number_6", "amount": alloyAmount },
{ "name": "kubejs:number_7", "amount": alloyAmount },
{ "name": "kubejs:number_8", "amount": alloyAmount },
{ "name": "kubejs:number_9", "amount": alloyAmount }
],
"result": {
"fluid": "kubejs:matrix",
"amount": outAmount
},
"temperature": 200
})
// Computation Matrix
event.custom({
"type": "tconstruct:casting_basin",
"fluid": {
"name": "kubejs:matrix",
"amount": 1000
},
"result": Item.of("kubejs:computation_matrix"),
"cooling_time": 20
})
// Ad Astra Recipe Removals are found in ad_astra.js
// Matter Plastics
event.recipes.create.compacting("kubejs:matter_plastics", ["ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball", "ae2:matter_ball"]).superheated()
// Saves a lot of code to reuse an object with the materials here
let materials = {
A: "kubejs:matter_plastics",
M: "ae2:controller",
G: "thermal:diamond_gear",
S: "kubejs:computation_matrix"
}
// Navigation Computer
event.recipes.create.mechanical_crafting("kubejs:navigation_computer", [
"AAAAA",
"ASSSA",
"GS SG",
"ASSSA",
"AAMAA"
], materials)
// Oxygen Loader
materials.S = "minecraft:bucket"
event.recipes.create.mechanical_crafting("ad_astra:oxygen_loader", [
"AAA",
"GSG",
"AMA"
], materials)
// Oxygen Bubble Distributor
materials.S = "create:propeller"
event.recipes.create.mechanical_crafting("ad_astra:oxygen_distributor", [
"AAA",
"GSG",
"AMA"
], materials)
// Oxygen Sensor
event.recipes.create.mechanical_crafting("ad_astra:oxygen_sensor", [
"AAA",
"GSG",
"AMA"
], Object.assign(materials, {M:"minecraft:redstone_block"}))
// Lander Deployer
materials.S = "create:empty_schematic"
event.recipes.create.mechanical_crafting("kubejs:lander_deployer", [
"AAA",
"GSG",
"AMA"
], materials)
// Space Suit.
let pattern = [
" A ",
"GSG",
" A "
];
materials = {
A: "kubejs:matter_plastics",
G: "#forge:plates/gold",
S: "minecraft:iron_chestplate"
}
// chestplate
event.recipes.create.mechanical_crafting("ad_astra:space_suit", pattern, materials)
// helmet
materials.S = "minecraft:iron_helmet"
event.recipes.create.mechanical_crafting("ad_astra:space_helmet", pattern, materials)
// leggings
materials.S = "minecraft:iron_leggings"
event.recipes.create.mechanical_crafting("ad_astra:space_pants", pattern, materials)
// boots
materials.S = "minecraft:iron_boots"
event.recipes.create.mechanical_crafting("ad_astra:space_boots", pattern, materials)
// Gas Tanks
materials = {
A: "kubejs:matter_plastics",
G: "#forge:plates/gold"
}
event.recipes.create.mechanical_crafting("ad_astra:gas_tank", [
"G",
"A",
"A"
], materials)
materials.A = "#forge:ingots/invar"
materials.T = "ad_astra:gas_tank"
event.recipes.create.mechanical_crafting("ad_astra:large_gas_tank", [
" G ",
"ATA",
"ATA"
], materials)
// Zip Gun
materials.T = "ad_astra:large_gas_tank"
event.recipes.create.mechanical_crafting("ad_astra:zip_gun", [
"AAG",
"T "
], materials)
// Rocket Launch Pad
event.recipes.create.deploying(Item.of("ad_astra:launch_pad"), ["architects_palette:heavy_stone_bricks", "kubejs:matter_plastics"])
// oil refining
event.custom({
"type": "thermal:refinery",
"ingredient": { "fluid": "kubejs:crude_oil", "amount": 100 },
"result": [
{ "fluid": "thermal:heavy_oil", "amount": 40 },
{ "fluid": "thermal:light_oil", "amount": 60 },
{ "item": "thermal:bitumen", "chance": 0.10 }
],
"energy": 6000
})
event.custom({
"type": "thermal:refinery",
"ingredient": { "fluid": "ad_astra:oil", "amount": 100 },
"result": [
{ "fluid": "thermal:heavy_oil", "amount": 40 },
{ "fluid": "thermal:light_oil", "amount": 60 },
{ "item": "thermal:bitumen", "chance": 0.10 }
],
"energy": 6000
})
// Rocket Fuel
event.custom({
"type": "create:mixing",
"heatRequirement": "heated",
"ingredients": [
{ "fluid": "thermal:refined_fuel", "amount": 30 },
{ "fluid": "thermal:heavy_oil", "amount": 20 }
],
"results": [
{ "fluid": "ad_astra:fuel", "amount": 2 }
]
})
// The Rocket
event.recipes.create.mechanical_crafting("ad_astra:tier_1_rocket", [
" I ",
" IPI ",
" IGI ",
" IGI ",
" IPNPI ",
" IPLPI ",
" IPPPPPI ",
" IIIII ",
" C C C "
], {
I: "minecraft:iron_block",
P: "create:iron_sheet",
G: "#forge:glass_panes/colorless",
N: "kubejs:navigation_computer",
L: "kubejs:lander_deployer",
C: "thermal:dynamo_compression"
})
// Solar Panel
event.recipes.create.mechanical_crafting("ad_astra:solar_panel", [
"CCC",
"DMD",
"DDD"
], {
C: "ad_astra:photovoltaic_etrium_cell",
M: "ae2:controller",
D: "#forge:plates/desh"
})
// Gravity Normalizer
transitional = "kubejs:incomplete_gravity_normalizer"
event.recipes.create.sequenced_assembly([
"ad_astra:gravity_normalizer",
], "kubejs:computation_matrix", [
event.recipes.create.deploying(transitional, [transitional, "kubejs:enderium_machine"]),
event.recipes.create.deploying(transitional, [transitional, "thermal:flux_capacitor"]),
event.recipes.create.deploying(transitional, [transitional, "#forge:plates/desh"]),
event.recipes.create.deploying(transitional, [transitional, "#forge:plates/desh"]),
event.recipes.create.deploying(transitional, [transitional, "#forge:plates/desh"])
]).transitionalItem(transitional)
.loops(1)
.id("kubejs:gravity_normalizer")
})