diff --git a/kubejs/server_scripts/ad_astra/recipes.js b/kubejs/server_scripts/ad_astra/recipes.js index 3e7a73a00..250a1732d 100644 --- a/kubejs/server_scripts/ad_astra/recipes.js +++ b/kubejs/server_scripts/ad_astra/recipes.js @@ -8,426 +8,6 @@ const registerAdAstraRecipes = (event) => { event.remove({ mod: 'ad_astra' }) - //#region Rocket parts - - event.recipes.gtceu.shaped('ad_astra:launch_pad', [ - 'BAB', - 'AAA', - 'BAB' - ], { - A: '#forge:plates/steel', - B: '#forge:rods/steel' - }).addMaterialInfo().id('tfg:launch_pad') - - //#region Tier 1 rocket - - event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') - .itemInputs( - 'gtceu:hv_emitter', - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) - .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) - .itemOutputs('ad_astra:rocket_nose_cone') - .duration(1200) - .circuit(2) - .EUt(480) - .addMaterialInfo(true, true) - - - event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemInputs('gtceu:asbestos_dust') - .itemOutputs('gtceu:vitrified_asbestos_dust') - .duration(80) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') - .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') - .inputFluids(Fluid.of('gtceu:red_steel', 144)) - .itemOutputs('9x #forge:dusts/rocket_alloy_t1') - .duration(580) - .circuit(2) - .EUt(480) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('minecraft:water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(400) - .EUt(120) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(250) - .EUt(120) - - event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) - ) - .itemOutputs('ad_astra:rocket_fin') - .duration(150) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_steel_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), - '2x #gtceu:circuits/hv', - 'gtceu:hv_electric_pump', - '2x gtceu:power_thruster', - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) - .itemOutputs('ad_astra:steel_engine') - .duration(600) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), - '4x ad_astra:rocket_fin', - '1x ad_astra:steel_engine', - '1x ad_astra:rocket_nose_cone', - '16x #forge:insulation_t1', - '4x #gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) - .itemOutputs('ad_astra:tier_1_rocket') - .duration(1200) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - //#endregion - - - //region tier 2 rocket - - event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(1320 * 20) - .circuit(2) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(17688) - .circuit(12) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') - .notConsumable('gtceu:ingot_casting_mold') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) - .itemOutputs('32x #forge:dusts/rocket_alloy_t2') - .duration(15 * 20) - .circuit(5) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') - .itemInputs('#forge:hot_ingots/rocket_alloy_t2') - .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:rocket_fin_t2') - .itemInputs('#forge:plates/rocket_alloy_t2', - '#forge:double_plates/titanium') - .itemOutputs('tfg:rocket_fin_t2') - .duration(180) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t2') - .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', - '#forge:double_plates/desh') - .itemOutputs('tfg:rocket_cone_t2') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_desh_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), - '2x #gtceu:circuits/ev', - 'gtceu:ev_electric_pump', - '3x gtceu:advanced_power_thruster', - ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) - .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) - .itemOutputs('ad_astra:desh_engine') - .duration(800) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), - '4x tfg:rocket_fin_t2', - '1x ad_astra:desh_engine', - '1x tfg:rocket_cone_t2', - '12x #forge:insulation_t2/roll', - '4x #gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) - .itemOutputs('ad_astra:tier_2_rocket') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - //#endregion - - //region Tier 3 DISABLED UNTIL IV - event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) - event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) - /* - event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .duration(800) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') - .itemInputs('#forge:hot_ingots/rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .outputFluids(Fluid.of('gtceu:helium', 250)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - - //Add some unique cooling thing for molten ingots - - event.recipes.gtceu.assembler('tfg:rocket_fin_t3') - .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') - .itemOutputs('tfg:rocket_fin_t3') - .duration(220) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t3') - .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', - '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet - .itemOutputs('tfg:rocket_cone_t3') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:elite_power_thruster') - .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', - 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') - .itemOutputs('tfg:elite_power_thruster') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') - .itemInputs( - '6x #forge:double_plates/tungsten_steel', - '4x #gtceu:circuits/iv', - 'gtceu:iv_electric_pump', - '3x tfg:elite_power_thruster', - '4x #forge:insulation_t3/cryo', - '6x #forge:rods/magnetic_neodymium', - '#forge:rotors/tungsten_steel') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) - .itemOutputs('ad_astra:ostrum_engine') - .duration(960) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') - .itemInputs( - '4x #forge:double_plates/rocket_alloy_t3', - 'gtceu:iv_electric_pump', - 'tfg:elite_power_thruster', - '2x #forge:insulation_t3/cryo') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) - .itemOutputs('ad_astra:ostrum_tank') - .duration(400) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') - .itemInputs( - '16x #forge:dense_plates/rocket_alloy_t3', - '4x tfg:rocket_fin_t3', - '1x ad_astra:ostrum_engine', - '2x ad_astra:ostrum_tank', - '1x tfg:rocket_cone_t3', - '8x #forge:insulation_t3/sheet' - ) - .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) - .itemOutputs('ad_astra:tier_3_rocket') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - //#endregion -*/ - //#region space suits NETHERITE STUFF DISABLED UNTIL IV - - event.recipes.gtceu.forming_press('space_suit_fabric') - .itemInputs( - '#forge:foils/aluminium', - 'gtceu:carbon_fiber_mesh', - '#forge:foils/silicone_rubber', - 'tfg:polycaprolactam_fabric' - ) - .itemOutputs('2x tfg:space_suit_fabric') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - event.recipes.gtceu.forming_press('better_space_suit_fabric') - .itemInputs( - '#forge:foils/polybenzimidazole', - 'gtceu:carbon_fiber_mesh', - '#forge:aerogels', - 'tfg:glacian_wool' - ) - .itemOutputs('2x tfg:better_space_suit_fabric') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_helmet', [ - 'AAA', - 'ADA', - 'BBB' - ], { - A: 'gtceu:tempered_glass', - B: 'tfg:space_suit_fabric', - D: '#forge:small_fluid_pipes/polyethylene' - }).addMaterialInfo().id('tfg:space_helmet') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') - .itemInputs( - 'ad_astra:space_helmet', - '2x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '3x tfg:better_space_suit_fabric', - '5x gtceu:laminated_glass' - ) - .itemOutputs('ad_astra:netherite_space_helmet') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_suit', [ - 'B B', - 'BDB', - 'BBB' - ], { - B: 'tfg:space_suit_fabric', - D: 'ad_astra:oxygen_gear' - }).addMaterialInfo().id('tfg:space_suit') - - event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) - .id('tfg:empty_space_suit') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') - .itemInputs( - 'ad_astra:space_suit', - '3x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '5x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_suit') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) - .id('tfg:empty_netherite_space_suit') - - event.recipes.gtceu.shaped('ad_astra:space_pants', [ - 'BAB', - 'B B', - 'B B' - ], { - A: 'gtceu:hv_electric_motor', - B: 'tfg:space_suit_fabric', - }).addMaterialInfo().id('tfg:space_pants') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') - .itemInputs( - 'ad_astra:space_pants', - '2x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '4x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_pants') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_boots', [ - 'B B', - 'A A' - ], { - A: '#forge:plates/polyphenylene_sulfide', - B: 'tfg:space_suit_fabric' - }).addMaterialInfo().id('tfg:space_boots') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') - .itemInputs( - 'ad_astra:space_boots', - '1x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '2x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_boots') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ - 'BAB', - 'ECE', - 'BDB' - ], { - A: '#gtceu:circuits/hv', - B: '#forge:tiny_fluid_pipes/stainless_steel', - C: 'gtceu:hv_electric_pump', - D: 'gtceu:fluid_detector_cover', - E: 'ad_astra:gas_tank' - }).addMaterialInfo().id('tfg:oxygen_gear') - - //#endregion //#region Gas tanks @@ -919,28 +499,6 @@ const registerAdAstraRecipes = (event) => { event.stonecutting('ad_astra:encased_etrium_block', '#tfg:ad_astra_etrium_blocks') event.stonecutting('ad_astra:etrium_plateblock', '#tfg:ad_astra_etrium_blocks') - event.recipes.tfc.loom( - '8x ad_astra:glacian_fur', - '8x tfg:glacian_wool', - 8, - 'ad_astra:block/glacian_fur' - ) - - event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') - .itemInputs('tfg:glacian_wool') - .circuit(10) - .itemOutputs('ad_astra:glacian_fur') - .duration(100) - .EUt(4) - - event.shaped('minecraft:pink_bed', [ - 'AAA', - 'BBB' - ], { - A: 'ad_astra:glacian_fur', - B: '#tfc:lumber' - }).id('tfg:shaped/glacian_bed') - //#endregion //#region Space stations @@ -949,10 +507,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:earth_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -961,10 +519,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:moon_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -973,10 +531,46 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:mars_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:venus_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:mercury_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:glacio_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -984,45 +578,12 @@ const registerAdAstraRecipes = (event) => { //#endregion //#region Wood - event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) - event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) - - global.AD_ASTRA_WOOD.forEach(wood => { - woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) - }) - - event.shaped('16x ad_astra:aeronos_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/aeronos', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/aeronos_ladder') - - event.shaped('16x ad_astra:strophar_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/strophar', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/strophar_ladder') - - - generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, - '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) + event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) //#endregion } diff --git a/kubejs/server_scripts/ae2/recipes.js b/kubejs/server_scripts/ae2/recipes.js index 117d1425b..0bc16b7c4 100644 --- a/kubejs/server_scripts/ae2/recipes.js +++ b/kubejs/server_scripts/ae2/recipes.js @@ -2306,16 +2306,6 @@ const registerAE2Recipes = (event) => { .category(GTRecipeCategories.MACERATOR_RECYCLING) .EUt(GTValues.VA[GTValues.ULV]) - // Cryogenized Fluix - - event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .inputFluids(Fluid.of('tfg:fluix', 144)) - .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - // Certus deco blocks event.stonecutting('ae2:quartz_block', '#tfg:certus_quartz_blocks') diff --git a/kubejs/server_scripts/afc/recipes.js b/kubejs/server_scripts/afc/recipes.js index 4bc552380..fa7d7a67e 100644 --- a/kubejs/server_scripts/afc/recipes.js +++ b/kubejs/server_scripts/afc/recipes.js @@ -361,7 +361,7 @@ const registerAFCRecipes = (event) => { //#endregion - //region gt sap processing + //#region GT sap processing event.recipes.gtceu.fluid_heater('maple_sap_condense') .inputFluids(Fluid.of('afc:maple_sap', 1000)) @@ -375,8 +375,6 @@ const registerAFCRecipes = (event) => { .duration(20*35) .EUt(GTValues.VA[GTValues.ULV]) - - //endregion event.recipes.gtceu.fluid_solidifier('maple_syrup') .inputFluids(Fluid.of('afc:maple_syrup', 100)) @@ -389,6 +387,8 @@ const registerAFCRecipes = (event) => { .itemOutputs('afc:birch_sugar') .duration(20*12) .EUt(GTValues.VHA[GTValues.ULV]) + + //#endregion // Syrup into sugar diff --git a/kubejs/server_scripts/beneath/recipes.js b/kubejs/server_scripts/beneath/recipes.js index 9c56912e3..11edd6094 100644 --- a/kubejs/server_scripts/beneath/recipes.js +++ b/kubejs/server_scripts/beneath/recipes.js @@ -67,12 +67,6 @@ const registerBeneathRecipes = (event) => { event.recipes.tfc.landslide('beneath:soul_clay', 'beneath:soul_clay') - generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, - '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, - '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) Ingredient.of('#beneath:mushrooms').stacks.forEach(element => { const itemId = element.id; @@ -82,26 +76,6 @@ const registerBeneathRecipes = (event) => { recipeId, 'minecraft:the_nether', 8, element.withCount(4), GTValues.VH[GTValues.LV]); }); - // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those - woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', - 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, - 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', - 'beneath:wood/planks/crimson_button') - - event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/crimson') - .itemOutputs('beneath:wood/stripped_wood/crimson') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/crimson' }], - results: [{ item: 'beneath:wood/stripped_wood/crimson' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_crimson_wood`) - event.shaped('beneath:wood/sewing_table/crimson', [ ' AB', 'CCC', @@ -113,26 +87,6 @@ const registerBeneathRecipes = (event) => { D: 'beneath:wood/log/crimson' }).id('tfg:shaped/crimson_sewing_table') - - woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', - 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, - 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', - 'beneath:wood/planks/warped_button') - - event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/warped') - .itemOutputs('beneath:wood/stripped_wood/warped') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/warped' }], - results: [{ item: 'beneath:wood/stripped_wood/warped' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_warped_wood`) - event.shaped('beneath:wood/sewing_table/warped', [ ' AB', 'CCC', diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 2cf69d560..bf6d47c34 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -985,70 +985,6 @@ const registerCreateRecipes = (event) => { .duration(200) .EUt(20) - // Электронная трубка - event.shaped('1x create:electron_tube', [ - 'FAG', - 'BCB', - 'DED' - ], { - A: 'gtceu:glass_tube', - B: '#forge:bolts/steel', - C: 'gtceu:wood_plate', - D: 'gtceu:red_alloy_single_wire', - E: '#forge:plates/wrought_iron', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube') - - event.recipes.createSequencedAssembly([ - '2x create:electron_tube', - ], 'gtceu:wood_plate', [ - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), - ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') - - event.recipes.gtceu.assembler('create:electron_tube') - .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('2x create:electron_tube') - .duration(50) - .EUt(7) - .circuit(14) - - event.shaped('4x create:electron_tube', [ - 'FAG', - 'DCD' - ], { - A: 'gtceu:glass_tube', - C: 'gtceu:plastic_circuit_board', - D: 'gtceu:red_alloy_single_wire', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube2') - - event.recipes.gtceu.assembler('create:electron_tube2') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - - event.shaped('4x create:electron_tube', [ - ' A ', - ' B ', - ' C ' - ], { - A: '#forge:tools/screwdrivers', - B: 'gtceu:nand_chip', - C: 'gtceu:plastic_circuit_board' - }).id('tfg:create/shaped/electron_tube3') - - event.recipes.gtceu.assembler('create:electron_tube3') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - // Тюбик с клеем event.shaped('create:super_glue', [ 'BA', diff --git a/kubejs/server_scripts/gregtech/recipes.js b/kubejs/server_scripts/gregtech/recipes.js index b40802279..508996a71 100644 --- a/kubejs/server_scripts/gregtech/recipes.js +++ b/kubejs/server_scripts/gregtech/recipes.js @@ -9,634 +9,15 @@ const registerGTCEURecipes = (event) => { registerGTCEUMetalRecipes(event) registerGTCEURecyclingRecipes(event) - registerGTCEuTFCMetalsRecipes(event) registerGTCEuMachineRecipes(event) removeGTCEURecipes(event) - //#region Выход: Удобрение - // В обычном миксере - event.recipes.gtceu.mixer('tfg:fertilizer') - .itemInputs( - '#tfc:dirt', - '2x #tfg:wood_dusts', - '4x #forge:sand' - ) - .circuit(1) - .inputFluids("#tfg:clean_water 1000") - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - event.recipes.gtceu.mixer('tfg:fertilizer_2') - .itemInputs('tfc:compost') - .inputFluids('#tfg:clean_water 1000') - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - //#endregion - - //#region Выход: Кварцевый песок - - event.shaped('gtceu:quartz_sand_dust', [ - 'A', - 'B' - ], { - A: '#forge:sand', - B: '#forge:tools/mortars' - }).id('gtceu:shaped/quartz_sand') - - event.recipes.gtceu.macerator('quartz_sand_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('gtceu:quartz_sand_dust') - .duration(30) - .EUt(2) - - //#endregion - - event.recipes.gtceu.macerator('flux') - .itemInputs('#tfc:fluxstone') - .itemOutputs('2x tfc:powder/flux') - .duration(30) - .EUt(2) - - event.recipes.gtceu.forge_hammer('flux') - .itemInputs('#tfc:fluxstone') - .itemOutputs('2x tfc:powder/flux') - .duration(30) - .EUt(2) - - event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') - .recipeTier(0) - .id('greate:pressing/flux') - - //#region Выход: Диоксид силикона - - event.recipes.gtceu.electrolyzer('sand_electrolysis') - .itemInputs('8x #forge:sand') - .itemOutputs('gtceu:silicon_dioxide_dust') - .duration(500) - .EUt(25) - - //#endregion - - event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') - .itemInputs('5x tfc:food/beet') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(800) - .EUt(7) - .circuit(3) - - event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') - - //#region Выход: Соленая пыль + Вода - - // Декрафт в центрифуге - event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:salt_dust') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(51) - .EUt(30) - .circuit(1) - - // Декрафт в электролайзере - event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') - .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) - .duration(720) - .EUt(30) - - // Add circuit to gregtech salt water mixer recipe - event.remove({ id: 'gtceu:mixer/salt_water' }) - generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') - - //#endregion - - //#region Выход: Пропитанные доски - - event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) - - event.recipes.tfc.barrel_sealed(4000) - .outputItem('gtceu:treated_wood_planks') - .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) - .id('tfg:barrel/treated_wood_planks') - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('gtceu:treated_wood_dust') - .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) - .id('tfg:barrel/treated_wood_dust') - - //#endregion - - //#region Выход: Капля резины - - // Из латекса - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_latex') - - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_conifer_pitch') - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - //#endregion - - //#region Выход: Растительный шарик - // 8x Ванильная растительность -> Plant Ball (Compressor) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') - .itemInputs('4x #tfc:seeds') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - let food = Ingredient.of('#tfc:foods') - .subtract('minecraft:brown_mushroom') - .subtract('minecraft:red_mushroom') - .withCount(8) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_food') - .itemInputs(food) - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') - .itemInputs('4x #tfc:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_moon_plants') - .itemInputs('4x #tfg:moon_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_mars_plants') - .itemInputs('4x #tfg:mars_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') - .itemInputs('4x #tfc:corals') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_misc_plants') - .itemInputs('4x #createaddition:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') - .itemInputs('4x #minecraft:wart_blocks') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - //#endregion - - //#region Выход: Биомасса - - // Ванильная растительность -> Биомасса (Brewery) - - event.recipes.gtceu.brewery('biomass_from_tfc_seeds') - .itemInputs('#tfc:seeds') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_food') - .itemInputs('#tfc:foods') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_plants') - .itemInputs('#tfc:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_moon_plants') - .itemInputs('#tfg:moon_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_mars_plants') - .itemInputs('#tfg:mars_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_corals') - .itemInputs('#tfc:corals') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_spider_eyes') - .itemInputs('minecraft:spider_eye') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_leaves') - .itemInputs('#minecraft:leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_minecraft_plants') - .itemInputs('#createaddition:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_wart_blocks') - .itemInputs('#minecraft:wart_blocks') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 50)) - .duration(100) - .EUt(3) - - //#endregion - - //#region Выход: Рыбье масло - - event.recipes.gtceu.extractor(`tfg:fish_oil`) - .itemInputs('#minecraft:fishes') - .outputFluids(Fluid.of('gtceu:fish_oil', 200)) - .duration(40) - .EUt(4) - - event.recipes.gtceu.extractor(`tfg:tallow`) - .itemInputs('tfc:blubber') - .outputFluids(Fluid.of('tfc:tallow', 200)) - .duration(40) - .EUt(4) - - // you get tallow from killing things like orcas, so this seems close enough - event.recipes.gtceu.mixer('tallow_to_fish_oil') - .inputFluids('tfc:tallow 100', 'tfc:lye 100') - .outputFluids('gtceu:fish_oil 200') - .duration(100) - .EUt(4) - - //#endregion - - //#region Выход: Семянное масло - - event.recipes.gtceu.extractor(`tfg:seed_oil`) - .itemInputs('#tfc:seeds') - .outputFluids(Fluid.of('gtceu:seed_oil', 50)) - .duration(32) - .EUt(2) - - //#endregion - - //#region Выход: Цемент - - const recipe = event.recipes.gtceu.mixer('concrete_from_marble') - .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') - .inputFluids("#tfg:clean_water 1000") - .outputFluids('gtceu:concrete 1152') - .duration(40) - .EUt(16) - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], - "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], - "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') - - //GT light/dark concrete recipe fix - - event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) - event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) - - event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') - .inputFluids(Fluid.of('gtceu:concrete', 144)) - .notConsumable('1x gtceu:block_casting_mold') - .itemOutputs('1x gtceu:light_concrete') - .duration(98) - .EUt(7) - - event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') - .inputFluids(Fluid.of('tfc:black_dye', 18)) - .itemInputs('1x gtceu:light_concrete') - .itemOutputs('1x gtceu:dark_concrete') - .duration(20) - .EUt(7) - - event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') - .itemInputs('1x gtceu:light_concrete') - .outputFluids(Fluid.of('gtceu:concrete', 144)) - .duration(98) - .EUt(30) - - event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') - event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') - event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') - event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') - event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') - event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') - event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') - event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') - - event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') - event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') - event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') - event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') - event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') - event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') - event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') - event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') - - //#endregion - - //#region GT marble - - event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') - event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') - event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') - event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') - event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') - event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') - event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') - event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') - - //#endregion - - //#region Выход: Бурильная жидкость + // Drilling fluid from all stone dusts generateMixerRecipe(event, ['2x #tfg:stone_dusts'], ['gtceu:lubricant 20', "#tfg:clean_water 4000"], [], null, Fluid.of('gtceu:drilling_fluid', 5000), 40, 16, 64, 'drilling_fluid') - //#endregion - - //#region Выход: Пыль мяса - - event.recipes.gtceu.macerator('macerate_meat_to_dust') - .itemInputs('#tfc:foods/meats') - .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region Выход: Пыль какао-бобов - - event.recipes.gtceu.macerator('macerate_cocoa') - .itemInputs('firmalife:food/roasted_cocoa_beans') - .itemOutputs('gtceu:cocoa_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region Стеклодувка - - // Glass Tube - event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) - .id('tfg:gtceu/glassworking/glass_tube') - - //#endregion - - // Пыль звезды незера - event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust') - .itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond') - .circuit(10) - .itemOutputs('gtceu:nether_star_dust') - // TODO: change to something else with venus - .inputFluids(Fluid.of('gtceu:neon', 1000)) - .duration(700) - .EUt(2720) - - // Empty Wooden Form - event.shaped('gtceu:empty_wooden_form', [ - ' AA', - 'BAA' - ], { - A: '#minecraft:planks', - B: '#forge:tools/saws' - }).id('gtceu:shaped/plank_to_wooden_shape') - - // Деревянная шестерня - event.shaped('gtceu:small_wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#forge:rods/wooden', - C: 'tfc:glue' - }).id('gtceu:shaped/small_gear_wood') - - event.shaped('gtceu:wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#minecraft:planks', - C: 'tfc:glue' - }).id('gtceu:shaped/gear_wood') - - // Compressed Coke Clay - event.shaped('gtceu:compressed_coke_clay', [ - 'AAA', - 'BCB', - 'BBB' - ], { - A: 'minecraft:clay_ball', - B: '#minecraft:sand', - C: 'gtceu:brick_wooden_form' - }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') - - // Coke Oven Brick - event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) - .resultItem('gtceu:coke_oven_brick') - .id('tfg:heating/coke_oven_bricks') - - event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') - .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') - .itemOutputs('gtceu:coke_oven_brick') - .duration(7.5 * 20) - .EUt(GTValues.VA[GTValues.ULV]) - - // Multi-Smelter - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace') - - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace2') - - // Electric Blast Furnace - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace') - - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace2') - - // Клей из ТФК клея / Glue from resin - event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') - .itemInputs('tfc:glue') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') - .itemInputs('minecraft:bone_meal') - .inputFluids(Fluid.of('tfc:limewater', 500)) - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(100) - .EUt(5) - - // Исправление рецепта пыли серебра стерлинга - event.remove({ id: 'gtceu:mixer/sterling_silver' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', - 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') - - // Исправление рецепта пыли розовой бронзы - event.remove({ id: 'gtceu:mixer/rose_gold' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', - 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') - - //#region Рецепт ULV микросхемы - - event.remove({ id: 'gtceu:shaped/vacuum_tube' }) - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - - event.recipes.createSequencedAssembly([ - 'gtceu:vacuum_tube', - ], 'gtceu:resin_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), - event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) - ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') - - //#endregion - - //#region Рецепт LV микросхемы - - event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:basic_electronic_circuit', - ], 'gtceu:resin_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), - event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') - - event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:good_electronic_circuit', - ], 'gtceu:phenolic_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') - - //#endregion - //#region Quantum mainframe stack fix. // // Quantum Mainframes need 48x annealed copper wire but @@ -733,227 +114,6 @@ const registerGTCEURecipes = (event) => { // #endregion - // #region Add all glass colors to macerator/hammer - removeMaceratorRecipe(event, 'macerate_glass'); - event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") - .itemInputs( - "#forge:glass" - ) - .itemOutputs("gtceu:glass_dust") - .duration(20) - .EUt(2); - - removeMaceratorRecipe(event, 'macerate_glass_pane'); - event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane") - .itemInputs( - "#forge:glass_panes" - ) - .itemOutputs("3x gtceu:tiny_glass_dust") - .duration(6) - .EUt(2) - - event.replaceInput({ id: "gtceu:shaped/glass_dust_hammer" }, - "minecraft:glass", - "#forge:glass" - ); - // #endregion - - // #region Rich coal processing - - event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") - .itemInputs('2x gtceu:poor_raw_coal') - .itemOutputs('1x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 500)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 1000)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") - .itemInputs('gtceu:rich_raw_coal') - .itemOutputs('4x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(900) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") - .itemInputs('3x gtceu:rich_raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(1710) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") - .itemInputs('6x gtceu:raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - // #endregion - - // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - - const SIGN_METALS = [ - GTMaterials.Copper, - GTMaterials.Bronze, - GTMaterials.BlackBronze, - GTMaterials.BismuthBronze, - GTMaterials.WroughtIron, - GTMaterials.Steel, - GTMaterials.BlackSteel, - GTMaterials.RedSteel, - GTMaterials.BlueSteel - ]; - - SIGN_METALS.forEach(metal => { - // Arc furnace - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - global.AFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - // Macerator - global.TFC_HARDWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.TFC_SOFTWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_HARDWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_SOFTWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - }) - // #endregion - - //#region support recycling - event.recipes.gtceu.macerator(`hardwood_support_to_dust`) - .itemInputs('#tfg:hardwood_supports') - .itemOutputs('gtceu:hardwood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - - event.recipes.gtceu.macerator(`softwood_support_to_dust`) - .itemInputs('#tfg:softwood_supports') - .itemOutputs('gtceu:wood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - //#endregion - //#region Voiding covers event.replaceInput({ id: 'gtceu:shaped/cover_fluid_voiding' }, @@ -970,102 +130,6 @@ const registerGTCEURecipes = (event) => { //#endregion - // #region Treated Wood - - event.shaped('2x gtceu:treated_wood_door', [ - 'AA ', - 'AA ', - 'AA ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_door') - - event.shaped('3x gtceu:treated_wood_trapdoor', [ - 'AAA', - 'AAA', - ' ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_trapdoor') - - // #endregion - - // #region Rubber Processing Line - event.recipes.firmalife.vat() - .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) - .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(300) - .id('tfg:vat/vulcanized_latex') - - event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) - .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) - .id('tfg:pot/vulcanized_latex') - - event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') - .duration(100) - .EUt(20) - .itemInputs('tfc:powder/sulfur') - .inputFluids(Fluid.of('tfg:latex', 1000)) - .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') - .duration(100) - .EUt(20) - .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - .itemOutputs('4x gtceu:raw_rubber_dust') - - // #endregion - - // #region Primitive protection - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('tfg:prepared_leather_gloves') - .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) - .id('tfg:sealed_barrel/prepared_leather_gloves') - - event.recipes.firmalife.vat() - .outputItem('tfg:latex_soaked_gloves') - .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(200) - .id('tfg:vat/latex_soaked_gloves') - - event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') - .id('tfg:oven/rubber_gloves') - - event.remove({ id: 'gtceu:shaped/rubber_gloves' }) - - event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') - .itemInputs('2x #forge:plates/rubber') - .notConsumable('create:brass_hand') - .itemOutputs('gtceu:rubber_gloves') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.INGOT_MOLDING) - - - event.recipes.tfc.damage_inputs_shaped_crafting( - event.shaped('gtceu:face_mask', [ - 'ACA', - 'ABA', - ' D ' - ], { - A: '#forge:string', - B: '#forge:cloth', - C: 'minecraft:paper', - D: '#tfc:sewing_needles' - }) - ).id('gtceu:shaped/face_mask') - - event.recipes.gtceu.assembler('assemble_face_mask') - .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') - .itemOutputs('gtceu:face_mask') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - .circuit(7) - - // #endregion event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:glass_lens', 'tfc:lens') event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:lv_sodium_battery', '#gtceu:batteries/lv') @@ -1078,99 +142,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:shaped/blacklight' }, 'gtceu:tungsten_carbide_screw', '#tfg:components/uv_leds') - event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') - .inputFluids(Fluid.of('gtceu:glue', 50)) - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:glue') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('2x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 7500, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .itemOutputs('3x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 5000, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) - .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') - .circuit(1) - .outputFluids(Fluid.of('tfg:latex', 1000)) - .duration(200) - .EUt(20) - - event.recipes.createSequencedAssembly([ - 'gtceu:ulv_voltage_coil', - ], 'gtceu:magnetic_iron_rod', [ - event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) - ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') - - //#endregion - - //#region Steam Bloomery - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') - .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') - .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - forEachMaterial(material => { - - const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) - if (tfcProperty === null) - return; - - const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() - if (outputMaterial === GTMaterials.Iron) { - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - } - }) - - //#endregion - - //#region Stick Packing - - event.recipes.gtceu.packer('tfg:stick_bunch') - .itemInputs('9x #forge:rods/wooden') - .circuit(5) - .itemOutputs('tfc:stick_bunch') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.packer('tfg:stick_bundle') - .itemInputs('18x #forge:rods/wooden') - .circuit(8) - .itemOutputs('tfc:stick_bundle') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - //#endregion // Fix Snow in Compressor @@ -1181,31 +152,7 @@ const registerGTCEURecipes = (event) => { .duration(20 * 10) .EUt(2) - //#region Changing tiers of decomposition recipes - - event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') - .itemInputs('13x #forge:dusts/clay') - .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') - .outputFluids(Fluid.of('minecraft:water', 6000)) - .duration(GTMaterials.Clay.getMass() * 13) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') - .itemInputs('gtceu:stone_dust') - .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) - .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) - .chancedOutput('#forge:small_dusts/marble', 2222, 0) - .chancedOutput('#forge:small_dusts/biotite', 1111, 0) - .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) - .chancedOutput('#forge:small_dusts/sodalite', 550, 55) - .duration(12 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - - //#endregion - - //#region Tape - + // Tape event.shaped('gtceu:basic_tape', [ ' A ', 'ABA', @@ -1221,20 +168,8 @@ const registerGTCEURecipes = (event) => { .duration(100) .EUt(GTValues.VA[GTValues.ULV]) - //#endregion - //#region glowstone - event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') - .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') - .outputFluids(Fluid.of('gtceu:glowstone', 288)) - .duration(20 * 60 / 1.3) - .EUt(GTValues.VA[GTValues.LV]) - .blastFurnaceTemp(1064) - .circuit(9) - //#endregion - - - //#region GT Facades + // GT Facades event.remove({ id: 'gtceu:crafting/facade_cover' }) event.shapeless(Item.of('gtceu:facade_cover', 8, '{Facade: {Count:1b,id:"minecraft:stone"}}'), ['3x #forge:plates/iron', "#tfg:whitelisted/facades"]) @@ -1254,8 +189,8 @@ const registerGTCEURecipes = (event) => { result.nbt = facadeNBT return result; }).id('gtceu:facade_cover32'); - //#endregion + // Diamond gear event.recipes.gtceu.laser_engraver('tfg:diamond_gear') .itemInputs('4x #forge:plates/diamond') .itemOutputs('#forge:gears/diamond') @@ -1263,28 +198,6 @@ const registerGTCEURecipes = (event) => { .duration(200) .EUt(GTValues.VA[GTValues.MV]) - //#region Rose Quartz fabrication + decomposition - event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) - - generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') - generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') - - event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") - .itemInputs('#forge:dusts/rose_quartz') - .inputFluids(Fluid.of("gtceu:ice", 144)) - .itemOutputs("#forge:gems/rose_quartz") - .duration(2000) - .EUt(120) - - event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') - .itemInputs('9x gtceu:rose_quartz_dust') - .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') - .duration(7 * 20) - .EUt(60) - //#endregion - //#region Multiblock Tanks event.recipes.gtceu.assembler('tfg:assembler/wood_wall') @@ -1322,13 +235,6 @@ const registerGTCEURecipes = (event) => { //#endregion - event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') - .id('tfg:revert_wrought_iron_ingot') - - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - //#region Circuit Fixes global.ADD_CIRCUIT.forEach(item => { @@ -1337,55 +243,6 @@ const registerGTCEURecipes = (event) => { //#endregion - //#region Chemical Reaction for Solar Panel - - event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') - .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') - .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) - .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') - .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) - .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) - .duration(20 * 5) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') - .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) - .itemInputs(Item.of('#forge:aerogels')) - .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) - .duration(20 * 15) - .EUt(GTValues.VH[GTValues.IV]) - - //#endregion - - event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') - - event.shaped('gtceu:treated_wood_pressure_plate', [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: 'gtceu:treated_wood_slab', - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id('gtceu:shaped/treated_pressure_plate') - - event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') - .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') - .itemOutputs('gtceu:treated_wood_pressure_plate') - .circuit(3) - .duration(50) - .EUt(2) - // Matches event.shapeless('4x gtceu:matches', ['#forge:dusts/phosphorus', 'tfc:glue', '4x #forge:bolts/wood']) @@ -1397,21 +254,6 @@ const registerGTCEURecipes = (event) => { event.shapeless(Item.of('gtceu:matchbox', '{usesLeft:8}'), ['minecraft:paper', '8x gtceu:matches']) .id('tfg:shapeless/matchbox') - - event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) - event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) - - event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') - .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) - .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') - .itemOutputs('gtceu:nano_cpu_wafer') - .duration(20*60) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.recipes.gtceu.implosion_compressor('tfg:dense_lead_plate') .itemInputs('16x #forge:ingots/lead', '16x #forge:ingots/lead', '6x #forge:ingots/lead') .itemInputs('gtceu:industrial_tnt') @@ -1446,75 +288,7 @@ const registerGTCEURecipes = (event) => { F: 'gtceu:stainless_steel_huge_fluid_pipe' }).id('tfg:shaped/large_centrifuge') - event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') - .itemInputs('8x tfc:powder/wood_ash') - .inputFluids(Fluid.of('gtceu:air', 100)) - .outputFluids('gtceu:wood_gas 100') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Buttons - removeCutterRecipe(event, 'blackstone_button') - removeCutterRecipe(event, 'blackstone_button_water') - removeCutterRecipe(event, 'blackstone_button_distilled_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') - - event.recipes.gtceu.cutter('tfg:blackstone_button') - .itemInputs('minecraft:polished_blackstone_pressure_plate') - .itemOutputs('6x minecraft:polished_blackstone_button') - .EUt(7) - .duration(100) - - - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - - event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - - //#region Replace Recipe - + // ME Pattern Buffer event.remove({ id: 'gtceu:assembly_line/me_pattern_buffer_proxy' }) event.recipes.gtceu.assembly_line('tfg:me_pattern_buffer_proxy') .itemInputs( @@ -1537,88 +311,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:pattern_provider', '3x expatternprovider:ex_pattern_provider') event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:interface', '3x expatternprovider:oversize_interface') - event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - - // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler - removeMaceratorRecipe(event, 'macerate_palladium_substation') - event.recipes.gtceu.shaped('gtceu:palladium_substation', [ - 'AAA', - ' B ', - 'AAA' - ], { - A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), - B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - - event.recipes.gtceu.assembler('casing_palladium_substation') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - ) - .itemOutputs('gtceu:palladium_substation') - .duration(20 * 2.5) - .circuit(6) - .EUt(GTValues.VA[GTValues.LV]) - - - removeMaceratorRecipe(event, 'macerate_power_substation') - event.recipes.gtceu.shaped('gtceu:power_substation', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: 'gtceu:lapotron_crystal', - B: 'gtceu:mpic_chip', - C: '#gtceu:circuits/ev', - D: 'gtceu:palladium_substation' - }).addMaterialInfo().id('gtceu:shaped/power_substation') - - event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') - event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') - event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') - - event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate , 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), - C: '#gtceu:circuits/hv', - D: 'tfg:cryo_fluix_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') - - event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), - C: '#gtceu:circuits/ev', - D: 'gtceu:quantum_eye' - }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') - - event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), - C: '#gtceu:circuits/iv', - D: 'minecraft:nether_star' - }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') - - event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) - event.recipes.gtceu.chemical_bath('tfg:quantum_eye') - .itemInputs('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('gtceu:radon', 250)) - .itemOutputs('gtceu:quantum_eye') - .duration(20 * 24) - .EUt(GTValues.VA[GTValues.HV]) // Modify Rotor Holder to require an Assembler @@ -1665,164 +357,6 @@ const registerGTCEURecipes = (event) => { .duration(20 * 6) .EUt(GTValues.VA[GTValues.UV]) - //# Circuit Board - - event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') - - //#region New Tungsten Line - - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) - event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) - - // Transform Tungstate and Scheelite - - event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:scheelite_dust', 6)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:calcite_dust', 5)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:tungstate_dust', 7)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:lithium_dust', 2)) - .itemOutputs(Item.of('gtceu:carbon_dust', 1)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:salt_dust', 4)) - .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .duration(20*24) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') - .inputFluids(Fluid.of('gtceu:ammonia', 10000)) - .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .duration(20*16) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*36) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*18) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) - - event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') - .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) - .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) - .duration(20*2.8) - .EUt(GTValues.VA[GTValues.EV]) - - //#endregion - - - // New Alloys - - event.recipes.gtceu.mixer('tfg:ostrum_iodide') - .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') - .itemOutputs('3x #forge:dusts/ostrum_iodide') - .duration(20 * 12) - .circuit(1) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') - .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') - .inputFluids(Fluid.of('gtceu:oxygen', 3000)) - .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.EV]) - - // Handcrafted artisanal concrete - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) - .outputFluid(Fluid.of('gtceu:concrete', 500)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 144)) - .inputItem('gtceu:wood_frame') - .outputItem('gtceu:light_concrete') - .id('tfg:barrel/light_concrete') - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 96)) - .inputItem('tfg:rebar_support') - .outputItem('tfg:reinforced_light_concrete_support') - .id('tfg:barrel/reinforced_light_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('gtceu:light_concrete') - .inputFluid(Fluid.of('tfc:black_dye', 18)) - .outputItem('gtceu:dark_concrete') - .id('tfg:barrel/dark_concrete') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:dark_concrete_support') - .id('tfg:barrel/dark_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:reinforced_light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:reinforced_dark_concrete_support') - .id('tfg:barrel/reinforced_dark_concrete_support') - - event.recipes.gtceu.alloy_smelter('glass_bottle') - .itemInputs('#forge:dusts/glass') - .itemOutputs('tfc:silica_glass_bottle') - .notConsumable('gtceu:bottle_casting_mold') - .EUt(2) - .duration(20 * 5) - .category(GTRecipeCategories.INGOT_MOLDING) event.replaceInput( {output: 'gtceu:nano_saber'}, 'gtceu:ruridit_plate', '#forge:plates/ostrum_iodide' ) diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 39b786f03..ebe072752 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -828,427 +828,37 @@ function registerGTCEuMachineRecipes(event) { B: 'gtceu:steam_machine_casing' }).addMaterialInfo().id('gtceu:shaped/steam_output_bus') - //#region Chipboard Composite - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') - .itemInputs('2x #tfg:wood_dusts', - '1x #forge:wax') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') - .itemInputs('4x #tfg:wood_dusts', - '1x gtceu:sticky_resin') - .itemOutputs('4x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') - .itemInputs('2x #tfg:wood_dusts', - '1x tfc:glue') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') - .itemInputs('1x #tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs('1x tfg:chipboard_composite') - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.compressor('gtceu:wood_mdf') - .itemInputs('1x tfg:chipboard_composite') - .itemOutputs('gtceu:wood_plate') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') - .itemInputs('1x tfg:chipboard_composite') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:treated_chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') - .itemInputs('1x gtceu:wood_plate') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') - .itemInputs('#tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('gtceu:treated_wood_dust') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') - .itemInputs('tfg:treated_chipboard_composite') - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') - .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') - .itemOutputs('gtceu:resin_circuit_board') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.ULV]) - - //#region New Casings - - event.recipes.gtceu.assembler('basic_solar_casing') - .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') - .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('advanced_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') - .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('elite_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') - .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('iron_desh_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') - .itemOutputs('2x tfg:casings/machine_casing_iron_desh') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('steel_machine_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) - .itemOutputs('gtceu:steel_machine_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') - .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') - .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) - .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') - .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') - .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) - .itemOutputs('tfg:casings/machine_casing_mars') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('gtceu:atomic_casing') - .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') - .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) - .itemOutputs('2x gtceu:atomic_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - //#endregion - - //#region Large Solar Panel - - event.shaped( - 'gtceu:large_solar_panel', - ['WSW', 'TZT', 'WUW'], - { - S: 'tfg:photo_cell_t1', - Z: 'ad_astra:solar_panel', - W: '#gtceu:circuits/ev', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel') - - event.shaped( - 'gtceu:large_solar_panel_tier2', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_etrium_cell', - Z: 'gtceu:large_solar_panel', - W: '#gtceu:circuits/iv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier2') - - event.shaped( - 'gtceu:large_solar_panel_tier3', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_vesnium_cell', - Z: 'gtceu:large_solar_panel_tier2', - W: '#gtceu:circuits/luv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier3') - - event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') - .itemInputs('8x tfg:photo_cell_t1', - '6x #forge:dusts/vanadium_gallium', - '#forge:insulation_t2/sheet') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') - .itemInputs('8x ad_astra:photovoltaic_etrium_cell', - '6x gtceu:energium_dust', - '#forge:insulation_t3/sheet') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.IV]) - - // LSP Generating recipes - - // Solar T1 - - event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') - .chancedInput('tfg:photo_cell_t1', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-((GTValues.V[GTValues.HV])), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel('solar_panel_t1') - .notConsumable('tfg:photo_cell_t1') - .perTick(true) - .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(2) - - // Solar T2 - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') - .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .inputFluids('tfg:compressed_trimix_3 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(3) - - // Solar T3 - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') - .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.LuV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - //#endregion - - //#region Mars Ore Line - - // Multiblock - - event.shaped('tfg:ostrum_linear_accelerator', [ - 'USU', - 'WZW', - 'PTP' + // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler + removeMaceratorRecipe(event, 'macerate_palladium_substation') + event.recipes.gtceu.shaped('gtceu:palladium_substation', [ + 'AAA', + ' B ', + 'AAA' ], { - S: 'tfg:casings/machine_casing_vacuum_engine_intake', - Z: 'gtceu:iv_machine_hull', - W: '#gtceu:circuits/iv', - U: '#forge:double_plates/stellite_100', - T: '#forge:single_cables/platinum', - P: 'gtceu:iv_electric_pump' - } - ).id('tfg:shaped/ostrum_linear_accelerator') + A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), + B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - event.recipes.gtceu.assembler('tfg:ostrum_harvester') + event.recipes.gtceu.assembler('casing_palladium_substation') .itemInputs( - '1x gtceu:ev_machine_hull', - '4x #gtceu:circuits/ev', - '4x gtceu:ev_electric_motor', - '4x #forge:rotors/black_steel', - '4x gtceu:ev_electric_pump', - '4x #forge:gears/desh') - .itemOutputs('gtceu:ostrum_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + ) + .itemOutputs('gtceu:palladium_substation') + .duration(20 * 2.5) + .circuit(6) + .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.assembler('tfg:moon_dust_harvester') - .itemInputs( - '1x gtceu:hv_machine_hull', - '4x #gtceu:circuits/hv', - '4x gtceu:hv_electric_motor', - '4x #forge:rotors/titanium', - '4x gtceu:hv_electric_pump', - '4x #forge:gears/rocket_alloy_t1') - .itemOutputs('gtceu:moon_dust_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - .circuit(2) - - // Vacuum Intake - - event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ - 'USU', - 'WZW', - 'UTU' + + removeMaceratorRecipe(event, 'macerate_power_substation') + event.recipes.gtceu.shaped('gtceu:power_substation', [ + 'ABA', + 'CDC', + 'ABA' ], { - S: '#forge:tools/hammers', - T: '#forge:tools/wrenches', - W: '#forge:rotors/ultimet', - U: 'gtceu:ultimet_normal_item_pipe', - Z: 'gtceu:inert_machine_casing' - }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') - .itemInputs( - '2x #forge:rotors/ultimet', - '4x gtceu:ultimet_normal_item_pipe', - '1x gtceu:inert_machine_casing') - .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') - .duration(50) - .EUt(GTValues.VH[GTValues.LV]) - .circuit(2) - - // Stainless Evaporation Tower - - event.recipes.gtceu.shaped('tfg:evaporation_tower', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: '#gtceu:circuits/iv', - W: 'gtceu:ev_electric_pump', - U: '#forge:double_wires/nichrome', - Z: 'gtceu:ev_machine_hull' - }).addMaterialInfo().id('tfg:shaped/evaporation_tower') - - //#endregion - - //#region Nuclear Controler - - event.shaped('deafission:fission_reactor_mk1', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:hv_field_generator', - Z: 'gtceu:ev_machine_hull' - } - ).id('tfg:shaped/fission_reactor_mk1') - - event.shaped('gtceu:nuclear_fuel_factory', [ - 'TUT', - 'WZW', - 'TBT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_emitter', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_robot_arm' - } - ).id('tfg:shaped/nuclear_fuel_factory') - - event.shaped('gtceu:heat_exchanger', [ - 'TUT', - 'WZW', - 'GBG' - ], { - T: 'gtceu:high_temperature_smelting_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_sensor', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_fluid_regulator', - G: '#forge:gears/ostrum_iodide' - } - ).id('tfg:shaped/heat_exchanger') - - event.shaped('tfg:nuclear_turbine', [ - 'CTC', - 'TZT', - 'BTB' - ], { - T: '#forge:gears/magnalium', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ultimet_large_item_pipe', - C: '#gtceu:circuits/ev' - } - ).id('tfg:shaped/nuclear_turbine') - + A: 'gtceu:lapotron_crystal', + B: 'gtceu:mpic_chip', + C: '#gtceu:circuits/ev', + D: 'gtceu:palladium_substation' + }).addMaterialInfo().id('gtceu:shaped/power_substation') } diff --git a/kubejs/server_scripts/gregtech/recipes.recycling.js b/kubejs/server_scripts/gregtech/recipes.recycling.js index 2e398078b..925f5f08f 100644 --- a/kubejs/server_scripts/gregtech/recipes.recycling.js +++ b/kubejs/server_scripts/gregtech/recipes.recycling.js @@ -140,25 +140,103 @@ function registerGTCEURecyclingRecipes(event) { .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) .EUt(GTValues.VA[GTValues.LV]) + // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - // Clean Foil pack - event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .EUt(GTValues.VA[GTValues.ULV]) + const SIGN_METALS = [ + GTMaterials.Copper, + GTMaterials.Bronze, + GTMaterials.BlackBronze, + GTMaterials.BismuthBronze, + GTMaterials.WroughtIron, + GTMaterials.Steel, + GTMaterials.BlackSteel, + GTMaterials.RedSteel, + GTMaterials.BlueSteel + ]; - event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - .EUt(GTValues.VA[GTValues.LV]) + SIGN_METALS.forEach(metal => { + // Arc furnace + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + global.AFC_WOOD_TYPES.forEach(wood => { + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + // Macerator + global.TFC_HARDWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.TFC_SOFTWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_HARDWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_SOFTWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + }) + // #endregion + + //#region support recycling + event.recipes.gtceu.macerator(`hardwood_support_to_dust`) + .itemInputs('#tfg:hardwood_supports') + .itemOutputs('gtceu:hardwood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + + event.recipes.gtceu.macerator(`softwood_support_to_dust`) + .itemInputs('#tfg:softwood_supports') + .itemOutputs('gtceu:wood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + //#endregion } \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/recipes.removes.js b/kubejs/server_scripts/gregtech/recipes.removes.js index dbac80643..6377deb5c 100644 --- a/kubejs/server_scripts/gregtech/recipes.removes.js +++ b/kubejs/server_scripts/gregtech/recipes.removes.js @@ -817,6 +817,13 @@ function removeGTCEURecipes(event) { event.remove({ id: 'gtceu:ore_washer/wash_plutonium_pure_dust_to_dust' }) event.remove({ id: 'gtceu:ore_washer/wash_plutonium_dirty_dust_to_dust' }) event.remove({ id: 'gtceu:forge_hammer/hammer_plutonium_refined_ore_to_dust' }) + + + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); + + + event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) + event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) } function removeMaceratorRecipe(event, id) { diff --git a/kubejs/server_scripts/gregtech/tags.js b/kubejs/server_scripts/gregtech/tags.js index c121d87d8..de4bdf149 100644 --- a/kubejs/server_scripts/gregtech/tags.js +++ b/kubejs/server_scripts/gregtech/tags.js @@ -25,10 +25,6 @@ function registerGTCEUItemTags(event) { event.remove("minecraft:planks", "gtceu:wood_plate"); - event.add("tfg:sugars", "minecraft:sugar"); - event.add("tfg:sugars", "afc:birch_sugar"); - event.add("tfg:sugars", "afc:maple_sugar"); - global.MINECRAFT_DYE_NAMES.forEach((dyeName) => { event.remove("ae2:p2p_attunements/fluid_p2p_tunnel", `gtceu:${dyeName}_dye_bucket`); }); diff --git a/kubejs/server_scripts/immersive_aircraft/recipes.js b/kubejs/server_scripts/immersive_aircraft/recipes.js index d31b3cb42..e66a4cf66 100644 --- a/kubejs/server_scripts/immersive_aircraft/recipes.js +++ b/kubejs/server_scripts/immersive_aircraft/recipes.js @@ -872,4 +872,52 @@ function registerImmersiveAircraftRecipes(event) { }).id('tfg:immersive_aircraft/mechanical_crafter/bamboo_hopper') //#endregion + + // Custom stuff + + //Scaffolding Frame + event.shaped('tfg:scaffolding_frame', + [ + ' A ', + 'ABA', + ' A ' + ], + { + A: '#forge:rods/wood', + B: '#forge:cloth' + }).id('tfg:shaped/scaffolding_frame'); + + //Airship Hull + event.shaped('tfg:airship_hull', [ + 'A B', + 'C C', + 'CCC' + ], { + A: '#forge:tools/screwdrivers', + B: '#forge:tools/hammers', + C: 'immersive_aircraft:hull' + }).id('tfg:shaped/airship_hull'); + event.recipes.gtceu.assembler('tfg:assembler/airship_hull') + .itemInputs('5x immersive_aircraft:hull') + .itemOutputs('tfg:airship_hull') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]); + + //Airship Balloon + event.shaped('tfg:airship_balloon', [ + 'ABA', + 'BAB', + 'ABA' + ], { + A: '#forge:string', + B: 'immersive_aircraft:sail' + }).id('tfg:shaped/airship_balloon') + + event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') + .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') + .itemOutputs('tfg:airship_balloon') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]) } \ No newline at end of file diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index ea9c4e1bc..78248cb3b 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -180,7 +180,7 @@ TFCEvents.data(event => { */ LootJS.modifiers((event) => { registerAdAstraLoots(event) - registerGTCEULoots(event) + registerTFGOreLoots(event) registerLootrLoots(event) registerPrimitiveCreaturesLoots(event) registerSpeciesLoots(event) diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index d137c331b..acfe66bc3 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -10,26 +10,6 @@ const registerMinecraftRecipes = (event) => { removeMinecraftRecipes(event) registerMinecraftDyeRecipes(event) - //#region Выход: Земля, dirt - - event.recipes.gtceu.macerator('dirt_from_bio_chaff') - .itemInputs('gtceu:bio_chaff') - .itemOutputs('tfc:dirt/loam') - .duration(300) - .EUt(4) - - //#endregion - - //#region Выход: Стекло, glass - - event.recipes.gtceu.arc_furnace('glass_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('2x minecraft:glass') - .duration(20) - .EUt(30) - - //#endregion - //#region Добавление, copper for (let i = 0; i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length; i++) { @@ -142,48 +122,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region Выход: Бумага, paper - - event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') - .itemInputs('tfc:papyrus') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.chemical_bath('paper_from_papyrus') - .itemInputs('tfc:papyrus') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.assembler('papyrus_strips') - .itemInputs('4x tfc:soaked_papyrus_strip') - .itemOutputs('minecraft:paper') - .circuit(1) - .duration(100) - .EUt(7) - - //#endregion - - //#region Выход: Сахар, sugar - - event.recipes.gtceu.centrifuge('sugar_from_sugarcane') - .itemInputs('tfc:food/sugarcane') - .inputFluids("#tfg:clean_water 600") - .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') - .duration(800) - .EUt(6) - - event.recipes.gtceu.centrifuge('sugar_from_honey') - .itemInputs('firmalife:raw_honey') - .itemOutputs('minecraft:sugar') - .duration(400) - .EUt(6) - - //#endregion - //#region Выход: Блок сена, hay block event.recipes.gtceu.packer('hay_block') @@ -823,7 +761,6 @@ const registerMinecraftRecipes = (event) => { //#region Выход: Элитра, elytra - // Ну и херь я придумал, here's some bullshit i came up with event.recipes.gtceu.assembler('tfg:minecraft/elytra') .itemInputs('16x tfg:polycaprolactam_fabric', '16x #forge:foils/aluminium', '8x tfg:phantom_silk', '4x #forge:rings/aluminium', '2x #forge:rods/long/vanadium_steel', '2x #forge:small_springs/aluminium', '1x #forge:small_gears/aluminium') .circuit(4) @@ -861,16 +798,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region Glowstone - - event.recipes.gtceu.mixer('gtceu:lv_glowstone') - .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') - .itemOutputs('2x minecraft:glowstone_dust') - .circuit(8) - .duration(1200) - .EUt(30) - - //#endregion //#region Netherite leggings (for the lavaproof diving set) @@ -931,14 +858,6 @@ const registerMinecraftRecipes = (event) => { generateCutterRecipe(event, '#forge:double_plates/wrought_iron', 'minecraft:iron_door', 400, GTValues.VA[GTValues.LV], 'iron_door') - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#forge:rods/wooden' - }).id('gtceu:shaped/ladder') - // #endregion // #region Calcite @@ -1018,19 +937,6 @@ const registerMinecraftRecipes = (event) => { event.smelting('tfc:glue', 'minecraft:magma_cream') .id('tfg:smelting/magma_cream_to_glue') - //#region Clay - event.shaped('minecraft:clay', [ - 'AA', - 'AA' - ], { - A: 'minecraft:clay_ball' - }) - .id('tfg:shaped/clay_balls_to_block') - - event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) - .id('tfg:shapeless/clay_block_to_balls') - - //#endregion //#region Mushrooms diff --git a/kubejs/server_scripts/species/recipes.js b/kubejs/server_scripts/species/recipes.js index 14b95dcdf..2c7fe4c09 100644 --- a/kubejs/server_scripts/species/recipes.js +++ b/kubejs/server_scripts/species/recipes.js @@ -66,30 +66,6 @@ function registerSpeciesRecipes(event) { B: 'firmaciv:rope_coil' }).id('tfg:shaped/harpoon') - generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, - '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) - - event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') - event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') - - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') - .itemInputs('species:cracked_wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') - .itemInputs('tfg:wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(200) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') - .itemInputs('tfg:sniffer_egg') - .outputFluids(Fluid.of('firmalife:cream', 1000)) - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.shaped('species:ricoshield', [ 'EBE', 'ACA', diff --git a/kubejs/server_scripts/tfc/data.js b/kubejs/server_scripts/tfc/data.js index d800003a3..481d834ce 100644 --- a/kubejs/server_scripts/tfc/data.js +++ b/kubejs/server_scripts/tfc/data.js @@ -7,8 +7,6 @@ const registerTFCDataForTFC = (event) => { registerTFCLampFuels(event) registerTFCFertilizers(event) registerTFCKnappingTypes(event) - registerTFCItemSize(event) - registerTFCFoodData(event) registerTFCArmourResistances(event) } @@ -77,27 +75,6 @@ const registerTFCKnappingTypes = (event) => { event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw') } - -const registerTFCItemSize = (event) => { - event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') - - event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') - event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') - - event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') - event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') - event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') -} - - -const registerTFCFoodData = (event) => { - - event.foodItem('firmalife:ice_shavings', food => { - food.water(5) - food.decayModifier(0) - }) -} - const registerTFCArmourResistances = (event) => { event.itemDamageResistance( 'create:copper_diving_helmet', diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index f38d1df41..f26ac71a1 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -10,17 +10,8 @@ const registerTFCRecipes = (event) => { removeTFCRecipes(event) registerTFCMaterialsRecipes(event) registerTFCMetalsRecipes(event) - registerTFCStoneRecipes(event) - registerTFCSandRecipes(event) - registerTFCDirtRecipes(event) - registerTFCWoodRecipes(event) - registerTFCKnappingRecipes(event) - registerTFCMachineRecipes(event) - registerTFCAlabasterRecipes(event) registerTFCDyeRecipes(event) - //#region Рецепты порошков - // Добавление рецептов global.TFC_QUERN_POWDER_RECIPE_COMPONENTS.forEach(element => { event.recipes.gtceu.macerator(`tfg:${element.name}`) @@ -33,26 +24,6 @@ const registerTFCRecipes = (event) => { .id(`tfg:quern/${element.name}`) }) - //#endregion - - //#region Рецепты обжарки форм - - global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - global.MINECRAFT_DYE_NAMES.forEach(dye => { - event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) - .id(`tfg:smelting/${dye}_glazed_vessel`) - - event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) - .id(`tfg:smelting/${dye}_large_vessel`) - }) - - //#endregion - - //#region Рецепты электрической теплицы // Дерево @@ -89,21 +60,12 @@ const registerTFCRecipes = (event) => { const itemId = element.id; const recipeId = `greenhouse_${itemId.replace(':', '_')}`; - generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, + generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, recipeId, null, 8, itemId, GTValues.VH[GTValues.LV]); }); //#endregion - event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') - - event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') - - event.recipes.gtceu.cutter('tfg:saplings_to_sticks') - .itemInputs('#minecraft:saplings') - .itemOutputs('2x minecraft:stick') - .duration(20) - .EUt(7) // Доменная печь event.recipes.gtceu.shaped('tfc:blast_furnace', [ @@ -126,40 +88,64 @@ const registerTFCRecipes = (event) => { [TFC.ingredient.notRotten('tfc:pumpkin'), '#tfc:knives'], 'tfc:pumpkin') .id(`tfc:crafting/pumpkin_chunks_knife`) - // Lime + // Flux + Lime event.smelting('tfc:powder/lime', 'tfc:powder/flux') .id('tfg:smelting/lime') - // Kaolinite Clay - regular smelting recipes can't have multiple inputs - event.recipes.gtceu.alloy_smelter('tfg:kaolinite') - .itemInputs('tfc:kaolin_clay') - .circuit(1) - .chancedOutput('tfc:powder/kaolinite', 2000, 0) - .duration(100) - .EUt(16) + event.recipes.gtceu.macerator('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - // Fire Clay - event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') - .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') - .itemOutputs('2x tfc:fire_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.forge_hammer('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') - .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') - .itemOutputs('tfc:kaolin_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') + .recipeTier(0) + .id('greate:pressing/flux') - // Выпаривание соли + // Salt Water event.recipes.tfc.pot([], Fluid.of('tfc:salt_water', 625), 300, 100) .itemOutput('gtceu:small_salt_dust') .id('tfg:tfc/pot/salt') - // Salt Water generateMixerRecipe(event, ['#forge:dusts/salt'], "#tfg:clean_water 1000", [], 2, Fluid.of('tfc:salt_water', 1000), 40, 7, 64, 'tfg:tfc/salt_water') + event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:salt_dust') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(51) + .EUt(30) + .circuit(1) + + event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') + .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) + .duration(720) + .EUt(30) + + // Add circuit to gregtech salt water mixer recipe + event.remove({ id: 'gtceu:mixer/salt_water' }) + generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) + .inputFluid(Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('tfc:salt_water', 1000)) + .id('tfg:barrel/water_to_salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem("tfc:powder/salt") + .inputFluid(Fluid.of('minecraft:water', 250)) + .outputFluid(Fluid.of('tfc:salt_water', 250)) + .id('tfg:barrel/water_to_salt_water_tfc') // Seaweed and kelp event.recipes.tfc.heating('tfc:groundcover/seaweed', 200) @@ -176,20 +162,9 @@ const registerTFCRecipes = (event) => { event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_seaweed').id('tfg:smelting/dried_seaweed_to_soda') event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_kelp').id('tfg:smelting/dried_kelp_to_soda') - //#region Обрушения - - event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') - event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') - event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') - - //#endregion - //More accesible solar drier event.replaceInput({ id: 'firmalife:crafting/solar_drier' }, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod') - //Wood ash - event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') - .id('tfg:splashing/wash_torch') //Lye generateMixerRecipe(event, 'tfc:powder/wood_ash', "#tfg:clean_water 200", @@ -204,102 +179,37 @@ const registerTFCRecipes = (event) => { .EUt(2) // Brass Mechanism - event.recipes.shapeless('gtceu:small_brass_gear', [ 'tfc:brass_mechanisms' ]).id('tfg:replace_brass_mechanisms') - event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') + event.recipes.shapeless('gtceu:small_brass_gear', ['tfc:brass_mechanisms']).id('tfg:replace_brass_mechanisms') + event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') - // Fertilizers - event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') - .itemInputs('1x gtceu:fertilizer') - .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') - .duration(340) - .EUt(GTValues.VA[GTValues.ULV]) + // Rennet + event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') + .itemInputs('#tfg:ferments_to_rennet') + .itemOutputs('firmalife:rennet') + .duration(400) + .EUt(16) - event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') - .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) - .itemOutputs('1x gtceu:fertilizer') - .duration(160) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') + .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .itemOutputs('firmalife:rennet') + .duration(2400) + .EUt(16) - event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') - .itemInputs('#forge:wax') - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs('16x tfc:pure_nitrogen') + // Brine + event.recipes.gtceu.mixer('tfg:tfc/brine') + .inputFluids(Fluid.of('tfc:salt_water', 900)) + .inputFluids(Fluid.of('tfc:vinegar', 100)) + .outputFluids(Fluid.of('tfc:brine', 1000)) .duration(100) - .EUt(GTValues.VA[GTValues.LV]) + .EUt(16) - //Hide Sewing - const stages = [ - 'raw', - 'soaked', - 'scraped', - 'prepared', - 'sheepskin' - ]; - - stages.forEach(stage => { - //Combining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:medium_${stage}_hide`, [ - `2x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) - ) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:large_${stage}_hide`, [ - `3x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_large_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:medium_${stage}_hide`) - .itemInputs(`2x tfc:small_${stage}_hide`) - .duration(60) - .circuit(7) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:large_${stage}_hide`) - .itemInputs(`3x tfc:small_${stage}_hide`) - .duration(60) - .circuit(9) - .EUt(GTValues.VA[GTValues.ULV]) - - //Cutting - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`2x tfc:small_${stage}_hide`, [ - `1x tfc:medium_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`3x tfc:small_${stage}_hide`, [ - `1x tfc:large_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/large_to_small_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) - .itemOutputs(`2x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:medium_${stage}_hide`) - .duration(60) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) - .itemOutputs(`3x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:large_${stage}_hide`) - .duration(60) - .circuit(6) - .EUt(GTValues.VA[GTValues.ULV]) - }); + // LimeWater + Sand -> Mortar + event.recipes.gtceu.mixer('mortar') + .itemInputs('#forge:sand') + .inputFluids(Fluid.of('tfc:limewater', 100)) + .itemOutputs('16x tfc:mortar') + .duration(800) + .EUt(8) // Jar lids @@ -311,46 +221,25 @@ const registerTFCRecipes = (event) => { event.replaceInput({ mod: 'tfc' }, 'minecraft:sugar', '#tfg:sugars') - // Sea Water - event.recipes.tfc.barrel_instant() - .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) - .inputFluid(Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('tfc:salt_water', 1000)) - .id('tfg:barrel/water_to_salt_water') - event.recipes.tfc.barrel_instant() - .inputItem("tfc:powder/salt") - .inputFluid(Fluid.of('minecraft:water', 250)) - .outputFluid(Fluid.of('tfc:salt_water', 250)) - .id('tfg:barrel/water_to_salt_water_tfc') + // jute net -> burlap net + event.replaceInput({ id: 'tfc:crafting/jute_net' }, 'tfc:jute_fiber', '#tfg:burlap_fiber') - // jute net -> burlap net - event.replaceInput({ id: 'tfc:crafting/jute_net'}, 'tfc:jute_fiber', '#tfg:burlap_fiber') - - // horse armor to use burlap - global.TFC_EQUIPMENT_METALS.forEach(material => { - event.replaceInput({ id: `tfc:crafting/${material}_horse_armor`}, `tfc:jute_fiber`, `#tfg:burlap_fiber`) - }) - - // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [{ item: 'tfc:torch' }], - result: { item: 'tfc:powder/wood_ash' } - }).id(`tfg:ae_transform/torch_to_wood_ash`) - - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#tfc:lumber' - }).id('tfc:crafting/vanilla/ladder') - - event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') - event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + // horse armor to use burlap + global.TFC_EQUIPMENT_METALS.forEach(material => { + event.replaceInput({ id: `tfc:crafting/${material}_horse_armor` }, `tfc:jute_fiber`, `#tfg:burlap_fiber`) + }) + + event.recipes.gtceu.centrifuge('tfg:soot') + .itemInputs('tfc:soot') + .itemOutputs('#forge:dusts/carbon') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') + .itemInputs('2x #forge:plates/wrought_iron') + .notConsumable('tfg:large_casing_extruder_mold') + .itemOutputs('tfc:wrought_iron_grill') + .duration(60) + .EUt(8) } diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js deleted file mode 100644 index 319bbe004..000000000 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ /dev/null @@ -1,452 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCMachineRecipes(event) { - - // Бумага - event.recipes.gtceu.cutter('tfg:unrefined_paper') - .itemInputs('tfc:unrefined_paper') - .itemOutputs('minecraft:paper') - .duration(100) - .EUt(7) - - // Limewater - event.recipes.gtceu.mixer('tfg:limewater_from_lime') - .itemInputs('tfc:powder/lime') - .inputFluids(Fluid.of('water', 500)) - .outputFluids(Fluid.of('tfc:limewater', 500)) - .duration(20) - .EUt(16) - - event.recipes.gtceu.mixer('tfg:limewater_from_flux') - .itemInputs('tfc:powder/flux') - .inputFluids(Fluid.of('water', 500)) - .outputFluids(Fluid.of('tfc:limewater', 500)) - .duration(20) - .EUt(16) - - // Tannin - event.recipes.gtceu.chemical_bath('tfg:tannin') - .itemInputs('#tfc:makes_tannin') - .inputFluids(Fluid.of('water', 1000)) - .outputFluids(Fluid.of('tfc:tannin', 1000)) - .duration(2400) - .EUt(16) - - // Soaked hides - event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide') - .itemInputs('tfc:small_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 300)) - .itemOutputs('tfc:small_soaked_hide') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide') - .itemInputs('tfc:medium_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 400)) - .itemOutputs('tfc:medium_soaked_hide') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide') - .itemInputs('tfc:large_raw_hide') - .inputFluids(Fluid.of('tfc:limewater', 500)) - .itemOutputs('tfc:large_soaked_hide') - .duration(3200) - .EUt(16) - - // Scraped Hides - event.recipes.gtceu.cutter('tfg:small_scraped_hide') - .itemInputs('tfc:small_soaked_hide') - .itemOutputs('tfc:small_scraped_hide') - .duration(100) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:medium_scraped_hide') - .itemInputs('tfc:medium_soaked_hide') - .itemOutputs('tfc:medium_scraped_hide') - .duration(100) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:large_scraped_hide') - .itemInputs('tfc:large_soaked_hide') - .itemOutputs('tfc:large_scraped_hide') - .duration(100) - .EUt(7) - - // Prepared hides - event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide') - .itemInputs('tfc:small_soaked_hide') - .inputFluids(Fluid.of('water', 300)) - .itemOutputs('tfc:small_prepared_hide') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide') - .itemInputs('tfc:medium_soaked_hide') - .inputFluids(Fluid.of('water', 400)) - .itemOutputs('tfc:medium_prepared_hide') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide') - .itemInputs('tfc:large_soaked_hide') - .inputFluids(Fluid.of('water', 500)) - .itemOutputs('tfc:large_prepared_hide') - .duration(3200) - .EUt(16) - - // Leather - event.recipes.gtceu.chemical_bath('tfg:small_leather') - .itemInputs('tfc:small_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 300)) - .itemOutputs('minecraft:leather') - .duration(1600) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:medium_leather') - .itemInputs('tfc:medium_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 400)) - .itemOutputs('2x minecraft:leather') - .duration(2400) - .EUt(16) - - event.recipes.gtceu.chemical_bath('tfg:large_leather') - .itemInputs('tfc:large_prepared_hide') - .inputFluids(Fluid.of('tfc:tannin', 500)) - .itemOutputs('3x minecraft:leather') - .duration(3200) - .EUt(16) - - //#region Молды в ассемблере - - for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - event.recipes.gtceu.extruder('tfg:unfired_clay_brick') - .itemInputs('minecraft:clay_ball') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_brick') - .duration(20) - .EUt(2) - - event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') - .itemInputs('tfc:fire_clay') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_fire_brick') - .duration(20) - .EUt(2) - - //#endregion - - //#region Стеклянные смеси в бутылки в ассемблере - - global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .notConsumable('gtceu:bottle_casting_mold') - .itemOutputs(element.output) - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - }) - - //#endregion - - //#region СЫЫЫР 0_0 - - // Rennet - event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') - .itemInputs('#tfg:ferments_to_rennet') - .itemOutputs('firmalife:rennet') - .duration(400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') - .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) - .itemOutputs('firmalife:rennet') - .duration(2400) - .EUt(16) - - //#endregion - - // Brine - - event.recipes.gtceu.mixer('tfg:tfc/brine') - .inputFluids(Fluid.of('tfc:salt_water', 900)) - .inputFluids(Fluid.of('tfc:vinegar', 100)) - .outputFluids(Fluid.of('tfc:brine', 1000)) - .duration(100) - .EUt(16) - - //#endregion - - // Lamp Glass - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) - .itemInputs('#tfc:glass_batches') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) - .itemInputs('#forge:dusts/glass') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - // Empty Jar - event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') - .itemInputs('#tfc:glass_batches_tier_2') - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - - event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') - .inputFluids(Fluid.of('gtceu:glass', 144)) - .notConsumable('gtceu:cylinder_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:jar_extraction') - .itemInputs('#tfc:jars') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:glass_batch_extraction') - .itemInputs('#tfc:glass_batches') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe('tfc:lens') - .itemInputs('#forge:glass') - .itemOutputs('tfc:lens') - .duration(100) - .EUt(16) - - // Wool Yarn - event.recipes.gtceu.macerator('macerate_wool') - .itemInputs('#minecraft:wool') - .itemOutputs('tfc:wool_yarn') - .chancedOutput('tfc:wool_yarn', 9000, 0) - .chancedOutput('tfc:wool_yarn', 5000, 0) - .chancedOutput('tfc:wool_yarn', 2000, 0) - .duration(200) - .EUt(2) - - // LimeWater + Sand -> Mortar - event.recipes.gtceu.mixer('mortar') - .itemInputs('#forge:sand') - .inputFluids(Fluid.of('tfc:limewater', 100)) - .itemOutputs('16x tfc:mortar') - .duration(800) - .EUt(8) - - - // 1x Small SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_1') - .itemInputs('tfc:small_sheepskin_hide') - .itemOutputs('tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Medium SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_2') - .itemInputs('tfc:medium_sheepskin_hide') - .itemOutputs('2x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Large SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_3') - .itemInputs('tfc:large_sheepskin_hide') - .itemOutputs('3x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // Wool Yarn - event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') - .itemInputs('tfc:wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - // Burlap Cloth - event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') - .itemInputs('12x tfc:jute_fiber') - .circuit(0) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - // Silk Cloth - event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') - .itemInputs('24x minecraft:string') - .circuit(0) - .itemOutputs('tfc:silk_cloth') - .duration(100) - .EUt(4) - - // Wool Cloth - event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') - .itemInputs('16x tfc:wool_yarn') - .circuit(0) - .itemOutputs('tfc:wool_cloth') - .duration(100) - .EUt(4) - - // Cloths to Wool - event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') - .itemInputs('4x #tfc:sewing_light_cloth') - .itemOutputs('8x minecraft:white_wool') - .circuit(16) - .duration(100) - .EUt(4) - - // Jute Fiber - generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", - 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') - - // Ceramic Recycling - event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') - .itemInputs('firmalife:pottery_sherd') - .itemOutputs('#forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:ceramic_molds') - .itemInputs('#tfc:fired_molds') - .itemOutputs('2x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:large_vessels') - .itemInputs('#tfc:fired_large_vessels') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:casting_channel') - .itemInputs('tfcchannelcasting:channel') - .itemOutputs('1x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:mold_table') - .itemInputs('tfcchannelcasting:mold_table') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - // Humus and compost - event.recipes.gtceu.extractor('tfg:humus_from_leaves') - .itemInputs('#minecraft:leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') - .itemInputs('4x gtceu:fertilizer') - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - - const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; - const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; - - let i = 0; - BROWNS.forEach(brown => { - GREENS.forEach(green => { - event.recipes.gtceu.mixer(`tfg:compost_${i++}`) - .itemInputs(brown, green) - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - }) - }) - - event.recipes.gtceu.centrifuge('tfg:soot') - .itemInputs('tfc:soot') - .itemOutputs('#forge:dusts/carbon') - .duration(20) - .EUt(2) - - // Stripped logs - - global.TFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) - .itemInputs(`tfc:wood/log/${wood}`) - .itemOutputs(`tfc:wood/stripped_log/${wood}`) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) - .itemInputs(`tfc:wood/wood/${wood}`) - .itemOutputs(`tfc:wood/stripped_wood/${wood}`) - .duration(50) - .EUt(2) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/log/${wood}` }], - results: [{ item: `tfc:wood/stripped_log/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_log`) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/wood/${wood}` }], - results: [{ item: `tfc:wood/stripped_wood/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_wood`) - }) - - - event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') - .itemInputs('2x #forge:plates/wrought_iron') - .notConsumable('tfg:large_casing_extruder_mold') - .itemOutputs('tfc:wrought_iron_grill') - .duration(60) - .EUt(8) -} diff --git a/kubejs/server_scripts/tfc/recipes.metals.js b/kubejs/server_scripts/tfc/recipes.metals.js index a1026e886..82358d538 100644 --- a/kubejs/server_scripts/tfc/recipes.metals.js +++ b/kubejs/server_scripts/tfc/recipes.metals.js @@ -200,39 +200,6 @@ function registerTFCMetalsRecipes(event) { .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 = [ @@ -401,6 +368,10 @@ function registerTFCMetalsRecipes(event) { }) //#endregion + event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') + .id('tfg:revert_wrought_iron_ingot') + + // Melting powders const METAL_POWDERS = [ diff --git a/kubejs/server_scripts/tfc/recipes.wood.js b/kubejs/server_scripts/tfc/recipes.wood.js deleted file mode 100644 index 7ede26945..000000000 --- a/kubejs/server_scripts/tfc/recipes.wood.js +++ /dev/null @@ -1,55 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCWoodRecipes(event) { - - event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') - - // Какие то рецепты дерева - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) - event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) - event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) - - // Бревна -> Пиломатериалы - generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) - - // Доски -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) - - // Ступень -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) - - - // Плита -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) - - // ? -> Деревянная нажимная пластина - event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: `tfc:wood/planks/${wood}_slab`, - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id(`tfc:crafting/wood/${wood}_pressure_plate`) - - event.recipes.gtceu.assembler(`${wood}_pressure_plate`) - .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) - .circuit(3) - .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) - .duration(50) - .EUt(2) - - // ? -> Деревянная кнопка - event.remove({ id: `tfc:crafting/wood/${wood}_button` }) - - generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) - - }) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/data.js b/kubejs/server_scripts/tfg/data.js index 07e49af45..ba1b45d80 100644 --- a/kubejs/server_scripts/tfg/data.js +++ b/kubejs/server_scripts/tfg/data.js @@ -301,6 +301,16 @@ function registerTFGItemSize(event) { event.itemSize("tfg:beaker", "large", "heavy", "tfg/beaker"); event.itemSize("tfg:flask", "normal", "medium", "tfg/flask"); event.itemSize("tfg:vial", "tiny", "light", "tfg/vial"); + + + event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') + + event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') + event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') + + event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') + event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') + event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') } //#endregion @@ -328,949 +338,4 @@ function registerTFGSupportData(event) { }); } -//#endregion -//#region Food Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFoodData(event) { - - // Birt - event.foodItem("tfg:food/raw_birt", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_birt", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Crawlermari - event.foodItem("tfg:food/raw_crawlermari", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crawlermari", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Limpet - event.foodItem("tfg:food/raw_limpet", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_limpet", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Moon Rabbit - event.foodItem("tfg:food/raw_moon_rabbit", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Glacian Mutton - event.foodItem("tfg:food/raw_glacian_mutton", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Sniffer Beef - event.foodItem("tfg:food/raw_sniffer_beef", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Wraptor - event.foodItem("tfg:food/raw_wraptor", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_wraptor", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Springling Collar - event.foodItem("tfg:food/raw_springling_collar", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_springling_collar", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Surfer Steak - event.foodItem("tfg:food/raw_surfer_steak", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_surfer_steak", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Cruncher Ribs - event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Long Pig Filet - event.foodItem("tfg:food/raw_long_pig_filet", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { - food.hunger(2); - food.saturation(2); - food.protein(2); - food.decayModifier(2.25); - }); - - // Stackatick Chunks - event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/raw_stickastackatick", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_stickastackatick", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Walker Steak - event.foodItem("tfg:food/raw_walker_steak", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_walker_steak", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Glider Wings - event.foodItem("tfg:food/raw_glider_wings", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glider_wings", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.75); - food.decayModifier(2.25); - }); - - // Soarer - event.foodItem("tfg:food/raw_whole_soarer", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_whole_soarer", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3.1); - food.decayModifier(2.25); - }); - - // Crusher Meat - event.foodItem("tfg:food/raw_crusher_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crusher_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Goober Meat - event.foodItem("tfg:food/raw_goober_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - food.water(1); - }); - - event.foodItem("tfg:food/cooked_goober_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // high-tech food - global.FOOD_FRUIT.forEach((fruit) => { - event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { - food.hunger(4); - food.saturation(fruit.saturation); - food.water(0); - food.fruit(fruit.fruit); - food.decayModifier(fruit.decay); - }); - }); - - event.foodItem("tfg:food/calorie_paste", (food) => { - food.hunger(6); - food.saturation(4); - food.decayModifier(4.5); - food.grain(0.1); - food.vegetables(0.2); - food.protein(0.2); - }); - - event.foodItem("tfg:food/meal_bag", (food) => { - food.type("dynamic"); - }); - - // Sunflower products - event.foodItem("tfg:roasted_sunflower_seeds", (food) => { - food.hunger(4); - food.decayModifier(0.5); - food.grain(0.1); - food.saturation(0.5); - }); - - event.foodItem("tfg:sunflower_product", (food) => { - food.decayModifier(0.5); - }); - - // Amber Roots - event.foodItem("betterend:amber_root_product", (food) => { - food.hunger(4); - food.decayModifier(1); - food.saturation(1); - food.grain(3); - }); - - // Blossom Berries - event.foodItem("betterend:blossom_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(7.5); - food.fruit(2.1); - }); - - // Cave Pumpkin - event.foodItem("betterend:cave_pumpkin", (food) => { - food.hunger(4); - food.saturation(0); - food.decayModifier(0.5); - }); - - event.foodItem("betterend:cave_pumpkin_chunks", (food) => { - food.hunger(4); - food.saturation(1); - food.decayModifier(2.5); - food.water(5); - food.fruit(0.8); - }); - - event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie", (food) => { - food.hunger(4); - food.saturation(2.8); - food.decayModifier(1.5); - food.water(5); - food.protein(1); - food.fruit(5); - food.grain(4); - food.dairy(1); - }); - - // Chorus Mushroom - event.foodItem("betterend:chorus_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:chorus_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2.1); - food.decayModifier(1.5); - food.vegetables(2.5); - }); - - // Shadow Berry - event.foodItem("betterend:shadow_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(5); - food.fruit(1.9); - }); - - event.foodItem("betterend:shadow_berry_cooked", (food) => { - food.hunger(5); - food.decayModifier(1); - food.saturation(2); - food.fruit(2.2); - }); - - // Bolux Mushroom - event.foodItem("betterend:bolux_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:bolux_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2); - food.decayModifier(1.5); - food.vegetables(2.4); - }); - - // Dino Nuggets - event.foodItem('tfg:food/raw_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(1); - food.decayModifier(3); - }); - - event.foodItem('tfg:food/cooked_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(3); - food.saturation(2); - food.decayModifier(1.5); - }); - - // Ice Soup - event.foodItem("tfg:food/ice_soup", (food) => { - food.hunger(1); - food.water(20); - food.decayModifier(0); - }); - - // Fries - event.foodItem('tfg:food/raw_fries', (food) => { - food.hunger(1); - food.decayModifier(3); - food.vegetables(0.25); - }); - - event.foodItem('tfg:food/cooked_fries', (food) => { - food.hunger(2); - food.decayModifier(1.5); - food.vegetables(0.6); - food.saturation(2); - }); - - // Cheese Curds - event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { - food.hunger(1); - food.decayModifier(1.3); - food.dairy(1); - food.saturation(1); - }); - - event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { - food.hunger(3); - food.decayModifier(0.8); - food.dairy(1.2); - food.saturation(2); - food.grain(0.5); - }); - - // Hamburgers - event.foodItem('tfg:food/raw_burger_patty', (food) => { - food.hunger(2); - food.decayModifier(2.3); - food.protein(2); - }); - - event.foodItem('tfg:food/cooked_burger_patty', (food) => { - food.hunger(4); - food.decayModifier(2); - food.protein(2.5); - food.saturation(2); - }); - - event.foodItem('tfg:food/brioche_dough', (food) => { - food.hunger(1.5); - food.decayModifier(2.3); - }); - - event.foodItem('tfg:food/brioche_bun', (food) => { - food.hunger(3.5); - food.decayModifier(1.5); - food.grain(1.5); - food.dairy(0.5); - food.saturation(1); - }); - - event.foodItem('tfg:food/hamburger', (food) => { - food.type("dynamic"); - }); - - event.foodItem('tfg:food/cheeseburger', (food) => { - food.type("dynamic"); - }); - - // Poutine - event.foodItem('tfg:food/poutine', (food) => { - food.type("dynamic_bowl"); - }); - - // Oatmeal - event.foodItem('tfg:food/oatmeal', (food) => { - food.type("dynamic_bowl"); - }); - - // Biochem Items - event.foodItem("tfg:progenitor_cells", (food) => { - food.decayModifier(1); - }); - event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - - // Instant Mac - event.foodItem('tfg:food/raw_instant_mac', (food) => { - food.hunger(2); - food.decayModifier(0.2); - }); - - event.foodItem('tfg:food/cooked_instant_mac', (food) => { - food.hunger(3.5); - food.decayModifier(1.6); - food.grain(1.5); - food.dairy(2.5); - food.protein(0.8); - food.saturation(1.8); - }); - - //#region Drinkables - // Proto Growth Medium - event.drinkable("tfg:proto_growth_medium", (data) => { - data.thirst(10); - data.food(food => { - food.dairy(5); - food.protein(1); - }); - data.effect("minecraft:absorption", (effect) => { - effect.amplifier(2); - effect.chance(0.25); - effect.duration(1200); - }); - }); - - // Semiheavy Ammoniacal Water - event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { - data.thirst(10); - data.effect("minecraft:nausea", (effect) => { - effect.chance(0.5); - effect.duration(200); - }); - }); - - // Rich Stock - event.drinkable('tfg:rich_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Light Stock - event.drinkable('tfg:light_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Brown Gravy - event.drinkable('tfg:brown_gravy', (data) => { - data.thirst(2); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.3); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.5); - food.vegetables(0.5); - food.grain(0.25); - }); - }); - - //#endregion -} - -//#endregion -//#region Crop Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGCropRanges(event) { - // Earth - event.climateRange((climate) => { - climate.minHydration(20); - climate.maxHydration(80); - climate.minTemperature(5); - climate.maxTemperature(40); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "tfg:sunflower"); - - event.climateRange((climate) => { - climate.minHydration(10); - climate.maxHydration(60); - climate.minTemperature(-5); - climate.maxTemperature(25); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(1.5); - }, "tfg:rapeseed"); - - event.climateRange((climate) => { - climate.minHydration(15); - climate.maxHydration(65); - climate.minTemperature(-8); - climate.maxTemperature(25); - climate.hydrationWiggle(6.5); - climate.temperatureWiggle(3); - }, "tfg:flax"); - - // Mars - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:amber_root"); - - event.climateRange((climate) => { - climate.minHydration(70); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:blossom_berry"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:bolux_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(60); - climate.minTemperature(-100); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:cave_pumpkin_plant"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:chorus_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(50); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:shadow_berry"); -} - -//#endregion -//#region Planter Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFLPlanters(event) { - event.firmalifePlantable( - "tfg:sunflower_seeds", - "large", - 0, - 3, - 0.15, - "tfg:sunflower_seeds", - "tfg:sunflower_product", - "nitrogen", - [ - "tfg:block/crop/sunflower_greenhouse_0", - "tfg:block/crop/sunflower_greenhouse_1", - "tfg:block/crop/sunflower_greenhouse_2", - "tfg:block/crop/sunflower_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:rapeseed_seeds", - "large", - 0, - 3, - 0.15, - "tfg:rapeseed_seeds", - "tfg:rapeseed_product", - "phosphorous", - [ - "tfg:block/crop/rapeseed_greenhouse_0", - "tfg:block/crop/rapeseed_greenhouse_1", - "tfg:block/crop/rapeseed_greenhouse_2", - "tfg:block/crop/rapeseed_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:flax_seeds", - "large", - 0, - 3, - 0.2, - "tfg:flax_seeds", - "tfg:flax_product", - "nitrogen", - [ - "tfg:block/crop/flax_age_0", - "tfg:block/crop/flax_age_1", - "tfg:block/crop/flax_age_5_top", - "tfg:block/crop/flax_age_6_top" - ], - null - ); - - event.firmalifePlantable( - "betterend:amber_root_seeds", - "large", - 0, - 3, - 0.15, - "betterend:amber_root_seeds", - "betterend:amber_root_product", - "phosphorous", - [ - "betterend:block/amber_root_0", - "betterend:block/amber_root_1", - "betterend:block/amber_root_2", - "betterend:block/amber_root_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:blossom_berry_seeds", - "large", - 0, - 3, - 0.15, - "betterend:blossom_berry_seeds", - "betterend:blossom_berry_product", - "potassium", - [ - "betterend:block/blossom_berry_seed_0", - "betterend:block/blossom_berry_seed_1", - "betterend:block/blossom_berry_seed_2", - "betterend:block/blossom_berry_seed_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:bolux_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:bolux_mushroom_seeds", - "betterend:bolux_mushroom_product", - "phosphorous", - [ - "betterend:block/bolux_mushroom_greenhouse_0", - "betterend:block/bolux_mushroom_greenhouse_1", - "betterend:block/bolux_mushroom_greenhouse_2", - "betterend:block/bolux_mushroom_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:chorus_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:chorus_mushroom_seeds", - "betterend:chorus_mushroom_product", - "phosphorous", - [ - "betterend:block/chorus_mushroom_0", - "betterend:block/chorus_mushroom_1", - "betterend:block/chorus_mushroom_2", - "betterend:block/chorus_mushroom_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:cave_pumpkin_plant_seeds", - "hanging", - 2, - 3, - 0.15, - "betterend:cave_pumpkin_plant_seeds", - "betterend:cave_pumpkin", - "phosphorous", - [ - "betterend:block/cave_pumpkin_greenhouse_0", - "betterend:block/cave_pumpkin_greenhouse_1", - "betterend:block/cave_pumpkin_greenhouse_2", - "betterend:block/cave_pumpkin_greenhouse_3" - ], - "betterend:block/cave_pumpkin_top" - ); - - event.firmalifePlantable( - "betterend:shadow_berry_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:shadow_berry_seeds", - "betterend:shadow_berry_product", - "potassium", - [ - "betterend:block/shadow_berry_greenhouse_0", - "betterend:block/shadow_berry_greenhouse_1", - "betterend:block/shadow_berry_greenhouse_2", - "betterend:block/shadow_berry_greenhouse_3" - ], - null - ); -} - -//#endregion -//#region Fauna Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFauna(event) { - - // -108 is the average at z=-4k to z=-6k, which feels like a big enough band - event.fauna( - climate => { - climate.maxTemp(-108) - climate.fuzzy(false) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:glacian_ram") - - event.fauna( - climate => { - climate.minTemp(-102) - climate.maxTemp(-30) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:sniffer") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:wraptor") - - event.fauna( - climate => { - climate.minTemp(-108) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:springling") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:goober") - - event.fauna( - climate => { - climate.minTemp(-97) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:walker") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:eater") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:crusher") - - event.fauna( - climate => { - climate.minTemp(-105) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:soarer") - - event.fauna( - climate => { - climate.minTemp(-106) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:glider") -} - //#endregion \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.interactions.js b/kubejs/server_scripts/tfg/events.interactions.js new file mode 100644 index 000000000..c7ca21bf3 --- /dev/null +++ b/kubejs/server_scripts/tfg/events.interactions.js @@ -0,0 +1,521 @@ + +/** + * @typedef {Object} BrickVariant + * @property {string} brick_type - The name of the brick variant. + * @property {string|null} brick - Main brick block ID. + * @property {string|null} brick_stairs - Brick stairs block ID. + * @property {string|null} brick_slab - Brick slab block ID. + * @property {string|null} brick_wall - Brick wall block ID. + * @property {string|null} cracked_brick - Cracked brick block ID. + * @property {string|null} cracked_stairs - Cracked brick stairs block ID. + * @property {string|null} cracked_slab - Cracked brick slab block ID. + * @property {string|null} cracked_wall - Cracked brick wall block ID. + * @property {string|null} mossy_brick - Mossy brick block ID. + * @property {string|null} mossy_stairs - Mossy brick stairs block ID. + * @property {string|null} mossy_slab - Mossy brick slab block ID. + * @property {string|null} mossy_wall - Mossy brick wall block ID. + * @property {string|null} smooth_brick - Smooth brick block ID. + * @property {string|null} smooth_stairs - Smooth brick stairs block ID. + * @property {string|null} smooth_slab - Smooth brick slab block ID. + * @property {string|null} smooth_wall - Smooth brick wall block ID. + * @property {string|null} chiseled_brick - Chiseled brick block ID. + */ + +const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] + +// #region BRICK_INDEX +/** @type {BrickVariant[]} */ +global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + brick_type: tfc_stone, + brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, + cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, + mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, + smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, + chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` +})); +(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { + global.BRICK_INDEX.push({ + brick_type: create_brick, + brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, + cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, + mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, + smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, + chiseled_brick: `createdeco:tiled_${create_brick}_bricks` + }) +}); +global.BRICK_INDEX = global.BRICK_INDEX.concat([ + // { brick_type: '', + // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', + // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', + // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', + // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', + // chiseled_brick: '' }, + + { + brick_type: 'red', + brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', + cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', + mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', + smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', + chiseled_brick: 'createdeco:tiled_red_bricks' + }, + + { + brick_type: 'light_concrete', + brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_light_concrete' + }, + + { + brick_type: 'dark_concrete', + brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_dark_concrete' + }, + + { + brick_type: 'deepslate', + brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', + cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', + mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'deepslate_tiles', + brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', + cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'blackstone', + brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', + cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', + smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', + chiseled_brick: 'minecraft:chiseled_polished_blackstone' + }, + + { + brick_type: 'dripstone', + brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', + cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', + smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', + chiseled_brick: 'create:small_dripstone_bricks' + }, + + { + brick_type: 'crackrack', + brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', + cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', + mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', + smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', + chiseled_brick: 'minecraft:chiseled_nether_bricks' + }, + + { + brick_type: 'moon_deepslate', + brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', + cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', + mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', + smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', + chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' + }, + + { + brick_type: 'permafrost', + brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', + cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', + mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', + smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', + chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' + }, + + { + brick_type: 'red_granite', + brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', + cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', + mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', + smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', + chiseled_brick: 'gtceu:chiseled_red_granite' + }, + + { + brick_type: 'venus_sandstone', + brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', + cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: null + }, + + { + brick_type: 'stone', + brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', + cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', + smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', + chiseled_brick: 'minecraft:chiseled_stone_bricks' + } +]); + +global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + brick_type: stone, + brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, + cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, + mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, + smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, + chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` + } +))) + +// #endregion BRICK_INDEX + +// #region COBBLE_INDEX +global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + cobble_type: tfc_stone, + block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, + mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` +})); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ + { + cobble_type: 'deepslate', + block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' + }, + + { + cobble_type: 'blackstone', + block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' + }, + + { + cobble_type: 'dripstone', + block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' + }, + + { + cobble_type: 'crackrack', + block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', + mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' + }, + + { + cobble_type: 'moon_deepslate', + block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' + }, + + { + cobble_type: 'permafrost', + block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', + mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' + }, + + { + cobble_type: 'red_granite', + block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', + mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' + }, + + { + cobble_type: 'stone', + block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', + mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' + } +]); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + cobble_type: stone, + block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, + mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` + } +))) + +// #endregion COBBLE_INDEX + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + if (!player.crouching) return; + + let state = block.getBlockState().toString(); + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(state.indexOf('[')); + } else { + state = ''; + } + + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing(); + + if (!player.isCreative() && damageTool) { + item.damageValue++; + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + item.count--; + } + } + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); + server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); +}; + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} outputItem -Item ID of item to receive + * @param {number} outputCount -Number of items to be returned + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + if (!player.crouching) return; + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); + +} +/** + * Function for replacing a block with another block by crouch-right-clicking with an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} itemId -Item ID of the consumed item. Accepts Tags. + * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. + * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (itemId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== itemId) return; + } + if (!player.crouching) return; + + let state = block.getBlockState().toString() + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(block.getBlockState().toString().indexOf('[')); + } else { + state = '' + } + + if (!player.isCreative() && consumeItem === true) { + if (item.count < consumeAmount) { + player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) + return; + } + item.count -= consumeAmount; + } + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing() + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) +}; + +// Declare Events +BlockEvents.rightClicked(event => { + //Brick index events + for (const b of global.BRICK_INDEX) { + //brick -> cracked + transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //brick -> mossy + transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //cracked -> mossy + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cracked + transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //mossy -> brick + transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + //cracked -> brick + transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + // brick -> smooth + transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + // smooth -> brick + transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + } + + //Cobble index events + for (const c of global.COBBLE_INDEX) { + //cobble -> mossy + transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cobble + transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + } + + //Misc Events + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + +}); + +// Makes scythes, hoes, and knives take damage when cutting grass +BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { + let player = event.player; + let toolUsed = player.mainHandItem; + + if (!toolUsed.hasTag('tfc:sharp_tools')) { + return; + } + + if (!player.isCreative()) { + toolUsed.damageValue++; + if (toolUsed.damageValue >= toolUsed.maxDamage) { + event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + toolUsed.count--; + } + } +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.js b/kubejs/server_scripts/tfg/events.js index 37f1b7963..4c19dd387 100644 --- a/kubejs/server_scripts/tfg/events.js +++ b/kubejs/server_scripts/tfg/events.js @@ -11,110 +11,6 @@ TFGServerEvents.dimensionalPowerConsumption(event => { event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000); }); -//#region Medicine - -//Pills & Tablets -const pill_event = [ - 'haste', - 'luck', - 'night_vision', - 'poison', - 'regeneration', - 'slowness', - 'speed', - 'water_breathing', - 'weakness', -]; - -pill_event.forEach(pill_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_pill`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_tablet`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_pill`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_tablet`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - event.player.removeEffect('minecraft:wither') - event.player.removeEffect('minecraft:weakness') - event.player.removeEffect('minecraft:slowness') - event.player.removeEffect('minecraft:mining_fatigue') - event.player.removeEffect('minecraft:nausea') - event.player.removeEffect('minecraft:blindness') - event.player.removeEffect('minecraft:hunger') - event.player.removeEffect('minecraft:bad_omen') - event.player.removeEffect('minecraft:darkness') - event.player.removeEffect('minecraft:unluck') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -//salvos -const salvo_event = [ - 'fire_resistance', - 'invisibility', - 'luck', - 'resistance', -]; - -salvo_event.forEach(salvo_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${salvo_event}_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:absorption_salvo`) return - item.count-- - player.addItemCooldown(item, 200) - server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:instant_health_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -//#endregion - // Vase Sounds global.MINECRAFT_DYE_NAMES.forEach(color => { BlockEvents.rightClicked(event => { @@ -158,623 +54,3 @@ function getTFGPersistentDataRoot(player) { return player.persistentData.getCompound("tfg:custom_data") } -//#region Fishing Net -const fish = [ - 'cod', - 'crappie', - 'jellyfish', - 'lake_trout', - 'largemouth_bass', - 'rainbow_trout', - 'salmon', - 'smallmouth_bass', - 'tropical_fish', - 'bluegill' -]; - -const shellfish = [ - 'lobster', - 'isopod', - 'crayfish' -]; - -//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. -const tiers = [ - 'wood', - 'brass', - 'rose_gold', - 'sterling_silver', - 'invar', - 'tin_alloy', - 'cupronickel', - 'magnalium' -]; - -//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. -tiers.forEach(tier => { - fish.forEach(fish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${fish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give(`tfc:food/${fish}`) - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Shellfish Exception - shellfish.forEach(shellfish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${shellfish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('tfc:food/shellfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Pufferfish Exception - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== 'tfc:pufferfish') return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('minecraft:pufferfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) -}) -//#endregion - -//#region Block Interactions - -/** - * @typedef {Object} BrickVariant - * @property {string} brick_type - The name of the brick variant. - * @property {string|null} brick - Main brick block ID. - * @property {string|null} brick_stairs - Brick stairs block ID. - * @property {string|null} brick_slab - Brick slab block ID. - * @property {string|null} brick_wall - Brick wall block ID. - * @property {string|null} cracked_brick - Cracked brick block ID. - * @property {string|null} cracked_stairs - Cracked brick stairs block ID. - * @property {string|null} cracked_slab - Cracked brick slab block ID. - * @property {string|null} cracked_wall - Cracked brick wall block ID. - * @property {string|null} mossy_brick - Mossy brick block ID. - * @property {string|null} mossy_stairs - Mossy brick stairs block ID. - * @property {string|null} mossy_slab - Mossy brick slab block ID. - * @property {string|null} mossy_wall - Mossy brick wall block ID. - * @property {string|null} smooth_brick - Smooth brick block ID. - * @property {string|null} smooth_stairs - Smooth brick stairs block ID. - * @property {string|null} smooth_slab - Smooth brick slab block ID. - * @property {string|null} smooth_wall - Smooth brick wall block ID. - * @property {string|null} chiseled_brick - Chiseled brick block ID. - */ - -const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] - -// #region BRICK_INDEX -/** @type {BrickVariant[]} */ -global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - brick_type: tfc_stone, - brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, - cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, - mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, - smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, - chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` -})); -(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { - global.BRICK_INDEX.push({ - brick_type: create_brick, - brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, - cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, - mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, - smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, - chiseled_brick: `createdeco:tiled_${create_brick}_bricks` - }) -}); -global.BRICK_INDEX = global.BRICK_INDEX.concat([ - // { brick_type: '', - // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', - // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', - // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', - // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', - // chiseled_brick: '' }, - - { - brick_type: 'red', - brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', - cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', - mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', - smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', - chiseled_brick: 'createdeco:tiled_red_bricks' - }, - - { - brick_type: 'light_concrete', - brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_light_concrete' - }, - - { - brick_type: 'dark_concrete', - brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_dark_concrete' - }, - - { - brick_type: 'deepslate', - brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', - cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', - mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'deepslate_tiles', - brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', - cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'blackstone', - brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', - cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', - smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', - chiseled_brick: 'minecraft:chiseled_polished_blackstone' - }, - - { - brick_type: 'dripstone', - brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', - cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', - smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', - chiseled_brick: 'create:small_dripstone_bricks' - }, - - { - brick_type: 'crackrack', - brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', - cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', - mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', - smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', - chiseled_brick: 'minecraft:chiseled_nether_bricks' - }, - - { - brick_type: 'moon_deepslate', - brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', - cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', - mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', - smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', - chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' - }, - - { - brick_type: 'permafrost', - brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', - cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', - mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', - smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', - chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' - }, - - { - brick_type: 'red_granite', - brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', - cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', - mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', - smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', - chiseled_brick: 'gtceu:chiseled_red_granite' - }, - - { - brick_type: 'venus_sandstone', - brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', - cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: null - }, - - { - brick_type: 'stone', - brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', - cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', - smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', - chiseled_brick: 'minecraft:chiseled_stone_bricks' - } -]); - -global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - brick_type: stone, - brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, - cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, - mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, - smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, - chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` - } -))) - -// #endregion BRICK_INDEX - -// #region COBBLE_INDEX -global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - cobble_type: tfc_stone, - block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, - mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` -})); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ - { - cobble_type: 'deepslate', - block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' - }, - - { - cobble_type: 'blackstone', - block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' - }, - - { - cobble_type: 'dripstone', - block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' - }, - - { - cobble_type: 'crackrack', - block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', - mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' - }, - - { - cobble_type: 'moon_deepslate', - block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' - }, - - { - cobble_type: 'permafrost', - block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', - mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' - }, - - { - cobble_type: 'red_granite', - block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', - mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' - }, - - { - cobble_type: 'stone', - block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', - mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' - } -]); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - cobble_type: stone, - block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, - mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` - } -))) - -// #endregion COBBLE_INDEX - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - if (!player.crouching) return; - - let state = block.getBlockState().toString(); - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(state.indexOf('[')); - } else { - state = ''; - } - - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing(); - - if (!player.isCreative() && damageTool) { - item.damageValue++; - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - item.count--; - } - } - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); - server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); -}; - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} outputItem -Item ID of item to receive - * @param {number} outputCount -Number of items to be returned - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - if (!player.crouching) return; - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); - -} -/** - * Function for replacing a block with another block by crouch-right-clicking with an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} itemId -Item ID of the consumed item. Accepts Tags. - * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. - * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (itemId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== itemId) return; - } - if (!player.crouching) return; - - let state = block.getBlockState().toString() - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(block.getBlockState().toString().indexOf('[')); - } else { - state = '' - } - - if (!player.isCreative() && consumeItem === true) { - if (item.count < consumeAmount) { - player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) - return; - } - item.count -= consumeAmount; - } - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing() - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) -}; - -// Declare Events -BlockEvents.rightClicked(event => { - //Brick index events - for (const b of global.BRICK_INDEX) { - //brick -> cracked - transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //brick -> mossy - transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //cracked -> mossy - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cracked - transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //mossy -> brick - transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - //cracked -> brick - transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - // brick -> smooth - transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - // smooth -> brick - transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - } - - //Cobble index events - for (const c of global.COBBLE_INDEX) { - //cobble -> mossy - transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cobble - transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - } - - //Misc Events - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - -}); - -// Makes scythes, hoes, and knives take damage when cutting grass -BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { - let player = event.player; - let toolUsed = player.mainHandItem; - - if (!toolUsed.hasTag('tfc:sharp_tools')) { - return; - } - - if (!player.isCreative()) { - toolUsed.damageValue++; - if (toolUsed.damageValue >= toolUsed.maxDamage) { - event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - toolUsed.count--; - } - } -}); - -//#endregion diff --git a/kubejs/server_scripts/tfg/food/data.crops.js b/kubejs/server_scripts/tfg/food/data.crops.js new file mode 100644 index 000000000..af2a55d2f --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.crops.js @@ -0,0 +1,88 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGCropRanges(event) { + // Earth + event.climateRange((climate) => { + climate.minHydration(20); + climate.maxHydration(80); + climate.minTemperature(5); + climate.maxTemperature(40); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "tfg:sunflower"); + + event.climateRange((climate) => { + climate.minHydration(10); + climate.maxHydration(60); + climate.minTemperature(-5); + climate.maxTemperature(25); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(1.5); + }, "tfg:rapeseed"); + + event.climateRange((climate) => { + climate.minHydration(15); + climate.maxHydration(65); + climate.minTemperature(-8); + climate.maxTemperature(25); + climate.hydrationWiggle(6.5); + climate.temperatureWiggle(3); + }, "tfg:flax"); + + // Mars + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:amber_root"); + + event.climateRange((climate) => { + climate.minHydration(70); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:blossom_berry"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:bolux_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(60); + climate.minTemperature(-100); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:cave_pumpkin_plant"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:chorus_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(50); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:shadow_berry"); +} diff --git a/kubejs/server_scripts/tfg/food/data.food.js b/kubejs/server_scripts/tfg/food/data.food.js new file mode 100644 index 000000000..def08ba3d --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.food.js @@ -0,0 +1,583 @@ +"use strict"; + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFoodData(event) { + + // Ice shavings + event.foodItem('firmalife:ice_shavings', food => { + food.water(5) + food.decayModifier(0) + }) + + // Birt + event.foodItem("tfg:food/raw_birt", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_birt", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Crawlermari + event.foodItem("tfg:food/raw_crawlermari", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crawlermari", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Limpet + event.foodItem("tfg:food/raw_limpet", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_limpet", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Moon Rabbit + event.foodItem("tfg:food/raw_moon_rabbit", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Glacian Mutton + event.foodItem("tfg:food/raw_glacian_mutton", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Sniffer Beef + event.foodItem("tfg:food/raw_sniffer_beef", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Wraptor + event.foodItem("tfg:food/raw_wraptor", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_wraptor", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Springling Collar + event.foodItem("tfg:food/raw_springling_collar", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_springling_collar", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Surfer Steak + event.foodItem("tfg:food/raw_surfer_steak", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_surfer_steak", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Cruncher Ribs + event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Long Pig Filet + event.foodItem("tfg:food/raw_long_pig_filet", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { + food.hunger(2); + food.saturation(2); + food.protein(2); + food.decayModifier(2.25); + }); + + // Stackatick Chunks + event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/raw_stickastackatick", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_stickastackatick", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Walker Steak + event.foodItem("tfg:food/raw_walker_steak", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_walker_steak", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Glider Wings + event.foodItem("tfg:food/raw_glider_wings", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glider_wings", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.75); + food.decayModifier(2.25); + }); + + // Soarer + event.foodItem("tfg:food/raw_whole_soarer", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_whole_soarer", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3.1); + food.decayModifier(2.25); + }); + + // Crusher Meat + event.foodItem("tfg:food/raw_crusher_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crusher_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Goober Meat + event.foodItem("tfg:food/raw_goober_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + food.water(1); + }); + + event.foodItem("tfg:food/cooked_goober_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // high-tech food + global.FOOD_FRUIT.forEach((fruit) => { + event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { + food.hunger(4); + food.saturation(fruit.saturation); + food.water(0); + food.fruit(fruit.fruit); + food.decayModifier(fruit.decay); + }); + }); + + event.foodItem("tfg:food/calorie_paste", (food) => { + food.hunger(6); + food.saturation(4); + food.decayModifier(4.5); + food.grain(0.1); + food.vegetables(0.2); + food.protein(0.2); + }); + + event.foodItem("tfg:food/meal_bag", (food) => { + food.type("dynamic"); + }); + + // Sunflower products + event.foodItem("tfg:roasted_sunflower_seeds", (food) => { + food.hunger(4); + food.decayModifier(0.5); + food.grain(0.1); + food.saturation(0.5); + }); + + event.foodItem("tfg:sunflower_product", (food) => { + food.decayModifier(0.5); + }); + + // Amber Roots + event.foodItem("betterend:amber_root_product", (food) => { + food.hunger(4); + food.decayModifier(1); + food.saturation(1); + food.grain(3); + }); + + // Blossom Berries + event.foodItem("betterend:blossom_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(7.5); + food.fruit(2.1); + }); + + // Cave Pumpkin + event.foodItem("betterend:cave_pumpkin", (food) => { + food.hunger(4); + food.saturation(0); + food.decayModifier(0.5); + }); + + event.foodItem("betterend:cave_pumpkin_chunks", (food) => { + food.hunger(4); + food.saturation(1); + food.decayModifier(2.5); + food.water(5); + food.fruit(0.8); + }); + + event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie", (food) => { + food.hunger(4); + food.saturation(2.8); + food.decayModifier(1.5); + food.water(5); + food.protein(1); + food.fruit(5); + food.grain(4); + food.dairy(1); + }); + + // Chorus Mushroom + event.foodItem("betterend:chorus_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:chorus_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2.1); + food.decayModifier(1.5); + food.vegetables(2.5); + }); + + // Shadow Berry + event.foodItem("betterend:shadow_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(5); + food.fruit(1.9); + }); + + event.foodItem("betterend:shadow_berry_cooked", (food) => { + food.hunger(5); + food.decayModifier(1); + food.saturation(2); + food.fruit(2.2); + }); + + // Bolux Mushroom + event.foodItem("betterend:bolux_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:bolux_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2); + food.decayModifier(1.5); + food.vegetables(2.4); + }); + + // Dino Nuggets + event.foodItem('tfg:food/raw_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(1); + food.decayModifier(3); + }); + + event.foodItem('tfg:food/cooked_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(3); + food.saturation(2); + food.decayModifier(1.5); + }); + + // Ice Soup + event.foodItem("tfg:food/ice_soup", (food) => { + food.hunger(1); + food.water(20); + food.decayModifier(0); + }); + + // Fries + event.foodItem('tfg:food/raw_fries', (food) => { + food.hunger(1); + food.decayModifier(3); + food.vegetables(0.25); + }); + + event.foodItem('tfg:food/cooked_fries', (food) => { + food.hunger(2); + food.decayModifier(1.5); + food.vegetables(0.6); + food.saturation(2); + }); + + // Cheese Curds + event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { + food.hunger(1); + food.decayModifier(1.3); + food.dairy(1); + food.saturation(1); + }); + + event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { + food.hunger(3); + food.decayModifier(0.8); + food.dairy(1.2); + food.saturation(2); + food.grain(0.5); + }); + + // Hamburgers + event.foodItem('tfg:food/raw_burger_patty', (food) => { + food.hunger(2); + food.decayModifier(2.3); + food.protein(2); + }); + + event.foodItem('tfg:food/cooked_burger_patty', (food) => { + food.hunger(4); + food.decayModifier(2); + food.protein(2.5); + food.saturation(2); + }); + + event.foodItem('tfg:food/brioche_dough', (food) => { + food.hunger(1.5); + food.decayModifier(2.3); + }); + + event.foodItem('tfg:food/brioche_bun', (food) => { + food.hunger(3.5); + food.decayModifier(1.5); + food.grain(1.5); + food.dairy(0.5); + food.saturation(1); + }); + + event.foodItem('tfg:food/hamburger', (food) => { + food.type("dynamic"); + }); + + event.foodItem('tfg:food/cheeseburger', (food) => { + food.type("dynamic"); + }); + + // Poutine + event.foodItem('tfg:food/poutine', (food) => { + food.type("dynamic_bowl"); + }); + + // Oatmeal + event.foodItem('tfg:food/oatmeal', (food) => { + food.type("dynamic_bowl"); + }); + + // Biochem Items + event.foodItem("tfg:progenitor_cells", (food) => { + food.decayModifier(1); + }); + event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + + // Instant Mac + event.foodItem('tfg:food/raw_instant_mac', (food) => { + food.hunger(2); + food.decayModifier(0.2); + }); + + event.foodItem('tfg:food/cooked_instant_mac', (food) => { + food.hunger(3.5); + food.decayModifier(1.6); + food.grain(1.5); + food.dairy(2.5); + food.protein(0.8); + food.saturation(1.8); + }); + + //#region Drinkables + // Proto Growth Medium + event.drinkable("tfg:proto_growth_medium", (data) => { + data.thirst(10); + data.food(food => { + food.dairy(5); + food.protein(1); + }); + data.effect("minecraft:absorption", (effect) => { + effect.amplifier(2); + effect.chance(0.25); + effect.duration(1200); + }); + }); + + // Semiheavy Ammoniacal Water + event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { + data.thirst(10); + data.effect("minecraft:nausea", (effect) => { + effect.chance(0.5); + effect.duration(200); + }); + }); + + // Rich Stock + event.drinkable('tfg:rich_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Light Stock + event.drinkable('tfg:light_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Brown Gravy + event.drinkable('tfg:brown_gravy', (data) => { + data.thirst(2); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.3); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.5); + food.vegetables(0.5); + food.grain(0.25); + }); + }); + + //#endregion +} diff --git a/kubejs/server_scripts/tfg/food/data.planters.js b/kubejs/server_scripts/tfg/food/data.planters.js new file mode 100644 index 000000000..e694e6ca7 --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.planters.js @@ -0,0 +1,167 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFLPlanters(event) { + event.firmalifePlantable( + "tfg:sunflower_seeds", + "large", + 0, + 3, + 0.15, + "tfg:sunflower_seeds", + "tfg:sunflower_product", + "nitrogen", + [ + "tfg:block/crop/sunflower_greenhouse_0", + "tfg:block/crop/sunflower_greenhouse_1", + "tfg:block/crop/sunflower_greenhouse_2", + "tfg:block/crop/sunflower_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:rapeseed_seeds", + "large", + 0, + 3, + 0.15, + "tfg:rapeseed_seeds", + "tfg:rapeseed_product", + "phosphorous", + [ + "tfg:block/crop/rapeseed_greenhouse_0", + "tfg:block/crop/rapeseed_greenhouse_1", + "tfg:block/crop/rapeseed_greenhouse_2", + "tfg:block/crop/rapeseed_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:flax_seeds", + "large", + 0, + 3, + 0.2, + "tfg:flax_seeds", + "tfg:flax_product", + "nitrogen", + [ + "tfg:block/crop/flax_age_0", + "tfg:block/crop/flax_age_1", + "tfg:block/crop/flax_age_5_top", + "tfg:block/crop/flax_age_6_top" + ], + null + ); + + event.firmalifePlantable( + "betterend:amber_root_seeds", + "large", + 0, + 3, + 0.15, + "betterend:amber_root_seeds", + "betterend:amber_root_product", + "phosphorous", + [ + "betterend:block/amber_root_0", + "betterend:block/amber_root_1", + "betterend:block/amber_root_2", + "betterend:block/amber_root_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:blossom_berry_seeds", + "large", + 0, + 3, + 0.15, + "betterend:blossom_berry_seeds", + "betterend:blossom_berry_product", + "potassium", + [ + "betterend:block/blossom_berry_seed_0", + "betterend:block/blossom_berry_seed_1", + "betterend:block/blossom_berry_seed_2", + "betterend:block/blossom_berry_seed_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:bolux_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:bolux_mushroom_seeds", + "betterend:bolux_mushroom_product", + "phosphorous", + [ + "betterend:block/bolux_mushroom_greenhouse_0", + "betterend:block/bolux_mushroom_greenhouse_1", + "betterend:block/bolux_mushroom_greenhouse_2", + "betterend:block/bolux_mushroom_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:chorus_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:chorus_mushroom_seeds", + "betterend:chorus_mushroom_product", + "phosphorous", + [ + "betterend:block/chorus_mushroom_0", + "betterend:block/chorus_mushroom_1", + "betterend:block/chorus_mushroom_2", + "betterend:block/chorus_mushroom_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:cave_pumpkin_plant_seeds", + "hanging", + 2, + 3, + 0.15, + "betterend:cave_pumpkin_plant_seeds", + "betterend:cave_pumpkin", + "phosphorous", + [ + "betterend:block/cave_pumpkin_greenhouse_0", + "betterend:block/cave_pumpkin_greenhouse_1", + "betterend:block/cave_pumpkin_greenhouse_2", + "betterend:block/cave_pumpkin_greenhouse_3" + ], + "betterend:block/cave_pumpkin_top" + ); + + event.firmalifePlantable( + "betterend:shadow_berry_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:shadow_berry_seeds", + "betterend:shadow_berry_product", + "potassium", + [ + "betterend:block/shadow_berry_greenhouse_0", + "betterend:block/shadow_berry_greenhouse_1", + "betterend:block/shadow_berry_greenhouse_2", + "betterend:block/shadow_berry_greenhouse_3" + ], + null + ); +} diff --git a/kubejs/server_scripts/tfg/food/recipes.biomass.js b/kubejs/server_scripts/tfg/food/recipes.biomass.js new file mode 100644 index 000000000..65aeb4fcf --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.biomass.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGBiomassRecipes(event) { + + //#region Biomass + + event.recipes.gtceu.brewery('biomass_from_tfc_seeds') + .itemInputs('#tfc:seeds') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_food') + .itemInputs('#tfc:foods') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_plants') + .itemInputs('#tfc:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_moon_plants') + .itemInputs('#tfg:moon_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_mars_plants') + .itemInputs('#tfg:mars_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_corals') + .itemInputs('#tfc:corals') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_spider_eyes') + .itemInputs('minecraft:spider_eye') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_leaves') + .itemInputs('#minecraft:leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_minecraft_plants') + .itemInputs('#createaddition:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_wart_blocks') + .itemInputs('#minecraft:wart_blocks') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 50)) + .duration(100) + .EUt(3) + + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + + //#endregion + + //#region Plant ball + + event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') + .itemInputs('4x #tfc:seeds') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + let food = Ingredient.of('#tfc:foods') + .subtract('minecraft:brown_mushroom') + .subtract('minecraft:red_mushroom') + .withCount(8) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_food') + .itemInputs(food) + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') + .itemInputs('4x #tfc:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_moon_plants') + .itemInputs('4x #tfg:moon_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_mars_plants') + .itemInputs('4x #tfg:mars_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') + .itemInputs('4x #tfc:corals') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_misc_plants') + .itemInputs('4x #createaddition:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') + .itemInputs('4x #minecraft:wart_blocks') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + //#endregion + + // Sugar + event.recipes.gtceu.centrifuge('sugar_from_sugarcane') + .itemInputs('tfc:food/sugarcane') + .inputFluids("#tfg:clean_water 600") + .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') + .duration(800) + .EUt(6) + + event.recipes.gtceu.centrifuge('sugar_from_honey') + .itemInputs('firmalife:raw_honey') + .itemOutputs('minecraft:sugar') + .duration(400) + .EUt(6) + + event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') + .itemInputs('5x tfc:food/beet') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(800) + .EUt(7) + .circuit(3) + + // Misc + event.recipes.gtceu.macerator('macerate_cocoa') + .itemInputs('firmalife:food/roasted_cocoa_beans') + .itemOutputs('gtceu:cocoa_dust') + .duration(100) + .EUt(2) + + event.recipes.gtceu.macerator('macerate_meat_to_dust') + .itemInputs('#tfc:foods/meats') + .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') + .duration(100) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/food/recipes.food.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.food.js rename to kubejs/server_scripts/tfg/food/recipes.food.js index afffe2bce..40bd7bc70 100644 --- a/kubejs/server_scripts/tfg/recipes.food.js +++ b/kubejs/server_scripts/tfg/food/recipes.food.js @@ -1720,87 +1720,5 @@ function registerTFGFoodRecipes(event) { }); //#endregion - //#region Machine Recipes - event.remove({id: 'gtceu:shaped/mv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/hv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/ev_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/iv_food_refrigerator'}) - - event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), - '2x gtceu:mv_electric_pump', - 'gtceu:mv_hermetic_casing', - '#gtceu:circuits/mv' - ) - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) - .itemOutputs('1x tfg:mv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), - '2x gtceu:hv_electric_pump', - 'gtceu:hv_hermetic_casing', - '#gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) - .itemOutputs('1x tfg:hv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), - '2x gtceu:ev_electric_pump', - 'gtceu:ev_hermetic_casing', - '#gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) - .itemOutputs('1x tfg:ev_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), - '2x gtceu:iv_electric_pump', - 'gtceu:iv_hermetic_casing', - '#gtceu:circuits/iv' - ) - .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) - .itemOutputs('1x tfg:iv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:electric_greenhouse', [ - 'ABA', - 'CDC', - 'BCB' - ], { - A: '#gtceu:circuits/mv', - B: '#forge:single_cables/copper', - C: 'tfc:compost', - D: 'gtceu:steel_machine_casing' - }).id('tfg:shaped/electric_greenhouse') - - //#endregion } diff --git a/kubejs/server_scripts/tfg/food/recipes.meal_bags.js b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js new file mode 100644 index 000000000..172352b7e --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js @@ -0,0 +1,108 @@ +"use strict"; + +function registerTFGMealBagRecipes(event) { + + // Food related + event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') + .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) + .itemOutputs('1x tfg:foil_pack') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('2x tfg:dry_ice') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .duration(160) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('10x tfg:dry_ice') + .duration(60) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') + .itemInputs('1x tfg:dry_ice') + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids(Fluid.of('gtceu:distilled_water', 10)) + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(2) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [ + { item: 'tfg:used_foil_pack' }], + result: { item: 'tfg:clean_foil_pack' } + }).id('tfg:ae_transform/clean_foil_pack') + + event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') + .id('tfg:splashing/clean_foil_pack') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/calorie_paste' + ]).id('tfg:shapeless/emptying/calorie_paste') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/meal_bag' + ]).id('tfg:shapeless/emptying/meal_bag') + + global.FOOD_FRUIT.forEach(fruit => { + event.shapeless('1x tfg:used_foil_pack', [ + `tfg:food/freeze_dried/${fruit.name}` + ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) + }) + + // Recycling + event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/food/recipes.refrigerators.js b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js new file mode 100644 index 000000000..97113c2aa --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js @@ -0,0 +1,113 @@ +"use strict"; + +function registerTFGRefrigeratorRecipes(event) { + + //#region Machine Recipes + + event.remove({ id: 'gtceu:shaped/mv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/hv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/ev_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/iv_food_refrigerator' }) + + event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), + '2x gtceu:mv_electric_pump', + 'gtceu:mv_hermetic_casing', + '#gtceu:circuits/mv' + ) + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) + .itemOutputs('1x tfg:mv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), + '2x gtceu:hv_electric_pump', + 'gtceu:hv_hermetic_casing', + '#gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) + .itemOutputs('1x tfg:hv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), + '2x gtceu:ev_electric_pump', + 'gtceu:ev_hermetic_casing', + '#gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) + .itemOutputs('1x tfg:ev_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), + '2x gtceu:iv_electric_pump', + 'gtceu:iv_hermetic_casing', + '#gtceu:circuits/iv' + ) + .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) + .itemOutputs('1x tfg:iv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + //#endregion + + // Refrigerants + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') + .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) + .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) + .duration(480) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) + .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') + .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) + .circuit(4) + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') + .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) + .circuit(4) + .duration(480) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.cracker('tfg:cracker/isobutane') + .inputFluids(Fluid.of('gtceu:butane', 4000)) + .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) + .circuit(4) + .duration(2400) + .EUt(GTValues.VA[GTValues.HV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.casings.js b/kubejs/server_scripts/tfg/machines/recipes.casings.js new file mode 100644 index 000000000..08dcf5c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.casings.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGCasingRecipes(event) { + + event.recipes.gtceu.assembler('steel_machine_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) + .itemOutputs('gtceu:steel_machine_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Railgun + global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { + const multiplier = index + 1 + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) + ) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) + .circuit(4) + .duration(400) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) + .circuit(7) + .duration(600) + .EUt(GTValues.VA[GTValues.MV]) + }) + + event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') + .itemInputs( + '2x #forge:plates/desh', + 'gtceu:mv_voltage_coil', + '5x tfg:dry_ice', + 'gtceu:nonconducting_casing' + ) + .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) + .itemOutputs('6x tfg:electromagnetic_accelerator') + .circuit(4) + .duration(800) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) + ) + .inputFluids(Fluid.of('gtceu:silicon', 72)) + .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') + .circuit(6) + .duration(20 * (2.5)) + .EUt(GTValues.VH[GTValues.LV]) + + // Solar + event.recipes.gtceu.assembler('basic_solar_casing') + .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') + .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('advanced_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') + .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('elite_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') + .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('tfg:reflector_from_lens') + .itemInputs( + '24x #forge:lenses', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 1296)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_inr') + .itemInputs( + '1x gtceu:neutron_reflector', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .itemOutputs('2x tfg:reflector') + .circuit(9) + .duration(20 * (20)) + .EUt(GTValues.VH[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_certus') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 488)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .dimension('ad_astra:moon') + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.MV]) + + // Moon + event.recipes.gtceu.assembler('iron_desh_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') + .itemOutputs('2x tfg:casings/machine_casing_iron_desh') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Evaporation + event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') + .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') + .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) + .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Ostrum Linear Acclerator + event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') + .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') + .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) + .itemOutputs('tfg:casings/machine_casing_mars') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('gtceu:atomic_casing') + .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') + .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) + .itemOutputs('2x gtceu:atomic_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Vacuum Intake + event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ + 'USU', + 'WZW', + 'UTU' + ], { + S: '#forge:tools/hammers', + T: '#forge:tools/wrenches', + W: '#forge:rotors/ultimet', + U: 'gtceu:ultimet_normal_item_pipe', + Z: 'gtceu:inert_machine_casing' + }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') + + event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') + .itemInputs( + '2x #forge:rotors/ultimet', + '4x gtceu:ultimet_normal_item_pipe', + '1x gtceu:inert_machine_casing') + .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') + .duration(50) + .EUt(GTValues.VH[GTValues.LV]) + .circuit(2) + + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.components.js b/kubejs/server_scripts/tfg/machines/recipes.components.js new file mode 100644 index 000000000..5f9746144 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.components.js @@ -0,0 +1,254 @@ +"use strict"; + +function registerTFGElectronicComponentsRecipes(event) { + + // Electron tubes + event.shaped('1x create:electron_tube', [ + 'FAG', + 'BCB', + 'DED' + ], { + A: 'gtceu:glass_tube', + B: '#forge:bolts/steel', + C: 'gtceu:wood_plate', + D: 'gtceu:red_alloy_single_wire', + E: '#forge:plates/wrought_iron', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube') + + event.recipes.createSequencedAssembly([ + '2x create:electron_tube', + ], 'gtceu:wood_plate', [ + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), + ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') + + event.recipes.gtceu.assembler('create:electron_tube') + .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('2x create:electron_tube') + .duration(50) + .EUt(7) + .circuit(14) + + event.shaped('4x create:electron_tube', [ + 'FAG', + 'DCD' + ], { + A: 'gtceu:glass_tube', + C: 'gtceu:plastic_circuit_board', + D: 'gtceu:red_alloy_single_wire', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube2') + + event.recipes.gtceu.assembler('create:electron_tube2') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + event.shaped('4x create:electron_tube', [ + ' A ', + ' B ', + ' C ' + ], { + A: '#forge:tools/screwdrivers', + B: 'gtceu:nand_chip', + C: 'gtceu:plastic_circuit_board' + }).id('tfg:create/shaped/electron_tube3') + + event.recipes.gtceu.assembler('create:electron_tube3') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + // Vacuum Tubes + event.remove({ id: 'gtceu:shaped/vacuum_tube' }) + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + + event.recipes.createSequencedAssembly([ + 'gtceu:vacuum_tube', + ], 'gtceu:resin_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), + event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) + ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') + + // ULV Coil + event.recipes.createSequencedAssembly([ + 'gtceu:ulv_voltage_coil', + ], 'gtceu:magnetic_iron_rod', [ + event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) + ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') + + // LV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:basic_electronic_circuit', + ], 'gtceu:resin_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), + event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') + + // MV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:good_electronic_circuit', + ], 'gtceu:phenolic_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') + + // Vitrified Pearl + event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), + C: '#gtceu:circuits/mv', + D: 'tfg:vitrified_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') + + event.recipes.gtceu.assembler('field_generator_mv') + .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') + .itemOutputs('gtceu:mv_field_generator') + .duration(100) + .EUt(30) + + // Cryo Fluix Pearl + event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') + + event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), + C: '#gtceu:circuits/hv', + D: 'tfg:cryo_fluix_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') + + // Change recipes to want EV circuit instead of IV + event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + + // Nano wafer + event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) + event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) + + event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') + .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) + .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') + .itemOutputs('gtceu:nano_cpu_wafer') + .duration(20*60) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Change components of IV mainframe to nano chip + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Quantum Eye + event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') + + event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), + C: '#gtceu:circuits/ev', + D: 'gtceu:quantum_eye' + }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') + + event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) + event.recipes.gtceu.chemical_bath('tfg:quantum_eye') + .itemInputs('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('gtceu:radon', 250)) + .itemOutputs('gtceu:quantum_eye') + .duration(20 * 24) + .EUt(GTValues.VA[GTValues.HV]) + + // Nether Star + event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') + + event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), + C: '#gtceu:circuits/iv', + D: 'minecraft:nether_star' + }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') + + event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust') + .itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond') + .circuit(10) + .itemOutputs('gtceu:nether_star_dust') + // TODO: change to something else with venus + .inputFluids(Fluid.of('gtceu:neon', 1000)) + .duration(700) + .EUt(2720) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js new file mode 100644 index 000000000..84162e695 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js @@ -0,0 +1,61 @@ +"use strict"; + +function registerTFGEnderPearlRecipes(event) { + event.recipes.gtceu.chemical_reactor('kaolinite') + .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('kaolinite_ruby') + .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') + .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemOutputs('tfg:vitrified_pearl') + .chancedOutput('gtceu:ash_dust', 2500, 0) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') + .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') + .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.macerator('vitrified_ender_pearl') + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('#forge:dusts/vitrified_pearl') + .duration(40) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.molds.js b/kubejs/server_scripts/tfg/machines/recipes.molds.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.molds.js rename to kubejs/server_scripts/tfg/machines/recipes.molds.js diff --git a/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js new file mode 100644 index 000000000..1b54c719c --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js @@ -0,0 +1,177 @@ +"use strict"; + +function registerTFGMultiblockRecipes(event) { + + // Multi-Smelter + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace') + + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace2') + + // Electric Blast Furnace + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace') + + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace2') + + // TFG customs + event.shaped('tfg:electric_greenhouse', [ + 'ABA', + 'CDC', + 'BCB' + ], { + A: '#gtceu:circuits/mv', + B: '#forge:single_cables/copper', + C: 'tfc:compost', + D: 'gtceu:steel_machine_casing' + }).id('tfg:shaped/electric_greenhouse') + + event.shaped('gtceu:steam_bloomery', [ + 'CEC', + 'DAD', + 'CBC' + ], { + A: 'tfc:bloomery', + B: '#forge:frames/bronze', + C: '#forge:rods/black_steel', + D: '#forge:screws/wrought_iron', + E: '#forge:tools/wrenches' + }) + + event.shaped('tfg:ostrum_linear_accelerator', [ + 'USU', + 'WZW', + 'PTP' + ], { + S: 'tfg:casings/machine_casing_vacuum_engine_intake', + Z: 'gtceu:iv_machine_hull', + W: '#gtceu:circuits/iv', + U: '#forge:double_plates/stellite_100', + T: '#forge:single_cables/platinum', + P: 'gtceu:iv_electric_pump' + } + ).id('tfg:shaped/ostrum_linear_accelerator') + + event.recipes.gtceu.assembler('tfg:ostrum_harvester') + .itemInputs( + '1x gtceu:ev_machine_hull', + '4x #gtceu:circuits/ev', + '4x gtceu:ev_electric_motor', + '4x #forge:rotors/black_steel', + '4x gtceu:ev_electric_pump', + '4x #forge:gears/desh') + .itemOutputs('gtceu:ostrum_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.assembler('tfg:moon_dust_harvester') + .itemInputs( + '1x gtceu:hv_machine_hull', + '4x #gtceu:circuits/hv', + '4x gtceu:hv_electric_motor', + '4x #forge:rotors/titanium', + '4x gtceu:hv_electric_pump', + '4x #forge:gears/rocket_alloy_t1') + .itemOutputs('gtceu:moon_dust_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + .circuit(2) + + event.recipes.gtceu.shaped('tfg:evaporation_tower', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: '#gtceu:circuits/iv', + W: 'gtceu:ev_electric_pump', + U: '#forge:double_wires/nichrome', + Z: 'gtceu:ev_machine_hull' + }).addMaterialInfo().id('tfg:shaped/evaporation_tower') + + event.shaped('deafission:fission_reactor_mk1', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:hv_field_generator', + Z: 'gtceu:ev_machine_hull' + } + ).id('tfg:shaped/fission_reactor_mk1') + + event.shaped('gtceu:nuclear_fuel_factory', [ + 'TUT', + 'WZW', + 'TBT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_emitter', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_robot_arm' + } + ).id('tfg:shaped/nuclear_fuel_factory') + + event.shaped('gtceu:heat_exchanger', [ + 'TUT', + 'WZW', + 'GBG' + ], { + T: 'gtceu:high_temperature_smelting_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_sensor', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_fluid_regulator', + G: '#forge:gears/ostrum_iodide' + } + ).id('tfg:shaped/heat_exchanger') + + event.shaped('tfg:nuclear_turbine', [ + 'CTC', + 'TZT', + 'BTB' + ], { + T: '#forge:gears/magnalium', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ultimet_large_item_pipe', + C: '#gtceu:circuits/ev' + } + ).id('tfg:shaped/nuclear_turbine') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js new file mode 100644 index 000000000..c9df6f6f2 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js @@ -0,0 +1,38 @@ +"use strict"; + +function registerTFGSteamBloomeryRecipes(event) { + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') + .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') + .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + forEachMaterial(material => { + + const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) + if (tfcProperty === null) + return; + + const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() + if (outputMaterial === GTMaterials.Iron) { + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + } + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.mars.js b/kubejs/server_scripts/tfg/mars/events.sandstorm.js similarity index 100% rename from kubejs/server_scripts/tfg/events.mars.js rename to kubejs/server_scripts/tfg/mars/events.sandstorm.js diff --git a/kubejs/server_scripts/tfg/mars/recipes.iodine.js b/kubejs/server_scripts/tfg/mars/recipes.iodine.js new file mode 100644 index 000000000..90a8fc031 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.iodine.js @@ -0,0 +1,74 @@ +"use strict"; + +function registerTFGMarsIodineRecipes(event) { + + // This file is specifically for the crappy mars-based iodine recipe chain. + // The "proper" venus one is elsewhere + + event.recipes.gtceu.autoclave('tfg:crimsene') + .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) + .itemOutputs('#forge:gems/crimsene') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.autoclave('tfg:warpane') + .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:gems/warpane') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.macerator('tfg:crimsene') + .itemInputs('#forge:gems/crimsene') + .itemOutputs('#forge:dusts/crimsene') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:warpane') + .itemInputs('#forge:gems/warpane') + .itemOutputs('#forge:dusts/warpane') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.mixer('tfg:mars_sap') + .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) + .itemOutputs('#forge:dusts/mycelienzene') + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') + .itemInputs('#forge:dusts/mycelienzene') + .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) + .blastFurnaceTemp(100) + .duration(30 * 10) + + event.recipes.gtceu.centrifuge('mars_sap_separation') + .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) + .outputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:krypton', 1000), + Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') + .inputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:dusts/iodine') + .outputFluids(Fluid.of('gtceu:methane', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') + .inputFluids( + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:oxygen', 1500)) + .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') + .outputFluids(Fluid.of('tfg:heavy_water', 1500)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.mars.js b/kubejs/server_scripts/tfg/mars/recipes.mars.js new file mode 100644 index 000000000..844bbab19 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.mars.js @@ -0,0 +1,231 @@ +"use strict"; + +function registerTFGMarsRecipes(event) { + + // Mars air + + event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 4000)) + .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 10000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) + .duration(1600) + .EUt(GTValues.VA[GTValues.MV]) + + // TODO: move neon and xenon somewhere else + event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') + .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) + .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) + .outputFluids(Fluid.of('gtceu:argon', 5000)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('gtceu:krypton', 1000)) + .outputFluids(Fluid.of('gtceu:neon', 1000)) + .outputFluids(Fluid.of('gtceu:xenon', 1000)) + .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) + .disableDistilleryRecipes(true) + .duration(2000) + .EUt(GTValues.VA[GTValues.EV]) + + //#region Mars Water + + event.recipes.gtceu.centrifuge('mars_heavy_water') + .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:heavy_water', 500)) + .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) + .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('minecraft:water', 250)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.MV]) + + // Mars plants + + event.recipes.gtceu.mixer('tfg:bio_glowstone') + .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .itemOutputs('2x minecraft:glowstone_dust') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.EV]) + .dimension('ad_astra:mars') + + // Ad astra woods + + global.AD_ASTRA_WOOD.forEach(wood => { + woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) + }) + + event.shaped('16x ad_astra:aeronos_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/aeronos', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/aeronos_ladder') + + event.shaped('16x ad_astra:strophar_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/strophar', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/strophar_ladder') + + + generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, + '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + + // Beneath woods + + generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, + '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, + '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) + + // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those + woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', + 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, + 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', + 'beneath:wood/planks/crimson_button') + + event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/crimson') + .itemOutputs('beneath:wood/stripped_wood/crimson') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/crimson' }], + results: [{ item: 'beneath:wood/stripped_wood/crimson' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_crimson_wood`) + + woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', + 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, + 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', + 'beneath:wood/planks/warped_button') + + event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/warped') + .itemOutputs('beneath:wood/stripped_wood/warped') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/warped' }], + results: [{ item: 'beneath:wood/stripped_wood/warped' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_warped_wood`) + + // Alphacene + + generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, + '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) + + //Large Nest + event.shaped('tfg:large_nest_box', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:crimson_thatch', + B: 'beneath:crimson_straw' + }).id('tfg:shaped_large_nest_crimson') + + event.shaped('tfg:large_nest_box_warped', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:warped_thatch', + B: 'beneath:warped_straw' + }).id('tfg:shaped_large_nest_warped') + + // Animal stuff + + event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') + event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') + + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') + .itemInputs('species:cracked_wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') + .itemInputs('tfg:wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(200) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') + .itemInputs('tfg:sniffer_egg') + .outputFluids(Fluid.of('firmalife:cream', 1000)) + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.tfc.loom( + '8x ad_astra:glacian_fur', + '8x tfg:glacian_wool', + 8, + 'ad_astra:block/glacian_fur' + ) + + event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') + .itemInputs('tfg:glacian_wool') + .circuit(10) + .itemOutputs('ad_astra:glacian_fur') + .duration(100) + .EUt(4) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('8x tfc:wool_yarn', [ + 'tfc:spindle', + 'tfg:glacian_wool' + ]).id('tfg:shapeless/glacian_wool_to_yarn')) + + event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') + .itemInputs('tfg:glacian_wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + event.shaped('minecraft:pink_bed', [ + 'AAA', + 'BBB' + ], { + A: 'ad_astra:glacian_fur', + B: '#tfc:lumber' + }).id('tfg:shaped/glacian_bed') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.ostrum.js b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js new file mode 100644 index 000000000..7aa0cdffd --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js @@ -0,0 +1,140 @@ +"use strict"; + +function registerTFGMarsOstrumRecipes(event) { + + var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); + var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + // Ostrum Harvester + + event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) + .perTick(true) + .inputFluids('gtceu:drilling_fluid 4') + .perTick(false) + .dimension('ad_astra:mars') + .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.LV]); + + // Ostrum Linear Accelerator Recipes + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') + .inputFluids('gtceu:lightweight_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('tfg:heavy_water', 1000)) + .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') + .inputFluids('gtceu:ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:radon', 100)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') + .inputFluids('gtceu:dense_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + // Ostrum Linear Accelerator Recipes + + // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft + /* + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .circuit(1); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(2); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) + .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(3); + */ + //#endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.moon.js b/kubejs/server_scripts/tfg/moon/recipes.moon.js new file mode 100644 index 000000000..2a6ca6a5c --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.moon.js @@ -0,0 +1,27 @@ +"use strict"; + +function registerTFGMoonRecipes(event) { + + // Cryo Fluix + event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .inputFluids(Fluid.of('tfg:fluix', 144)) + .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fluid_heater('tfg:cryo_fluix') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .outputFluids(Fluid.of('tfg:fluix', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('tfg:cryo_fluix_pearl') + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.plants.js b/kubejs/server_scripts/tfg/moon/recipes.plants.js new file mode 100644 index 000000000..daaf47235 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.plants.js @@ -0,0 +1,90 @@ +"use strict"; + +function registerTFGMoonPlantRecipes(event) { + + // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, + // and we're using helium-3 as the fertiliser + + // Chorus + event.recipes.gtceu.greenhouse('tfg:chorus') + .notConsumable('8x tfg:lunar_chorus_flower') + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:chorus_helium') + .notConsumable('8x tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .duration(12000) // 10 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Replace the built-in greg one to add a circuit + event.recipes.gtceu.fermenter('fermented_biomass') + .inputFluids(Fluid.of('gtceu:biomass', 100)) + .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .circuit(1) + .duration(150) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:chorus') + .itemInputs('minecraft:chorus_fruit') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fermenter('tfg:chorus_flower') + .itemInputs('tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Lightblooms + event.recipes.gtceu.greenhouse('tfg:lightbloom') + .notConsumable('8x minecraft:twisting_vines') + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) + .chancedOutput('minecraft:verdant_froglight', 2500, 0) + .chancedOutput('minecraft:ochre_froglight', 2500, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') + .notConsumable('8x minecraft:twisting_vines') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) + .chancedOutput('minecraft:verdant_froglight', 3500, 0) + .chancedOutput('minecraft:ochre_froglight', 3500, 0) + .duration(12000) // 30 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.brewery('biomass_from_twisting_vines') + .itemInputs('minecraft:twisting_vines') + .inputFluids("#tfg:clean_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(50) + .EUt(3) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.regolith.js b/kubejs/server_scripts/tfg/moon/recipes.regolith.js new file mode 100644 index 000000000..1d43f7489 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.regolith.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGMoonRegolithRecipes(event) { + + //#region Moon Harvester + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') + .biome('tfg:moon/lunar_asurine_dense') + .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(1) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') + .biome('tfg:moon/lunar_chorus_dense') + .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(2) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') + .biome('tfg:moon/lunar_corals_dense') + .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(3) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') + .biome('tfg:moon/lunar_lights_dense') + .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(4) + + //#endregion + + //#region Regolith Vapor Processing + + event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') + .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') + .itemOutputs('#forge:dusts/regolith_mush') + .dimension('ad_astra:moon') + .duration(20 * 60) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') + .itemInputs('#forge:dusts/regolith_mush') + .inputFluids('gtceu:nitrogen 1000') + .itemOutputs('#forge:dusts/silicon_dioxide') + .outputFluids('gtceu:regolith_vapor 1000') + .dimension('ad_astra:moon') + .duration(20 * 28) + .EUt(GTValues.VHA[GTValues.LV]) + + //#endregion + + //#region Making Dusty Ores + + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') + .itemInputs('#forge:dusts/certus_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_certus_quartz') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') + .itemInputs('#forge:dusts/goethe_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_goethite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') + .itemInputs('#forge:dusts/bright_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) + .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') + .itemInputs('#forge:dusts/cassiterite_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_cassiterite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + //#endregion + + //#region Basic dusty ore centrifuging + + // These have special recipes + const DUSTY_ORE_EXCEPTIONS = [ + GTMaterials.Goethite, + GTMaterials.Cassiterite, + GTMaterials.Bauxite + ] + + // Otherwise everything else just centrifuges into its dust version + forEachMaterial(material => { + if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) + return; + + const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) + const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) + + if (dustyOre !== null && dust !== null) { + event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) + .itemInputs(dustyOre) + .itemOutputs(dust) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + } + }) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') + .itemInputs('#forge:dusty_raw_materials/goethite') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('#forge:dusts/iron', 5000, 0) + .chancedOutput('#forge:dusts/copper', 5000, 0) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') + .itemInputs('#forge:dusty_raw_materials/bauxite') + .itemOutputs('#forge:dusts/aluminium') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') + .itemInputs('#forge:dusty_raw_materials/cassiterite') + .itemOutputs('#forge:dusts/tin') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + // #endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.alabaster.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js similarity index 98% rename from kubejs/server_scripts/tfc/recipes.alabaster.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js index 3fe1055cb..9c65df063 100644 --- a/kubejs/server_scripts/tfc/recipes.alabaster.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCAlabasterRecipes(event) { +function registerTFGAlabasterRecipes(event) { event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('4x tfc:alabaster_brick', ['#forge:raw_materials/gypsum', '#tfc:chisels'])) .id('tfc:crafting/alabaster_brick/raw_gypsum') diff --git a/kubejs/server_scripts/tfg/recipes.collapse.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js similarity index 97% rename from kubejs/server_scripts/tfg/recipes.collapse.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js index a61d69a52..2c39a3f07 100644 --- a/kubejs/server_scripts/tfg/recipes.collapse.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js @@ -122,6 +122,10 @@ function registerTFGCollapseRecipes(event) { // #endregion // #region Other + event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') + event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') + event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') + event.recipes.tfc.collapse('minecraft:cobblestone', 'minecraft:stone') event.recipes.tfc.landslide('minecraft:cobblestone', 'minecraft:cobblestone') event.recipes.tfc.landslide('minecraft:mossy_cobblestone', 'minecraft:mossy_cobblestone') diff --git a/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js new file mode 100644 index 000000000..b305c5209 --- /dev/null +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGConcreteRecipes(event) { + + const recipe = event.recipes.gtceu.mixer('concrete_from_marble') + .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') + .inputFluids("#tfg:clean_water 1000") + .outputFluids('gtceu:concrete 1152') + .duration(40) + .EUt(16) + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], + "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], + "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') + + //GT light/dark concrete recipe fix + + event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) + event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) + + event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') + .inputFluids(Fluid.of('gtceu:concrete', 144)) + .notConsumable('1x gtceu:block_casting_mold') + .itemOutputs('1x gtceu:light_concrete') + .duration(98) + .EUt(7) + + event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') + .inputFluids(Fluid.of('tfc:black_dye', 18)) + .itemInputs('1x gtceu:light_concrete') + .itemOutputs('1x gtceu:dark_concrete') + .duration(20) + .EUt(7) + + event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') + .itemInputs('1x gtceu:light_concrete') + .outputFluids(Fluid.of('gtceu:concrete', 144)) + .duration(98) + .EUt(30) + + event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') + event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') + event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') + event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') + event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') + event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') + event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') + event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') + + event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') + event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') + event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') + event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') + event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') + event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') + event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') + event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') + + // Handcrafted artisanal concrete + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) + .outputFluid(Fluid.of('gtceu:concrete', 500)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 144)) + .inputItem('gtceu:wood_frame') + .outputItem('gtceu:light_concrete') + .id('tfg:barrel/light_concrete') + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 96)) + .inputItem('tfg:rebar_support') + .outputItem('tfg:reinforced_light_concrete_support') + .id('tfg:barrel/reinforced_light_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('gtceu:light_concrete') + .inputFluid(Fluid.of('tfc:black_dye', 18)) + .outputItem('gtceu:dark_concrete') + .id('tfg:barrel/dark_concrete') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:dark_concrete_support') + .id('tfg:barrel/dark_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:reinforced_light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:reinforced_dark_concrete_support') + .id('tfg:barrel/reinforced_dark_concrete_support') + + // Titanium concrete + event.recipes.gtceu.assembler('tfg:titanium_concrete') + .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') + .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) + .itemOutputs('tfg:titanium_concrete') + .circuit(2) + .duration(20) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/light_blue') + .itemOutputs('tfg:titanium_concrete_bricks') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/pink') + .itemOutputs('tfg:titanium_concrete_bricks_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/green') + .itemOutputs('tfg:titanium_concrete_bricks_square') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/red') + .itemOutputs('tfg:titanium_concrete_tile') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/black') + .itemOutputs('tfg:titanium_concrete_tile_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.dirt.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js similarity index 95% rename from kubejs/server_scripts/tfc/recipes.dirt.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js index 89f2ba194..714706f91 100644 --- a/kubejs/server_scripts/tfc/recipes.dirt.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js @@ -1,7 +1,14 @@ // priority: 0 "use strict"; -function registerTFCDirtRecipes(event) { +function registerTFGDirtRecipes(event) { + + // Dirt creation + event.recipes.gtceu.macerator('dirt_from_bio_chaff') + .itemInputs('gtceu:bio_chaff') + .itemOutputs('tfc:dirt/loam') + .duration(300) + .EUt(4) // Loam + Silt -> Silty Loam (Миксер) event.recipes.gtceu.mixer('silty_loam_dirt') diff --git a/kubejs/server_scripts/tfg/recipes.rocks.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js similarity index 98% rename from kubejs/server_scripts/tfg/recipes.rocks.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js index 7851c6e91..fe606f170 100644 --- a/kubejs/server_scripts/tfg/recipes.rocks.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js @@ -1238,4 +1238,29 @@ function registerTFGRockRecipes(event) { }) //#endregion Magma Blocks + + //#region GT marble + event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') + event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') + event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') + event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') + event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') + event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') + event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') + event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') + //#endregion + + // Blackstone Buttons + removeCutterRecipe(event, 'blackstone_button') + removeCutterRecipe(event, 'blackstone_button_water') + removeCutterRecipe(event, 'blackstone_button_distilled_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') + + event.recipes.gtceu.cutter('tfg:blackstone_button') + .itemInputs('minecraft:polished_blackstone_pressure_plate') + .itemOutputs('6x minecraft:polished_blackstone_button') + .EUt(7) + .duration(100) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.sand.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js similarity index 93% rename from kubejs/server_scripts/tfc/recipes.sand.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js index 2ef29e6a1..6b035dca2 100644 --- a/kubejs/server_scripts/tfc/recipes.sand.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCSandRecipes(event) { +function registerTFGSandRecipes(event) { // Нефтеносный -> Желтый песок event.recipes.gtceu.centrifuge('oilsands_ore_separation') @@ -210,4 +210,25 @@ function registerTFCSandRecipes(event) { event.recipes.greate.pressing('tfc:sand/pink', '#tfc:pink_gravel') .recipeTier(1) .id(`greate:pressing/pink_gravel_to_sand`) + + // Quartz sand + event.shaped('gtceu:quartz_sand_dust', [ + 'A', + 'B' + ], { + A: '#forge:sand', + B: '#forge:tools/mortars' + }).id('gtceu:shaped/quartz_sand') + + event.recipes.gtceu.macerator('quartz_sand_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('gtceu:quartz_sand_dust') + .duration(30) + .EUt(2) + + event.recipes.gtceu.electrolyzer('sand_electrolysis') + .itemInputs('8x #forge:sand') + .itemOutputs('gtceu:silicon_dioxide_dust') + .duration(500) + .EUt(25) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.stone_dusts.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.stone_dusts.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js index 2ce4ca2eb..f805affa3 100644 --- a/kubejs/server_scripts/tfg/recipes.stone_dusts.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js @@ -6,6 +6,24 @@ */ function registerTFGStoneDustRecipes(event) { + event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') + .itemInputs('13x #forge:dusts/clay') + .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') + .outputFluids(Fluid.of('minecraft:water', 6000)) + .duration(GTMaterials.Clay.getMass() * 13) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') + .itemInputs('gtceu:stone_dust') + .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) + .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) + .chancedOutput('#forge:small_dusts/marble', 2222, 0) + .chancedOutput('#forge:small_dusts/biotite', 1111, 0) + .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) + .chancedOutput('#forge:small_dusts/sodalite', 550, 55) + .duration(12 * 20) + .EUt(GTValues.VA[GTValues.HV]) + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_blackstone' }) event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__diorite') diff --git a/kubejs/server_scripts/tfc/recipes.stone.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js similarity index 100% rename from kubejs/server_scripts/tfc/recipes.stone.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js diff --git a/kubejs/server_scripts/tfg/tags.stones.js b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js similarity index 100% rename from kubejs/server_scripts/tfg/tags.stones.js rename to kubejs/server_scripts/tfg/natural_blocks/tags.stones.js diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js b/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js deleted file mode 100644 index 779b382ad..000000000 --- a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js +++ /dev/null @@ -1,83 +0,0 @@ - // priority: 0 - -function registerTFGNOstrumRecipes(event) { - - var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); - var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - // Ostrum Linear Accelerator Recipes - - // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft -/* - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .circuit(1); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(2); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) - .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(3); -*/ - //#endregion - -} \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/loot.js b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js similarity index 99% rename from kubejs/server_scripts/gregtech/loot.js rename to kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js index 70f787b9c..0d8f49c3d 100644 --- a/kubejs/server_scripts/gregtech/loot.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js @@ -34,7 +34,7 @@ const STONE_TYPES_TO_COBBLE = { permafrost: 'gtceu:ice_dust' } -const registerGTCEULoots = (event) => { +const registerTFGOreLoots = (event) => { // Have to define these here because normal loot table jsons don't support checking for hammers diff --git a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js similarity index 63% rename from kubejs/server_scripts/gregtech/recipes.tfcmetals.js rename to kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js index dc88c4a57..6700415b1 100644 --- a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js @@ -1,10 +1,10 @@ -// priority: 0 +// priority: 0 "use strict"; /** * @param {Internal.RecipesEventJS} event */ -function registerGTCEuTFCMetalsRecipes(event) { +function registerTFGAlloyingRecipes(event) { // #region Colored steels @@ -93,7 +93,40 @@ function registerGTCEuTFCMetalsRecipes(event) { //#endregion - // red alloy, because crucible always makes 4+1=5 + // 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]) + }); + }); + + // Red alloy, because crucible always makes 4+1=5 event.recipes.gtceu.alloy_blast_smelter('red_alloy') .itemInputs('1x gtceu:copper_dust', '4x minecraft:redstone') @@ -140,4 +173,44 @@ function registerGTCEuTFCMetalsRecipes(event) { .itemOutputs('5x gtceu:red_alloy_ingot') .duration(50) .EUt(16) + + event.remove({ id: 'gtceu:mixer/sterling_silver' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', + 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') + + event.remove({ id: 'gtceu:mixer/rose_gold' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', + 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') + + // Glowstone + event.recipes.gtceu.mixer('gtceu:lv_glowstone') + .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') + .itemOutputs('2x minecraft:glowstone_dust') + .circuit(8) + .duration(1200) + .EUt(30) + + event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') + .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') + .outputFluids(Fluid.of('gtceu:glowstone', 288)) + .duration(20 * 60 / 1.3) + .EUt(GTValues.VA[GTValues.LV]) + .blastFurnaceTemp(1064) + .circuit(9) + + // New Alloys + + event.recipes.gtceu.mixer('tfg:ostrum_iodide') + .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') + .itemOutputs('3x #forge:dusts/ostrum_iodide') + .duration(20 * 12) + .circuit(1) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') + .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') + .inputFluids(Fluid.of('gtceu:oxygen', 3000)) + .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.EV]) } diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js new file mode 100644 index 000000000..76f55f6ab --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js @@ -0,0 +1,126 @@ +"use strict"; + +function registerTFGBromineRecipes(event) { + + /* + + event.recipes.gtceu.evaporation_tower('evaporation_brine') + .inputFluids(Fluid.of('tfc:salt_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('heat_brine') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .duration(20*600) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) + .duration(20*100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) + .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_acidification') + .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) + .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:steam', 3000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_chloroination') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_neutralization') + .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) + .itemInputs('gtceu:potassium_dust') + .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) + .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') + .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) + .outputFluids(Fluid.of('tfc:salt_water'), 1000) + .duration(20*3) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('brine_filtration') + .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') + .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) + .inputFluids(Fluid.of('minecraft:water', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .outputFluids(Fluid.of('minecraft:water', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') + .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) + .outputFluids(Fluid.of('gtceu:chlorine', 50)) + .duration(20*5) + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_bromine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) + .outputFluids(Fluid.of('gtceu:bromine', 40)) + .duration(20*2) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillation_tower('bromine_distillation') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:chlorine', 500)) + .outputFluids(Fluid.of('gtceu:bromine', 1000)) + .duration(20*25) + .EUt(GTValues.VA[GTValues.HV]) + + */ + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js new file mode 100644 index 000000000..aef120457 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js @@ -0,0 +1,132 @@ +"use strict"; + +function registerTFGQuartzRecipes(event) { + + //#region Rose Quartz fabrication + decomposition + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) + + generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') + generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') + + event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") + .itemInputs('#forge:dusts/rose_quartz') + .inputFluids(Fluid.of("gtceu:ice", 144)) + .itemOutputs("#forge:gems/rose_quartz") + .duration(2000) + .EUt(120) + + event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') + .itemInputs('9x gtceu:rose_quartz_dust') + .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') + .duration(7 * 20) + .EUt(60) + //#endregion + + //#region Glass + + event.recipes.gtceu.arc_furnace('glass_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('2x minecraft:glass') + .duration(20) + .EUt(30) + + global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { + event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .notConsumable('gtceu:bottle_casting_mold') + .itemOutputs(element.output) + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + }) + + // Lamp Glass + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) + .itemInputs('#tfc:glass_batches') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) + .itemInputs('#forge:dusts/glass') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + // Empty Jar + event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') + .itemInputs('#tfc:glass_batches_tier_2') + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + + event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') + .inputFluids(Fluid.of('gtceu:glass', 144)) + .notConsumable('gtceu:cylinder_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:jar_extraction') + .itemInputs('#tfc:jars') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:glass_batch_extraction') + .itemInputs('#tfc:glass_batches') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe('tfc:lens') + .itemInputs('#forge:glass') + .itemOutputs('tfc:lens') + .duration(100) + .EUt(16) + + // Add all glass colors to macerator/hammer + removeMaceratorRecipe(event, 'macerate_glass'); + event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") + .itemInputs( + "#forge:glass" + ) + .itemOutputs("gtceu:glass_dust") + .duration(20) + .EUt(2); + + removeMaceratorRecipe(event, 'macerate_glass_pane'); + event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane") + .itemInputs( + "#forge:glass_panes" + ) + .itemOutputs("3x gtceu:tiny_glass_dust") + .duration(6) + .EUt(2) + + event.replaceInput({ id: "gtceu:shaped/glass_dust_hammer" }, + "minecraft:glass", + "#forge:glass" + ); + + + event.recipes.gtceu.alloy_smelter('glass_bottle') + .itemInputs('#forge:dusts/glass') + .itemOutputs('tfc:silica_glass_bottle') + .notConsumable('gtceu:bottle_casting_mold') + .EUt(2) + .duration(20 * 5) + .category(GTRecipeCategories.INGOT_MOLDING) + + + // Glass Tube + event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) + .id('tfg:gtceu/glassworking/glass_tube') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js new file mode 100644 index 000000000..10511c843 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js @@ -0,0 +1,86 @@ +"use strict"; + +function registerTFGTungstenRecipes(event) { + + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) + event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) + + // Transform Tungstate and Scheelite + + event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:scheelite_dust', 6)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:calcite_dust', 5)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:tungstate_dust', 7)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:lithium_dust', 2)) + .itemOutputs(Item.of('gtceu:carbon_dust', 1)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:salt_dust', 4)) + .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .duration(20*24) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') + .inputFluids(Fluid.of('gtceu:ammonia', 10000)) + .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .duration(20*16) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*36) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*18) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') + .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) + .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) + .duration(20*2.8) + .EUt(GTValues.VA[GTValues.EV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js new file mode 100644 index 000000000..e1b8dc933 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js @@ -0,0 +1,61 @@ +// priority: 0 + +function registerTFGZirconiumRecipes(event) { + + // #region Zirconium + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') + .itemInputs('#forge:dusts/silicon') + .inputFluids('gtceu:chlorine 4000') + .outputFluids('tfg:silicon_tetrachloride 1000') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') + .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') + .itemOutputs('#forge:dusts/silicon') + .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') + .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') + .inputFluids('gtceu:chlorine 8000') + .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') + .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') + .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') + .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') + .duration(55 * 20) + .blastFurnaceTemp(4241) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') + .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') + .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') + .itemOutputs('5x #forge:dusts/zirconium_bromide') + .outputFluids('gtceu:carbon_monoxide 2000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') + .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') + .notConsumable('#forge:dusts/carbon') + .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') + .outputFluids('gtceu:bromine 8000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') + .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') + .inputFluids('gtceu:oxygen 6000') + .itemOutputs('5x #forge:dusts/boron_carbide') + .outputFluids('gtceu:carbon_monoxide 6000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.components.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/recipes.components.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js similarity index 77% rename from kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js index 29df43882..a6257a9c3 100644 --- a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js +++ b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js @@ -85,28 +85,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Mars Water - - event.recipes.gtceu.centrifuge('mars_heavy_water') - .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:heavy_water', 500)) - .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) - .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('minecraft:water', 250)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.MV]) - // Martian Sludge event.recipes.gtceu.chemical_bath('dirty_hexafluorosilicic_acid') @@ -590,129 +568,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Bromine Line - SCRAP FROM MARS TO VENUS - - /* - - event.recipes.gtceu.evaporation_tower('evaporation_brine') - .inputFluids(Fluid.of('tfc:salt_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('heat_brine') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .duration(20*600) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) - .duration(20*100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) - .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_acidification') - .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) - .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:steam', 3000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_chloroination') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_neutralization') - .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) - .itemInputs('gtceu:potassium_dust') - .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) - .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') - .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) - .outputFluids(Fluid.of('tfc:salt_water'), 1000) - .duration(20*3) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('brine_filtration') - .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') - .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) - .inputFluids(Fluid.of('minecraft:water', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .outputFluids(Fluid.of('minecraft:water', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') - .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) - .outputFluids(Fluid.of('gtceu:chlorine', 50)) - .duration(20*5) - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_bromine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) - .outputFluids(Fluid.of('gtceu:bromine', 40)) - .duration(20*2) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillation_tower('bromine_distillation') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:chlorine', 500)) - .outputFluids(Fluid.of('gtceu:bromine', 1000)) - .duration(20*25) - .EUt(GTValues.VA[GTValues.HV]) - - */ - } diff --git a/kubejs/server_scripts/tfg/nuclear/tags.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/tags.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js diff --git a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js new file mode 100644 index 000000000..ed60fc411 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js @@ -0,0 +1,116 @@ +"use strict"; + +function registerTFGBiodieselRecipes(event) { + + // Biofuels + + event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.extractor(`rapeseed_oil`) + .itemInputs('tfg:rapeseed_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 600)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.extractor(`sunflower_oil`) + .itemInputs('tfg:sunflower_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 350)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 250)) + .id('tfg:barrel/rapeseed_to_oil') + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 120)) + .id('tfg:barrel/sunflower_to_oil') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js new file mode 100644 index 000000000..5d0ba1862 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js @@ -0,0 +1,91 @@ +"use strict"; + +function registerTFGBoilerRecipes(event) { + + // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead + + event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration*3) + }) + + event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration/3) + }) + + // Allow oil in small boilers + + event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) + event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) + event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) + // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate + event.recipes.gtceu.steam_boiler('tfg:oil') + .inputFluids(Fluid.of('gtceu:oil', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:heavy_oil') + .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:fish_oil') + .inputFluids(Fluid.of('gtceu:fish_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // These aren't in base GT, but they have the same stats as oil + event.recipes.gtceu.steam_boiler('tfg:raw_oil') + .inputFluids(Fluid.of('gtceu:oil_medium', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:light_oil') + .inputFluids(Fluid.of('gtceu:oil_light', 200)) + .duration(200) + .dimension('minecraft:overworld') + + // Same stats as fish oil + event.recipes.gtceu.steam_boiler('tfg:olive_oil') + .inputFluids(Fluid.of('tfc:olive_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:seed_oil') + .inputFluids(Fluid.of('gtceu:seed_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:soybean_oil') + .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // fish oil (aka tallowate) extraction + event.recipes.gtceu.extractor(`tfg:fish_oil`) + .itemInputs('#minecraft:fishes') + .outputFluids(Fluid.of('gtceu:fish_oil', 200)) + .duration(40) + .EUt(4) + + event.recipes.gtceu.extractor(`tfg:tallow`) + .itemInputs('tfc:blubber') + .outputFluids(Fluid.of('tfc:tallow', 200)) + .duration(40) + .EUt(4) + + // you get tallow from killing things like orcas, so this seems close enough + event.recipes.gtceu.mixer('tallow_to_fish_oil') + .inputFluids('tfc:tallow 100', 'tfc:lye 100') + .outputFluids('gtceu:fish_oil 200') + .duration(100) + .EUt(4) + + // Seed oil + event.recipes.gtceu.extractor(`tfg:seed_oil`) + .itemInputs('#tfc:seeds') + .outputFluids(Fluid.of('gtceu:seed_oil', 50)) + .duration(32) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.coal.js b/kubejs/server_scripts/tfg/powergen/recipes.coal.js new file mode 100644 index 000000000..6220f542f --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.coal.js @@ -0,0 +1,96 @@ +"use strict"; + +function registerTFGCoalRecipes(event) { + + event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") + .itemInputs('2x gtceu:poor_raw_coal') + .itemOutputs('1x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 500)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 1000)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") + .itemInputs('gtceu:rich_raw_coal') + .itemOutputs('4x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(900) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") + .itemInputs('3x gtceu:rich_raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) + + event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(1710) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") + .itemInputs('6x gtceu:raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/early_power.js b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js similarity index 77% rename from kubejs/server_scripts/tfg/early_power.js rename to kubejs/server_scripts/tfg/powergen/recipes.early_gas.js index 07181dec9..c4bbf5de1 100644 --- a/kubejs/server_scripts/tfg/early_power.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js @@ -1,6 +1,6 @@ // priority: 0 -function registerTFGEarlyPower(event) { +function registerTFGEarlyGasRecipes(event) { const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') @@ -204,72 +204,8 @@ function registerTFGEarlyPower(event) { //#endregion - //#region Rebalance Fuel - // Change - // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead - - event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration*3) - }) - - event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration/3) - }) - - // Allow oil in small boilers - - event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) - event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) - event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) - // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate - event.recipes.gtceu.steam_boiler('tfg:oil') - .inputFluids(Fluid.of('gtceu:oil', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:heavy_oil') - .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:fish_oil') - .inputFluids(Fluid.of('gtceu:fish_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - // These aren't in base GT, but they have the same stats as oil - event.recipes.gtceu.steam_boiler('tfg:raw_oil') - .inputFluids(Fluid.of('gtceu:oil_medium', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:light_oil') - .inputFluids(Fluid.of('gtceu:oil_light', 200)) - .duration(200) - .dimension('minecraft:overworld') - - // Same stats as fish oil - event.recipes.gtceu.steam_boiler('tfg:olive_oil') - .inputFluids(Fluid.of('tfc:olive_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:seed_oil') - .inputFluids(Fluid.of('gtceu:seed_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:soybean_oil') - .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - //#region New Power Generation - // Add Syngas event.recipes.gtceu.steam_boiler('tfg:syngas') // Small Boiler and Large Boiler divided by 4 diff --git a/kubejs/server_scripts/tfg/powergen/recipes.solar.js b/kubejs/server_scripts/tfg/powergen/recipes.solar.js new file mode 100644 index 000000000..e74ec4cb7 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.solar.js @@ -0,0 +1,184 @@ +"use strict"; + +function registerTFGSolarRecipes(event) { + + //#region Large Solar Panel + + event.shaped( + 'gtceu:large_solar_panel', + ['WSW', 'TZT', 'WUW'], + { + S: 'tfg:photo_cell_t1', + Z: 'ad_astra:solar_panel', + W: '#gtceu:circuits/ev', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel') + + event.shaped( + 'gtceu:large_solar_panel_tier2', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_etrium_cell', + Z: 'gtceu:large_solar_panel', + W: '#gtceu:circuits/iv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier2') + + event.shaped( + 'gtceu:large_solar_panel_tier3', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_vesnium_cell', + Z: 'gtceu:large_solar_panel_tier2', + W: '#gtceu:circuits/luv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier3') + + event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') + .itemInputs('8x tfg:photo_cell_t1', + '6x #forge:dusts/vanadium_gallium', + '#forge:insulation_t2/sheet') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') + .itemInputs('8x ad_astra:photovoltaic_etrium_cell', + '6x gtceu:energium_dust', + '#forge:insulation_t3/sheet') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.IV]) + + //#region Chemical Reaction for Solar Panel + + event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') + .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') + .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) + .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') + .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) + .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) + .duration(20 * 5) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') + .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) + .itemInputs(Item.of('#forge:aerogels')) + .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) + .duration(20 * 15) + .EUt(GTValues.VH[GTValues.IV]) + + //#endregion + + // LSP Generating recipes + + // Solar T1 + + event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') + .chancedInput('tfg:photo_cell_t1', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-((GTValues.V[GTValues.HV])), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel('solar_panel_t1') + .notConsumable('tfg:photo_cell_t1') + .perTick(true) + .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(2) + + // Solar T2 + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') + .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .inputFluids('tfg:compressed_trimix_3 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(3) + + // Solar T3 + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') + .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.LuV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js new file mode 100644 index 000000000..c8bb64476 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js @@ -0,0 +1,93 @@ +const fish = [ + 'cod', + 'crappie', + 'jellyfish', + 'lake_trout', + 'largemouth_bass', + 'rainbow_trout', + 'salmon', + 'smallmouth_bass', + 'tropical_fish', + 'bluegill' +]; + +const shellfish = [ + 'lobster', + 'isopod', + 'crayfish' +]; + +//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. +const tiers = [ + 'wood', + 'brass', + 'rose_gold', + 'sterling_silver', + 'invar', + 'tin_alloy', + 'cupronickel', + 'magnalium' +]; + +//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. +tiers.forEach(tier => { + fish.forEach(fish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${fish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give(`tfc:food/${fish}`) + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Shellfish Exception + shellfish.forEach(shellfish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${shellfish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('tfc:food/shellfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Pufferfish Exception + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== 'tfc:pufferfish') return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('minecraft:pufferfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) +}) \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/events.medicine.js b/kubejs/server_scripts/tfg/primitive/events.medicine.js new file mode 100644 index 000000000..115e3caf7 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/events.medicine.js @@ -0,0 +1,100 @@ + +//Pills & Tablets +const pill_event = [ + 'haste', + 'luck', + 'night_vision', + 'poison', + 'regeneration', + 'slowness', + 'speed', + 'water_breathing', + 'weakness', +]; + +pill_event.forEach(pill_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_pill`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_tablet`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_pill`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_tablet`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + event.player.removeEffect('minecraft:wither') + event.player.removeEffect('minecraft:weakness') + event.player.removeEffect('minecraft:slowness') + event.player.removeEffect('minecraft:mining_fatigue') + event.player.removeEffect('minecraft:nausea') + event.player.removeEffect('minecraft:blindness') + event.player.removeEffect('minecraft:hunger') + event.player.removeEffect('minecraft:bad_omen') + event.player.removeEffect('minecraft:darkness') + event.player.removeEffect('minecraft:unluck') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +//salvos +const salvo_event = [ + 'fire_resistance', + 'invisibility', + 'luck', + 'resistance', +]; + +salvo_event.forEach(salvo_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${salvo_event}_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:absorption_salvo`) return + item.count-- + player.addItemCooldown(item, 200) + server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:instant_health_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.arrows.js b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js new file mode 100644 index 000000000..05962e312 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js @@ -0,0 +1,75 @@ +"use strict"; + +function registerTFGArrowRecipes(event) { + // Arrow Parts + event.recipes.tfc.knapping( + '4x tfg:flint_arrow_head', + 'tfg:flint', + [ + ' XXX', + ' XXXX', + 'XXXXX', + ' XXX ', + ' X ' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/flint_arrow_head') + + event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') + .itemInputs('1x minecraft:flint') + .itemOutputs('4x tfg:flint_arrow_head') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'minecraft:feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/fletching') + .itemInputs('1x minecraft:feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('4x minecraft:arrow', [ + ' A ', + ' B ', + ' C ' + ], { + A: 'tfg:flint_arrow_head', + B: '#forge:rods/wooden', + C: 'tfg:fletching' + }).id('tfg:shaped/arrow') + + // Wraptor feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'tfg:wraptor_wool', + '#forge:tools/knives' + ]).id('tfg:shapeless/wraptor_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') + .itemInputs('1x tfg:wraptor_wool') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + // Glider feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'wan_ancient_beasts:glider_feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/glider_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') + .itemInputs('1x wan_ancient_beasts:glider_feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.baskets.js b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js new file mode 100644 index 000000000..a6bdc30ff --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js @@ -0,0 +1,64 @@ +"use strict"; + +function registerTFGBasketRecipes(event) { + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfg:soaked_hardwood_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_wood') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') + .itemInputs( + '5x tfg:soaked_hardwood_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfc:soaked_papyrus_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_papyrus') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') + .itemInputs( + '5x tfc:soaked_papyrus_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), + ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rodLong, + GTMaterials.Aluminium, 1) + ) + .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) + .itemOutputs('tfg:aluminium_harvest_basket') + .duration(200) + .circuit(4) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.clay.js b/kubejs/server_scripts/tfg/primitive/recipes.clay.js new file mode 100644 index 000000000..153455c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.clay.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGClayRecipes(event) { + + event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') + + event.shaped('minecraft:clay', [ + 'AA', + 'AA' + ], { + A: 'minecraft:clay_ball' + }).id('tfg:shaped/clay_balls_to_block') + + event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) + .id('tfg:shapeless/clay_block_to_balls') + + global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { + event.smelting(element.output, element.input) + .id(`tfg:smelting/${element.name}`) + }) + + global.MINECRAFT_DYE_NAMES.forEach(dye => { + event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) + .id(`tfg:smelting/${dye}_glazed_vessel`) + + event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) + .id(`tfg:smelting/${dye}_large_vessel`) + }) + + for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + event.recipes.gtceu.extruder('tfg:unfired_clay_brick') + .itemInputs('minecraft:clay_ball') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_brick') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') + .itemInputs('tfc:fire_clay') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_fire_brick') + .duration(20) + .EUt(2) + + // Kaolinite Clay - regular smelting recipes can't have multiple inputs + event.recipes.gtceu.alloy_smelter('tfg:kaolinite') + .itemInputs('tfc:kaolin_clay') + .circuit(1) + .chancedOutput('tfc:powder/kaolinite', 2000, 0) + .duration(100) + .EUt(16) + + // Fire Clay + event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') + .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') + .itemOutputs('2x tfc:fire_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') + .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') + .itemOutputs('tfc:kaolin_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + // Compressed Coke Clay + event.shaped('gtceu:compressed_coke_clay', [ + 'AAA', + 'BCB', + 'BBB' + ], { + A: 'minecraft:clay_ball', + B: '#minecraft:sand', + C: 'gtceu:brick_wooden_form' + }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') + + // Coke Oven Brick + event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) + .resultItem('gtceu:coke_oven_brick') + .id('tfg:heating/coke_oven_bricks') + + event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') + .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') + .itemOutputs('gtceu:coke_oven_brick') + .duration(7.5 * 20) + .EUt(GTValues.VA[GTValues.ULV]) + + // Ceramic Recycling + event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') + .itemInputs('firmalife:pottery_sherd') + .itemOutputs('#forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:ceramic_molds') + .itemInputs('#tfc:fired_molds') + .itemOutputs('2x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:large_vessels') + .itemInputs('#tfc:fired_large_vessels') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:casting_channel') + .itemInputs('tfcchannelcasting:channel') + .itemOutputs('1x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:mold_table') + .itemInputs('tfcchannelcasting:mold_table') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.cloth.js b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js new file mode 100644 index 000000000..284666095 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js @@ -0,0 +1,263 @@ +"use strict"; + +function registerTFGClothRecipes(event) { + + //Cloth & String + event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') + .itemInputs('1x minecraft:phantom_membrane') + .itemOutputs('16x tfg:phantom_thread') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) + .itemOutputs('32x tfg:polycaprolactam_string') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') + .itemInputs('16x tfg:phantom_thread') + .itemOutputs('1x tfg:phantom_silk') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') + .itemInputs('16x tfg:polycaprolactam_string') + .itemOutputs('1x tfg:polycaprolactam_fabric') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') + .itemInputs('tfg:polycaprolactam_string') + .inputFluids(Fluid.of('gtceu:chlorine', 16)) + .itemOutputs('minecraft:string') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.loom( + '1x tfg:phantom_silk', + '16x tfg:phantom_thread', + 8, + 'tfg:block/phantom_silk_block' + ) + + event.recipes.tfc.loom( + '1x tfg:polycaprolactam_fabric', + '16x tfg:polycaprolactam_string', + 8, + 'tfg:block/polycaprolactam_fabric_block' + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('16x tfg:phantom_thread', [ + 'minecraft:phantom_membrane', + 'tfc:spindle' + ]).id('tfg:shapeless/phantom_thread')) + + // Wool Yarn + event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') + .itemInputs('tfc:wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + // Burlap Cloth + event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') + .itemInputs('12x tfc:jute_fiber') + .circuit(0) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + + // Silk Cloth + event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') + .itemInputs('24x minecraft:string') + .circuit(0) + .itemOutputs('tfc:silk_cloth') + .duration(100) + .EUt(4) + + // Wool Cloth + event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') + .itemInputs('16x tfc:wool_yarn') + .circuit(0) + .itemOutputs('tfc:wool_cloth') + .duration(100) + .EUt(4) + + // Cloths to Wool + event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') + .itemInputs('4x #tfc:sewing_light_cloth') + .itemOutputs('8x minecraft:white_wool') + .circuit(16) + .duration(100) + .EUt(4) + + // Wool Yarn + event.recipes.gtceu.macerator('macerate_wool') + .itemInputs('#minecraft:wool') + .itemOutputs('tfc:wool_yarn') + .chancedOutput('tfc:wool_yarn', 9000, 0) + .chancedOutput('tfc:wool_yarn', 5000, 0) + .chancedOutput('tfc:wool_yarn', 2000, 0) + .duration(200) + .EUt(2) + + // Jute Fiber + generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", + 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') + + //#region flax stuff + + event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) + event.recipes.gtceu.packer('tfg:packer/flax_bundle') + .itemInputs('9x tfg:flax_product') + .itemOutputs('tfg:flax_bundle') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) + event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') + .itemInputs('9x tfg:flax_waste') + .itemOutputs('tfg:bundled_scraped_flax') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.scraping( + 'tfg:flax_waste', + 'tfg:flax_product', + 'tfg:item/flax_waste', + 'tfg:item/flax_product', + '2x tfg:flax_line' + ).id('tfg:scraping/flax_line') + + event.recipes.tfc.scraping( + 'tfg:bundled_scraped_flax', + 'tfg:flax_bundle', + 'tfg:item/bundled_scraped_flax', + 'tfg:item/flax_bundle', + '18x tfg:flax_line' + ).id('tfg:scraping/flax_line_from_bundle') + + event.recipes.tfc.scraping( + 'tfc:groundcover/humus', + 'tfg:flax_waste', + 'tfc:item/groundcover/humus', + 'tfg:item/flax_waste', + 'tfg:flax_tow' + ).id('tfg:scraping/flax_tow') + + event.recipes.tfc.scraping( + '9x tfc:groundcover/humus', + 'tfg:bundled_scraped_flax', + 'tfc:item/groundcover/humus', + 'tfg:item/bundled_scraped_flax', + '9x tfg:flax_tow' + ).id('tfg:scraping/flax_tow_from_pile') + + event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') + .duration(540) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') + .itemInputs('tfg:flax_waste') + .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') + .itemInputs('tfg:bundled_scraped_flax') + .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(540) + .EUt(2) + + event.recipes.gtceu.centrifuge('tfg:flax_product') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(1800) + .EUt(GTValues.VA[GTValues.LV]) + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_product' }], + results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], + processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax') + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_bundle' }], + results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], + processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax_from_bundle') + + // #endregion + + //#region flax line spinning + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:linen_thread', [ + 'tfg:flax_line', + 'tfc:spindle' + ]).id('tfg:shapeless/linen_thread') + ) + + event.custom({ + type: 'vintageimprovements:coiling', + ingredients: [{ item: 'tfg:flax_line' }], + results: [{ item: 'tfg:linen_thread', count: 4 }], + processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_spin_flax_line') + + event.recipes.gtceu.wiremill('tfg:spin_flax_line') + .itemInputs('tfg:flax_line') + .itemOutputs('4x tfg:linen_thread') + .duration(80) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + //#region flax looming + event.recipes.tfc.loom( + '1x tfg:linen_cloth', + '16x tfg:linen_thread', + 8, + 'tfc:block/burlap' + ) + + event.recipes.tfc.loom( + '1x tfc:burlap_cloth', + '16x tfg:flax_tow', + 12, + 'tfc:block/burlap' + ) + + event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') + .itemInputs('16x tfg:linen_thread') + .circuit(10) + .itemOutputs('tfg:linen_cloth') + .duration(100) + .EUt(4) + + event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') + .itemInputs('16x tfg:flax_tow') + .circuit(10) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.compost.js b/kubejs/server_scripts/tfg/primitive/recipes.compost.js new file mode 100644 index 000000000..623e231a2 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.compost.js @@ -0,0 +1,194 @@ +"use strict"; + +function registerTFGCompostRecipes(event) { + //#region Fertiliser + event.recipes.gtceu.mixer('tfg:fertilizer') + .itemInputs( + '#tfc:dirt', + '2x #tfg:wood_dusts', + '4x #forge:sand' + ) + .circuit(1) + .inputFluids("#tfg:clean_water 1000") + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.mixer('tfg:fertilizer_2') + .itemInputs('tfc:compost') + .inputFluids('#tfg:clean_water 1000') + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') + .itemInputs('1x gtceu:fertilizer') + .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') + .duration(340) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') + .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) + .itemOutputs('1x gtceu:fertilizer') + .duration(160) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') + .itemInputs('#forge:wax') + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs('16x tfc:pure_nitrogen') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + + // Humus and compost + event.recipes.gtceu.extractor('tfg:humus_from_leaves') + .itemInputs('#minecraft:leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') + .itemInputs('4x gtceu:fertilizer') + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + + const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; + const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; + + let i = 0; + BROWNS.forEach(brown => { + GREENS.forEach(green => { + event.recipes.gtceu.mixer(`tfg:compost_${i++}`) + .itemInputs(brown, green) + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + }) + }) + + //Greens + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 1), [ + 'AB' + ], { + A: '#tfc:compost_greens_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 2), [ + 'AB' + ], { + A: '#tfc:compost_greens', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 4), [ + 'AB' + ], { + A: '#tfc:compost_greens_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_high') + + // Filters + const greens_low = Ingredient.of('#tfc:compost_greens_low') + const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds + const greens_medium = Ingredient.of('#tfc:compost_greens') + const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds + const greens_high = Ingredient.of('#tfc:compost_greens_high') + const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds + + let low_filtered = greens_low + let medium_filtered = greens_medium + let high_filtered = greens_high + + browns_low.forEach(item => { + low_filtered = low_filtered.subtract(item) + low_filtered = low_filtered.subtract('tfg:universal_compost_greens') + }) + browns_medium.forEach(item => { + medium_filtered = medium_filtered.subtract(item) + }) + browns_high.forEach(item => { + high_filtered = high_filtered.subtract(item) + }) + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') + .itemInputs(low_filtered) + .itemOutputs('tfg:universal_compost_greens') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') + .itemInputs(medium_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') + .itemInputs(high_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) + .duration(20) + .EUt(8) + + //Browns + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 1), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 2), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 4), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_high') + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') + .itemInputs('#tfc:compost_browns_low') + .itemOutputs('tfg:universal_compost_browns') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') + .itemInputs('#tfc:compost_browns') + .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') + .itemInputs('#tfc:compost_browns_high') + .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) + .duration(20) + .EUt(8) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.fishing_nets.js rename to kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js new file mode 100644 index 000000000..29ccd1771 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js @@ -0,0 +1,101 @@ +"use strict"; + +function registerTFGChipboardRecipes(event) { + + // Glue from resin + event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') + .itemInputs('tfc:glue') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') + .itemInputs('minecraft:bone_meal') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(100) + .EUt(5) + + // Chipboard + event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') + .itemInputs('2x #tfg:wood_dusts', + '1x #forge:wax') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') + .itemInputs('4x #tfg:wood_dusts', + '1x gtceu:sticky_resin') + .itemOutputs('4x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') + .itemInputs('2x #tfg:wood_dusts', + '1x tfc:glue') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') + .itemInputs('1x #tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs('1x tfg:chipboard_composite') + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.compressor('gtceu:wood_mdf') + .itemInputs('1x tfg:chipboard_composite') + .itemOutputs('gtceu:wood_plate') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') + .itemInputs('1x tfg:chipboard_composite') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:treated_chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') + .itemInputs('1x gtceu:wood_plate') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') + .itemInputs('#tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('gtceu:treated_wood_dust') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') + .itemInputs('tfg:treated_chipboard_composite') + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') + .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') + .itemOutputs('gtceu:resin_circuit_board') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.ice.js b/kubejs/server_scripts/tfg/primitive/recipes.ice.js new file mode 100644 index 000000000..b610d3c9a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.ice.js @@ -0,0 +1,104 @@ +"use strict"; + +function registerTFGIceRecipes(event) { + + // Ice + event.remove({ id: 'gtceu:compressor/ice_from_dust' }) + event.remove({ id: 'gtceu:compressor/ice_from_snow' }) + + event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) + .id('tfg:shaped/ice_shavings') + + event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') + .id('tfg:quern/ice_dust') + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') + .itemInputs('firmalife:ice_shavings') + .itemOutputs('#forge:small_dusts/ice') + .duration(10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') + .itemInputs('#forge:dusts/ice') + .itemOutputs('4x firmalife:ice_shavings') + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_solidifier('tfg:ice') + .inputFluids("#tfg:clean_water 144") + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('minecraft:ice') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) + + event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') + .itemInputs('1x tfg:dry_ice') + .inputFluids("#tfc:water 8000") + .outputFluids(Fluid.of('gtceu:ice', 8000)) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + + // Cooling water + event.recipes.tfc.barrel_sealed(250) + .inputItem('1x tfg:dry_ice') + .inputFluid(Fluid.of('minecraft:water', 5000)) + .outputFluid(Fluid.of('gtceu:ice', 5000)) + .id('tfg:barrel/cooling_water_0') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_1') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_2') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_3') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_4') + + // Freezing it + event.recipes.tfc.barrel_sealed(3000) + .inputItem('9x #forge:dusts/ice') + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputItem('minecraft:packed_ice') + .id('tfg:barrel/packed_ice') + + // Heating it back up + event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) + .fluidOutput(Fluid.of('minecraft:water', 144)) + + event.recipes.firmalife.vat() + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputFluid(Fluid.of('minecraft:water', 144)) + .length(300) + .temperature(100) + + // Snow + event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', + 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') + .id('tfg:stomping/snow_layer') + + event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) + .id('tfg:shapeless/snow_block') + + event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) + .id('tfg:shapeless/snowball') + + event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) + .id('tfg:shapeless/snow') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.knapping.js b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js similarity index 99% rename from kubejs/server_scripts/tfc/recipes.knapping.js rename to kubejs/server_scripts/tfg/primitive/recipes.knapping.js index 1240dd49d..8c9113e82 100644 --- a/kubejs/server_scripts/tfc/recipes.knapping.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCKnappingRecipes(event) { +function registerTFGKnappingRecipes(event) { //#region Топор diff --git a/kubejs/server_scripts/tfg/primitive/recipes.leather.js b/kubejs/server_scripts/tfg/primitive/recipes.leather.js new file mode 100644 index 000000000..4a99ace21 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.leather.js @@ -0,0 +1,212 @@ +// priority: 0 +"use strict"; + +function registerTFGLeatherRecipes(event) { + + // Limewater + event.recipes.gtceu.mixer('tfg:limewater_from_lime') + .itemInputs('tfc:powder/lime') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + event.recipes.gtceu.mixer('tfg:limewater_from_flux') + .itemInputs('tfc:powder/flux') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + // Tannin + event.recipes.gtceu.chemical_bath('tfg:tannin') + .itemInputs('#tfc:makes_tannin') + .inputFluids(Fluid.of('water', 1000)) + .outputFluids(Fluid.of('tfc:tannin', 1000)) + .duration(2400) + .EUt(16) + + // Soaked hides + event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide') + .itemInputs('tfc:small_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 300)) + .itemOutputs('tfc:small_soaked_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide') + .itemInputs('tfc:medium_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 400)) + .itemOutputs('tfc:medium_soaked_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide') + .itemInputs('tfc:large_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .itemOutputs('tfc:large_soaked_hide') + .duration(3200) + .EUt(16) + + // Scraped Hides + event.recipes.gtceu.cutter('tfg:small_scraped_hide') + .itemInputs('tfc:small_soaked_hide') + .itemOutputs('tfc:small_scraped_hide') + .duration(100) + .EUt(7) + + event.recipes.gtceu.cutter('tfg:medium_scraped_hide') + .itemInputs('tfc:medium_soaked_hide') + .itemOutputs('tfc:medium_scraped_hide') + .duration(100) + .EUt(7) + + event.recipes.gtceu.cutter('tfg:large_scraped_hide') + .itemInputs('tfc:large_soaked_hide') + .itemOutputs('tfc:large_scraped_hide') + .duration(100) + .EUt(7) + + // Prepared hides + event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide') + .itemInputs('tfc:small_soaked_hide') + .inputFluids(Fluid.of('water', 300)) + .itemOutputs('tfc:small_prepared_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide') + .itemInputs('tfc:medium_soaked_hide') + .inputFluids(Fluid.of('water', 400)) + .itemOutputs('tfc:medium_prepared_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide') + .itemInputs('tfc:large_soaked_hide') + .inputFluids(Fluid.of('water', 500)) + .itemOutputs('tfc:large_prepared_hide') + .duration(3200) + .EUt(16) + + // Leather + event.recipes.gtceu.chemical_bath('tfg:small_leather') + .itemInputs('tfc:small_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 300)) + .itemOutputs('minecraft:leather') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_leather') + .itemInputs('tfc:medium_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 400)) + .itemOutputs('2x minecraft:leather') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_leather') + .itemInputs('tfc:large_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 500)) + .itemOutputs('3x minecraft:leather') + .duration(3200) + .EUt(16) + + // 1x Small SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_1') + .itemInputs('tfc:small_sheepskin_hide') + .itemOutputs('tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Medium SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_2') + .itemInputs('tfc:medium_sheepskin_hide') + .itemOutputs('2x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Large SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_3') + .itemInputs('tfc:large_sheepskin_hide') + .itemOutputs('3x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + //Hide Sewing + const stages = [ + 'raw', + 'soaked', + 'scraped', + 'prepared', + 'sheepskin' + ]; + + stages.forEach(stage => { + //Combining + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:medium_${stage}_hide`, [ + `2x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) + ) + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:large_${stage}_hide`, [ + `3x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_large_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:medium_${stage}_hide`) + .itemInputs(`2x tfc:small_${stage}_hide`) + .duration(60) + .circuit(7) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:large_${stage}_hide`) + .itemInputs(`3x tfc:small_${stage}_hide`) + .duration(60) + .circuit(9) + .EUt(GTValues.VA[GTValues.ULV]) + + //Cutting + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`2x tfc:small_${stage}_hide`, [ + `1x tfc:medium_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`3x tfc:small_${stage}_hide`, [ + `1x tfc:large_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/large_to_small_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) + .itemOutputs(`2x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:medium_${stage}_hide`) + .duration(60) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) + .itemOutputs(`3x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:large_${stage}_hide`) + .duration(60) + .circuit(6) + .EUt(GTValues.VA[GTValues.ULV]) + }); + +} diff --git a/kubejs/server_scripts/tfg/recipes.medicine.js b/kubejs/server_scripts/tfg/primitive/recipes.medicine.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.medicine.js rename to kubejs/server_scripts/tfg/primitive/recipes.medicine.js diff --git a/kubejs/server_scripts/tfg/recipes.paper.js b/kubejs/server_scripts/tfg/primitive/recipes.paper.js similarity index 91% rename from kubejs/server_scripts/tfg/recipes.paper.js rename to kubejs/server_scripts/tfg/primitive/recipes.paper.js index ced487b9f..63cc6a933 100644 --- a/kubejs/server_scripts/tfg/recipes.paper.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.paper.js @@ -5,7 +5,34 @@ * @param {Internal.RecipesEventJS} event */ function registerTFGPapermakingRecipes(event) { - + + event.recipes.gtceu.cutter('tfg:unrefined_paper') + .itemInputs('tfc:unrefined_paper') + .itemOutputs('minecraft:paper') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') + .itemInputs('tfc:papyrus') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus') + .itemInputs('tfc:papyrus') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.assembler('papyrus_strips') + .itemInputs('4x tfc:soaked_papyrus_strip') + .itemOutputs('minecraft:paper') + .circuit(1) + .duration(100) + .EUt(7) + const generateVatRecipe = (id, inputItem, fluid, fluidAmount, output) => { event.custom({ "type": "firmalife:vat", diff --git a/kubejs/server_scripts/tfg/primitive/recipes.rubber.js b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js new file mode 100644 index 000000000..f607c75ea --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js @@ -0,0 +1,133 @@ +"use strict"; + +function registerTFGRubberRecipes(event) { + + // Sticky resin + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_latex') + + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_conifer_pitch') + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + + // Rubber Processing Line + event.recipes.firmalife.vat() + .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) + .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(300) + .id('tfg:vat/vulcanized_latex') + + event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) + .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) + .id('tfg:pot/vulcanized_latex') + + event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') + .duration(100) + .EUt(20) + .itemInputs('tfc:powder/sulfur') + .inputFluids(Fluid.of('tfg:latex', 1000)) + .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') + .duration(100) + .EUt(20) + .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + .itemOutputs('4x gtceu:raw_rubber_dust') + + event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') + .inputFluids(Fluid.of('gtceu:glue', 50)) + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:glue') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('2x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 7500, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .itemOutputs('3x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 5000, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) + .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') + .circuit(1) + .outputFluids(Fluid.of('tfg:latex', 1000)) + .duration(200) + .EUt(20) + + + // #region Primitive protection + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('tfg:prepared_leather_gloves') + .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) + .id('tfg:sealed_barrel/prepared_leather_gloves') + + event.recipes.firmalife.vat() + .outputItem('tfg:latex_soaked_gloves') + .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(200) + .id('tfg:vat/latex_soaked_gloves') + + event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') + .id('tfg:oven/rubber_gloves') + + event.remove({ id: 'gtceu:shaped/rubber_gloves' }) + + event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') + .itemInputs('2x #forge:plates/rubber') + .notConsumable('create:brass_hand') + .itemOutputs('gtceu:rubber_gloves') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.INGOT_MOLDING) + + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('gtceu:face_mask', [ + 'ACA', + 'ABA', + ' D ' + ], { + A: '#forge:string', + B: '#forge:cloth', + C: 'minecraft:paper', + D: '#tfc:sewing_needles' + }) + ).id('gtceu:shaped/face_mask') + + event.recipes.gtceu.assembler('assemble_face_mask') + .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') + .itemOutputs('gtceu:face_mask') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + .circuit(7) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.supports.js b/kubejs/server_scripts/tfg/primitive/recipes.supports.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.supports.js rename to kubejs/server_scripts/tfg/primitive/recipes.supports.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.vases.js b/kubejs/server_scripts/tfg/primitive/recipes.vases.js new file mode 100644 index 000000000..ac6355a85 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.vases.js @@ -0,0 +1,59 @@ +"use strict"; + +function registerTFGVaseRecipes(event) { + + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) + .itemOutputs(`tfg:decorative_vase/unfired/${color}`) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) + .resultItem(`tfg:decorative_vase/${color}`) + .id(`tfg:heating/decorative_vase/unfired/${color}`) + + event.recipes.tfc.barrel_sealed(1000) + .outputItem(`tfg:decorative_vase/unfired/${color}`) + .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) + .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) + .id(`tfg:barrel/dyeing/decorative_vase/${color}`) + + event.smelting( + `1x tfg:decorative_vase/${color}`, + `tfg:decorative_vase/unfired/${color}` + ).id(`tfg:smelting/decorative_vase/${color}`) + }) + + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of('gtceu:chlorine', 72)) + .itemOutputs('tfg:decorative_vase/unfired') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.smelting( + '1x tfg:decorative_vase', + 'tfg:decorative_vase/unfired' + ).id('tfg:smelting/decorative_vase') + + event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) + .resultItem('tfg:decorative_vase') + .id('tfg:heating/decorative_vase/unfired') + + event.recipes.tfc.knapping( + 'tfg:decorative_vase/unfired', + 'tfc:clay', + [ + ' X X ', + 'XX XX', + 'X X', + 'X X', + 'XXXXX' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/decorative_vase/unfired') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wax.js b/kubejs/server_scripts/tfg/primitive/recipes.wax.js new file mode 100644 index 000000000..3ebf064b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wax.js @@ -0,0 +1,64 @@ +"use strict"; + +function registerTFGWaxRecipes(event) { + + //forge:wax + event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') + + //paraffin + event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') + .circuit(7) + .itemOutputs('6x tfg:paraffin_wax') + .outputFluids(Fluid.of('gtceu:oil_light', 25)) + .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) + .duration(500) + .EUt(GTValues.VA[GTValues.LV]) + + // Rosin + event.recipes.firmalife.vat() + .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) + .outputItem('tfg:conifer_rosin') + .id('tfg:vat/conifer_pitch_to_rosin'); + + event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('tfg:conifer_rosin') + .id('tfg:pot/conifer_pitch_to_rosin') + + event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + .itemInputs('tfc:powder/charcoal') + .itemOutputs('tfg:conifer_rosin') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.LV]) + + //#region Wax Unification + + // Recipe Removals + event.remove({ id: 'gtceu:extractor/extract_honeycomb_block' }); + event.remove({ id: 'gtceu:extractor/extract_honeycomb' }); + event.remove({ id: 'gtceu:extractor/extract_wax_dust' }); + + // Extractor Recipe + event.recipes.gtceu.extractor('tfg:wax_melting') + .itemInputs(Ingredient.of('#forge:wax')) + .outputFluids(Fluid.of('gtceu:wax', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 16)) + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 36)) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wood.js b/kubejs/server_scripts/tfg/primitive/recipes.wood.js new file mode 100644 index 000000000..23367a412 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wood.js @@ -0,0 +1,236 @@ +"use strict"; + +function registerTFGWoodRecipes(event) { + + event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') + event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') + + // Wood ash + event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') + + event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') + .itemInputs('8x tfc:powder/wood_ash') + .inputFluids(Fluid.of('gtceu:air', 100)) + .outputFluids('gtceu:wood_gas 100') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') + .id('tfg:splashing/wash_torch') + + // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [{ item: 'tfc:torch' }], + result: { item: 'tfc:powder/wood_ash' } + }).id(`tfg:ae_transform/torch_to_wood_ash`) + + // Ladder + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#forge:rods/wooden' + }).id('gtceu:shaped/ladder') + + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#tfc:lumber' + }).id('tfc:crafting/vanilla/ladder') + + event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') + event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + + // Treated Wood + event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) + + event.recipes.tfc.barrel_sealed(4000) + .outputItem('gtceu:treated_wood_planks') + .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) + .id('tfg:barrel/treated_wood_planks') + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('gtceu:treated_wood_dust') + .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) + .id('tfg:barrel/treated_wood_dust') + + event.shaped('2x gtceu:treated_wood_door', [ + 'AA ', + 'AA ', + 'AA ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_door') + + event.shaped('3x gtceu:treated_wood_trapdoor', [ + 'AAA', + 'AAA', + ' ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_trapdoor') + + event.shaped('gtceu:treated_wood_pressure_plate', [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: 'gtceu:treated_wood_slab', + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id('gtceu:shaped/treated_pressure_plate') + + event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') + .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') + .itemOutputs('gtceu:treated_wood_pressure_plate') + .circuit(3) + .duration(50) + .EUt(2) + + event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + + // Empty Wooden Form + event.shaped('gtceu:empty_wooden_form', [ + ' AA', + 'BAA' + ], { + A: '#minecraft:planks', + B: '#forge:tools/saws' + }).id('gtceu:shaped/plank_to_wooden_shape') + + // Wood gears + event.shaped('gtceu:small_wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#forge:rods/wooden', + C: 'tfc:glue' + }).id('gtceu:shaped/small_gear_wood') + + event.shaped('gtceu:wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#minecraft:planks', + C: 'tfc:glue' + }).id('gtceu:shaped/gear_wood') + + // Sticks + event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') + + event.recipes.gtceu.cutter('tfg:saplings_to_sticks') + .itemInputs('#minecraft:saplings') + .itemOutputs('2x minecraft:stick') + .duration(20) + .EUt(7) + + event.recipes.gtceu.packer('tfg:stick_bunch') + .itemInputs('9x #forge:rods/wooden') + .circuit(5) + .itemOutputs('tfc:stick_bunch') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.packer('tfg:stick_bundle') + .itemInputs('18x #forge:rods/wooden') + .circuit(8) + .itemOutputs('tfc:stick_bundle') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + + // Какие то рецепты дерева + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) + event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) + event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) + + // Бревна -> Пиломатериалы + generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) + + // Доски -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) + + // Ступень -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) + + + // Плита -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) + + // ? -> Деревянная нажимная пластина + event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: `tfc:wood/planks/${wood}_slab`, + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id(`tfc:crafting/wood/${wood}_pressure_plate`) + + event.recipes.gtceu.assembler(`${wood}_pressure_plate`) + .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) + .circuit(3) + .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) + .duration(50) + .EUt(2) + + // ? -> Деревянная кнопка + event.remove({ id: `tfc:crafting/wood/${wood}_button` }) + + generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) + + // Stripped logs + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) + .itemInputs(`tfc:wood/log/${wood}`) + .itemOutputs(`tfc:wood/stripped_log/${wood}`) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) + .itemInputs(`tfc:wood/wood/${wood}`) + .itemOutputs(`tfc:wood/stripped_wood/${wood}`) + .duration(50) + .EUt(2) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/log/${wood}` }], + results: [{ item: `tfc:wood/stripped_log/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_log`) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/wood/${wood}` }], + results: [{ item: `tfc:wood/stripped_wood/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_wood`) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index 858f97f91..bbe860782 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -6,22 +6,77 @@ */ const registerTFGRecipes = (event) => { - registerTFGPapermakingRecipes(event) + registerTFGMoldRecipes(event) + registerTFGMiscellaneousRecipes(event) + registerTFGConvertingRecipes(event) + + registerTFGFoodRecipes(event) + registerTFGRefrigeratorRecipes(event) + registerTFGMealBagRecipes(event) + registerTFGBiomassRecipes(event) + + // TFC stone types + registerTFCStoneRecipes(event) + // Non-TFC stone types registerTFGRockRecipes(event) registerTFGCollapseRecipes(event) - registerTFGEarlyPower(event) - registerTFGMoldRecipes(event) - registerTFGMedicineRecipes(event) - registerTFGMiscellaneousRecipes(event) - registerTFGSupportRecipes(event) - registerTFGFishingNetsRecipes(event) - registerTFGConvertingRecipes(event) - registerTFGFoodRecipes(event) - registerTFGSpaceRecipes(event) registerTFGStoneDustRecipes(event) + registerTFGConcreteRecipes(event) + registerTFGAlabasterRecipes(event) + registerTFGDirtRecipes(event) + registerTFGSandRecipes(event) + + registerTFGPapermakingRecipes(event) + registerTFGMedicineRecipes(event) + registerTFGFishingNetsRecipes(event) + registerTFGSupportRecipes(event) + registerTFGVaseRecipes(event) + registerTFGIceRecipes(event) + registerTFGBasketRecipes(event) + registerTFGArrowRecipes(event) + registerTFGCompostRecipes(event) + registerTFGClothRecipes(event) + registerTFGChipboardRecipes(event) + registerTFGWaxRecipes(event) + registerTFGRubberRecipes(event) + registerTFGWoodRecipes(event) + registerTFGKnappingRecipes(event) + registerTFGLeatherRecipes(event) + registerTFGClayRecipes(event) + + registerTFGCasingRecipes(event) + registerTFGEnderPearlRecipes(event) + registerTFGMultiblockRecipes(event) + registerTFGSteamBloomeryRecipes(event) + registerTFGElectronicComponentsRecipes(event) + + registerTFGEarlyGasRecipes(event) + registerTFGBoilerRecipes(event) + registerTFGBiodieselRecipes(event) registerTFGNuclearRecipes(event) registerTFGNuclearComponentsRecipes(event) - registerTFGNOstrumRecipes(event) + registerTFGSolarRecipes(event) + registerTFGCoalRecipes(event) + + registerTFGZirconiumRecipes(event) + registerTFGBromineRecipes(event) + registerTFGTungstenRecipes(event) + registerTFGAlloyingRecipes(event) + registerTFGQuartzRecipes(event) + + registerTFGSpaceRecipes(event) + registerTFGRailgunRecipes(event) + registerTFGRocketRecipes(event) + registerTFGSpaceSuitRecipes(event) + registerTFGInsulationRecipes(event) + + registerTFGMoonRecipes(event) + registerTFGMoonPlantRecipes(event) + registerTFGMoonRegolithRecipes(event) + + registerTFGMarsRecipes(event) + registerTFGMarsIodineRecipes(event) + registerTFGMarsOstrumRecipes(event) + registerTFGBiochemRecipes(event) - registerTFGSpaceOres(event) } diff --git a/kubejs/server_scripts/tfg/recipes.miscellaneous.js b/kubejs/server_scripts/tfg/recipes.miscellaneous.js index 38d61ef34..bfa6163b8 100644 --- a/kubejs/server_scripts/tfg/recipes.miscellaneous.js +++ b/kubejs/server_scripts/tfg/recipes.miscellaneous.js @@ -7,13 +7,9 @@ */ function registerTFGMiscellaneousRecipes(event) { - //tfc:moss + //Moss event.replaceInput({}, 'minecraft:vine', '#tfc:moss') - //forge:wax - event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') - - //Moss event.shapeless('1x minecraft:moss_block', [ '#tfc:dirt', '#tfc:moss' @@ -25,354 +21,13 @@ function registerTFGMiscellaneousRecipes(event) { A: 'minecraft:moss_block' }).id(`tfg:shaped/moss_carpet`) - //paraffin - event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') - .circuit(7) - .itemOutputs('6x tfg:paraffin_wax') - .outputFluids(Fluid.of('gtceu:oil_light', 25)) - .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) - .duration(500) - .EUt(GTValues.VA[GTValues.LV]) - - // Rosin - event.recipes.firmalife.vat() - .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) - .outputItem('tfg:conifer_rosin') - .id('tfg:vat/conifer_pitch_to_rosin'); - - event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('tfg:conifer_rosin') - .id('tfg:pot/conifer_pitch_to_rosin') - - event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - .itemInputs('tfc:powder/charcoal') - .itemOutputs('tfg:conifer_rosin') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.LV]) - - // Decorative Vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) - .itemOutputs(`tfg:decorative_vase/unfired/${color}`) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) - .resultItem(`tfg:decorative_vase/${color}`) - .id(`tfg:heating/decorative_vase/unfired/${color}`) - - event.recipes.tfc.barrel_sealed(1000) - .outputItem(`tfg:decorative_vase/unfired/${color}`) - .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) - .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) - .id(`tfg:barrel/dyeing/decorative_vase/${color}`) - - event.smelting( - `1x tfg:decorative_vase/${color}`, - `tfg:decorative_vase/unfired/${color}` - ).id(`tfg:smelting/decorative_vase/${color}`) - }) - - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of('gtceu:chlorine', 72)) - .itemOutputs('tfg:decorative_vase/unfired') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.smelting( - '1x tfg:decorative_vase', - 'tfg:decorative_vase/unfired' - ).id('tfg:smelting/decorative_vase') - - event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) - .resultItem('tfg:decorative_vase') - .id('tfg:heating/decorative_vase/unfired') - - event.recipes.tfc.knapping( - 'tfg:decorative_vase/unfired', - 'tfc:clay', - [ - ' X X ', - 'XX XX', - 'X X', - 'X X', - 'XXXXX' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/decorative_vase/unfired') - - - //Scaffolding Frame - event.shaped('tfg:scaffolding_frame', - [ - ' A ', - 'ABA', - ' A ' - ], - { - A: '#forge:rods/wood', - B: '#forge:cloth' - }).id('tfg:shaped/scaffolding_frame'); - - //Airship Hull - event.shaped('tfg:airship_hull', [ - 'A B', - 'C C', - 'CCC' - ], { - A: '#forge:tools/screwdrivers', - B: '#forge:tools/hammers', - C: 'immersive_aircraft:hull' - }).id('tfg:shaped/airship_hull'); - event.recipes.gtceu.assembler('tfg:assembler/airship_hull') - .itemInputs('5x immersive_aircraft:hull') - .itemOutputs('tfg:airship_hull') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]); - - //Airship Balloon - event.shaped('tfg:airship_balloon', [ - 'ABA', - 'BAB', - 'ABA' - ], { - A: '#forge:string', - B: 'immersive_aircraft:sail' - }).id('tfg:shaped/airship_balloon') - - event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') - .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') - .itemOutputs('tfg:airship_balloon') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]) - - // Steam bloomery - event.shaped('gtceu:steam_bloomery', [ - 'CEC', - 'DAD', - 'CBC' - ], { - A: 'tfc:bloomery', - B: '#forge:frames/bronze', - C: '#forge:rods/black_steel', - D: '#forge:screws/wrought_iron', - E: '#forge:tools/wrenches' - }) - - // Arrow Parts - event.recipes.tfc.knapping( - '4x tfg:flint_arrow_head', - 'tfg:flint', - [ - ' XXX', - ' XXXX', - 'XXXXX', - ' XXX ', - ' X ' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/flint_arrow_head') - - event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') - .itemInputs('1x minecraft:flint') - .itemOutputs('4x tfg:flint_arrow_head') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'minecraft:feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/fletching') - .itemInputs('1x minecraft:feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('4x minecraft:arrow', [ - ' A ', - ' B ', - ' C ' - ], { - A: 'tfg:flint_arrow_head', - B: '#forge:rods/wooden', - C: 'tfg:fletching' - }).id('tfg:shaped/arrow') - - // Ice - event.remove({ id: 'gtceu:compressor/ice_from_dust' }) - event.remove({ id: 'gtceu:compressor/ice_from_snow' }) - - event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) - .id('tfg:shaped/ice_shavings') - - event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') - .id('tfg:quern/ice_dust') - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') - .itemInputs('firmalife:ice_shavings') - .itemOutputs('#forge:small_dusts/ice') - .duration(10) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') - .itemInputs('#forge:dusts/ice') - .itemOutputs('4x firmalife:ice_shavings') - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_solidifier('tfg:ice') - .inputFluids("#tfg:clean_water 144") - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('minecraft:ice') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) - - event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') - .itemInputs('1x tfg:dry_ice') - .inputFluids("#tfc:water 8000") - .outputFluids(Fluid.of('gtceu:ice', 8000)) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - - // Cooling water - event.recipes.tfc.barrel_sealed(250) - .inputItem('1x tfg:dry_ice') - .inputFluid(Fluid.of('minecraft:water', 5000)) - .outputFluid(Fluid.of('gtceu:ice', 5000)) - .id('tfg:barrel/cooling_water_0') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_1') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_2') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_3') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_4') - - // Freezing it - event.recipes.tfc.barrel_sealed(3000) - .inputItem('9x #forge:dusts/ice') - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputItem('minecraft:packed_ice') - .id('tfg:barrel/packed_ice') - - // Heating it back up - event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) - .fluidOutput(Fluid.of('minecraft:water', 144)) - - event.recipes.firmalife.vat() - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputFluid(Fluid.of('minecraft:water', 144)) - .length(300) - .temperature(100) - - // Snow - event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', - 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') - .id('tfg:stomping/snow_layer') - - event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) - .id('tfg:shapeless/snow_block') - - event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) - .id('tfg:shapeless/snowball') - - event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) - .id('tfg:shapeless/snow') - - //Cloth & String - event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') - .itemInputs('1x minecraft:phantom_membrane') - .itemOutputs('16x tfg:phantom_thread') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) - .itemOutputs('32x tfg:polycaprolactam_string') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') - .itemInputs('16x tfg:phantom_thread') - .itemOutputs('1x tfg:phantom_silk') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') - .itemInputs('16x tfg:polycaprolactam_string') - .itemOutputs('1x tfg:polycaprolactam_fabric') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') - .itemInputs('tfg:polycaprolactam_string') - .inputFluids(Fluid.of('gtceu:chlorine', 16)) - .itemOutputs('minecraft:string') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.loom( - '1x tfg:phantom_silk', - '16x tfg:phantom_thread', - 8, - 'tfg:block/phantom_silk_block' - ) - - event.recipes.tfc.loom( - '1x tfg:polycaprolactam_fabric', - '16x tfg:polycaprolactam_string', - 8, - 'tfg:block/polycaprolactam_fabric_block' - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('16x tfg:phantom_thread', [ - 'minecraft:phantom_membrane', - 'tfc:spindle' - ]).id('tfg:shapeless/phantom_thread')) - // Universal Circuit global.UNIVERSAL_CIRCUIT_TIERS.forEach(tier => { event.shapeless(Item.of(`tfg:${tier}_universal_circuit`, 1), [Ingredient.of([`#gtceu:circuits/${tier}`]).subtract([`tfg:${tier}_universal_circuit`])] ).id(`universal_circuits_${tier}`); }); - + // Armor stands event.shapeless('1x tfg:armor_stand_arms', [ 'minecraft:armor_stand' ]).id(`tfg:shapeless/armor_stand_arms`) @@ -381,6 +36,7 @@ function registerTFGMiscellaneousRecipes(event) { 'tfg:armor_stand_arms' ]).id(`tfg:shapeless/armor_stand`) + // Piglin disguise event.recipes.tfc.sewing( '1x tfg:piglin_disguise', [ @@ -397,7 +53,7 @@ function registerTFGMiscellaneousRecipes(event) { ] ).id('tfg:sewing/piglin_disguise') - //trowel + //Trowel event.shaped('tfg:trowel', [ 'DBC', 'AA ', @@ -416,844 +72,6 @@ function registerTFGMiscellaneousRecipes(event) { .circuit(4) .EUt(GTValues.VA[GTValues.ULV]) - // Food related - event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') - .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) - .itemOutputs('1x tfg:foil_pack') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('2x tfg:dry_ice') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .duration(160) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('10x tfg:dry_ice') - .duration(60) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') - .itemInputs('1x tfg:dry_ice') - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.mixer('tfg:clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids(Fluid.of('gtceu:distilled_water', 10)) - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(2) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [ - { item: 'tfg:used_foil_pack' }], - result: { item: 'tfg:clean_foil_pack' } - }).id('tfg:ae_transform/clean_foil_pack') - - event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') - .id('tfg:splashing/clean_foil_pack') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/calorie_paste' - ]).id('tfg:shapeless/emptying/calorie_paste') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/meal_bag' - ]).id('tfg:shapeless/emptying/meal_bag') - - global.FOOD_FRUIT.forEach(fruit => { - event.shapeless('1x tfg:used_foil_pack', [ - `tfg:food/freeze_dried/${fruit.name}` - ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) - }) - - // Refrigerants - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') - .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) - .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) - .duration(480) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) - .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') - .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) - .circuit(4) - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') - .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) - .circuit(4) - .duration(480) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.cracker('tfg:cracker/isobutane') - .inputFluids(Fluid.of('gtceu:butane', 4000)) - .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) - .circuit(4) - .duration(2400) - .EUt(GTValues.VA[GTValues.HV]) - - // Biofuels - - event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.extractor(`rapeseed_oil`) - .itemInputs('tfg:rapeseed_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 600)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.extractor(`sunflower_oil`) - .itemInputs('tfg:sunflower_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 350)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 250)) - .id('tfg:barrel/rapeseed_to_oil') - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 120)) - .id('tfg:barrel/sunflower_to_oil') - - // Not-ender pearl stuff - - event.recipes.gtceu.chemical_reactor('kaolinite') - .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('kaolinite_ruby') - .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') - .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemOutputs('tfg:vitrified_pearl') - .chancedOutput('gtceu:ash_dust', 2500, 0) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') - .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') - .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.macerator('vitrified_ender_pearl') - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('#forge:dusts/vitrified_pearl') - .duration(40) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), - C: '#gtceu:circuits/mv', - D: 'tfg:vitrified_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') - - event.recipes.gtceu.assembler('field_generator_mv') - .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') - .itemOutputs('gtceu:mv_field_generator') - .duration(100) - .EUt(30) - - // Harvest Baskets - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfg:soaked_hardwood_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_wood') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') - .itemInputs( - '5x tfg:soaked_hardwood_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfc:soaked_papyrus_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_papyrus') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') - .itemInputs( - '5x tfc:soaked_papyrus_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), - ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rodLong, - GTMaterials.Aluminium, 1) - ) - .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) - .itemOutputs('tfg:aluminium_harvest_basket') - .duration(200) - .circuit(4) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - //Rock-wool stuff - event.recipes.gtceu.mixer('tfg:aes_mix') - .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') - .itemOutputs('10x tfg:aes_mix_dust') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') - .itemInputs('2x tfg:aes_mix_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .chancedOutput('gtceu:ash_dust', 3000, 0) - .circuit(1) - .duration(400) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') - .itemInputs('2x tfg:aes_mix_dust') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .circuit(2) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:aes_wool') - .inputFluids(Fluid.of('tfg:molten_aes', 200)) - .itemOutputs('tfg:aes_wool') - .duration(30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') - .itemInputs('4x tfg:aes_wool') - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('tfg:aes_compressed_wool') - .duration(40) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') - .itemInputs('tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 72)) - .circuit(1) - .itemOutputs('tfg:aes_insulation_sheet') - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 648)) - .itemOutputs('tfg:aes_insulation_roll') - .circuit(9) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.assembler('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:aes_insulation_roll', [ - 'AAA', - 'AAA', - 'AAA' - ], { - A: 'tfg:aes_insulation_sheet' - }).id('tfg:shaped/aes_insulation_roll') - - event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('9x tfg:aes_insulation_sheet', [ - 'tfg:aes_insulation_roll' - ]).id('tfg:shapeless/aes_insulation_sheet') - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') - .itemInputs('tfg:aes_insulation_sheet') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 800)) - .chancedOutput('gtceu:ash_dust', 2500, 0) - .circuit(1) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') - .itemInputs('tfg:aes_insulation_roll') - .inputFluids(Fluid.of('gtceu:helium', 1000)) - .itemOutputs('2x gtceu:ash_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 7200)) - .circuit(9) - .duration(1000) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') - .itemInputs('tfg:sniffer_wool') - .chancedOutput('gtceu:ash_dust', 7500, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 200)) - .circuit(4) - .duration(80) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') - .itemInputs('tfg:wraptor_wool') - .chancedOutput('gtceu:ash_dust', 5000, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 100)) - .circuit(8) - .duration(60) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('8x tfc:wool_yarn', [ - 'tfc:spindle', - 'tfg:glacian_wool' - ]).id('tfg:shapeless/glacian_wool_to_yarn')) - - event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') - .itemInputs('tfg:glacian_wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'tfg:wraptor_wool', - '#forge:tools/knives' - ]).id('tfg:shapeless/wraptor_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') - .itemInputs('1x tfg:wraptor_wool') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - - //endregion - - //#region Casings - global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { - const multiplier = index + 1 - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) - ) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) - .circuit(4) - .duration(400) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) - .circuit(7) - .duration(600) - .EUt(GTValues.VA[GTValues.MV]) - }) - - event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') - .itemInputs( - '2x #forge:plates/desh', - 'gtceu:mv_voltage_coil', - '5x tfg:dry_ice', - 'gtceu:nonconducting_casing' - ) - .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) - .itemOutputs('6x tfg:electromagnetic_accelerator') - .circuit(4) - .duration(800) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) - ) - .inputFluids(Fluid.of('gtceu:silicon', 72)) - .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') - .circuit(6) - .duration(20 * (2.5)) - .EUt(GTValues.VH[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_lens') - .itemInputs( - '24x #forge:lenses', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 1296)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_inr') - .itemInputs( - '1x gtceu:neutron_reflector', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .itemOutputs('2x tfg:reflector') - .circuit(9) - .duration(20 * (20)) - .EUt(GTValues.VH[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_certus') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 488)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .dimension('ad_astra:moon') - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.MV]) - - //#endregion - - //region ammonia borane - event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') - .itemInputs('#forge:dusts/sodium') - .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('2x #forge:dusts/sodium_hydride') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') - .itemInputs('23x #forge:dusts/borax') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 5000)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') - .itemInputs('7x #forge:dusts/boric_acid') - .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) - .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') - .itemInputs('4x #forge:dusts/sodium_hydride') - .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) - .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') - .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') - .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //region polyurethane - event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') - .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) - .notConsumable('#forge:dusts/iron') - .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) - .duration(140) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') - .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) - .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(120) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') - .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) - .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') - .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) - .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') - .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) - .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') - .outputFluids(Fluid.of('gtceu:methanol', 2000)) - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') - .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') - .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:aes_polyurethane') - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - - //endregion - - //Aerogel - event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') - .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) - .itemInputs('3x #forge:dusts/silicon_dioxide') - .notConsumable('#forge:small_dusts/potassium_hydroxide') - .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) - .outputFluids(Fluid.of('gtceu:methanol', 4000)) - .itemOutputs('3x #forge:dusts/silicon_dioxide') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), - Fluid.of('gtceu:hydrochloric_acid', 100)) - .outputFluids(Fluid.of('tfg:silica_gel', 1000)) - .duration(300) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') - .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) - .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') - .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:silica_aerogel') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //Tier 3 insulation - event.recipes.gtceu.forming_press('tfg:mli_shielding') - .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') - .itemOutputs('tfg:mli_shielding') - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //#region Universal compost - - //Greens - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 1), [ - 'AB' - ], { - A: '#tfc:compost_greens_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 2), [ - 'AB' - ], { - A: '#tfc:compost_greens', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 4), [ - 'AB' - ], { - A: '#tfc:compost_greens_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_high') - - // Filters - const greens_low = Ingredient.of('#tfc:compost_greens_low') - const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds - const greens_medium = Ingredient.of('#tfc:compost_greens') - const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds - const greens_high = Ingredient.of('#tfc:compost_greens_high') - const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds - - let low_filtered = greens_low - let medium_filtered = greens_medium - let high_filtered = greens_high - - browns_low.forEach(item => { - low_filtered = low_filtered.subtract(item) - low_filtered = low_filtered.subtract('tfg:universal_compost_greens') - }) - browns_medium.forEach(item => { - medium_filtered = medium_filtered.subtract(item) - }) - browns_high.forEach(item => { - high_filtered = high_filtered.subtract(item) - }) - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') - .itemInputs(low_filtered) - .itemOutputs('tfg:universal_compost_greens') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') - .itemInputs(medium_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') - .itemInputs(high_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) - .duration(20) - .EUt(8) - - //Browns - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 1), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 2), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 4), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_high') - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') - .itemInputs('#tfc:compost_browns_low') - .itemOutputs('tfg:universal_compost_browns') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') - .itemInputs('#tfc:compost_browns') - .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') - .itemInputs('#tfc:compost_browns_high') - .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) - .duration(20) - .EUt(8) - - //#endregion - // Etching Tip event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('tfg:etching_diamond_tip', [ '#forge:tools/hammers', @@ -1263,220 +81,7 @@ function registerTFGMiscellaneousRecipes(event) { event.replaceInput({ id: "minecraft:jukebox" }, 'minecraft:diamond', 'tfg:etching_diamond_tip'); - //Large Nest - event.shaped('tfg:large_nest_box', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:crimson_thatch', - B: 'beneath:crimson_straw' - }).id('tfg:shaped_large_nest_crimson') - - event.shaped('tfg:large_nest_box_warped', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:warped_thatch', - B: 'beneath:warped_straw' - }).id('tfg:shaped_large_nest_warped') - - //#endregion - - //#region flax stuff - - event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) - event.recipes.gtceu.packer('tfg:packer/flax_bundle') - .itemInputs('9x tfg:flax_product') - .itemOutputs('tfg:flax_bundle') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) - event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') - .itemInputs('9x tfg:flax_waste') - .itemOutputs('tfg:bundled_scraped_flax') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.scraping( - 'tfg:flax_waste', - 'tfg:flax_product', - 'tfg:item/flax_waste', - 'tfg:item/flax_product', - '2x tfg:flax_line' - ).id('tfg:scraping/flax_line') - - event.recipes.tfc.scraping( - 'tfg:bundled_scraped_flax', - 'tfg:flax_bundle', - 'tfg:item/bundled_scraped_flax', - 'tfg:item/flax_bundle', - '18x tfg:flax_line' - ).id('tfg:scraping/flax_line_from_bundle') - - event.recipes.tfc.scraping( - 'tfc:groundcover/humus', - 'tfg:flax_waste', - 'tfc:item/groundcover/humus', - 'tfg:item/flax_waste', - 'tfg:flax_tow' - ).id('tfg:scraping/flax_tow') - - event.recipes.tfc.scraping( - '9x tfc:groundcover/humus', - 'tfg:bundled_scraped_flax', - 'tfc:item/groundcover/humus', - 'tfg:item/bundled_scraped_flax', - '9x tfg:flax_tow' - ).id('tfg:scraping/flax_tow_from_pile') - - event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') - .duration(540) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') - .itemInputs('tfg:flax_waste') - .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') - .itemInputs('tfg:bundled_scraped_flax') - .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(540) - .EUt(2) - - event.recipes.gtceu.centrifuge('tfg:flax_product') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(1800) - .EUt(GTValues.VA[GTValues.LV]) - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_product' }], - results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], - processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax') - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_bundle' }], - results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], - processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax_from_bundle') - - //#region flax line spining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:linen_thread', [ - 'tfg:flax_line', - 'tfc:spindle' - ]).id('tfg:shapeless/linen_thread') - ) - - event.custom({ - type: 'vintageimprovements:coiling', - ingredients: [{ item: 'tfg:flax_line' }], - results: [{ item: 'tfg:linen_thread', count: 4 }], - processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_spin_flax_line') - - event.recipes.gtceu.wiremill('tfg:spin_flax_line') - .itemInputs('tfg:flax_line') - .itemOutputs('4x tfg:linen_thread') - .duration(80) - .EUt(GTValues.VA[GTValues.LV]) - - //#region flax looming - event.recipes.tfc.loom( - '1x tfg:linen_cloth', - '16x tfg:linen_thread', - 8, - 'tfc:block/burlap' - ) - - event.recipes.tfc.loom( - '1x tfc:burlap_cloth', - '16x tfg:flax_tow', - 12, - 'tfc:block/burlap' - ) - - event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') - .itemInputs('16x tfg:linen_thread') - .circuit(10) - .itemOutputs('tfg:linen_cloth') - .duration(100) - .EUt(4) - - event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') - .itemInputs('16x tfg:flax_tow') - .circuit(10) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - - - event.recipes.gtceu.assembler('tfg:titanium_concrete') - .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') - .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) - .itemOutputs('tfg:titanium_concrete') - .circuit(2) - .duration(20) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/light_blue') - .itemOutputs('tfg:titanium_concrete_bricks') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/pink') - .itemOutputs('tfg:titanium_concrete_bricks_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/green') - .itemOutputs('tfg:titanium_concrete_bricks_square') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/red') - .itemOutputs('tfg:titanium_concrete_tile') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/black') - .itemOutputs('tfg:titanium_concrete_tile_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - // Interplanetary ae2 card - event.recipes.gtceu.assembler('tfg:wireless_card') .itemInputs( 'ae2:advanced_card', @@ -1529,35 +134,5 @@ function registerTFGMiscellaneousRecipes(event) { }); TFGHelpers.registerMaterialInfo('tfg:rnr_plow', {'cobalt_brass': 5, 'invar': 2, 'steel': 2, 'wrought_iron': 2, 'rubber': 1, 'treated_wood': 1}); - //#endregion - //#region Wax Unification - - // Recipe Removals - event.remove({id: 'gtceu:extractor/extract_honeycomb_block'}); - event.remove({id: 'gtceu:extractor/extract_honeycomb'}); - event.remove({id: 'gtceu:extractor/extract_wax_dust'}); - - // Extractor Recipe - event.recipes.gtceu.extractor('tfg:wax_melting') - .itemInputs(Ingredient.of('#forge:wax')) - .outputFluids(Fluid.of('gtceu:wax', 144)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 16)) - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 36)) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - //#endregion } diff --git a/kubejs/server_scripts/tfg/recipes.space.js b/kubejs/server_scripts/tfg/recipes.space.js deleted file mode 100644 index 17fb6edab..000000000 --- a/kubejs/server_scripts/tfg/recipes.space.js +++ /dev/null @@ -1,457 +0,0 @@ -// priority: 0 -"use strict"; - -/** - * @param {Internal.RecipesEventJS} event - */ -function registerTFGSpaceRecipes(event) { - - const allowedCombustibleDims = [ - { - dimension: "minecraft:the_nether", - type: "dimension" - }, - { - dimension: "minecraft:overworld", - type: "dimension" - } - ] - - event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - - // Air collector - - event.recipes.gtceu.gas_collector('tfg:nether') - .circuit(2) - .outputFluids(Fluid.of('gtceu:air', 10000)) - .dimension('minecraft:the_nether') - .duration(200) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:moon') - .circuit(3) - .outputFluids(Fluid.of('gtceu:argon', 1)) - .dimension('ad_astra:moon') - .duration(20*60*30) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:mars') - .circuit(4) - .outputFluids(Fluid.of('tfg:mars_air', 10000)) - .dimension('ad_astra:mars') - .duration(20*10) - .EUt(16) - - event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 4000)) - .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 10000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) - .duration(1600) - .EUt(GTValues.VA[GTValues.MV]) - - // TODO: move neon and xenon somewhere else - event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') - .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) - .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) - .outputFluids(Fluid.of('gtceu:argon', 5000)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('gtceu:krypton', 1000)) - .outputFluids(Fluid.of('gtceu:neon', 1000)) - .outputFluids(Fluid.of('gtceu:xenon', 1000)) - .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) - .disableDistilleryRecipes(true) - .duration(2000) - .EUt(GTValues.VA[GTValues.EV]) - - // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues - - let aaCircuit = 1; - - event.recipes.gtceu.aqueous_accumulator('water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('sea_water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - .adjacentFluids(["tfc:salt_water"]) - .outputFluids(Fluid.of("tfc:salt_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') - .circuit(aaCircuit++) - .dimension('ad_astra:mars') - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) - .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_overworld') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_nether') - .circuit(aaCircuit++) - .dimension('minecraft:the_nether') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('spring_water') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .adjacentFluids(["tfc:spring_water"]) - .outputFluids(Fluid.of("tfc:spring_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('more_water') - .circuit(aaCircuit++) - .duration(10) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 16000)) - - - // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, - // and we're using helium-3 as the fertiliser - - // Chorus - event.recipes.gtceu.greenhouse('tfg:chorus') - .notConsumable('8x tfg:lunar_chorus_flower') - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:chorus_helium') - .notConsumable('8x tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .duration(12000) // 10 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - // Replace the built-in greg one to add a circuit - event.recipes.gtceu.fermenter('fermented_biomass') - .inputFluids(Fluid.of('gtceu:biomass', 100)) - .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) - .circuit(1) - .duration(150) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:chorus') - .itemInputs('minecraft:chorus_fruit') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.fermenter('tfg:chorus_flower') - .itemInputs('tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.mixer('tfg:bio_glowstone') - .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .itemOutputs('2x minecraft:glowstone_dust') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.EV]) - .dimension('ad_astra:mars') - - // Lightblooms - event.recipes.gtceu.greenhouse('tfg:lightbloom') - .notConsumable('8x minecraft:twisting_vines') - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) - .chancedOutput('minecraft:verdant_froglight', 2500, 0) - .chancedOutput('minecraft:ochre_froglight', 2500, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') - .notConsumable('8x minecraft:twisting_vines') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) - .chancedOutput('minecraft:verdant_froglight', 3500, 0) - .chancedOutput('minecraft:ochre_froglight', 3500, 0) - .duration(12000) // 30 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.brewery('biomass_from_twisting_vines') - .itemInputs('minecraft:twisting_vines') - .inputFluids("#tfg:clean_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(50) - .EUt(3) - - // Space suit gases - - event.recipes.gtceu.gas_pressurizer('compressed_nitrox') - .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox') - .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') - .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - //Cryo Fluix Pearl - event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('tfg:cryo_fluix_pearl') - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Railgun stuff - // (the railgun inputs and outputs are in tfg-core) - - - //item bus to railgun item bus conversion recipes - const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] - GTTiers.forEach(x => { - event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) - .itemInputs(`gtceu:${x}_input_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_in`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) - .itemInputs(`gtceu:${x}_output_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_out`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - }) - - //Railgun ammo - event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') - .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') - .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_best') - .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') - .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .dimension('ad_astra:moon') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') - .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .dimension('ad_astra:mars') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ - 'RMR', - 'MBM', - 'CCC' - ], { - B: 'gtceu:mv_input_bus', - R: 'gtceu:mv_robot_arm', - M: 'gtceu:mv_electric_motor', - C: '#forge:single_cables/annealed_copper' - }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') - - event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ - 'CDC', - 'SHE', - 'WCW' - ], { - C: '#gtceu:circuits/hv', - D: 'gtceu:computer_monitor_cover', - S: 'gtceu:hv_sensor', - H: 'gtceu:hv_machine_hull', - E: 'gtceu:hv_emitter', - W: '#forge:single_cables/silver' - }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ - 'NSN', - 'CHC', - 'NEN' - ], { - C: '#gtceu:circuits/ev', - S: 'gtceu:hv_sensor', - E: 'gtceu:hv_emitter', - H: 'gtceu:ev_machine_hull', - N: '#forge:plates/hsla_steel' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ - 'CSC', - 'WHW', - 'CSC' - ], { - C: '#gtceu:circuits/mv', - S: 'gtceu:mv_sensor', - W: '#forge:double_cables/copper', - H: 'gtceu:mv_machine_hull' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') - - // Mars tree tapping - - event.recipes.gtceu.autoclave('tfg:crimsene') - .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) - .itemOutputs('#forge:gems/crimsene') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.autoclave('tfg:warpane') - .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:gems/warpane') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.macerator('tfg:crimsene') - .itemInputs('#forge:gems/crimsene') - .itemOutputs('#forge:dusts/crimsene') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:warpane') - .itemInputs('#forge:gems/warpane') - .itemOutputs('#forge:dusts/warpane') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.mixer('tfg:mars_sap') - .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) - .itemOutputs('#forge:dusts/mycelienzene') - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') - .itemInputs('#forge:dusts/mycelienzene') - .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) - // TODO: change these to something appropriate - .blastFurnaceTemp(100) - .duration(30 * 10) - - event.recipes.gtceu.centrifuge('mars_sap_separation') - .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) - .outputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:krypton', 1000), - Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') - .inputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:dusts/iodine') - .outputFluids(Fluid.of('gtceu:methane', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') - .inputFluids( - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:oxygen', 1500)) - .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') - .outputFluids(Fluid.of('tfg:heavy_water', 1500)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.space_ores.js b/kubejs/server_scripts/tfg/recipes.space_ores.js deleted file mode 100644 index ce2a650ae..000000000 --- a/kubejs/server_scripts/tfg/recipes.space_ores.js +++ /dev/null @@ -1,259 +0,0 @@ -// priority: 0 - -function registerTFGSpaceOres(event) { - - //#region Moon Harvester - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') - .biome('tfg:moon/lunar_asurine_dense') - .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(1) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') - .biome('tfg:moon/lunar_chorus_dense') - .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(2) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') - .biome('tfg:moon/lunar_corals_dense') - .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(3) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') - .biome('tfg:moon/lunar_lights_dense') - .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(4) - - //#endregion - - //#region Regolith Vapor Processing - - event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') - .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') - .itemOutputs('#forge:dusts/regolith_mush') - .dimension('ad_astra:moon') - .duration(20 * 60) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') - .itemInputs('#forge:dusts/regolith_mush') - .inputFluids('gtceu:nitrogen 1000') - .itemOutputs('#forge:dusts/silicon_dioxide') - .outputFluids('gtceu:regolith_vapor 1000') - .dimension('ad_astra:moon') - .duration(20 * 28) - .EUt(GTValues.VHA[GTValues.LV]) - - //#endregion - - //#region Making Dusty Ores - - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') - .itemInputs('#forge:dusts/certus_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_certus_quartz') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') - .itemInputs('#forge:dusts/goethe_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_goethite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') - .itemInputs('#forge:dusts/bright_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) - .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') - .itemInputs('#forge:dusts/cassiterite_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_cassiterite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - //#endregion - - //#region Basic dusty ore centrifuging - - // These have special recipes - const DUSTY_ORE_EXCEPTIONS = [ - GTMaterials.Goethite, - GTMaterials.Cassiterite, - GTMaterials.Bauxite - ] - - // Otherwise everything else just centrifuges into its dust version - forEachMaterial(material => { - if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) - return; - - const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) - const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) - - if (dustyOre !== null && dust !== null) { - event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) - .itemInputs(dustyOre) - .itemOutputs(dust) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - } - }) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') - .itemInputs('#forge:dusty_raw_materials/goethite') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('#forge:dusts/iron', 5000, 0) - .chancedOutput('#forge:dusts/copper', 5000, 0) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') - .itemInputs('#forge:dusty_raw_materials/bauxite') - .itemOutputs('#forge:dusts/aluminium') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') - .itemInputs('#forge:dusty_raw_materials/cassiterite') - .itemOutputs('#forge:dusts/tin') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - //#region Mars Ores Line - - // Ostrum Harvester - - event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) - .perTick(true) - .inputFluids('gtceu:drilling_fluid 4') - .perTick(false) - .dimension('ad_astra:mars') - .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.LV]); - - // Ostrum Linear Accelerator Recipes - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') - .inputFluids('gtceu:lightweight_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('tfg:heavy_water', 1000)) - .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') - .inputFluids('gtceu:ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:radon', 100)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') - .inputFluids('gtceu:dense_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - - // #region Zirconium - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') - .itemInputs('#forge:dusts/silicon') - .inputFluids('gtceu:chlorine 4000') - .outputFluids('tfg:silicon_tetrachloride 1000') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') - .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') - .itemOutputs('#forge:dusts/silicon') - .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') - .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') - .inputFluids('gtceu:chlorine 8000') - .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') - .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') - .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') - .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') - .duration(55 * 20) - .blastFurnaceTemp(4241) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') - .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') - .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') - .itemOutputs('5x #forge:dusts/zirconium_bromide') - .outputFluids('gtceu:carbon_monoxide 2000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') - .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') - .notConsumable('#forge:dusts/carbon') - .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') - .outputFluids('gtceu:bromine 8000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') - .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') - .inputFluids('gtceu:oxygen 6000') - .itemOutputs('5x #forge:dusts/boron_carbide') - .outputFluids('gtceu:carbon_monoxide 6000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - // #endregion -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.insulation.js b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js new file mode 100644 index 000000000..40bd3062d --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js @@ -0,0 +1,234 @@ +"use strict"; + +function registerTFGInsulationRecipes(event) { + + //#region Rock-wool stuff + event.recipes.gtceu.mixer('tfg:aes_mix') + .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') + .itemOutputs('10x tfg:aes_mix_dust') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') + .itemInputs('2x tfg:aes_mix_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .chancedOutput('gtceu:ash_dust', 3000, 0) + .circuit(1) + .duration(400) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') + .itemInputs('2x tfg:aes_mix_dust') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .circuit(2) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:aes_wool') + .inputFluids(Fluid.of('tfg:molten_aes', 200)) + .itemOutputs('tfg:aes_wool') + .duration(30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') + .itemInputs('4x tfg:aes_wool') + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('tfg:aes_compressed_wool') + .duration(40) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') + .itemInputs('tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 72)) + .circuit(1) + .itemOutputs('tfg:aes_insulation_sheet') + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 648)) + .itemOutputs('tfg:aes_insulation_roll') + .circuit(9) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.assembler('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shaped('tfg:aes_insulation_roll', [ + 'AAA', + 'AAA', + 'AAA' + ], { + A: 'tfg:aes_insulation_sheet' + }).id('tfg:shaped/aes_insulation_roll') + + event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('9x tfg:aes_insulation_sheet', [ + 'tfg:aes_insulation_roll' + ]).id('tfg:shapeless/aes_insulation_sheet') + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') + .itemInputs('tfg:aes_insulation_sheet') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 800)) + .chancedOutput('gtceu:ash_dust', 2500, 0) + .circuit(1) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') + .itemInputs('tfg:aes_insulation_roll') + .inputFluids(Fluid.of('gtceu:helium', 1000)) + .itemOutputs('2x gtceu:ash_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 7200)) + .circuit(9) + .duration(1000) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') + .itemInputs('tfg:sniffer_wool') + .chancedOutput('gtceu:ash_dust', 7500, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 200)) + .circuit(4) + .duration(80) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') + .itemInputs('tfg:wraptor_wool') + .chancedOutput('gtceu:ash_dust', 5000, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 100)) + .circuit(8) + .duration(60) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + // #endregion + + //#region ammonia borane + event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') + .itemInputs('#forge:dusts/sodium') + .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('2x #forge:dusts/sodium_hydride') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') + .itemInputs('23x #forge:dusts/borax') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 5000)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') + .itemInputs('7x #forge:dusts/boric_acid') + .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) + .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') + .itemInputs('4x #forge:dusts/sodium_hydride') + .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) + .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') + .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') + .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region polyurethane + event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') + .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) + .notConsumable('#forge:dusts/iron') + .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) + .duration(140) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') + .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) + .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(120) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') + .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) + .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') + .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) + .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') + .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) + .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') + .outputFluids(Fluid.of('gtceu:methanol', 2000)) + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') + .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') + .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:aes_polyurethane') + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + + //#endregion + + //#region Aerogel + event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') + .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) + .itemInputs('3x #forge:dusts/silicon_dioxide') + .notConsumable('#forge:small_dusts/potassium_hydroxide') + .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) + .outputFluids(Fluid.of('gtceu:methanol', 4000)) + .itemOutputs('3x #forge:dusts/silicon_dioxide') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), + Fluid.of('gtceu:hydrochloric_acid', 100)) + .outputFluids(Fluid.of('tfg:silica_gel', 1000)) + .duration(300) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') + .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) + .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') + .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:silica_aerogel') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region Tier 3 insulation + event.recipes.gtceu.forming_press('tfg:mli_shielding') + .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') + .itemOutputs('tfg:mli_shielding') + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.railgun.js b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js new file mode 100644 index 000000000..fb532c5bf --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js @@ -0,0 +1,111 @@ +"use strict"; + +function registerTFGRailgunRecipes(event) { + + // Railgun stuff + // (the railgun inputs and outputs are in tfg-core) + + + //item bus to railgun item bus conversion recipes + const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] + GTTiers.forEach(x => { + event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) + .itemInputs(`gtceu:${x}_input_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_in`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) + .itemInputs(`gtceu:${x}_output_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_out`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + }) + + //Railgun ammo + event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') + .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') + .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_best') + .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') + .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .dimension('ad_astra:moon') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') + .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .dimension('ad_astra:mars') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ + 'RMR', + 'MBM', + 'CCC' + ], { + B: 'gtceu:mv_input_bus', + R: 'gtceu:mv_robot_arm', + M: 'gtceu:mv_electric_motor', + C: '#forge:single_cables/annealed_copper' + }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') + + event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ + 'CDC', + 'SHE', + 'WCW' + ], { + C: '#gtceu:circuits/hv', + D: 'gtceu:computer_monitor_cover', + S: 'gtceu:hv_sensor', + H: 'gtceu:hv_machine_hull', + E: 'gtceu:hv_emitter', + W: '#forge:single_cables/silver' + }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ + 'NSN', + 'CHC', + 'NEN' + ], { + C: '#gtceu:circuits/ev', + S: 'gtceu:hv_sensor', + E: 'gtceu:hv_emitter', + H: 'gtceu:ev_machine_hull', + N: '#forge:plates/hsla_steel' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ + 'CSC', + 'WHW', + 'CSC' + ], { + C: '#gtceu:circuits/mv', + S: 'gtceu:mv_sensor', + W: '#forge:double_cables/copper', + H: 'gtceu:mv_machine_hull' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.rockets.js b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js new file mode 100644 index 000000000..161eb46af --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js @@ -0,0 +1,283 @@ +"use strict"; + +function registerTFGRocketRecipes(event) { + + //#region Tier 1 rocket + + event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') + .itemInputs( + 'gtceu:hv_emitter', + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) + .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) + .itemOutputs('ad_astra:rocket_nose_cone') + .duration(1200) + .circuit(2) + .EUt(480) + .addMaterialInfo(true, true) + + + event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemInputs('gtceu:asbestos_dust') + .itemOutputs('gtceu:vitrified_asbestos_dust') + .duration(80) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') + .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') + .inputFluids(Fluid.of('gtceu:red_steel', 144)) + .itemOutputs('9x #forge:dusts/rocket_alloy_t1') + .duration(580) + .circuit(2) + .EUt(480) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('minecraft:water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(400) + .EUt(120) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(250) + .EUt(120) + + event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) + ) + .itemOutputs('ad_astra:rocket_fin') + .duration(150) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_steel_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), + '2x #gtceu:circuits/hv', + 'gtceu:hv_electric_pump', + '2x gtceu:power_thruster', + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) + .itemOutputs('ad_astra:steel_engine') + .duration(600) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), + '4x ad_astra:rocket_fin', + '1x ad_astra:steel_engine', + '1x ad_astra:rocket_nose_cone', + '16x #forge:insulation_t1', + '4x #gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) + .itemOutputs('ad_astra:tier_1_rocket') + .duration(1200) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + //#endregion + + + //region tier 2 rocket + + event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(1320 * 20) + .circuit(2) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(17688) + .circuit(12) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') + .notConsumable('gtceu:ingot_casting_mold') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) + .itemOutputs('32x #forge:dusts/rocket_alloy_t2') + .duration(15 * 20) + .circuit(5) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') + .itemInputs('#forge:hot_ingots/rocket_alloy_t2') + .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:rocket_fin_t2') + .itemInputs('#forge:plates/rocket_alloy_t2', + '#forge:double_plates/titanium') + .itemOutputs('tfg:rocket_fin_t2') + .duration(180) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t2') + .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', + '#forge:double_plates/desh') + .itemOutputs('tfg:rocket_cone_t2') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_desh_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), + '2x #gtceu:circuits/ev', + 'gtceu:ev_electric_pump', + '3x gtceu:advanced_power_thruster', + ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) + .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) + .itemOutputs('ad_astra:desh_engine') + .duration(800) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), + '4x tfg:rocket_fin_t2', + '1x ad_astra:desh_engine', + '1x tfg:rocket_cone_t2', + '12x #forge:insulation_t2/roll', + '4x #gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) + .itemOutputs('ad_astra:tier_2_rocket') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + //#endregion + + //region Tier 3 DISABLED UNTIL IV + event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) + event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) + /* + event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .duration(800) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') + .itemInputs('#forge:hot_ingots/rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .outputFluids(Fluid.of('gtceu:helium', 250)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + + //Add some unique cooling thing for molten ingots + + event.recipes.gtceu.assembler('tfg:rocket_fin_t3') + .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') + .itemOutputs('tfg:rocket_fin_t3') + .duration(220) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t3') + .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', + '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet + .itemOutputs('tfg:rocket_cone_t3') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:elite_power_thruster') + .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', + 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') + .itemOutputs('tfg:elite_power_thruster') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') + .itemInputs( + '6x #forge:double_plates/tungsten_steel', + '4x #gtceu:circuits/iv', + 'gtceu:iv_electric_pump', + '3x tfg:elite_power_thruster', + '4x #forge:insulation_t3/cryo', + '6x #forge:rods/magnetic_neodymium', + '#forge:rotors/tungsten_steel') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) + .itemOutputs('ad_astra:ostrum_engine') + .duration(960) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') + .itemInputs( + '4x #forge:double_plates/rocket_alloy_t3', + 'gtceu:iv_electric_pump', + 'tfg:elite_power_thruster', + '2x #forge:insulation_t3/cryo') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) + .itemOutputs('ad_astra:ostrum_tank') + .duration(400) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') + .itemInputs( + '16x #forge:dense_plates/rocket_alloy_t3', + '4x tfg:rocket_fin_t3', + '1x ad_astra:ostrum_engine', + '2x ad_astra:ostrum_tank', + '1x tfg:rocket_cone_t3', + '8x #forge:insulation_t3/sheet' + ) + .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) + .itemOutputs('ad_astra:tier_3_rocket') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + //#endregion +*/ +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space.js b/kubejs/server_scripts/tfg/space_general/recipes.space.js new file mode 100644 index 000000000..88e54b3a5 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space.js @@ -0,0 +1,114 @@ +// priority: 0 +"use strict"; + +/** + * @param {Internal.RecipesEventJS} event + */ +function registerTFGSpaceRecipes(event) { + + const allowedCombustibleDims = [ + { + dimension: "minecraft:the_nether", + type: "dimension" + }, + { + dimension: "minecraft:overworld", + type: "dimension" + } + ] + + event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + + // Air collector + + event.recipes.gtceu.gas_collector('tfg:nether') + .circuit(2) + .outputFluids(Fluid.of('gtceu:air', 10000)) + .dimension('minecraft:the_nether') + .duration(200) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:moon') + .circuit(3) + .outputFluids(Fluid.of('gtceu:argon', 1)) + .dimension('ad_astra:moon') + .duration(20*60*30) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:mars') + .circuit(4) + .outputFluids(Fluid.of('tfg:mars_air', 10000)) + .dimension('ad_astra:mars') + .duration(20*10) + .EUt(16) + + + // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues + + let aaCircuit = 1; + + event.recipes.gtceu.aqueous_accumulator('water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('sea_water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + .adjacentFluids(["tfc:salt_water"]) + .outputFluids(Fluid.of("tfc:salt_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') + .circuit(aaCircuit++) + .dimension('ad_astra:mars') + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) + .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_overworld') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_nether') + .circuit(aaCircuit++) + .dimension('minecraft:the_nether') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('spring_water') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .adjacentFluids(["tfc:spring_water"]) + .outputFluids(Fluid.of("tfc:spring_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('more_water') + .circuit(aaCircuit++) + .duration(10) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 16000)) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js new file mode 100644 index 000000000..7c1d54856 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGSpaceSuitRecipes(event) { + + event.recipes.gtceu.shaped('ad_astra:launch_pad', [ + 'BAB', + 'AAA', + 'BAB' + ], { + A: '#forge:plates/steel', + B: '#forge:rods/steel' + }).addMaterialInfo().id('tfg:launch_pad') + + + // Space suit gases + + event.recipes.gtceu.gas_pressurizer('compressed_nitrox') + .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox') + .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') + .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + //#region space suits + + event.recipes.gtceu.forming_press('space_suit_fabric') + .itemInputs( + '#forge:foils/aluminium', + 'gtceu:carbon_fiber_mesh', + '#forge:foils/silicone_rubber', + 'tfg:polycaprolactam_fabric' + ) + .itemOutputs('2x tfg:space_suit_fabric') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + event.recipes.gtceu.forming_press('better_space_suit_fabric') + .itemInputs( + '#forge:foils/polybenzimidazole', + 'gtceu:carbon_fiber_mesh', + '#forge:aerogels', + 'tfg:glacian_wool' + ) + .itemOutputs('2x tfg:better_space_suit_fabric') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_helmet', [ + 'AAA', + 'ADA', + 'BBB' + ], { + A: 'gtceu:tempered_glass', + B: 'tfg:space_suit_fabric', + D: '#forge:small_fluid_pipes/polyethylene' + }).addMaterialInfo().id('tfg:space_helmet') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') + .itemInputs( + 'ad_astra:space_helmet', + '2x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '3x tfg:better_space_suit_fabric', + '5x gtceu:laminated_glass' + ) + .itemOutputs('ad_astra:netherite_space_helmet') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_suit', [ + 'B B', + 'BDB', + 'BBB' + ], { + B: 'tfg:space_suit_fabric', + D: 'ad_astra:oxygen_gear' + }).addMaterialInfo().id('tfg:space_suit') + + event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) + .id('tfg:empty_space_suit') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') + .itemInputs( + 'ad_astra:space_suit', + '3x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '5x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_suit') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) + .id('tfg:empty_netherite_space_suit') + + event.recipes.gtceu.shaped('ad_astra:space_pants', [ + 'BAB', + 'B B', + 'B B' + ], { + A: 'gtceu:hv_electric_motor', + B: 'tfg:space_suit_fabric', + }).addMaterialInfo().id('tfg:space_pants') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') + .itemInputs( + 'ad_astra:space_pants', + '2x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '4x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_pants') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_boots', [ + 'B B', + 'A A' + ], { + A: '#forge:plates/polyphenylene_sulfide', + B: 'tfg:space_suit_fabric' + }).addMaterialInfo().id('tfg:space_boots') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') + .itemInputs( + 'ad_astra:space_boots', + '1x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '2x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_boots') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ + 'BAB', + 'ECE', + 'BDB' + ], { + A: '#gtceu:circuits/hv', + B: '#forge:tiny_fluid_pipes/stainless_steel', + C: 'gtceu:hv_electric_pump', + D: 'gtceu:fluid_detector_cover', + E: 'ad_astra:gas_tank' + }).addMaterialInfo().id('tfg:oxygen_gear') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/tags.js b/kubejs/server_scripts/tfg/tags.js index 04a914fba..785160a42 100644 --- a/kubejs/server_scripts/tfg/tags.js +++ b/kubejs/server_scripts/tfg/tags.js @@ -18,6 +18,10 @@ const registerTFGItemTags = (event) => { event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') + event.add("tfg:sugars", "minecraft:sugar"); + event.add("tfg:sugars", "afc:birch_sugar"); + event.add("tfg:sugars", "afc:maple_sugar"); + // Actually "layers", can't rename them without screwing with peoples' worlds event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') @@ -627,12 +631,10 @@ const registerTFGItemTags = (event) => { event.remove('forge:dusts', 'tfg:cellulose_matrix') event.remove('forge:dusts/cellulose_matrix', 'tfg:cellulose_matrix') - event.remove('balm:ingots', 'tfg:polycaprolactam_fabric') event.remove('tfc:pileable_ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots/tfg_polycaprolactam', 'tfg:polycaprolactam_fabric') - event.remove('balm:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets/tfg_polycaprolactam', 'tfg:polycaprolactam_string') diff --git a/kubejs/server_scripts/tfg/recipes.biochem.js b/kubejs/server_scripts/tfg/venus/recipes.biochem.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.biochem.js rename to kubejs/server_scripts/tfg/venus/recipes.biochem.js diff --git a/kubejs/server_scripts/tfg/worldgen/data.fauna.js b/kubejs/server_scripts/tfg/worldgen/data.fauna.js new file mode 100644 index 000000000..6a54f27b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/data.fauna.js @@ -0,0 +1,108 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFauna(event) { + + // -108 is the average at z=-4k to z=-6k, which feels like a big enough band + event.fauna( + climate => { + climate.maxTemp(-108) + climate.fuzzy(false) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:glacian_ram") + + event.fauna( + climate => { + climate.minTemp(-102) + climate.maxTemp(-30) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:sniffer") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:wraptor") + + event.fauna( + climate => { + climate.minTemp(-108) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:springling") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:goober") + + event.fauna( + climate => { + climate.minTemp(-97) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:walker") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:eater") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:crusher") + + event.fauna( + climate => { + climate.minTemp(-105) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:soarer") + + event.fauna( + climate => { + climate.minTemp(-106) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:glider") +} diff --git a/kubejs/server_scripts/tfg/entities.js b/kubejs/server_scripts/tfg/worldgen/entities.js similarity index 100% rename from kubejs/server_scripts/tfg/entities.js rename to kubejs/server_scripts/tfg/worldgen/entities.js diff --git a/kubejs/server_scripts/tfg/events.chunks.js b/kubejs/server_scripts/tfg/worldgen/events.chunks.js similarity index 100% rename from kubejs/server_scripts/tfg/events.chunks.js rename to kubejs/server_scripts/tfg/worldgen/events.chunks.js diff --git a/kubejs/server_scripts/tfg/events.forests.js b/kubejs/server_scripts/tfg/worldgen/events.forests.js similarity index 100% rename from kubejs/server_scripts/tfg/events.forests.js rename to kubejs/server_scripts/tfg/worldgen/events.forests.js diff --git a/kubejs/server_scripts/tfc/select_climates.js b/kubejs/server_scripts/tfg/worldgen/select_climates.js similarity index 100% rename from kubejs/server_scripts/tfc/select_climates.js rename to kubejs/server_scripts/tfg/worldgen/select_climates.js diff --git a/kubejs/server_scripts/wan_ancient_beasts/recipes.js b/kubejs/server_scripts/wan_ancient_beasts/recipes.js index 2b65d3851..9f083ead7 100644 --- a/kubejs/server_scripts/wan_ancient_beasts/recipes.js +++ b/kubejs/server_scripts/wan_ancient_beasts/recipes.js @@ -38,19 +38,6 @@ const registerWABRecipes = (event) => { .duration(400) .EUt(30) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'wan_ancient_beasts:glider_feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/glider_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') - .itemInputs('1x wan_ancient_beasts:glider_feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - event.shaped('wan_ancient_beasts:reinforced_shield', [ 'BAB', 'DCD', diff --git a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js index 6fd163157..b2eb4b3df 100644 --- a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js +++ b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js @@ -153,7 +153,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:oxidized_nuclear_residue') .dust() - .components('1x uranium', '1x oxygen', '2x unknown') + .components('1x plutonium', '2x fluorine', '1x oxygen', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .iconSet(GTMaterialIconSet.SHINY) .color(0x286529) @@ -162,7 +162,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:refined_nuclear_residue') .dust() - .components('1x uranium', '2x unknown') + .components('1x plutonium', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .color(0x82c383) .secondaryColor('0xffffff')