253 lines
9.4 KiB
JavaScript
253 lines
9.4 KiB
JavaScript
/**
|
|
* Custom recipes for the Iron Jetpacks mod
|
|
*/
|
|
ServerEvents.recipes(event => {
|
|
// Thermal
|
|
|
|
// Generate thermal thruster recipes
|
|
const thermalThrusters = [
|
|
["leadstone", "lead", "lead", "steamdynamo:steam_dynamo"],
|
|
["hardened", "invar", "invar", "thermal:dynamo_magmatic"],
|
|
["reinforced", "aluminium", "electrum", "thermal:dynamo_compression"],
|
|
["resonant", "enderium", "enderium", "thermal:dynamo_numismatic"]
|
|
]
|
|
|
|
thermalThrusters.forEach(([newTier, plate1, plate2, dynamo]) => {
|
|
event.shaped(Item.of(`kubejs:${newTier}_thruster`), [
|
|
"PCP",
|
|
"MDM",
|
|
"BBB"
|
|
], {
|
|
P: `#forge:plates/${plate1}`,
|
|
M: `#forge:plates/${plate2}`,
|
|
C: "thermal:rf_coil",
|
|
D: dynamo,
|
|
B: "#forge:plates/red_alloy"
|
|
}).id(`kubejs:ironjetpacks/thrusters/${newTier}`);
|
|
})
|
|
|
|
// Generate EnderIO thruster recipes
|
|
const eioThrusters = [
|
|
["conductive_iron", "conductive_alloy", "1", "kubejs:resonating_crystal", "gtceu:red_alloy_plate"],
|
|
["electrical_steel", "electrical_steel", "1", "enderio:pulsating_crystal", Item.of("kubejs:conductive_iron_thruster").weakNBT()],
|
|
["energetic", "energetic_alloy", "2", "enderio:vibrant_crystal", Item.of("kubejs:electrical_steel_thruster").weakNBT()],
|
|
["vibrant", "vibrant_alloy", "3", "enderio:prescient_crystal", Item.of("kubejs:energetic_thruster").weakNBT()]
|
|
]
|
|
|
|
eioThrusters.forEach(([newTier, plate, card, crystal, lastTier]) => {
|
|
event.shaped(Item.of(`kubejs:${newTier}_thruster`), [
|
|
"PCP",
|
|
"PRP",
|
|
"BTB"
|
|
], {
|
|
P: `#forge:plates/${plate}`,
|
|
C: `laserio:energy_overclocker_card_tier_${card}`,
|
|
R: crystal,
|
|
T: lastTier,
|
|
B: "gtceu:red_alloy_plate"
|
|
}).id(`kubejs:ironjetpacks/thrusters/${newTier}`);
|
|
})
|
|
|
|
// Special thrusters
|
|
|
|
// Dark Soularium
|
|
event.shaped(Item.of("kubejs:dark_soularium_thruster"), [
|
|
"ICI",
|
|
"IFI",
|
|
"TTT"
|
|
], {
|
|
I: "gtceu:dark_soularium_ingot",
|
|
C: "laserio:energy_overclocker_card_tier_8",
|
|
F: "kubejs:flight_control_unit",
|
|
T: Item.of("kubejs:vibrant_thruster").weakNBT()
|
|
}).id("kubejs:ironjetpacks/thrusters/dark_soularium");
|
|
|
|
// Fluxed
|
|
event.shaped(Item.of("kubejs:fluxed_thruster"), [
|
|
" P ",
|
|
"PGP",
|
|
"STS"
|
|
], {
|
|
P: "redstone_arsenal:flux_plating",
|
|
G: "kubejs:glowstone_elevation_unit",
|
|
S: "gtceu:signalum_plate",
|
|
T: Item.of("kubejs:resonant_thruster").weakNBT()
|
|
}).id("kubejs:ironjetpacks/thrusters/fluxed");
|
|
|
|
//
|
|
// Jetpacks
|
|
//
|
|
|
|
/**
|
|
* Copies old jetpack nbt to the new jetpack
|
|
* @param {Internal.ModifyRecipeCraftingGrid} grid
|
|
* @param {Internal.ItemStack} result
|
|
* @returns {Internal.ItemStack}
|
|
*/
|
|
const copyOldJetpackData = (grid, result) => {
|
|
let item = grid.find("ironjetpacks:jetpack")
|
|
if (!item.nbt) {
|
|
return result;
|
|
}
|
|
|
|
let nbt = {};
|
|
if (item.nbt.Energy) {
|
|
nbt.Energy = item.nbt.Energy
|
|
}
|
|
if (item.nbt.Engine) {
|
|
nbt.Engine = item.nbt.Engine
|
|
}
|
|
if (item.nbt.Hover) {
|
|
nbt.Hover = item.nbt.Hover
|
|
}
|
|
if (item.nbt.Throttle) {
|
|
nbt.Throttle = item.nbt.Throttle
|
|
}
|
|
return result.withNBT(nbt);
|
|
}
|
|
|
|
/**
|
|
* @type {Internal.Ingredient[][]}
|
|
*/
|
|
const jetpackBase = [
|
|
["leadstone", "ironjetpacks:strap", "lead", "thermal:flux_capacitor"],
|
|
["conductive_iron", "ironjetpacks:strap", "conductive_alloy", "enderio:basic_capacitor"]
|
|
]
|
|
|
|
/**
|
|
* @type {Internal.Ingredient[][]}
|
|
*/
|
|
const jetpackUpgrade = [
|
|
["hardened", "leadstone", "invar", Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:hardened"}').weakNBT()],
|
|
["reinforced", "hardened", "electrum", Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:reinforced"}').weakNBT()],
|
|
["resonant", "reinforced", "enderium", Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:resonant"}').weakNBT()],
|
|
["electrical_steel", "conductive_iron", "electrical_steel", "enderio:double_layer_capacitor"],
|
|
["energetic", "electrical_steel", "energetic_alloy", "enderio:octadic_capacitor"],
|
|
["vibrant", "energetic", "vibrant_alloy", "kubejs:compressed_octadic_capacitor"]
|
|
]
|
|
|
|
jetpackBase.forEach(([newTier, middlePart, plate, energyCapacitor]) => {
|
|
event.shaped(Item.of("ironjetpacks:jetpack", `{Id:"ironjetpacks:${newTier}"}`).strongNBT(), [
|
|
"PEP",
|
|
"PSP",
|
|
"T T"
|
|
], {
|
|
P: `#forge:plates/${plate}`,
|
|
E: energyCapacitor,
|
|
S: middlePart,
|
|
T: Item.of(`kubejs:${newTier}_thruster`).weakNBT()
|
|
}).id(`kubejs:ironjetpacks/base/${newTier}`);
|
|
})
|
|
|
|
jetpackUpgrade.forEach(([newTier, previousTier, plate, energyCapacitor]) => {
|
|
event.shaped(Item.of("ironjetpacks:jetpack", `{Id:"ironjetpacks:${newTier}"}`).strongNBT(), [
|
|
"PEP",
|
|
"PSP",
|
|
"T T"
|
|
], {
|
|
P: `#forge:plates/${plate}`,
|
|
E: energyCapacitor,
|
|
S: Item.of("ironjetpacks:jetpack", `{Id:"ironjetpacks:${previousTier}"}`).weakNBT(),
|
|
T: Item.of(`kubejs:${newTier}_thruster`).weakNBT()
|
|
}).modifyResult(copyOldJetpackData).id(`kubejs:ironjetpacks/upgrade/${newTier}`);
|
|
})
|
|
|
|
event.recipes.gtceu.assembly_line("kubejs:ironjetpacks/upgrade/dark_soularium")
|
|
.itemInputs(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:vibrant"}').weakNBT(), "gtceu:dark_soularium_block", "better_angel_ring:angel_ring", "2x enderio:ender_crystal", "kubejs:double_compressed_octadic_capacitor", "4x #gtceu:circuits/luv", Item.of("kubejs:dark_soularium_thruster", 2))
|
|
.inputFluids("gtceu:soldering_alloy 1152")
|
|
.itemOutputs(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:dark_soularium"}').strongNBT())
|
|
.duration(3000)
|
|
.EUt(30720)
|
|
.stationResearch(b => b.researchStack(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:vibrant"}')).EUt(3686).CWUt(64))
|
|
.modifyResult(copyOldJetpackData)
|
|
|
|
event.recipes.gtceu.assembly_line("kubejs:ironjetpacks/upgrade/fluxed")
|
|
.itemInputs(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:resonant"}').weakNBT(), "redstone_arsenal:flux_chestplate", "kubejs:cryotheum_coolant_unit", "better_angel_ring:angel_ring", "2x kubejs:compressed_octadic_capacitor", "3x #gtceu:circuits/luv", Item.of("kubejs:fluxed_thruster", 2))
|
|
.inputFluids("gtceu:soldering_alloy 1152")
|
|
.itemOutputs(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:fluxed"}').strongNBT())
|
|
.duration(3000)
|
|
.EUt(30720)
|
|
.stationResearch(b => b
|
|
.researchStack(Item.of("ironjetpacks:jetpack", '{Id:"ironjetpacks:resonant"}'))
|
|
.EUt(3686)
|
|
.CWUt(64))
|
|
.modifyResult(copyOldJetpackData)
|
|
|
|
//
|
|
// Misc
|
|
//
|
|
event.shaped("kubejs:empty_fluxed_jetpack_unit", [
|
|
"ABA",
|
|
"BCB",
|
|
"ABA"
|
|
], {
|
|
A: "gtceu:electrum_flux_ingot",
|
|
B: "gtceu:signalum_ingot",
|
|
C: "enderio:fused_quartz"
|
|
}).id("kubejs:ironjetpacks/misc/empty_fluxed_jetpack_unit");
|
|
|
|
event.shaped("kubejs:empty_soularium_jetpack_unit", [
|
|
"ABA",
|
|
"BCB",
|
|
"ABA"
|
|
], {
|
|
A: "gtceu:dark_soularium_ingot",
|
|
B: "gtceu:electrical_steel_ingot",
|
|
C: "enderio:fused_quartz"
|
|
}).id("kubejs:ironjetpacks/misc/empty_soularium_jetpack_unit");
|
|
|
|
event.recipes.gtceu.canner("kubejs:ironjetpacks/misc/flight_control_unit")
|
|
.itemInputs("kubejs:empty_soularium_jetpack_unit", "4x minecraft:ghast_tear")
|
|
.itemOutputs("kubejs:flight_control_unit")
|
|
.duration(100)
|
|
.EUt(2000)
|
|
|
|
event.recipes.gtceu.canner("kubejs:ironjetpacks/misc/glowstone_elevation_unit")
|
|
.itemInputs("kubejs:empty_fluxed_jetpack_unit")
|
|
.inputFluids("gtceu:glowstone 4032")
|
|
.itemOutputs("kubejs:glowstone_elevation_unit")
|
|
.duration(100)
|
|
.EUt(2000)
|
|
|
|
event.recipes.gtceu.canner("kubejs:ironjetpacks/misc/cyrotheum_coolant_unit")
|
|
.itemInputs("kubejs:empty_fluxed_jetpack_unit")
|
|
.inputFluids("kubejs:molten_cryotheum 6000")
|
|
.itemOutputs("kubejs:cryotheum_coolant_unit")
|
|
.duration(100)
|
|
.EUt(2000)
|
|
|
|
|
|
// Cells, thermal exp.
|
|
event.shaped(Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:hardened"}').strongNBT(), [
|
|
" A ",
|
|
"BCB",
|
|
"ADA"
|
|
], {
|
|
A: "minecraft:redstone",
|
|
B: "gtceu:invar_ingot",
|
|
C: "thermal:flux_capacitor",
|
|
D: "gtceu:tin_ingot"
|
|
}).id("kubejs:ironjetpacks/cells/hardened");
|
|
|
|
event.shaped(Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:reinforced"}').strongNBT(), [
|
|
" A ",
|
|
"BCB",
|
|
"ADA"
|
|
], {
|
|
A: "minecraft:redstone",
|
|
B: "gtceu:electrum_ingot",
|
|
C: Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:hardened"}').weakNBT(),
|
|
D: "#enderio:fused_quartz"
|
|
}).id("kubejs:ironjetpacks/cells/reinforced");
|
|
|
|
event.shaped(Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:resonant"}').strongNBT(), [
|
|
" A ",
|
|
"BCB",
|
|
"ADA"
|
|
], {
|
|
A: "minecraft:redstone",
|
|
B: "gtceu:enderium_ingot",
|
|
C: Item.of("ironjetpacks:cell", '{Id:"ironjetpacks:reinforced"}').weakNBT(),
|
|
D: "kubejs:pyrotheum_dust"
|
|
}).id("kubejs:ironjetpacks/cells/resonant");
|
|
})
|