diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 468bc64fe..aaeb5b66b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -152,7 +152,7 @@ jobs: - name: 📈 Upload Diff id: upload_diff if: ${{ steps.read_diff.outputs.diff != '' }} && steps.check_pakku_lock_prev.outputs.file_found == 'true' - uses: actions/upload-artifact@v4.5.0 + uses: actions/upload-artifact@v4.6.0 with: name: Mods-diff path: PROJECTS_DIFF.md @@ -212,7 +212,7 @@ jobs: mv *.zip $(basename -s .zip *.zip)-curseforge.zip - name: 🚀 Upload artifact CurseForge - uses: actions/upload-artifact@v4.5.0 + uses: actions/upload-artifact@v4.6.0 with: name: ${{ needs.info.outputs.project_full_name }}-curseforge path: ./build/curseforge/${{ needs.info.outputs.project_full_name }}-curseforge.zip @@ -224,7 +224,7 @@ jobs: mv *.mrpack $(basename -s .mrpack *.mrpack)-modrinth.mrpack - name: 🚀 Upload artifact modrinth - uses: actions/upload-artifact@v4.5.0 + uses: actions/upload-artifact@v4.6.0 with: name: ${{ needs.info.outputs.project_full_name }}-modrinth path: ./build/modrinth/${{ needs.info.outputs.project_full_name }}-modrinth.mrpack @@ -267,7 +267,7 @@ jobs: mv *.zip $(basename -s .zip *.zip)-serverpack.zip - name: 🚀 Upload artifact server - uses: actions/upload-artifact@v4.5.0 + uses: actions/upload-artifact@v4.6.0 with: name: ${{ needs.info.outputs.project_full_name }}-serverpack path: ./build/serverpack/${{ needs.info.outputs.project_full_name }}-serverpack.zip @@ -317,7 +317,7 @@ jobs: zip -r ${{ needs.info.outputs.project_full_name }}-multimc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/ - name: 🚀 Upload zip multimc - uses: actions/upload-artifact@v4.5.0 + uses: actions/upload-artifact@v4.6.0 with: name: ${{ needs.info.outputs.project_full_name }}-multimc path: .pakku/multimc-overrides/${{ needs.info.outputs.project_full_name }}-multimc.zip diff --git a/defaultconfigs/firmalife-server.toml b/defaultconfigs/firmalife-server.toml new file mode 100644 index 000000000..95913fda2 --- /dev/null +++ b/defaultconfigs/firmalife-server.toml @@ -0,0 +1,6 @@ + +[general] + #If true, the tumbler and the pumping station work magically with a redstone signal and no power required. + mechanicalPowerCheatMode = true + #If true, sprinkler will not accept firmalife pipes and will instead require something that exposes a fluid capability, eg. a barrel. + usePipesForSprinklers = false diff --git a/kubejs/assets/tfc/patchouli_books/field_guide/en_us/entries/firmalife/irrigation.json b/kubejs/assets/tfc/patchouli_books/field_guide/en_us/entries/firmalife/irrigation.json new file mode 100644 index 000000000..33bbc83fd --- /dev/null +++ b/kubejs/assets/tfc/patchouli_books/field_guide/en_us/entries/firmalife/irrigation.json @@ -0,0 +1,62 @@ +{ + "__comment__": "This file was automatically created by mcresources", + "name": "Irrigation", + "category": "tfc:firmalife", + "icon": "firmalife:sprinkler", + "pages": [ + { + "type": "patchouli:text", + "text": "The $(thing)Sprinkler$() is a device that sprinkles water in a 5x6x5 area centered on the block below the sprinkler block. You know it is working when it drips out water particles. Sprinklers placed facing up irrigate the same 5x6x5 area above." + }, + { + "type": "tfc:anvil_recipe", + "recipe": "firmalife:anvil/sprinkler", + "text": "The sprinkler is made with a $(thing)Copper Plate$()." + }, + { + "type": "patchouli:text", + "text": "Sprinklers must be connected to a system of pipes that feed it water in order to work. This is done by connecting a series of $(thing)Copper Pipes$() to them. Copper Pipes transport water up to 32 blocks to a sprinkler. They are connected to $(thing)Pumping Stations$()." + }, + { + "type": "tfc:anvil_recipe", + "recipe": "firmalife:anvil/copper_pipe", + "text": "The copper pipe is made with a plate." + }, + { + "type": "patchouli:multiblock", + "multiblock": { + "pattern": [ + [ + "X" + ], + [ + "0" + ] + ], + "mapping": { + "X": "firmalife:pumping_station" + } + }, + "name": "", + "text": "", + "enable_visualize": false + }, + { + "type": "patchouli:crafting", + "recipe": "tfg:shaped/pumping_station", + "text": "Pumping stations must be above a source block of water in order to work. Activate them with a redstone signal." + }, + { + "type": "patchouli:crafting", + "recipe": "firmalife:crafting/oxidized_copper_pipe", + "text": "Oxidized pipes are the same as regular copper pipes, except they do not connect to the other kind of pipe." + }, + { + "type": "patchouli:crafting", + "recipe": "firmalife:crafting/greenhouse/iron_greenhouse_port", + "text": "Greenhouse ports have a single pipe inside of them. They can be used to pass water through the walls of greenhouses!" + } + ], + "read_by_default": true, + "sortnum": 8 +} \ No newline at end of file diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 1dc6a808d..5d91a39ca 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -1217,4 +1217,96 @@ const registerCreateRecipes = (event) => { .EUt(20) //#endregion + + // #region So-called "Shit Glass" + + event.shaped('4x create:framed_glass', + [ + 'AA', + 'AA' + ], { + A: 'minecraft:glass' + }).id('tfg:create/framed_glass') + + event.shaped('4x create:tiled_glass', + [ + 'A A', + ' ', + 'A A' + ], { + A: 'minecraft:glass' + }).id('tfg:create/tiled_glass') + + event.shaped('4x create:horizontal_framed_glass', + [ + 'AA', + ' ', + 'AA' + ], { + A: 'minecraft:glass' + }).id('tfg:create/horizontal_framed_glass') + + event.shaped('4x create:vertical_framed_glass', + [ + 'A A', + 'A A' + ], { + A: 'minecraft:glass' + }).id('tfg:create/vertical_framed_glass') + + const CREATE_FRAMED_GLASS_WINDOWS = + [ + 'framed_glass', + 'tiled_glass', + 'horizontal_framed_glass', + 'vertical_framed_glass' + ] + + CREATE_FRAMED_GLASS_WINDOWS.forEach(x => { + event.shapeless(`2x create:${x}_pane`, + [ + `create:${x}`, + '#forge:tools/saws' + ]) + .id(`tfg:create/shapeless/${x}_pane`) + + event.recipes.gtceu.cutter(`tfg:create/${x}_pane`) + .itemInputs(`3x create:${x}`) + .itemOutputs(`8x create:${x}_pane`) + .duration(40) + .EUt(20) + }) + + const CREATE_OTHER_GLASS_WINDOWS = + [ + [ 'dark_oak', 'tfc:wood/lumber/hickory' ], + [ 'mangrove', 'tfc:wood/lumber/mangrove' ], + [ 'ornate_iron', 'gtceu:wrought_iron_rod' ] + ] + + CREATE_OTHER_GLASS_WINDOWS.forEach(x => { + event.shaped(`2x create:${x[0]}_window`, + [ + ' B ', + 'BAB' + ], { + A: 'minecraft:glass', + B: x[1] + }).id(`tfg:create/shaped/${x[0]}_window`) + + event.shapeless(`2x create:${x[0]}_window_pane`, + [ + `create:${x[0]}_window`, + '#forge:tools/saws' + ]) + .id(`tfg:create/shapeless/${x[0]}_window_pane`) + + event.recipes.gtceu.cutter(`tfg:create/${x[0]}_window_pane`) + .itemInputs(`3x create:${x[0]}_window`) + .itemOutputs(`8x create:${x[0]}_window_pane`) + .duration(40) + .EUt(20) + }) + + // #endregion } diff --git a/kubejs/server_scripts/every_compat/recipes.js b/kubejs/server_scripts/every_compat/recipes.js new file mode 100644 index 000000000..f6dfc5885 --- /dev/null +++ b/kubejs/server_scripts/every_compat/recipes.js @@ -0,0 +1,22 @@ +// priority: 0 + +const registerEveryCompatRecipes = (event) => { + + global.TFC_WOOD_TYPES.forEach(wood => + { + event.remove({ id: `everycomp:c/tfc/${wood}_window_pane` }) + + event.shapeless(`2x everycomp:c/tfc/${wood}_window_pane`, + [ + `everycomp:c/tfc/${wood}_window`, + '#forge:tools/saws' + ]) + .id(`tfg:everycompat/shapeless/${wood}_window_pane`) + + event.recipes.gtceu.cutter(`tfg:everycompat/shapeless/${wood}_window_pane`) + .itemInputs(`3x everycomp:c/tfc/${wood}_window`) + .itemOutputs(`8x everycomp:c/tfc/${wood}_window_pane`) + .duration(40) + .EUt(20) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/every_compat/tags.js b/kubejs/server_scripts/every_compat/tags.js new file mode 100644 index 000000000..f23cd60e8 --- /dev/null +++ b/kubejs/server_scripts/every_compat/tags.js @@ -0,0 +1,9 @@ +// priority: 0 + +const registerEveryCompatItemTags = (event) => { + + event.removeAllTagsFrom('everycomp:c/gtceu/rubber_window') + event.removeAllTagsFrom('everycomp:c/gtceu/rubber_window_pane') + event.add('c:hidden_from_recipe_viewers', 'everycomp:c/gtceu/rubber_window') + event.add('c:hidden_from_recipe_viewers', 'everycomp:c/gtceu/rubber_window_pane') +} \ No newline at end of file diff --git a/kubejs/server_scripts/firmalife/recipes.js b/kubejs/server_scripts/firmalife/recipes.js index 0f45f300b..d113b1c53 100644 --- a/kubejs/server_scripts/firmalife/recipes.js +++ b/kubejs/server_scripts/firmalife/recipes.js @@ -134,6 +134,56 @@ const registerFirmaLifeRecipes = (event) => { //#region Рецепты теплиц //#region Медная + + event.shaped('firmalife:pumping_station', + [ + ' B ', + 'ACA', + ' D ' + ], { + A: 'firmalife:copper_pipe', + B: 'gtceu:bronze_plate', + C: '#tfc:barrels', + D: 'create:mechanical_pump' + }).id('tfg:shaped/pumping_station') + + event.shaped('firmalife:pumping_station', + [ + ' B ', + 'ACA', + ' D ' + ], { + A: 'firmalife:copper_pipe', + B: 'gtceu:black_bronze_plate', + C: '#tfc:barrels', + D: 'create:mechanical_pump' + }).id('tfg:shaped/pumping_station2') + + event.shaped('firmalife:pumping_station', + [ + ' B ', + 'ACA', + ' D ' + ], { + A: 'firmalife:copper_pipe', + B: 'gtceu:bismuth_bronze_plate', + C: '#tfc:barrels', + D: 'create:mechanical_pump' + }).id('tfg:shaped/pumping_station3') + + event.recipes.gtceu.bender('tfg:firmalife/copper_pipe') + .itemInputs('gtceu:copper_plate') + .itemOutputs('8x firmalife:copper_pipe') + .circuit(3) + .duration(40) + .EUt(8) + + event.recipes.gtceu.bender('tfg:firmalife/sprinkler') + .itemInputs('gtceu:copper_plate') + .itemOutputs('firmalife:sprinkler') + .circuit(4) + .duration(60) + .EUt(8) // Стена event.shaped('8x firmalife:copper_greenhouse_wall', [ @@ -204,7 +254,7 @@ const registerFirmaLifeRecipes = (event) => { }).id('firmalife:crafting/greenhouse/copper_greenhouse_door') // Порт - event.shaped('8x firmalife:copper_greenhouse_port', [ + event.shaped('firmalife:copper_greenhouse_port', [ 'AA', 'BC', 'AA' @@ -287,7 +337,7 @@ const registerFirmaLifeRecipes = (event) => { }).id('firmalife:crafting/greenhouse/iron_greenhouse_door') // Порт - event.shaped('8x firmalife:iron_greenhouse_port', [ + event.shaped('firmalife:iron_greenhouse_port', [ 'AA', 'BC', 'AA' @@ -367,6 +417,7 @@ const registerFirmaLifeRecipes = (event) => { .itemOutputs(element.output) .duration(300) .EUt(16) + .circuit(2) }) //#endregion @@ -411,6 +462,7 @@ const registerFirmaLifeRecipes = (event) => { .itemOutputs('firmalife:food/pumpkin_pie_dough') .duration(300) .EUt(16) + .circuit(2) event.recipes.create.mixing('firmalife:food/pumpkin_pie_dough', ['#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour', Fluid.of('minecraft:water', 1000)] ).id('firmalife:create/mixer/food/pumpkin_pie_dough') @@ -433,6 +485,7 @@ const registerFirmaLifeRecipes = (event) => { .itemOutputs('firmalife:food/pie_dough') .duration(300) .EUt(16) + .circuit(2) event.recipes.create.mixing('firmalife:food/pie_dough', ['#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour', Fluid.of('minecraft:water', 1000)]) .id('firmalife:create/mixer/food/pie_dough') @@ -454,6 +507,7 @@ const registerFirmaLifeRecipes = (event) => { .itemOutputs('4x firmalife:food/hardtack_dough') .duration(300) .EUt(16) + .circuit(2) event.recipes.create.mixing('4x firmalife:food/hardtack_dough', ['tfc:powder/salt', '#tfc:foods/flour', Fluid.of('minecraft:water', 1000)]) .id('firmalife:create/mixer/food/hardtack_dough') @@ -465,6 +519,7 @@ const registerFirmaLifeRecipes = (event) => { .outputFluids('firmalife:yeast_starter', 600) .duration(1200) .EUt(8) + .circuit(1) event.recipes.create.mixing(Fluid.of('firmalife:yeast_starter', 600), ['#tfc:foods/flour', Fluid.of('firmalife:yeast_starter', 100)]) .id('firmalife:create/mixer/yeast_starter') diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index c15fb4fd9..d2460cc23 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -10,6 +10,7 @@ ServerEvents.tags('item', event => { registerComputerCraftItemTags(event) registerCreateItemTags(event) registerCreateAdditionsItemTags(event) + registerEveryCompatItemTags(event) registerExtendedAE2ItemTags(event) registerFirmaCivItemTags(event) registerFirmaLifeItemTags(event) @@ -119,6 +120,7 @@ ServerEvents.recipes(event => { registerCreateRecipes(event) registerCreateAdditionsRecipes(event) registerCreateConnectedRecipes(event) + registerEveryCompatRecipes(event) registerExtendedAE2Recipes(event) registerExposureRecipes(event) registerEtchedRecipes(event) diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index f1ec75080..dad20c8a7 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -2206,9 +2206,8 @@ const registerMinecraftRecipes = (event) => { //#region Выход: Тонированное стекло - event.recipes.gtceu.chemical_bath('tfg:minecraft/tinted_glass') - .itemInputs('minecraft:glass') - .inputFluids(Fluid.of('gtceu:black_dye', 144)) + event.recipes.gtceu.alloy_smelter('tfg:minecraft/tinted_glass') + .itemInputs('minecraft:glass', 'tfc:powder/amethyst') .itemOutputs('minecraft:tinted_glass') .duration(260) .EUt(16) @@ -3227,4 +3226,8 @@ const registerMinecraftRecipes = (event) => { .EUt(32) //#endregion + + // Nether Brick + + event.smelting('minecraft:nether_brick', 'minecraft:netherrack') } diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index 2e35f8952..08bc9908f 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -3001,6 +3001,7 @@ const registerTFCRecipes = (event) => { .itemOutputs(element.output) .duration(300) .EUt(16) + .circuit(3) }) //#endregion diff --git a/kubejs/startup_scripts/create/constants.js b/kubejs/startup_scripts/create/constants.js index 7e1358b06..90ab66cdb 100644 --- a/kubejs/startup_scripts/create/constants.js +++ b/kubejs/startup_scripts/create/constants.js @@ -322,33 +322,20 @@ global.CREATE_DISABLED_ITEMS = [ 'create:granite_pillar', // Shit Glass - 'create:tiled_glass', - 'create:framed_glass', - 'create:horizontal_framed_glass', - 'create:vertical_framed_glass', - 'create:tiled_glass_pane', - 'create:horizontal_framed_glass_pane', - 'create:vertical_framed_glass_pane', + 'create:crimson_window', + 'create:warped_window', 'create:oak_window', 'create:spruce_window', 'create:birch_window', 'create:jungle_window', 'create:acacia_window', - 'create:dark_oak_window', - 'create:mangrove_window', - 'create:crimson_window', - 'create:warped_window', - 'create:ornate_iron_window', 'create:oak_window_pane', 'create:spruce_window_pane', 'create:birch_window_pane', 'create:jungle_window_pane', 'create:acacia_window_pane', - 'create:dark_oak_window_pane', - 'create:mangrove_window_pane', - 'create:crimson_window_pane', + 'create:crimson_window_pane', 'create:warped_window_pane', - 'create:ornate_iron_window_pane', // Blocks 'create:zinc_block', @@ -468,6 +455,5 @@ global.CREATE_DISABLED_ITEMS = [ 'create:empty_blaze_burner', 'create:minecart_contraption', 'create:furnace_minecart_contraption', - 'create:chest_minecart_contraption', - 'create:framed_glass_pane' -]; \ No newline at end of file + 'create:chest_minecart_contraption' +]; diff --git a/kubejs/startup_scripts/firmalife/constants.js b/kubejs/startup_scripts/firmalife/constants.js index 27b131cf2..1d0e310b0 100644 --- a/kubejs/startup_scripts/firmalife/constants.js +++ b/kubejs/startup_scripts/firmalife/constants.js @@ -33,8 +33,7 @@ global.FIRMALIFE_DISABLED_ITEMS = [ 'firmalife:metal/block/stainless_steel_slab', // Other - 'firmalife:compost_tumbler', - 'firmalife:pumping_station' + 'firmalife:compost_tumbler' ]; global.FIRMALIFE_HIDED_ITEMS = [ @@ -130,4 +129,4 @@ global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS = [ { 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' }, -]; \ No newline at end of file +];