diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index aecc5873a..468bc64fe 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,9 +9,6 @@ concurrency: group: ${{ github.workflow }} cancel-in-progress: true -permissions: - pull-requests: none - env: RELEASE_TYPE: "release" MINECRAFT_VERSION: "1.20.1" @@ -326,9 +323,59 @@ jobs: path: .pakku/multimc-overrides/${{ needs.info.outputs.project_full_name }}-multimc.zip if-no-files-found: error + release-github: + name: 🚀 Release to GitHub + needs: [info, build-modpack, build-server, build-multimc] + runs-on: ubuntu-latest + outputs: + url: ${{ steps.release.outputs.url }} + + steps: + - name: 📦 Checkout + uses: actions/checkout@v4.2.2 + + - name: 📦 Download artifact + uses: actions/download-artifact@v4.1.8 + with: + merge-multiple: true + + - name: 🚫 Сlose fixed in dev + uses: Xikaro/close-issues-based-on-label@master + env: + LABEL: "2. Status: In Dev" + COMMENT: In ${{ needs.info.outputs.project_version }} + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Format diff + id: format_diff + if: ${{ needs.info.outputs.diff != '' }} + uses: roamingowl/template-output-with-eta@v1.11.0 + with: + template: | + ```markdown + ${{ needs.info.outputs.diff }} + ``` + + - name: 🚀 Create release + id: release + uses: softprops/action-gh-release@v2.2.1 + with: + name: ${{ needs.info.outputs.project_version }} + tag_name: ${{ needs.info.outputs.project_version }} + body: | + ${{ needs.info.outputs.changelog }} + ${{ steps.format_diff.outputs.text }} + files: | + ${{ needs.info.outputs.project_full_name }}-curseforge.zip + ${{ needs.info.outputs.project_full_name }}-serverpack.zip + ${{ needs.info.outputs.project_full_name }}-multimc.zip + prerelease: ${{ needs.info.outputs.release_type != 'release' }} + generate_release_notes: true + token: ${{ secrets.GITHUB_TOKEN }} + release-curseforge: name: 🚀 Release to CurseForge - needs: [info, build-modpack, build-server] + needs: [info, build-modpack, build-server, release-github] runs-on: ubuntu-latest outputs: id: ${{ steps.release.outputs.id }} @@ -370,7 +417,7 @@ jobs: # release-modrinth: # name: 🚀 Release to Modrinth - # needs: [info, build-modpack, build-server] + # needs: [info, build-modpack, build-server, release-github] # runs-on: ubuntu-latest # steps: @@ -406,55 +453,6 @@ jobs: # server-display-name: ${{ needs.info.outputs.project_full_name }}-serverpack # release-type: ${{ needs.info.outputs.release_type }} - release-github: - name: 🚀 Release to GitHub - needs: [info, build-modpack, build-server, build-multimc] - runs-on: ubuntu-latest - outputs: - url: ${{ steps.release.outputs.url }} - - steps: - - name: 📦 Checkout - uses: actions/checkout@v4.2.2 - - - name: 📦 Download artifact - uses: actions/download-artifact@v4.1.8 - with: - merge-multiple: true - - - name: 🚫 Сlose fixed in dev - uses: Xikaro/close-issues-based-on-label@master - env: - LABEL: "2. Status: In Dev" - COMMENT: In ${{ needs.info.outputs.project_version }} - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Format diff - id: format_diff - if: ${{ needs.info.outputs.diff != '' }} - uses: roamingowl/template-output-with-eta@v1.11.0 - with: - template: | - ```markdown - ${{ needs.info.outputs.diff }} - ``` - - - name: 🚀 Create release - id: release - uses: softprops/action-gh-release@v2.1.0 - with: - name: ${{ needs.info.outputs.project_version }} - tag_name: ${{ needs.info.outputs.project_version }} - body: | - ${{ needs.info.outputs.changelog }} - ${{ steps.format_diff.outputs.text }} - files: | - ${{ needs.info.outputs.project_full_name }}-curseforge.zip - ${{ needs.info.outputs.project_full_name }}-serverpack.zip - ${{ needs.info.outputs.project_full_name }}-multimc.zip - prerelease: ${{ needs.info.outputs.release_type != 'release' }} - generate_release_notes: true - token: ${{ secrets.GITHUB_TOKEN }} discord-message: name: 📱 Discord Message @@ -484,4 +482,4 @@ jobs: ```markdown ${{ steps.truncated.outputs.text }} - ...``` - ** [Read more...](${{ needs.release-github.outputs.url }}) ** \ No newline at end of file + ** [Read more...](${{ needs.release-github.outputs.url }}) ** diff --git a/CHANGELOG.md b/CHANGELOG.md index d8f7ea01d..479e28937 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,11 @@ - Craft recipe for framed chest so it isn't cheaper then the alternatives (Juzrm). - RU_RU translation for tfc guide book (recently added pages) (8oyNextDoor). - Based gas multiblocks, more suffering! (Pyritie). +- Creosote treated planks fixes (Pyritie). +- Fixed mixer recipes for red/blue steel (Pyritie). +- Added another recipe for Create's electron tubes (Pyritie). +- Electric cheese, tomato sauce and cream (Saaghh). +- Leather producting using GTM machines. ## [0.7.15] - 08.01.2025 ### Changes diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index 2c27cd952..a9bbbd31c 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -6,6 +6,11 @@ "block.gtceu.alternator": "Alternator", "gtceu.alternator": "Alternator", + + "block.gtceu.nether_dome": "Netherarium", + "gtceu.nether_dome": "Netherarium", + "block.gtceu.end_dome": "Enderarium", + "gtceu.end_dome": "Enderarium", "material.treated_wood": "Creosote-Treated Wood", "block.gtceu.treated_wood_planks": "Creosote-Treated Wood Planks", @@ -50,4 +55,4 @@ "block.gtceu.luv_kinetic_output_box": "Ludicrous Voltage Kinetic Output Box", "block.gtceu.zpm_kinetic_output_box": "ZPM Voltage Kinetic Output Box", "block.gtceu.uv_kinetic_output_box": "Ultimate Voltage Kinetic Output Box" -} +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/lang/ru_ru.json b/kubejs/assets/gtceu/lang/ru_ru.json index 0b2d775e3..b155c028d 100644 --- a/kubejs/assets/gtceu/lang/ru_ru.json +++ b/kubejs/assets/gtceu/lang/ru_ru.json @@ -6,6 +6,11 @@ "block.gtceu.alternator": "Генератор переменного тока", "gtceu.alternator": "Генератор переменного тока", + + "block.gtceu.nether_dome": "Террариум нижнего мира", + "gtceu.nether_dome": "Террариум нижнего мира", + "block.gtceu.end_dome": "Террариум края", + "gtceu.end_dome": "Террариум края", "material.treated_wood": "Обработанное креозотом дерево", "block.gtceu.treated_wood_planks": "Доски из обработанного креозотом дерева" diff --git a/kubejs/assets/tfg/models/block/artificial_end_portal_frame.json b/kubejs/assets/tfg/models/block/artificial_end_portal_frame.json new file mode 100644 index 000000000..1b8e182a0 --- /dev/null +++ b/kubejs/assets/tfg/models/block/artificial_end_portal_frame.json @@ -0,0 +1,84 @@ +{ + "textures": { + "particle": "block/end_portal_frame_side", + "bottom": "block/end_stone", + "top": "block/end_portal_frame_top", + "side": "block/end_portal_frame_side", + "eye": "block/end_portal_frame_eye" + }, + "elements": [ + { + "from": [ + 0, + 0, + 0 + ], + "to": [ + 16, + 16, + 16 + ], + "faces": { + "down": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#bottom", + "cullface": "down" + }, + "up": { + "uv": [ + 0, + 0, + 16, + 16 + ], + "texture": "#top" + }, + "north": { + "uv": [ + 0, + 3, + 16, + 16 + ], + "texture": "#side", + "cullface": "north" + }, + "south": { + "uv": [ + 0, + 3, + 16, + 16 + ], + "texture": "#side", + "cullface": "south" + }, + "west": { + "uv": [ + 0, + 3, + 16, + 16 + ], + "texture": "#side", + "cullface": "west" + }, + "east": { + "uv": [ + 0, + 3, + 16, + 16 + ], + "texture": "#side", + "cullface": "east" + } + } + } + ] +} \ No newline at end of file diff --git a/kubejs/client_scripts/tooltips.js b/kubejs/client_scripts/tooltips.js index 323f0ead5..0ae8ec39b 100644 --- a/kubejs/client_scripts/tooltips.js +++ b/kubejs/client_scripts/tooltips.js @@ -1,4 +1,7 @@ ItemEvents.tooltip(event => { + event.addAdvanced(['tfc:red_kaolin_clay','tfc:pink_kaolin_clay','tfc:white_kaolin_clay','gtceu:brass_block'], (item, advanced, text) => { + text.add(1, [text.of('Used in glassblowing as a replacement for Brass Plated Blocks')]) + }) event.addAdvanced(['gtceu:lv_macerator','gtceu:mv_macerator', 'gtceu:hp_steam_macerator'], (item, advanced, text) => { text.add(1, [text.of('Only outputs the first slot shown in EMI/JEI until HV.')]) }) @@ -23,4 +26,12 @@ ItemEvents.tooltip(event => { event.addAdvanced(['firmalife:beehive'], (item, advanced, text) => { text.add(1, [text.of('Needs to be filled with empty frames and surrounded by flowers to attract bees.')]) }) + event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => { + text.add(1, text.of('Artificial enviroment to simulate the Nether.')), + text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) + }) + event.addAdvanced(['gtceu:end_dome'], (item, advanced, text) => { + text.add(1, text.of('Artificial enviroment to simulate the End.')), + text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) + }) }) diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 25b7bb275..1dc6a808d 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -809,12 +809,34 @@ const registerCreateRecipes = (event) => { 'DED' ], { A: 'gtceu:glass_tube', - B: 'gtceu:resistor', + B: '#gtceu:resistors', C: 'gtceu:resin_circuit_board', D: 'gtceu:red_alloy_single_wire', E: '#forge:plates/wrought_iron' }).id('tfg:create/shaped/electron_tube') + event.shaped('2x create:electron_tube', [ + ' A ', + 'BCB', + 'DED' + ], { + A: 'gtceu:glass_tube', + B: '#gtceu:resistors', + C: 'gtceu:plastic_circuit_board', + D: 'gtceu:red_alloy_single_wire', + E: '#forge:plates/wrought_iron' + }).id('tfg:create/shaped/electron_tube2') + + event.shaped('3x create:electron_tube', [ + ' A ', + ' B ', + ' C ' + ], { + A: 'gtceu:glass_tube', + B: 'gtceu:nand_chip', + C: '#forge:plates/wrought_iron' + }).id('tfg:create/shaped/electron_tube3') + // Тюбик с клеем event.shaped('create:super_glue', [ 'BA', @@ -1189,11 +1211,10 @@ const registerCreateRecipes = (event) => { //#region Механизм точности event.recipes.gtceu.assembler('tfg:create/precision_mechanism') - .itemInputs('#forge:sheets/gold','3x create:cogwheel', '3x create:large_cogwheel', '3x #forge:nuggets/iron') - .itemOutputs('create:precision_mechanism') - .duration(2000) - .EUt(20) + .itemInputs('#forge:sheets/gold','3x create:cogwheel', '3x create:large_cogwheel', '3x #forge:nuggets/iron') + .itemOutputs('create:precision_mechanism') + .duration(2000) + .EUt(20) //#endregion - } diff --git a/kubejs/server_scripts/gregtech/recipes.js b/kubejs/server_scripts/gregtech/recipes.js index bf6547854..25e1c4b19 100644 --- a/kubejs/server_scripts/gregtech/recipes.js +++ b/kubejs/server_scripts/gregtech/recipes.js @@ -1050,12 +1050,11 @@ const registerGTCEURecipes = (event) => { event.remove({ id: 'gtceu:extractor/extract_raw_rubber_dust' }) // Пыль звезды незера - // TODO: удалить после имплементации ада event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust') .itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond') .circuit(10) .itemOutputs('gtceu:nether_star_dust') - .inputFluids(Fluid.of('gtceu:sulfur_dioxide', 6000), Fluid.of('gtceu:carbon_monoxide', 8000)) + .inputFluids(Fluid.of('gtceu:nether_air', 1000)) .duration(700) .EUt(2720) @@ -1277,16 +1276,82 @@ const registerGTCEURecipes = (event) => { .EUt(24) //#endregion - - // Add circuit to assembler recipe for redstone lamp. - // Avoids conflict with AE2 smart cables. - event.remove({ id: 'gtceu:assembler/redstone_lamp' }) - event.recipes.gtceu.assembler('redstone_lamp') - .itemInputs('4x #forge:dusts/redstone', '4x #forge:dusts/glowstone') - .itemOutputs('1x minecraft:redstone_lamp') - .circuit(1) - .duration(100) - .EUt(1) + + //#region remove LV casing exploit + + /*event.remove({ id: 'gtceu:assembler/casing_lv' }) + event.recipes.gtceu.assembler('tfg:assembler/casing_lv') + .itemInputs('4x gtceu:blue_steel_plate', '4x gtceu:red_steel_plate') + .itemOutputs('gtceu:lv_machine_casing') + .circuit(8) + .duration(50) + .EUt(16)*/ + + //#endregion + + //#region make colored steel a bit easier to compensate + + event.recipes.gtceu.arc_furnace('tfg:black_steel_dust_to_ingot') + .itemInputs('gtceu:black_steel_dust') + .itemOutputs('gtceu:black_steel_ingot') + .inputFluids(Fluid.of('gtceu:oxygen', 72)) + .duration(500) + .EUt(24) + + event.recipes.gtceu.arc_furnace('tfg:red_steel_dust_to_ingot') + .itemInputs('gtceu:red_steel_dust') + .itemOutputs('gtceu:red_steel_ingot') + .inputFluids(Fluid.of('gtceu:oxygen', 72)) + .duration(700) + .EUt(32) + + event.recipes.gtceu.arc_furnace('tfg:blue_steel_dust_to_ingot') + .itemInputs('gtceu:blue_steel_dust') + .itemOutputs('gtceu:blue_steel_ingot') + .inputFluids(Fluid.of('gtceu:oxygen', 72)) + .duration(700) + .EUt(32) + + //#endregion + + //#region add regular furnace recipes for other tfc alloys + + event.remove({id: 'gtceu:electric_blast_furnace/blast_bismuth_bronze' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_bismuth_bronze_gas' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_black_bronze' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_black_bronze_gas' }) + event.remove({id: 'gtceu:vacuum_freezer/cool_hot_black_bronze_ingot' }) + event.remove({id: 'gtceu:vacuum_freezer/black_bronze' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_sterling_silver' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_sterling_silver_gas' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_rose_gold' }) + event.remove({id: 'gtceu:electric_blast_furnace/blast_rose_gold_gas' }) + + event.recipes.gtceu.electric_furnace('tfg:bismuth_bronze_dust_to_ingot') + .itemInputs('gtceu:bismuth_bronze_dust') + .itemOutputs('gtceu:bismuth_bronze_ingot') + .duration(200) + .EUt(16) + + event.recipes.gtceu.electric_furnace('tfg:black_bronze_dust_to_ingot') + .itemInputs('gtceu:black_bronze_dust') + .itemOutputs('gtceu:black_bronze_ingot') + .duration(200) + .EUt(16) + + event.recipes.gtceu.electric_furnace('tfg:sterling_silver_dust_to_ingot') + .itemInputs('gtceu:sterling_silver_dust') + .itemOutputs('gtceu:sterling_silver_ingot') + .duration(300) + .EUt(20) + + event.recipes.gtceu.electric_furnace('tfg:rose_gold_dust_to_ingot') + .itemInputs('gtceu:rose_gold_dust') + .itemOutputs('gtceu:rose_gold_ingot') + .duration(300) + .EUt(20) + + //#endregion //#region Рецепты, которые итерируются по всем материалам @@ -1465,8 +1530,11 @@ const registerGTCEURecipes = (event) => { } }); - //#endregion + //#endregion + + //#region fix more duping + // Fix LV recycling producing red/blue steel. // Replace red steel outputs with 8x steel, delete blue steel outputs. event.replaceOutput( @@ -1717,5 +1785,18 @@ const registerGTCEURecipes = (event) => { .itemOutputs('gtceu:quantum_processor_mainframe') .duration(800) .EUt(7680) - //#endregion + //#endregion + + // #region fix mixer recipes for colored steel + + event.replaceInput({id: 'gtceu:mixer/red_steel'}, 'gtceu:sterling_silver_dust', 'gtceu:rose_gold_dust') + event.replaceInput({id: 'gtceu:create_mixer/red_steel'}, 'gtceu:sterling_silver_dust', 'gtceu:rose_gold_dust') + event.replaceInput({id: 'gtceu:mixer/red_steel'}, 'gtceu:bismuth_bronze_dust', 'gtceu:brass_dust') + event.replaceInput({id: 'gtceu:create_mixer/red_steel'}, 'gtceu:bismuth_bronze_dust', 'gtceu:brass_dust') + event.replaceInput({id: 'gtceu:mixer/blue_steel'}, 'gtceu:rose_gold_dust', 'gtceu:sterling_silver_dust') + event.replaceInput({id: 'gtceu:create_mixer/blue_steel'}, 'gtceu:rose_gold_dust', 'gtceu:sterling_silver_dust') + event.replaceInput({id: 'gtceu:mixer/blue_steel'}, 'gtceu:brass_dust', 'gtceu:bismuth_bronze_dust') + event.replaceInput({id: 'gtceu:create_mixer/blue_steel'}, 'gtceu:brass_dust', 'gtceu:bismuth_bronze_dust') + + // #endregion } diff --git a/kubejs/server_scripts/gregtech/tags.js b/kubejs/server_scripts/gregtech/tags.js index 23f04da80..6917a4e25 100644 --- a/kubejs/server_scripts/gregtech/tags.js +++ b/kubejs/server_scripts/gregtech/tags.js @@ -39,6 +39,8 @@ const registerGTCEUItemTags = (event) => { event.add('tfg:stone_dusts', 'gtceu:stone_dust') + event.remove('minecraft:planks', 'gtceu:treated_wood_planks') + //#endregion } diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index 921c3b673..0aa85775f 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -3262,8 +3262,8 @@ const registerMinecraftRecipes = (event) => { //#region Glowstone event.recipes.gtceu.mixer('gtceu:lv_glowstone') - .inputFluids(Fluid.of('gtceu:creosote', 1000), Fluid.of('gtceu:distilled_water', 1000)) - .itemInputs('gtceu:stone_dust', 'minecraft:redstone', 'gtceu:sulfur_dust', 'gtceu:sodium_dust') + .inputFluids(Fluid.of('gtceu:creosote', 1000)) + .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust', 'gtceu:coal_dust') .itemOutputs('minecraft:glowstone_dust') .circuit(32) .duration(1200) diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index 2cb401eb8..2e35f8952 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -3044,6 +3044,140 @@ const registerTFCRecipes = (event) => { //#endregion + //#region СЫЫЫР 0_0 + + // Rennet + event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') + .itemInputs('#tfg:ferments_to_rennet') + .itemOutputs('firmalife:rennet') + .duration(400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') + .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .itemOutputs('firmalife:rennet') + .duration(2400) + .EUt(16) + + // Curdled milk + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk') + .inputFluids(Fluid.of('minecraft:milk', 1000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('tfc:curdled_milk')) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk') + .inputFluids(Fluid.of('firmalife:yak_milk', 1000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_yak_milk')) + .duration(2400) + .EUt(16) + + event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk') + .inputFluids(Fluid.of('firmalife:goat_milk', 1000)) + .itemInputs('firmalife:rennet') + .outputFluids(Fluid.of('firmalife:curdled_goat_milk')) + .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(28) + + event.recipes.gtceu.cutter('tfg:cutter/shosha') + .itemInputs('firmalife:shosha_wheel') + .itemOutputs('4x firmalife:food/shosha') + .duration(40) + .EUt(28) + + event.recipes.gtceu.cutter('tfg:cutter/feta') + .itemInputs('firmalife:feta_wheel') + .itemOutputs('4x firmalife:food/feta') + .duration(40) + .EUt(28) + + event.recipes.gtceu.cutter('tfg:cutter/cheddar') + .itemInputs('firmalife:cheddar_wheel') + .itemOutputs('4x firmalife:food/cheddar') + .duration(40) + .EUt(28) + + event.recipes.gtceu.cutter('tfg:cutter/chevre') + .itemInputs('firmalife:chevre_wheel') + .itemOutputs('4x firmalife:food/chevre') + .duration(40) + .EUt(28) + + event.recipes.gtceu.cutter('tfg:cutter/rajya_metok') + .itemInputs('firmalife:rajya_metok_wheel') + .itemOutputs('4x firmalife:food/rajya_metok') + .duration(40) + .EUt(28) + + // 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')) + .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`) @@ -3074,6 +3208,121 @@ const registerTFCRecipes = (event) => { // А где? //#endregion + // Бумага + event.recipes.gtceu.cutter('tfg:unrefined_paper') + .itemInputs('tfc:unrefined_paper') + .itemOutputs('minecraft:paper') + .duration(100) + .EUt(16) + + // Limewater + event.recipes.gtceu.mixer('tfg:limewater_from_lime') + .itemInputs('tfc:powder/lime') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + event.recipes.gtceu.mixer('tfg:limewater_from_flux') + .itemInputs('tfc:powder/flux') + .inputFluids(Fluid.of('water', 500)) + .outputFluids(Fluid.of('tfc:limewater', 500)) + .duration(20) + .EUt(16) + + // Tannin + event.recipes.gtceu.chemical_bath('tfg:tannin') + .itemInputs('#tfc:makes_tannin') + .inputFluids(Fluid.of('water', 1000)) + .outputFluids(Fluid.of('tfc:tannin', 1000)) + .duration(2400) + .EUt(16) + + // Soaked hides + event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide') + .itemInputs('tfc:small_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 300)) + .itemOutputs('tfc:small_soaked_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide') + .itemInputs('tfc:medium_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 400)) + .itemOutputs('tfc:medium_soaked_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide') + .itemInputs('tfc:large_raw_hide') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .itemOutputs('tfc:large_soaked_hide') + .duration(3200) + .EUt(16) + + // Scraped Hides + event.recipes.gtceu.cutter('tfg:small_scraped_hide') + .itemInputs('tfc:small_soaked_hide') + .itemOutputs('tfc:small_scraped_hide') + .duration(100) + .EUt(16) + + event.recipes.gtceu.cutter('tfg:medium_scraped_hide') + .itemInputs('tfc:medium_soaked_hide') + .itemOutputs('tfc:medium_scraped_hide') + .duration(100) + .EUt(16) + + event.recipes.gtceu.cutter('tfg:large_scraped_hide') + .itemInputs('tfc:large_soaked_hide') + .itemOutputs('tfc:large_scraped_hide') + .duration(100) + .EUt(16) + + // Prepared hides + event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide') + .itemInputs('tfc:small_soaked_hide') + .inputFluids(Fluid.of('water', 300)) + .itemOutputs('tfc:small_prepared_hide') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide') + .itemInputs('tfc:medium_soaked_hide') + .inputFluids(Fluid.of('water', 400)) + .itemOutputs('tfc:medium_prepared_hide') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide') + .itemInputs('tfc:large_soaked_hide') + .inputFluids(Fluid.of('water', 500)) + .itemOutputs('tfc:large_prepared_hide') + .duration(3200) + .EUt(16) + + // Leather + event.recipes.gtceu.chemical_bath('tfg:small_leather') + .itemInputs('tfc:small_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 300)) + .itemOutputs('minecraft:leather') + .duration(1600) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:medium_leather') + .itemInputs('tfc:medium_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 400)) + .itemOutputs('2x minecraft:leather') + .duration(2400) + .EUt(16) + + event.recipes.gtceu.chemical_bath('tfg:large_leather') + .itemInputs('tfc:large_prepared_hide') + .inputFluids(Fluid.of('tfc:tannin', 500)) + .itemOutputs('3x minecraft:leather') + .duration(3200) + .EUt(16) + // Другое event.remove({ id: `tfc:crafting/trip_hammer` }) event.remove({ id: `tfc:anvil/steel_pump` }) diff --git a/kubejs/server_scripts/tfc/tags.js b/kubejs/server_scripts/tfc/tags.js index a746d2c62..9b9f50d93 100644 --- a/kubejs/server_scripts/tfc/tags.js +++ b/kubejs/server_scripts/tfc/tags.js @@ -29,6 +29,11 @@ const registerTFCItemTags = (event) => { event.add('tfc:usable_on_tool_rack', '#forge:tools/chainsaws') event.add('tfc:usable_on_tool_rack', '#forge:tools/buzzsaws') event.add('tfc:usable_on_tool_rack', '#forge:tools/drills') + + // Ингредиенты для закваски + event.add('tfg:ferments_to_rennet', 'tfc:food/soybean') + event.add('tfg:ferments_to_rennet', 'firmalife:food/fig') + event.add('tfg:ferments_to_rennet', 'tfc:plant/ivy') // Для складывания event.add('tfc:pileable_ingots', '#forge:ingots') diff --git a/kubejs/server_scripts/tfg/terrariums.js b/kubejs/server_scripts/tfg/terrariums.js new file mode 100644 index 000000000..e93c725b0 --- /dev/null +++ b/kubejs/server_scripts/tfg/terrariums.js @@ -0,0 +1,233 @@ +ServerEvents.recipes(event => { + + event.remove({ id: 'gtceu:gas_collector/nether_air' }) + event.remove({ id: 'minecraft:netherite_upgrade_smithing_template' }) + event.remove({ id: 'gtceu:gas_collector/ender_air' }) + event.remove({ id: 'gtceu:macerator/macerate_end_stone' }) + event.remove({ id: 'minecraft:ender_chest' }) + event.remove({ id: 'gtceu:assembler/ender_chest' }) + event.remove({ id: 'minecraft:end_crystal' }) + event.remove({ id: 'gtceu:assembler/end_crystal' }) + + // nether slurry + + event.recipes.gtceu.mixer('tfg:nether_slurry') + .itemInputs('gtceu:basalt_dust', 'minecraft:blaze_powder', 'minecraft:gold_nugget') + .inputFluids(Fluid.of('minecraft:lava', 1000)) + .outputFluids(Fluid.of('tfg:nether_slurry', 1000)) + .duration(200) + .EUt(512) + + event.recipes.gtceu.mixer('tfg:enriched_nether_slurry') + .itemInputs('minecraft:quartz', 'minecraft:redstone') + .inputFluids(Fluid.of('tfg:nether_slurry', 2000)) + .outputFluids(Fluid.of('tfg:enriched_nether_slurry', 2000)) + .duration(200) + .EUt(512) + + // nether air + + event.recipes.gtceu.nether_dome('tfg:slurry_to_air') + .inputFluids(Fluid.of('tfg:nether_slurry', 100)) + .outputFluids(Fluid.of('gtceu:nether_air', 32000)) + .duration(200) + .EUt(256) + + event.recipes.gtceu.nether_dome('tfg:enriched_slurry_to_air') + .inputFluids(Fluid.of('tfg:enriched_nether_slurry', 100)) + .outputFluids(Fluid.of('gtceu:nether_air', 128000)) + .duration(200) + .EUt(256) + + event.recipes.gtceu.nether_dome('tfg:quartz') + .itemInputs('gtceu:quartzite_gem') + .inputFluids(Fluid.of('tfg:nether_slurry', 25)) + .itemOutputs('minecraft:quartz') + .duration(200) + .EUt(512) + + // netherarium + + /*event.shaped('gtceu:nether_dome', [ + 'GCB', + 'DEH', + 'FAF' + ], { + A: 'minecraft:flint_and_steel', + B: 'minecraft:gold_nugget', + C: 'minecraft:blaze_rod', + D: 'minecraft:quartz', + E: 'gtceu:hv_gas_collector', + F: 'gtceu:dense_obsidian_plate', + G: 'minecraft:rotten_flesh', + H: 'minecraft:bone' + }).id('tfg:shaped/nether_dome')*/ + + event.shaped('gtceu:nether_dome', [ + 'ADA', + 'CEC', + 'FBF' + ], { + A: 'minecraft:quartz', + B: 'minecraft:gold_block', + C: 'minecraft:blaze_rod', + D: 'gtceu:hv_emitter', + E: 'gtceu:hv_gas_collector', + F: 'gtceu:dense_obsidian_plate' + }).id('tfg:shaped/nether_dome2') + + // netherrack + + event.recipes.gtceu.chemical_bath('tfg:netherrack') + .itemInputs('#forge:stone') + .inputFluids(Fluid.of('gtceu:blaze', 144)) + .itemOutputs('minecraft:netherrack') + .duration(200) + .EUt(512) + + event.recipes.gtceu.macerator('tfg:obsidian') + .itemInputs('minecraft:obsidian') + .itemOutputs('gtceu:obsidian_dust') + .duration(100) + .EUt(512) + + // nether bricks + + event.shaped('4x minecraft:nether_bricks', [ + 'ABA', + 'BAB', + 'ABA' + ], { + A: 'minecraft:nether_brick', + B: 'tfc:mortar' + }).id('tfg:shaped/nether_bricks') + + event.recipes.gtceu.assembler('tfg:nether_bricks') + .itemInputs('5x minecraft:nether_brick') + .itemOutputs('4x minecraft:nether_bricks') + .inputFluids(Fluid.of('gtceu:concrete', 72)) + .duration(50) + .EUt(2) + + // ender slurry + + event.recipes.gtceu.mixer('tfg:ender_slurry') + .itemInputs('gtceu:obsidian_dust', 'minecraft:end_stone') + .inputFluids(Fluid.of('gtceu:helium', 200), Fluid.of('gtceu:radon', 50)) + .outputFluids(Fluid.of('tfg:ender_slurry', 250)) + .duration(200) + .EUt(2048) + + event.recipes.gtceu.mixer('tfg:enriched_ender_slurry') + .itemInputs('minecraft:chorus_fruit', 'ae2:ender_dust') + .inputFluids(Fluid.of('tfg:ender_slurry', 500)) + .outputFluids(Fluid.of('tfg:enriched_ender_slurry', 500)) + .duration(200) + .EUt(2048) + + // ender air + + event.recipes.gtceu.end_dome('tfg:slurry_to_air') + .inputFluids(Fluid.of('tfg:ender_slurry', 25)) + .outputFluids(Fluid.of('gtceu:ender_air', 32000)) + .duration(200) + .EUt(1024) + + event.recipes.gtceu.end_dome('tfg:enriched_slurry_to_air') + .inputFluids(Fluid.of('tfg:enriched_ender_slurry', 25)) + .outputFluids(Fluid.of('gtceu:ender_air', 128000)) + .duration(200) + .EUt(1024) + + event.recipes.gtceu.end_dome('tfg:pearls') + .itemInputs('gtceu:quantum_eye') + .inputFluids(Fluid.of('tfg:ender_slurry', 10)) + .itemOutputs('2x minecraft:ender_pearl') + .duration(200) + .EUt(2048) + + // enderarium + + /*event.recipes.gtceu.assembler('tfg:end_dome') + .itemInputs('12x minecraft:ender_eye', 'minecraft:chorus_fruit', 'minecraft:end_crystal', '#minecraft:beds', 'gtceu:ev_gas_collector', 'tfc:metal/bars/wrought_iron', 'minecraft:bow', 'minecraft:end_stone', 'minecraft:obsidian') + .itemOutputs('gtceu:end_dome') + .duration(600) + .EUt(2048)*/ + + event.shaped('gtceu:end_dome', [ + 'DAD', + 'CEC', + 'FBF' + ], { + A: 'gtceu:ev_emitter', + B: 'minecraft:end_stone', + C: 'tfc:metal/bars/wrought_iron', + D: 'minecraft:end_crystal', + E: 'gtceu:ev_gas_collector', + F: 'gtceu:dense_obsidian_plate' + }).id('tfg:shaped/end_dome') + + // parts for the ender dome + + event.shaped('minecraft:end_crystal', [ + 'AAA', + 'ABA', + 'ACA' + ], { + A: 'gtceu:tempered_glass', + B: 'gtceu:quantum_eye', + C: '#forge:exquisite_gems' + }).id('tfg:shaped/end_crystal') + + // chorus fruit + + event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_uranium') + .itemInputs('#tfc:foods/fruits', 'gtceu:uranium_235_dust') + .itemOutputs('minecraft:chorus_fruit', 'gtceu:uranium_dust') + .duration(500) + .EUt(480) + + event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_plutonium') + .itemInputs('#tfc:foods/fruits', 'gtceu:plutonium_241_dust') + .itemOutputs('minecraft:chorus_fruit', 'gtceu:plutonium_dust') + .duration(200) + .EUt(480) + + event.recipes.gtceu.centrifuge('tfg:kovarex') + .itemInputs('40x gtceu:uranium_235_dust', '5x gtceu:uranium_dust') + .itemOutputs('41x gtceu:uranium_235_dust', '2x gtceu:uranium_dust') + .duration(1000) + .EUt(512) + + // end stone + + + event.recipes.gtceu.chemical_bath('tfg:end_stone') + .itemInputs('#forge:stone') + .inputFluids(Fluid.of('gtceu:argon', 100)) + .itemOutputs('minecraft:end_stone') + .duration(100) + .EUt(2048) + + // dragon egg + + event.recipes.gtceu.chemical_bath('tfg:dragon_egg') + .itemInputs('#forge:eggs') + .inputFluids(Fluid.of('gtceu:thorium', 1296)) + .itemOutputs('minecraft:dragon_egg') + .duration(2000) + .EUt(2048) + + // end portal frame + + event.shaped('tfg:artificial_end_portal_frame', [ + 'A', + 'B', + 'C' + ], { + A: 'minecraft:ender_eye', + B: 'minecraft:cyan_carpet', + C: 'minecraft:end_stone' + }).id('tfg:shaped/artificial_end_portal_frame') +}) + diff --git a/kubejs/startup_scripts/gtceu/machines.js b/kubejs/startup_scripts/gtceu/machines.js index 0a415b613..de2de707d 100644 --- a/kubejs/startup_scripts/gtceu/machines.js +++ b/kubejs/startup_scripts/gtceu/machines.js @@ -24,7 +24,7 @@ const registerGTCEuMachines = (event) => { ) .workableCasingRenderer('gtceu:block/casings/solid/machine_casing_solid_steel', 'gtceu:block/multiblock/implosion_compressor', false) - event.create('alternator', 'multiblock') + event.create('alternator', 'multiblock') .rotationState(RotationState.NON_Y_AXIS) .recipeType('alternator') .pattern(definition => FactoryBlockPattern.start() @@ -44,4 +44,163 @@ const registerGTCEuMachines = (event) => { "gtceu:block/casings/solid/machine_casing_solid_steel", "gtceu:block/multiblock/implosion_compressor", false ) + + event.create('nether_dome', 'multiblock') + .rotationState(RotationState.NON_Y_AXIS) + .recipeType('nether_dome') + .appearanceBlock(GTBlocks.CASING_PTFE_INERT) + .pattern(definition => FactoryBlockPattern.start() + .aisle(" CCCCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ") + .aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ") + .aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ") + .aisle("CBBBBBC", "F#####F", "F#####F", "F#####F", "FTTTTTF", "FQQQQQF") + .aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ") + .aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ") + .aisle(" CCXCC ", " QGOGQ ", " QOPOQ ", " QOPOQ ", " QGOGQ ", " ") + .where('X', Predicates.controller(Predicates.blocks(definition.get()))) + .where('B', Predicates.blocks('tfc:rock/magma/basalt').setMinGlobalLimited(6) + .or(Predicates.blocks('minecraft:netherrack').setMinGlobalLimited(10))) + .where('T', Predicates.blocks('minecraft:glowstone').setMinGlobalLimited(5) + .or(Predicates.blocks('minecraft:netherrack').setMinGlobalLimited(10))) + .where('O', Predicates.blocks('minecraft:obsidian')) + .where('F', Predicates.frames('black_steel')) + .where('Q', Predicates.blocks('ae2:quartz_glass')) + .where('G', Predicates.blocks('minecraft:gold_block') + .or(Predicates.blocks('tfc:rock/raw/basalt')) + .or(Predicates.blocks('tfc:rock/hardened/basalt')) + .or(Predicates.blocks('tfc:rock/bricks/basalt')) + .or(Predicates.blocks('tfc:rock/chiseled/basalt')) + .or(Predicates.blocks('minecraft:obsidian')) + .or(Predicates.blocks('minecraft:nether_bricks'))) + .where('P', Predicates.blocks('minecraft:purple_stained_glass_pane')) + .where('C', Predicates.blocks(GTBlocks.CASING_PTFE_INERT.get()).setMinGlobalLimited(10) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))) + .where('#', Predicates.air() + .or(Predicates.blocks('minecraft:netherrack')) + .or(Predicates.blocks('tfc:rock/magma/basalt')) + .or(Predicates.blocks('minecraft:glowstone')) + .or(Predicates.blocks('minecraft:nether_bricks'))) + .where(' ', Predicates.any()) + .build() + ) + .shapeInfo(controller => MultiblockShapeInfo.builder() + .aisle(" CeCeC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ") + .aisle("CMMMNNC", "Q NQ", "Q Q", "Q Q", "QNTTNNQ", " QQQQQ ") + .aisle("iMMNNNf", "QR Q", "QR Q", "Q T Q", "QNTTTNQ", " QQQQQ ") + .aisle("CNMMMNC", "F NF", "F F", "F F", "FNNTNNF", "FQQQQQF") + .aisle("tNNNMNl", "Q NQ", "Q NQ", "Q Q", "QNNNNNQ", " QQQQQ ") + .aisle("CNNNNNC", "QN NNQ", "Q NQ", "Q NQ", "QNNNNNQ", " QQQQQ ") + .aisle(" mCXCC ", " QGOGQ ", " QOPOQ ", " QOPOQ ", " QGOGQ ", " ") + .where('X', controller, Direction.SOUTH) + .where('C', GTBlocks.CASING_PTFE_INERT.get()) + .where('N', Block.getBlock('minecraft:netherrack')) + .where('M', Block.getBlock('tfc:rock/magma/basalt')) + .where('T', Block.getBlock('minecraft:glowstone')) + .where('Q', Block.getBlock('ae2:quartz_glass')) + .where('F', Block.getBlock('gtceu:black_steel_frame')) + .where('G', Block.getBlock('minecraft:gold_block')) + .where('O', Block.getBlock('minecraft:obsidian')) + .where('P', Block.getBlock('minecraft:purple_stained_glass_pane')) + .where('R', Block.getBlock('minecraft:nether_bricks')) + .where(' ', Block.getBlock('minecraft:air')) + + .where('m', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) + .where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST) + .where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.WEST) + .where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST) + .where('l', GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST) + .where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.MV], Direction.NORTH) + .build() + ) + .workableCasingRenderer( + "gtceu:block/casings/solid/machine_casing_inert_ptfe", + "gtceu:block/machines/gas_collector", false + ) + + event.create('end_dome', 'multiblock') + .rotationState(RotationState.NON_Y_AXIS) + .recipeType('end_dome') + .appearanceBlock(GTBlocks.CASING_TITANIUM_STABLE) + .pattern(definition => FactoryBlockPattern.start() + .aisle(" CCCCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ") + .aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " QSSSQ ", " GGG ") + .aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " SNNNS ", " G G ") + .aisle("CBBBBBC", "FOOEOOF", "FOOOOOF", "FOOOOOF", "FOOOOOF", "FSNNNSF", " G G ") + .aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " SNNNS ", " G G ") + .aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " QSSSQ ", " GGG ") + .aisle(" CCXCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ") + .where('X', Predicates.controller(Predicates.blocks(definition.get()))) + .where('B', Predicates.blocks('minecraft:end_stone').setMinGlobalLimited(20) + .or(Predicates.blocks('minecraft:black_concrete'))) + .where('O', Predicates.blocks('minecraft:obsidian').setMinGlobalLimited(8) + .or(Predicates.air())) + .where('F', Predicates.frames('titanium')) + .where('Q', Predicates.blocks('ae2:quartz_glass')) + .where('E', Predicates.blocks('minecraft:dragon_egg')) + .where('S', Predicates.blocks('tfg:artificial_end_portal_frame')) + .where('N', Predicates.blocks('minecraft:black_concrete')) + .where('G', Predicates.blocks('tfc:ore/small_malachite') + .or(Predicates.blocks('tfc:ore/small_native_copper')) + .or(Predicates.blocks('tfc:ore/small_native_gold')) + .or(Predicates.blocks('tfc:ore/small_hematite')) + .or(Predicates.blocks('tfc:ore/small_native_silver')) + .or(Predicates.blocks('tfc:ore/small_cassiterite')) + .or(Predicates.blocks('tfc:ore/small_bismuthinite')) + .or(Predicates.blocks('tfc:ore/small_garnierite')) + .or(Predicates.blocks('tfc:ore/small_malachite')) + .or(Predicates.blocks('tfc:ore/small_magnetite')) + .or(Predicates.blocks('tfc:ore/small_limonite')) + .or(Predicates.blocks('tfc:ore/small_sphalerite')) + .or(Predicates.blocks('tfc:ore/small_tetrahedrite'))) + .where('C', Predicates.blocks(GTBlocks.CASING_TITANIUM_STABLE.get()).setMinGlobalLimited(10) + .or(Predicates.autoAbilities(definition.getRecipeTypes())) + .or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1))) + .where(' ', Predicates.any()) + .build() + ) + .shapeInfo(controller => MultiblockShapeInfo.builder() + .aisle(" CeCeC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ") + .aisle("CBBBBBC", "Q O Q", "Q O Q", "Q Q", "Q Q", " QSSSQ ", " 123 ") + .aisle("iBBBBBf", "QO OQ", "QO Q", "QO Q", "Q Q", " SNNNS ", " y 4 ") + .aisle("CBBBBBC", "F E F", "F F", "F F", "F F", "FSNNNSF", " z 5 ") + .aisle("tBBBBNl", "Q O Q", "Q O Q", "Q Q", "Q Q", " SNNNS ", " 0 6 ") + .aisle("CNBBNNC", "Q Q", "Q Q", "Q Q", "Q Q", " QSSSQ ", " 987 ") + .aisle(" mCXCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ") + .where('X', controller, Direction.SOUTH) + .where('C', GTBlocks.CASING_TITANIUM_STABLE.get()) + .where('B', Block.getBlock('minecraft:end_stone')) + .where('N', Block.getBlock('minecraft:black_concrete')) + .where('O', Block.getBlock('minecraft:obsidian')) + .where('F', Block.getBlock('gtceu:titanium_frame')) + .where('Q', Block.getBlock('ae2:quartz_glass')) + .where(' ', Block.getBlock('minecraft:air')) + .where('S', Block.getBlock('tfg:artificial_end_portal_frame')) + .where('E', Block.getBlock('minecraft:dragon_egg')) + + .where('1', Block.getBlock('tfc:ore/small_native_copper')) + .where('2', Block.getBlock('tfc:ore/small_native_gold')) + .where('3', Block.getBlock('tfc:ore/small_hematite')) + .where('4', Block.getBlock('tfc:ore/small_native_silver')) + .where('5', Block.getBlock('tfc:ore/small_cassiterite')) + .where('6', Block.getBlock('tfc:ore/small_bismuthinite')) + .where('7', Block.getBlock('tfc:ore/small_garnierite')) + .where('8', Block.getBlock('tfc:ore/small_malachite')) + .where('9', Block.getBlock('tfc:ore/small_magnetite')) + .where('0', Block.getBlock('tfc:ore/small_limonite')) + .where('z', Block.getBlock('tfc:ore/small_sphalerite')) + .where('y', Block.getBlock('tfc:ore/small_tetrahedrite')) + + .where('m', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH) + .where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST) + .where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.WEST) + .where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST) + .where('l', GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST) + .where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.HV], Direction.NORTH) + .build() + ) + .workableCasingRenderer( + "gtceu:block/casings/solid/machine_casing_stable_titanium", + "gtceu:block/machines/gas_collector", false + ) } \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/recipe_types.js b/kubejs/startup_scripts/gtceu/recipe_types.js index eb4144c95..7f6f60476 100644 --- a/kubejs/startup_scripts/gtceu/recipe_types.js +++ b/kubejs/startup_scripts/gtceu/recipe_types.js @@ -15,5 +15,22 @@ const registerGTCEuRecipeTypes = (event) => { .setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT) .setSound(GTSoundEntries.ARC) .setMaxTooltips(6) + + + event.create('nether_dome') + .category('nether_dome') + .setEUIO('in') + .setMaxIOSize(1, 1, 1, 1) + .setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY) + .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, FillDirection.LEFT_TO_RIGHT) + .setSound(GTSoundEntries.FIRE) + + event.create('end_dome') + .category('end_dome') + .setEUIO('in') + .setMaxIOSize(1, 1, 1, 1) + .setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY) + .setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, FillDirection.LEFT_TO_RIGHT) + .setSound(GTSoundEntries.FIRE) } diff --git a/kubejs/startup_scripts/main_startup_script.js b/kubejs/startup_scripts/main_startup_script.js index b36fa8b48..3cf9d793a 100644 --- a/kubejs/startup_scripts/main_startup_script.js +++ b/kubejs/startup_scripts/main_startup_script.js @@ -12,8 +12,7 @@ StartupEvents.registry('item', event => { */ StartupEvents.registry('block', event => { registerGTCEuBlocks(event) - - + registerTFGBlocks(event) }) /** @@ -31,7 +30,9 @@ ItemEvents.modification(event => {}) /** * Событие регистрации жидкостей. */ -StartupEvents.registry('fluid', event => {}) +StartupEvents.registry('fluid', event => { + registerTFGFluids(event) +}) /** * Событие регистрации типов рецептов. @@ -52,4 +53,4 @@ GTCEuStartupEvents.registry('gtceu:machine', event => { */ // TFGStartupEvents.materialInfo(event => { // registerGTCEuMaterialInfo(event) -// }) \ No newline at end of file +// }) diff --git a/kubejs/startup_scripts/minecraft/constants.js b/kubejs/startup_scripts/minecraft/constants.js index 329cfd31d..ca7218bb3 100644 --- a/kubejs/startup_scripts/minecraft/constants.js +++ b/kubejs/startup_scripts/minecraft/constants.js @@ -83,7 +83,7 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:prismarine_shard', // Эндстоун - 'minecraft:end_stone', + //'minecraft:end_stone', 'minecraft:end_stone_bricks', 'minecraft:end_stone_brick_stairs', 'minecraft:end_stone_brick_slab', @@ -491,8 +491,7 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:burn_pottery_sherd', // Шаблоны брони - 'minecraft:wayfinder_armor_trim_smithing_template', - 'minecraft:netherite_upgrade_smithing_template', + /*'minecraft:wayfinder_armor_trim_smithing_template', 'minecraft:dune_armor_trim_smithing_template', 'minecraft:snout_armor_trim_smithing_template', 'minecraft:shaper_armor_trim_smithing_template', @@ -507,7 +506,8 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:raiser_armor_trim_smithing_template', 'minecraft:wild_armor_trim_smithing_template', 'minecraft:sentry_armor_trim_smithing_template', - 'minecraft:ward_armor_trim_smithing_template', + 'minecraft:ward_armor_trim_smithing_template',*/ + 'minecraft:netherite_upgrade_smithing_template', // Свечи 'minecraft:candle', @@ -666,7 +666,7 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:honey_bottle', 'minecraft:honeycomb_block', 'minecraft:honey_block', - 'minecraft:chorus_fruit', + //'minecraft:chorus_fruit', 'minecraft:popped_chorus_fruit', 'minecraft:purpur_pillar', 'minecraft:purpur_block', @@ -700,7 +700,7 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:mushroom_stem', 'minecraft:brown_mushroom_block', 'minecraft:red_mushroom_block', - 'minecraft:dragon_egg', + //'minecraft:dragon_egg', 'minecraft:end_portal_frame', 'minecraft:mushroom_stew', 'minecraft:structure_void', @@ -766,8 +766,8 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:polished_blackstone_brick_stairs', 'minecraft:polished_blackstone_brick_slab', 'minecraft:polished_blackstone_brick_wall', - 'minecraft:netherrack', - 'minecraft:nether_bricks', + //'minecraft:netherrack', + //'minecraft:nether_bricks', 'minecraft:cracked_nether_bricks', 'minecraft:nether_brick_stairs', 'minecraft:nether_brick_slab', @@ -815,7 +815,7 @@ global.MINECRAFT_DISABLED_ITEMS = [ 'minecraft:wither_skeleton_skull', 'minecraft:weeping_vines', 'minecraft:crimson_roots', - 'minecraft:nether_brick', + //'minecraft:nether_brick', 'minecraft:nether_wart', 'minecraft:twisting_vines', 'minecraft:warped_fungus', diff --git a/kubejs/startup_scripts/tfc/constants.js b/kubejs/startup_scripts/tfc/constants.js index 973c20ab7..5b91aaa30 100644 --- a/kubejs/startup_scripts/tfc/constants.js +++ b/kubejs/startup_scripts/tfc/constants.js @@ -1060,6 +1060,13 @@ global.TFC_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [ { input: 'tfc:plant/cranberry_bush', fluid_amount: 6000, output: '3x tfc:food/cranberry', name: 'cranberry' }, ]; +global.TFC_MILKS = [ + {id: 'minecraft:milk'}, + {id: 'firmalife:yak_milk'}, + {id: 'firmalife:goat_milk'}, + {id: 'firmalife:coconut_milk'}, +]; + global.calcAmountOfMetal = (defaultAmount, percents) => { const value = defaultAmount / (100 / percents) return (value % 2 == 0) ? value : Math.round(value) - 1 diff --git a/kubejs/startup_scripts/tfg/blocks.js b/kubejs/startup_scripts/tfg/blocks.js new file mode 100644 index 000000000..e9fe4451b --- /dev/null +++ b/kubejs/startup_scripts/tfg/blocks.js @@ -0,0 +1,11 @@ +const registerTFGBlocks = (event) => { + + event.create('tfg:artificial_end_portal_frame') + .stoneSoundType() + .tagBlock('minecraft:mineable/pickaxe') + .requiresTool(true) + .fullBlock(true) + .item(item => { + item.modelJson({ parent: 'minecraft:block/end_portal_frame' }) + }) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fluids.js b/kubejs/startup_scripts/tfg/fluids.js new file mode 100644 index 000000000..0e475ab81 --- /dev/null +++ b/kubejs/startup_scripts/tfg/fluids.js @@ -0,0 +1,28 @@ +const registerTFGFluids = (event) => { + + event.create('tfg:nether_slurry') + .thickTexture(0x6b281b) + .bucketColor(0x6b281b) + .temperature(1000) + .luminosity(7) + .noBlock() + + event.create('tfg:enriched_nether_slurry') + .thickTexture(0x99594d) + .bucketColor(0x99594d) + .temperature(1000) + .luminosity(7) + .noBlock() + + event.create('tfg:ender_slurry') + .thickTexture(0x1b5c51) + .bucketColor(0x1b5c51) + .luminosity(2) + .noBlock() + + event.create('tfg:enriched_ender_slurry') + .thickTexture(0x3a9178) + .bucketColor(0x3a9178) + .luminosity(2) + .noBlock() +} \ No newline at end of file diff --git a/pakku.json b/pakku.json index ef5602af5..ea22ac9a0 100644 --- a/pakku.json +++ b/pakku.json @@ -1,6 +1,6 @@ { "name": "TerraFirmaGreg-Modern", - "version": "0.7.15", + "version": "0.7.16", "description": "An innovative modpack that contains GregTech and TerraFirmaCraft on 1.20.x.", "author": "Exception, Xikaro", "overrides": [ @@ -188,4 +188,4 @@ "side": "CLIENT" } } -} \ No newline at end of file +}