Merge branch 'main' into main

Signed-off-by: Dmitry <52341158+Exzept1on@users.noreply.github.com>
This commit is contained in:
Dmitry 2025-01-18 00:38:10 +07:00 committed by GitHub
commit c49c9e7ebb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
42 changed files with 731 additions and 204 deletions

View file

@ -152,7 +152,7 @@ jobs:
- name: 📈 Upload Diff - name: 📈 Upload Diff
id: upload_diff id: upload_diff
if: ${{ steps.read_diff.outputs.diff != '' }} && steps.check_pakku_lock_prev.outputs.file_found == 'true' 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: with:
name: Mods-diff name: Mods-diff
path: PROJECTS_DIFF.md path: PROJECTS_DIFF.md
@ -212,7 +212,7 @@ jobs:
mv *.zip $(basename -s .zip *.zip)-curseforge.zip mv *.zip $(basename -s .zip *.zip)-curseforge.zip
- name: 🚀 Upload artifact CurseForge - name: 🚀 Upload artifact CurseForge
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: ${{ needs.info.outputs.project_full_name }}-curseforge name: ${{ needs.info.outputs.project_full_name }}-curseforge
path: ./build/curseforge/${{ needs.info.outputs.project_full_name }}-curseforge.zip path: ./build/curseforge/${{ needs.info.outputs.project_full_name }}-curseforge.zip
@ -224,7 +224,7 @@ jobs:
mv *.mrpack $(basename -s .mrpack *.mrpack)-modrinth.mrpack mv *.mrpack $(basename -s .mrpack *.mrpack)-modrinth.mrpack
- name: 🚀 Upload artifact modrinth - name: 🚀 Upload artifact modrinth
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: ${{ needs.info.outputs.project_full_name }}-modrinth name: ${{ needs.info.outputs.project_full_name }}-modrinth
path: ./build/modrinth/${{ needs.info.outputs.project_full_name }}-modrinth.mrpack path: ./build/modrinth/${{ needs.info.outputs.project_full_name }}-modrinth.mrpack
@ -267,7 +267,7 @@ jobs:
mv *.zip $(basename -s .zip *.zip)-serverpack.zip mv *.zip $(basename -s .zip *.zip)-serverpack.zip
- name: 🚀 Upload artifact server - name: 🚀 Upload artifact server
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: ${{ needs.info.outputs.project_full_name }}-serverpack name: ${{ needs.info.outputs.project_full_name }}-serverpack
path: ./build/serverpack/${{ needs.info.outputs.project_full_name }}-serverpack.zip 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/ zip -r ${{ needs.info.outputs.project_full_name }}-multimc.zip icon.png mmc-pack.json instance.cfg .minecraft/ flame/
- name: 🚀 Upload zip multimc - name: 🚀 Upload zip multimc
uses: actions/upload-artifact@v4.5.0 uses: actions/upload-artifact@v4.6.0
with: with:
name: ${{ needs.info.outputs.project_full_name }}-multimc name: ${{ needs.info.outputs.project_full_name }}-multimc
path: .pakku/multimc-overrides/${{ needs.info.outputs.project_full_name }}-multimc.zip path: .pakku/multimc-overrides/${{ needs.info.outputs.project_full_name }}-multimc.zip

View file

@ -3782,7 +3782,11 @@
y: 3.0d y: 3.0d
} }
{ {
dependencies: ["7E8F9F6F35614B13"] dependencies: [
"7E8F9F6F35614B13"
"25C1C646790CFB6E"
]
dependency_requirement: "one_completed"
id: "2658E7679CD42ACD" id: "2658E7679CD42ACD"
tasks: [{ tasks: [{
id: "5D95FC92B930ACC0" id: "5D95FC92B930ACC0"
@ -5228,6 +5232,32 @@
x: 24.5d x: 24.5d
y: 24.0d y: 24.0d
} }
{
dependencies: [
"0988DE53C9217CE6"
"332C0086D53DDAA3"
]
id: "25C1C646790CFB6E"
tasks: [{
id: "7ACE2BE9075B650E"
item: "tfc:treated_hide"
type: "item"
}]
x: 24.5d
y: -7.0d
}
{
dependencies: ["76EF4D00586A8B74"]
hide_dependency_lines: true
id: "332C0086D53DDAA3"
tasks: [{
id: "322DF9A30CFE57CE"
item: "tfc:groundcover/pumice"
type: "item"
}]
x: 27.0d
y: -7.0d
}
] ]
title: "Primitive Age" title: "Primitive Age"
} }

View file

@ -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

View file

@ -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
}

View file

@ -0,0 +1,49 @@
{
"name": "Blast Furnace Tips",
"icon": "tfc:blast_furnace",
"category": "tfc:tfg_tips",
"read_by_default": true,
"pages":
[
{
"type": "patchouli:text",
"title": "TerraFirmaCraft Blast Furnace Tips",
"text": "So, you finally found that $(item)Kaolinite$() and are probably feeling pretty excited about making a 5-level $(thing)Blast Furnace$(). Here are some tips before you go wild!"
},
{
"type": "patchouli:spotlight",
"item": "gtceu:compressed_fireclay",
"text": "Before you use all your fire clay on 20 fire bricks, note that once you get into the steam age, you can create fire bricks out of only clay, through $(item)Compressed Fireclay$() (you'll need steam machines for the clay dust). This allows you to save $(item)Kaolinite$() and $(item)Graphite$() for $(thing)Casting Tables$()."
},
{
"type": "patchouli:spotlight",
"title": "Preheating Metal",
"item": "tfc:firepit",
"text": "To convert the iron to steel, the blast furnace must heat the iron inside to $(thing)Brilliant White$(). On the first operation, the metal warms up along with the blast furnace. However, subsequent operations will take a similar amount of time despite the furnace being at temp already, as it needs to heat the metal from cold."
},
{
"type": "patchouli:text",
"text": "If the metal is hot when added into the blast furnace, it will take less time to reach brilliant white. Consider heating your metal in a $(l:tfc:mechanics/charcoal_forge)Charcoal Forge$() before putting it into an already-hot furnace to save time, especially with smaller blast furnaces that process less at a time."
},
{
"type": "patchouli:spotlight",
"title": "Valid Inputs",
"item": "gtceu:iron_dust",
"text": "Only certain processing stages of ores are accepted in the blast furnace. $(thing)Ore Dusts$(), $(thing)Raw Ores$(), and $(thing)Cast/Wrought Iron Ingots$() work, while $(thing)Crushed$(), $(thing)Impure$(), or other stages of processing will not. But you really should $(l:tfc:tfg_ores/ore_basics#processing)Process$() your ores to dust."
},
{
"type": "patchouli:spotlight",
"title": "Automation",
"item": "create:mechanical_pump",
"text": "You'll need lots of $(item)Steel$() for the $(thing)Steam$() and $(thing)LV$() ages. Lots of steel. The $(thing)Electric Blast Furnace$() is far off, so maybe think about optimizing your steel production."
},
{
"type": "patchouli:text",
"text": "You can pump liquid directly out of the blast furnace using a Create $(item)Mechanical Pump$(). Pump into a $(l:tfc:tfcchannelcasting/channel_casting)Mold Table$() and extract the ingots with a hopper or chute: Easy automation!$(br2)You can automate the bellows with a $(item)Deployer$() too! Just be careful, as using the bellows excessively consumes more fuel and breaks your $(thing)tuyere$() faster.$(br2)You can process the resulting $(item)Pig Iron$() and $(item)High Carbon Steel$() in a $(thing)Forge Hammer$()."
},
{
"type": "patchouli:text",
"text": "You can automatically replace broken tuyeres with a hopper facing into the blast furnace."
}
]
}

View file

@ -0,0 +1,18 @@
{
"values": [
"minecraft:amethyst_shard",
"gtceu:bismuth_ingot",
"minecraft:diamond",
"minecraft:emerald",
"minecraft:gold_ingot",
"minecraft:lapis_lazuli",
"gtceu:opal_gem",
"gtceu:raw_pyrite",
"gtceu:rose_gold_ingot",
"gtceu:ruby_gem",
"gtceu:sapphire_gem",
"gtceu:silver_ingot",
"gtceu:sterling_silver_ingot",
"gtceu:topaz_gem"
]
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "amethyst_tfc",
"description": {
"color": "#9A5CC6",
"translate": "trim_material.tfc.amethyst"
},
"ingredient": "minecraft:amethyst_shard",
"item_model_index": 0
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "bismuth_tfc",
"description": {
"color": "#8bbbc4",
"translate": "trim_material.tfc.bismuth"
},
"ingredient": "gtceu:bismuth_ingot",
"item_model_index": 1
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "diamond_tfc",
"description": {
"color": "#6EECD2",
"translate": "trim_material.tfc.diamond"
},
"ingredient": "minecraft:diamond",
"item_model_index": 0.1
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "emerald_tfc",
"description": {
"color": "#11A036",
"translate": "trim_material.tfc.emerald"
},
"ingredient": "minecraft:emerald",
"item_model_index": 0.2
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "gold_tfc",
"description": {
"color": "#DEB12D",
"translate": "trim_material.tfc.gold"
},
"ingredient": "minecraft:gold_ingot",
"item_model_index": 0.9
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "lapis",
"description": {
"color": "#416E97",
"translate": "trim_material.minecraft.lapis"
},
"ingredient": "tfc:gem/lapis_lazuli",
"item_model_index": 0.9
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "lapis_lazuli_tfc",
"description": {
"color": "#416E97",
"translate": "trim_material.tfc.lapis_lazuli"
},
"ingredient": "minecraft:lapis_lazuli",
"item_model_index": 0.3
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "opal_tfc",
"description": {
"color": "#75e7eb",
"translate": "trim_material.tfc.opal"
},
"ingredient": "gtceu:opal_gem",
"item_model_index": 0.4
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "pyrite_tfc",
"description": {
"color": "#e6c44c",
"translate": "trim_material.tfc.pyrite"
},
"ingredient": "gtceu:raw_pyrite",
"item_model_index": 0.4
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "rose_gold_tfc",
"description": {
"color": "#fcdd86",
"translate": "trim_material.tfc.rose_gold"
},
"ingredient": "gtceu:rose_gold_ingot",
"item_model_index": 0.95
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "ruby_tfc",
"description": {
"color": "#971607",
"translate": "trim_material.tfc.ruby"
},
"ingredient": "gtceu:ruby_gem",
"item_model_index": 0.5
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "sapphire_tfc",
"description": {
"color": "#183dde",
"translate": "trim_material.tfc.sapphire"
},
"ingredient": "gtceu:sapphire_gem",
"item_model_index": 0.6
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "silver_tfc",
"description": {
"color": "#edeadf",
"translate": "trim_material.tfc.silver"
},
"ingredient": "gtceu:silver_ingot",
"item_model_index": 0.8
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "sterling_silver_tfc",
"description": {
"color": "#ccc7b6",
"translate": "trim_material.tfc.sterling_silver"
},
"ingredient": "gtceu:sterling_silver_ingot",
"item_model_index": 0.85
}

View file

@ -0,0 +1,9 @@
{
"asset_name": "topaz_tfc",
"description": {
"color": "#c27a0e",
"translate": "trim_material.tfc.topaz"
},
"ingredient": "gtceu:topaz_gem",
"item_model_index": 0.7
}

View file

@ -1047,7 +1047,7 @@ const registerCreateRecipes = (event) => {
.EUt(20) .EUt(20)
// Деталь рельса // Деталь рельса
event.shaped('create:metal_girder', [ event.shaped('3x create:metal_girder', [
'AAA', 'AAA',
'BBB' 'BBB'
], { ], {
@ -1227,4 +1227,96 @@ const registerCreateRecipes = (event) => {
.EUt(20) .EUt(20)
//#endregion //#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
} }

View file

@ -19,6 +19,10 @@ const registerCreateItemTags = (event) => {
event.add('tfg:usable_in_sail_frame', 'tfc:burlap_cloth') event.add('tfg:usable_in_sail_frame', 'tfc:burlap_cloth')
event.add('tfg:usable_in_sail_frame', 'tfc:wool_cloth') event.add('tfg:usable_in_sail_frame', 'tfc:wool_cloth')
event.add('tfg:usable_in_sail_frame', "tfc:silk_cloth") event.add('tfg:usable_in_sail_frame', "tfc:silk_cloth")
event.add('minecraft:trimmable_armor', 'create:copper_diving_helmet')
event.add('minecraft:trimmable_armor', 'create:copper_diving_boots')
} }
const registerCreateBlockTags = (event) => { const registerCreateBlockTags = (event) => {
@ -46,4 +50,4 @@ const registerCreateFluidTags = (event) => {
// Добавляем тег для скрытия в EMI // Добавляем тег для скрытия в EMI
event.add('c:hidden_from_recipe_viewers', 'create:chocolate') event.add('c:hidden_from_recipe_viewers', 'create:chocolate')
event.add('c:hidden_from_recipe_viewers', 'create:honey') event.add('c:hidden_from_recipe_viewers', 'create:honey')
} }

View file

@ -0,0 +1,7 @@
const registerCreateConnectedItemTags = (event) => {
// Removes tags from the Cherry and Bamboo wooden panes added by Create Connected
event.removeAllTagsFrom("create_connected:cherry_window_pane")
event.add("c:hidden_from_recipe_viewers", "create_connected:cherry_window_pane")
event.removeAllTagsFrom("create_connected:bamboo_window_pane")
event.add("c:hidden_from_recipe_viewers", "create_connected:bamboo_window_pane")
}

View file

@ -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)
})
}

View file

@ -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')
}

View file

@ -33,6 +33,16 @@ const registerFirmaCivRecipes = (event) => {
event.recipes.tfc.heating('firmaciv:unfinished_nav_clock', 930) event.recipes.tfc.heating('firmaciv:unfinished_nav_clock', 930)
.resultFluid(Fluid.of('gtceu:brass', 288)) .resultFluid(Fluid.of('gtceu:brass', 288))
.id(`firmaciv:heating/unfinished_nav_clock`) .id(`firmaciv:heating/unfinished_nav_clock`)
event.replaceOutput( // This problem would come each time there's a double-plate recipe in an anvil. Dunno how to fix it other than that.
'gtceu:arc_furnace/arc_unfinished_nav_clock',
'gtceu:brass_ingot',
'2x gtceu:brass_ingot')
event.replaceOutput(
'gtceu:macerator/macerate_unfinished_nav_clock',
'gtceu:brass_dust',
'2x gtceu:brass_dust')
//#endregion //#endregion
//#region Navigator Timepiece //#region Navigator Timepiece
@ -114,6 +124,16 @@ const registerFirmaCivRecipes = (event) => {
event.recipes.tfc.heating('firmaciv:anchor', 1535) event.recipes.tfc.heating('firmaciv:anchor', 1535)
.resultFluid(Fluid.of('gtceu:steel', 288)) .resultFluid(Fluid.of('gtceu:steel', 288))
.id(`firmaciv:heating/anchor`) .id(`firmaciv:heating/anchor`)
event.replaceOutput(
'gtceu:arc_furnace/arc_anchor',
'gtceu:steel_ingot',
'2x gtceu:steel_ingot')
event.replaceOutput(
'gtceu:macerator/macerate_anchor',
'gtceu:steel_dust',
'2x gtceu:steel_dust')
//#endregion //#endregion
//#region Cannon Barrel //#region Cannon Barrel
@ -140,6 +160,16 @@ const registerFirmaCivRecipes = (event) => {
event.recipes.tfc.heating('firmaciv:cannonball', 1535) event.recipes.tfc.heating('firmaciv:cannonball', 1535)
.resultFluid(Fluid.of('gtceu:iron', 288)) .resultFluid(Fluid.of('gtceu:iron', 288))
.id(`firmaciv:heating/cannonball`) .id(`firmaciv:heating/cannonball`)
event.replaceOutput(
'gtceu:arc_furnace/arc_cannon_barrel',
'gtceu:wrought_iron_ingot',
'2x gtceu:wrought_iron_ingot')
event.replaceOutput(
'gtceu:macerator/macerate_cannon_barrel',
'gtceu:iron_dust',
'2x gtceu:iron_dust')
//#endregion //#endregion
//#region Cannon //#region Cannon
@ -147,4 +177,4 @@ const registerFirmaCivRecipes = (event) => {
.resultFluid(Fluid.of('gtceu:iron', 1872)) .resultFluid(Fluid.of('gtceu:iron', 1872))
.id(`firmaciv:heating/cannon`) .id(`firmaciv:heating/cannon`)
//#endregion //#endregion
} }

View file

@ -134,6 +134,56 @@ const registerFirmaLifeRecipes = (event) => {
//#region Рецепты теплиц //#region Рецепты теплиц
//#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', [ event.shaped('8x firmalife:copper_greenhouse_wall', [
@ -204,7 +254,7 @@ const registerFirmaLifeRecipes = (event) => {
}).id('firmalife:crafting/greenhouse/copper_greenhouse_door') }).id('firmalife:crafting/greenhouse/copper_greenhouse_door')
// Порт // Порт
event.shaped('8x firmalife:copper_greenhouse_port', [ event.shaped('firmalife:copper_greenhouse_port', [
'AA', 'AA',
'BC', 'BC',
'AA' 'AA'
@ -287,7 +337,7 @@ const registerFirmaLifeRecipes = (event) => {
}).id('firmalife:crafting/greenhouse/iron_greenhouse_door') }).id('firmalife:crafting/greenhouse/iron_greenhouse_door')
// Порт // Порт
event.shaped('8x firmalife:iron_greenhouse_port', [ event.shaped('firmalife:iron_greenhouse_port', [
'AA', 'AA',
'BC', 'BC',
'AA' 'AA'
@ -367,6 +417,7 @@ const registerFirmaLifeRecipes = (event) => {
.itemOutputs(element.output) .itemOutputs(element.output)
.duration(300) .duration(300)
.EUt(16) .EUt(16)
.circuit(2)
}) })
//#endregion //#endregion
@ -411,6 +462,7 @@ const registerFirmaLifeRecipes = (event) => {
.itemOutputs('firmalife:food/pumpkin_pie_dough') .itemOutputs('firmalife:food/pumpkin_pie_dough')
.duration(300) .duration(300)
.EUt(16) .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)] 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') ).id('firmalife:create/mixer/food/pumpkin_pie_dough')
@ -433,6 +485,7 @@ const registerFirmaLifeRecipes = (event) => {
.itemOutputs('firmalife:food/pie_dough') .itemOutputs('firmalife:food/pie_dough')
.duration(300) .duration(300)
.EUt(16) .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)]) 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') .id('firmalife:create/mixer/food/pie_dough')
@ -454,6 +507,7 @@ const registerFirmaLifeRecipes = (event) => {
.itemOutputs('4x firmalife:food/hardtack_dough') .itemOutputs('4x firmalife:food/hardtack_dough')
.duration(300) .duration(300)
.EUt(16) .EUt(16)
.circuit(2)
event.recipes.create.mixing('4x firmalife:food/hardtack_dough', ['tfc:powder/salt', '#tfc:foods/flour', Fluid.of('minecraft:water', 1000)]) 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') .id('firmalife:create/mixer/food/hardtack_dough')
@ -465,6 +519,7 @@ const registerFirmaLifeRecipes = (event) => {
.outputFluids('firmalife:yeast_starter', 600) .outputFluids('firmalife:yeast_starter', 600)
.duration(1200) .duration(1200)
.EUt(8) .EUt(8)
.circuit(1)
event.recipes.create.mixing(Fluid.of('firmalife:yeast_starter', 600), ['#tfc:foods/flour', Fluid.of('firmalife:yeast_starter', 100)]) 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') .id('firmalife:create/mixer/yeast_starter')

View file

@ -13,6 +13,8 @@ const registerFirmaLifeItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', item) event.add('c:hidden_from_recipe_viewers', item)
}) })
event.add('minecraft:trimmable_armor', '#firmalife:beekeeper_armor')
// Удаление тегов у руд // Удаление тегов у руд
event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/") event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/")
} }
@ -38,4 +40,4 @@ const registerFirmaLifeFluidTags = (event) => {
const registerFirmaLifePlacedFeatures = (event) => { const registerFirmaLifePlacedFeatures = (event) => {
event.remove('tfc:in_biome/veins', 'firmalife:vein/normal_chromite') event.remove('tfc:in_biome/veins', 'firmalife:vein/normal_chromite')
event.remove('tfc:in_biome/veins', 'firmalife:vein/deep_chromite') event.remove('tfc:in_biome/veins', 'firmalife:vein/deep_chromite')
} }

View file

@ -50,6 +50,18 @@ const registerGTCEURecipes = (event) => {
//#endregion //#endregion
event.recipes.gtceu.macerator('flux')
.itemInputs('#tfc:fluxstone')
.itemOutputs('2x tfc:powder/flux')
.duration(30)
.EUt(2)
event.recipes.gtceu.forge_hammer('flux')
.itemInputs('#tfc:fluxstone')
.itemOutputs('2x tfc:powder/flux')
.duration(30)
.EUt(2)
//#region Выход: Диоксид силикона //#region Выход: Диоксид силикона
event.recipes.gtceu.electrolyzer('sand_electrolysis') event.recipes.gtceu.electrolyzer('sand_electrolysis')
@ -1799,4 +1811,30 @@ const registerGTCEURecipes = (event) => {
event.replaceInput({id: 'gtceu:create_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 // #endregion
// #region Add all glass colors to macerator/hammer
event.remove({id: "gtceu:macerator/macerate_glass"});
event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass")
.itemInputs(
"#forge:glass"
)
.itemOutputs("gtceu:glass_dust")
.duration(20)
.EUt(2);
event.remove({id: "gtceu:macerator/macerate_glass_pane"});
event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane")
.itemInputs(
"#forge:glass_panes"
)
.itemOutputs("3x gtceu:tiny_glass_dust")
.duration(6)
.EUt(2)
event.replaceInput(
{id: "gtceu:shaped/glass_dust_hammer"},
"minecraft:glass",
"#forge:glass"
);
// #endregion
} }

View file

@ -12,6 +12,10 @@ const registerGTCEUItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', item) event.add('c:hidden_from_recipe_viewers', item)
}) })
global.GTCEU_ARMORS.forEach(item => {
event.add('minecraft:trimmable_armor', item)
})
// Добавление тега EMI для скрытия всех руд // Добавление тега EMI для скрытия всех руд
event.add('c:hidden_from_recipe_viewers', '#forge:ores') event.add('c:hidden_from_recipe_viewers', '#forge:ores')

View file

@ -10,6 +10,8 @@ ServerEvents.tags('item', event => {
registerComputerCraftItemTags(event) registerComputerCraftItemTags(event)
registerCreateItemTags(event) registerCreateItemTags(event)
registerCreateAdditionsItemTags(event) registerCreateAdditionsItemTags(event)
registerCreateConnectedItemTags(event)
registerEveryCompatItemTags(event)
registerExtendedAE2ItemTags(event) registerExtendedAE2ItemTags(event)
registerFirmaCivItemTags(event) registerFirmaCivItemTags(event)
registerFirmaLifeItemTags(event) registerFirmaLifeItemTags(event)
@ -22,6 +24,7 @@ ServerEvents.tags('item', event => {
registerHotOrNotItemTags(event) registerHotOrNotItemTags(event)
registerRailWaysItemTags(event) registerRailWaysItemTags(event)
registerSophisticatedBackpacksItemTags(event) registerSophisticatedBackpacksItemTags(event)
registerTFCAmbientalItemTags(event)
registerTFCItemTags(event) registerTFCItemTags(event)
}) })
@ -118,6 +121,7 @@ ServerEvents.recipes(event => {
registerCreateRecipes(event) registerCreateRecipes(event)
registerCreateAdditionsRecipes(event) registerCreateAdditionsRecipes(event)
registerCreateConnectedRecipes(event) registerCreateConnectedRecipes(event)
registerEveryCompatRecipes(event)
registerExtendedAE2Recipes(event) registerExtendedAE2Recipes(event)
registerExposureRecipes(event) registerExposureRecipes(event)
registerEtchedRecipes(event) registerEtchedRecipes(event)
@ -140,4 +144,4 @@ ServerEvents.recipes(event => {
registerToolBeltRecipes(event) registerToolBeltRecipes(event)
registerTreeTapRecipes(event) registerTreeTapRecipes(event)
registerWaterFlasksRecipes(event) registerWaterFlasksRecipes(event)
}) })

View file

@ -2206,9 +2206,8 @@ const registerMinecraftRecipes = (event) => {
//#region Выход: Тонированное стекло //#region Выход: Тонированное стекло
event.recipes.gtceu.chemical_bath('tfg:minecraft/tinted_glass') event.recipes.gtceu.alloy_smelter('tfg:minecraft/tinted_glass')
.itemInputs('minecraft:glass') .itemInputs('minecraft:glass', 'tfc:powder/amethyst')
.inputFluids(Fluid.of('gtceu:black_dye', 144))
.itemOutputs('minecraft:tinted_glass') .itemOutputs('minecraft:tinted_glass')
.duration(260) .duration(260)
.EUt(16) .EUt(16)
@ -2337,27 +2336,6 @@ const registerMinecraftRecipes = (event) => {
//#endregion //#endregion
//#region Шаблоны брони
event.remove({id: 'minecraft:wild_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:wayfinder_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:ward_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:vex_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:tide_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:spire_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:snout_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:silence_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:shaper_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:sentry_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:rib_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:raiser_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:host_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:eye_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:dune_armor_trim_smithing_template_smithing_trim'})
event.remove({id: 'minecraft:coast_armor_trim_smithing_template_smithing_trim'})
//#endregion
//#region Кольчуга //#region Кольчуга
event.remove({id: 'gtceu:shaped/chainmail_boots'}) event.remove({id: 'gtceu:shaped/chainmail_boots'})
@ -2506,28 +2484,6 @@ const registerMinecraftRecipes = (event) => {
//#endregion //#endregion
//#region Выход: Шаблоны брони
event.remove({ id: 'minecraft:coast_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:vex_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:host_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:rib_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:spire_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:tide_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:eye_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:raiser_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:wild_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:shaper_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:snout_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:dune_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:netherite_upgrade_smithing_template' })
event.remove({ id: 'minecraft:wayfinder_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:ward_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:silence_armor_trim_smithing_template' })
event.remove({ id: 'minecraft:sentry_armor_trim_smithing_template' })
//#endregion
//#region Выход: Компаратор //#region Выход: Компаратор
event.remove({id: 'minecraft:comparator'}) event.remove({id: 'minecraft:comparator'})
@ -3270,4 +3226,8 @@ const registerMinecraftRecipes = (event) => {
.EUt(32) .EUt(32)
//#endregion //#endregion
// Nether Brick
event.smelting('minecraft:nether_brick', 'minecraft:netherrack')
} }

View file

@ -241,9 +241,8 @@ const registerRailWaysRecipes = (event) => {
// Монорельс // Монорельс
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
'6x railways:track_monorail', '4x railways:track_monorail',
], 'create:metal_girder', [ ], 'create:metal_girder', [
event.recipes.createDeploying('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail', 'create:metal_bracket']),
event.recipes.createDeploying('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail', '#forge:plates/wrought_iron']), event.recipes.createDeploying('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail', '#forge:plates/wrought_iron']),
event.recipes.createPressing('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail']), event.recipes.createPressing('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail']),
event.recipes.createDeploying('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail', '#forge:plates/wrought_iron']), event.recipes.createDeploying('railways:track_incomplete_monorail', ['railways:track_incomplete_monorail', '#forge:plates/wrought_iron']),
@ -252,122 +251,113 @@ const registerRailWaysRecipes = (event) => {
event.recipes.gtceu.assembler('railways/monorail') event.recipes.gtceu.assembler('railways/monorail')
.itemInputs('create:metal_girder', '2x #forge:plates/wrought_iron') .itemInputs('create:metal_girder', '2x #forge:plates/wrought_iron')
.itemOutputs('6x railways:track_monorail') .itemOutputs('4x railways:track_monorail')
.duration(250) .duration(250)
.EUt(32) .EUt(32)
// Железнодорожное полотно (Узкое) // Железнодорожное полотно (Узкое)
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
'railways:track_create_andesite_narrow', '8x railways:track_create_andesite_narrow',
], '#tfg:rock_slabs', [ ], '#tfg:rock_slabs', [
event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', 'gtceu:steel_nugget']), event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', 'gtceu:steel_rod']),
event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', 'gtceu:steel_nugget']), event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', '#tfc:mortar']),
event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', 'gtceu:steel_nugget']),
event.recipes.createDeploying('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow', 'gtceu:steel_nugget']),
event.recipes.createPressing('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow']), event.recipes.createPressing('railways:track_incomplete_create_andesite_narrow', ['railways:track_incomplete_create_andesite_narrow']),
]).transitionalItem('railways:track_incomplete_create_andesite_narrow').loops(1).id('tfg:railways/sequenced_assembly/track_create_andesite_narrow_from_steel') ]).transitionalItem('railways:track_incomplete_create_andesite_narrow').loops(2).id('tfg:railways/sequenced_assembly/track_create_andesite_narrow_from_steel')
event.recipes.gtceu.assembler('railways/track_create_andesite_narrow_from_steel') event.recipes.gtceu.assembler('railways/track_create_andesite_narrow_from_steel')
.itemInputs('#tfg:rock_slabs', '4x gtceu:steel_nugget') .itemInputs('#tfg:rock_slabs', '2x gtceu:steel_rod')
.itemOutputs('railways:track_create_andesite_narrow') .inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs('8x railways:track_create_andesite_narrow')
.duration(800) .duration(800)
.EUt(32) .EUt(16)
.circuit(1)
// Железнодорожное полотно (Нормальное) // Железнодорожное полотно (Нормальное)
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
'create:track', '8x create:track',
], 'railways:track_create_andesite_narrow', [ ], '#tfg:rock_slabs', [
event.recipes.createCutting('create:incomplete_track', 'create:incomplete_track').processingTime(100),
event.recipes.createDeploying('create:incomplete_track', ['create:incomplete_track', '#tfg:rock_slabs']), event.recipes.createDeploying('create:incomplete_track', ['create:incomplete_track', '#tfg:rock_slabs']),
event.recipes.createDeploying('create:incomplete_track', ['create:incomplete_track', 'gtceu:steel_rod']),
event.recipes.createDeploying('create:incomplete_track', ['create:incomplete_track', '#tfc:mortar']), event.recipes.createDeploying('create:incomplete_track', ['create:incomplete_track', '#tfc:mortar']),
event.recipes.createPressing('create:incomplete_track', ['create:incomplete_track']), event.recipes.createPressing('create:incomplete_track', ['create:incomplete_track']),
]).transitionalItem('create:incomplete_track').loops(1).id('tfg:railways/sequenced_assembly/track_create_andesite') ]).transitionalItem('create:incomplete_track').loops(2).id('tfg:railways/sequenced_assembly/track_create_andesite')
event.recipes.gtceu.assembler('railways/track') event.recipes.gtceu.assembler('railways/track')
.itemInputs('railways:track_create_andesite_narrow') .itemInputs('3x #tfg:rock_slabs', '2x gtceu:steel_rod')
.inputFluids(Fluid.of('gtceu:concrete', 144)) .inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs('create:track') .itemOutputs('8x create:track')
.duration(800) .duration(800)
.EUt(16) .EUt(16)
.circuit(2)
// Железнодорожное полотно (Широкое) // Железнодорожное полотно (Широкое)
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
'railways:track_create_andesite_wide', '8x railways:track_create_andesite_wide',
], 'create:track', [ ], '#tfg:rock_slabs', [
event.recipes.createCutting('railways:track_incomplete_create_andesite_wide', 'railways:track_incomplete_create_andesite_wide').processingTime(100), event.recipes.createDeploying('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide', '#forge:stone']),
event.recipes.createDeploying('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide', '#tfg:rock_slabs']), event.recipes.createDeploying('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide', 'gtceu:steel_rod']),
event.recipes.createDeploying('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide', '#tfc:mortar']), event.recipes.createDeploying('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide', '#tfc:mortar']),
event.recipes.createPressing('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide']), event.recipes.createPressing('railways:track_incomplete_create_andesite_wide', ['railways:track_incomplete_create_andesite_wide']),
]).transitionalItem('railways:track_incomplete_create_andesite_wide').loops(1).id('tfg:railways/sequenced_assembly/track_create_andesite_wide') ]).transitionalItem('railways:track_incomplete_create_andesite_wide').loops(2).id('tfg:railways/sequenced_assembly/track_create_andesite_wide')
event.recipes.gtceu.assembler('railways/track_create_andesite_wide') event.recipes.gtceu.assembler('railways/track_create_andesite_wide')
.itemInputs('create:track') .itemInputs('5x #tfg:rock_slabs', '2x gtceu:steel_rod')
.inputFluids(Fluid.of('gtceu:concrete', 144)) .inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs('railways:track_create_andesite_wide') .itemOutputs('8x railways:track_create_andesite_wide')
.duration(800) .duration(800)
.EUt(16) .EUt(16)
.circuit(3)
// Железнодородные полотна из дерева // Железнодородные полотна из дерева
global.TFC_WOOD_TYPES.forEach(woodType => { global.TFC_WOOD_TYPES.forEach(woodType => {
// Узкое // Узкое
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
`railways:track_tfc_${woodType}_narrow`, `8x railways:track_tfc_${woodType}_narrow`,
], `tfc:wood/planks/${woodType}_slab`, [ ], `tfc:wood/planks/${woodType}_slab`, [
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, 'gtceu:steel_nugget']), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, 'gtceu:steel_rod']),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, 'gtceu:steel_nugget']), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, '#forge:screws']),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, 'gtceu:steel_nugget']),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, 'gtceu:steel_nugget']),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`, '4x #forge:screws']),
event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`]), event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}_narrow`, [`railways:track_incomplete_tfc_${woodType}_narrow`]),
]).transitionalItem(`railways:track_incomplete_tfc_${woodType}_narrow`).loops(1).id(`tfg:railways/sequenced_assembly/track_create_${woodType}_narrow`) ]).transitionalItem(`railways:track_incomplete_tfc_${woodType}_narrow`).loops(2).id(`tfg:railways/sequenced_assembly/track_create_${woodType}_narrow`)
event.recipes.gtceu.assembler(`railways/track_create_${woodType}_narrow`) event.recipes.gtceu.assembler(`railways/track_create_${woodType}_narrow`)
.itemInputs(`tfc:wood/planks/${woodType}_slab`, '4x gtceu:steel_nugget', '4x #forge:screws') .itemInputs(`tfc:wood/planks/${woodType}_slab`, '2x gtceu:steel_rod', '2x #forge:screws')
.itemOutputs(`railways:track_tfc_${woodType}_narrow`) .itemOutputs(`8x railways:track_tfc_${woodType}_narrow`)
.duration(800) .duration(800)
.EUt(32) .EUt(16)
.circuit(1)
// Нормальное // Нормальное
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
`railways:track_tfc_${woodType}`, `8x railways:track_tfc_${woodType}`,
], `railways:track_tfc_${woodType}_narrow`, [ ], `tfc:wood/planks/${woodType}_slab`, [
event.recipes.createCutting(`railways:track_incomplete_tfc_${woodType}`, `railways:track_incomplete_tfc_${woodType}`).processingTime(100), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`, `tfc:wood/lumber/${woodType}`]),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`, `tfc:wood/planks/${woodType}_slab`]), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`, 'gtceu:steel_rod']),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`, '4x #forge:screws']), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`, '#forge:screws']),
event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`]), event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}`, [`railways:track_incomplete_tfc_${woodType}`]),
]).transitionalItem(`railways:track_incomplete_tfc_${woodType}`).loops(1).id(`tfg:railways/sequenced_assembly/track_create_${woodType}`) ]).transitionalItem(`railways:track_incomplete_tfc_${woodType}`).loops(2).id(`tfg:railways/sequenced_assembly/track_create_${woodType}`)
event.recipes.gtceu.assembler(`railways/track_${woodType}`) event.recipes.gtceu.assembler(`railways/track_${woodType}`)
.itemInputs(`railways:track_tfc_${woodType}_narrow`, '4x #forge:screws') .itemInputs(`tfc:wood/planks/${woodType}_slab`, `2x tfc:wood/lumber/${woodType}`, '2x gtceu:steel_rod', '2x #forge:screws')
.itemOutputs(`railways:track_tfc_${woodType}`) .itemOutputs(`8x railways:track_tfc_${woodType}`)
.duration(800) .duration(800)
.EUt(16) .EUt(16)
.circuit(2)
// Широкое // Широкое
event.recipes.createSequencedAssembly([ event.recipes.createSequencedAssembly([
`railways:track_tfc_${woodType}_wide`, `8x railways:track_tfc_${woodType}_wide`,
], `railways:track_tfc_${woodType}`, [ ], `tfc:wood/planks/${woodType}_slab`, [
event.recipes.createCutting(`railways:track_incomplete_tfc_${woodType}_wide`, `railways:track_incomplete_tfc_${woodType}_wide`).processingTime(100),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`, `tfc:wood/planks/${woodType}_slab`]), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`, `tfc:wood/planks/${woodType}_slab`]),
event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`, '4x #forge:screws']), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`, `gtceu:steel_rod`]),
event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`]), event.recipes.createDeploying(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`, '#forge:screws']),
]).transitionalItem(`railways:track_incomplete_tfc_${woodType}_wide`).loops(1).id(`tfg:railways/sequenced_assembly/track_create_${woodType}_wide`) event.recipes.createPressing(`railways:track_incomplete_tfc_${woodType}_wide`, [`railways:track_incomplete_tfc_${woodType}_wide`])
]).transitionalItem(`railways:track_incomplete_tfc_${woodType}_wide`).loops(2).id(`tfg:railways/sequenced_assembly/track_create_${woodType}_wide`)
event.recipes.gtceu.assembler(`railways/track_${woodType}_wide`) event.recipes.gtceu.assembler(`railways/track_${woodType}_wide`)
.itemInputs(`railways:track_tfc_${woodType}`, '4x #forge:screws') .itemInputs(`3x tfc:wood/planks/${woodType}_slab`, '2x gtceu:steel_rod', '2x #forge:screws')
.itemOutputs(`railways:track_tfc_${woodType}_wide`) .itemOutputs(`8x railways:track_tfc_${woodType}_wide`)
.duration(800) .duration(800)
.EUt(16) .EUt(16)
.circuit(3)
}); });
} }
/*
event.recipes.gtceu.assembler('')
.itemInputs('')
.itemOutputs('')
.duration()
.EUt()
*/

View file

@ -1579,49 +1579,28 @@ const registerTFCRecipes = (event) => {
//#region Земля //#region Земля
// Loam + Silt -> Silty Loam (Миксер) // Loam + Silt -> Silty Loam (Миксер)
event.recipes.gtceu.mixer('silty_loam_dirt') event.recipes.gtceu.mixer('silty_loam_dirt')
.itemInputs('tfc:dirt/loam', 'tfc:dirt/silt') .itemInputs('tfc:dirt/loam', 'tfc:dirt/silt')
.itemOutputs('tfc:dirt/silty_loam') .itemOutputs('tfc:dirt/silty_loam')
.duration(1600) .duration(200)
.EUt(12) .EUt(16)
// Silty Loam + Sticks -> Rooted Silty Loam (Миксер)
event.recipes.gtceu.mixer('rooted_silty_loam_dirt')
.itemInputs('tfc:dirt/silty_loam', '#tfc:can_be_lit_on_torch')
.itemOutputs('tfc:rooted_dirt/silty_loam')
.duration(1600)
.EUt(12)
// Loam + Sand -> Sandy Loam (Миксер) // Loam + Sand -> Sandy Loam (Миксер)
event.recipes.gtceu.mixer('sandy_loam_dirt') event.recipes.gtceu.mixer('sandy_loam_dirt')
.itemInputs('tfc:dirt/loam', '#forge:sand') .itemInputs('tfc:dirt/loam', '#forge:sand')
.circuit(3)
.itemOutputs('tfc:dirt/sandy_loam') .itemOutputs('tfc:dirt/sandy_loam')
.duration(1600) .duration(200)
.EUt(12) .EUt(16)
// Loam + Silt -> Silty Loam (Create Миксер) // Dirt + Sticks -> Rooted Dirt
event.recipes.gtceu.create_mixer('silty_loam_dirt') global.TFC_MUD_TYPES.forEach(mud => {
.itemInputs('tfc:dirt/loam', 'tfc:dirt/silt') event.recipes.gtceu.mixer(`${mud}_to_rooted`)
.itemOutputs('tfc:dirt/silty_loam') .itemInputs(`tfc:dirt/${mud}`, "#tfc:can_be_lit_on_torch")
.duration(1600) .itemOutputs(`tfc:rooted_dirt/${mud}`)
.EUt(12) .duration(200)
.rpm(60) .EUt(16)
})
// Silty Loam + Sticks -> Rooted Silty Loam (Create Миксер)
event.recipes.gtceu.create_mixer('rooted_silty_loam_dirt')
.itemInputs('tfc:dirt/silty_loam', '#tfc:can_be_lit_on_torch')
.itemOutputs('tfc:rooted_dirt/silty_loam')
.duration(1600)
.EUt(12)
.rpm(60)
// Loam + Sand -> Sandy Loam (Create Миксер)
event.recipes.gtceu.create_mixer('sandy_loam_dirt')
.itemInputs('tfc:dirt/loam', '#forge:sand')
.itemOutputs('tfc:dirt/sandy_loam')
.duration(1600)
.EUt(12)
.rpm(60)
global.TFC_MUD_TYPES.forEach(mud => { global.TFC_MUD_TYPES.forEach(mud => {
event.smelting(`tfc:dirt/${mud}`, `tfc:mud/${mud}`) event.smelting(`tfc:dirt/${mud}`, `tfc:mud/${mud}`)
@ -1637,6 +1616,7 @@ const registerTFCRecipes = (event) => {
event.recipes.gtceu.mixer(`${mud}_grass_to_mud`) event.recipes.gtceu.mixer(`${mud}_grass_to_mud`)
.itemInputs(`tfc:dirt/${mud}`) .itemInputs(`tfc:dirt/${mud}`)
.inputFluids(Fluid.of('minecraft:water', 100)) .inputFluids(Fluid.of('minecraft:water', 100))
.circuit(2)
.itemOutputs(`tfc:mud/${mud}`) .itemOutputs(`tfc:mud/${mud}`)
.duration(200) .duration(200)
.EUt(16) .EUt(16)
@ -3001,6 +2981,7 @@ const registerTFCRecipes = (event) => {
.itemOutputs(element.output) .itemOutputs(element.output)
.duration(300) .duration(300)
.EUt(16) .EUt(16)
.circuit(3)
}) })
//#endregion //#endregion

View file

@ -54,6 +54,9 @@ const registerTFCItemTags = (event) => {
event.add('minecraft:logs_that_burn', `#tfc:${woodType}_logs`) event.add('minecraft:logs_that_burn', `#tfc:${woodType}_logs`)
}) })
// Allows TFC stick bundles to be burned in the coke/pyrolyse ovens
event.add("minecraft:logs_that_burn", "tfc:stick_bundle");
// Определеяет какое оружие может появиться у зомбя/скелета в руках // Определеяет какое оружие может появиться у зомбя/скелета в руках
// Мечи // Мечи
event.add('tfc:mob_mainhand_weapons', 'gtceu:bismuth_bronze_sword') event.add('tfc:mob_mainhand_weapons', 'gtceu:bismuth_bronze_sword')

View file

@ -0,0 +1,21 @@
// priority: 0
const registerTFCAmbientalItemTags = (event) => {
event.add('minecraft:trimmable_armor', 'tfcambiental:wool_hat')
event.add('minecraft:trimmable_armor', 'tfcambiental:wool_sweater')
event.add('minecraft:trimmable_armor', 'tfcambiental:wool_pants')
event.add('minecraft:trimmable_armor', 'tfcambiental:wool_boots')
event.add('minecraft:trimmable_armor', 'tfcambiental:silk_cowl')
event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shirt')
event.add('minecraft:trimmable_armor', 'tfcambiental:silk_pants')
event.add('minecraft:trimmable_armor', 'tfcambiental:silk_shoes')
event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_cowl')
event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shirt')
event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_pants')
event.add('minecraft:trimmable_armor', 'tfcambiental:burlap_shoes')
event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_hat')
event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_tunic')
event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_pants')
event.add('minecraft:trimmable_armor', 'tfcambiental:insulated_leather_boots')
}

View file

@ -322,33 +322,20 @@ global.CREATE_DISABLED_ITEMS = [
'create:granite_pillar', 'create:granite_pillar',
// Shit Glass // Shit Glass
'create:tiled_glass', 'create:crimson_window',
'create:framed_glass', 'create:warped_window',
'create:horizontal_framed_glass',
'create:vertical_framed_glass',
'create:tiled_glass_pane',
'create:horizontal_framed_glass_pane',
'create:vertical_framed_glass_pane',
'create:oak_window', 'create:oak_window',
'create:spruce_window', 'create:spruce_window',
'create:birch_window', 'create:birch_window',
'create:jungle_window', 'create:jungle_window',
'create:acacia_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:oak_window_pane',
'create:spruce_window_pane', 'create:spruce_window_pane',
'create:birch_window_pane', 'create:birch_window_pane',
'create:jungle_window_pane', 'create:jungle_window_pane',
'create:acacia_window_pane', 'create:acacia_window_pane',
'create:dark_oak_window_pane', 'create:crimson_window_pane',
'create:mangrove_window_pane',
'create:crimson_window_pane',
'create:warped_window_pane', 'create:warped_window_pane',
'create:ornate_iron_window_pane',
// Blocks // Blocks
'create:zinc_block', 'create:zinc_block',
@ -468,6 +455,5 @@ global.CREATE_DISABLED_ITEMS = [
'create:empty_blaze_burner', 'create:empty_blaze_burner',
'create:minecart_contraption', 'create:minecart_contraption',
'create:furnace_minecart_contraption', 'create:furnace_minecart_contraption',
'create:chest_minecart_contraption', 'create:chest_minecart_contraption'
'create:framed_glass_pane' ];
];

View file

@ -33,8 +33,7 @@ global.FIRMALIFE_DISABLED_ITEMS = [
'firmalife:metal/block/stainless_steel_slab', 'firmalife:metal/block/stainless_steel_slab',
// Other // Other
'firmalife:compost_tumbler', 'firmalife:compost_tumbler'
'firmalife:pumping_station'
]; ];
global.FIRMALIFE_HIDED_ITEMS = [ 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/rice_dough', output: 'firmalife:food/rice_flatbread', name: 'rice_flatbread' },
{ input: 'tfc:food/wheat_dough', output: 'firmalife:food/wheat_flatbread', name: 'wheat_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' }, { input: 'firmalife:food/masa', output: 'firmalife:food/corn_tortilla', name: 'corn_tortilla' },
]; ];

View file

@ -52,4 +52,22 @@ global.GTCEU_HIDED_ITEMS = [
'gtceu:netherrack_dust', 'gtceu:netherrack_dust',
'gtceu:small_netherrack_dust', 'gtceu:small_netherrack_dust',
'gtceu:tiny_netherrack_dust' 'gtceu:tiny_netherrack_dust'
]; ];
global.GTCEU_ARMORS = [
'gtceu:hazmat_chestpiece',
'gtceu:hazmat_leggings',
'gtceu:hazmat_boots',
'gtceu:hazmat_headpiece',
'gtceu:nanomuscle_chestplate',
'gtceu:nanomuscle_leggings',
'gtceu:nanomuscle_boots',
'gtceu:nanomuscle_helmet',
// typo in gtceu
'gtceu:avanced_nanomuscle_chestplate',
'gtceu:quarktech_chestplate',
'gtceu:quarktech_leggings',
'gtceu:quarktech_boots',
'gtceu:quarktech_helmet',
'gtceu:advanced_quarktech_chestplate'
];

View file

@ -491,23 +491,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:burn_pottery_sherd', 'minecraft:burn_pottery_sherd',
// Шаблоны брони // Шаблоны брони
/*'minecraft:wayfinder_armor_trim_smithing_template', 'minecraft:netherite_upgrade_smithing_template',
'minecraft:dune_armor_trim_smithing_template',
'minecraft:snout_armor_trim_smithing_template',
'minecraft:shaper_armor_trim_smithing_template',
'minecraft:coast_armor_trim_smithing_template',
'minecraft:vex_armor_trim_smithing_template',
'minecraft:host_armor_trim_smithing_template',
'minecraft:rib_armor_trim_smithing_template',
'minecraft:silence_armor_trim_smithing_template',
'minecraft:spire_armor_trim_smithing_template',
'minecraft:tide_armor_trim_smithing_template',
'minecraft:eye_armor_trim_smithing_template',
'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:netherite_upgrade_smithing_template',
// Свечи // Свечи
'minecraft:candle', 'minecraft:candle',

View file

@ -22,6 +22,9 @@ global.RAIL_WAYS_DISABLED_ITEMS = [
'railways:track_ender', 'railways:track_ender',
'railways:track_phantom', 'railways:track_phantom',
'railways:track_mangrove', 'railways:track_mangrove',
'railways:track_cherry',
'railways:track_bamboo',
'railways:track_stripped_bamboo',
'railways:track_oak_wide', 'railways:track_oak_wide',
'railways:track_warped_wide', 'railways:track_warped_wide',
'railways:track_spruce_wide', 'railways:track_spruce_wide',
@ -33,10 +36,16 @@ global.RAIL_WAYS_DISABLED_ITEMS = [
'railways:track_jungle_wide', 'railways:track_jungle_wide',
'railways:track_mangrove_wide', 'railways:track_mangrove_wide',
'railways:track_crimson_wide', 'railways:track_crimson_wide',
'railways:track_cherry_wide',
'railways:track_bamboo_wide',
'railways:track_stripped_bamboo_wide',
'railways:track_oak_narrow', 'railways:track_oak_narrow',
'railways:track_spruce_narrow', 'railways:track_spruce_narrow',
'railways:track_warped_narrow', 'railways:track_warped_narrow',
'railways:track_acacia_narrow', 'railways:track_acacia_narrow',
'railways:track_cherry_narrow',
'railways:track_bamboo_narrow',
'railways:track_stripped_bamboo_narrow',
// Возможно включим позже // Возможно включим позже
'railways:track_tieless', 'railways:track_tieless',
'railways:track_tieless_narrow', 'railways:track_tieless_narrow',
@ -62,6 +71,9 @@ global.RAIL_WAYS_DISABLED_ITEMS = [
'railways:track_incomplete_ender', 'railways:track_incomplete_ender',
'railways:track_incomplete_phantom', 'railways:track_incomplete_phantom',
'railways:track_incomplete_mangrove', 'railways:track_incomplete_mangrove',
'railways:track_incomplete_cherry',
'railways:track_incomplete_bamboo',
'railways:track_incomplete_stripped_bamboo',
'railways:track_incomplete_oak_wide', 'railways:track_incomplete_oak_wide',
'railways:track_incomplete_warped_wide', 'railways:track_incomplete_warped_wide',
'railways:track_incomplete_spruce_wide', 'railways:track_incomplete_spruce_wide',
@ -73,10 +85,16 @@ global.RAIL_WAYS_DISABLED_ITEMS = [
'railways:track_incomplete_jungle_wide', 'railways:track_incomplete_jungle_wide',
'railways:track_incomplete_mangrove_wide', 'railways:track_incomplete_mangrove_wide',
'railways:track_incomplete_crimson_wide', 'railways:track_incomplete_crimson_wide',
'railways:track_incomplete_cherry_wide',
'railways:track_incomplete_bamboo_wide',
'railways:track_incomplete_stripped_bamboo_wide',
'railways:track_incomplete_oak_narrow', 'railways:track_incomplete_oak_narrow',
'railways:track_incomplete_spruce_narrow', 'railways:track_incomplete_spruce_narrow',
'railways:track_incomplete_warped_narrow', 'railways:track_incomplete_warped_narrow',
'railways:track_incomplete_acacia_narrow', 'railways:track_incomplete_acacia_narrow',
'railways:track_incomplete_cherry_narrow',
'railways:track_incomplete_bamboo_narrow',
'railways:track_incomplete_stripped_bamboo_narrow',
// Возможно включим позже // Возможно включим позже
'railways:track_incomplete_tieless', 'railways:track_incomplete_tieless',
'railways:track_incomplete_tieless_narrow', 'railways:track_incomplete_tieless_narrow',
@ -122,4 +140,4 @@ global.RAIL_WAYS_DISABLED_ITEMS = [
'railways:conductor_vent', 'railways:conductor_vent',
'railways:jukeboxcart', 'railways:jukeboxcart',
'railways:benchcart' 'railways:benchcart'
]; ];