import mods.gregtech.recipe.RecipeMap; import crafttweaker.recipes.IRecipeFunction; import crafttweaker.data.IData; import crafttweaker.item.IItemStack; import crafttweaker.recipes.ICraftingInfo; import scripts.common.makeShaped as makeShaped; //Conductive Iron Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Leadstone Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Electrical Steel Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Hardened Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Energetic Alloy Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Reinforced Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Vibrant Alloy Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); //Dark Soularium Thruster recipes.remove(); recipes.addShaped(, [ [,,], [,,], [, , ]]); //Resonant Thruster recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [,,]]); recipes.remove(); recipes.addShaped(, [ [null, , null], [, , ], [, , ]]); recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [, , ]]); recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [, , ]]); recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [, , ]]); // Elevation Unit canner.recipeBuilder() .inputs() .fluidInputs( * 4032) .outputs() .duration(100) .EUt(7) .buildAndRegister(); // Coolant Unit canner.recipeBuilder() .inputs() .fluidInputs( * 6000) .outputs() .duration(100) .EUt(7) .buildAndRegister(); // basic capacitor bank recipes.remove(); recipes.addShaped(, [ [, , ], [, , ], [, , ]]); // adds the existing power of both recipe ingredient capacitor banks to be placed into the resulting craft val sumCapacitorBankPower as IRecipeFunction = function(out, ins, cInfo) { var energy = 0; if (ins.left.tag.memberGet("enderio:energy")) { energy += ins.left.tag.memberGet("enderio:energy"); } if (ins.right.tag.memberGet("enderio:energy")) { energy += ins.right.tag.memberGet("enderio:energy"); } return out.updateTag({"enderio:energy": energy}); }; // advanced capacitor bank recipes.remove(); recipes.addShaped(, [ [,,], [.marked("left"), , .marked("right")], [,,]], sumCapacitorBankPower); // vibrant capacitor bank recipes.remove(); recipes.addShaped(, [ [,,], [.marked("left"), , .marked("right")], [,,]], sumCapacitorBankPower); //Conductive Iron Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe1"); recipes.addShaped(conductiveironjetpack, [ [, , ], [, , ], [, null, ]]); //Leadstone Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe30"); recipes.addShaped(leadstonejetpack, [ [, , ], [, , ], [, null, ]]); val transferTag as IRecipeFunction = function(out as IItemStack, ins as IItemStack[string], cInfo as ICraftingInfo) as IItemStack { return out.withTag(ins.jetpack.tag); }; //Electrical Steel Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe2"); recipes.addShaped(electricalsteeljetpack, [ [, , ], [, conductiveironjetpack.marked("jetpack"), ], [, null, ]], transferTag); //Hardened Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe31"); recipes.addShaped(hardenedjetpack, [ [, , ], [, leadstonejetpack.marked("jetpack"), ], [, null, ]], transferTag); //Energetic Alloy Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe3"); recipes.addShaped(energeticjetpack, [ [, , ], [, electricalsteeljetpack.marked("jetpack"), ], [, null, ]], transferTag); //Reinforced Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe32"); recipes.addShaped(reinforcedjetpack, [ [, , ], [, hardenedjetpack.marked("jetpack"), ], [, null, ]], transferTag); //Vibrant Alloy Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe4"); recipes.addShaped(vibrantjetpack, [ [, compressedoctadiccap, ], [, energeticjetpack.marked("jetpack"), ], [, null, ]], transferTag); //Resonant Jetpack recipes.removeByRecipeName("simplyjetpacks:upgraderecipe33"); recipes.addShaped(resonantjetpack, [ [, , ], [, reinforcedjetpack.marked("jetpack"), ], [, null, ]], transferTag); //Dark Soularium JetPlate recipes.removeByRecipeName("simplyjetpacks:upgraderecipe5"); // Moved to Groovy //Flux-Infused Jetplate recipes.removeByRecipeName("simplyjetpacks:upgraderecipe34"); // Moved to Groovy /* Fix Armored Jetpacks */ recipes.removeByRecipeName("simplyjetpacks:upgraderecipe15"); // conductive iron recipes.removeByRecipeName("simplyjetpacks:upgraderecipe17"); // electrical steel recipes.removeByRecipeName("simplyjetpacks:upgraderecipe19"); // energetic recipes.removeByRecipeName("simplyjetpacks:upgraderecipe21"); // vibrant recipes.removeByRecipeName("simplyjetpacks:upgraderecipeshapeless0"); // leadstone recipes.removeByRecipeName("simplyjetpacks:upgraderecipeshapeless1"); // conductive recipes.removeByRecipeName("simplyjetpacks:upgraderecipeshapeless2"); // reinforced recipes.removeByRecipeName("simplyjetpacks:upgraderecipeshapeless3"); // resonant recipes.addShapeless("armored_conductive_iron_jetpack", armoredconductiveironjetpack, [conductiveironjetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_electrical_steel_jetpack", armoredelectricalsteeljetpack, [electricalsteeljetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_energetic_jetpack", armoredenergeticjetpack, [energeticjetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_vibrant_jetpack", armoredvibrantjetpack, [vibrantjetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_leadstone_jetpack", armoredleadstonejetpack, [leadstonejetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_hardened_jetpack", armoredhardenedjetpack, [hardenedjetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_reinforced_jetpack", armoredreinforcedjetpack, [reinforcedjetpack.marked("jetpack"), ], transferTag); recipes.addShapeless("armored_resonant_jetpack", armoredresonantjetpack, [resonantjetpack.marked("jetpack"), ], transferTag); //Add Jetpack Nbt Resetting recipes //Enderio Jetpacks recipes.addShapeless(conductiveironjetpack, []); recipes.addShapeless(electricalsteeljetpack, []); recipes.addShapeless(energeticjetpack, []); recipes.addShapeless(vibrantjetpack, []); //TE Jetpacks recipes.addShapeless(leadstonejetpack, []); recipes.addShapeless(hardenedjetpack, []); recipes.addShapeless(reinforcedjetpack, []); recipes.addShapeless(resonantjetpack, []); recipes.remove(); recipes.addShaped(, [ [null, , null], [, null, ], [, ,]]); recipes.addShaped(, [ [, , ], [, null, ], [, , ]]); recipes.addShaped(, [ [, , ], [, null, ], [, , ]]); recipes.addShaped(, [ [, , ], [, null, ], [, , ]]); // redstone cell frame (filled) => "micro miner engine core" alloy.recipeBuilder() .inputs([, * 2]) .outputs([]) .duration(500).EUt(480).buildAndRegister(); // signalum cell frame (filled) => "signalum micro miner engine core" alloy.recipeBuilder() .inputs([, * 4]) .outputs([]) .duration(1000).EUt(2000).buildAndRegister(); // resonant cell frame (filled) => "enderium micro miner engine core" alloy.recipeBuilder() .inputs([, * 8]) .outputs([]) .duration(2000).EUt(8000).buildAndRegister(); // Leadstone Energy Cell Frame recipes.remove(); recipes.addShaped(, [ [, , ], [, .withTag({"enderio:energy": 0}, false), ], [, , ]]); // Leadstone Energy Cell // hide the multi-tag one from JEI so it's not confusing mods.jei.JEI.removeAndHide(.withTag({Recv: 10000, RSControl: 0 as byte, Facing: 3 as byte, Energy: 0, SideCache: [2, 1, 1, 1, 1, 1] as byte[] as byte[], Level: 0 as byte, Send: 10000})); recipes.remove(); alloy.recipeBuilder() .inputs([, ]) .outputs([basiccell]) .duration(500).EUt(30).buildAndRegister(); // Note: applying kits in-world will also update the Send & Recv tags but that's not really needed for auto-crafting. // Conversion Kit Ugrades via Crafting Table: // basic => reinforced recipes.addShapeless("basic_to_reinforced_energy_cell_conversion", reinforcedcell, [basiccellIng.marked("cell"),], function(out, ins, cInfo) { return ins.cell.updateTag({Level: 2 as byte, Creative: 0 as byte}); } as IRecipeFunction ); // basic => signalum recipes.addShapeless("basic_to_signalum_energy_cell_conversion", signalumcell, [basiccellIng.marked("cell"),], function(out, ins, cInfo) { return ins.cell.updateTag({Level: 3 as byte, Creative: 0 as byte}); } as IRecipeFunction ); // basic => resonant recipes.addShapeless("basic_to_resonant_energy_cell_conversion", resonantcell, [basiccellIng.marked("cell"),], function(out, ins, cInfo) { return ins.cell.updateTag({Level: 4 as byte, Creative: 0 as byte}); } as IRecipeFunction ); // NOTE: technically you can use conversion kits on non-basic cell tiers but it's kind of wasteful so I'm not gonna bother adding that val upgradeTierByOne as IRecipeFunction = function(out, ins, cinfo) { var level = ins.cell.tag.Level.asByte(); return ins.cell.updateTag({Level: level+1 as byte, Creative: 0 as byte}); }; // Upgrade Kit recipes.addShapeless("basic_to_hardened_energy_cell_upgrade", hardenedcell, [basiccellIng.marked("cell"), ], upgradeTierByOne ); recipes.addShapeless("hardened_to_reinforced_energy_cell_upgrade", reinforcedcell, [hardenedcellIng.marked("cell"), ], upgradeTierByOne ); recipes.addShapeless("reinforced_to_signalum_energy_cell_upgrade", signalumcell, [reinforcedcellIng.marked("cell"), ], upgradeTierByOne ); recipes.addShapeless("signalum_to_resonant_energy_cell_upgrade", resonantcell, [signalumcellIng.marked("cell"), ], upgradeTierByOne ); // Register all energy cell tiers in JEI mods.jei.JEI.addItem(basiccell); mods.jei.JEI.addItem(hardenedcell); mods.jei.JEI.addItem(reinforcedcell); mods.jei.JEI.addItem(signalumcell); mods.jei.JEI.addItem(resonantcell);