From 2fc6bf2e8d35303cae1342eb4ac67385cee2a8fb Mon Sep 17 00:00:00 2001 From: Jika Date: Mon, 8 Dec 2025 21:34:08 +0100 Subject: [PATCH] Update patch 0008 --- ...Port-gregitas-certus-to-waffer-chain.patch | 519 +++++++++--------- 1 file changed, 254 insertions(+), 265 deletions(-) diff --git a/patches/0008-Port-gregitas-certus-to-waffer-chain.patch b/patches/0008-Port-gregitas-certus-to-waffer-chain.patch index 370cfae33..dbf42ccf7 100644 --- a/patches/0008-Port-gregitas-certus-to-waffer-chain.patch +++ b/patches/0008-Port-gregitas-certus-to-waffer-chain.patch @@ -1,7 +1,7 @@ -From 86ee31e0014894c244bc152d0e63516c360a69e2 Mon Sep 17 00:00:00 2001 +From 741950beaacbb4363e1fb96770f2cf580f68d113 Mon Sep 17 00:00:00 2001 From: Jika -Date: Wed, 24 Sep 2025 12:29:14 +0200 -Subject: [PATCH 8/9] Port gregitas certus to waffer chain +Date: Mon, 8 Dec 2025 20:41:13 +0100 +Subject: [PATCH] Port gregitas certus to waffer chain --- .../textures/item/calculation_wafer.png | Bin 0 -> 6075 bytes @@ -10,17 +10,23 @@ Subject: [PATCH 8/9] Port gregitas certus to waffer chain .../textures/item/engineering_wafer.png | Bin 0 -> 6102 bytes .../kubejs/textures/item/logic_wafer.png | Bin 0 -> 6094 bytes kubejs/assets/tfg/lang/en_us.json | 13 +- - kubejs/server_scripts/ae2/recipes.js | 189 +++++++++++++----- - kubejs/startup_scripts/ae2/materials.js | 34 +++- - kubejs/startup_scripts/gtceu/materials.js | 4 +- - kubejs/startup_scripts/tfg/element.js | 7 +- - kubejs/startup_scripts/tfg/items.js | 15 ++ - 11 files changed, 211 insertions(+), 51 deletions(-) + .../server_scripts/ae2/certus_wafer_chain.js | 121 ++++++++++++++++++ + .../startup_scripts/ae2/certus_materials.js | 37 ++++++ + kubejs/startup_scripts/ae2/materials.js | 4 +- + .../gtceu/material_modification.certus.js | 7 + + kubejs/startup_scripts/tfg/element.certus.js | 8 ++ + kubejs/startup_scripts/tfg/items.certus.js | 20 +++ + 12 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 kubejs/assets/kubejs/textures/item/calculation_wafer.png create mode 100644 kubejs/assets/kubejs/textures/item/certus_boule.png create mode 100644 kubejs/assets/kubejs/textures/item/certus_wafer.png create mode 100644 kubejs/assets/kubejs/textures/item/engineering_wafer.png create mode 100644 kubejs/assets/kubejs/textures/item/logic_wafer.png + create mode 100644 kubejs/server_scripts/ae2/certus_wafer_chain.js + create mode 100644 kubejs/startup_scripts/ae2/certus_materials.js + create mode 100644 kubejs/startup_scripts/gtceu/material_modification.certus.js + create mode 100644 kubejs/startup_scripts/tfg/element.certus.js + create mode 100644 kubejs/startup_scripts/tfg/items.certus.js diff --git a/kubejs/assets/kubejs/textures/item/calculation_wafer.png b/kubejs/assets/kubejs/textures/item/calculation_wafer.png new file mode 100644 @@ -375,10 +381,10 @@ literal 0 HcmV?d00001 diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json -index c4c08398..bcb4565e 100644 +index eb772657..da888230 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json -@@ -843,6 +843,11 @@ +@@ -887,6 +887,11 @@ "item.tfg.flintlock_mechanism": "Flintlock Mechanism", "item.tfg.advanced_clockwork_mechanism": "Advanced Clockwork Mechanism", "item.tfg.certus_mechanism": "Certus Mechanism", @@ -390,7 +396,7 @@ index c4c08398..bcb4565e 100644 "item.tfg.small_bullet_casing": "Small Bullet Casing", "item.tfg.large_bullet_casing": "Large Bullet Casing", "item.tfg.shell_bullet_casing": "Shell Bullet Casing", -@@ -1066,6 +1071,12 @@ +@@ -1116,6 +1121,12 @@ "material.tfg.refined_nuclear_residue": "Refined Nuclear Residue", "material.tfg.mars_air": "Mars Air", "material.tfg.liquid_mars_air": "Liquid Mars Air", @@ -403,231 +409,190 @@ index c4c08398..bcb4565e 100644 "material.tfg.certus_regolith": "Certus Regolith", "material.tfg.goethe_regolith": "Goethe Regolith", "material.tfg.bright_regolith": "Bright Regolith", -@@ -4268,4 +4279,4 @@ - "quests.tfg_tips.tools_tips.harvest_basket.subtitle": "For competitive pie bakers.", - "quests.tfg_tips.tools_tips.harvest_basket.task": "Any #tfg:harvester", - "quests.tfg_tips.tools_tips.harvest_basket.desc": "&l&2Harvest Baskets&r&r are a new tool made just for &5TFG&r! These baskets can be used to harvest whole trees and bushes of fruit in one right-click! A regular &6Harvest Basket&r has a base durability of &n128&r. But an &3Aluminium Harvest Basket&r takes no damage on use." +@@ -4650,4 +4661,4 @@ + "quests.tfg_tips.tools_tips.concrete_roads.title": "Concrete Roads", + "quests.tfg_tips.tools_tips.concrete_roads.subtitle": "Almost worth all the effort.", + "quests.tfg_tips.tools_tips.concrete_roads.desc": "&6Wet concrete mix&r can be applied to base course to create roads which give a &b&l30%%&r&r bonus to movement speed. \n\n&4Be careful&r when creating concrete roads. There are a lot of rules to follow to make sure you don't end up with cracked or ruined surfaces. Consult the &3Field Guide&r for detailed instructions." -} \ No newline at end of file +} -diff --git a/kubejs/server_scripts/ae2/recipes.js b/kubejs/server_scripts/ae2/recipes.js -index 4bdd1f24..6a759f41 100644 ---- a/kubejs/server_scripts/ae2/recipes.js -+++ b/kubejs/server_scripts/ae2/recipes.js -@@ -1614,59 +1614,156 @@ global.MINECRAFT_DYE_NAMES.forEach(dye => { - .EUt(GTValues.VA[GTValues.HV]) - .dimension('ad_astra:moon') - -- // Printed Calculation Processor -- event.recipes.gtceu.forming_press('ae2:printed_calculation_processor') -- .itemInputs('#forge:plates/certus_quartz') -- .notConsumable('ae2:calculation_processor_press') -- .itemOutputs('ae2:printed_calculation_processor') -- .duration(20) -- .circuit(1) -- .EUt(480) -+ // Certus wafer chemistry chain - -- event.recipes.gtceu.forming_press('ae2:printed_calculation_processor_moon') -- .itemInputs('#forge:plates/certus_quartz') -- .notConsumable('ae2:calculation_processor_press') -- .itemOutputs('2x ae2:printed_calculation_processor') -- .duration(20) -- .dimension('ad_astra:moon') -- .circuit(2) -- .EUt(480) -+ event.recipes.gtceu.electrolyzer('tfg:certus_quartz_electrolysis') -+ .itemInputs('ae2:certus_quartz_dust') -+ .itemOutputs('tfg:certus_dust', 'gtceu:silicon_dioxide_dust') -+ .duration(20 * 40) -+ .EUt(GTValues.VA[GTValues.MV]) - -- // Printed Engineering Processor -- event.recipes.gtceu.forming_press('ae2:printed_engineering_processor') -- .itemInputs('#forge:plates/diamond') -- .notConsumable('ae2:engineering_processor_press') -- .itemOutputs('ae2:printed_engineering_processor') -- .duration(20) -- .circuit(1) -- .EUt(480) -+ event.recipes.gtceu.chemical_reactor('tfg:trichlorocertane') -+ .itemInputs('tfg:certus_dust') -+ .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 3000)) -+ .outputFluids(Fluid.of('tfg:trichlorocertane', 1000), Fluid.of('gtceu:hydrogen', 2000)) -+ .duration(40) -+ .EUt(GTValues.VA[GTValues.MV]) +diff --git a/kubejs/server_scripts/ae2/certus_wafer_chain.js b/kubejs/server_scripts/ae2/certus_wafer_chain.js +new file mode 100644 +index 00000000..815cbd97 +--- /dev/null ++++ b/kubejs/server_scripts/ae2/certus_wafer_chain.js +@@ -0,0 +1,112 @@ ++// Certus wafer processing chain extracted from the original AE2 recipes patch. ++ServerEvents.recipes(event => { ++ // Remove legacy processor print recipes (inscriber and forming press variants) ++ event.remove({ id: 'ae2:inscriber/engineering_processor_print' }) ++ event.remove({ id: 'ae2:inscriber/calculation_processor_print' }) ++ event.remove({ id: 'ae2:inscriber/logic_processor_print' }) ++ event.remove({ id: 'ae2:printed_calculation_processor' }) ++ event.remove({ id: 'ae2:printed_calculation_processor_moon' }) ++ event.remove({ id: 'ae2:printed_engineering_processor' }) ++ event.remove({ id: 'ae2:printed_engineering_processor_moon' }) ++ event.remove({ id: 'ae2:printed_logic_processor' }) ++ event.remove({ id: 'ae2:printed_logic_processor_moon' }) + -+ event.recipes.gtceu.chemical_reactor('tfg:dichlorocertane') -+ .inputFluids(Fluid.of('tfg:trichlorocertane', 2000)) -+ .outputFluids(Fluid.of('tfg:dichlorocertane', 1000)) -+ .itemOutputs('gtceu:certus_gem') -+ .duration(40) -+ .EUt(GTValues.VA[GTValues.MV]) - -- event.recipes.gtceu.forming_press('ae2:printed_engineering_processor_moon') -- .itemInputs('#forge:plates/diamond') -+ event.recipes.gtceu.chemical_reactor('tfg:chlorocertane') -+ .inputFluids(Fluid.of('tfg:dichlorocertane', 2000)) -+ .outputFluids(Fluid.of('tfg:chlorocertane', 1000), Fluid.of('tfg:certus_tetrachloride', 1000)) -+ .duration(40) -+ .EUt(GTValues.VA[GTValues.MV]) ++ // Certus chemistry ++ event.recipes.gtceu.electrolyzer('tfg:certus_quartz_electrolysis') ++ .itemInputs('ae2:certus_quartz_dust') ++ .itemOutputs('tfg:certus_dust', 'gtceu:silicon_dioxide_dust') ++ .duration(20 * 40) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.chemical_reactor('tfg:certane') -+ .inputFluids(Fluid.of('tfg:chlorocertane', 2000)) -+ .outputFluids(Fluid.of('tfg:certane', 1000), Fluid.of('tfg:dichlorocertane', 1000)) -+ .duration(40) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.chemical_reactor('tfg:trichlorocertane') ++ .itemInputs('tfg:certus_dust') ++ .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 3000)) ++ .outputFluids(Fluid.of('tfg:trichlorocertane', 1000), Fluid.of('gtceu:hydrogen', 2000)) ++ .duration(40) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.electric_blast_furnace('tfg:certus_boule') -+ .itemInputs('gtceu:silicon_wafer') -+ .inputFluids(Fluid.of('tfg:certane', 16000)) -+ .itemOutputs('tfg:certus_boule') -+ .blastFurnaceTemp(1800) -+ .duration(1600) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.chemical_reactor('tfg:dichlorocertane') ++ .inputFluids(Fluid.of('tfg:trichlorocertane', 2000)) ++ .outputFluids(Fluid.of('tfg:dichlorocertane', 1000)) ++ .itemOutputs('ae2:certus_quartz_crystal') ++ .duration(40) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_certus_boule_water') -+ .itemInputs('tfg:certus_boule') -+ .itemOutputs('16x tfg:certus_wafer') -+ .inputFluids(Fluid.of('minecraft:water', 45)) -+ .duration(600) -+ .EUt(48) ++ event.recipes.gtceu.chemical_reactor('tfg:chlorocertane') ++ .inputFluids(Fluid.of('tfg:dichlorocertane', 2000)) ++ .outputFluids(Fluid.of('tfg:chlorocertane', 1000), Fluid.of('tfg:certus_tetrachloride', 1000)) ++ .duration(40) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_certus_boule_distilled_water') -+ .itemInputs('tfg:certus_boule') -+ .itemOutputs('16x tfg:certus_wafer') -+ .inputFluids(Fluid.of('gtceu:distilled_water', 34)) -+ .duration(450) -+ .EUt(48) ++ event.recipes.gtceu.chemical_reactor('tfg:certane') ++ .inputFluids(Fluid.of('tfg:chlorocertane', 2000)) ++ .outputFluids(Fluid.of('tfg:certane', 1000), Fluid.of('tfg:dichlorocertane', 1000)) ++ .duration(40) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_certus_boule_lubricant') -+ .itemInputs('tfg:certus_boule') -+ .itemOutputs('16x tfg:certus_wafer') -+ .inputFluids(Fluid.of('gtceu:lubricant', 11)) -+ .duration(300) -+ .EUt(48) ++ // Boule and wafer fabrication ++ event.recipes.gtceu.electric_blast_furnace('tfg:certus_boule') ++ .itemInputs('gtceu:silicon_wafer') ++ .inputFluids(Fluid.of('tfg:certane', 16000)) ++ .itemOutputs('tfg:certus_boule') ++ .blastFurnaceTemp(1800) ++ .duration(1600) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.laser_engraver('tfg:engrave_engineering_certus') -+ .itemInputs('tfg:certus_wafer') - .notConsumable('ae2:engineering_processor_press') -- .itemOutputs('2x ae2:printed_engineering_processor') -- .duration(20) -- .dimension('ad_astra:moon') -- .circuit(2) -- .EUt(480) -+ .itemOutputs('tfg:engineering_wafer') -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) - -- // Printed Logic Processor -- event.recipes.gtceu.forming_press('ae2:printed_logic_processor') -- .itemInputs('#forge:plates/gold') -- .notConsumable('ae2:logic_processor_press') -- .itemOutputs('ae2:printed_logic_processor') -- .duration(20) -- .circuit(1) -- .EUt(480) -+ event.recipes.gtceu.laser_engraver('tfg:engrave_calculation_certus') -+ .itemInputs('tfg:certus_wafer') -+ .notConsumable('ae2:calculation_processor_press') -+ .itemOutputs('tfg:calculation_wafer') -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) - -- event.recipes.gtceu.forming_press('ae2:printed_logic_processor_moon') -- .itemInputs('#forge:plates/gold') -+ event.recipes.gtceu.laser_engraver('tfg:engrave_logic_certus') -+ .itemInputs('tfg:certus_wafer') - .notConsumable('ae2:logic_processor_press') -- .itemOutputs('2x ae2:printed_logic_processor') -- .duration(20) -- .dimension('ad_astra:moon') -- .circuit(2) -- .EUt(480) -+ .itemOutputs('tfg:logic_wafer') -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_certus_boule_water') ++ .itemInputs('tfg:certus_boule') ++ .itemOutputs('16x tfg:certus_wafer') ++ .inputFluids(Fluid.of('minecraft:water', 45)) ++ .duration(600) ++ .EUt(48) + -+ event.remove({ id: 'ae2:inscriber/engineering_processor_print' }) -+ event.remove({ id: 'ae2:inscriber/calculation_processor_print' }) -+ event.remove({ id: 'ae2:inscriber/logic_processor_print' }) ++ event.recipes.gtceu.cutter('tfg:cut_certus_boule_distilled_water') ++ .itemInputs('tfg:certus_boule') ++ .itemOutputs('16x tfg:certus_wafer') ++ .inputFluids(Fluid.of('gtceu:distilled_water', 34)) ++ .duration(450) ++ .EUt(48) + -+ event.recipes.gtceu.cutter('tfg:cut_engineering_water') -+ .itemInputs('tfg:engineering_wafer') -+ .itemOutputs('8x ae2:printed_engineering_processor') -+ .inputFluids(Fluid.of('minecraft:water', 338)) -+ .duration(1800) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_certus_boule_lubricant') ++ .itemInputs('tfg:certus_boule') ++ .itemOutputs('16x tfg:certus_wafer') ++ .inputFluids(Fluid.of('gtceu:lubricant', 11)) ++ .duration(300) ++ .EUt(48) + -+ event.recipes.gtceu.cutter('tfg:cut_engineering_distilled_water') -+ .itemInputs('tfg:engineering_wafer') -+ .itemOutputs('8x ae2:printed_engineering_processor') -+ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) -+ .duration(1350) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.laser_engraver('tfg:engrave_engineering_certus') ++ .itemInputs('tfg:certus_wafer') ++ .notConsumable('ae2:engineering_processor_press') ++ .itemOutputs('tfg:engineering_wafer') ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_engineering_lubricant') -+ .itemInputs('tfg:engineering_wafer') -+ .itemOutputs('8x ae2:printed_engineering_processor') -+ .inputFluids(Fluid.of('gtceu:lubricant', 84)) -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.laser_engraver('tfg:engrave_calculation_certus') ++ .itemInputs('tfg:certus_wafer') ++ .notConsumable('ae2:calculation_processor_press') ++ .itemOutputs('tfg:calculation_wafer') ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_calculation_water') -+ .itemInputs('tfg:calculation_wafer') -+ .itemOutputs('8x ae2:printed_calculation_processor') -+ .inputFluids(Fluid.of('minecraft:water', 338)) -+ .duration(1800) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.laser_engraver('tfg:engrave_logic_certus') ++ .itemInputs('tfg:certus_wafer') ++ .notConsumable('ae2:logic_processor_press') ++ .itemOutputs('tfg:logic_wafer') ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_calculation_distilled_water') -+ .itemInputs('tfg:calculation_wafer') -+ .itemOutputs('8x ae2:printed_calculation_processor') -+ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) -+ .duration(1350) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_engineering_water') ++ .itemInputs('tfg:engineering_wafer') ++ .itemOutputs('8x ae2:printed_engineering_processor') ++ .inputFluids(Fluid.of('minecraft:water', 338)) ++ .duration(1800) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_calculation_lubricant') -+ .itemInputs('tfg:calculation_wafer') -+ .itemOutputs('8x ae2:printed_calculation_processor') -+ .inputFluids(Fluid.of('gtceu:lubricant', 84)) -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_engineering_distilled_water') ++ .itemInputs('tfg:engineering_wafer') ++ .itemOutputs('8x ae2:printed_engineering_processor') ++ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) ++ .duration(1350) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_logic_water') -+ .itemInputs('tfg:logic_wafer') -+ .itemOutputs('8x ae2:printed_logic_processor') -+ .inputFluids(Fluid.of('minecraft:water', 338)) -+ .duration(1800) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_engineering_lubricant') ++ .itemInputs('tfg:engineering_wafer') ++ .itemOutputs('8x ae2:printed_engineering_processor') ++ .inputFluids(Fluid.of('gtceu:lubricant', 84)) ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_logic_distilled_water') -+ .itemInputs('tfg:logic_wafer') -+ .itemOutputs('8x ae2:printed_logic_processor') -+ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) -+ .duration(1350) -+ .EUt(GTValues.VA[GTValues.MV]) ++ event.recipes.gtceu.cutter('tfg:cut_calculation_water') ++ .itemInputs('tfg:calculation_wafer') ++ .itemOutputs('8x ae2:printed_calculation_processor') ++ .inputFluids(Fluid.of('minecraft:water', 338)) ++ .duration(1800) ++ .EUt(GTValues.VA[GTValues.MV]) + -+ event.recipes.gtceu.cutter('tfg:cut_logic_lubricant') -+ .itemInputs('tfg:logic_wafer') -+ .itemOutputs('8x ae2:printed_logic_processor') -+ .inputFluids(Fluid.of('gtceu:lubricant', 84)) -+ .duration(900) -+ .EUt(GTValues.VA[GTValues.MV]) - - // Printed Silicon - event.recipes.gtceu.forming_press('ae2:printed_silicon') -diff --git a/kubejs/startup_scripts/ae2/materials.js b/kubejs/startup_scripts/ae2/materials.js -index 316f6fe3..867bd288 100644 ---- a/kubejs/startup_scripts/ae2/materials.js -+++ b/kubejs/startup_scripts/ae2/materials.js -@@ -14,4 +14,36 @@ const registerAE2Materials = (event) => { - .components('1x nether_quartz', '1x certus_quartz') - .color(0x8f5ccb) - .secondaryColor(0x252f5a) --} -\ No newline at end of file ++ event.recipes.gtceu.cutter('tfg:cut_calculation_distilled_water') ++ .itemInputs('tfg:calculation_wafer') ++ .itemOutputs('8x ae2:printed_calculation_processor') ++ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) ++ .duration(1350) ++ .EUt(GTValues.VA[GTValues.MV]) + ++ event.recipes.gtceu.cutter('tfg:cut_calculation_lubricant') ++ .itemInputs('tfg:calculation_wafer') ++ .itemOutputs('8x ae2:printed_calculation_processor') ++ .inputFluids(Fluid.of('gtceu:lubricant', 84)) ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) ++ ++ event.recipes.gtceu.cutter('tfg:cut_logic_water') ++ .itemInputs('tfg:logic_wafer') ++ .itemOutputs('8x ae2:printed_logic_processor') ++ .inputFluids(Fluid.of('minecraft:water', 338)) ++ .duration(1800) ++ .EUt(GTValues.VA[GTValues.MV]) ++ ++ event.recipes.gtceu.cutter('tfg:cut_logic_distilled_water') ++ .itemInputs('tfg:logic_wafer') ++ .itemOutputs('8x ae2:printed_logic_processor') ++ .inputFluids(Fluid.of('gtceu:distilled_water', 254)) ++ .duration(1350) ++ .EUt(GTValues.VA[GTValues.MV]) ++ ++ event.recipes.gtceu.cutter('tfg:cut_logic_lubricant') ++ .itemInputs('tfg:logic_wafer') ++ .itemOutputs('8x ae2:printed_logic_processor') ++ .inputFluids(Fluid.of('gtceu:lubricant', 84)) ++ .duration(900) ++ .EUt(GTValues.VA[GTValues.MV]) ++}) +diff --git a/kubejs/startup_scripts/ae2/certus_materials.js b/kubejs/startup_scripts/ae2/certus_materials.js +new file mode 100644 +index 00000000..7ff6590d +--- /dev/null ++++ b/kubejs/startup_scripts/ae2/certus_materials.js +@@ -0,0 +1,37 @@ ++// priority: 0 ++"use strict"; ++ ++// Additional AE2 materials for the certus wafer chain ++GTCEuStartupEvents.registry('gtceu:material', event => { + event.create('tfg:certus') + .gem() + .dust() @@ -659,63 +624,87 @@ index 316f6fe3..867bd288 100644 + .liquid() + .color(0xccede3) + .components('1x tfg:certus', '4x hydrogen') -+} -diff --git a/kubejs/startup_scripts/gtceu/materials.js b/kubejs/startup_scripts/gtceu/materials.js -index 2f2c05b6..e1c32f83 100644 ---- a/kubejs/startup_scripts/gtceu/materials.js -+++ b/kubejs/startup_scripts/gtceu/materials.js -@@ -424,7 +424,7 @@ const registerGTCEuMaterialModification = (event) => { - GTMaterials.get('tfg:kaolinite').setFormula("Al2Si2O5(OH)4", true) - GTMaterials.get('tfg:vitrified_pearl').setFormula("(Al2Si2O5(OH)4)(BeK4N5)", true) - GTMaterials.get('tfg:tmos').setFormula("Si(OCH3)4", true) -- GTMaterials.get('tfg:fluix').setFormula("?(?SiO2)(SiO2)", true) -- GTMaterials.CertusQuartz.setFormula("?SiO2", true) -+ GTMaterials.get('tfg:fluix').setFormula("?(CtSiO2)(SiO2)", true) -+ GTMaterials.CertusQuartz.setFormula("CtSiO2", true) - GTMaterials.GraniteRed.setFormula("?", true) - } -diff --git a/kubejs/startup_scripts/tfg/element.js b/kubejs/startup_scripts/tfg/element.js -index b71cadcb..a6d8f9a6 100644 ---- a/kubejs/startup_scripts/tfg/element.js -+++ b/kubejs/startup_scripts/tfg/element.js -@@ -10,4 +10,9 @@ const registerTFGElement = (event) => { - .protons(90) - .neutrons(232) - .symbol("Th²³²") ++}) +diff --git a/kubejs/startup_scripts/ae2/materials.js b/kubejs/startup_scripts/ae2/materials.js +index d4ab8056..1d7e47d3 100644 +--- a/kubejs/startup_scripts/ae2/materials.js ++++ b/kubejs/startup_scripts/ae2/materials.js +@@ -11,7 +11,7 @@ const registerAE2Materials = (event) => { + GTMaterialFlags.CRYSTALLIZABLE, + GTMaterialFlags.DISABLE_DECOMPOSITION + ) +- .components('1x unknown', '1x nether_quartz', '1x certus_quartz') ++ .components('1x nether_quartz', '1x certus_quartz') + .color(0x8f5ccb) + .secondaryColor(0x252f5a) -} \ No newline at end of file ++} +diff --git a/kubejs/startup_scripts/gtceu/material_modification.certus.js b/kubejs/startup_scripts/gtceu/material_modification.certus.js +new file mode 100644 +index 00000000..a6df4d86 +--- /dev/null ++++ b/kubejs/startup_scripts/gtceu/material_modification.certus.js +@@ -0,0 +1,7 @@ ++// priority: 0 + -+ event.create("certus") ++// Adjust formulas for certus-based materials ++GTCEuStartupEvents.materialModification(event => { ++ GTMaterials.get('tfg:fluix').setFormula('?(CtSiO2)(SiO2)', true) ++ GTMaterials.CertusQuartz.setFormula('CtSiO2', true) ++}) +diff --git a/kubejs/startup_scripts/tfg/element.certus.js b/kubejs/startup_scripts/tfg/element.certus.js +new file mode 100644 +index 00000000..861d3994 +--- /dev/null ++++ b/kubejs/startup_scripts/tfg/element.certus.js +@@ -0,0 +1,8 @@ ++// priority: 0 ++ ++GTCEuStartupEvents.registry('gtceu:element', event => { ++ event.create('certus') + .protons(14) + .neutrons(18) -+ .symbol("Ct") -+} -diff --git a/kubejs/startup_scripts/tfg/items.js b/kubejs/startup_scripts/tfg/items.js -index bad26cd0..b53a0619 100644 ---- a/kubejs/startup_scripts/tfg/items.js -+++ b/kubejs/startup_scripts/tfg/items.js -@@ -375,6 +375,21 @@ const registerTFGItems = (event) => { - event.create('tfg:certus_mechanism') - .translationKey('item.tfg.certus_mechanism') - -+ event.create('tfg:certus_boule') -+ .texture('kubejs:item/certus_boule') ++ .symbol('Ct') ++}) +diff --git a/kubejs/startup_scripts/tfg/items.certus.js b/kubejs/startup_scripts/tfg/items.certus.js +new file mode 100644 +index 00000000..8d433101 +--- /dev/null ++++ b/kubejs/startup_scripts/tfg/items.certus.js +@@ -0,0 +1,20 @@ ++// priority: 0 ++"use strict"; + -+ event.create('tfg:certus_wafer') -+ .texture('kubejs:item/certus_wafer') ++// Certus wafer chain items ++StartupEvents.registry('item', event => { ++ event.create('tfg:certus_boule') ++ .texture('kubejs:item/certus_boule') + -+ event.create('tfg:engineering_wafer') -+ .texture('kubejs:item/engineering_wafer') ++ event.create('tfg:certus_wafer') ++ .texture('kubejs:item/certus_wafer') + -+ event.create('tfg:calculation_wafer') -+ .texture('kubejs:item/calculation_wafer') ++ event.create('tfg:engineering_wafer') ++ .texture('kubejs:item/engineering_wafer') + -+ event.create('tfg:logic_wafer') -+ .texture('kubejs:item/logic_wafer') ++ event.create('tfg:calculation_wafer') ++ .texture('kubejs:item/calculation_wafer') + - event.create('tfg:small_bullet_casing') - .translationKey('tfg:small_bullet_casing') - event.create('tfg:shell_bullet_casing') ++ event.create('tfg:logic_wafer') ++ .texture('kubejs:item/logic_wafer') ++}) -- -2.51.1.dirty - +2.52.0 +diff --git a/kubejs/startup_scripts/gtceu/material_modification.js b/kubejs/startup_scripts/gtceu/material_modification.js +index 2f2c05b6..e1c32f83 100644 +--- a/kubejs/startup_scripts/gtceu/material_modification.js ++++ b/kubejs/startup_scripts/gtceu/material_modification.js +@@ -436,7 +436,7 @@ const registerGTCEuMaterialModification = (event) => { + let zirconium_diboride = TFGHelpers.getMaterial('zirconium_diboride'); + zirconium_diboride.setProperty(PropertyKey.BLAST, new $BLAST_PROPERTY(4500, "high", GTValues.VA[GTValues.EV], 2700, GTValues.VA[GTValues.HV], 12.5*20)); + +- GTMaterials.CertusQuartz.setComponents('1x unknown', '1x silicon', '2x oxygen') ++ GTMaterials.CertusQuartz.setComponents('1x certus', '1x silicon', '2x oxygen') + GTMaterials.GraniteRed.setComponents([]) + GTMaterials.GraniteRed.setFormula("?") + }