From 241b80a4a01e27f88a60e6cad7dd370da06ca2fd Mon Sep 17 00:00:00 2001 From: Pyritie Date: Mon, 12 Jan 2026 15:32:18 +0000 Subject: [PATCH] migrate everything over to linuxUnfucker() --- kubejs/server_scripts/gregtech/utility.js | 8 +- kubejs/server_scripts/main_server_script.js | 7 + .../server_scripts/modern_markings/recipes.js | 4 +- kubejs/server_scripts/soulbound/recipes.js | 2 +- .../tfg/aquaponics/recipes.greenhouse.js | 6 - .../tfg/aquaponics/recipes.pisciculture.js | 12 +- .../server_scripts/tfg/food/recipes.food.js | 18 +-- .../tfg/machines/recipes.molds.js | 12 +- .../tfg/natural_blocks/recipes.rocks.js | 144 +++++++++++------- .../tfg/ores_and_materials/recipes.alloys.js | 6 +- .../ores_and_materials/recipes.materials.js | 28 ++++ kubejs/server_scripts/tfg/recipes.js | 1 + .../tfg/venus/recipes.biochem.js | 6 +- .../vintage_improvements/recipes.js | 2 +- 14 files changed, 162 insertions(+), 94 deletions(-) create mode 100644 kubejs/server_scripts/tfg/ores_and_materials/recipes.materials.js diff --git a/kubejs/server_scripts/gregtech/utility.js b/kubejs/server_scripts/gregtech/utility.js index 39c376d82..b16721aed 100644 --- a/kubejs/server_scripts/gregtech/utility.js +++ b/kubejs/server_scripts/gregtech/utility.js @@ -500,28 +500,28 @@ function sterilizeItem(event, input, output, multiplier, cleanroom) { } // Create recipes. - const ethanol_recipe = event.recipes.gtceu.chemical_bath(`tfg:ethanol_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`) + const ethanol_recipe = event.recipes.gtceu.chemical_bath(`tfg:ethanol_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`) .itemInputs(input) .inputFluids(Fluid.of('gtceu:ethanol', 500*recipe_multiplier)) .itemOutputs(output) .duration(10*20*recipe_multiplier) .EUt(GTValues.VA[GTValues.MV]); - const hydrogen_peroxide_recipe = event.recipes.gtceu.chemical_bath(`tfg:hydrogen_peroxide_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`) + const hydrogen_peroxide_recipe = event.recipes.gtceu.chemical_bath(`tfg:hydrogen_peroxide_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`) .itemInputs(input) .inputFluids(Fluid.of('gtceu:hydrogen_peroxide', 200*recipe_multiplier)) .itemOutputs(output) .duration(10*20*recipe_multiplier) .EUt(GTValues.VA[GTValues.MV]); - const sodium_dodecyl_sulfate_recipe = event.recipes.gtceu.chemical_bath(`tfg:sodium_dodecyl_sulfate_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`) + const sodium_dodecyl_sulfate_recipe = event.recipes.gtceu.chemical_bath(`tfg:sodium_dodecyl_sulfate_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`) .itemInputs(input) .inputFluids(Fluid.of('tfg:sodium_dodecyl_sulfate', 50*recipe_multiplier)) .itemOutputs(output) .duration(10*20*recipe_multiplier) .EUt(GTValues.VA[GTValues.MV]); - const autoclave_recipe = event.recipes.gtceu.autoclave(`tfg:autoclave_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`) + const autoclave_recipe = event.recipes.gtceu.autoclave(`tfg:autoclave_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`) .itemInputs(input) .perTick(true) .inputFluids(Fluid.of('gtceu:steam', 100*recipe_multiplier)) diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index c60537876..1e1452714 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -199,6 +199,13 @@ GTCEuServerEvents.fluidVeins(event => { registerGTCEUBedrockFluidVeins(event) }) + +/** Correct recipe IDs to replace invalid characters */ +function linuxUnfucker(value) { + const str = (value === undefined || value === null) ? "" : value.toString(); + return str.replace(/[/:\s]/g, "_"); +}; + /** * Событие регистрации рецептов. * Срабатывает после инициализации датапаков и тегов. diff --git a/kubejs/server_scripts/modern_markings/recipes.js b/kubejs/server_scripts/modern_markings/recipes.js index 19b436120..dbb2806a1 100644 --- a/kubejs/server_scripts/modern_markings/recipes.js +++ b/kubejs/server_scripts/modern_markings/recipes.js @@ -27,9 +27,9 @@ const registerModernMarkingRecipes = (event) => { markings.forEach(item => { event.stonecutting(item, Ingredient.of('#ags_modernmarkings:markings').subtract(item) - ).id(`tfg:stonecutter/${item.replace(/:/g, "/")}`) + ).id(`tfg:stonecutter/${linuxUnfucker(item)}`) event.stonecutting(item, 'ags_modernmarkings:wall_marking_hazard_diamond') - .id(`tfg:stonecutter/${item.replace(/:/g, "/")}_from_diamond`) + .id(`tfg:stonecutter/${linuxUnfucker(item)}_from_diamond`) }) }; \ No newline at end of file diff --git a/kubejs/server_scripts/soulbound/recipes.js b/kubejs/server_scripts/soulbound/recipes.js index d68b64f90..4f382d8fc 100644 --- a/kubejs/server_scripts/soulbound/recipes.js +++ b/kubejs/server_scripts/soulbound/recipes.js @@ -18,7 +18,7 @@ const registerSoulboundRecipes = (event) => { } result.nbt.put('soulbindingSoulboundItems', true) return result; - }).id(`tfg:soulbind_${x.equipment}`.replace(/[: ]/g, '_')); + }).id(`tfg:soulbind_${linuxUnfucker(x.equipment)}`); }) diff --git a/kubejs/server_scripts/tfg/aquaponics/recipes.greenhouse.js b/kubejs/server_scripts/tfg/aquaponics/recipes.greenhouse.js index e26039327..c5d52f343 100644 --- a/kubejs/server_scripts/tfg/aquaponics/recipes.greenhouse.js +++ b/kubejs/server_scripts/tfg/aquaponics/recipes.greenhouse.js @@ -46,12 +46,6 @@ const greenhouse_dimension_index = [ //#region Utility Script -/** Correct recipe IDs to replace invalid characters */ -function linuxUnfucker(value) { - const str = (value === undefined || value === null) ? "" : value.toString(); - return str.replace(/[/:\s]/g, "_"); -}; - /** * Function for generating greenhouse recipes. * diff --git a/kubejs/server_scripts/tfg/aquaponics/recipes.pisciculture.js b/kubejs/server_scripts/tfg/aquaponics/recipes.pisciculture.js index e871d930c..774a7e84e 100644 --- a/kubejs/server_scripts/tfg/aquaponics/recipes.pisciculture.js +++ b/kubejs/server_scripts/tfg/aquaponics/recipes.pisciculture.js @@ -145,7 +145,7 @@ const registerTFGPiscicultureRecipes = (event) => { Item.of(`3x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(), '2x minecraft:bucket' ], - `${fish.id.replace(/[/:\s]/g, "_")}/basic_food/bucket_to_roe` + `${linuxUnfucker(fish.id)}/basic_food/bucket_to_roe` ); generatePiscicultureRecipe(event, @@ -158,7 +158,7 @@ const registerTFGPiscicultureRecipes = (event) => { Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(), '2x minecraft:bucket' ], - `${fish.id.replace(/[/:\s]/g, "_")}/advanced_food/bucket_to_roe` + `${linuxUnfucker(fish.id)}/advanced_food/bucket_to_roe` ); } else { generatePiscicultureRecipe(event, @@ -170,7 +170,7 @@ const registerTFGPiscicultureRecipes = (event) => { `6x ${fish.item}`, Item.of(`3x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT() ], - `${fish.id.replace(/[/:\s]/g, "_")}/basic_food/parent_to_roe` + `${linuxUnfucker(fish.id)}/basic_food/parent_to_roe` ); generatePiscicultureRecipe(event, @@ -182,7 +182,7 @@ const registerTFGPiscicultureRecipes = (event) => { `12x ${fish.item}`, Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT() ], - `${fish.id.replace(/[/:\s]/g, "_")}/advanced_food/parent_to_roe` + `${linuxUnfucker(fish.id)}/advanced_food/parent_to_roe` ); }; @@ -196,7 +196,7 @@ const registerTFGPiscicultureRecipes = (event) => { `10x ${fish.item}`, Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT() ], - `${fish.id.replace(/[/:\s]/g, "_")}/basic_food/roe_to_roe` + `${linuxUnfucker(fish.id)}/basic_food/roe_to_roe` ); generatePiscicultureRecipe(event, @@ -208,7 +208,7 @@ const registerTFGPiscicultureRecipes = (event) => { `15x ${fish.item}`, Item.of(`5x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT() ], - `${fish.id.replace(/[/:\s]/g, "_")}/advanced_food/roe_to_roe` + `${linuxUnfucker(fish.id)}/advanced_food/roe_to_roe` ); }); diff --git a/kubejs/server_scripts/tfg/food/recipes.food.js b/kubejs/server_scripts/tfg/food/recipes.food.js index caf7ac9f4..74c76a144 100644 --- a/kubejs/server_scripts/tfg/food/recipes.food.js +++ b/kubejs/server_scripts/tfg/food/recipes.food.js @@ -418,7 +418,7 @@ function registerTFGFoodRecipes(event) { const brining_ingredients = smoking_meats.concat(brining_veg); brining_ingredients.forEach(item => { - global.processorRecipeText(event, `${item.replace(/:/g, "/")}/brining`, 200, 16, "tfg.food_recipe.brining", { + global.processorRecipeText(event, `${linuxUnfucker(item)}/brining`, 200, 16, "tfg.food_recipe.brining", { circuit: 5, itemInputs: [item], itemOutputs: [item], @@ -428,7 +428,7 @@ function registerTFGFoodRecipes(event) { }) smoking_meats.forEach(item => { - global.processorRecipeText(event, `${item.replace(/:/g, "/")}/smoking`, 200, 16, "tfg.food_recipe.smoking", { + global.processorRecipeText(event, `${linuxUnfucker(item)}/smoking`, 200, 16, "tfg.food_recipe.smoking", { circuit: 6, itemInputs: [item], itemOutputs: [item], @@ -438,7 +438,7 @@ function registerTFGFoodRecipes(event) { }) smoking_cheese.forEach(item => { - global.processorRecipeText(event, `${item.replace(/:/g, "/")}/smoking`, 200, 16, "tfg.food_recipe.smoking", { + global.processorRecipeText(event, `${linuxUnfucker(item)}/smoking`, 200, 16, "tfg.food_recipe.smoking", { circuit: 6, itemInputs: [item], itemOutputs: [item], @@ -448,7 +448,7 @@ function registerTFGFoodRecipes(event) { }) drying_fruits.forEach(item => { - global.processorRecipeText(event, `${item.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", { + global.processorRecipeText(event, `${linuxUnfucker(item)}/drying`, 200, 16, "tfg.food_recipe.drying", { circuit: 6, itemInputs: [item], itemOutputs: [item], @@ -458,7 +458,7 @@ function registerTFGFoodRecipes(event) { }) drying_recipes.forEach(item => { - global.processorRecipeText(event, `${item.input.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", { + global.processorRecipeText(event, `${linuxUnfucker(item.input)}/drying`, 200, 16, "tfg.food_recipe.drying", { circuit: 6, itemInputs: [item.input], itemOutputs: [item.output], @@ -958,7 +958,7 @@ function registerTFGFoodRecipes(event) { //#region Alcohols global.TFC_ALCOHOL.forEach(alcohol => { - global.processorRecipe(event, alcohol.id.replace(/:/g, "_"), 2400, 1, { + global.processorRecipe(event, linuxUnfucker(alcohol.id), 2400, 1, { itemInputs: [alcohol.ingredient], fluidInputs: ['#tfg:clean_water 500', 'firmalife:yeast_starter 10'], fluidOutputs: [Fluid.of(alcohol.id, 500)], @@ -1424,7 +1424,7 @@ function registerTFGFoodRecipes(event) { */ const beer = ['tfc:beer', 'tfcagedalcohol:aged_beer']; beer.forEach(beerType => { - global.processorRecipe(event, `raw_beer_battered_cheese_curds/${beerType.replace(':', '_')}`, 20*5, GTValues.VA[GTValues.ULV], { + global.processorRecipe(event, `raw_beer_battered_cheese_curds/${linuxUnfucker(beerType)}`, 20*5, GTValues.VA[GTValues.ULV], { itemInputs: ['4x #tfg:foods/cheese_curds', '#tfc:foods/flour', 'tfc:powder/salt', '#forge:eggs'], fluidInputs: [`${beerType} 100`], itemOutputs: ['4x tfg:food/raw_beer_battered_cheese_curds'], @@ -1714,9 +1714,9 @@ function registerTFGFoodRecipes(event) { spice.plant, '#forge:tools/knives' ] - ).id(`tfg:crafting/${spice.product.replace(':', '_')}`); + ).id(`tfg:crafting/${linuxUnfucker(spice.product)}`); - event.recipes.gtceu.food_processor(`tfg:${spice.product.replace(':', '_')}`) + event.recipes.gtceu.food_processor(`tfg:${linuxUnfucker(spice.product)}`) .itemInputs(spice.plant) .itemOutputs(Item.of(spice.product).withCount(2)) .duration(10) diff --git a/kubejs/server_scripts/tfg/machines/recipes.molds.js b/kubejs/server_scripts/tfg/machines/recipes.molds.js index 0496f86d4..fbc41a399 100644 --- a/kubejs/server_scripts/tfg/machines/recipes.molds.js +++ b/kubejs/server_scripts/tfg/machines/recipes.molds.js @@ -281,21 +281,21 @@ function registerTFGMoldRecipes(event) { global.TFG_EXTRUDER_MOLDS.forEach(mold => { - event.recipes.gtceu.arc_furnace(`arc_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.arc_furnace(`arc_${linuxUnfucker(mold)}`) .itemInputs(mold) .itemOutputs(steelIngots) .duration(224) .EUt(GTValues.VA[GTValues.LV]) .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - event.recipes.gtceu.macerator(`macerate_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.macerator(`macerate_${linuxUnfucker(mold)}`) .itemInputs(mold) .itemOutputs(steelDusts) .duration(224) .EUt(GTValues.VA[GTValues.ULV]) .category(GTRecipeCategories.MACERATOR_RECYCLING) - event.recipes.gtceu.forming_press(`copy_shape_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.forming_press(`copy_shape_${linuxUnfucker(mold)}`) .itemInputs('gtceu:empty_mold') .notConsumable(mold) .itemOutputs(mold) @@ -305,21 +305,21 @@ function registerTFGMoldRecipes(event) { global.TFG_CASTING_MOLDS.forEach(mold => { - event.recipes.gtceu.arc_furnace(`arc_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.arc_furnace(`arc_${linuxUnfucker(mold)}`) .itemInputs(mold) .itemOutputs(steelIngots) .duration(224) .EUt(GTValues.VA[GTValues.LV]) .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - event.recipes.gtceu.macerator(`macerate_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.macerator(`macerate_${linuxUnfucker(mold)}`) .itemInputs(mold) .itemOutputs(steelDusts) .duration(224) .EUt(GTValues.VA[GTValues.ULV]) .category(GTRecipeCategories.MACERATOR_RECYCLING) - event.recipes.gtceu.forming_press(`copy_shape_${mold}`.replace("tfg:", "")) + event.recipes.gtceu.forming_press(`copy_shape_${linuxUnfucker(mold)}`) .itemInputs('gtceu:empty_mold') .notConsumable(mold) .itemOutputs(mold) diff --git a/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js index 425001285..76dbd241f 100644 --- a/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js @@ -38,6 +38,8 @@ function registerTFGRockRecipes(event) { ] GLUEING_TOGETHER.forEach(x => { + const id = linuxUnfucker(`${x.loose}_to_${x.block}`); + event.shaped(x.block, [ 'ABA', 'BAB', @@ -45,9 +47,9 @@ function registerTFGRockRecipes(event) { ], { A: x.loose, B: 'tfc:mortar' - }) + }).id(`tfg:shaped/${id}`) - event.recipes.gtceu.assembler(`${x.loose}_to_${x.block}`.replace(/[: ]/g, '_')) + event.recipes.gtceu.assembler(`tfg:${id}`) .itemInputs(`5x ${x.loose}`) .inputFluids(Fluid.of('gtceu:concrete', 72)) .itemOutputs(x.block) @@ -74,23 +76,27 @@ function registerTFGRockRecipes(event) { ] COBBLE_TO_LOOSE.forEach(x => { - event.shapeless(`4x ${x.loose}`, [x.cobble]); + const cobbleId = linuxUnfucker(x.cobble); + + event.shapeless(`4x ${x.loose}`, [x.cobble]) + .id(`tfg:shapeless/unpacking_${cobbleId}`); event.shaped(x.cobble, [ 'AA', 'AA' ], { A: x.loose - }); + }) + .id(`tfg:shaped/packing_${cobbleId}`); - event.recipes.gtceu.packer(`tfc:gtceu/packer/unpacking_${x.cobble}`.replace(/[: ]/g, '_')) + event.recipes.gtceu.packer(`tfg:unpacking_${cobbleId}`) .itemInputs(`1x ${x.cobble}`) .itemOutputs(`4x ${x.loose}`) .circuit(1) .duration(20) .EUt(GTValues.VA[GTValues.ULV]) - event.recipes.gtceu.packer(`tfc:gtceu/packer/packing_${x.cobble}`.replace(/[: ]/g, '_')) + event.recipes.gtceu.packer(`tfg:packing_${cobbleId}`) .itemInputs(`4x ${x.loose}`) .itemOutputs(`1x ${x.cobble}`) .circuit(1) @@ -116,15 +122,18 @@ function registerTFGRockRecipes(event) { ] LOOSE_TO_BRICKS.forEach(x => { - event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless( + const id = linuxUnfucker(`${x.loose}_to_${x.brick}`); + + event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless( x.brick, [x.loose, '#tfc:chisels'] )) + .id(`tfg:shapeless/${id}`); - event.recipes.gtceu.cutter(`${x.loose}_to_${x.brick}`.replace(/:/g, '_')) + event.recipes.gtceu.cutter(`tfg:${id}`) .itemInputs(x.loose) .itemOutputs(x.brick) .duration(10) - .EUt(2) + .EUt(2); }) // #endregion LOOSE_TO_BRICKS @@ -146,6 +155,8 @@ function registerTFGRockRecipes(event) { ] AQUEDUCTS.forEach(x => { + const id = linuxUnfucker(`${x.brick}_to_${x.aqueduct}`); + event.shaped(x.aqueduct, [ 'A A', 'BAB' @@ -153,14 +164,15 @@ function registerTFGRockRecipes(event) { A: x.brick, B: 'tfc:mortar' }) + .id(`tfg:shaped/${id}`); - event.recipes.gtceu.assembler(`${x.brick}_to_${x.aqueduct}`.replace(/:/g, '_')) + event.recipes.gtceu.assembler(`tfg:${id}`) .itemInputs(`3x ${x.brick}`) .circuit(3) .inputFluids(Fluid.of('gtceu:concrete', 16)) .itemOutputs(x.aqueduct) .duration(50) - .EUt(2) + .EUt(2); }) // #endregion AQUEDUCT @@ -186,7 +198,7 @@ function registerTFGRockRecipes(event) { COBBLE_TO_MOSSY.forEach(x => { - event.recipes.gtceu.assembler(`${x.mossy}_cobble_rocks_to_mossy_cobble`.replace(/: /g, '_')) + event.recipes.gtceu.assembler(`tfg:${linuxUnfucker(x.mossy)}_cobble_rocks_to_mossy_cobble`) .itemInputs(x.cobble, '#tfc:compost_greens_low') .circuit(0) .inputFluids("#tfg:clean_water 144") @@ -336,18 +348,22 @@ function registerTFGRockRecipes(event) { ] RAW_TO_POLISHED.forEach(x => { - event.recipes.tfc.chisel(`${x.polished}`, `${x.raw}`, 'smooth') + const id = linuxUnfucker(`${x.raw}_to_${x.polished}`); - event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless( + event.recipes.tfc.chisel(`${x.polished}`, `${x.raw}`, 'smooth') + .id(`tfg:chisel/${id}`); + + event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless( x.polished, [x.raw, '#tfc:chisels'] )) + .id(`tfg:shapeless/${id}`); - event.recipes.gtceu.laser_engraver(`${x.raw}_to_${x.polished}`.replace(/:/g, '_')) + event.recipes.gtceu.laser_engraver(`tfg:${id}`) .itemInputs(x.raw) .itemOutputs(x.polished) .notConsumable('tfc:lens') .duration(30) - .EUt(GTValues.VA[GTValues.ULV]) + .EUt(GTValues.VA[GTValues.ULV]); }) // #endregion RAW_TO_POLISHED @@ -366,38 +382,42 @@ function registerTFGRockRecipes(event) { { raw: 'ad_astra:glacio_stone_bricks', cracked: 'ad_astra:cracked_glacio_stone_bricks' }, { raw: 'ad_astra:permafrost_bricks', cracked: 'ad_astra:cracked_permafrost_bricks' }, { raw: 'gtceu:red_granite_bricks', cracked: 'gtceu:cracked_red_granite_bricks' } - ] CRACKING.forEach(x => { - event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless( + const id = linuxUnfucker(`${x.raw}_to_${x.cracked}`); + + event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless( x.cracked, [x.raw, '#tfc:hammers'] )) + .id(`tfg:shapeless/${id}`); - event.recipes.gtceu.forge_hammer(`${x.raw}_to_${x.cracked}`.replace(/:/g, '_')) + event.recipes.gtceu.forge_hammer(`tfg:${id}`) .itemInputs(x.raw) .itemOutputs(x.cracked) .duration(12) - .EUt(8) + .EUt(8); event.recipes.greate.pressing(x.cracked, x.raw) .recipeTier(0) - .id(`greate:pressing/${x.raw}_to_${x.cracked}`.replace(/:/g, '_')) + .id(`tfg:pressing/${id}`); }) // #endregion CRACKING // #region HAMMERING // Defined in kubejs/startup_scripts/tfg/constants.js global.HAMMERING.forEach(x => { - event.recipes.gtceu.forge_hammer(`${x.raw}_to_${x.hammered}`.replace(/[: ]/g, '_')) + const id = linuxUnfucker(`${x.raw}_to_${x.hammered}`); + + event.recipes.gtceu.forge_hammer(`tfg:${id}`) .itemInputs(x.raw) .itemOutputs(x.hammered) .duration(x.duration) - .EUt(x.eu) + .EUt(x.eu); event.recipes.greate.pressing(x.hammered, x.raw) .recipeTier(x.eu <= 8 ? 0 : 1) - .id(`greate:pressing/${x.raw}_to_${x.hammered}`.replace(/[: ]/g, '_')) + .id(`tfg:pressing/${id}`); }) // #endregion HAMMERING @@ -877,79 +897,87 @@ function registerTFGRockRecipes(event) { CUT_GRIND.forEach(x => { if (x.raw != null && x.dust != null) { - try{ - event.recipes.gtceu.macerator(x.raw.replace(/.*:/g, 'macerate_')) - .itemInputs(x.raw) - .itemOutputs(x.dust) - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - } catch(e){ } + event.recipes.gtceu.macerator(`tfg:macerate_${linuxUnfucker(x.raw)}`) + .itemInputs(x.raw) + .itemOutputs(x.dust) + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING) } if (x.stair != null) { if (x.raw != null) { + const id = linuxUnfucker(`${x.raw}_to_${x.stair}`); + event.recipes.tfc.chisel(x.stair, x.raw, 'stair') + .id(`tfg:chisel/${id}`); if (x.stonecutting) { - event.stonecutting(x.stair, x.raw).id(`${x.raw}_to_${x.stair}`.replace(/:/g, '_')) + event.stonecutting(x.stair, x.raw) + .id(`tfg:stonecutter/${id}`); } } if (x.dust != null) { - event.recipes.gtceu.macerator(x.stair.replace(/.*:/g, 'macerate_')) + event.recipes.gtceu.macerator(`tfg:macerate_${linuxUnfucker(x.stair)}`) .itemInputs(x.stair) .itemOutputs(x.dust) .duration(150) .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING) + .category(GTRecipeCategories.MACERATOR_RECYCLING); } if (x.loose != null) { - event.shapeless(`3x ${x.loose}`, [x.stair]) + event.shapeless(`3x ${x.loose}`, [x.stair]); } } if (x.slab != null) { if (x.raw != null) { - event.recipes.tfc.chisel(x.slab, x.raw, 'slab').extraDrop(x.slab) + const id = linuxUnfucker(`${x.raw}_to_${x.slab}`); + + event.recipes.tfc.chisel(x.slab, x.raw, 'slab') + .extraDrop(x.slab) + .id(`tfg:chisel/${id}`); if (x.stonecutting) { - event.stonecutting(`2x ${x.slab}`, x.raw).id(`${x.raw}_to_${x.slab}`.replace(/:/g, '_')) + event.stonecutting(`2x ${x.slab}`, x.raw) + .id(`tfg:stonecutting/${id}`); } } if (x.dust != null) { - event.recipes.gtceu.macerator(x.slab.replace(/.*:/g, 'macerate_')) + event.recipes.gtceu.macerator(`tfg:macerate_${linuxUnfucker(x.slab)}`) .itemInputs(`2x ${x.slab}`) .itemOutputs(x.dust) .duration(150) .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING) + .category(GTRecipeCategories.MACERATOR_RECYCLING); } if (x.loose != null) { - event.shapeless(`2x ${x.loose}`, [x.slab]) + event.shapeless(`2x ${x.loose}`, [x.slab]); } } if (x.wall != null) { if (x.raw != null) { if (x.stonecutting) { - event.stonecutting(x.wall, x.raw).id(`${x.raw}_to_${x.wall}`.replace(/:/g, '_')) + event.stonecutting(x.wall, x.raw) + .id(`tfg:stonecutting/${linuxUnfucker(x.raw)}_to_${linuxUnfucker(x.wall)}`) } } if (x.slab != null) { - event.recipes.tfc.chisel(x.wall, x.slab, 'smooth') + event.recipes.tfc.chisel(x.wall, x.slab, 'smooth'); } if (x.dust != null) { - event.recipes.gtceu.macerator(x.wall.replace(/.*:/g, 'macerate_')) + event.recipes.gtceu.macerator(`tfg:macerate_${linuxUnfucker(x.wall)}`) .itemInputs(`2x ${x.wall}`) .itemOutputs(x.dust) .duration(150) .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING) + .category(GTRecipeCategories.MACERATOR_RECYCLING); } if (x.loose != null) { - event.shapeless(`2x ${x.loose}`, [x.wall]) + event.shapeless(`2x ${x.loose}`, [x.wall]); } } }) @@ -995,12 +1023,12 @@ function registerTFGRockRecipes(event) { ] MACERATOR.forEach(x => { - event.recipes.gtceu.macerator(x.block.replace(/.*:/g, 'macerate_')) + event.recipes.gtceu.macerator(`tfg:macerate_${linuxUnfucker(x.block)}`) .itemInputs(x.block) .itemOutputs(x.dust) .duration(150) .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING) + .category(GTRecipeCategories.MACERATOR_RECYCLING); }) //#endregion @@ -1027,7 +1055,9 @@ function registerTFGRockRecipes(event) { STONECUTTER.forEach(set => { set.forEach(block1 => { set.forEach(block2 => { - if( block1 != block2 ){ event.stonecutting(block1, block2) } + if (block1 !== block2) { + event.stonecutting(block1, block2); + } }) }) }) @@ -1075,14 +1105,18 @@ function registerTFGRockRecipes(event) { ] PILLARS.forEach(x => { + const id = linuxUnfucker(`${x.raw}_to_${x.pillar}`); + event.shaped(`2x ${x.pillar}`, [ 'A', 'A' ], { A: x.raw }) + .id(`tfg:shaped/${id}`); - event.stonecutting(x.pillar, x.raw).id(`${x.raw}_to_${x.pillar}`.replace(/:/g, '_')) + event.stonecutting(x.pillar, x.raw) + .id(`tfg:stonecutting/${id}`); }) // horizontal shaped recipes @@ -1171,15 +1205,17 @@ function registerTFGRockRecipes(event) { ] ROCK_DUPING.forEach(x => { + const id = linuxUnfucker(x.block); + if (x.dimension != null) { - event.recipes.gtceu.rock_breaker(x.block) + event.recipes.gtceu.rock_breaker(`tfg:${id}`) .notConsumable(x.block) .itemOutputs(x.block) .duration(16) .EUt(7) .dimension(x.dimension) } else { - event.recipes.gtceu.rock_breaker(x.block) + event.recipes.gtceu.rock_breaker(`tfg:${id}`) .notConsumable(x.block) .itemOutputs(x.block) .duration(16) @@ -1221,14 +1257,14 @@ function registerTFGRockRecipes(event) { ]; MAGMA_BLOCKS.forEach(block => { - event.recipes.gtceu.fluid_solidifier(`tfg:gtceu/fluid_solidifier/${block.magma}`.replace(/:/g, '/')) + event.recipes.gtceu.fluid_solidifier(`tfg:gtceu/fluid_solidifier/${linuxUnfucker(block.magma)}`) .itemInputs(`1x ${block.rock}`) .inputFluids(Fluid.of('minecraft:lava', 250)) .itemOutputs(`1x ${block.magma}`) .duration(100) .EUt(GTValues.VA[GTValues.ULV]) - event.recipes.gtceu.extractor(`tfg:gtceu/extractor/${block.magma}`.replace(/:/g, "/")) + event.recipes.gtceu.extractor(`tfg:gtceu/extractor/${linuxUnfucker(block.magma)}`) .itemInputs(`1x ${block.magma}`) .outputFluids(Fluid.of('minecraft:lava', 250)) .itemOutputs(`1x ${block.rock}`) diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js index 8beef8cc9..db441beb3 100644 --- a/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js @@ -141,14 +141,16 @@ function registerTFGAlloyingRecipes(event) { 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, "")}`) + const id = linuxUnfucker(`${copper_types_array}_and_${gold_types_array}`.replace(/#/g, "")); + event.recipes.gtceu.alloy_smelter(`tfg:rose_gold_from_${id}`) .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, "")}`) + const id = linuxUnfucker(`${copper_types_array}_and_${silver_types_array}`.replace(/#/g, "")); + event.recipes.gtceu.alloy_smelter(`tfg:sterling_silver_from_${id}`) .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) diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.materials.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.materials.js new file mode 100644 index 000000000..6497a967b --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.materials.js @@ -0,0 +1,28 @@ +// priority: 0 +"use strict"; + +//function getMaterialRecyclingExtractorEUt(material) { +// // Special case for bis/black bronze because removing the blast property doesn't change the tier of +// // the extractor recipes retroactively +// return material.hasProperty(PropertyKey.BLAST) && material !== GTMaterials.BismuthBronze && material !== GTMaterials.BlackBronze +// ? GTValues.VA[GTValues.MV] +// : GTValues.VA[GTValues.LV]; +//} + +//function addMaterialRecycling(event, item, materialMap) { + + +// const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY); +// if (tfcProperty !== null) { +// const outputMaterial = (tfcProperty.getOutputMaterial() === null) ? material : tfcProperty.getOutputMaterial(); + +// event.recipes.tfc.heating(ingotItem, tfcProperty.getMeltTemp()) +// .resultFluid(Fluid.of(outputMaterial.getFluid(), 144)) +// .id(`tfc:heating/metal/${material.getName()}_ingot`) +// } +//} + +function registerTFGMaterialRecipes(event) { + + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index f2321374c..925a225b1 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -6,6 +6,7 @@ */ const registerTFGRecipes = (event) => { + registerTFGMaterialRecipes(event) registerTFGMoldRecipes(event) registerTFGMiscellaneousRecipes(event) registerTFGTemporaryRecipes(event) diff --git a/kubejs/server_scripts/tfg/venus/recipes.biochem.js b/kubejs/server_scripts/tfg/venus/recipes.biochem.js index e1a711727..d9f0a9c5f 100644 --- a/kubejs/server_scripts/tfg/venus/recipes.biochem.js +++ b/kubejs/server_scripts/tfg/venus/recipes.biochem.js @@ -331,7 +331,7 @@ function registerTFGBiochemRecipes(event) { ]; lab_casting.forEach(entry => { - event.recipes.gtceu.fluid_solidifier(`tfg:lab_casting/${entry.output.replace(':', '_')}`) + event.recipes.gtceu.fluid_solidifier(`tfg:lab_casting/${linuxUnfucker(entry.output)}`) .inputFluids(Fluid.of('gtceu:borosilicate_glass', entry.fluid_qty)) .notConsumable(entry.mold) .itemOutputs(entry.output) @@ -429,7 +429,7 @@ function registerTFGBiochemRecipes(event) { * @param {number} organicAmount - Amount of the organic input. */ function deccellularizationRecipe(event, organicType, organicId, organicAmount) { - let recipe = event.recipes.gtceu.bioreactor(`tfg:decellularization/${organicId.replace(':', '_')}`) + let recipe = event.recipes.gtceu.bioreactor(`tfg:decellularization/${linuxUnfucker(organicId)}`) .inputFluids( Fluid.of('tfg:sodium_dodecyl_sulfate', 200), Fluid.of('gtceu:acetone', 1000), @@ -530,7 +530,7 @@ function registerTFGBiochemRecipes(event) { 'gtceu:acetone' ]; gramStainSolvents.forEach(solvent => { - event.recipes.gtceu.large_chemical_reactor(`tfg:gram_stain_solvent_${solvent.replace(':', '_')}`) + event.recipes.gtceu.large_chemical_reactor(`tfg:gram_stain_solvent_${linuxUnfucker(solvent)}`) .inputFluids( Fluid.of('tfg:crystal_violet', 1000), Fluid.of('tfc:red_dye', 1000), diff --git a/kubejs/server_scripts/vintage_improvements/recipes.js b/kubejs/server_scripts/vintage_improvements/recipes.js index 2e1cb0d85..3ec5b8a8f 100644 --- a/kubejs/server_scripts/vintage_improvements/recipes.js +++ b/kubejs/server_scripts/vintage_improvements/recipes.js @@ -643,5 +643,5 @@ function generateHammeringRecipeFromItem(event, input, output, blows, anvil) { event.recipes.vintageimprovements.hammering(output, input) .anvilBlock(`tfc:metal/anvil/${anvil}`) .hammerBlows(Math.max(blows, 1)) - .id(`tfg:vi/hammer/${input.replace(/[#:]/g, '_')}_on_${anvil}_anvil`) + .id(`tfg:vi/hammer/${linuxUnfucker(input)}_on_${anvil}_anvil`) }