248 lines
8.7 KiB
JavaScript
248 lines
8.7 KiB
JavaScript
/**
|
|
* Solar Flux mod script.
|
|
*
|
|
* Adds recipes for:
|
|
* Solar Flux Solars
|
|
* Photovoltaic Cells
|
|
* Sunnarium
|
|
* GT <-> Solarflux conversion recipes
|
|
* Does not add recipes for:
|
|
* Sculk Solars
|
|
* Neutronium & Infinity Solars
|
|
*/
|
|
ServerEvents.recipes(event => {
|
|
|
|
// T1 (No photovoltaic cell)
|
|
event.shaped("2x solarflux:sp_1", [
|
|
"MMM",
|
|
"WWW",
|
|
"SCS"
|
|
], {
|
|
M: "solarflux:mirror",
|
|
W: "gtceu:fine_copper_wire",
|
|
S: "minecraft:stone_slab",
|
|
C: "laserio:energy_overclocker_card_tier_1"
|
|
})
|
|
event.recipes.gtceu.assembler("sp_1")
|
|
.itemInputs([
|
|
Item.of("solarflux:mirror", 3),
|
|
Item.of("gtceu:fine_copper_wire", 3),
|
|
Item.of("minecraft:stone_slab", 2),
|
|
Item.of("laserio:energy_overclocker_card_tier_1", 1)
|
|
])
|
|
.itemOutputs("2x solarflux:sp_1")
|
|
.duration(2400)
|
|
.EUt(2)
|
|
|
|
// All the other panels follow a pattern until 7
|
|
let solarCrafting = [
|
|
["gtceu:tin_single_cable", "minecraft:redstone_block", "gtceu:cupronickel_plate", "laserio:energy_overclocker_card_tier_2"],
|
|
["gtceu:electrical_steel_plate", "gtceu:conductive_alloy_block", "gtceu:electrical_steel_gear", "laserio:energy_overclocker_card_tier_3"],
|
|
["gtceu:microversium_ingot", "gtceu:end_steel_block", "gtceu:microversium_ingot", "laserio:energy_overclocker_card_tier_4"],
|
|
["gtceu:lumium_plate", "gtceu:sunnarium_dust", "gtceu:lumium_plate", "laserio:energy_overclocker_card_tier_5"],
|
|
["gtceu:signalum_plate", "gtceu:enriched_sunnarium_dust", "gtceu:signalum_plate", "laserio:energy_overclocker_card_tier_6"]
|
|
]
|
|
|
|
solarCrafting.forEach((ingredients, index) => {
|
|
// Account for the first recipe, which doesn't use a photovoltaic cell
|
|
let photovoltaic = index == 0 ?
|
|
"gtceu:tempered_glass"
|
|
: `solarflux:photovoltaic_cell_${index}`
|
|
event.shaped(`2x solarflux:sp_${index + 2}`, [
|
|
"SCS",
|
|
"WBW",
|
|
"PEP"
|
|
], {
|
|
S: `solarflux:sp_${index + 1}`,
|
|
C: photovoltaic,
|
|
W: ingredients[0],
|
|
B: ingredients[1],
|
|
P: ingredients[2],
|
|
E: ingredients[3]
|
|
})
|
|
// Account for when the same ingredients are used twice
|
|
let assemblerInputs;
|
|
if (ingredients[0] == ingredients[2]) {
|
|
assemblerInputs = [
|
|
`2x solarflux:sp_${index + 1}`,
|
|
Item.of(photovoltaic, 1),
|
|
Item.of(ingredients[0], 4),
|
|
Item.of(ingredients[1], 1),
|
|
Item.of(ingredients[3], 1)
|
|
]
|
|
} else {
|
|
assemblerInputs = [
|
|
`2x solarflux:sp_${index + 1}`,
|
|
Item.of(photovoltaic, 1),
|
|
Item.of(ingredients[0], 2),
|
|
Item.of(ingredients[1], 1),
|
|
Item.of(ingredients[2], 2),
|
|
Item.of(ingredients[3], 1)
|
|
]
|
|
}
|
|
event.recipes.gtceu.assembler(`sp_${index + 2}`)
|
|
.itemInputs(assemblerInputs)
|
|
.itemOutputs(`2x solarflux:sp_${index + 2}`)
|
|
.duration(2400)
|
|
.EUt(GTValues.VA[index])
|
|
})
|
|
|
|
// High tier solars
|
|
|
|
// T7
|
|
event.recipes.gtceu.assembler("sp_7")
|
|
.itemInputs("2x solarflux:sp_6", "3x solarflux:photovoltaic_cell_5", "2x gtceu:osmium_plate", "laserio:energy_overclocker_card_tier_7")
|
|
.inputFluids("gtceu:signalum 1296")
|
|
.itemOutputs("2x solarflux:sp_7")
|
|
.duration(2400)
|
|
.EUt(GTValues.VA[GTValues.IV])
|
|
|
|
// T8
|
|
event.recipes.gtceu.assembly_line("sp_8")
|
|
.itemInputs("2x solarflux:sp_7", "3x solarflux:photovoltaic_cell_6", "2x gtceu:osmiridium_plate", "laserio:energy_overclocker_card_tier_8")
|
|
.inputFluids("gtceu:enderium 1296")
|
|
.itemOutputs("2x solarflux:sp_8")
|
|
["scannerResearch(java.util.function.UnaryOperator)"](b => b.researchStack("solarflux:sp_7").EUt(480).duration(1200))
|
|
.duration(4800)
|
|
.EUt(30720)
|
|
|
|
//
|
|
// Photovoltaic Cell Recipes
|
|
//
|
|
|
|
// Similar thing with the photovoltaic cells, cells 2-6 follow a pattern (1 uses mirror)
|
|
|
|
// Mirror
|
|
event.shaped("solarflux:mirror", [
|
|
"GGG",
|
|
"SSS",
|
|
" "
|
|
], {
|
|
G: "minecraft:glass_pane",
|
|
S: "gtceu:silver_plate"
|
|
})
|
|
|
|
// Photovoltaic Cell T1
|
|
event.shaped("6x solarflux:photovoltaic_cell_1", [
|
|
"LLL",
|
|
"MMM",
|
|
"FFF"
|
|
], {
|
|
L: "gtceu:lapis_plate",
|
|
M: "solarflux:mirror",
|
|
F: "gtceu:fluix_plate"
|
|
})
|
|
|
|
// Photovoltaic Cells T2-6
|
|
let cellCrafting = [
|
|
[2, "enderio:photovoltaic_plate", "gtceu:battery_alloy_plate"],
|
|
[3, "minecraft:ender_pearl", "gtceu:annealed_copper_plate"],
|
|
[4, "gtceu:light_blue_glass_lens", "gtceu:vibrant_alloy_plate"],
|
|
[5, "gtceu:sunnarium_plate", "gtceu:sunnarium_plate"],
|
|
[6, "gtceu:enriched_sunnarium_plate", "gtceu:enriched_sunnarium_plate"]
|
|
]
|
|
|
|
cellCrafting.forEach(cell => {
|
|
event.shaped(`6x solarflux:photovoltaic_cell_${cell[0]}`, [
|
|
"TTT",
|
|
"PPP",
|
|
"BBB"
|
|
], {
|
|
T: cell[1],
|
|
P: `solarflux:photovoltaic_cell_${cell[0] - 1}`,
|
|
B: cell[2]
|
|
})
|
|
})
|
|
|
|
|
|
// Sunnarium
|
|
event.shaped("3x gtceu:sunnarium_dust", [
|
|
"ABA",
|
|
"BCB",
|
|
"ABA"
|
|
], {
|
|
A: "kubejs:stabilized_plutonium",
|
|
B: "kubejs:stabilized_americium",
|
|
C: "minecraft:glowstone"
|
|
})
|
|
event.recipes.gtceu.mixer("kubejs:sunnarium_dust_mixer")
|
|
.inputFluids("gtceu:plutonium 144", "gtceu:americium 72")
|
|
.itemInputs("minecraft:glowstone_dust")
|
|
.itemOutputs("2x gtceu:sunnarium_dust")
|
|
.duration(1800)
|
|
.EUt(GTValues.VHA[GTValues.IV]);
|
|
event.recipes.gtceu.mixer("kubejs:sunnarium_dust_mixer_alt")
|
|
.inputFluids("gtceu:plutonium_241 144", "gtceu:americium 72")
|
|
.itemInputs("minecraft:glowstone_dust")
|
|
.itemOutputs("2x gtceu:sunnarium_dust")
|
|
.duration(1800)
|
|
.EUt(GTValues.VHA[GTValues.IV]);
|
|
|
|
event.remove({ id: "gtceu:macerator/macerate_sunnarium_plate" })
|
|
|
|
|
|
// Enriched Sunnarium
|
|
event.shaped("4x gtceu:enriched_sunnarium_dust", [
|
|
"ABA",
|
|
"BCB",
|
|
"ABA"
|
|
], {
|
|
A: "kubejs:stabilized_neptunium",
|
|
B: "kubejs:stabilized_curium",
|
|
C: "gtceu:sunnarium_dust"
|
|
})
|
|
event.recipes.gtceu.mixer("kubejs:enriched_sunnarium_dust_mixer")
|
|
.inputFluids("gtceu:neptunium 288", "gtceu:curium 144")
|
|
.itemInputs("gtceu:sunnarium_dust")
|
|
.itemOutputs("6x gtceu:enriched_sunnarium_dust")
|
|
.duration(2400)
|
|
.EUt(GTValues.VHA[GTValues.LuV]);
|
|
|
|
event.remove({ id: "gtceu:macerator/macerate_enriched_sunnarium_plate" })
|
|
event.remove({ id: "gtceu:macerator/macerate_dense_enriched_sunnarium_plate" })
|
|
})
|
|
|
|
/* Gregtech Solar conversion/reversion */
|
|
ServerEvents.recipes(event => {
|
|
event.remove({ id: /gtceu:shaped\/solar_panel_/ })
|
|
|
|
// Basic conversion & reversion
|
|
event.shapeless("2x gtceu:solar_panel", "solarflux:sp_3").id("gtceu:solar_panel_basic_conversion")
|
|
event.shapeless("solarflux:sp_3", "2x gtceu:solar_panel").id("gtceu:solar_panel_basic_reversion")
|
|
|
|
// Generic conversion & reversion (Note the switch for Sculk solars)
|
|
for (let index = 0; index <= 8; index++) {
|
|
let tiername = TIER_ID_MAPPING[index].toLowerCase();
|
|
let solarFluxPanel;
|
|
if (index <= 4) {
|
|
solarFluxPanel = `solarflux:sp_${index + 4}`;
|
|
} else {
|
|
switch (index) {
|
|
case 5:
|
|
solarFluxPanel = "solarflux:sp_custom_bathyal"
|
|
break;
|
|
case 6:
|
|
solarFluxPanel = "solarflux:sp_custom_abyssal"
|
|
break;
|
|
case 7:
|
|
solarFluxPanel = "solarflux:sp_custom_hadal"
|
|
break;
|
|
case 8:
|
|
solarFluxPanel = "solarflux:sp_custom_neutronium"
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
event.recipes.gtceu.atomic_reconstruction(`gtceu:solar_panel_${tiername}_conversion`)
|
|
.itemInputs(solarFluxPanel)
|
|
.itemOutputs(`gtceu:${tiername}_solar_panel`)
|
|
.duration(5)
|
|
.EUt(32)
|
|
event.recipes.gtceu.atomic_reconstruction(`gtceu:solar_panel_${tiername}_reversion`)
|
|
.itemInputs(`gtceu:${tiername}_solar_panel`)
|
|
.itemOutputs(solarFluxPanel)
|
|
.duration(5)
|
|
.EUt(32)
|
|
}
|
|
})
|