diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index 425ba06f9..99169a273 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -1401,7 +1401,7 @@ subtitle: "{quests.low_voltage.lv_greenhouse.subtitle}" tasks: [{ id: "3EB01235ED295080" - item: "gtceu:greenhouse" + item: "tfg:electric_greenhouse" type: "item" }] title: "{quests.low_voltage.lv_greenhouse.title}" diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png new file mode 100644 index 000000000..de1abfe72 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png new file mode 100644 index 000000000..5b9e6ea67 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png new file mode 100644 index 000000000..4da155317 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png new file mode 100644 index 000000000..c20a1c981 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta new file mode 100644 index 000000000..dfae8cae1 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png new file mode 100644 index 000000000..21458b6d2 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png new file mode 100644 index 000000000..db6c56605 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png new file mode 100644 index 000000000..97ab6af81 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png new file mode 100644 index 000000000..c20a1c981 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png new file mode 100644 index 000000000..678e1b9bb Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png new file mode 100644 index 000000000..f2b3c4212 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta new file mode 100644 index 000000000..f3da053bc --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 2 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png new file mode 100644 index 000000000..92bda3a2b Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png new file mode 100644 index 000000000..9b68d6c3e Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta new file mode 100644 index 000000000..f3da053bc --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 2 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png new file mode 100644 index 000000000..3c21545d1 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png new file mode 100644 index 000000000..bcfd65feb Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png new file mode 100644 index 000000000..8e993ab98 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif new file mode 100644 index 000000000..383a1c800 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif new file mode 100644 index 000000000..d766d3c18 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png new file mode 100644 index 000000000..01360c35a Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png new file mode 100644 index 000000000..e10b0db21 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png new file mode 100644 index 000000000..1161e23a9 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png new file mode 100644 index 000000000..6dfbd1acc Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png differ diff --git a/kubejs/client_scripts/tooltips.js b/kubejs/client_scripts/tooltips.js index 9cbfe6003..213334b1a 100644 --- a/kubejs/client_scripts/tooltips.js +++ b/kubejs/client_scripts/tooltips.js @@ -27,10 +27,9 @@ const registerTooltips = (event) => event.addAdvanced(['create:blaze_burner'], (item, advanced, text) => { text.add(1, text.of('§cSuperheat§r with Coke, Anthracite, or Flawless and Exquisite coal gems.')) }) - event.addAdvanced(['gtceu:greenhouse'], (item, advanced, text) => { + event.addAdvanced(['tfg:electric_greenhouse'], (item, advanced, text) => { text.add(1, text.of('This machine has a §2Perfect Overclock§r!')), - text.add(2, text.of('Currently, due to a bug, sometimes outputs rotten food.')) - text.add(3, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) + text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) }) event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => { text.add(1, text.of('Artificial enviroment to simulate the Nether.')), diff --git a/kubejs/server_scripts/firmalife/recipes.js b/kubejs/server_scripts/firmalife/recipes.js index 38e8f5165..a9adeb1a3 100644 --- a/kubejs/server_scripts/firmalife/recipes.js +++ b/kubejs/server_scripts/firmalife/recipes.js @@ -446,276 +446,6 @@ const registerFirmaLifeRecipes = (event) => { //#endregion - //#region Рецепты муки - - global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .duration(200) - .EUt(2) - }) - - //#endregion - - //#region Рецепты теста - - global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.mixer(element.name) - .itemInputs(element.input, '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yeast_starter', 100)) - .itemOutputs(element.output) - .duration(300) - .EUt(16) - .circuit(2) - }) - - //#endregion - - //#region Рецепты плоского хлеба - - global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#endregion - - //#region Смешивание в миске - - // Тесто для пиццы - event.recipes.gtceu.mixer('firmalife:food/pizza_dough_olive_oil') - .itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt') - .inputFluids(Fluid.of('tfc:olive_oil', 1000)) - .itemOutputs('4x firmalife:food/pizza_dough') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/pizza_dough_soybean_oil') - .itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt') - .inputFluids(Fluid.of('firmalife:soybean_oil', 1000)) - .itemOutputs('4x firmalife:food/pizza_dough') - .duration(300) - .EUt(16) - - // Vanilla Ice Cream - event.recipes.gtceu.mixer('firmalife:food/vanilla_ice_cream') - .itemInputs('firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla') - .inputFluids(Fluid.of('firmalife:cream', 1000)) - .itemOutputs('2x firmalife:food/vanilla_ice_cream') - .duration(300) - .EUt(16) - - // Pumpkin Pie Dough - event.recipes.gtceu.mixer('firmalife:food/pumpkin_pie_dough') - .itemInputs('#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('firmalife:food/pumpkin_pie_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Butter - event.recipes.gtceu.mixer('firmalife:food/butter') - .itemInputs('tfc:powder/salt') - .inputFluids(Fluid.of('firmalife:cream', 1000)) - .itemOutputs('firmalife:food/butter') - .duration(300) - .EUt(16) - - // Pie Dough - event.recipes.gtceu.mixer('firmalife:food/pie_dough') - .itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('firmalife:food/pie_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Cookie Dough - event.recipes.gtceu.mixer('firmalife:food/cookie_dough') - .itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour', '#forge:eggs', 'firmalife:spice/vanilla') - .itemOutputs('4x firmalife:food/cookie_dough') - .duration(300) - .EUt(16) - - // Hardtack Dough - event.recipes.gtceu.mixer('firmalife:food/hardtack_dough') - .itemInputs('tfc:powder/salt', '#tfc:foods/flour') - .inputFluids(Fluid.of('minecraft:water', 1000)) - .itemOutputs('4x firmalife:food/hardtack_dough') - .duration(300) - .EUt(16) - .circuit(2) - - // Yeast starter - event.recipes.gtceu.mixer('firmalife:yeast_starter') - .inputFluids(Fluid.of('firmalife:yeast_starter', 100)) - .itemInputs('#tfc:foods/flour') - .outputFluids(Fluid.of('firmalife:yeast_starter', 600)) - .duration(1200) - .EUt(8) - .circuit(1) - - // Cocoa Powder - event.recipes.gtceu.macerator('firmalife:food/cocoa_powder') - .itemInputs('gtceu:cocoa_dust') - .itemOutputs('4x firmalife:food/cocoa_powder') - .duration(100) - .EUt(2) - - event.recipes.tfc.quern('4x firmalife:food/cocoa_powder', 'gtceu:cocoa_dust') - .id(`tfg:quern/cocoa_powder`) - - event.recipes.tfc.quern('gtceu:cocoa_dust', 'firmalife:food/roasted_cocoa_beans') - .id('tfg:quern/cocoa_dust'); - - // Chocolate Ice Cream - event.recipes.gtceu.mixer('firmalife:food/chocolate_ice_cream') - .itemInputs('firmalife:food/vanilla_ice_cream') - .inputFluids(Fluid.of('firmalife:chocolate', 1000)) - .itemOutputs('firmalife:food/chocolate_ice_cream') - .duration(300) - .EUt(16) - - // White Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/yak_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/goat_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/coconut_milk') - .itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/white_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/white_chocolate', 'firmalife:food/white_chocolate_blend') - - // Dark Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/yak_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/goat_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - - event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/coconut_milk') - .itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/dark_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/dark_chocolate', 'firmalife:food/dark_chocolate_blend') - - // Milk Chocolate Blend - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('minecraft:milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/yak_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/goat_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/coconut_milk') - .itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener') - .inputFluids(Fluid.of('firmalife:coconut_milk', 1000)) - .itemOutputs('2x firmalife:food/milk_chocolate_blend') - .duration(300) - .EUt(16) - - event.smelting('firmalife:food/milk_chocolate', 'firmalife:food/milk_chocolate_blend') - - // Strawberry Ice Cream - event.recipes.gtceu.mixer('firmalife:food/strawberry_ice_cream') - .itemInputs('firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry') - .itemOutputs('firmalife:food/strawberry_ice_cream') - .duration(300) - .EUt(16) - - // Hardtack Dough - event.recipes.gtceu.mixer('firmalife:food/chocolate_chip_cookie_dough') - .itemInputs('4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends') - .itemOutputs('4x firmalife:food/chocolate_chip_cookie_dough') - .duration(300) - .EUt(16) - - //#endregion - - //#region Обжарка некоторой еды - - // Cooked Pizza - event.smelting('firmalife:food/cooked_pizza', 'firmalife:food/raw_pizza') - - // Taco Shell - event.smelting('firmalife:food/taco_shell', 'firmalife:food/corn_tortilla') - - // Sugar Cookie - event.smelting('firmalife:food/sugar_cookie', 'firmalife:food/cookie_dough') - - // Chocolate Chip Cookie - event.smelting('firmalife:food/chocolate_chip_cookie', 'firmalife:food/chocolate_chip_cookie_dough') - - // Hardtack - event.smelting('firmalife:food/hardtack', 'firmalife:food/hardtack_dough') - - // Cooked Pie - event.smelting('firmalife:food/cooked_pie', 'firmalife:food/filled_pie') - - // Roasted Cocoa Beans - event.smelting('firmalife:food/roasted_cocoa_beans', 'firmalife:food/cocoa_beans') - - // Pumpkin Pie - event.smelting('minecraft:pumpkin_pie', 'firmalife:food/raw_pumpkin_pie') - - //#endregion - //#region Sticky Resin by Vat event.recipes.firmalife.vat() @@ -751,28 +481,6 @@ const registerFirmaLifeRecipes = (event) => { // #endregion - // #region Smashed food - - event.recipes.gtceu.forge_hammer('firmalife:soybean_paste') - .itemInputs('firmalife:food/dehydrated_soybeans') - .itemOutputs('firmalife:food/soybean_paste') - .duration(20) - .EUt(7) - - event.recipes.gtceu.forge_hammer('firmalife:red_grapes') - .itemInputs('firmalife:food/red_grapes') - .itemOutputs('firmalife:food/smashed_red_grapes') - .duration(20) - .EUt(7) - - event.recipes.gtceu.forge_hammer('firmalife:white_grapes') - .itemInputs('firmalife:food/white_grapes') - .itemOutputs('firmalife:food/smashed_white_grapes') - .duration(20) - .EUt(7) - - // #endregion - // #region Drying mat alternatives event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp') @@ -787,13 +495,4 @@ const registerFirmaLifeRecipes = (event) => { .circuit(5) .EUt(GTValues.VA[GTValues.ULV]) .duration(200) - - event.smelting('firmalife:food/dehydrated_soybeans', 'tfc:food/soybean') - - event.recipes.gtceu.fermenter('soybean_oil') - .itemInputs('firmalife:food/soybean_paste') - .inputFluids(Fluid.of('minecraft:water', 100)) - .outputFluids(Fluid.of('firmalife:soybean_oil', 250)) - .EUt(GTValues.VA[GTValues.ULV]) - .duration(600) } diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 83c352ad9..7e90107f4 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -744,18 +744,6 @@ function registerGTCEuMachineRecipes(event) { // #endregion - // Контроллер теплицы - event.shaped('gtceu:greenhouse', [ - 'ABA', - 'CDC', - 'BCB' - ], { - A: '#gtceu:circuits/mv', - B: 'gtceu:copper_single_cable', - C: 'tfc:compost', - D: 'gtceu:solid_machine_casing' - }).id('tfg:shaped/greenhouse') - // Drums const DRUMS_AND_CRATES = [ 'bismuth_bronze', diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index d23cb4aad..064774d05 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -34,44 +34,6 @@ const registerTFCRecipes = (event) => { //#endregion - //#region Рецепты зерен - - global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS.forEach(element => { - - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .chancedOutput('tfc:straw', 7000, 500) - .duration(200) - .EUt(2) - - event.recipes.tfc.quern(element.output, element.input) - .id(`tfg:quern/${element.name}`) - }) - - //#endregion - - //#region Рецепты муки - - global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.macerator(`tfg:${element.name}`) - .itemInputs(element.input) - .itemOutputs(element.output) - .duration(200) - .EUt(2) - }) - - //#endregion - - //#region Рецепты обжарки мяса - - global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#endregion - //#region Рецепты обжарки форм global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { @@ -126,15 +88,6 @@ const registerTFCRecipes = (event) => { //#endregion - //#region Рецепты хлеба - - global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - //#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') diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js index ac2370124..44df72c83 100644 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ b/kubejs/server_scripts/tfc/recipes.machines.js @@ -117,20 +117,6 @@ function registerTFCMachineRecipes(event) { .duration(3200) .EUt(16) - //#region Рецепты плоского теста - - global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.mixer(element.name) - .itemInputs(element.input) - .inputFluids(Fluid.of('minecraft:water', 100)) - .itemOutputs(element.output) - .duration(300) - .EUt(16) - .circuit(3) - }) - - //#endregion - //#region Молды в ассемблере for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { @@ -174,158 +160,9 @@ function registerTFCMachineRecipes(event) { .duration(2400) .EUt(16) - // Curdled milk - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk') - .inputFluids(Fluid.of('minecraft:milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('tfc:curdled_milk', 2000)) - .duration(2400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk') - .inputFluids(Fluid.of('firmalife:yak_milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('firmalife:curdled_yak_milk', 2000)) - .duration(2400) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk') - .inputFluids(Fluid.of('firmalife:goat_milk', 2000)) - .itemInputs('firmalife:rennet') - .outputFluids(Fluid.of('firmalife:curdled_goat_milk', 2000)) - .duration(2400) - .EUt(16) - - //Curds - event.recipes.gtceu.fermenter('tfg:fermenter/milk_curd') - .inputFluids(Fluid.of('tfc:curdled_milk', 1000)) - .itemOutputs('firmalife:food/milk_curd') - .duration(1200) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/yak_curd') - .inputFluids(Fluid.of('firmalife:curdled_yak_milk', 1000)) - .itemOutputs('firmalife:food/yak_curd') - .duration(1200) - .EUt(16) - - event.recipes.gtceu.fermenter('tfg:fermenter/goat_curd') - .inputFluids(Fluid.of('firmalife:curdled_goat_milk', 1000)) - .itemOutputs('firmalife:food/goat_curd') - .duration(1200) - .EUt(16) - - // Cheese wheels - event.recipes.gtceu.fermenter('tfg:fermenter/gouda_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/milk_curd') - .itemOutputs('firmalife:gouda_wheel') - .duration(12000) - .EUt(24) - - event.recipes.gtceu.fermenter('tfg:fermenter/shosha_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/yak_curd') - .itemOutputs('firmalife:shosha_wheel') - .duration(12000) - .EUt(24) - - event.recipes.gtceu.fermenter('tfg:fermenter/feta_wheel') - .inputFluids(Fluid.of('tfc:salt_water', 750)) - .itemInputs('3x firmalife:food/goat_curd') - .itemOutputs('firmalife:feta_wheel') - .duration(12000) - .EUt(24) - - // Cutting - event.recipes.gtceu.cutter('tfg:cutter/gouda') - .itemInputs('firmalife:gouda_wheel') - .itemOutputs('4x firmalife:food/gouda') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/shosha') - .itemInputs('firmalife:shosha_wheel') - .itemOutputs('4x firmalife:food/shosha') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/feta') - .itemInputs('firmalife:feta_wheel') - .itemOutputs('4x firmalife:food/feta') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/cheddar') - .itemInputs('firmalife:cheddar_wheel') - .itemOutputs('4x firmalife:food/cheddar') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/chevre') - .itemInputs('firmalife:chevre_wheel') - .itemOutputs('4x firmalife:food/chevre') - .duration(40) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:cutter/rajya_metok') - .itemInputs('firmalife:rajya_metok_wheel') - .itemOutputs('4x firmalife:food/rajya_metok') - .duration(40) - .EUt(7) - - // Misc - global.TFC_MILKS.forEach(milk => { - event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milk.id.replace(':', '_')}`) - .inputFluids(Fluid.of(milk.id, 1000)) - .outputFluids(Fluid.of('firmalife:cream')) - .circuit(6) - .duration(1200) - .EUt(24) - }) - - event.recipes.gtceu.mixer('tfg:mixer/tomato_sauce') - .itemInputs('firmalife:food/tomato_sauce_mix') - .inputFluids(Fluid.of('minecraft:water', 200)) - .itemOutputs('firmalife:food/tomato_sauce') - .duration(200) - .EUt(24) - //#endregion - //#region Оливки - - event.recipes.gtceu.macerator(`tfg:tfc/olive_paste`) - .itemInputs('tfc:food/olive') - .itemOutputs('2x tfc:olive_paste') - .duration(60) - .EUt(2) - - event.recipes.gtceu.mixer('tfg:tfc/olive_oil_water') - .inputFluids(Fluid.of('water', 200)) - .itemInputs('1x tfc:olive_paste') - .outputFluids(Fluid.of('tfc:olive_oil_water', 200)) - .duration(200) - .EUt(28) - - event.recipes.gtceu.distillery('tfg:tfc/olive_oil') - .inputFluids(Fluid.of('tfc:olive_oil_water', 250)) - .outputFluids(Fluid.of('tfc:olive_oil', 50)) - .duration(600) - .EUt(28) - - //#endregion - - // Vinegar and Brine - - global.TFC_ALCOHOL.forEach(alcohol => { - event.recipes.gtceu.fermenter(`tfg:tfc/vinegar/${alcohol.id.replace(':', '_')}`) - .itemInputs('#tfc:foods/fruits') - .inputFluids(Fluid.of(alcohol.id, 250)) - .outputFluids(Fluid.of('tfc:vinegar', 250)) - .duration(600) - .EUt(28) - }) + // Brine event.recipes.gtceu.mixer('tfg:tfc/brine') .inputFluids(Fluid.of('tfc:salt_water', 900)) diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/recipes.food.js new file mode 100644 index 000000000..0a8fa9c76 --- /dev/null +++ b/kubejs/server_scripts/tfg/recipes.food.js @@ -0,0 +1,620 @@ +// priority: 0 +/** + * @param {Internal.RecipesEventJS} event + */ +function registerTFGFoodRecipes(event) { + + const $ISPRecipeLogic = Java.loadClass("su.terrafirmagreg.core.common.data.machines.ISPOutputRecipeLogic") + const $SizedIngredient = Java.loadClass("com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient") + const Sized = (ing, amount) => $SizedIngredient.create(ing, amount) + + /** + * @typedef {Object} FoodRecipeData + * @property {number?} circuit + * @property {Internal.GTRecipeComponents$FluidIngredientJS_[]?} fluidInputs + * @property {Internal.FluidStackJS[]?} fluidOutputs + * @property {(string | [string, Internal.Ingredient])[]?} itemInputs + * @property {string[]?} itemOutputs Ingredient outputs - first output is replaced with ISP output if defined + * @property {Internal.ItemStackProviderJS?} itemOutputProvider ItemStackProvider which provides the recipe output. + * + * **NOTE:** TFC Ingredients do not support item counts higher than 1. Do `Sized(TFCIngredient('item:item'), count)` instead of `TFCIngredient('[count]x item:item')` + */ + + //#region Helper funcs + + /** + * @param {"food_oven"|"food_processor"} type + * @param {string} id + * @param {string} duration + * @param {string} EUt + * @param {FoodRecipeData} data + */ + function registerFoodRecipe(type, id, duration, EUt, data) { + if (data.itemInputs === undefined) data.itemInputs = [] + if (data.itemOutputs === undefined) data.itemOutputs = [] + if (data.fluidInputs === undefined) data.fluidInputs = [] + if (data.fluidOutputs === undefined) data.fluidOutputs = [] + let gregInputs = [], inputs= [] + let outputFirstIndex = (data.itemOutputProvider === undefined) ? 0 : 1 + data.itemInputs.forEach(item => { + if (typeof item === "string") { + gregInputs.push(item) + + const match = item.match(/^(\d+)\s*x\s*/i); + let count = 1 + if (match) { + count = parseInt(match[1]); + item = item.slice(match[0].length); + } + inputs.push($SizedIngredient.create(item, count)) + } else { + gregInputs.push(item[0]) + inputs.push(item[1]) + } + }) + + $ISPRecipeLogic.RegisterRecipeData(type + "/" + id, inputs, (data.itemOutputProvider === undefined) ? null : data.itemOutputProvider.asCanonClass(), data.itemOutputs.slice(outputFirstIndex).map(i => Item.of(i))) + + let r = event.recipes.gtceu[type](id) + .duration(duration) + .EUt(EUt) + + if (data.circuit) r.circuit(data.circuit) + if (data.itemOutputs.length > 0) r.itemOutputs(data.itemOutputs) + if (data.itemInputs.length > 0) r.itemInputs(data.itemInputs) + if (data.fluidInputs.length > 0) r.inputFluids(data.fluidInputs); + if (data.fluidOutputs.length > 0) r.outputFluids(data.fluidOutputs); + } + + /** + * @param {string} id + * @param {number} duration + * @param {EUt} EUt + * @param {FoodRecipeData} data + */ + const processorRecipe = (id, duration, EUt, data) => registerFoodRecipe("food_processor", id, duration, EUt, data) + + /** + * @param {string} id + * @param {string} input + * @param {string} out + * @param {Internal.FluidIngredient?} fluid + * @param {boolean?} isFirmaDynamic + */ + function cookingRecipe(id, input, out, fluid, isFirmaDynamic) { + registerFoodRecipe("food_oven", id, 300, 32, { + itemInputs: [input], + itemOutputs: [out], + fluidInputs: (fluid === undefined) ? [] : [fluid], + itemInputs: [input], + itemOutputProvider: (isFirmaDynamic) ? TFC.isp.of(out).firmaLifeCopyDynamicFood() : TFC.isp.of(out).copyFood().addTrait("firmalife:oven_baked") + }) + } + + //#endregion + + //#region ================= Meat cooking ================= + + global.TFC_MEAT_RECIPE_COMPONENTS.forEach(item => { + cookingRecipe(item.name, item.input, item.output) + }) + + //#endregion + //#region ================= TFC Grains ================= + + global.TFC_GRAINS.forEach(grain => { + + // Raw crop to grain + processorRecipe(`${grain}_grain`, 100, 8, { + itemInputs: [`tfc:food/${grain}`], + itemOutputs: [`tfc:food/${grain}_grain`], + itemOutputProvider: TFC.isp.of(`tfc:food/${grain}_grain`).copyOldestFood() + }) + + // Grain to flour + processorRecipe(`${grain}_flour`, 100, 8, { + itemInputs: [`tfc:food/${grain}_grain`], + itemOutputs: [`2x tfc:food/${grain}_flour`], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_flour`).copyOldestFood() + }) + + // Flatbread dough + processorRecipe(`${grain}_flatbread_dough`, 300, 8, { + itemInputs: [`tfc:food/${grain}_flour`], + itemOutputs: [`2x tfc:food/${grain}_dough`], + fluidInputs: [Fluid.of('minecraft:water', 100)], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_dough`).copyFood() + }) + + // Firmalife dough + processorRecipe(`${grain}_dough`, 300, 16, { + itemInputs: [`tfc:food/${grain}_flour`, `#tfc:sweetener`], + itemOutputs: [`4x firmalife:food/${grain}_dough`], + fluidInputs: [Fluid.of('firmalife:yeast_starter', 200)], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${grain}_dough`).copyFood() + }) + + // Bread baking + cookingRecipe(`${grain}_flatbread`, `tfc:food/${grain}_dough`, `firmalife:food/${grain}_flatbread`) + cookingRecipe(`${grain}_bread`, `firmalife:food/${grain}_dough`, `tfc:food/${grain}_bread`) + + processorRecipe(`${grain}_bread_slice`, 10, 8, { + circuit: 1, + itemInputs: [`tfc:food/${grain}_bread`], + itemOutputs: [`2x firmalife:food/${grain}_slice`], + itemOutputProvider: TFC.isp.of(`2x firmalife:food/${grain}_slice`).copyOldestFood() + }) + + //Sandwich making + + let breadTypes = [["bread", `tfc:food/${grain}_bread`], ["flatbread", `firmalife:food/${grain}_flatbread`], ["slice", `firmalife:food/${grain}_slice`]] + breadTypes.forEach((type) => { + processorRecipe(`${grain}_${type[0]}_sandwich`, 100, 16, { + circuit: 3, + itemInputs: [`2x ${type[1]}`, "3x #tfc:foods/usable_in_sandwich"], + itemOutputs: [`2x tfc:food/${grain}_bread_sandwich`], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_sandwich`).meal( + (food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [ + (portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5), + (portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8), + ]) + }) + + //Note: Jam needs to be first in the recipe code or else it will consider it as the usable_in_jam_sandwhich ingredients. + processorRecipe(`${grain}_${type[0]}_jam_sandwich`, 100, 16, { + circuit: 4, + itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich'], + itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, 'tfc:empty_jar'], + itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal( + (food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [ + (portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5), + (portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8), + ]), + }) + }) + + + }) + + //#endregion + + //#region ================= Firmalife ================= + + global.FIRMALIFE_COOKING_RECIPE_COMPONENTS.forEach(item => { + cookingRecipe(item.name, item.input, item.output, undefined, true) + }) + + //#endregion + //#region ================= Dairy ================= + + global.TFC_CURDS_AND_CHEESES.forEach(item => { + + processorRecipe(`${item.curd}_curd`, 1200, 16, { + itemOutputs: [item.curd], + fluidInputs: [Fluid.of(item.input_fluid, 1000)], + itemOutputProvider: TFC.isp.of(item.curd).resetFood() + }) + + processorRecipe(`${item.cheese1}_cheese_wheel_1`, 8000, 16, { + itemInputs: [`3x ${item.curd}`], + itemOutputs: [`firmalife:${item.cheese1}_wheel`], + fluidInputs: [Fluid.of('tfc:salt_water', 750)], + itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese1}_wheel`).copyOldestFood() + }) + + processorRecipe(`${item.cheese2}_cheese_wheel_2`, 1000, 16, { + circuit: 2, + itemInputs: [`3x ${item.curd}`, `6x tfc:powder/salt`], + itemOutputs: [`firmalife:${item.cheese2}_wheel`], + itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese2}_wheel`).copyOldestFood() + }) + + processorRecipe(`${item.cheese1}_cheese_cutting_1`, 100, 8, { + itemInputs: [`firmalife:${item.cheese1}_wheel`], + itemOutputs: [`4x firmalife:food/${item.cheese1}`], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese1}`).copyOldestFood() + }) + + processorRecipe(`${item.cheese2}_cheese_cutting_2`, 100, 8, { + itemInputs: [`firmalife:${item.cheese2}_wheel`], + itemOutputs: [`4x firmalife:food/${item.cheese2}`], + itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese2}`).copyOldestFood() + }) + + }) + + global.TFC_MILKS.forEach(milk => { + const milkID = milk.id.split(':')[1]; + + processorRecipe(`white_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 3, + itemInputs: ['2x firmalife:food/cocoa_butter', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/white_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/white_chocolate_blend').resetFood(), + }) + + processorRecipe(`dark_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 2, + itemInputs: ['2x firmalife:food/cocoa_powder', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/dark_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/dark_chocolate_blend').resetFood(), + }) + + processorRecipe(`milk_chocolate_blend_from_${milkID}`, 300, 16, { + circuit: 1, + itemInputs: ['firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener'], + itemOutputs: ['2x firmalife:food/milk_chocolate_blend'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of('2x firmalife:food/milk_chocolate_blend').resetFood(), + }) + + processorRecipe(`egg_noodles_from_${milkID}`, 50, 8, { + circuit: 6, + itemInputs: ["#tfc:foods/flour", 'tfc:powder/salt', '#forge:eggs'], + itemOutputs: ['firmalife:food/raw_egg_noodles'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_egg_noodles").copyOldestFood(), + }) + + processorRecipe(`rice_noodles_from_${milkID}`, 50, 8, { + itemInputs: ["tfc:food/rice_flour", 'tfc:food/maize_flour', 'tfc:powder/salt'], + fluidInputs: [Fluid.of(milk.id, 1000)], + itemOutputs: ['2x firmalife:food/raw_rice_noodles'], + itemOutputProvider: TFC.isp.of('2x firmalife:food/raw_rice_noodles').copyOldestFood() + }) + + // No ISP needed here + event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milkID}`) + .inputFluids(Fluid.of(milk.id, 1000)) + .outputFluids(Fluid.of('firmalife:cream')) + .circuit(6) + .duration(1200) + .EUt(24) + }) + + //#endregion + + //#region ================= Food preservation ================= + + const smoking_meats = Ingredient.of('#tfc:foods/raw_meats').itemIds; + const brining_veg = Ingredient.of('#firmalife:foods/pizza_ingredients').itemIds; + + const brining_ingredients = smoking_meats.concat(brining_veg); + + brining_ingredients.forEach(item => { + processorRecipe(`${item}/brining`, 200, 16, { + circuit: 5, + itemInputs: [item], + itemOutputs: [item], + fluidInputs: [Fluid.of("tfc:brine", 100)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait('tfc:brined') + }) + }) + + smoking_meats.forEach(item => { + processorRecipe(`${item}/smoking`, 200, 16, { + circuit: 6, + itemInputs: [[item, TFC.ingredient.lacksTrait(item, "firmalife:smoked")]], + itemOutputs: [item], + fluidInputs: [Fluid.of('gtceu:wood_gas', 50)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait("firmalife:smoked") + }) + }) + + //#endregion + + //#region ================= Misc ================= + + global.TFC_JAMS.forEach(name => { + processorRecipe(`${name}_jam`, 200, 8, { + circuit: 15, + itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "#tfc:empty_jar_with_lid"], + itemOutputs: [`4x tfc:jar/${name}`], + fluidInputs: [Fluid.of("minecraft:water", 100)], + itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}`).copyFood() + }) + + processorRecipe(`${name}_jam_no_seal`, 200, 8, { + circuit: 16, + itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "tfc:empty_jar"], + itemOutputs: [`4x tfc:jar/${name}_unsealed`], + fluidInputs: [Fluid.of("minecraft:water", 100)], + itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}_unsealed`).copyFood() + }) + }) + + cookingRecipe("pasta", "firmalife:food/raw_egg_noodles", "firmalife:food/cooked_pasta", Fluid.of("minecraft:water", 100)) + cookingRecipe("corn_tortilla", "firmalife:food/masa", "firmalife:food/corn_tortilla") + cookingRecipe("boiled_egg", "#firmalife:foods/raw_eggs", "tfc:food/boiled_egg", Fluid.of("minecraft:water", 200)) + cookingRecipe("cooked_rice", "tfc:food/rice_grain", "tfc:food/cooked_rice", Fluid.of("minecraft:water", 200)) + + processorRecipe("pasta_tomato_sauce", 60, 8, { + itemInputs: ["firmalife:food/cooked_pasta", "firmalife:food/tomato_sauce"], + itemOutputs: ["firmalife:food/pasta_with_tomato_sauce"], + itemOutputProvider: TFC.isp.of('firmalife:food/pasta_with_tomato_sauce').copyFood() + }) + + processorRecipe('firmalife_masa', 300, 2, { + itemInputs: ["firmalife:food/masa_flour"], + itemOutputs: ["2x firmalife:food/masa"], + fluidInputs: [Fluid.of('minecraft:water', 100)], + itemOutputProvider: TFC.isp.of("2x firmalife:food/masa").copyFood() + }) + + processorRecipe("tortilla_chips", 40, 16, { + itemInputs: ["firmalife:food/taco_shell", "tfc:powder/salt"], + itemOutputs: ["firmalife:food/tortilla_chips"], + itemOutputProvider: TFC.isp.of("firmalife:food/tortilla_chips").copyFood() + }) + + processorRecipe("tomato_sauce_mix", 600, 8, { + itemInputs: ['tfc:food/tomato', 'tfc:powder/salt', 'tfc:food/garlic'], + itemOutputs: ['5x firmalife:food/tomato_sauce_mix'], + itemOutputProvider: TFC.isp.of('5x firmalife:food/tomato_sauce_mix').copyOldestFood(), + }) + + processorRecipe("tomato_sauce_from_mix", 200, 8, { + itemInputs: ['firmalife:food/tomato_sauce_mix'], + itemOutputs: ['firmalife:food/tomato_sauce'], + fluidInputs: [Fluid.of('minecraft:water', 200)], + itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(), + }) + + processorRecipe("olive_paste", 60, 8, { + itemInputs: ['tfc:food/olive'], + itemOutputs: ['2x tfc:olive_paste'], + itemOutputProvider: TFC.isp.of('2x tfc:olive_paste'), + }) + + processorRecipe("soybean_paste", 60, 8, { + itemInputs: ['firmalife:food/dehydrated_soybeans'], + itemOutputs: ['firmalife:food/soybean_paste'], + itemOutputProvider: TFC.isp.of('firmalife:food/soybean_paste').copyOldestFood(), + }) + + // Vinegar + global.TFC_ALCOHOL.forEach(alcohol => { + let name = `vinegar_${alcohol.id.replace(':', '_')}`; + + processorRecipe(name, 600, 32, { + circuit: 5, + itemInputs: ['#tfc:foods/fruits'], + fluidInputs: [Fluid.of(alcohol.id, 250)], + fluidOutputs: [Fluid.of('tfc:vinegar', 250)], + }) + + }) + + processorRecipe("pizza_no_extra", 600, 16, { + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_1_extra", 600, 16, { + circuit: 1, + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "#firmalife:foods/pizza_ingredients"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_2_extra", 600, 16, { + circuit: 2, + itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "2x #firmalife:foods/pizza_ingredients"], + itemOutputs: ["firmalife:food/raw_pizza"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal( + (food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5), + [(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)] + ) + }) + + processorRecipe("pizza_dough_olive_oil", 300, 16, { + itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'], + itemOutputs: ['4x firmalife:food/pizza_dough'], + fluidInputs: [Fluid.of('tfc:olive_oil', 1000)], + itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood() + }) + + processorRecipe("pizza_dough_soybean_oil", 300, 16, { + itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'], + itemOutputs: ['4x firmalife:food/pizza_dough'], + fluidInputs: [Fluid.of('firmalife:soybean_oil', 1000)], + itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood() + }) + + processorRecipe("vanilla_ice_cream", 300, 16, { + itemInputs: ['firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla'], + itemOutputs: ['2x firmalife:food/vanilla_ice_cream'], + fluidInputs: [Fluid.of('firmalife:cream', 1000)], + itemOutputProvider: TFC.isp.of("2x firmalife:food/vanilla_ice_cream").resetFood() + }) + + processorRecipe("chocolate_ice_cream", 300, 16, { + itemInputs: ['firmalife:food/vanilla_ice_cream'], + itemOutputs: ['firmalife:food/chocolate_ice_cream'], + fluidInputs: [Fluid.of('firmalife:chocolate', 1000)], + itemOutputProvider: TFC.isp.of("firmalife:food/chocolate_ice_cream").resetFood() + }) + + processorRecipe("strawberry_ice_cream", 300, 16, { + itemInputs: ['firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry'], + itemOutputs: ['firmalife:food/strawberry_ice_cream'], + itemOutputProvider: TFC.isp.of("firmalife:food/strawberry_ice_cream").resetFood() + }) + + processorRecipe("cookie_dough_ice_cream", 300, 16, { + itemInputs: [`firmalife:food/vanilla_ice_cream`, `firmalife:food/chocolate_chip_cookie_dough`], + itemOutputs: [`firmalife:food/cookie_dough_ice_cream`], + itemOutputProvider: TFC.isp.of("firmalife:food/cookie_dough_ice_cream").resetFood() + }) + + processorRecipe("butter", 300, 16, { + itemInputs: ["tfc:powder/salt"], + itemOutputs: ["firmalife:food/butter"], + fluidInputs: [Fluid.of('firmalife:cream', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/butter').resetFood() + }) + + processorRecipe("pie_dough", 300, 16, { + circuit: 2, + itemInputs: ['#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour'], + itemOutputs: ['firmalife:food/pie_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/pie_dough').copyOldestFood() + }) + + processorRecipe("pumpkin_pie_dough", 300, 16, { + circuit: 2, + itemInputs: ['#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour'], + itemOutputs: ['firmalife:food/pumpkin_pie_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('firmalife:food/pumpkin_pie_dough').copyOldestFood() + }) + + processorRecipe("raw_pumpkin_pie", 20, 8, { + itemInputs: ["firmalife:food/pumpkin_pie_dough", "firmalife:pie_pan"], + itemOutputs: ["firmalife:raw_pumpkin_pie"], + itemOutputProvider: TFC.isp.of("firmalife:food/raw_pumpkin_pie").copyFood() + }) + + processorRecipe("cookie_dough", 300, 16, { + itemInputs: ['#tfc:sweetener', '#forge:eggs', 'firmalife:food/butter', '#tfc:foods/flour', "firmalife:spice/vanilla"], + itemOutputs: ['4x firmalife:food/cookie_dough'], + itemOutputProvider: TFC.isp.of('4x firmalife:food/cookie_dough').copyOldestFood() + }) + + processorRecipe("chocolate_chip_cookie_dough", 300, 16, { + itemInputs: ['4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends'], + itemOutputs: ['4x firmalife:food/chocolate_chip_cookie_dough'], + itemOutputProvider: TFC.isp.of('4x firmalife:food/chocolate_chip_cookie_dough').copyOldestFood() + }) + + processorRecipe("hardtack_dough", 300, 16, { + itemInputs: ['tfc:powder/salt', '#tfc:foods/flour'], + itemOutputs: ['4x firmalife:food/hardtack_dough'], + fluidInputs: [Fluid.of('minecraft:water', 1000)], + itemOutputProvider: TFC.isp.of('4x firmalife:food/hardtack_dough').copyOldestFood() + }) + + processorRecipe("yeast_starter", 1200, 8, { + circuit: 1, + fluidInputs: [Fluid.of('firmalife:yeast_starter', 100)], + fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)], + itemInputs: ['#tfc:foods/flour'], + }) + + processorRecipe("yeast_starter_from_water", 7200, 8, { + circuit: 10, + fluidInputs: [Fluid.of('minecraft:water', 100)], + fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)], + itemInputs: ['#tfc:foods/fruits'], + }) + + processorRecipe("cocoa_dust", 100, 4, { + itemInputs: ["firmalife:food/roasted_cocoa_beans"], + itemOutputs: ["gtceu:cocoa_dust"], + itemOutputProvider: TFC.isp.of("gtceu:cocoa_dust") + }) + + processorRecipe("red_grapes", 50, 8, { + itemInputs: ["firmalife:food/red_grapes"], + itemOutputs: ["firmalife:food/smashed_red_grapes"], + itemOutputProvider: TFC.isp.of('firmalife:food/smashed_red_grapes').copyOldestFood() + }) + + processorRecipe("white_grapes", 50, 8, { + itemInputs: ["firmalife:food/white_grapes"], + itemOutputs: ["firmalife:food/smashed_white_grapes"], + itemOutputProvider: TFC.isp.of('firmalife:food/smashed_white_grapes').copyOldestFood() + }) + + processorRecipe("cured_maize", 300, 8, { + itemInputs: ["tfc:food/maize_grain"], + itemOutputs: ["firmalife:food/cured_maize"], + itemOutputProvider: TFC.isp.of('firmalife:food/cured_maize').copyOldestFood() + }) + + processorRecipe("soy_mixture", 300, 8, { + itemInputs: ["tfc:food/soybean", 'tfc:powder/salt'], + itemOutputs: ["firmalife:food/soy_mixture"], + fluidInputs: [Fluid.of('minecraft:water', 50)], + itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyOldestFood(), + + }) + + // These don't need the ISP handling, they're just here to keep all the food recipes together + + event.recipes.gtceu.mixer('tfg:tfc/olive_oil_water') + .inputFluids(Fluid.of('water', 200)) + .itemInputs('1x tfc:olive_paste') + .outputFluids(Fluid.of('tfc:olive_oil_water', 200)) + .duration(200) + .EUt(28) + + event.recipes.gtceu.distillery('tfg:tfc/olive_oil') + .inputFluids(Fluid.of('tfc:olive_oil_water', 250)) + .outputFluids(Fluid.of('tfc:olive_oil', 50)) + .duration(600) + .EUt(28) + + event.recipes.gtceu.fermenter('soybean_oil') + .itemInputs('firmalife:food/soybean_paste') + .inputFluids(Fluid.of('minecraft:water', 100)) + .outputFluids(Fluid.of('firmalife:soybean_oil', 250)) + .EUt(GTValues.VA[GTValues.ULV]) + .duration(600) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk') + .inputFluids(Fluid.of('minecraft:milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('tfc:curdled_milk', 2000)) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk') + .inputFluids(Fluid.of('firmalife:yak_milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_yak_milk', 2000)) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk') + .inputFluids(Fluid.of('firmalife:goat_milk', 2000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_goat_milk', 2000)) + .duration(2400) + .EUt(16) + + // GT cocoa dust compat + event.recipes.gtceu.macerator('firmalife:food/cocoa_powder') + .itemInputs('gtceu:cocoa_dust') + .itemOutputs('4x firmalife:food/cocoa_powder') + .duration(100) + .EUt(2) + + event.recipes.tfc.quern('4x firmalife:food/cocoa_powder', 'gtceu:cocoa_dust') + .id(`tfg:quern/cocoa_powder`) + + event.recipes.tfc.quern('gtceu:cocoa_dust', 'firmalife:food/roasted_cocoa_beans') + .id('tfg:quern/cocoa_dust'); + + //#endregion + + event.replaceInput({id: 'gtceu:shaped/lv_food_processor'}, 'gtceu:lv_electric_piston', 'gtceu:steel_whisk') + event.replaceInput({id: 'gtceu:shaped/mv_food_processor'}, 'gtceu:mv_electric_piston', 'gtceu:aluminium_whisk') + event.replaceInput({id: 'gtceu:shaped/hv_food_processor'}, 'gtceu:hv_electric_piston', 'gtceu:stainless_steel_whisk') + event.replaceInput({id: 'gtceu:shaped/ev_food_processor'}, 'gtceu:ev_electric_piston', 'gtceu:titanium_whisk') + + event.replaceInput({id: 'gtceu:shaped/lv_food_oven'}, 'gtceu:lv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/mv_food_oven'}, 'gtceu:mv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/hv_food_oven'}, 'gtceu:hv_electric_piston', '#tfg:metal_bars') + event.replaceInput({id: 'gtceu:shaped/ev_food_oven'}, 'gtceu:ev_electric_piston', '#tfg:metal_bars') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index eec0f9d35..0f4bc7713 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -14,4 +14,5 @@ const registerTFGRecipes = (event) => { registerTFGSupportRecipes(event) registerTFGFishingNetsRecipes(event) registerTFGConvertingRecipes(event) + registerTFGFoodRecipes(event) } \ No newline at end of file diff --git a/kubejs/startup_scripts/firmalife/constants.js b/kubejs/startup_scripts/firmalife/constants.js index e0e9b6220..6bc9a7428 100644 --- a/kubejs/startup_scripts/firmalife/constants.js +++ b/kubejs/startup_scripts/firmalife/constants.js @@ -84,6 +84,13 @@ global.FIRMALIFE_ORE_MATERIALS = [ 'chromite' ]; +global.FIRMALIFE_JAMS = [ + "fig", + "pineapple", + "red_grapes", + "white_grapes" +] + global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [ { input: 'firmalife:plant/cocoa_sapling', fluid_amount: 8000, output: '3x firmalife:food/cocoa_beans', name: 'cocoa_beans' }, { input: 'firmalife:plant/fig_sapling', fluid_amount: 8000, output: '3x firmalife:food/fig', name: 'fig' }, @@ -94,26 +101,20 @@ global.FIRMALIFE_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [ { input: 'firmalife:plant/nightshade_bush', fluid_amount: 6000, output: '3x firmalife:food/nightshade_berry', name: 'nightshade' }, ]; -global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/nixtamal', output: '2x firmalife:food/masa_flour', name: 'masa_flour' }, -]; - -global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '4x firmalife:food/barley_dough', name: 'firmalife_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '4x firmalife:food/maize_dough', name: 'firmalife_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '4x firmalife:food/oat_dough', name: 'firmalife_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '4x firmalife:food/rye_dough', name: 'firmalife_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '4x firmalife:food/rice_dough', name: 'firmalife_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '4x firmalife:food/wheat_dough', name: 'firmalife_wheat_dough' }, - { input: 'firmalife:food/masa_flour', output: '2x firmalife:food/masa', name: 'firmalife_masa' }, -]; - -global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_dough', output: 'firmalife:food/barley_flatbread', name: 'barley_flatbread' }, - { input: 'tfc:food/maize_dough', output: 'firmalife:food/maize_flatbread', name: 'maize_flatbread' }, - { input: 'tfc:food/oat_dough', output: 'firmalife:food/oat_flatbread', name: 'oat_flatbread' }, - { input: 'tfc:food/rye_dough', output: 'firmalife:food/rye_flatbread', name: 'rye_flatbread' }, - { input: 'tfc:food/rice_dough', output: 'firmalife:food/rice_flatbread', name: 'rice_flatbread' }, - { input: 'tfc:food/wheat_dough', output: 'firmalife:food/wheat_flatbread', name: 'wheat_flatbread' }, - { input: 'firmalife:food/masa', output: 'firmalife:food/corn_tortilla', name: 'corn_tortilla' }, -]; +global.FIRMALIFE_COOKING_RECIPE_COMPONENTS = [ + { input: 'firmalife:food/white_chocolate_blend', output: 'firmalife:food/white_chocolate', name: 'white_chocolate' }, + { input: 'firmalife:food/dark_chocolate_blend', output: 'firmalife:food/dark_chocolate', name: 'dark_chocolate' }, + { input: 'firmalife:food/milk_chocolate_blend', output: 'firmalife:food/milk_chocolate', name: 'milk_chocolate' }, + { input: 'firmalife:food/raw_pizza', output: 'firmalife:food/cooked_pizza', name: 'cooked_pizza' }, + { input: 'firmalife:food/corn_tortilla', output: 'firmalife:food/taco_shell', name: 'taco_shell' }, + { input: 'firmalife:food/cookie_dough', output: 'firmalife:food/sugar_cookie', name: 'sugar_cookie' }, + { input: 'firmalife:food/chocolate_chip_cookie_dough', output: 'firmalife:food/chocolate_chip_cookie', name: 'chocolate_chip_cookie' }, + { input: 'firmalife:food/hardtack_dough', output: 'firmalife:food/hardtack', name: 'hardtack' }, + { input: 'firmalife:food/filled_pie', output: 'firmalife:food/cooked_pie', name: 'cooked_pie' }, + { input: 'firmalife:food/cocoa_beans', output: 'firmalife:food/roasted_cocoa_beans', name: 'roasted_cocoa_beans' }, + { input: 'firmalife:food/raw_pumpkin_pie', output: 'minecraft:pumpkin_pie', name: 'pumpkin_pie' }, + { input: 'tfc:food/soybean', output: 'firmalife:food/dehydrated_soybeans', name: 'dehydrated_soybeans' }, + { input: 'firmalife:food/raw_lasagna', output: 'firmalife:food/cooked_lasagna', name: 'cooked_lasagna' }, + { input: 'firmalife:food/bacon', output: 'firmalife:food/cooked_bacon', name: 'cooked_bacon' }, + { input: '#firmalife:foods/slices', output: 'firmalife:food/toast', name: 'toast' } +]; \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/machines.js b/kubejs/startup_scripts/gtceu/machines.js index 936294408..21cb9ddfd 100644 --- a/kubejs/startup_scripts/gtceu/machines.js +++ b/kubejs/startup_scripts/gtceu/machines.js @@ -1,7 +1,5 @@ // priority: 0 -//#region Greenhouse - const registerGTCEuMachines = (event) => { GTMachineUtils.registerCrate(GTMaterials.BismuthBronze, 54, "Bismuth Bronze Crate"); @@ -12,66 +10,6 @@ const registerGTCEuMachines = (event) => { const $SteamMulti = Java.loadClass('com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine'); const $Tags = Java.loadClass("dev.latvian.mods.kubejs.util.Tags") - event.create('greenhouse', 'multiblock') - .rotationState(RotationState.NON_Y_AXIS) - .recipeType('greenhouse') - .recipeModifiers([GTRecipeModifiers.OC_PERFECT]) - .appearanceBlock(GTBlocks.CASING_STEEL_SOLID) - .pattern(definition => FactoryBlockPattern.start() - .aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "FFFFFFF") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CCCYCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .where('X', Predicates.blocks('ae2:quartz_glass')) - .where('F', Predicates.frames('steel')) - .where('D', Predicates.blocks('tfc:grass/silt') - .or(Predicates.blocks('tfc:dirt/loam')) - .or(Predicates.blocks('tfc:dirt/sandy_loam')) - .or(Predicates.blocks('tfc:dirt/silty_loam')) - .or(Predicates.blocks('tfc:grass/silt')) - .or(Predicates.blocks('tfc:grass/loam')) - .or(Predicates.blocks('tfc:grass/sandy_loam')) - .or(Predicates.blocks('tfc:grass/silty_loam'))) - .where('C', Predicates.blocks('gtceu:steel_machine_casing').or(Predicates.autoAbilities(definition.getRecipeTypes()))) - .where('#', Predicates.air() - .or(Predicates.blockTag($Tags.block("minecraft:logs"))) - .or(Predicates.blockTag($Tags.block("minecraft:leaves")))) - .where(' ', Predicates.any()) - .where('Y', Predicates.controller(Predicates.blocks(definition.get()))) - .build() - ) - .shapeInfo(controller => MultiblockShapeInfo.builder() - .aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "F##W##F", "F##W##F", "F##W##F", "F#LWL#F", "F#LWL#F", "F#LLL#F", "F#####F", "FFFFFFF") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ") - .aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ") - .aisle("CitYfeC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ") - .where('Y', controller, Direction.SOUTH) - .where('C', GTBlocks.STEEL_HULL.get()) - .where('D', Block.getBlock('tfc:grass/silt')) - .where('F', Block.getBlock('gtceu:steel_frame')) - .where('X', Block.getBlock('ae2:quartz_glass')) - .where('W', Block.getBlock('tfc:wood/log/oak')) - .where('L', Block.getBlock('tfc:wood/leaves/oak')) - .where(' ', Block.getBlock('minecraft:air')) - .where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.SOUTH) - .where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.SOUTH) - .where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.ULV], Direction.SOUTH) - .where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.LV], Direction.SOUTH) - .build() - ) - .workableCasingRenderer( - 'gtceu:block/casings/solid/machine_casing_solid_steel', - 'gtceu:block/multiblock/implosion_compressor', false - ) - - //#endregion - //#region Nether Dome event.create('nether_dome', 'multiblock') diff --git a/kubejs/startup_scripts/gtceu/recipe_types.js b/kubejs/startup_scripts/gtceu/recipe_types.js index 7ba54d0be..979ef3a46 100644 --- a/kubejs/startup_scripts/gtceu/recipe_types.js +++ b/kubejs/startup_scripts/gtceu/recipe_types.js @@ -1,13 +1,6 @@ // priority: 0 const registerGTCEuRecipeTypes = (event) => { - event.create('greenhouse') - .category('greenhouse') - .setEUIO('in') - .setMaxIOSize(3, 4, 1, 0) - .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) - .setSound(GTSoundEntries.BATH) - event.create('nether_dome') .category('nether_dome') .setEUIO('in') diff --git a/kubejs/startup_scripts/tfc/constants.js b/kubejs/startup_scripts/tfc/constants.js index ce425b1ff..d7f2c995e 100644 --- a/kubejs/startup_scripts/tfc/constants.js +++ b/kubejs/startup_scripts/tfc/constants.js @@ -852,7 +852,7 @@ global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS = [ { input: 'tfc:volcanic_glass_batch', output: 'tfc:volcanic_glass_bottle', name: 'volcanic_glass_bottle' }, ]; -global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS = [ +global.TFC_MEAT_RECIPE_COMPONENTS = [ { input: 'tfc:food/horse_meat', output: 'tfc:food/cooked_horse_meat', name: 'cooked_horse_meat' }, { input: 'tfc:food/bear', output: 'tfc:food/cooked_bear', name: 'cooked_bear' }, { input: 'tfc:food/mutton', output: 'tfc:food/cooked_mutton', name: 'cooked_mutton' }, @@ -924,41 +924,39 @@ global.TFC_QUERN_POWDER_RECIPE_COMPONENTS = [ { input: 'firmalife:ore/small_chromite', output: 'gtceu:small_chromite_dust', name: 'chromite' } ]; -global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley', output: 'tfc:food/barley_grain', name: 'barley_grain' }, - { input: 'tfc:food/maize', output: 'tfc:food/maize_grain', name: 'maize_grain' }, - { input: 'tfc:food/oat', output: 'tfc:food/oat_grain', name: 'oat_grain' }, - { input: 'tfc:food/rye', output: 'tfc:food/rye_grain', name: 'rye_grain' }, - { input: 'tfc:food/rice', output: 'tfc:food/rice_grain', name: 'rice_grain' }, - { input: 'tfc:food/wheat', output: 'tfc:food/wheat_grain', name: 'wheat_grain' }, -]; +global.TFC_GRAINS = [ + "barley", + "maize", + "oat", + "rye", + "rice", + "wheat", +] -global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_grain', output: '2x tfc:food/barley_flour', name: 'barley_flour' }, - { input: 'tfc:food/maize_grain', output: '2x tfc:food/maize_flour', name: 'maize_flour' }, - { input: 'tfc:food/oat_grain', output: '2x tfc:food/oat_flour', name: 'oat_flour' }, - { input: 'tfc:food/rye_grain', output: '2x tfc:food/rye_flour', name: 'rye_flour' }, - { input: 'tfc:food/rice_grain', output: '2x tfc:food/rice_flour', name: 'rice_flour' }, - { input: 'tfc:food/wheat_grain', output: '2x tfc:food/wheat_flour', name: 'wheat_flour' }, -]; - -global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '2x tfc:food/barley_dough', name: 'tfc_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '2x tfc:food/maize_dough', name: 'tfc_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '2x tfc:food/oat_dough', name: 'tfc_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '2x tfc:food/rye_dough', name: 'tfc_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '2x tfc:food/rice_dough', name: 'tfc_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '2x tfc:food/wheat_dough', name: 'tfc_wheat_dough' }, -]; - -global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/barley_dough', output: 'tfc:food/barley_bread', name: 'barley_bread' }, - { input: 'firmalife:food/maize_dough', output: 'tfc:food/maize_bread', name: 'maize_bread' }, - { input: 'firmalife:food/oat_dough', output: 'tfc:food/oat_bread', name: 'oat_bread' }, - { input: 'firmalife:food/rye_dough', output: 'tfc:food/rye_bread', name: 'rye_bread' }, - { input: 'firmalife:food/rice_dough', output: 'tfc:food/rice_bread', name: 'rice_bread' }, - { input: 'firmalife:food/wheat_dough', output: 'tfc:food/wheat_bread', name: 'wheat_bread' }, -]; +global.TFC_JAMS = [ + "blackberry", + "blueberry", + "bunchberry", + "cloudberry", + "cranberry", + "elderberry", + "gooseberry", + "raspberry", + "snowberry", + "strawberry", + "wintergreen_berry", + "banana", + "cherry", + "green_apple", + "lemon", + "olive", + "orange", + "peach", + "plum", + "red_apple", + "pumpkin_chunks", + "melon_slice", +] global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [ { input: 'tfc:plant/cherry_sapling', fluid_amount: 8000, output: '32x tfc:food/cherry', name: 'cherry' }, @@ -1016,7 +1014,14 @@ global.TFC_MILKS = [ {id: 'minecraft:milk'}, {id: 'firmalife:yak_milk'}, {id: 'firmalife:goat_milk'}, - {id: 'firmalife:coconut_milk'}, + // Uncomment this if firmalife ever makes this obtainable + //{id: 'firmalife:coconut_milk'}, +]; + +global.TFC_CURDS_AND_CHEESES = [ + { id: 'milk', input_fluid: 'tfc:curdled_milk', curd: 'firmalife:food/milk_curd', cheese1: 'gouda', cheese2: 'cheddar' }, + { id: 'yak', input_fluid: 'firmalife:curdled_yak_milk', curd: 'firmalife:food/yak_curd', cheese1: 'shosha', cheese2: 'rajya_metok' }, + { id: 'goat', input_fluid: 'firmalife:curdled_goat_milk', curd: 'firmalife:food/goat_curd', cheese1: 'feta', cheese2: 'chevre' }, ]; global.TFC_ALCOHOL = [