From a936958583a13a6a07e204bc2d99c233d5600595 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Mon, 1 Dec 2025 18:28:47 +0000 Subject: [PATCH 01/26] fixed warped/crimson trees only growing on mars mycelium and not mars dirt --- CHANGELOG.md | 1 + .../configured_feature/mars/tree/crimson.json | 3 ++- .../mars/tree/crimson_dirt.json | 25 +++++++++++++++++++ .../configured_feature/mars/tree/warped.json | 3 ++- .../mars/tree/warped_dirt.json | 25 +++++++++++++++++++ .../mars/tree/crimson_dirt.json | 4 +++ .../placed_feature/mars/tree/warped_dirt.json | 4 +++ 7 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json create mode 100644 kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json create mode 100644 kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json create mode 100644 kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a3beeb00..a4f476289 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -45,6 +45,7 @@ - Hopefully fixed rockets without a pilot getting stuck and not exploding? (#2137) @Pyritie - Fixed some missing blocks from the GT facade whitelist (#2299) @MoltonMontro - Changed the texture of the ME Stocking Input Bus + Hatch to match the hull used to craft them @Pyritie +- Fixed warped/crimson trees only growing on mars mycelium and not mars dirt @Pyritie ### Translation updates - Chinese (simplified) @jmecn - Japanese @sakura-gondra diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json index 40b85088f..7c0687012 100644 --- a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson.json @@ -4,7 +4,8 @@ "features": [ "tfg:mars/tree/crimson_amber", "tfg:mars/tree/crimson_rusticus", - "tfg:mars/tree/crimson_sangnum" + "tfg:mars/tree/crimson_sangnum", + "tfg:mars/tree/crimson_dirt" ] } } \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json new file mode 100644 index 000000000..2d006ee26 --- /dev/null +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/crimson_dirt.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:huge_fungus", + "config": { + "decor_state": { + "Name": "beneath:wood/leaves/crimson" + }, + "hat_state": { + "Name": "minecraft:nether_wart_block" + }, + "planted": false, + "replaceable_blocks": { + "type": "minecraft:replaceable" + }, + "stem_state": { + "Name": "beneath:wood/log/crimson", + "Properties": { + "axis": "y", + "branch_direction": "down" + } + }, + "valid_base_block": { + "Name": "tfg:grass/mars_dirt" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json index ae09354ad..4efc472cf 100644 --- a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped.json @@ -4,7 +4,8 @@ "features": [ "tfg:mars/tree/warped_amber", "tfg:mars/tree/warped_rusticus", - "tfg:mars/tree/warped_sangnum" + "tfg:mars/tree/warped_sangnum", + "tfg:mars/tree/warped_dirt" ] } } \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json new file mode 100644 index 000000000..2b5789a94 --- /dev/null +++ b/kubejs/data/tfg/worldgen/configured_feature/mars/tree/warped_dirt.json @@ -0,0 +1,25 @@ +{ + "type": "minecraft:huge_fungus", + "config": { + "decor_state": { + "Name": "beneath:wood/leaves/warped" + }, + "hat_state": { + "Name": "minecraft:warped_wart_block" + }, + "planted": false, + "replaceable_blocks": { + "type": "minecraft:replaceable" + }, + "stem_state": { + "Name": "beneath:wood/log/warped", + "Properties": { + "axis": "y", + "branch_direction": "down" + } + }, + "valid_base_block": { + "Name": "tfg:grass/mars_dirt" + } + } +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json new file mode 100644 index 000000000..3aae30456 --- /dev/null +++ b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/crimson_dirt.json @@ -0,0 +1,4 @@ +{ + "feature": "tfg:mars/tree/crimson_dirt", + "placement": [] +} \ No newline at end of file diff --git a/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json new file mode 100644 index 000000000..349608694 --- /dev/null +++ b/kubejs/data/tfg/worldgen/placed_feature/mars/tree/warped_dirt.json @@ -0,0 +1,4 @@ +{ + "feature": "tfg:mars/tree/warped_amber", + "placement": [] +} \ No newline at end of file From 7abe083973df094b49ac6759cc74c103ee39dbf8 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Mon, 1 Dec 2025 21:37:09 +0000 Subject: [PATCH 02/26] fix create horsepower being completely broken --- CHANGELOG.md | 1 + defaultconfigs/createhorsepower-server.toml | 66 ++++++++++----------- 2 files changed, 34 insertions(+), 33 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4f476289..b01017c23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,7 @@ - Added fluid/item capacity tooltips to many fluid/item containers @Pyritie - Spring water is now drinkable (it also heats you up a little) @Pyritie ### Bug fixes +- Fixed the horse crank not working at all @Pyritie - Fixed brown gravy recipe @Redeix - Fixed instant mac recipe requiring less cardboard than it gives back @Redeix - Fixed Ad Astra moon cheese nutrition values being inconsistent @Redeix diff --git a/defaultconfigs/createhorsepower-server.toml b/defaultconfigs/createhorsepower-server.toml index 84f77de94..521d4e8b8 100644 --- a/defaultconfigs/createhorsepower-server.toml +++ b/defaultconfigs/createhorsepower-server.toml @@ -1,34 +1,34 @@ - -#General Settings -[general] - #Base rpm creatures can spin the horse crank. - #Range: > 1 - creatureRPMRange = 16 - #How much stress small creatures can produce for the horse crank. - #Range: > 1 - smallCreatureStressRange = 8 - #How much stress medium creatures can produce for the horse crank. - #Range: > 1 - mediumCreatureStressRange = 12 - #How much stress large creatures can produce for the horse crank. - #Range: > 1 - largeCreatureStressRange = 16 - -#Path Category -[paths] - #Types of blocks valid as "Poor" quality, - poor_path_block = ["tfc:rooted_dirt/sandy_loam", "tfc:clay/sandy_loam", "tfc:dirt/sandy_loam", "tfc:rooted_dirt/loam", "tfc:clay/loam", "tfc:clay/silt", "tfc:dirt/loam", "tfc:rooted_dirt/silt", "tfc:dirt/silt", "tfc:dirt/silty_loam", "tfc:clay/silty_loam", "tfc:rooted_dirt/silty_loam", "tfc:peat_grass", "tfc:clay_grass/silty_loam", "tfc:grass/silty_loam", "tfc:clay_grass/sandy_loam", "tfc:grass/sandy_loam", "tfc:clay_grass/loam", "tfc:grass/loam", "tfc:clay_grass/silt", "tfc:grass/silt", "tfg:grass/mars_dirt", "tfg:grass/sangnum_mycelium", "tfg:grass/amber_mycelium", "tfg:grass/rusticus_mycelium", "tfg:grass/sangnum_clay_mycelium", "tfg:grass/amber_clay_mycelium", "tfg:grass/rusticus_clay_mycelium", "tfg:grass/sangnum_kaolin_mycelium", "tfg:grass/amber_kaolin_mycelium", "tfg:grass/rusticus_kaolin_mycelium"] - #Types of blocks valid as "Normal" quality, - normal_path_block = ["tfc:rock/gravel/granite", "tfc:rock/gravel/diorite", "tfc:rock/gravel/gabbro", "tfc:rock/gravel/shale", "tfc:rock/gravel/claystone", "tfc:rock/gravel/limestone", "tfc:rock/gravel/conglomerate", "tfc:rock/gravel/dolomite", "tfc:rock/gravel/chert", "tfc:rock/gravel/schist", "tfc:rock/gravel/phyllite", "tfc:rock/gravel/slate", "tfc:rock/gravel/quartzite", "tfc:rock/gravel/dacite", "tfc:rock/gravel/andesite", "tfc:rock/gravel/basalt", "tfc:rock/gravel/rhyolite", "tfc:rock/gravel/chalk", "tfc:rock/gravel/marble", "tfg:rock/gravel_dripstone", "tfg:rock/gravel_deepslate", "tfg:rock/gravel_blackstone", "tfg:rock/gravel_moon", "tfg:rock/gravel_moon_deepslate", "tfg:rock/gravel_glacio", "tfg:rock/gravel_mars", "tfg:rock/gravel_venus", "tfg:rock/gravel_mercury", "tfg:rock/gravel_crackrack", "tfc:grass_path/silt", "tfc:grass_path/loam", "tfc:grass_path/sandy_loam", "tfc:grass_path/silty_loam", "tfg:grass/mars_path", "rnr:hoggin"] - #Types of blocks valid as "Great" quality, - great_path_block = ["rnr:rock/gravel_road/chert", "rnr:rock/gravel_road/chalk", "rnr:rock/gravel_road/rhyolite", "rnr:rock/gravel_road/basalt", "rnr:rock/gravel_road/andesite", "rnr:rock/gravel_road/claystone", "rnr:rock/gravel_road/limestone", "rnr:rock/gravel_road/conglomerate", "rnr:rock/gravel_road/dolomite", "rnr:rock/sett_road/granite", "rnr:rock/sett_road/diorite", "rnr:rock/sett_road/chalk", "rnr:rock/sett_road/rhyolite", "rnr:rock/sett_road/basalt", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/sett_road/andesite", "rnr:rock/cobbled_road/chert", "rnr:rock/cobbled_road/dolomite", "rnr:rock/gravel_road/granite", "rnr:rock/gravel_road/marble", "rnr:rock/gravel_road/schist", "rnr:rock/gravel_road/phyllite", "rnr:rock/gravel_road/slate", "rnr:rock/gravel_road/quartzite", "rnr:rock/gravel_road/dacite", "rnr:rock/macadam_road/rhyolite", "rnr:rock/macadam_road/chalk", "rnr:rock/macadam_road/chert", "rnr:rock/macadam_road/dolomite", "rnr:rock/macadam_road/conglomerate", "rnr:rock/macadam_road/limestone", "rnr:rock/macadam_road/gabbro", "rnr:rock/macadam_road/claystone", "rnr:rock/macadam_road/shale", "rnr:rock/macadam_road/gneiss", "rnr:rock/macadam_road/marble", "rnr:rock/macadam_road/schist", "rnr:rock/macadam_road/phyllite", "rnr:rock/macadam_road/slate", "rnr:rock/macadam_road/quartzite", "rnr:rock/macadam_road/dacite", "rnr:rock/macadam_road/andesite", "rnr:rock/macadam_road/basalt", "rnr:rock/gravel_road/diorite", "rnr:rock/gravel_road/gabbro", "rnr:rock/gravel_road/shale", "rnr:rock/macadam_road/diorite", "rnr:rock/macadam_road/granite", "rnr:rock/cobbled_road/conglomerate", "rnr:rock/cobbled_road/limestone", "rnr:rock/cobbled_road/claystone", "rnr:rock/cobbled_road/shale", "rnr:rock/cobbled_road/gabbro", "rnr:rock/cobbled_road/diorite", "rnr:rock/cobbled_road/granite", "rnr:rock/cobbled_road/phyllite", "rnr:rock/cobbled_road/schist", "rnr:rock/cobbled_road/slate", "rnr:rock/cobbled_road/quartzite", "rnr:rock/cobbled_road/dacite", "rnr:rock/cobbled_road/andesite", "rnr:rock/cobbled_road/rhyolite", "rnr:rock/cobbled_road/basalt", "rnr:rock/cobbled_road/chalk", "rnr:rock/cobbled_road/gneiss", "rnr:rock/cobbled_road/marble", "rnr:rock/sett_road/chert", "rnr:rock/sett_road/dolomite", "rnr:rock/sett_road/conglomerate", "rnr:rock/sett_road/limestone", "rnr:rock/sett_road/claystone", "rnr:rock/sett_road/shale", "rnr:rock/sett_road/gabbro", "rnr:rock/flagstones/gneiss", "rnr:rock/flagstones/marble", "rnr:black_sandstone_flagstones", "rnr:brown_sandstone_flagstones", "rnr:green_sandstone_flagstones", "rnr:pink_sandstone_flagstones", "rnr:red_sandstone_flagstones", "rnr:white_sandstone_flagstones", "rnr:yellow_sandstone_flagstones", "rnr:concrete_road_sett", "rnr:brick_road", "rnr:rock/sett_road/marble", "rnr:rock/sett_road/gneiss", "rnr:rock/sett_road/schist", "rnr:rock/sett_road/phyllite", "rnr:rock/sett_road/slate", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/flagstones/chert", "rnr:rock/flagstones/dolomite", "rnr:rock/flagstones/conglomerate", "rnr:rock/flagstones/limestone", "rnr:rock/flagstones/claystone", "rnr:rock/flagstones/shale", "rnr:rock/flagstones/gabbro", "rnr:rock/flagstones/diorite", "rnr:rock/flagstones/granite", "rnr:rock/flagstones/schist", "rnr:rock/flagstones/phyllite", "rnr:rock/flagstones/slate", "rnr:rock/flagstones/quartzite", "rnr:rock/flagstones/andesite", "rnr:rock/flagstones/dacite", "rnr:rock/flagstones/basalt", "rnr:rock/flagstones/rhyolite", "rnr:rock/flagstones/chalk"] - -#Creature Category -[workers] - #Valid "Small" creatures - small_creatures = ["tfc:wolf", "tfc:dog", "tfc:pig", "tfc:sheep", "tfc:goat", "tfc:alpaca", "tfg:glacian_ram", "tfg:wraptor", "species:springaling", "tfg:surfer"] - #Valid "Medium" creatures - medium_creatures = ["tfc:cow", "tfc:donkey", "tfc:dolphin", "wan_ancient_beasts:glider", "wan_ancient_beasts:soarer"] - #Valid "Large" creatures - large_creatures = ["tfc:horse", "tfc:mule", "tfc:musk_ox", "tfc:yak", "tfg:sniffer", "wan_ancient_beasts:walker", "species:cruncher"] +#Base rpm creatures can spin the horse crank. +#Range: > 1 +creatureRPMRange = 16 +#How much stress small creatures can produce for the horse crank. +#Range: > 1 +smallCreatureStressRange = 8 +#How much stress medium creatures can produce for the horse crank. +#Range: > 1 +mediumCreatureStressRange = 12 +#How much stress large creatures can produce for the horse crank. +#Range: > 1 +largeCreatureStressRange = 16 +#The multiplier for "Poor" paths +#Range: 0.0 ~ 1.7976931348623157E308 +poorMultiplier = 0.5 +#The multiplier for "Normal" paths +#Range: 0.0 ~ 1.7976931348623157E308 +normalMultiplier = 1.0 +#The multiplier for "Great" paths +#Range: 0.0 ~ 1.7976931348623157E308 +greatMultiplier = 2.0 +#Types of blocks valid as "Poor" quality +poorPathBlock = ["tfc:rooted_dirt/sandy_loam", "tfc:clay/sandy_loam", "tfc:dirt/sandy_loam", "tfc:rooted_dirt/loam", "tfc:clay/loam", "tfc:clay/silt", "tfc:dirt/loam", "tfc:rooted_dirt/silt", "tfc:dirt/silt", "tfc:dirt/silty_loam", "tfc:clay/silty_loam", "tfc:rooted_dirt/silty_loam", "tfc:peat_grass", "tfc:clay_grass/silty_loam", "tfc:grass/silty_loam", "tfc:clay_grass/sandy_loam", "tfc:grass/sandy_loam", "tfc:clay_grass/loam", "tfc:grass/loam", "tfc:clay_grass/silt", "tfc:grass/silt", "tfg:grass/mars_dirt", "tfg:grass/sangnum_mycelium", "tfg:grass/amber_mycelium", "tfg:grass/rusticus_mycelium", "tfg:grass/sangnum_clay_mycelium", "tfg:grass/amber_clay_mycelium", "tfg:grass/rusticus_clay_mycelium", "tfg:grass/sangnum_kaolin_mycelium", "tfg:grass/amber_kaolin_mycelium", "tfg:grass/rusticus_kaolin_mycelium"] +#Types of blocks valid as "Normal" quality +normalPathBlock = ["tfc:rock/gravel/granite", "tfc:rock/gravel/diorite", "tfc:rock/gravel/gabbro", "tfc:rock/gravel/shale", "tfc:rock/gravel/claystone", "tfc:rock/gravel/limestone", "tfc:rock/gravel/conglomerate", "tfc:rock/gravel/dolomite", "tfc:rock/gravel/chert", "tfc:rock/gravel/schist", "tfc:rock/gravel/phyllite", "tfc:rock/gravel/slate", "tfc:rock/gravel/quartzite", "tfc:rock/gravel/dacite", "tfc:rock/gravel/andesite", "tfc:rock/gravel/basalt", "tfc:rock/gravel/rhyolite", "tfc:rock/gravel/chalk", "tfc:rock/gravel/marble", "tfg:rock/gravel_dripstone", "tfg:rock/gravel_deepslate", "tfg:rock/gravel_blackstone", "tfg:rock/gravel_moon", "tfg:rock/gravel_moon_deepslate", "tfg:rock/gravel_glacio", "tfg:rock/gravel_mars", "tfg:rock/gravel_venus", "tfg:rock/gravel_mercury", "tfg:rock/gravel_crackrack", "tfc:grass_path/silt", "tfc:grass_path/loam", "tfc:grass_path/sandy_loam", "tfc:grass_path/silty_loam", "tfg:grass/mars_path", "rnr:hoggin"] +#Types of blocks valid as "Great" quality +greatPathBlock = ["rnr:rock/gravel_road/chert", "rnr:rock/gravel_road/chalk", "rnr:rock/gravel_road/rhyolite", "rnr:rock/gravel_road/basalt", "rnr:rock/gravel_road/andesite", "rnr:rock/gravel_road/claystone", "rnr:rock/gravel_road/limestone", "rnr:rock/gravel_road/conglomerate", "rnr:rock/gravel_road/dolomite", "rnr:rock/sett_road/granite", "rnr:rock/sett_road/diorite", "rnr:rock/sett_road/chalk", "rnr:rock/sett_road/rhyolite", "rnr:rock/sett_road/basalt", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/sett_road/andesite", "rnr:rock/cobbled_road/chert", "rnr:rock/cobbled_road/dolomite", "rnr:rock/gravel_road/granite", "rnr:rock/gravel_road/marble", "rnr:rock/gravel_road/schist", "rnr:rock/gravel_road/phyllite", "rnr:rock/gravel_road/slate", "rnr:rock/gravel_road/quartzite", "rnr:rock/gravel_road/dacite", "rnr:rock/macadam_road/rhyolite", "rnr:rock/macadam_road/chalk", "rnr:rock/macadam_road/chert", "rnr:rock/macadam_road/dolomite", "rnr:rock/macadam_road/conglomerate", "rnr:rock/macadam_road/limestone", "rnr:rock/macadam_road/gabbro", "rnr:rock/macadam_road/claystone", "rnr:rock/macadam_road/shale", "rnr:rock/macadam_road/gneiss", "rnr:rock/macadam_road/marble", "rnr:rock/macadam_road/schist", "rnr:rock/macadam_road/phyllite", "rnr:rock/macadam_road/slate", "rnr:rock/macadam_road/quartzite", "rnr:rock/macadam_road/dacite", "rnr:rock/macadam_road/andesite", "rnr:rock/macadam_road/basalt", "rnr:rock/gravel_road/diorite", "rnr:rock/gravel_road/gabbro", "rnr:rock/gravel_road/shale", "rnr:rock/macadam_road/diorite", "rnr:rock/macadam_road/granite", "rnr:rock/cobbled_road/conglomerate", "rnr:rock/cobbled_road/limestone", "rnr:rock/cobbled_road/claystone", "rnr:rock/cobbled_road/shale", "rnr:rock/cobbled_road/gabbro", "rnr:rock/cobbled_road/diorite", "rnr:rock/cobbled_road/granite", "rnr:rock/cobbled_road/phyllite", "rnr:rock/cobbled_road/schist", "rnr:rock/cobbled_road/slate", "rnr:rock/cobbled_road/quartzite", "rnr:rock/cobbled_road/dacite", "rnr:rock/cobbled_road/andesite", "rnr:rock/cobbled_road/rhyolite", "rnr:rock/cobbled_road/basalt", "rnr:rock/cobbled_road/chalk", "rnr:rock/cobbled_road/gneiss", "rnr:rock/cobbled_road/marble", "rnr:rock/sett_road/chert", "rnr:rock/sett_road/dolomite", "rnr:rock/sett_road/conglomerate", "rnr:rock/sett_road/limestone", "rnr:rock/sett_road/claystone", "rnr:rock/sett_road/shale", "rnr:rock/sett_road/gabbro", "rnr:rock/flagstones/gneiss", "rnr:rock/flagstones/marble", "rnr:black_sandstone_flagstones", "rnr:brown_sandstone_flagstones", "rnr:green_sandstone_flagstones", "rnr:pink_sandstone_flagstones", "rnr:red_sandstone_flagstones", "rnr:white_sandstone_flagstones", "rnr:yellow_sandstone_flagstones", "rnr:concrete_road_sett", "rnr:brick_road", "rnr:rock/sett_road/marble", "rnr:rock/sett_road/gneiss", "rnr:rock/sett_road/schist", "rnr:rock/sett_road/phyllite", "rnr:rock/sett_road/slate", "rnr:rock/sett_road/quartzite", "rnr:rock/sett_road/dacite", "rnr:rock/flagstones/chert", "rnr:rock/flagstones/dolomite", "rnr:rock/flagstones/conglomerate", "rnr:rock/flagstones/limestone", "rnr:rock/flagstones/claystone", "rnr:rock/flagstones/shale", "rnr:rock/flagstones/gabbro", "rnr:rock/flagstones/diorite", "rnr:rock/flagstones/granite", "rnr:rock/flagstones/schist", "rnr:rock/flagstones/phyllite", "rnr:rock/flagstones/slate", "rnr:rock/flagstones/quartzite", "rnr:rock/flagstones/andesite", "rnr:rock/flagstones/dacite", "rnr:rock/flagstones/basalt", "rnr:rock/flagstones/rhyolite", "rnr:rock/flagstones/chalk", "greate:andesite_shaft", "greate:steel_shaft", "greate:andesite_cogwheel", "greate:steel_cogwheel", "greate:large_andesite_cogwheel", "greate:large_steel_cogwheel"] +#Valid "Small" creatures +smallCreatures = ["tfc:wolf", "tfc:dog", "tfc:pig", "tfc:sheep", "tfc:goat", "tfc:alpaca", "tfg:glacian_ram", "tfg:wraptor", "species:springaling", "tfg:surfer"] +#Valid "Medium" creatures +mediumCreatures = ["tfc:cow", "tfc:donkey", "tfc:dolphin", "wan_ancient_beasts:glider", "wan_ancient_beasts:soarer"] +#Valid "Large" creatures +largeCreatures = ["tfc:horse", "tfc:mule", "tfc:musk_ox", "tfc:yak", "tfg:sniffer", "wan_ancient_beasts:walker", "species:cruncher"] From bda35f7f6c60a5e10748f145ac5f822b8d173cf5 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Mon, 1 Dec 2025 21:37:16 +0000 Subject: [PATCH 03/26] useless recipe --- kubejs/server_scripts/gregtech/recipes.removes.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/kubejs/server_scripts/gregtech/recipes.removes.js b/kubejs/server_scripts/gregtech/recipes.removes.js index c84170b41..dbac80643 100644 --- a/kubejs/server_scripts/gregtech/recipes.removes.js +++ b/kubejs/server_scripts/gregtech/recipes.removes.js @@ -691,6 +691,8 @@ function removeGTCEURecipes(event) { //event.remove({ id: 'gtceu:distillation_tower/distill_liquid_nether_air' }) event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__fireclay' }) + event.remove({ id: 'gtceu:arc_furnace/arc_firebricks' }) + event.remove({ id: 'gtceu:macerator/macerate_firebricks' }) event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__ender_eye' }) event.remove({ id: 'gtceu:smelting/sticky_resin_from_slime' }) From 0916fd2e211d14f2de11b0cc79cd872872e11cbd Mon Sep 17 00:00:00 2001 From: Pyritie Date: Mon, 1 Dec 2025 23:39:42 +0000 Subject: [PATCH 04/26] big tidying of startup scripts! --- kubejs/startup_scripts/ad_astra/materials.js | 92 -- kubejs/startup_scripts/ae2/fluids.js | 13 - .../chisel_and_bits/constants.js | 17 - kubejs/startup_scripts/gtceu/items.js | 45 - ...{materials.js => material_modification.js} | 6 +- kubejs/startup_scripts/main_startup_script.js | 13 +- kubejs/startup_scripts/tfc/icon_sets.js | 39 - .../tfg/biotech/items.biotech.js | 39 + .../tfg/biotech/items.medicine.js | 69 ++ .../tfg/{ => biotech}/materials.bioline.js | 0 kubejs/startup_scripts/tfg/blocks.casings.js | 121 +++ .../tfg/{blocks.plants.js => blocks.crops.js} | 111 --- kubejs/startup_scripts/tfg/blocks.js | 379 +------- kubejs/startup_scripts/tfg/blocks.nether.js | 592 ------------ .../startup_scripts/tfg/dimension_markers.js | 58 ++ .../tfg/equipment/items.weapons.js | 15 + .../tfg/europa/blocks.europa_deco.js | 39 + .../tfg/europa/materials.europa.js | 18 + kubejs/startup_scripts/tfg/fluids.js | 13 +- .../{tfc/materials.js => tfg/icon_sets.js} | 72 +- kubejs/startup_scripts/tfg/items.aircraft.js | 41 + kubejs/startup_scripts/tfg/items.food.js | 114 ++- kubejs/startup_scripts/tfg/items.js | 564 +---------- .../mars/blocks.mars_deco.js} | 127 +-- .../items.js => tfg/mars/items.mars.js} | 9 +- .../tfg/mars/materials.mars.js | 105 ++ kubejs/startup_scripts/tfg/materials.js | 478 +--------- .../tfg/materials.power_rework.js | 86 +- .../tfg/moon/blocks.moon_deco.js | 53 ++ .../tfg/moon/materials.moon.js | 98 ++ .../tfg/nuclear/blocks.nuclear.js | 118 +++ .../tfg/nuclear/items.nuclear.js | 59 ++ .../tfg/nuclear/materials.nuclear.js | 19 +- .../tfg/{ => primitive}/blocks.supports.js | 0 .../tfg/primitive/blocks.vases.js | 77 ++ .../tfg/primitive/items.primitive.js | 139 +++ .../tfg/primitive/materials.primitive.js | 91 ++ .../tfg/space_general/items.space.js | 33 + .../tfg/space_general/materials.rockets.js | 162 ++++ .../tfg/{ => stone_types}/blocks.aqueducts.js | 0 .../blocks.rocks.js} | 896 +++++++++++------- .../tfg/stone_types/blocks.vanilla_stone.js | 56 ++ .../tfg/stone_types/items.rocks.js | 43 + .../tfg/stone_types/materials.rocks.js | 43 + .../tfg/venus/blocks.venus_deco.js | 176 ++++ .../tfg/venus/materials.venus.js | 80 ++ .../tfg/worldgen/blocks.beneath_deco.js | 22 + .../tfg/worldgen/blocks.trees.js | 115 +++ .../tfg/worldgen/items.wood.js | 24 + .../startup_scripts/tfg/worldgen/utility.js | 29 + 50 files changed, 2767 insertions(+), 2841 deletions(-) delete mode 100644 kubejs/startup_scripts/ad_astra/materials.js delete mode 100644 kubejs/startup_scripts/ae2/fluids.js delete mode 100644 kubejs/startup_scripts/chisel_and_bits/constants.js delete mode 100644 kubejs/startup_scripts/gtceu/items.js rename kubejs/startup_scripts/gtceu/{materials.js => material_modification.js} (99%) delete mode 100644 kubejs/startup_scripts/tfc/icon_sets.js create mode 100644 kubejs/startup_scripts/tfg/biotech/items.biotech.js create mode 100644 kubejs/startup_scripts/tfg/biotech/items.medicine.js rename kubejs/startup_scripts/tfg/{ => biotech}/materials.bioline.js (100%) create mode 100644 kubejs/startup_scripts/tfg/blocks.casings.js rename kubejs/startup_scripts/tfg/{blocks.plants.js => blocks.crops.js} (71%) delete mode 100644 kubejs/startup_scripts/tfg/blocks.nether.js create mode 100644 kubejs/startup_scripts/tfg/equipment/items.weapons.js create mode 100644 kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js create mode 100644 kubejs/startup_scripts/tfg/europa/materials.europa.js rename kubejs/startup_scripts/{tfc/materials.js => tfg/icon_sets.js} (84%) create mode 100644 kubejs/startup_scripts/tfg/items.aircraft.js rename kubejs/startup_scripts/{betterend/blocks.js => tfg/mars/blocks.mars_deco.js} (69%) rename kubejs/startup_scripts/{betterend/items.js => tfg/mars/items.mars.js} (88%) create mode 100644 kubejs/startup_scripts/tfg/mars/materials.mars.js create mode 100644 kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js create mode 100644 kubejs/startup_scripts/tfg/moon/materials.moon.js create mode 100644 kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js create mode 100644 kubejs/startup_scripts/tfg/nuclear/items.nuclear.js rename kubejs/startup_scripts/tfg/{ => primitive}/blocks.supports.js (100%) create mode 100644 kubejs/startup_scripts/tfg/primitive/blocks.vases.js create mode 100644 kubejs/startup_scripts/tfg/primitive/items.primitive.js create mode 100644 kubejs/startup_scripts/tfg/primitive/materials.primitive.js create mode 100644 kubejs/startup_scripts/tfg/space_general/items.space.js create mode 100644 kubejs/startup_scripts/tfg/space_general/materials.rockets.js rename kubejs/startup_scripts/tfg/{ => stone_types}/blocks.aqueducts.js (100%) rename kubejs/startup_scripts/tfg/{blocks.space.js => stone_types/blocks.rocks.js} (71%) create mode 100644 kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js create mode 100644 kubejs/startup_scripts/tfg/stone_types/items.rocks.js create mode 100644 kubejs/startup_scripts/tfg/stone_types/materials.rocks.js create mode 100644 kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js create mode 100644 kubejs/startup_scripts/tfg/venus/materials.venus.js create mode 100644 kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js create mode 100644 kubejs/startup_scripts/tfg/worldgen/blocks.trees.js create mode 100644 kubejs/startup_scripts/tfg/worldgen/items.wood.js create mode 100644 kubejs/startup_scripts/tfg/worldgen/utility.js diff --git a/kubejs/startup_scripts/ad_astra/materials.js b/kubejs/startup_scripts/ad_astra/materials.js deleted file mode 100644 index 98d9d69f3..000000000 --- a/kubejs/startup_scripts/ad_astra/materials.js +++ /dev/null @@ -1,92 +0,0 @@ -// priority: 0 -"use strict"; - -const registerAdAstraMaterials = (event) => { - - event.create('armalcolite') - .gem(2) - .components('1x magnesium', '1x rutile', '1x ilmenite') - .color(0x443333) - .secondaryColor(0x5e2c21) - .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) - .ore() - .addOreByproducts('rutile', 'rutile', 'ilmenite') - - // #region ad astra ores - - // moon - event.create('desh') - .components('2x olivine', '1x rutile', '4x nitrogen') - .color(0xF39A4C) - .secondaryColor(0xF35A6C) - .iconSet(GTMaterialIconSet.getByName('tfc_hematite')) - .ore() - .addOreByproducts('olivine', 'rutile', 'rutile') - .ingot() - .liquid() - .blastTemp(2800, 'mid', GTValues.VA[GTValues.HV]) - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD, - GTMaterialFlags.GENERATE_DENSE, - GTMaterialFlags.GENERATE_GEAR, - GTMaterialFlags.GENERATE_FRAME, - GTMaterialFlags.DISABLE_ALLOY_BLAST - ) - - // mars - event.create('ostrum') - .components('2x pitchblende', '1x tricalcium_phosphate', '1x bauxite', '1x silver', '1x beryllium') - .color(0xbd7980) - .secondaryColor(0xA66C8D) - .iconSet(GTMaterialIconSet.getByName('tfc_cassiterite')) - .ingot() - .liquid() - .blastTemp(3700, 'mid', GTValues.VA[GTValues.EV]) - .flags( - GTMaterialFlags.DISABLE_DECOMPOSITION, - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD, - GTMaterialFlags.GENERATE_FRAME, - GTMaterialFlags.DISABLE_ALLOY_BLAST - ) - - // venus? - event.create('calorite') - //.components('2x mercury', '1x tungsten', '1x rhodium', '2x sulfur') - .color(0xC94D4E) - .secondaryColor(0x9A296A) - .iconSet(GTMaterialIconSet.getByName('tfc_copper')) - .ore() - .ingot() - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE - ) - - // ??? - event.create('etrium') - //.components('1x niobium', '1x molybdenum', '1x ruthenium', '3x carbon', '1x monochloramine') - .color(0x7BFCD7) - .secondaryColor(0x3582D2) - .iconSet(GTMaterialIconSet.getByName('tfc_silver')) - .ore() - .ingot() - .flags( - GTMaterialFlags.FORCE_GENERATE_BLOCK, - GTMaterialFlags.GENERATE_PLATE, - GTMaterialFlags.GENERATE_ROD - ) - - // #endregion -} - -const registerAdAstraMaterialModification = (event) => { - - const $FLUID_PIPE_PROPERTY = Java.loadClass('com.gregtechceu.gtceu.api.data.chemical.material.properties.FluidPipeProperties') - - // Ostrum fluid pipe - same flow rate as titanium, higher temp range - GTMaterials.get('ostrum').setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(3700, 150, true, false, true, false)); -} \ No newline at end of file diff --git a/kubejs/startup_scripts/ae2/fluids.js b/kubejs/startup_scripts/ae2/fluids.js deleted file mode 100644 index 60038bb0b..000000000 --- a/kubejs/startup_scripts/ae2/fluids.js +++ /dev/null @@ -1,13 +0,0 @@ -// priority: 0 -"use strict"; - -const registerAE2Fluids = (event) => { - -// AE2 Moon Fluix - - event.create('tfg:cryogenized_fluix') - .thickTexture(0xde8cfb) - .bucketColor(0xde8cfb) - .luminosity(14) - .temperature(10) -} \ No newline at end of file diff --git a/kubejs/startup_scripts/chisel_and_bits/constants.js b/kubejs/startup_scripts/chisel_and_bits/constants.js deleted file mode 100644 index 5c8a9ee0f..000000000 --- a/kubejs/startup_scripts/chisel_and_bits/constants.js +++ /dev/null @@ -1,17 +0,0 @@ -// priority: 0 -"use strict"; - -global.CHISEL_AND_BITS_DISABLED_ITEMS = [ - 'chiselsandbits:block_bit', - 'chiselsandbits:chiseled_block', - - 'chiselsandbits:chisel_stone', - 'chiselsandbits:chisel_iron', - 'chiselsandbits:chisel_gold', - 'chiselsandbits:chisel_netherite', - - 'chiselsandbits:bit_bag_dyed', - 'chiselsandbits:pattern_single_use', - 'chiselsandbits:pattern_multi_use', - 'chiselsandbits:monocle' -]; \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/items.js b/kubejs/startup_scripts/gtceu/items.js deleted file mode 100644 index 6b29ca59f..000000000 --- a/kubejs/startup_scripts/gtceu/items.js +++ /dev/null @@ -1,45 +0,0 @@ -// priority: 0 -"use strict"; - -const registerGTCEuItems = (event) => { - - event.create('tfg:ulv_universal_circuit') - .translationKey('item.ulv_universal_circuit') - - event.create('tfg:lv_universal_circuit') - .translationKey('item.lv_universal_circuit') - - event.create('tfg:mv_universal_circuit') - .translationKey('item.mv_universal_circuit') - - event.create('tfg:hv_universal_circuit') - .translationKey('item.hv_universal_circuit') - - event.create('tfg:ev_universal_circuit') - .translationKey('item.ev_universal_circuit') - - event.create('tfg:iv_universal_circuit') - .translationKey('item.iv_universal_circuit') - - event.create('tfg:luv_universal_circuit') - .translationKey('item.luv_universal_circuit') - - event.create('tfg:zpm_universal_circuit') - .translationKey('item.zpm_universal_circuit') - - event.create('tfg:uv_universal_circuit') - .translationKey('item.uv_universal_circuit') - - event.create('tfg:uhv_universal_circuit') - .translationKey('item.uhv_universal_circuit') - - event.create('tfg:chipboard_composite') - .translationKey('item.chipboard_composite') - - event.create('tfg:treated_chipboard_composite') - .translationKey('item.treated_chipboard_composite') - - event.create('tfg:high_density_treated_fiberboard') - .translationKey('item.high_density_treated_fiberboard') - -} diff --git a/kubejs/startup_scripts/gtceu/materials.js b/kubejs/startup_scripts/gtceu/material_modification.js similarity index 99% rename from kubejs/startup_scripts/gtceu/materials.js rename to kubejs/startup_scripts/gtceu/material_modification.js index 3bdcf75d5..aba518db4 100644 --- a/kubejs/startup_scripts/gtceu/materials.js +++ b/kubejs/startup_scripts/gtceu/material_modification.js @@ -1,10 +1,6 @@ // priority: 0 "use strict"; -const registerGTCEuMaterials = (event) => { - -} - const registerGTCEuMaterialModification = (event) => { //const TFGPropertyKey = Java.loadClass('su.terrafirmagreg.core.compat.gtceu.TFGPropertyKeys') @@ -343,6 +339,8 @@ const registerGTCEuMaterialModification = (event) => { GTMaterials.RedSteel.setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(370, 75, true, false, true, false)); // Blue steel fluid pipe - same flow rate as aluminium, same temp tolerance as tungsten GTMaterials.BlueSteel.setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(4618, 75, true, false, false, false)); + // Ostrum fluid pipe - same flow rate as titanium, higher temp range + TFGHelpers.getMaterial('ostrum').setProperty(PropertyKey.FLUID_PIPE, new $FLUID_PIPE_PROPERTY(3700, 150, true, false, true, false)); // Add some hazards back GTMaterials.Realgar.setProperty(PropertyKey.HAZARD, new $HAZARD_PROPERTY($HAZARD_PROPERTY.HazardTrigger.INHALATION, GTMedicalConditions.ARSENICOSIS, 1, false)); diff --git a/kubejs/startup_scripts/main_startup_script.js b/kubejs/startup_scripts/main_startup_script.js index 27c4287d5..94f249b16 100644 --- a/kubejs/startup_scripts/main_startup_script.js +++ b/kubejs/startup_scripts/main_startup_script.js @@ -2,14 +2,11 @@ "use strict"; StartupEvents.registry('item', event => { - registerBetterEndItems(event) - registerGTCEuItems(event) registerTFGItems(event) }) StartupEvents.registry('block', event => { registerTFGBlocks(event) - registerBetterEndBlocks(event) }) StartupEvents.registry('entity_type', event => { @@ -32,7 +29,6 @@ ItemEvents.modification(event => { StartupEvents.registry('fluid', event => { registerTFGFluids(event) - registerAE2Fluids(event) }) GTCEuStartupEvents.registry('gtceu:recipe_type', event => { @@ -51,26 +47,19 @@ GTCEuStartupEvents.registry('gtceu:tag_prefix', event => { }) GTCEuStartupEvents.registry('gtceu:material', event => { - registerAdAstraMaterials(event) registerAE2Materials(event) registerCreateMaterials(event) - registerTFCMaterials(event) - registerGTCEuMaterials(event) registerGreateMaterials(event) registerTFGMaterials(event) - registerTFGNuclearMaterials(event) - registerTFGBiolineMaterials(event) - registerTFGPowerReworkMaterials(event) }) GTCEuStartupEvents.registry('gtceu:material_icon_set', event => { - registerTFCIconSets(event) + registerTFGIconSets(event) }) GTCEuStartupEvents.materialModification(event => { registerGTCEuMaterialModification(event) registerGreateMaterialModification(event) - registerAdAstraMaterialModification(event) }) GTCEuStartupEvents.registry('gtceu:dimension_marker', event => { diff --git a/kubejs/startup_scripts/tfc/icon_sets.js b/kubejs/startup_scripts/tfc/icon_sets.js deleted file mode 100644 index 7a90f7027..000000000 --- a/kubejs/startup_scripts/tfc/icon_sets.js +++ /dev/null @@ -1,39 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCIconSets(event) { - - event.create('tfc_borax').parent('rough') - event.create('tfc_gypsum').parent('rough') - event.create('tfc_graphite').parent('rough') - event.create('tfc_saltpeter').parent('fine') - event.create('tfc_sulfur').parent('fine') - - event.create('tfc_amethyst').parent('ruby') - event.create('tfc_redstone').parent('fine') - event.create('tfc_diamond').parent('diamond') - event.create('tfc_emerald').parent('emerald') - event.create('tfc_lapis').parent('lapis') - event.create('tfc_opal').parent('opal') - event.create('tfc_pyrite').parent('bright') - event.create('tfc_ruby').parent('ruby') - event.create('tfc_sapphire').parent('gem_horizontal') - event.create('tfc_topaz').parent('gem_vertical') - event.create('tfc_realgar').parent('emerald') - - event.create('tfc_bismuth').parent('bright') - event.create('tfc_cassiterite').parent('bright') - event.create('tfc_garnierite').parent('bright') - event.create('tfc_hematite').parent('metallic') - event.create('tfc_limonite').parent('metallic') - event.create('tfc_magnetite').parent('dull') - event.create('tfc_malachite').parent('shiny') - event.create('tfc_copper').parent('bright') - event.create('tfc_gold').parent('shiny') - event.create('tfc_silver').parent('shiny') - event.create('tfc_sphalerite').parent('dull') - event.create('tfc_tetrahedrite').parent('dull') - event.create('tfc_chromite').parent('dull') - - event.create('nether_quartz').parent('quartz') -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/biotech/items.biotech.js b/kubejs/startup_scripts/tfg/biotech/items.biotech.js new file mode 100644 index 000000000..681f12e91 --- /dev/null +++ b/kubejs/startup_scripts/tfg/biotech/items.biotech.js @@ -0,0 +1,39 @@ +"use strict"; + +function registerTFGBiotechItems(event) { + + event.create('tfg:stainless_steel_needle') + .unstackable() + .maxDamage(9999) + + //#region Lab Equipment + + global.LAB_EQUIPMENT_CONTAINERS.forEach((item) => { + event.create(`tfg:${item.type}`, 'tfc:glass_bottle') + .fluidTagAccept('tfg:not_solid') + .capacity(item.capacity) + .translationKey(`item.tfg.lab_equipment.${item.type}`) + .tag('tfg:lab_equipment_containers') + .tag('tfc:fluid_item_ingredient_empty_containers') + .tag('tfc:glass_bottles') + }) + + event.create('tfg:lab_equipment') + .translationKey('item.tfg.lab_equipment.lab_equipment') + .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set')) + + event.create('tfg:dirty_lab_equipment') + .translationKey('item.tfg.lab_equipment.dirty_lab_equipment') + .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set_dirty')) + //#endregion + + + //#region Bioline + + event.create('tfg:cellulose_matrix') + event.create('tfg:smooth_endoplasmic_reticula') + event.create('tfg:rough_endoplasmic_reticula') + event.create('tfg:alpha_keratin') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/biotech/items.medicine.js b/kubejs/startup_scripts/tfg/biotech/items.medicine.js new file mode 100644 index 000000000..a3584c88f --- /dev/null +++ b/kubejs/startup_scripts/tfg/biotech/items.medicine.js @@ -0,0 +1,69 @@ +// priority: 0 +"use strict"; + +function registerTFGMedicineItems(event) { + const pill = [ + 'haste', + 'night_vision', + 'poison', + 'regeneration', + 'slowness', + 'speed', + 'water_breathing', + 'weakness' + ] + + const pill_names = [ + 'Haste', + 'Night Vision', + 'Poison', + 'Regeneration', + 'Slowness', + 'Speed', + 'Water Breathing', + 'Weakness' + ] + + pill.forEach((pill_array, index) => { + const pill_names_array = pill_names[index]; + + event.create(`tfg:${pill_array}_pill`) + .tooltip(`§9${pill_names_array} (08:00)`) + + event.create(`tfg:${pill_array}_tablet`) + .tooltip(`§9${pill_names_array} (30:00)`) + }) + + event.create(`tfg:antipoison_pill`) + .tooltip(`§9Cures Poison`) + + event.create(`tfg:antipoison_tablet`) + .tooltip(`§9Cures All Harmful Effects`) + + //salvos + + const salvo = [ + 'absorption', + 'fire_resistance', + 'invisibility', + 'luck', + 'resistance' + ] + const salvo_names = [ + 'Absorption', + 'Fire Resistance', + 'Invisibility', + 'Luck', + 'Resistance' + ] + + salvo.forEach((salvo_array, index) => { + const salvo_names_array = salvo_names[index]; + + event.create(`tfg:${salvo_array}_salvo`) + .tooltip(`§9${salvo_names_array} (08:00)`) + }) + + event.create(`tfg:instant_health_salvo`) + .tooltip(`§9Instant Health II`) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/materials.bioline.js b/kubejs/startup_scripts/tfg/biotech/materials.bioline.js similarity index 100% rename from kubejs/startup_scripts/tfg/materials.bioline.js rename to kubejs/startup_scripts/tfg/biotech/materials.bioline.js diff --git a/kubejs/startup_scripts/tfg/blocks.casings.js b/kubejs/startup_scripts/tfg/blocks.casings.js new file mode 100644 index 000000000..b11f03bdd --- /dev/null +++ b/kubejs/startup_scripts/tfg/blocks.casings.js @@ -0,0 +1,121 @@ +"use strict"; + +function registerTFGCasingBlocks(event) { + + global.TFG_MACHINE_CASINGS.forEach(type => { + event.create(`tfg:casings/${type}`) + .translationKey(`block.tfg.casings.${type}`) + .model(`tfg:block/casings/${type}`) + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + }) + + event.create(`tfg:casings/machine_casing_stainless_evaporation`) + .translationKey(`block.tfg.casings.machine_casing_stainless_evaporation`) + .model(`tfg:block/casings/machine_casing_stainless_evaporation`) + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active') + .simple('tfg:block/casings/machine_casing_vacuum_engine_intake') + .translationKey('block.tfg.casings.machine_casing_vacuum_engine_intake') + .soundType('metal') + .resistance(6).hardness(5) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .requiresTool(true) + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_bioculture') + .translationKey('block.tfg.casings.machine_casing_bioculture') + .model('tfg:block/casings/machine_casing_bioculture') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_red') + + event.create('tfg:casings/machine_casing_bioculture_glass') + .translationKey('block.tfg.casings.machine_casing_bioculture_glass') + .model('tfg:block/casings/machine_casing_bioculture_glass') + .soundType('glass') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_orange') + .defaultTranslucent() + + event.create('tfg:casings/bioculture_rotor_primary', 'tfg:active_particle_emitter') + .translationKey('block.tfg.casings.bioculture_rotor_primary') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .activeOffset(1.6, 2, 1.6) + .activeVelocity(0, 0, 0) + .activeParticle('minecraft:landing_lava') + .activeCount(10) + .activeForced(false) + + event.create('tfg:casings/bioculture_rotor_secondary', 'gtceu:active') + .translationKey('block.tfg.casings.bioculture_rotor_secondary') + .model('tfg:block/casings/bioculture_rotor_secondary') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/machine_casing_ultraviolet', 'gtceu:active') + .translationKey('block.tfg.casings.machine_casing_ultraviolet') + .soundType('glass') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + + event.create('tfg:casings/heat_pipe_casing') + .translationKey('block.tfg.casings.heat_pipe_casing') + .model('tfg:block/casings/heat_pipe_casing') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_black') + + event.create('tfg:sample_rack', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .notSolid() + .renderType('cutout') + .opaque(false) + + event.create('tfg:growth_monitor', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_light_gray') + .notSolid() + .renderType('cutout') + .opaque(false) + + event.create('tfg:casings/machine_casing_sterilizing_pipes', 'tfg:active_cardinal') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_brown') + + + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.plants.js b/kubejs/startup_scripts/tfg/blocks.crops.js similarity index 71% rename from kubejs/startup_scripts/tfg/blocks.plants.js rename to kubejs/startup_scripts/tfg/blocks.crops.js index 47208d86b..289eee7d1 100644 --- a/kubejs/startup_scripts/tfg/blocks.plants.js +++ b/kubejs/startup_scripts/tfg/blocks.crops.js @@ -310,115 +310,4 @@ const registerTFGCrops = (event) => { .tagBlock('minecraft:mineable/hoe') .tagBlock('tfc:can_be_snow_piled') .tagItem('c:hidden_from_recipe_viewers') - - // Mars Saplings - - event.create('tfg:saplings/crimson', 'tfc:sapling') - .features('tfg:mars/tree/crimson') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(6) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/warped', 'tfc:sapling') - .features('tfg:mars/tree/warped') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(6) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/alphacene', 'tfc:sapling') - .features('species:alphacene_mushroom') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(3) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/strophar', 'tfc:sapling') - .features('tfg:mars/tree/strophar_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(7) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/aeronos', 'tfc:sapling') - .features('tfg:mars/tree/aeronos_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(9) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - event.create('tfg:saplings/glacian', 'tfc:sapling') - .features('tfg:mars/tree/glacian_mini') - .tagBoth('minecraft:saplings') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_snow_piled') - .growthDays(9) - .soundType('nether_wart') - .defaultCutout() - .noCollision() - - // Glacian tree stuff - event.create('tfg:glacian_leaves', 'tfc:leaves') - .soundType('azalea_leaves') - .tagBlock('minecraft:mineable/hoe') - .tagBlock('tfg:do_not_destroy_in_space') - .mapColor('snow') - .seasonalColors(false) - .fallenLeaves(leaves => { - leaves.noCollision() - leaves.notSolid() - leaves.defaultCutout() - leaves.soundType('azalea_leaves') - leaves.tagBlock('minecraft:mineable/hoe') - leaves.tagBlock('minecraft:replaceable') - leaves.noDynamicTinting() - leaves.models((modelType, generator) => { - if (modelType.layers != 8) { - generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height); - generator.texture("all", "ad_astra:block/glacian_leaves"); - } else { - generator.parent("ad_astra:block/glacian_leaves"); - } - }) - }) - - event.create('tfg:glacian_wood', 'tfc:log') - .tagBoth('minecraft:logs') - .tagItem('minecraft:logs_that_burn') - .tagItem('ad_astra:glacian_logs') - .tagBlock('minecraft:mineable/axe') - .soundType('wood') - .stripped(stripped => { - stripped.tagBoth('minecraft:logs') - stripped.tagItem('minecraft:logs_that_burn') - stripped.tagItem('ad_astra:glacian_logs') - stripped.tagBlock('minecraft:mineable/axe') - stripped.soundType('wood') - }) - - event.create('tfg:glacian_log', 'tfc:log') - .tagBoth('minecraft:logs') - .tagBoth('c:hidden_from_recipe_viewers') - .soundType('wood') - .stripped(stripped => { - stripped.tagBoth('minecraft:logs') - stripped.tagBoth('c:hidden_from_recipe_viewers') - stripped.soundType('wood') - }) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.js b/kubejs/startup_scripts/tfg/blocks.js index 013f7fac1..85b9d9286 100644 --- a/kubejs/startup_scripts/tfg/blocks.js +++ b/kubejs/startup_scripts/tfg/blocks.js @@ -2,375 +2,30 @@ const registerTFGBlocks = (event) => { - registerTFGNetherBlocks(event) - registerTFGSpaceBlocks(event) + registerTFGDimensionMarkerBlocks(event) + registerTFGCrops(event) + registerTFGVaseBlocks(event) + registerTFGSupportBlocks(event) registerTFGAqueductBlocks(event) - registerTFGCrops(event) + registerTFGRockBlocks(event) + registerTFGVanillaStoneBlocks(event) + + registerTFGWorldGenTrees(event) + registerTFGWorldGenBeneathDecoBlocks(event) + registerTFGWorldGenMoonDecoBlocks(event) + registerTFGWorldGenMarsDecoBlocks(event) + registerTFGWorldGenVenusDecoBlocks(event) + registerTFGWorldGenEuropaDecoBlocks(event) + + registerTFGCasingBlocks(event) + registerTFGNuclearBlocks(event) + // Temporary, remove in 0.12 event.create('gtceu:ostrum_linear_accelerator') .tagBlock('gtceu:mineable/pickaxe_or_wrench') .requiresTool(false) .textureAll('tfg:item/deprecated') - - event.create('tfg:titanium_exhaust_vent', 'tfg:active_particle_emitter') - .textureAll('tfg:block/titanium_exhaust_vent') - .soundType('metal') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_black') - .speedFactor(1.1) - .activeOffset(3.5, 2, 3.5) - .activeVelocity(0.0, 0.0, 0.0) - .activeParticle('tfg:cooling_steam') - .activeBase(0.0, 12.5, 0.0) - .activeCount(8) - .activeForced(false) - .hasTicker(true) - - // #region Machine Casings - - global.TFG_MACHINE_CASINGS.forEach(type => { - event.create(`tfg:casings/${type}`) - .translationKey(`block.tfg.casings.${type}`) - .model(`tfg:block/casings/${type}`) - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - }) - - event.create(`tfg:casings/machine_casing_stainless_evaporation`) - .translationKey(`block.tfg.casings.machine_casing_stainless_evaporation`) - .model(`tfg:block/casings/machine_casing_stainless_evaporation`) - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active') - .simple('tfg:block/casings/machine_casing_vacuum_engine_intake') - .translationKey('block.tfg.casings.machine_casing_vacuum_engine_intake') - .soundType('metal') - .resistance(6).hardness(5) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .requiresTool(true) - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_bioculture') - .translationKey('block.tfg.casings.machine_casing_bioculture') - .model('tfg:block/casings/machine_casing_bioculture') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_red') - - event.create('tfg:casings/machine_casing_bioculture_glass') - .translationKey('block.tfg.casings.machine_casing_bioculture_glass') - .model('tfg:block/casings/machine_casing_bioculture_glass') - .soundType('glass') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_orange') - .defaultTranslucent() - - event.create('tfg:casings/bioculture_rotor_primary', 'tfg:active_particle_emitter') - .translationKey('block.tfg.casings.bioculture_rotor_primary') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .activeOffset(1.6, 2, 1.6) - .activeVelocity(0, 0, 0) - .activeParticle('minecraft:landing_lava') - .activeCount(10) - .activeForced(false) - - event.create('tfg:casings/bioculture_rotor_secondary', 'gtceu:active') - .translationKey('block.tfg.casings.bioculture_rotor_secondary') - .model('tfg:block/casings/bioculture_rotor_secondary') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - - event.create('tfg:casings/machine_casing_ultraviolet', 'gtceu:active') - .translationKey('block.tfg.casings.machine_casing_ultraviolet') - .soundType('glass') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - event.create('tfg:casings/heat_pipe_casing') - .translationKey('block.tfg.casings.heat_pipe_casing') - .model('tfg:block/casings/heat_pipe_casing') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_black') - - event.create('tfg:sample_rack', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .notSolid() - .renderType('cutout') - .opaque(false) - - event.create('tfg:growth_monitor', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_light_gray') - .notSolid() - .renderType('cutout') - .opaque(false) - - event.create('tfg:casings/machine_casing_sterilizing_pipes', 'tfg:active_cardinal') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .mapColor('color_brown') - - //#endregion - - event.create('tfg:titanium_concrete') - .translationKey('block.tfg.titanium_concrete') - .model('tfg:block/concrete/titanium_concrete') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:polished_titanium_concrete') - .translationKey('block.tfg.polished_titanium_concrete') - .model('tfg:block/concrete/polished_titanium_concrete') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_tile') - .translationKey('block.tfg.titanium_concrete_tile') - .model('tfg:block/concrete/titanium_concrete_tile') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_tile_small') - .translationKey('block.tfg.titanium_concrete_tile_small') - .model('tfg:block/concrete/titanium_concrete_tile_small') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks') - .translationKey('block.tfg.titanium_concrete_bricks') - .model('tfg:block/concrete/titanium_concrete_bricks') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks_small') - .translationKey('block.tfg.titanium_concrete_bricks_small') - .model('tfg:block/concrete/titanium_concrete_bricks_small') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - event.create('tfg:titanium_concrete_bricks_square') - .translationKey('block.tfg.titanium_concrete_bricks_square') - .model('tfg:block/concrete/titanium_concrete_bricks_square') - .soundType('stone') - .mapColor('stone') - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .tagBoth('tfg:titanium_concrete') - - // #region insulation - event.create('tfg:glacian_wool_frame') - .soundType('copper') - .hardness(4) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:aes_insulation_frame') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:moderate_core_frame') - .soundType('copper') - .hardness(4) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - event.create('tfg:impure_moderate_core_frame') - .soundType('copper') - .hardness(5) - .resistance(6) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - - // Unfinished Insulation - event.create('tfg:moderate_core') - .soundType('ancient_debris') - .hardness(7) - .resistance(8) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .model('tfg:block/fission/moderate_core') - - event.create('tfg:impure_moderate_core') - .soundType('ancient_debris') - .hardness(7) - .resistance(8) - .tagBlock('gtceu:mineable/pickaxe_or_wrench') - .model('tfg:block/fission/impure_moderate_core') - - // #region Decorative vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.create(`tfg:decorative_vase/generated/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/loot_vase_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - - event.create(`tfg:decorative_vase/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/vase_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - .blockEntity(be => { - be.attach('tfc:inventory', { - width: 9, - height: 1, - size: size => size.isSmallerThan('large') - }) - be.rightClickOpensInventory() - }) - - event.create(`tfg:decorative_vase/unfired/${color}`, 'cardinal') - .model(`tfg:block/decorative_vase/vase_unfired_${color}`) - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_${color}`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - }) - event.create('tfg:decorative_vase', 'cardinal') - .model('tfg:block/decorative_vase/vase') - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_gray`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - .blockEntity(be => { - be.attach('tfc:inventory', { - width: 9, - height: 1, - size: size => size.isSmallerThan('large') - }) - be.rightClickOpensInventory() - }) - - event.create('tfg:decorative_vase/unfired', 'cardinal') - .model('tfg:block/decorative_vase/vase_unfired') - .soundType('decorated_pot') - .hardness(0.7) - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(`color_gray`) - .box(2, 0, 2, 14, 20, 14) - .fullBlock(false) - .opaque(false) - .renderType('cutout') - - // #endregion - - // #region Reconstituted Stone - - event.create(`tfg:rock/stone_wall`, 'wall') - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/stone') - .tagBoth('tfg:rock_wall') - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - let SHAPES = ['stairs', 'wall'] - SHAPES.forEach(shape => { - event.create(`tfg:rock/smooth_stone_${shape}`, shape) - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/smooth_stone') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES = ['stairs', 'slab', 'wall'] - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_stone_${shape}`, shape) - .soundType(global.STONE_CHARACS.reconstituted.sound) - .textureAll('minecraft:block/cracked_stone_bricks') - .tagBoth(`tfg:brick_${shape}s`.replace(/ss/g, 's')) - .mapColor(global.STONE_CHARACS.reconstituted.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/quartz_wall', 'wall') - .soundType('stone') - .textureAll('minecraft:block/quartz_block_side') - .tagBoth('tfg:rock_wall') - .mapColor('snow') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/smooth_quartz_wall', 'wall') - .soundType('stone') - .textureAll('minecraft:block/quartz_block_bottom') - .tagBoth('tfg:rock_wall') - .mapColor('snow') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - // #endregion Reconstituted Stone } diff --git a/kubejs/startup_scripts/tfg/blocks.nether.js b/kubejs/startup_scripts/tfg/blocks.nether.js deleted file mode 100644 index 765b3b6e2..000000000 --- a/kubejs/startup_scripts/tfg/blocks.nether.js +++ /dev/null @@ -1,592 +0,0 @@ -"use strict"; - -function registerTFGNetherBlocks(event) { - const SHAPES = ['stairs', 'slab', 'wall'] - - // #region Raw Stones - SHAPES.forEach(shape => { - event.create(`tfg:rock/deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/deepslate') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .textureAll('minecraft:block/dripstone_block') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .textureAll('beneath:block/crackrack') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Raw Stones - - // #region Hardened Stones - event.create('tfg:rock/hardened_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .property(BlockProperties.AXIS) - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/deepslate' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/hardened_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/blackstone' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/hardened_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .stoneSoundType() - .requiresTool(true) - .item(item => { - item.modelJson({ parent: 'minecraft:item/dripstone_block' }) - }) - .tagBlock('tfc:can_carve') - .tagBoth('forge:stone') - .tagBoth('tfc:rock/hardened') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - // #endregion Hardened stones - - // #region Spikes - event.create('tfg:spike/deepslate_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - event.create('tfg:spike/blackstone_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - event.create('tfg:spike/dripstone_spike', 'tfc:rock_spike') - .textureAll('minecraft:block/dripstone_block') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - - // #endregion Spikes - - // #region Loose Stones - event.create('tfg:loose/deepslate', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.deepslate.sound) - .itemTexture('tfg:item/loose/deepslate') - .rockTypeModel(global.STONE_CHARACS.deepslate.type) - .translationKey("block.tfg.loose.deepslate") - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.deepslate.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .tagItem("rnr:loose_rock_items") - - event.create('tfg:loose/dripstone', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.dripstone.sound) - .itemTexture('tfg:item/loose/dripstone') - .rockTypeModel(global.STONE_CHARACS.dripstone.type) - .translationKey("block.tfg.loose.dripstone") - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.dripstone.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .tagItem("rnr:loose_rock_items") - - event.create('tfg:loose/crackrack', 'tfc:loose_rock') - .soundType(global.STONE_CHARACS.crackrack.sound) - .itemTexture('tfg:item/loose/crackrack') - .rockTypeModel(global.STONE_CHARACS.crackrack.type) - .translationKey("block.tfg.loose.crackrack") - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('tfc:loose_rocks') - .tagItem('tfc:any_knapping') - .tagItem('tfc:rock_knapping') - .tagItem(`tfc:${global.STONE_CHARACS.crackrack.type}_rock`) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .tagItem("rnr:loose_rock_items") - - // #endregion Loose rocks - - // #region Cobblestones - - // Deepslate - event.create('tfg:rock/mossy_cobble_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Blackstone - event.create('tfg:rock/cobble_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .textureAll('minecraft:block/blackstone_top') - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Dripstone - event.create('tfg:rock/cobble_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Crackrack - event.create('tfg:rock/cobble_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cobble_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_cobble_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:cobblestone') - .tagBoth('forge:cobblestone/normal') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_cobble_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #region Smooth (Polished/Cut) Stones - - event.create('tfg:rock/polished_crackrack') - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth('forge:smooth_stone') - .tagBoth('tfc:igneous_intrusive_items') - .tagBoth('tfc:rock/smooth') - .mapColor('crimson_stem') - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/polished_crackrack_${shape}`, shape) - .soundType(global.STONE_CHARACS.crackrack.sound) - .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Smooth (Polished/Cut) Stones - - // #region Gravels - event.create('tfg:rock/gravel_deepslate') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_blackstone') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_dripstone') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - event.create('tfg:rock/gravel_crackrack') - .soundType('gravel') - .tagBoth('forge:gravel') - .tagBoth('tfc:rock/gravel') - .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) - .mapColor(global.STONE_CHARACS.crackrack.mapColor) - .tagBlock('minecraft:mineable/shovel') - .tagBlock('tfc:can_landslide') - .fullBlock(true) - .opaque(true) - - // #endregion Gravels - - // #region Bricks / Decorative - - // Deepslate - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/cracked_deepslate_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_tiles_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .textureAll('minecraft:block/cracked_deepslate_tiles') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_deepslate') - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_deepslate_${shape}`, shape) - .soundType(global.STONE_CHARACS.deepslate.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) - .mapColor(global.STONE_CHARACS.deepslate.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Blackstone - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .textureAll('minecraft:block/cracked_polished_blackstone_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_blackstone') - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_blackstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.blackstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) - .mapColor(global.STONE_CHARACS.blackstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Dripstone - event.create('tfg:rock/cracked_bricks_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_dripstone') - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_dripstone_${shape}`, shape) - .soundType(global.STONE_CHARACS.dripstone.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) - .mapColor(global.STONE_CHARACS.dripstone.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // Crackrack - SHAPES.forEach(shape => { - event.create(`tfg:rock/cracked_bricks_nether_${shape}`, shape) - .soundType(global.STONE_CHARACS.nether.sound) - .textureAll('minecraft:block/cracked_nether_bricks') - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - event.create('tfg:rock/mossy_bricks_nether') - .soundType(global.STONE_CHARACS.nether.sound) - .tagBoth('minecraft:stone_bricks') - .tagBoth('forge:stone_bricks') - .tagBoth('tfc:rock/bricks') - .tagBoth('tfc:rock/mossy_bricks') - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - - SHAPES.forEach(shape => { - event.create(`tfg:rock/mossy_bricks_nether_${shape}`, shape) - .soundType(global.STONE_CHARACS.nether.sound) - .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) - .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) - .mapColor(global.STONE_CHARACS.nether.mapColor) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - }) - - // #endregion Bricks / Decorative - - // #region Plants - event.create('tfg:mushroom_roots', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfc:plants') - - event.create('tfg:mushroom_sprouts', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfc:plants') - - event.create('tfg:charred_log') - .fullBlock(true) - .woodSoundType() - .property(BlockProperties.AXIS) - .tagBoth('minecraft:mineable/axe') - .tagBoth('tfc:logs_that_log') - .tagBoth('afc:logs_that_log') - .tagBoth('minecraft:logs') - .mapColor('black') -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/dimension_markers.js b/kubejs/startup_scripts/tfg/dimension_markers.js index 053035b80..51301a50b 100644 --- a/kubejs/startup_scripts/tfg/dimension_markers.js +++ b/kubejs/startup_scripts/tfg/dimension_markers.js @@ -1,6 +1,64 @@ // priority: 0 "use strict"; + +function registerTFGDimensionMarkerItems(event) { + event.create('tfg:marker/earth_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/moon_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/mars_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/venus_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/mercury_orbit').tag('c:hidden_from_recipe_viewers') + event.create('tfg:marker/glacio_orbit').tag('c:hidden_from_recipe_viewers') +} + +function registerTFGDimensionMarkerBlocks(event) { + + event.create('tfg:marker/moon') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/moon' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/mars') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/mars' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/venus') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/venus' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/mercury') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/mercury' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) + + event.create('tfg:marker/glacio') + .stoneSoundType() + .item(item => { + item.modelJson({ parent: 'tfg:block/marker/glacio' }) + }) + .tagBlock('c:hidden_from_recipe_viewers') + .fullBlock(true) + .opaque(true) +} + function registerTFGDimensionMarkers(event) { event.create('ad_astra:earth_orbit') diff --git a/kubejs/startup_scripts/tfg/equipment/items.weapons.js b/kubejs/startup_scripts/tfg/equipment/items.weapons.js new file mode 100644 index 000000000..8ad88500c --- /dev/null +++ b/kubejs/startup_scripts/tfg/equipment/items.weapons.js @@ -0,0 +1,15 @@ +"use strict"; + +function registerTFGWeaponItems(event) { + + //Tacz Helper Region + event.create('tfg:flintlock_mechanism') + event.create('tfg:advanced_clockwork_mechanism') + event.create('tfg:certus_mechanism') + + event.create('tfg:small_bullet_casing') + event.create('tfg:shell_bullet_casing') + event.create('tfg:large_bullet_casing') + event.create('tfg:nitrocellulose') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js b/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js new file mode 100644 index 000000000..e71f03cab --- /dev/null +++ b/kubejs/startup_scripts/tfg/europa/blocks.europa_deco.js @@ -0,0 +1,39 @@ +"use strict"; + +function registerTFGWorldGenEuropaDecoBlocks(event) { + + + event.create('tfg:corallium_arenicolus_0', 'tfg:tall_decorative_plant') + .height(2) + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .lightLevel(0.4) + .renderType('translucent') + + event.create('tfg:corallium_arenicolus_1', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_2', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .renderType('translucent') + .box(0, 0, 0, 16, 4, 16) + + event.create('tfg:corallium_arenicolus_3', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_4', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + + event.create('tfg:corallium_arenicolus_5', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:venus_plants') + .box(3, 0, 3, 13, 14, 13) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/europa/materials.europa.js b/kubejs/startup_scripts/tfg/europa/materials.europa.js new file mode 100644 index 000000000..a4fb06ddd --- /dev/null +++ b/kubejs/startup_scripts/tfg/europa/materials.europa.js @@ -0,0 +1,18 @@ +"use strict"; + +function registerTFGEuropaMaterials(event) { + + event.create('tfg:etrium') + //.components('1x niobium', '1x molybdenum', '1x ruthenium', '3x carbon', '1x monochloramine') + .color(0x7BFCD7) + .secondaryColor(0x3582D2) + .iconSet(GTMaterialIconSet.getByName('tfc_silver')) + .ore() + .ingot() + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD + ) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fluids.js b/kubejs/startup_scripts/tfg/fluids.js index 0133e5b7d..287f1dd0d 100644 --- a/kubejs/startup_scripts/tfg/fluids.js +++ b/kubejs/startup_scripts/tfg/fluids.js @@ -3,17 +3,21 @@ const registerTFGFluids = (event) => { - //#region Mars + // Moon + event.create('tfg:cryogenized_fluix') + .thickTexture(0xde8cfb) + .bucketColor(0xde8cfb) + .luminosity(14) + .temperature(10) + // Mars event.create('tfg:heavy_ammoniacal_water') .thinTexture(0x08733f) .bucketColor(0x08733f) .temperature(236) .noBlock() - //#endregion - - //#region Venus + // Venus event.create('tfg:sulfur_fumes') .stillTexture('tfg:block/planets/venus/sulfur_fumes_still') .flowingTexture('tfg:block/planets/venus/sulfur_fumes_flow') @@ -29,6 +33,5 @@ const registerTFGFluids = (event) => { .bucketColor(0xc4d984) .temperature(1000) .renderType('translucent') - //#endregion } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfc/materials.js b/kubejs/startup_scripts/tfg/icon_sets.js similarity index 84% rename from kubejs/startup_scripts/tfc/materials.js rename to kubejs/startup_scripts/tfg/icon_sets.js index 16e9dc540..4730d201a 100644 --- a/kubejs/startup_scripts/tfc/materials.js +++ b/kubejs/startup_scripts/tfg/icon_sets.js @@ -1,45 +1,45 @@ // priority: 0 "use strict"; -const registerTFCMaterials = (event) => { - const registerStoneMaterial = (rockType, color) => - event.create(`tfg:${rockType}`) - .dust() - .color(color) - .iconSet(GTMaterialIconSet.ROUGH) - .flags( - GTMaterialFlags.MORTAR_GRINDABLE, - GTMaterialFlags.NO_SMASHING, - GTMaterialFlags.NO_SMELTING - ) +function registerTFGIconSets(event) { - /* TFC Stone Types Materials */ - registerStoneMaterial('gabbro', 0x7F8081) - registerStoneMaterial('shale', 0x686567) - registerStoneMaterial('claystone', 0xAF9377) - registerStoneMaterial('limestone', 0xA09885) - registerStoneMaterial('conglomerate', 0xA3977F) - registerStoneMaterial('dolomite', 0x515155) - registerStoneMaterial('chert', 0x7A6756) - registerStoneMaterial('chalk', 0xA4A39F) - registerStoneMaterial('rhyolite', 0x726D69) - registerStoneMaterial('dacite', 0x979797) - registerStoneMaterial('slate', 0x989287) - registerStoneMaterial('phyllite', 0x706B61) - registerStoneMaterial('schist', 0x6E735C) - registerStoneMaterial('gneiss', 0x6A6D60) + event.create('tfc_borax').parent('rough') + event.create('tfc_gypsum').parent('rough') + event.create('tfc_graphite').parent('rough') + event.create('tfc_saltpeter').parent('fine') + event.create('tfc_sulfur').parent('fine') - registerStoneMaterial('dripstone', 0x927965) - - registerStoneMaterial('moon_stone', 0x506869) - registerStoneMaterial('moon_deepslate', 0x45474D) - registerStoneMaterial('mars_stone', 0xD08957) - registerStoneMaterial('venus_stone', 0xD5A664) - registerStoneMaterial('mercury_stone', 0x723E49) - registerStoneMaterial('glacio_stone', 0x9897BF) - - // Specialized icon sets for TFC's own + event.create('tfc_amethyst').parent('ruby') + event.create('tfc_redstone').parent('fine') + event.create('tfc_diamond').parent('diamond') + event.create('tfc_emerald').parent('emerald') + event.create('tfc_lapis').parent('lapis') + event.create('tfc_opal').parent('opal') + event.create('tfc_pyrite').parent('bright') + event.create('tfc_ruby').parent('ruby') + event.create('tfc_sapphire').parent('gem_horizontal') + event.create('tfc_topaz').parent('gem_vertical') + event.create('tfc_realgar').parent('emerald') + + event.create('tfc_bismuth').parent('bright') + event.create('tfc_cassiterite').parent('bright') + event.create('tfc_garnierite').parent('bright') + event.create('tfc_hematite').parent('metallic') + event.create('tfc_limonite').parent('metallic') + event.create('tfc_magnetite').parent('dull') + event.create('tfc_malachite').parent('shiny') + event.create('tfc_copper').parent('bright') + event.create('tfc_gold').parent('shiny') + event.create('tfc_silver').parent('shiny') + event.create('tfc_sphalerite').parent('dull') + event.create('tfc_tetrahedrite').parent('dull') + event.create('tfc_chromite').parent('dull') + + event.create('nether_quartz').parent('quartz') +} +function modifyTFGIconSets(event) { + GTMaterials.Coal.setMaterialIconSet(GTMaterialIconSet.LIGNITE) GTMaterials.Borax.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) GTMaterials.Gypsum.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gypsum')) diff --git a/kubejs/startup_scripts/tfg/items.aircraft.js b/kubejs/startup_scripts/tfg/items.aircraft.js new file mode 100644 index 000000000..651171046 --- /dev/null +++ b/kubejs/startup_scripts/tfg/items.aircraft.js @@ -0,0 +1,41 @@ +"use strict"; + +function registerTFGAircraftItems(event) { + + event.create('tfg:scaffolding_frame') + + event.create('tfg:airship_hull') + + event.create('tfg:airship_balloon') + + event.create('tfg:lv_aircraft_engine') + + event.create('tfg:hv_aircraft_engine') + + event.create('tfg:ev_aircraft_engine') + + event.create('tfg:black_steel_plated_airplane_propeller') + + event.create('tfg:redblu_steel_plated_airplane_propeller') + + event.create('tfg:stainless_steel_plated_airplane_propeller') + + event.create('tfg:titanium_plated_airplane_propeller') + + event.create('tfg:redblu_steel_landing_gear') + + event.create('tfg:aluminium_landing_gear') + + event.create('tfg:stainless_steel_landing_gear') + + event.create('tfg:titanium_landing_gear') + + event.create('tfg:redblu_steel_hull_reinforcement') + + event.create('tfg:aluminium_hull_reinforcement') + + event.create('tfg:stainless_steel_hull_reinforcement') + + event.create('tfg:titanium_hull_reinforcement') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/items.food.js b/kubejs/startup_scripts/tfg/items.food.js index 5a6b9888d..2ff882c35 100644 --- a/kubejs/startup_scripts/tfg/items.food.js +++ b/kubejs/startup_scripts/tfg/items.food.js @@ -2,55 +2,10 @@ "use strict"; function registerTFGFoodItems(event) { - - event.create('tfg:food/raw_birt') - .translationKey('item.tfg.food.raw_birt') - .food(food => food.hunger(2).saturation(1) - .effect('species:birtd', 50, 0, 1) - .eaten(ctx => { - ctx.player.level.runCommandSilent(`playsound species:effect.birtd.applied player ${ctx.player.username} ${ctx.player.x} ${ctx.player.y} ${ctx.player.z} 1 1`) - })) - - event.create('tfg:food/cooked_birt') - .translationKey('item.tfg.food.cooked_birt') - .food(food => food.hunger(4).saturation(2)) - - event.create('tfg:food/raw_limpet') - .translationKey('item.tfg.food.raw_limpet') - .food(food => food.hunger(2).saturation(1) - .effect('minecraft:hunger', 100, 0, 1)) - - event.create('tfg:food/cooked_limpet') - .translationKey('item.tfg.food.cooked_limpet') - .food(food => food.hunger(4).saturation(2)) - - event.create('tfg:food/raw_crawlermari') - .translationKey('item.tfg.food.raw_crawlermari') - .food(food => food.hunger(2).saturation(1)) - - event.create('tfg:food/cooked_crawlermari') - .translationKey('item.tfg.food.cooked_crawlermari') - .food(food => food.hunger(4).saturation(2)) - - global.FOOD_FRUIT.forEach(fruit => { - event.create(`tfg:food/freeze_dried/${fruit.name}`) - .translationKey(`item.tfg.food.freeze_dried/${fruit.name}`) - .texture(`tfg:item/food/freeze_dried_${fruit.name}`) - .tag('tfg:space_food') - .food(food => food.hunger(4).saturation(1) - .eaten(ctx => { - ctx.player.give('tfg:used_foil_pack') - })) - }) - - event.create('tfg:food/calorie_paste') - .translationKey('item.tfg.food.calorie_paste') - .food(food => food.hunger(8).saturation(5) - .eaten(ctx => { - ctx.player.give('tfg:used_foil_pack') - })) - .texture('tfg:item/food/calorie_paste') - .tag('tfg:space_food') + + // Meal bags + event.create('tfg:foil_pack') + event.create('tfg:clean_foil_pack') event.create('tfg:used_foil_pack') .translationKey('item.tfg.food.used_foil_pack') @@ -68,6 +23,61 @@ function registerTFGFoodItems(event) { .texture('tfg:item/food/meal_bag') .tag('tfg:space_food') + // Birt + event.create('tfg:food/raw_birt') + .translationKey('item.tfg.food.raw_birt') + .food(food => food.hunger(2).saturation(1) + .effect('species:birtd', 50, 0, 1) + .eaten(ctx => { + ctx.player.level.runCommandSilent(`playsound species:effect.birtd.applied player ${ctx.player.username} ${ctx.player.x} ${ctx.player.y} ${ctx.player.z} 1 1`) + })) + + event.create('tfg:food/cooked_birt') + .translationKey('item.tfg.food.cooked_birt') + .food(food => food.hunger(4).saturation(2)) + + // Limpet + event.create('tfg:food/raw_limpet') + .translationKey('item.tfg.food.raw_limpet') + .food(food => food.hunger(2).saturation(1) + .effect('minecraft:hunger', 100, 0, 1)) + + event.create('tfg:food/cooked_limpet') + .translationKey('item.tfg.food.cooked_limpet') + .food(food => food.hunger(4).saturation(2)) + + // Crawlermari + event.create('tfg:food/raw_crawlermari') + .translationKey('item.tfg.food.raw_crawlermari') + .food(food => food.hunger(2).saturation(1)) + + event.create('tfg:food/cooked_crawlermari') + .translationKey('item.tfg.food.cooked_crawlermari') + .food(food => food.hunger(4).saturation(2)) + + // Freeze dried fruit + global.FOOD_FRUIT.forEach(fruit => { + event.create(`tfg:food/freeze_dried/${fruit.name}`) + .translationKey(`item.tfg.food.freeze_dried/${fruit.name}`) + .texture(`tfg:item/food/freeze_dried_${fruit.name}`) + .tag('tfg:space_food') + .food(food => food.hunger(4).saturation(1) + .eaten(ctx => { + ctx.player.give('tfg:used_foil_pack') + })) + }) + + // Calorie paste + event.create('tfg:food/calorie_paste') + .translationKey('item.tfg.food.calorie_paste') + .food(food => food.hunger(8).saturation(5) + .eaten(ctx => { + ctx.player.give('tfg:used_foil_pack') + })) + .texture('tfg:item/food/calorie_paste') + .tag('tfg:space_food') + + // Sunflower seeds event.create('tfg:roasted_sunflower_seeds') .translationKey('item.tfg.roasted_sunflower_seeds') .texture('tfg:item/roasted_sunflower_seeds') @@ -486,4 +496,10 @@ function registerTFGFoodItems(event) { .texture('tfg:item/food/allspice'); //#endregion + + // Animal products + event.create('tfg:wraptor_sugar') + .tag('tfg:sugars') + .tag('tfg:haste_ingredients') + .tag('tfc:sweetener') } diff --git a/kubejs/startup_scripts/tfg/items.js b/kubejs/startup_scripts/tfg/items.js index 3c18ddc84..4183c56a8 100644 --- a/kubejs/startup_scripts/tfg/items.js +++ b/kubejs/startup_scripts/tfg/items.js @@ -8,8 +8,22 @@ const registerTFGItems = (event) => { registerTFGFoodItems(event) + registerTFGPrimitiveItems(event); + registerTFGNuclearItems(event); + registerTFGWoodItems(event); + registerTFGMedicineItems(event); + registerTFGAircraftItems(event); + registerTFGSpaceItems(event); + registerTFGMarsItems(event); + registerTFGDimensionMarkerItems(event); + registerTFGBiotechItems(event); + registerTFGWeaponItems(event); + registerTFGRockItems(event); + + event.create('tfg:terra_firma_greg') + .tag('c:hidden_from_recipe_viewers') - // #region Electronics + // Electronics event.create('tfg:unfinished_electron_tube', 'create:sequenced_assembly') event.create('tfg:unfinished_vacuum_tube', 'create:sequenced_assembly') event.create('tfg:unfinished_basic_electronic_circuit', 'create:sequenced_assembly') @@ -17,540 +31,22 @@ const registerTFGItems = (event) => { event.create('tfg:unfinished_inscriber_accumulation_press') event.create('tfg:vitrified_pearl') event.create('tfg:cryo_fluix_pearl') - .translationKey('tfg:cryo_fluix_pearl') - // #endregion - - // #region Space - - // Orbit dimension markers - event.create('tfg:marker/earth_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/moon_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/mars_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/venus_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/mercury_orbit').tag('c:hidden_from_recipe_viewers') - event.create('tfg:marker/glacio_orbit').tag('c:hidden_from_recipe_viewers') - - global.AD_ASTRA_WOOD.forEach(wood => { - event.create(`tfg:wood/lumber/${wood.name}`) - .translationKey(`item.tfg.${wood.name}_lumber`) - .tag('tfc:lumber') - }) - // #endregion - - // #region Paper making - event.create('tfg:hardwood_strip') - .translationKey('item.tfg.hardwood_strip') - - event.create('tfg:soaked_hardwood_strip') - .translationKey('item.tfg.soaked_hardwood_strip') - - event.create('tfg:soaked_unrefined_paper') - .translationKey('item.tfg.soaked_unrefined_paper') - - event.create('tfg:terra_firma_greg') - .translationKey('item.tfg.terra_firma_greg') - .tag('c:hidden_from_recipe_viewers') - - //#region chalk creation - event.create('tfg:unfired_chalk') - .translationKey('item.tfg.unfired_chalk') - - Color.DYE.forEach((dyeName, dye) => { - event.create(`tfg:wet_${dyeName}_chalk`) - .translationKey(`item.tfg.wet_${dyeName}_chalk`) - .textureJson({ - layer0: 'tfg:item/unfired_chalk' - }) - .color(0, dye.getHexJS()); - }); - //#endregion - - - // #region Molds - global.TFG_EXTRUDER_MOLDS.forEach(id => event.create(id)) - - global.TFG_CASTING_MOLDS.forEach(id => event.create(id)) - // #endregion - - // #region Stone bricks and dusts - event.create('tfg:brick/deepslate') - .tag(`tfc:metamorphic_items`) - .translationKey('item.tfg.brick.deepslate') - - event.create('tfg:brick/dripstone') - .tag(`tfc:sedimentary_items`) - .translationKey('item.tfg.brick.dripstone') - - event.create('tfg:brick/moon_stone') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.brick.moon_stone') - - event.create('tfg:brick/moon_deepslate') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.moon_deepslate') - - event.create('tfg:brick/mars_stone') - .tag(`tfc:sedimentary_items`) - .translationKey('item.tfg.brick.mars_stone') - - event.create('tfg:brick/venus_stone') - .tag(`tfc:igneous_extrusive_items`) - .translationKey('item.tfg.brick.venus_stone') - - event.create('tfg:brick/mercury_stone') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.brick.mercury_stone') - - event.create('tfg:brick/glacio_stone') - .tag(`tfc:igneous_extrusive_items`) - .translationKey('item.tfg.brick.glacio_stone') - - event.create('tfg:brick/permafrost') - .translationKey('item.tfg.brick.permafrost') - - event.create('tfg:brick/red_granite') - .tag(`tfc:igneous_intrusive_items`) - .translationKey('item.tfg.red_granite') - - // #endregion - - // #region Primitive rubber gloves - event.create('tfg:prepared_leather_gloves') - .translationKey('item.tfg.prepared_leather_gloves') - - event.create('tfg:latex_soaked_gloves') - .translationKey('item.tfg.latex_soaked_gloves') - // #endregion - - //#region Medicine - - const pill = [ - 'haste', - 'night_vision', - 'poison', - 'regeneration', - 'slowness', - 'speed', - 'water_breathing', - 'weakness' - ] - const pill_names = [ - 'Haste', - 'Night Vision', - 'Poison', - 'Regeneration', - 'Slowness', - 'Speed', - 'Water Breathing', - 'Weakness' - ] - - pill.forEach((pill_array, index) => { - const pill_names_array = pill_names[index]; - - event.create(`tfg:${pill_array}_pill`) - .translationKey(`item.tfg.${pill_array}_pill`) - .tooltip(`§9${pill_names_array} (08:00)`) - - event.create(`tfg:${pill_array}_tablet`) - .translationKey(`item.tfg.${pill_array}_tablet`) - .tooltip(`§9${pill_names_array} (30:00)`) - }) - - event.create(`tfg:antipoison_pill`) - .translationKey(`item.tfg.antipoison_pill`) - .tooltip(`§9Cures Poison`) - - event.create(`tfg:antipoison_tablet`) - .translationKey(`item.tfg.antipoison_tablet`) - .tooltip(`§9Cures All Harmful Effects`) - - //salvos - - const salvo = [ - 'absorption', - 'fire_resistance', - 'invisibility', - 'luck', - 'resistance' - ] - const salvo_names = [ - 'Absorption', - 'Fire Resistance', - 'Invisibility', - 'Luck', - 'Resistance' - ] - - salvo.forEach((salvo_array, index) => { - const salvo_names_array = salvo_names[index]; - - event.create(`tfg:${salvo_array}_salvo`) - .translationKey(`item.tfg.${salvo_array}_salvo`) - .tooltip(`§9${salvo_names_array} (08:00)`) - }) - - event.create(`tfg:instant_health_salvo`) - .translationKey(`item.tfg.instant_health_salvo`) - .tooltip(`§9Instant Health II`) - //#endregion - - //#region Misc - event.create('tfg:paraffin_wax') - event.create('tfg:conifer_rosin') - event.create('tfg:foil_pack') - event.create('tfg:clean_foil_pack') - event.create('tfg:flint_club_head') event.create('tfg:uv_led') event.create('tfg:smd_uv_led') - event.create('tfg:twigs/strophar') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/strophar') - event.create('tfg:twigs/aeronos') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/aeronos') - event.create('tfg:twigs/glacian') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/glacian') - event.create('tfg:twigs/alphacene') - .tag('tfc:twigs') - .texture('tfg:item/wood/twig/alphacene') - - event.create('tfg:cobalt_brass_wheel') - .translationKey('item.tfg.cobalt_brass_wheel') - //#endregion - - //#region Cloth & String - event.create('tfg:polycaprolactam_fabric') - .translationKey('item.tfg.polycaprolactam_fabric') - - event.create('tfg:polycaprolactam_string') - .translationKey('item.tfg.polycaprolactam_string') - - event.create('tfg:phantom_silk') - .translationKey('item.tfg.phantom_silk') - - event.create('tfg:phantom_thread') - .translationKey('item.tfg.phantom_thread') - - event.create('tfg:space_suit_fabric') - .translationKey('item.tfg.space_suit_fabric') - //#endregion - - //#region Tools - event.create('tfg:flint_arrow_head') - .translationKey('item.tfg.flint_arrow_head') - - event.create('tfg:fletching') - .translationKey('item.tfg.fletching') - - event.create('tfg:armor_stand_arms') - .translationKey('item.tfg.armor_stand_arms') - - event.create('tfg:harvest_basket') - .translationKey('item.tfg.harvest_basket') - .parentModel('tfg:item/harvest_basket') - .maxDamage(128) - - event.create('tfg:aluminium_harvest_basket') - .translationKey('item.tfg.aluminium_harvest_basket') - .parentModel('tfg:item/aluminium_harvest_basket') - .unstackable() - - event.create('tfg:stainless_steel_needle') - .translationKey('item.tfg.stainless_steel_needle') - .unstackable() - .maxDamage(9999) - - //Fishing Nets - event.create('tfg:fishing_net/wood') - .translationKey('item.tfg.fishing_net.wood') - .parentModel('tfg:item/fishing_nets/wood_fishing_net') - .texture('tfg:item/fishing_nets/wood_fishing_net') - .maxDamage(112) - - event.create('tfg:fishing_net/brass') - .translationKey('item.tfg.fishing_net.brass') - .parentModel('tfg:item/fishing_nets/brass_fishing_net') - .texture('tfg:item/fishing_nets/brass_fishing_net') - .maxDamage(326) - - event.create('tfg:fishing_net/rose_gold') - .translationKey('item.tfg.fishing_net.rose_gold') - .parentModel('tfg:item/fishing_nets/rose_gold_fishing_net') - .texture('tfg:item/fishing_nets/rose_gold_fishing_net') - .maxDamage(380) - - event.create('tfg:fishing_net/sterling_silver') - .translationKey('item.tfg.fishing_net.sterling_silver') - .parentModel('tfg:item/fishing_nets/sterling_silver_fishing_net') - .texture('tfg:item/fishing_nets/sterling_silver_fishing_net') - .maxDamage(380) - - event.create('tfg:fishing_net/invar') - .translationKey('item.tfg.fishing_net.invar') - .parentModel('tfg:item/fishing_nets/invar_fishing_net') - .texture('tfg:item/fishing_nets/invar_fishing_net') - .maxDamage(740) - - event.create('tfg:fishing_net/tin_alloy') - .translationKey('item.tfg.fishing_net.tin_alloy') - .parentModel('tfg:item/fishing_nets/tin_alloy_fishing_net') - .texture('tfg:item/fishing_nets/tin_alloy_fishing_net') - .maxDamage(710) - - event.create('tfg:fishing_net/cupronickel') - .translationKey('item.tfg.fishing_net.cupronickel') - .parentModel('tfg:item/fishing_nets/cupronickel_fishing_net') - .texture('tfg:item/fishing_nets/cupronickel_fishing_net') - .maxDamage(560) - - event.create('tfg:fishing_net/magnalium') - .translationKey('item.tfg.fishing_net.magnalium') - .parentModel('tfg:item/fishing_nets/magnalium_fishing_net') - .texture('tfg:item/fishing_nets/magnalium_fishing_net') - .maxDamage(1830) - - //#endregion - - //#region Immersive Aircraft Impl - event.create('tfg:scaffolding_frame') - .translationKey('item.tfg.scaffolding_frame') - - event.create('tfg:airship_hull') - .translationKey('item.tfg.airship_hull') - - event.create('tfg:airship_balloon') - .translationKey('item.tfg.airship_balloon') - - event.create('tfg:lv_aircraft_engine') - .translationKey('item.tfg.lv_aircraft_engine') - - event.create('tfg:hv_aircraft_engine') - .translationKey('item.tfg.hv_aircraft_engine') - - event.create('tfg:ev_aircraft_engine') - .translationKey('item.tfg.ev_aircraft_engine') - - event.create('tfg:black_steel_plated_airplane_propeller') - .translationKey('item.tfg.black_steel_plated_airplane_propeller') - - event.create('tfg:redblu_steel_plated_airplane_propeller') - .translationKey('item.tfg.redblu_steel_plated_airplane_propeller') - - event.create('tfg:stainless_steel_plated_airplane_propeller') - .translationKey('item.tfg.stainless_steel_plated_airplane_propeller') - - event.create('tfg:titanium_plated_airplane_propeller') - .translationKey('item.tfg.titanium_plated_airplane_propeller') - - event.create('tfg:redblu_steel_landing_gear') - .translationKey('item.tfg.redblu_steel_landing_gear') - - event.create('tfg:aluminium_landing_gear') - .translationKey('item.tfg.aluminium_landing_gear') - - event.create('tfg:stainless_steel_landing_gear') - .translationKey('item.tfg.stainless_steel_landing_gear') - - event.create('tfg:titanium_landing_gear') - .translationKey('item.tfg.titanium_landing_gear') - - event.create('tfg:redblu_steel_hull_reinforcement') - .translationKey('item.tfg.redblu_steel_hull_reinforcement') - - event.create('tfg:aluminium_hull_reinforcement') - .translationKey('item.tfg.aluminium_hull_reinforcement') - - event.create('tfg:stainless_steel_hull_reinforcement') - .translationKey('item.tfg.stainless_steel_hull_reinforcement') - - event.create('tfg:titanium_hull_reinforcement') - .translationKey('item.tfg.titanium_hull_reinforcement') - //#endregion - - //Tacz Helper Region - event.create('tfg:flintlock_mechanism') - .translationKey('item.tfg.flintlock_mechanism') - event.create('tfg:advanced_clockwork_mechanism') - .translationKey('item.tfg.advanced_clockwork_mechanism') - event.create('tfg:certus_mechanism') - .translationKey('item.tfg.certus_mechanism') - - event.create('tfg:small_bullet_casing') - .translationKey('tfg:small_bullet_casing') - event.create('tfg:shell_bullet_casing') - .translationKey('tfg:shell_bullet_casing') - event.create('tfg:large_bullet_casing') - .translationKey('tfg:large_bullet_casing') - event.create('tfg:nitrocellulose') - .translationKey('tfg:nitrocellulose') - //endregion - - //Tier2 Insulation - event.create('tfg:aes_wool') - .translationKey('tfg:aes_wool') - event.create('tfg:aes_compressed_wool') - .translationKey('tfg:aes_compressed_wool') - event.create('tfg:aes_insulation_sheet') - .translationKey('tfg:aes_insulation_sheet') - event.create('tfg:aes_insulation_roll') - .translationKey('tfg:aes_insulation_roll') - //endregion - - //Tier 2 Rocket Parts - event.create('tfg:rocket_fin_t2') - event.create('tfg:rocket_cone_t2') - //endregion - - //Tier 3 Insulation - event.create('tfg:aes_polyurethane') - event.create('tfg:mli_shielding') - event.create('tfg:silica_aerogel') - //endregion - - //Tier 3 Rocket Parts - event.create('tfg:rocket_fin_t3') - event.create('tfg:rocket_cone_t3') - event.create('tfg:elite_power_thruster') - - event.create('tfg:better_space_suit_fabric') - //endregion - - //#region Universal compost items - event.create('tfg:universal_compost_browns') - .tag('tfc:compost_browns_low') - - event.create('tfg:universal_compost_greens') - .tag('tfc:compost_greens_low') - //#endregion - - //#region Etched Diamond Etching Tip - event.create('tfg:etching_diamond_tip') - .translationKey("item.tfg.etching_diamond_tip") - //#endregion - - //#region Solar Panel - - event.create('tfg:photo_cell_t1') - .translationKey("item.tfg.basic.photovoltaic.cell") - .texture('tfg:item/photo_cell_t1') - //#endregion - - //#region Mars Animals - event.create('tfg:wraptor_sugar') - .tag('tfg:sugars') - .tag('tfg:haste_ingredients') - .tag('tfc:sweetener') - //#endregion - - //#region Flax Stuff - event.create('tfg:flax_waste') - .tag('tfc:scrapable') - event.create('tfg:flax_tow') - .tag('tfg:burlap_fiber') - .tag('tfc:compost_browns') - event.create('tfg:flax_line') - .tag('tfc:compost_browns_low') - event.create('tfg:linen_thread') - .tag('forge:string') - event.create('tfg:linen_cloth') - .tag('forge:cloth') - .tag('tfc:sewing_light_cloth') - - event.create('tfg:flax_bundle') - .tag('tfc:scrapable') - .translationKey('item.tfg.flax_bundle') - .texture('tfg:item/flax_bundle') - - event.create('tfg:bundled_scraped_flax') - .tag('tfc:scrapable') - .translationKey('item.tfg.bundled_scraped_flax') - .texture('tfg:item/bundled_scraped_flax') - - //#region Lab Equipment - - global.LAB_EQUIPMENT_CONTAINERS.forEach((item) => { - event.create(`tfg:${item.type}`, 'tfc:glass_bottle') - .fluidTagAccept('tfg:not_solid') - .capacity(item.capacity) - .translationKey(`item.tfg.lab_equipment.${item.type}`) - .tag('tfg:lab_equipment_containers') - .tag('tfc:fluid_item_ingredient_empty_containers') - .tag('tfc:glass_bottles') - }) - - event.create('tfg:lab_equipment') - .translationKey('item.tfg.lab_equipment.lab_equipment') - .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set')) - - event.create('tfg:dirty_lab_equipment') - .translationKey('item.tfg.lab_equipment.dirty_lab_equipment') - .tooltip(Text.translatable('tfg.tooltip.lab_equipment.set_dirty')) - //#endregion - - // Empty Fission Rod - - event.create('tfg:empty_rod') - .translationKey('item.tfg.empty_road') - .texture('tfg:item/fuel_rod_empty') - .tag('tfg:fission_rods') - - event.create('tfg:refrigerant_pellet') - .translationKey('item.tfg.refrigerant_pellet') - .texture('tfg:item/refrigerant_pellet') - .tag('tfg:fission_coolant') - - // Moderator Line - - event.create('tfg:graphite_compound') - .translationKey('item.tfg.graphite_compound') - .texture('tfg:item/graphite_line/graphite_compound') - - event.create('tfg:raw_graphite_briquette') - .translationKey('item.tfg.raw_graphite_briquette') - .texture('tfg:item/graphite_line/raw_graphite_briquette') - - event.create('tfg:faulty_graphite_briquette') - .translationKey('item.tfg.faulty_graphite_briquette') - .texture('tfg:item/graphite_line/faulty_graphite_briquette') - - event.create('tfg:washed_graphite_briquette') - .translationKey('item.tfg.washed_graphite_briquette') - - event.create('tfg:pure_graphite_rod') - .translationKey('item.tfg.pure_graphite_rod') - .texture('tfg:item/graphite_line/pure_graphite_rod') - - event.create('tfg:impure_graphite_rod') - .translationKey('item.tfg.impure_graphite_rod') - .texture('tfg:item/graphite_line/impure_graphite_rod') - - event.create('tfg:annealed_graphite_rod') - .translationKey('item.tfg.annealed_graphite_rod') - - event.create('tfg:impure_annealed_graphite_rod') - .translationKey('item.tfg.impure_annealed_graphite_rod') - - event.create('tfg:graphite_moderator') - .translationKey('item.tfg.graphite_moderator') - .texture('tfg:item/graphite_line/graphite_moderator') - - event.create('tfg:impure_graphite_moderator') - .translationKey('item.tfg.impure_graphite_moderator') - .texture('tfg:item/graphite_line/impure_graphite_moderator') - - event.create('tfg:advanced_polymer_binder') - .translationKey('item.tfg.advanced_polymer_binder') - .texture('tfg:item/graphite_line/advanced_polymer_binder') - - //#region Bioline - - event.create('tfg:cellulose_matrix') - event.create('tfg:smooth_endoplasmic_reticula') - event.create('tfg:rough_endoplasmic_reticula') - event.create('tfg:alpha_keratin') - - //#endregion + // Molds + global.TFG_EXTRUDER_MOLDS.forEach(id => event.create(id)) + global.TFG_CASTING_MOLDS.forEach(id => event.create(id)) + + // Universal Circuits + event.create('tfg:ulv_universal_circuit') + event.create('tfg:lv_universal_circuit') + event.create('tfg:mv_universal_circuit') + event.create('tfg:hv_universal_circuit') + event.create('tfg:ev_universal_circuit') + event.create('tfg:iv_universal_circuit') + event.create('tfg:luv_universal_circuit') + event.create('tfg:zpm_universal_circuit') + event.create('tfg:uv_universal_circuit') + event.create('tfg:uhv_universal_circuit') } diff --git a/kubejs/startup_scripts/betterend/blocks.js b/kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js similarity index 69% rename from kubejs/startup_scripts/betterend/blocks.js rename to kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js index 49d5cf1fe..3043fc2ef 100644 --- a/kubejs/startup_scripts/betterend/blocks.js +++ b/kubejs/startup_scripts/tfg/mars/blocks.mars_deco.js @@ -1,31 +1,6 @@ -// priority: 0 "use strict"; -function registerBetterEndBlocks(event) { - - // Moon - - event.create('betterend:chorus_lily', 'tfc:ground_cover') - .soundType('cherry_wood') - .hardness(0.5) - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:mineable/hoe') - .tagBlock('tfg:do_not_destroy_in_space') - .mapColor('terracotta_white') - .box(0, 0, 0, 16, 6, 16) - .fullBlock(false) - .opaque(false) - .notSolid() - .renderType('cutout') - - // 1 block tall - createPlant(event, 'inflexia', 'moon') - createPlant(event, 'chorus_grass', 'moon') - createPlant(event, 'salteago', 'moon') - createPlant(event, 'vaiolush_fern', 'moon') - - - // Mars +function registerTFGWorldGenMarsDecoBlocks(event) { // 1 block tall createPlant(event, 'aeridium', 'mars') @@ -202,40 +177,74 @@ function registerBetterEndBlocks(event) { .tagBlock('tfg:do_not_destroy_in_space') .mapColor('color_orange') - // europa...? + // Ground cover - createPlant(event, 'crystal_grass', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'blooming_cooksonia', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'fracturn', 'unused') - .box(3, 0, 3, 13, 12, 13) - createPlant(event, 'jungle_grass', 'unused') - .box(3, 0, 3, 13, 12, 13) -} - -/** - * @param {any} event - * @param {string} id - * @param {string} planet - */ -function createPlant(event, id, planet) { - return event.create(`betterend:${id}`, 'tfg:decorative_plant') - .tagItem(`tfg:${planet}_plants`) - .tagBlock('minecraft:replaceable') - .tagBlock('tfg:do_not_destroy_in_space') + event.create('tfg:groundcover/glider_feather', 'tfc:ground_cover') + .box(4, 0, 4, 12, 2, 12) + .soundType('wool') + .groundCoverModelShape('feather') + .withPreexistingItem('wan_ancient_beasts:glider_feather') + .textureAll('wan_ancient_beasts:item/glider_feather') .tagBlock('tfc:can_be_snow_piled') -} -/** - * @param {any} event - * @param {string} id - * @param {string} planet - */ -function createWaterPlant(event, id, planet) { - return event.create(`betterend:${id}`, 'tfg:decorative_plant') - .tagItem(`tfg:${planet}_plants`) - .tagBlock('minecraft:replaceable') - .tagBlock('tfg:do_not_destroy_in_space') - .tagBlock('tfc:can_be_ice_piled') + event.create('tfg:groundcover/wraptor_feather', 'tfc:ground_cover') + .box(4, 0, 4, 12, 2, 12) + .soundType('wool') + .groundCoverModelShape('feather') + .withPreexistingItem('minecraft:feather') + .textureAll('tfg:item/wraptor_wool') + .tagBlock('tfc:can_be_snow_piled') + + event.create('tfg:groundcover/aeronos_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/aeronos') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/aeronos_stem') + .texture('all', 'ad_astra:block/aeronos_stem') + .texture('top', 'ad_astra:block/aeronos_stem_inside') + + event.create('tfg:groundcover/strophar_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/strophar') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/strophar_stem') + .texture('all', 'ad_astra:block/strophar_stem') + .texture('top', 'ad_astra:block/strophar_stem_inside') + + event.create('tfg:groundcover/glacian_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/glacian') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'ad_astra:block/glacian_log') + .texture('all', 'ad_astra:block/glacian_log') + .texture('top', 'ad_astra:block/glacian_log_top') + + event.create('tfg:groundcover/alphacene_stick', 'tfc:ground_cover') + .box(3, 0, 3, 13, 3, 13) + .groundCoverModelShape('twig') + .withPreexistingItem('tfg:twigs/alphacene') + .tagBlock('tfc:can_be_snow_piled') + .texture('particle', 'species:block/alphacene_mushroom_block') + .texture('all', 'species:block/alphacene_mushroom_block') + .texture('top', 'minecraft:block/mushroom_stem') + + // Misc + + event.create('tfg:spice', 'tfg:particle_emitter') + .textureAll('tfg:block/sand_spice') + .soundType('sand') + .hardness(2) + .resistance(6) + // makes it invisible on xaeros, so people can't use it to find the deposits :) + .mapColor('none') + .particleOffset(0.3, 1.5, 0.3) + .particleVelocity(0, 0.05, 0) + .particle('electric_spark') + .particleCount(2) + .particleForced(false) + .fullBlock(true) + .opaque(true) } \ No newline at end of file diff --git a/kubejs/startup_scripts/betterend/items.js b/kubejs/startup_scripts/tfg/mars/items.mars.js similarity index 88% rename from kubejs/startup_scripts/betterend/items.js rename to kubejs/startup_scripts/tfg/mars/items.mars.js index 3c23730ef..5460fe4f6 100644 --- a/kubejs/startup_scripts/betterend/items.js +++ b/kubejs/startup_scripts/tfg/mars/items.mars.js @@ -1,11 +1,7 @@ -// priority: 0 "use strict"; -/** - * - * @param {Registry.Item} event - */ -function registerBetterEndItems(event) { +function registerTFGMarsItems(event) { + event.create('betterend:bolux_mushroom_cooked') .food(food => { food.hunger(2) @@ -35,4 +31,5 @@ function registerBetterEndItems(event) { food.hunger(5) food.saturation(2) }) + } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/mars/materials.mars.js b/kubejs/startup_scripts/tfg/mars/materials.mars.js new file mode 100644 index 000000000..e03e5dc76 --- /dev/null +++ b/kubejs/startup_scripts/tfg/mars/materials.mars.js @@ -0,0 +1,105 @@ +"use strict"; + +function registerTFGMarsMaterials(event) { + + event.create('liquid_carbon_dioxide') + .liquid(100) //Not realistic but I want it to be cryogenic + .components('1x carbon', '2x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xDBFBFF) + + // Mars Ore Line + + event.create('lightweight_ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(760)) + + event.create('ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(815)) + + event.create('dense_ostrum_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(930)) + + event.create('residual_radioactive_concoction') + .liquid(new GTFluidBuilder().customStill().temperature(450)) + + // Atmosphere + + event.create('tfg:mars_air') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(208)) + .color('0xD08957') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('94x carbon_dioxide', '3x nitrogen', '2x argon', '1x oxygen') + + // TODO: move neon and xenon somewhere else + event.create('tfg:liquid_mars_air') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(58)) + .color('0xD08957') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('80x carbon_dioxide', '7x nitrogen', '5x argon', '3x oxygen', '1x neon', '1x krypton', '1x xenon') + + // Mars sap + + event.create('tfg:crimsene') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) + .gem() + .iconSet('lapis') + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .color(0xB12727) + .secondaryColor(0x562C3E) + + event.create('tfg:warpane') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) + .gem() + .iconSet('quartz') + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .color(0x45ABA9) + .secondaryColor(0x562C3E) + + event.create('tfg:mycelienzene') + .dust() + .color(0x9E7385) + + event.create('tfg:cooked_mycelienzane') + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1830)) + .color(0x9E7385) + + event.create('tfg:iodomethane') + .liquid() + .components('1x carbon', '3x hydrogen', '1x iodine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xAC45C6) + + event.create('tfg:trideuteroiodomethane') + .liquid() + .components('1x carbon', '3x deuterium', '1x iodine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xDD9DED) + + // Ores + + event.create('ostrum') + .components('2x pitchblende', '1x tricalcium_phosphate', '1x bauxite', '1x silver', '1x beryllium') + .color(0xbd7980) + .secondaryColor(0xA66C8D) + .iconSet(GTMaterialIconSet.getByName('tfc_cassiterite')) + .ingot() + .liquid() + .blastTemp(3700, 'mid', GTValues.VA[GTValues.EV]) + .flags( + GTMaterialFlags.DISABLE_DECOMPOSITION, + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD, + GTMaterialFlags.GENERATE_FRAME, + GTMaterialFlags.DISABLE_ALLOY_BLAST + ) + + event.create("ostrum_iodide") + .ingot() + .components('2x ostrum', 'iodine') + .blastTemp(3700, 'mid', GTValues.VA[GTValues.IV], (20*120)) + .iconSet(GTMaterialIconSet.BRIGHT) + .flags(GTMaterialFlags.GENERATE_GEAR) + .color(0xc696f2) + .secondaryColor(0x9b99ff) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/materials.js b/kubejs/startup_scripts/tfg/materials.js index b3cf42ebb..0682eee71 100644 --- a/kubejs/startup_scripts/tfg/materials.js +++ b/kubejs/startup_scripts/tfg/materials.js @@ -7,128 +7,19 @@ const registerTFGMaterials = (event) => { .color('0xFFFFFF') .formula('?') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + registerTFGPowerReworkMaterials(event); + registerTFGNuclearMaterials(event); + registerTFGBiolineMaterials(event); + registerTFGPrimitiveMaterials(event); + registerTFGRockMaterials(event); - event.create('hardwood') - .dust() - .flags(GTMaterialFlags.FLAMMABLE) - .iconSet(GTMaterialIconSet.WOOD) - .color('0x7a5225') - .secondaryColor('0x7a5225') + registerTFGRocketMaterials(event); + registerTFGMoonMaterials(event); + registerTFGMarsMaterials(event); + registerTFGVenusMaterials(event); + registerTFGEuropaMaterials(event); - event.create('thermochemically_treated_hardwood') - .dust() - .flags(GTMaterialFlags.FLAMMABLE) - .iconSet(GTMaterialIconSet.WOOD) - .color('0x52482c') - .secondaryColor('0x52482c') - - // Important tags to add to fluids: - // tfc:usable_in_pot, tfc:usable_in_barrel, tfc:usable_in_wooden_bucket - - event.create('tfg:latex') - .liquid() - .color(0xFBB982) - - event.create('tfg:vulcanized_latex') - .liquid() - .color(0xc79973) - - event.create('tfg:conifer_pitch') - .liquid() - .color(0xfbdf82) - .secondaryColor(0xff9d2e) - - // Ores - - event.create('tarkianite') - .ore() - .components('1x copper', '1x iron', '4x rhenium', '4x molybdenum', '8x sulfur') - .color(0x8bb054) - .secondaryColor(0x3d8021) - .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) - .addOreByproducts('sulfur', 'rhenium', 'molybdenum') - - // Cooking - - event.create('lactose') - .dust() - .iconSet(GTMaterialIconSet.FINE) - .color('0xede8da') - .secondaryColor('0xeddcad') - .components('12x carbon', '22x hydrogen', '11x oxygen') - - // Used as a TFC aluminium substitute so you can't make actual aluminium ingots early - event.create('aluminium_silicate') - .dust() - .ingot() - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1520)) - .components('2x aluminium', '1x silicon', '5x oxygen') - .iconSet('metallic') - .color(0xB6D3FF) - .secondaryColor(0x6F4AB3) - - // Space Rocket Materials - - event.create('rocket_alloy_t1') - .ingot() - .components('6x aluminium', '2x stainless_steel', '1x red_steel') - .color(0x333e47) - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) - .blastTemp(1760, 'low', 256, 900) - - event.create('rocket_alloy_t2') - .ingot() - .components('19x titanium', '4x vanadium', '3x aluminium', '3x chromium', '3x tin') - .color(0x3c253d) - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR, GTMaterialFlags.DISABLE_ALLOY_BLAST) - .blastTemp(3200, 'mid', 1024, 1100) - .liquid() - -/* event.create('rocket_alloy_t3') - .ingot() - .components('8x titanium', '9x tungsten_steel', '2x tantalum', '2x radon') - .color(0x6c678b) - //.secondaryColor(0xa59fc6) - .liquid() - .removeHazard() - .iconSet('metallic') - .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) - .blastTemp(4200, 'high', 4096, 1300) - */ - event.create('vitrified_asbestos') - .dust() - .fluid() - .iconSet('glass') - .color(0xcccccc) - - // Space suit gases (these all add up to 10B of components = 1B of space suit gas) - - event.create('tfg:compressed_nitrox') - .gas() - .components('8x nitrogen', '2x oxygen') - .color(0xaef5ef) - - event.create('tfg:compressed_heliox') - .gas() - .components('8x helium', '2x oxygen') - .color(0xf5eeb3) - - event.create('tfg:compressed_heliox_3') - .gas() - .components('8x helium_3', '2x oxygen') - .color(0xf5ea90) - - event.create('tfg:compressed_trimix') - .gas() - .components('5x nitrogen', '3x oxygen', '2x helium') - .color(0xc3fab9) - - event.create('tfg:compressed_trimix_3') - .gas() - .components('5x nitrogen', '3x oxygen', '2x helium_3') - .color(0xa3ed95) // Refrigerants @@ -152,25 +43,8 @@ const registerTFGMaterials = (event) => { .components('2x carbon', '2x hydrogen', '4x fluorine') .color(0x46702e) - // Fission Component - - event.create('tfg:tetrafluoroethane') - .fluid() - .gem() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES, GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.QUARTZ) - .components('2x carbon', '2x hydrogen', '4x fluorine') - .color(0x46702e) - // Crafting components - event.create('tfg:kaolinite') - .dust() - .components('2x aluminium', '2x silicon', '9x oxygen', '4x hydrogen') - .color(0xEEB9AD) - .secondaryColor(0xF6A797) - .formula("Al2Si2O5(OH)4") - event.create('tfg:vitrified_pearl') .dust() .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) @@ -179,250 +53,6 @@ const registerTFGMaterials = (event) => { .secondaryColor(0x67FFE6) .formula("(Al2Si2O5(OH)4)(BeK4N5)") - //#region Solar Panel Chemicals - - event.create('tfg:chloryl_fluoride') - .gas() - .components('1x fluorine', '1x chlorine', '2x oxygen') - .color(0x8AFAF4) - - event.create('tfg:chlorine_pentafluoride') - .gas() - .components('5x fluorine', '1x chlorine') - .color(0x51F7C0) - - event.create('tfg:solar_coolant') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(163)) - .components('8x helium_3', '11x oxygen', '11x hydrogen') - .color(0xEDFFB3) - - event.create('tfg:solar_coolant_tier2') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(73)) - .components('8x tfg:solar_coolant', '1x argon') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xfeff5d) - - - event.create('liquid_carbon_dioxide') - .liquid(100) //Not realistic but I want it to be cryogenic - .components('1x carbon', '2x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xDBFBFF) - - //#region Rockwool - event.create('tfg:aes_mix') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) - .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') - .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) - .color(0xE0E9E4) - //.secondaryColor(0x54483d) - event.create('tfg:molten_aes') - .liquid(2900) - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') - .color(0xe65609) - .secondaryColor(0xe65609) - //#endregion - - //#region Ammonia Borane - event.create('tfg:sodium_hydride') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x hydrogen') - .color(0xEDF5F3) - event.create('tfg:boric_acid') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x hydrogen', '1x boron', '3x oxygen') - .color(0xDFEDDF) - .secondaryColor(0xDFEDDF) - event.create('tfg:trimethyl_borate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x carbon', '9x hydrogen', '1x boron', '3x oxygen') - .color(0xF7F7F7) - event.create('tfg:sodium_borohydride') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x boron', '4x hydrogen') - .color(0xE8F1FF) - .secondaryColor(0xE8F1FF) - event.create('tfg:sodium_methoxide') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('1x sodium', '1x oxygen', '1x carbon', '3x hydrogen') - .color(0xE8E5DF) - .secondaryColor(0xE8E5DF) - event.create('tfg:ammonia_borane') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING, GTMaterialFlags.GENERATE_PLATE) - .components('1x ammonia', '1x boron', '3x hydrogen') - .color(0xCCE3E3) - .secondaryColor(0xCCE3E3) - //#endregion - - //#region polyurethane - event.create('tfg:aniline') - .liquid() - .components('6x carbon', '5x hydrogen', '1x nitrogen', '2x hydrogen') - .color(0xBAB999) - event.create('tfg:dimethyl_carbonate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('3x formaldehyde') // CH2O - .color(0xFFFFF2) - event.create('tfg:methyl_phenylcarbamate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('8x carbon','9x hydrogen','1x nitrogen', '2x oxygen') - .color(0xB4EDB4) - event.create('tfg:methylene_diphenyl_dicarbamate') - .liquid() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('17x carbon','18x hydrogen','2x nitrogen', '4x oxygen') - .color(0x69C2C1) - event.create('tfg:methylene_diphenyl_diisocyanate') - .dust() - .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) - .components('13x carbon','10x hydrogen','2x nitrogen', '2x oxygen') - .color(0xFFFFBA) - //#endregion - - //#region aerogel - event.create('tfg:tmos') - .liquid() - .formula("Si(OCH3)4") - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xC2C6CC) - event.create('tfg:silica_gel') - .liquid() - .color(0x60BABF) - .secondaryColor(0xFFD38C) - event.create('tfg:soaked_silica_gel') - .liquid() - .color(0x9ED5D9) - //#endregion - - //#region Bromine Line - - event.create('raw_brine') - .fluid() - .color(0x947a11) - //.secondaryColor(0x81FFF9) - - event.create('hot_brine') - .liquid(320) - .color(0x944611) - - event.create('hot_chlorinated_brominated_brine') - .liquid(320) - .color(0xbf8d5a) - .components('1x unknown', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('brominated_chlorine_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(320)) - .color(0xbf8d5a) - .components('1x chlorine', '1x bromine', '1x water') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('acidic_bromine_solution') - .liquid(new GTFluidBuilder().attribute(GTFluidAttributes.ACID)) - .color(0xe7b989) - .components('1x chlorine', '1x bromine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('concentrated_bromine_solution') - .liquid() - .color(0x905d29) - .components('1x bromine', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('debrominated_brine') - .liquid() - .color(0xc3874a) - - event.create('acidic_bromine_exhaust') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).attribute(GTFluidAttributes.ACID).temperature(293)) - .color(0xec9c4a) - .components('3x water', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('hot_alkaline_debrominated_brine') - .liquid() - .color(0xcc6a06) - .components('2x unknown', '1x chlorine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - - event.create('hot_debrominated_brine') - .liquid(320) - .color(0xb08e6b) - - event.create('hydrogen_iodide') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(293)) - .color(0x82a6ce) - .components('1x hydrogen', '1x iodine') - - //#endregion - - //#region Mars Ore Line - - event.create('lightweight_ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(760)) - - event.create('ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(815)) - - event.create('dense_ostrum_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(930)) - - event.create('residual_radioactive_concoction') - .liquid(new GTFluidBuilder().customStill().temperature(450)) - - //#endregion - - //#region Moon Ore Line - - event.create('regolith_vapor') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(727)) - - event.create('tfg:certus_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.CERTUS) - .color('0xc1e6e4') - .secondaryColor('0x7a5225') - - event.create('tfg:goethe_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.METALLIC) - .color('0xb0af5b') - .secondaryColor('0x7a5225') - - event.create('tfg:bright_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.SHINY) - .color('0xf0efe9') - .secondaryColor('0xffffff') - - event.create('tfg:cassiterite_regolith') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.METALLIC) - .color('0xbab6b7') - .secondaryColor('0x7a5225') - - event.create('tfg:regolith_mush') - .dust() - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .iconSet(GTMaterialIconSet.WOOD) - .color('0xa2cde0') - .secondaryColor('0x7a5225') - - //#endregion //#region Tungsten Line @@ -456,23 +86,6 @@ const registerTFGMaterials = (event) => { // #endregion - // #region Atmospheres - - event.create('tfg:mars_air') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(208)) - .color('0xD08957') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('94x carbon_dioxide', '3x nitrogen', '2x argon', '1x oxygen') - - // TODO: move neon and xenon somewhere else - event.create('tfg:liquid_mars_air') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(58)) - .color('0xD08957') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .components('80x carbon_dioxide', '7x nitrogen', '5x argon', '3x oxygen', '1x neon', '1x krypton', '1x xenon') - - // #endregion - //#region New Alloy for Turbines event.create('tfg:tungsten_bismuth_oxide_composite') @@ -495,46 +108,6 @@ const registerTFGMaterials = (event) => { // #endregion - // #region Mars sap - - event.create('tfg:crimsene') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) - .gem() - .iconSet('lapis') - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .color(0xB12727) - .secondaryColor(0x562C3E) - - event.create('tfg:warpane') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(220)) - .gem() - .iconSet('quartz') - .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) - .color(0x45ABA9) - .secondaryColor(0x562C3E) - - event.create('tfg:mycelienzene') - .dust() - .color(0x9E7385) - - event.create('tfg:cooked_mycelienzane') - .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1830)) - .color(0x9E7385) - - event.create('tfg:iodomethane') - .liquid() - .components('1x carbon', '3x hydrogen', '1x iodine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xAC45C6) - - event.create('tfg:trideuteroiodomethane') - .liquid() - .components('1x carbon', '3x deuterium', '1x iodine') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xDD9DED) - - // #endregion - // #region conductor event.create('tfg:thermally_conductive_fluid') .liquid() @@ -612,33 +185,4 @@ const registerTFGMaterials = (event) => { .flags(GTMaterialFlags.GENERATE_PLATE) // #endregion - - //#region Food Materials(?) - - event.create('tfg:sodium_dihydrogen_citrate') - .dust() - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.BRIGHT) - .components('6x carbon', '7x hydrogen', '1x sodium', '7x oxygen') - .color('0xE38818') - - event.create('tfg:citric_acid') - .dust() - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .iconSet(GTMaterialIconSet.SHINY) - .components('6x carbon', '8x hydrogen', '7x oxygen') - .color('0xE3AD18') - - // I decided to make these materials because why not? - event.create('tfg:rich_stock') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - event.create('tfg:light_stock') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - event.create('tfg:brown_gravy') - .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); - - //#endregion - } diff --git a/kubejs/startup_scripts/tfg/materials.power_rework.js b/kubejs/startup_scripts/tfg/materials.power_rework.js index bace22a6d..254efef25 100644 --- a/kubejs/startup_scripts/tfg/materials.power_rework.js +++ b/kubejs/startup_scripts/tfg/materials.power_rework.js @@ -1,54 +1,54 @@ - // priority: 0 +// priority: 0 "use strict"; const registerTFGPowerReworkMaterials = (event) => { -// Syngas -event.create('tfg:syngas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(650)) - .components('11x carbon', '20x hydrogen', '12x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x7da6c2) - .secondaryColor(0xcfe3ee) + // Syngas + event.create('tfg:syngas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(650)) + .components('11x carbon', '20x hydrogen', '12x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x7da6c2) + .secondaryColor(0xcfe3ee) -// Raw Aromatic Mix -event.create('tfg:raw_aromatic_mix') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(420)) - .components('137x carbon', '154x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x8a4b3d) - .secondaryColor(0xd8b6ac) + // Raw Aromatic Mix + event.create('tfg:raw_aromatic_mix') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(420)) + .components('137x carbon', '154x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x8a4b3d) + .secondaryColor(0xd8b6ac) -// Aromatic Feedstock -event.create('tfg:aromatic_feedstock') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(450)) - .components('67x carbon', '74x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x915c2f) - .secondaryColor(0xe2c49b) + // Aromatic Feedstock + event.create('tfg:aromatic_feedstock') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(450)) + .components('67x carbon', '74x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x915c2f) + .secondaryColor(0xe2c49b) -// Reformed Aromatic Feedstock -event.create('tfg:reformed_aromatic_feedstock') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(500)) - .components('133x carbon', '146x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x4e6b83) - .secondaryColor(0xbacdde) + // Reformed Aromatic Feedstock + event.create('tfg:reformed_aromatic_feedstock') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(500)) + .components('133x carbon', '146x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x4e6b83) + .secondaryColor(0xbacdde) -// Reformate Gas -event.create('tfg:reformate_gas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(540)) - .components('13x carbon', '63x hydrogen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0x6c7f4e) - .secondaryColor(0xc7d8b1) + // Reformate Gas + event.create('tfg:reformate_gas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(540)) + .components('13x carbon', '63x hydrogen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0x6c7f4e) + .secondaryColor(0xc7d8b1) -// Cracker Off-Gas -event.create('tfg:cracker_off_gas') - .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(480)) - .components('31x carbon', '128x hydrogen', '2x oxygen') - .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) - .color(0xa36f2a) - .secondaryColor(0xecd8ae) + // Cracker Off-Gas + event.create('tfg:cracker_off_gas') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(480)) + .components('31x carbon', '128x hydrogen', '2x oxygen') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xa36f2a) + .secondaryColor(0xecd8ae) } diff --git a/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js b/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js new file mode 100644 index 000000000..0cd4d8935 --- /dev/null +++ b/kubejs/startup_scripts/tfg/moon/blocks.moon_deco.js @@ -0,0 +1,53 @@ +"use strict"; + +function registerTFGWorldGenMoonDecoBlocks(event) { + + // Moon + + event.create('tfg:lunar_roots', 'tfg:decorative_plant') + .soundType('nether_wart') + .lightLevel(0.4) + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:replaceable') + + event.create('tfg:lunar_sprouts', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:replaceable') + + event.create('betterend:chorus_lily', 'tfc:ground_cover') + .soundType('cherry_wood') + .hardness(0.5) + .tagItem('tfg:moon_plants') + .tagBlock('minecraft:mineable/hoe') + .tagBlock('tfg:do_not_destroy_in_space') + .mapColor('terracotta_white') + .box(0, 0, 0, 16, 6, 16) + .fullBlock(false) + .opaque(false) + .notSolid() + .renderType('cutout') + + // 1 block tall + createPlant(event, 'inflexia', 'moon') + createPlant(event, 'chorus_grass', 'moon') + createPlant(event, 'salteago', 'moon') + createPlant(event, 'vaiolush_fern', 'moon') + + + // Mars + + + + // europa...? + + createPlant(event, 'crystal_grass', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'blooming_cooksonia', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'fracturn', 'unused') + .box(3, 0, 3, 13, 12, 13) + createPlant(event, 'jungle_grass', 'unused') + .box(3, 0, 3, 13, 12, 13) +} + diff --git a/kubejs/startup_scripts/tfg/moon/materials.moon.js b/kubejs/startup_scripts/tfg/moon/materials.moon.js new file mode 100644 index 000000000..24722152d --- /dev/null +++ b/kubejs/startup_scripts/tfg/moon/materials.moon.js @@ -0,0 +1,98 @@ +"use strict"; + +function registerTFGMoonMaterials(event) { + + // Solar Panel Chemicals + + event.create('tfg:chloryl_fluoride') + .gas() + .components('1x fluorine', '1x chlorine', '2x oxygen') + .color(0x8AFAF4) + + event.create('tfg:chlorine_pentafluoride') + .gas() + .components('5x fluorine', '1x chlorine') + .color(0x51F7C0) + + event.create('tfg:solar_coolant') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(163)) + .components('8x helium_3', '11x oxygen', '11x hydrogen') + .color(0xEDFFB3) + + event.create('tfg:solar_coolant_tier2') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(73)) + .components('8x tfg:solar_coolant', '1x argon') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xfeff5d) + + // Moon Ore Line + + event.create('regolith_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(727)) + + event.create('tfg:certus_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.CERTUS) + .color('0xc1e6e4') + .secondaryColor('0x7a5225') + + event.create('tfg:goethe_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.METALLIC) + .color('0xb0af5b') + .secondaryColor('0x7a5225') + + event.create('tfg:bright_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.SHINY) + .color('0xf0efe9') + .secondaryColor('0xffffff') + + event.create('tfg:cassiterite_regolith') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.METALLIC) + .color('0xbab6b7') + .secondaryColor('0x7a5225') + + event.create('tfg:regolith_mush') + .dust() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES) + .iconSet(GTMaterialIconSet.WOOD) + .color('0xa2cde0') + .secondaryColor('0x7a5225') + + // Ores + + event.create('armalcolite') + .gem(2) + .components('1x magnesium', '1x rutile', '1x ilmenite') + .color(0x443333) + .secondaryColor(0x5e2c21) + .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) + .ore() + .addOreByproducts('rutile', 'rutile', 'ilmenite') + + event.create('desh') + .components('2x olivine', '1x rutile', '4x nitrogen') + .color(0xF39A4C) + .secondaryColor(0xF35A6C) + .iconSet(GTMaterialIconSet.getByName('tfc_hematite')) + .ore() + .addOreByproducts('olivine', 'rutile', 'rutile') + .ingot() + .liquid() + .blastTemp(2800, 'mid', GTValues.VA[GTValues.HV]) + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE, + GTMaterialFlags.GENERATE_ROD, + GTMaterialFlags.GENERATE_DENSE, + GTMaterialFlags.GENERATE_GEAR, + GTMaterialFlags.GENERATE_FRAME, + GTMaterialFlags.DISABLE_ALLOY_BLAST + ) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js new file mode 100644 index 000000000..e1a5954ae --- /dev/null +++ b/kubejs/startup_scripts/tfg/nuclear/blocks.nuclear.js @@ -0,0 +1,118 @@ +"use strict"; + +function registerTFGNuclearBlocks(event) { + + // Insulation + event.create('tfg:glacian_wool_frame') + .soundType('copper') + .hardness(4) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:aes_insulation_frame') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:moderate_core_frame') + .soundType('copper') + .hardness(4) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + event.create('tfg:impure_moderate_core_frame') + .soundType('copper') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + + // Unfinished Insulation + event.create('tfg:moderate_core') + .soundType('ancient_debris') + .hardness(7) + .resistance(8) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .model('tfg:block/fission/moderate_core') + + event.create('tfg:impure_moderate_core') + .soundType('ancient_debris') + .hardness(7) + .resistance(8) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .model('tfg:block/fission/impure_moderate_core') + + // Nuclear cooling tower + event.create('tfg:titanium_exhaust_vent', 'tfg:active_particle_emitter') + .textureAll('tfg:block/titanium_exhaust_vent') + .soundType('metal') + .hardness(5) + .resistance(6) + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .mapColor('color_black') + .speedFactor(1.1) + .activeOffset(3.5, 2, 3.5) + .activeVelocity(0.0, 0.0, 0.0) + .activeParticle('tfg:cooling_steam') + .activeBase(0.0, 12.5, 0.0) + .activeCount(8) + .activeForced(false) + .hasTicker(true) + + event.create('tfg:titanium_concrete') + .translationKey('block.tfg.titanium_concrete') + .model('tfg:block/concrete/titanium_concrete') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:polished_titanium_concrete') + .translationKey('block.tfg.polished_titanium_concrete') + .model('tfg:block/concrete/polished_titanium_concrete') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_tile') + .translationKey('block.tfg.titanium_concrete_tile') + .model('tfg:block/concrete/titanium_concrete_tile') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_tile_small') + .translationKey('block.tfg.titanium_concrete_tile_small') + .model('tfg:block/concrete/titanium_concrete_tile_small') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks') + .translationKey('block.tfg.titanium_concrete_bricks') + .model('tfg:block/concrete/titanium_concrete_bricks') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks_small') + .translationKey('block.tfg.titanium_concrete_bricks_small') + .model('tfg:block/concrete/titanium_concrete_bricks_small') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + + event.create('tfg:titanium_concrete_bricks_square') + .translationKey('block.tfg.titanium_concrete_bricks_square') + .model('tfg:block/concrete/titanium_concrete_bricks_square') + .soundType('stone') + .mapColor('stone') + .tagBlock('gtceu:mineable/pickaxe_or_wrench') + .tagBoth('tfg:titanium_concrete') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js new file mode 100644 index 000000000..33d19dcb9 --- /dev/null +++ b/kubejs/startup_scripts/tfg/nuclear/items.nuclear.js @@ -0,0 +1,59 @@ +"use strict"; + +function registerTFGNuclearItems(event) { + + // Empty Fission Rod + + event.create('tfg:empty_rod') + .translationKey('item.tfg.empty_road') + .texture('tfg:item/fuel_rod_empty') + .tag('tfg:fission_rods') + + event.create('tfg:refrigerant_pellet') + .translationKey('item.tfg.refrigerant_pellet') + .texture('tfg:item/refrigerant_pellet') + .tag('tfg:fission_coolant') + + // Moderator Line + + event.create('tfg:graphite_compound') + .translationKey('item.tfg.graphite_compound') + .texture('tfg:item/graphite_line/graphite_compound') + + event.create('tfg:raw_graphite_briquette') + .translationKey('item.tfg.raw_graphite_briquette') + .texture('tfg:item/graphite_line/raw_graphite_briquette') + + event.create('tfg:faulty_graphite_briquette') + .translationKey('item.tfg.faulty_graphite_briquette') + .texture('tfg:item/graphite_line/faulty_graphite_briquette') + + event.create('tfg:washed_graphite_briquette') + .translationKey('item.tfg.washed_graphite_briquette') + + event.create('tfg:pure_graphite_rod') + .translationKey('item.tfg.pure_graphite_rod') + .texture('tfg:item/graphite_line/pure_graphite_rod') + + event.create('tfg:impure_graphite_rod') + .translationKey('item.tfg.impure_graphite_rod') + .texture('tfg:item/graphite_line/impure_graphite_rod') + + event.create('tfg:annealed_graphite_rod') + .translationKey('item.tfg.annealed_graphite_rod') + + event.create('tfg:impure_annealed_graphite_rod') + .translationKey('item.tfg.impure_annealed_graphite_rod') + + event.create('tfg:graphite_moderator') + .translationKey('item.tfg.graphite_moderator') + .texture('tfg:item/graphite_line/graphite_moderator') + + event.create('tfg:impure_graphite_moderator') + .translationKey('item.tfg.impure_graphite_moderator') + .texture('tfg:item/graphite_line/impure_graphite_moderator') + + event.create('tfg:advanced_polymer_binder') + .translationKey('item.tfg.advanced_polymer_binder') + .texture('tfg:item/graphite_line/advanced_polymer_binder') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js index ac65b1ab0..6fd163157 100644 --- a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js +++ b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js @@ -3,6 +3,16 @@ const registerTFGNuclearMaterials = (event) => { + // Fission Component + + event.create('tfg:tetrafluoroethane') + .fluid() + .gem() + .flags(GTMaterialFlags.DISABLE_MATERIAL_RECIPES, GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.QUARTZ) + .components('2x carbon', '2x hydrogen', '4x fluorine') + .color(0x46702e) + /* event.create('mysterious_ooze') .fluid() .color(0x500bbf) @@ -205,15 +215,6 @@ const registerTFGNuclearMaterials = (event) => { .color(0x694c66) .radioactiveHazard(1000) - event.create("ostrum_iodide") - .ingot() - .components('2x ostrum', 'iodine') - .blastTemp(3700, 'mid', GTValues.VA[GTValues.IV], (20*120)) - .iconSet(GTMaterialIconSet.BRIGHT) - .flags(GTMaterialFlags.GENERATE_GEAR) - .color(0xc696f2) - .secondaryColor(0x9b99ff) - //#endregion }; diff --git a/kubejs/startup_scripts/tfg/blocks.supports.js b/kubejs/startup_scripts/tfg/primitive/blocks.supports.js similarity index 100% rename from kubejs/startup_scripts/tfg/blocks.supports.js rename to kubejs/startup_scripts/tfg/primitive/blocks.supports.js diff --git a/kubejs/startup_scripts/tfg/primitive/blocks.vases.js b/kubejs/startup_scripts/tfg/primitive/blocks.vases.js new file mode 100644 index 000000000..9cd41569e --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/blocks.vases.js @@ -0,0 +1,77 @@ +"use strict"; + +function registerTFGVaseBlocks(event) { + + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.create(`tfg:decorative_vase/generated/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/loot_vase_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + + event.create(`tfg:decorative_vase/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/vase_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + .blockEntity(be => { + be.attach('tfc:inventory', { + width: 9, + height: 1, + size: size => size.isSmallerThan('large') + }) + be.rightClickOpensInventory() + }) + + event.create(`tfg:decorative_vase/unfired/${color}`, 'cardinal') + .model(`tfg:block/decorative_vase/vase_unfired_${color}`) + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_${color}`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + }) + event.create('tfg:decorative_vase', 'cardinal') + .model('tfg:block/decorative_vase/vase') + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_gray`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + .blockEntity(be => { + be.attach('tfc:inventory', { + width: 9, + height: 1, + size: size => size.isSmallerThan('large') + }) + be.rightClickOpensInventory() + }) + + event.create('tfg:decorative_vase/unfired', 'cardinal') + .model('tfg:block/decorative_vase/vase_unfired') + .soundType('decorated_pot') + .hardness(0.7) + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(`color_gray`) + .box(2, 0, 2, 14, 20, 14) + .fullBlock(false) + .opaque(false) + .renderType('cutout') + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/primitive/items.primitive.js b/kubejs/startup_scripts/tfg/primitive/items.primitive.js new file mode 100644 index 000000000..35b0a78d1 --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/items.primitive.js @@ -0,0 +1,139 @@ +"use strict"; + +function registerTFGPrimitiveItems(event) { + + // Paper making + event.create('tfg:hardwood_strip') + event.create('tfg:soaked_hardwood_strip') + event.create('tfg:soaked_unrefined_paper') + + // Chalk + event.create('tfg:unfired_chalk') + + Color.DYE.forEach((dyeName, dye) => { + event.create(`tfg:wet_${dyeName}_chalk`) + .textureJson({ + layer0: 'tfg:item/unfired_chalk' + }) + .color(0, dye.getHexJS()); + }); + + // Primitive rubber gloves + event.create('tfg:prepared_leather_gloves') + event.create('tfg:latex_soaked_gloves') + + // Chipboard + event.create('tfg:chipboard_composite') + event.create('tfg:treated_chipboard_composite') + event.create('tfg:high_density_treated_fiberboard') + + // Wax + event.create('tfg:paraffin_wax') + event.create('tfg:conifer_rosin') + + // Tools + event.create('tfg:flint_club_head') + + event.create('tfg:flint_arrow_head') + event.create('tfg:fletching') + + event.create('tfg:armor_stand_arms') + + event.create('tfg:harvest_basket') + .parentModel('tfg:item/harvest_basket') + .maxDamage(128) + + event.create('tfg:aluminium_harvest_basket') + .parentModel('tfg:item/aluminium_harvest_basket') + .unstackable() + + // Carts + event.create('tfg:cobalt_brass_wheel') + + // Fishing Nets + event.create('tfg:fishing_net/wood') + .translationKey('item.tfg.fishing_net.wood') + .parentModel('tfg:item/fishing_nets/wood_fishing_net') + .texture('tfg:item/fishing_nets/wood_fishing_net') + .maxDamage(112) + + event.create('tfg:fishing_net/brass') + .translationKey('item.tfg.fishing_net.brass') + .parentModel('tfg:item/fishing_nets/brass_fishing_net') + .texture('tfg:item/fishing_nets/brass_fishing_net') + .maxDamage(326) + + event.create('tfg:fishing_net/rose_gold') + .translationKey('item.tfg.fishing_net.rose_gold') + .parentModel('tfg:item/fishing_nets/rose_gold_fishing_net') + .texture('tfg:item/fishing_nets/rose_gold_fishing_net') + .maxDamage(380) + + event.create('tfg:fishing_net/sterling_silver') + .translationKey('item.tfg.fishing_net.sterling_silver') + .parentModel('tfg:item/fishing_nets/sterling_silver_fishing_net') + .texture('tfg:item/fishing_nets/sterling_silver_fishing_net') + .maxDamage(380) + + event.create('tfg:fishing_net/invar') + .translationKey('item.tfg.fishing_net.invar') + .parentModel('tfg:item/fishing_nets/invar_fishing_net') + .texture('tfg:item/fishing_nets/invar_fishing_net') + .maxDamage(740) + + event.create('tfg:fishing_net/tin_alloy') + .translationKey('item.tfg.fishing_net.tin_alloy') + .parentModel('tfg:item/fishing_nets/tin_alloy_fishing_net') + .texture('tfg:item/fishing_nets/tin_alloy_fishing_net') + .maxDamage(710) + + event.create('tfg:fishing_net/cupronickel') + .translationKey('item.tfg.fishing_net.cupronickel') + .parentModel('tfg:item/fishing_nets/cupronickel_fishing_net') + .texture('tfg:item/fishing_nets/cupronickel_fishing_net') + .maxDamage(560) + + event.create('tfg:fishing_net/magnalium') + .translationKey('item.tfg.fishing_net.magnalium') + .parentModel('tfg:item/fishing_nets/magnalium_fishing_net') + .texture('tfg:item/fishing_nets/magnalium_fishing_net') + .maxDamage(1830) + + // Universal compost items + event.create('tfg:universal_compost_browns') + .tag('tfc:compost_browns_low') + + event.create('tfg:universal_compost_greens') + .tag('tfc:compost_greens_low') + + // Etched Diamond Etching Tip + event.create('tfg:etching_diamond_tip') + + // Cloth & String + event.create('tfg:polycaprolactam_fabric') + event.create('tfg:polycaprolactam_string') + event.create('tfg:phantom_silk') + event.create('tfg:phantom_thread') + + // Flax Stuff + event.create('tfg:flax_waste') + .tag('tfc:scrapable') + event.create('tfg:flax_tow') + .tag('tfg:burlap_fiber') + .tag('tfc:compost_browns') + event.create('tfg:flax_line') + .tag('tfc:compost_browns_low') + event.create('tfg:linen_thread') + .tag('forge:string') + event.create('tfg:linen_cloth') + .tag('forge:cloth') + .tag('tfc:sewing_light_cloth') + + event.create('tfg:flax_bundle') + .tag('tfc:scrapable') + .texture('tfg:item/flax_bundle') + + event.create('tfg:bundled_scraped_flax') + .tag('tfc:scrapable') + .texture('tfg:item/bundled_scraped_flax') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/primitive/materials.primitive.js b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js new file mode 100644 index 000000000..c5230e941 --- /dev/null +++ b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js @@ -0,0 +1,91 @@ +"use strict"; + +function registerTFGPrimitiveMaterials(event) { + + // Paper + event.create('hardwood') + .dust() + .flags(GTMaterialFlags.FLAMMABLE) + .iconSet(GTMaterialIconSet.WOOD) + .color('0x7a5225') + .secondaryColor('0x7a5225') + + event.create('thermochemically_treated_hardwood') + .dust() + .flags(GTMaterialFlags.FLAMMABLE) + .iconSet(GTMaterialIconSet.WOOD) + .color('0x52482c') + .secondaryColor('0x52482c') + + // Tree tapping + event.create('tfg:latex') + .liquid() + .color(0xFBB982) + + event.create('tfg:vulcanized_latex') + .liquid() + .color(0xc79973) + + event.create('tfg:conifer_pitch') + .liquid() + .color(0xfbdf82) + .secondaryColor(0xff9d2e) + + // Food/Cooking + event.create('lactose') + .dust() + .iconSet(GTMaterialIconSet.FINE) + .color('0xede8da') + .secondaryColor('0xeddcad') + .components('12x carbon', '22x hydrogen', '11x oxygen') + + event.create('tfg:sodium_dihydrogen_citrate') + .dust() + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.BRIGHT) + .components('6x carbon', '7x hydrogen', '1x sodium', '7x oxygen') + .color('0xE38818') + + event.create('tfg:citric_acid') + .dust() + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .iconSet(GTMaterialIconSet.SHINY) + .components('6x carbon', '8x hydrogen', '7x oxygen') + .color('0xE3AD18') + + // I decided to make these materials because why not? + event.create('tfg:rich_stock') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + event.create('tfg:light_stock') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + event.create('tfg:brown_gravy') + .liquid(new GTFluidBuilder().customStill().state(GTFluidState.LIQUID).temperature(360)); + + // Ores -- these need to be in the gtceu namespace for the ore tool to work + event.create('tarkianite') + .ore() + .components('1x copper', '1x iron', '4x rhenium', '4x molybdenum', '8x sulfur') + .color(0x8bb054) + .secondaryColor(0x3d8021) + .iconSet(GTMaterialIconSet.getByName('tfc_emerald')) + .addOreByproducts('sulfur', 'rhenium', 'molybdenum') + + // Metals/minerals + event.create('aluminium_silicate') + .dust() + .ingot() + .liquid(new GTFluidBuilder().state(GTFluidState.LIQUID).temperature(1520)) + .components('2x aluminium', '1x silicon', '5x oxygen') + .iconSet('metallic') + .color(0xB6D3FF) + .secondaryColor(0x6F4AB3) + + event.create('tfg:kaolinite') + .dust() + .components('2x aluminium', '2x silicon', '9x oxygen', '4x hydrogen') + .color(0xEEB9AD) + .secondaryColor(0xF6A797) + .formula("Al2Si2O5(OH)4") +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/space_general/items.space.js b/kubejs/startup_scripts/tfg/space_general/items.space.js new file mode 100644 index 000000000..a13727058 --- /dev/null +++ b/kubejs/startup_scripts/tfg/space_general/items.space.js @@ -0,0 +1,33 @@ +"use strict"; + +function registerTFGSpaceItems(event) { + + // Space suits + event.create('tfg:space_suit_fabric') + event.create('tfg:better_space_suit_fabric') + + // Tier2 Insulation + event.create('tfg:aes_wool') + event.create('tfg:aes_compressed_wool') + event.create('tfg:aes_insulation_sheet') + event.create('tfg:aes_insulation_roll') + + //Tier 2 Rocket Parts + event.create('tfg:rocket_fin_t2') + event.create('tfg:rocket_cone_t2') + + //Tier 3 Insulation + event.create('tfg:aes_polyurethane') + event.create('tfg:mli_shielding') + event.create('tfg:silica_aerogel') + + //Tier 3 Rocket Parts + event.create('tfg:rocket_fin_t3') + event.create('tfg:rocket_cone_t3') + event.create('tfg:elite_power_thruster') + + // Solar Panel + event.create('tfg:photo_cell_t1') + .translationKey("item.tfg.basic.photovoltaic.cell") + .texture('tfg:item/photo_cell_t1') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/space_general/materials.rockets.js b/kubejs/startup_scripts/tfg/space_general/materials.rockets.js new file mode 100644 index 000000000..49ffd7665 --- /dev/null +++ b/kubejs/startup_scripts/tfg/space_general/materials.rockets.js @@ -0,0 +1,162 @@ +"use strict"; + +function registerTFGRocketMaterials(event) { + + // Space Rocket Materials + + event.create('rocket_alloy_t1') + .ingot() + .components('6x aluminium', '2x stainless_steel', '1x red_steel') + .color(0x333e47) + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) + .blastTemp(1760, 'low', 256, 900) + + event.create('rocket_alloy_t2') + .ingot() + .components('19x titanium', '4x vanadium', '3x aluminium', '3x chromium', '3x tin') + .color(0x3c253d) + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR, GTMaterialFlags.DISABLE_ALLOY_BLAST) + .blastTemp(3200, 'mid', 1024, 1100) + .liquid() + +/* event.create('rocket_alloy_t3') + .ingot() + .components('8x titanium', '9x tungsten_steel', '2x tantalum', '2x radon') + .color(0x6c678b) + //.secondaryColor(0xa59fc6) + .liquid() + .removeHazard() + .iconSet('metallic') + .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_ROD, GTMaterialFlags.GENERATE_DENSE, GTMaterialFlags.GENERATE_GEAR) + .blastTemp(4200, 'high', 4096, 1300) + */ + + // Insulation + event.create('vitrified_asbestos') + .dust() + .fluid() + .iconSet('glass') + .color(0xcccccc) + + event.create('tfg:aes_mix') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_CENTRIFUGING) + .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') + .hazard(HazardProperty.HazardTrigger.SKIN_CONTACT, GTMedicalConditions.CHEMICAL_BURNS) + .color(0xE0E9E4) + event.create('tfg:molten_aes') + .liquid(2900) + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .components('5x silicon_dioxide', '4x quicklime', '1x magnesia') + .color(0xe65609) + .secondaryColor(0xe65609) + + //#region Ammonia Borane + event.create('tfg:sodium_hydride') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x hydrogen') + .color(0xEDF5F3) + event.create('tfg:boric_acid') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x hydrogen', '1x boron', '3x oxygen') + .color(0xDFEDDF) + .secondaryColor(0xDFEDDF) + event.create('tfg:trimethyl_borate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x carbon', '9x hydrogen', '1x boron', '3x oxygen') + .color(0xF7F7F7) + event.create('tfg:sodium_borohydride') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x boron', '4x hydrogen') + .color(0xE8F1FF) + .secondaryColor(0xE8F1FF) + event.create('tfg:sodium_methoxide') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('1x sodium', '1x oxygen', '1x carbon', '3x hydrogen') + .color(0xE8E5DF) + .secondaryColor(0xE8E5DF) + event.create('tfg:ammonia_borane') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING, GTMaterialFlags.GENERATE_PLATE) + .components('1x ammonia', '1x boron', '3x hydrogen') + .color(0xCCE3E3) + .secondaryColor(0xCCE3E3) + //#endregion + + //#region polyurethane + event.create('tfg:aniline') + .liquid() + .components('6x carbon', '5x hydrogen', '1x nitrogen', '2x hydrogen') + .color(0xBAB999) + event.create('tfg:dimethyl_carbonate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('3x formaldehyde') // CH2O + .color(0xFFFFF2) + event.create('tfg:methyl_phenylcarbamate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('8x carbon','9x hydrogen','1x nitrogen', '2x oxygen') + .color(0xB4EDB4) + event.create('tfg:methylene_diphenyl_dicarbamate') + .liquid() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('17x carbon','18x hydrogen','2x nitrogen', '4x oxygen') + .color(0x69C2C1) + event.create('tfg:methylene_diphenyl_diisocyanate') + .dust() + .flags(GTMaterialFlags.DECOMPOSITION_BY_ELECTROLYZING) + .components('13x carbon','10x hydrogen','2x nitrogen', '2x oxygen') + .color(0xFFFFBA) + //#endregion + + //#region aerogel + event.create('tfg:tmos') + .liquid() + .formula("Si(OCH3)4") + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + .color(0xC2C6CC) + event.create('tfg:silica_gel') + .liquid() + .color(0x60BABF) + .secondaryColor(0xFFD38C) + event.create('tfg:soaked_silica_gel') + .liquid() + .color(0x9ED5D9) + //#endregion + + + // Space suit gases (these all add up to 10B of components = 1B of space suit gas) + + event.create('tfg:compressed_nitrox') + .gas() + .components('8x nitrogen', '2x oxygen') + .color(0xaef5ef) + + event.create('tfg:compressed_heliox') + .gas() + .components('8x helium', '2x oxygen') + .color(0xf5eeb3) + + event.create('tfg:compressed_heliox_3') + .gas() + .components('8x helium_3', '2x oxygen') + .color(0xf5ea90) + + event.create('tfg:compressed_trimix') + .gas() + .components('5x nitrogen', '3x oxygen', '2x helium') + .color(0xc3fab9) + + event.create('tfg:compressed_trimix_3') + .gas() + .components('5x nitrogen', '3x oxygen', '2x helium_3') + .color(0xa3ed95) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/blocks.aqueducts.js b/kubejs/startup_scripts/tfg/stone_types/blocks.aqueducts.js similarity index 100% rename from kubejs/startup_scripts/tfg/blocks.aqueducts.js rename to kubejs/startup_scripts/tfg/stone_types/blocks.aqueducts.js diff --git a/kubejs/startup_scripts/tfg/blocks.space.js b/kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js similarity index 71% rename from kubejs/startup_scripts/tfg/blocks.space.js rename to kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js index d9ce73696..be5727415 100644 --- a/kubejs/startup_scripts/tfg/blocks.space.js +++ b/kubejs/startup_scripts/tfg/stone_types/blocks.rocks.js @@ -1,60 +1,49 @@ "use strict"; -function registerTFGSpaceBlocks(event) { - - // #region Dimension markers - event.create('tfg:marker/moon') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/moon' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/mars') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/mars' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/venus') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/venus' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/mercury') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/mercury' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - event.create('tfg:marker/glacio') - .stoneSoundType() - .item(item => { - item.modelJson({ parent: 'tfg:block/marker/glacio' }) - }) - .tagBlock('c:hidden_from_recipe_viewers') - .fullBlock(true) - .opaque(true) - - // #endregion Dimension markers +function registerTFGRockBlocks(event) { const SHAPES = ['stairs', 'slab', 'wall'] const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] // #region Raw Stones + + SHAPES.forEach(shape => { + event.create(`tfg:rock/deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/deepslate') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .textureAll('minecraft:block/dripstone_block') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .textureAll('beneath:block/crackrack') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + event.create('tfg:rock/moon_stone_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) .textureAll('ad_astra:block/moon_stone') @@ -139,10 +128,57 @@ function registerTFGSpaceBlocks(event) { .fullBlock(true) .opaque(true) }) - + // #endregion Raw Stones // #region Hardened Stones + event.create('tfg:rock/hardened_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .property(BlockProperties.AXIS) + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/deepslate' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/hardened_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/blackstone' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/hardened_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .stoneSoundType() + .requiresTool(true) + .item(item => { + item.modelJson({ parent: 'minecraft:item/dripstone_block' }) + }) + .tagBlock('tfc:can_carve') + .tagBoth('forge:stone') + .tagBoth('tfc:rock/hardened') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/hardened_moon_stone') .soundType(global.STONE_CHARACS.moon.sound) .requiresTool(true) @@ -251,6 +287,45 @@ function registerTFGSpaceBlocks(event) { // #endregion Hardened Stones // #region Loose Stones + event.create('tfg:loose/deepslate', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.deepslate.sound) + .itemTexture('tfg:item/loose/deepslate') + .rockTypeModel(global.STONE_CHARACS.deepslate.type) + .translationKey("block.tfg.loose.deepslate") + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.deepslate.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .tagItem("rnr:loose_rock_items") + + event.create('tfg:loose/dripstone', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.dripstone.sound) + .itemTexture('tfg:item/loose/dripstone') + .rockTypeModel(global.STONE_CHARACS.dripstone.type) + .translationKey("block.tfg.loose.dripstone") + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.dripstone.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .tagItem("rnr:loose_rock_items") + + event.create('tfg:loose/crackrack', 'tfc:loose_rock') + .soundType(global.STONE_CHARACS.crackrack.sound) + .itemTexture('tfg:item/loose/crackrack') + .rockTypeModel(global.STONE_CHARACS.crackrack.type) + .translationKey("block.tfg.loose.crackrack") + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('tfc:loose_rocks') + .tagItem('tfc:any_knapping') + .tagItem('tfc:rock_knapping') + .tagItem(`tfc:${global.STONE_CHARACS.crackrack.type}_rock`) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .tagItem("rnr:loose_rock_items") + event.create('tfg:loose/moon_stone', 'tfc:loose_rock') .soundType(global.STONE_CHARACS.moon.sound) .itemTexture('tfg:item/loose/moon_stone') @@ -340,6 +415,37 @@ function registerTFGSpaceBlocks(event) { // #endregion Loose stones // #region Spikes + + event.create('tfg:spike/deepslate_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + + event.create('tfg:spike/blackstone_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + + event.create('tfg:spike/dripstone_spike', 'tfc:rock_spike') + .textureAll('minecraft:block/dripstone_block') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + event.create('tfg:spike/moon_stone_spike', 'tfc:rock_spike') .textureAll('ad_astra:block/moon_stone') .soundType(global.STONE_CHARACS.moon.sound) @@ -407,6 +513,166 @@ function registerTFGSpaceBlocks(event) { // #endregion Spikes // #region Cobblestones + + // Deepslate + event.create('tfg:rock/mossy_cobble_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Blackstone + event.create('tfg:rock/cobble_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .textureAll('minecraft:block/blackstone_top') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Dripstone + event.create('tfg:rock/cobble_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Crackrack + event.create('tfg:rock/cobble_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cobble_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_cobble_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:cobblestone') + .tagBoth('forge:cobblestone/normal') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_cobble_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + // Moon event.create('tfg:rock/cobble_moon_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) @@ -685,6 +951,50 @@ function registerTFGSpaceBlocks(event) { // #endregion Cobblestones // #region Gravels + event.create('tfg:rock/gravel_deepslate') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_blackstone') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_dripstone') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/gravel_crackrack') + .soundType('gravel') + .tagBoth('forge:gravel') + .tagBoth('tfc:rock/gravel') + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/shovel') + .tagBlock('tfc:can_landslide') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/gravel_moon') .soundType('gravel') .tagBoth('forge:gravel') @@ -775,6 +1085,28 @@ function registerTFGSpaceBlocks(event) { // #endregion Gravels // #region Smooth (Polished/Cut) Stones + + event.create('tfg:rock/polished_crackrack') + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth('forge:smooth_stone') + .tagBoth('tfc:igneous_intrusive_items') + .tagBoth('tfc:rock/smooth') + .mapColor('crimson_stem') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/polished_crackrack_${shape}`, shape) + .soundType(global.STONE_CHARACS.crackrack.sound) + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.crackrack.type}_items`) + .mapColor(global.STONE_CHARACS.crackrack.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + event.create('tfg:rock/polished_moon_wall', 'wall') .soundType(global.STONE_CHARACS.moon.sound) .textureAll('ad_astra:block/polished_moon_stone') @@ -871,6 +1203,174 @@ function registerTFGSpaceBlocks(event) { // #endregion Smooth (Polished/Cut) Stones // #region Bricks / Decorative + + // Deepslate + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/cracked_deepslate_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_tiles_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .textureAll('minecraft:block/cracked_deepslate_tiles') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_deepslate') + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_deepslate_${shape}`, shape) + .soundType(global.STONE_CHARACS.deepslate.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.deepslate.type}_items`) + .mapColor(global.STONE_CHARACS.deepslate.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Blackstone + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .textureAll('minecraft:block/cracked_polished_blackstone_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_blackstone') + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_blackstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.blackstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.blackstone.type}_items`) + .mapColor(global.STONE_CHARACS.blackstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Dripstone + event.create('tfg:rock/cracked_bricks_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_dripstone') + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_dripstone_${shape}`, shape) + .soundType(global.STONE_CHARACS.dripstone.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.dripstone.type}_items`) + .mapColor(global.STONE_CHARACS.dripstone.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + // Crackrack + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_nether_${shape}`, shape) + .soundType(global.STONE_CHARACS.nether.sound) + .textureAll('minecraft:block/cracked_nether_bricks') + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/mossy_bricks_nether') + .soundType(global.STONE_CHARACS.nether.sound) + .tagBoth('minecraft:stone_bricks') + .tagBoth('forge:stone_bricks') + .tagBoth('tfc:rock/bricks') + .tagBoth('tfc:rock/mossy_bricks') + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + SHAPES.forEach(shape => { + event.create(`tfg:rock/mossy_bricks_nether_${shape}`, shape) + .soundType(global.STONE_CHARACS.nether.sound) + .tagBoth(`tfg:brick_${shape}`.replace(/ss/g, 's')) + .tagBoth(`tfc:${global.STONE_CHARACS.nether.type}_items`) + .mapColor(global.STONE_CHARACS.nether.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + // Moon Stone SHAPES.forEach(shape => { event.create(`tfg:rock/cracked_bricks_moon_${shape}`, shape) @@ -1332,300 +1832,4 @@ function registerTFGSpaceBlocks(event) { // #endregion Sandstone - // #region Plants - - /* - Custom TFG Builder information https://github.com/TerraFirmaGreg-Team/Modpack-Modern/wiki/%5BEN%5D-TFG-Custom-Kubejs-Scripts - */ - - event.create('tfg:lunar_roots', 'tfg:decorative_plant') - .soundType('nether_wart') - .lightLevel(0.4) - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:replaceable') - - event.create('tfg:lunar_sprouts', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:moon_plants') - .tagBlock('minecraft:replaceable') - - event.create('tfg:corallium_arenicolus_0', 'tfg:tall_decorative_plant') - .height(2) - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .lightLevel(0.4) - .renderType('translucent') - - event.create('tfg:corallium_arenicolus_1', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_2', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .renderType('translucent') - .box(0, 0, 0, 16, 4, 16) - - event.create('tfg:corallium_arenicolus_3', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_4', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:corallium_arenicolus_5', 'tfg:decorative_plant') - .soundType('nether_wart') - .tagItem('tfg:venus_plants') - .box(3, 0, 3, 13, 14, 13) - - event.create('tfg:geyser_source', 'tfg:particle_emitter_decoration') - .soundType('dripstone_block') - .mapColor('color_white') - .resistance(6) - .hardness(1.5) - .particleOffset(0.3, 1, 0.3) - .particleVelocity(0, 0.1, 0) - .particle('minecraft:campfire_signal_smoke') - .particleCount(5) - .particleForced(true) - - event.create('tfg:geyser_source_small', 'tfg:particle_emitter_decoration') - .soundType('dripstone_block') - .mapColor('color_white') - .resistance(6) - .hardness(1.5) - .particleOffset(0.3, 1, 0.3) - .particleVelocity(0, 0.05, 0) - .particle('minecraft:campfire_cosy_smoke') - .particleCount(2) - .particleForced(false) - - event.create('tfg:stromatolite_cluster_small', 'tfg:decorative_plant') - .soundType('dripstone_block') - .mapColor('color_brown') - .box(3, 0, 3, 13, 6, 13) - - event.create('tfg:stromatolite_cluster_medium', 'tfg:decorative_plant') - .soundType('dripstone_block') - .mapColor('color_brown') - .box(3, 0, 3, 13, 14, 13) - - // #endregion - - // #region Mars Blocks - - event.create('tfg:spice', 'tfg:particle_emitter') - .textureAll('tfg:block/sand_spice') - .soundType('sand') - .hardness(2) - .resistance(6) - // makes it invisible on xaeros, so people can't use it to find the deposits :) - .mapColor('none') - .particleOffset(0.3, 1.5, 0.3) - .particleVelocity(0, 0.05, 0) - .particle('electric_spark') - .particleCount(2) - .particleForced(false) - .fullBlock(true) - .opaque(true) - - event.create('tfg:groundcover/glider_feather', 'tfc:ground_cover') - .box(4, 0, 4, 12, 2, 12) - .soundType('wool') - .groundCoverModelShape('feather') - .withPreexistingItem('wan_ancient_beasts:glider_feather') - .textureAll('wan_ancient_beasts:item/glider_feather') - .tagBlock('tfc:can_be_snow_piled') - - event.create('tfg:groundcover/wraptor_feather', 'tfc:ground_cover') - .box(4, 0, 4, 12, 2, 12) - .soundType('wool') - .groundCoverModelShape('feather') - .withPreexistingItem('minecraft:feather') - .textureAll('tfg:item/wraptor_wool') - .tagBlock('tfc:can_be_snow_piled') - - event.create('tfg:groundcover/aeronos_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/aeronos') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/aeronos_stem') - .texture('all', 'ad_astra:block/aeronos_stem') - .texture('top', 'ad_astra:block/aeronos_stem_inside') - - event.create('tfg:groundcover/strophar_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/strophar') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/strophar_stem') - .texture('all', 'ad_astra:block/strophar_stem') - .texture('top', 'ad_astra:block/strophar_stem_inside') - - event.create('tfg:groundcover/glacian_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/glacian') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'ad_astra:block/glacian_log') - .texture('all', 'ad_astra:block/glacian_log') - .texture('top', 'ad_astra:block/glacian_log_top') - - event.create('tfg:groundcover/alphacene_stick', 'tfc:ground_cover') - .box(3, 0, 3, 13, 3, 13) - .groundCoverModelShape('twig') - .withPreexistingItem('tfg:twigs/alphacene') - .tagBlock('tfc:can_be_snow_piled') - .texture('particle', 'species:block/alphacene_mushroom_block') - .texture('all', 'species:block/alphacene_mushroom_block') - .texture('top', 'minecraft:block/mushroom_stem') - - // #endregion - - //#region Venus Blocks - //Fluorapatite - const fluorapatite_colors = ['blue', 'green', 'brown', 'orange', 'white', 'yellow']; - fluorapatite_colors.forEach(color => { - const mapColor = color === 'white' ? 'quartz' : `color_${color}`; - - //Sand - event.create(`tfg:sand/fluorapatite/${color}`, 'falling') - .textureAll(`tfg:block/planets/venus/sand_fluorapatite_${color}`) - .soundType('sand') - .requiresTool(false) - .tagBoth('forge:sand') - .tagItem('forge:sand/fluorapatite') - .tagBlock('minecraft:mineable/shovel') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Raw Sandstone - event.create(`tfg:sandstone/raw/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Smooth Sandstone - event.create(`tfg:sandstone/smooth/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Chiseled Sandstone - event.create(`tfg:sandstone/smooth/chiseled/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_chiseled_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - //Sandstone - event.create(`tfg:sandstone/fluorapatite/${color}`) - .textureAll(`tfg:block/planets/venus/sandstone_fluorapatite_${color}`) - .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) - .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) - .hardness(0.8) - .resistance(0.8) - .soundType('stone') - .requiresTool(true) - .tagBoth('forge:sandstone') - .tagItem('forge:sandstone/fluorapatite') - .tagBlock('minecraft:mineable/pickaxe') - .mapColor(mapColor) - .fullBlock(true) - .opaque(true) - }) - - //#region Venus Stone - - //Stromatolite - event.create('tfg:rock/raw/stromatolite', 'tfc:raw_rock') - .textureAll('tfg:block/planets/venus/stromatolite_spike') - .model('tfg:block/rock/stromatolite_block') - .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) - .naturallySupported(true) - .sedimentary() - .renderType('cutout') - .soundType('dripstone_block') - .requiresTool(true) - .hardness(0.8) - .resistance(0.8) - .tagBlock('minecraft:mineable/pickaxe') - - event.create('tfg:rock/spike/stromatolite', 'tfc:rock_spike') - .textureAll('tfg:block/planets/venus/stromatolite_spike') - .soundType('dripstone_block') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - - //Geyserite - event.create('tfg:rock/raw/geyserite', 'tfc:raw_rock') - .textureAll('tfg:block/planets/venus/geyserite') - .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) - .naturallySupported(true) - .mapColor('quartz') - .sedimentary() - .soundType('dripstone_block') - .requiresTool(true) - .hardness(0.8) - .resistance(0.8) - .tagBlock('minecraft:mineable/pickaxe') - - event.create('tfg:rock/spike/geyserite', 'tfc:rock_spike') - .textureAll('tfg:block/planets/venus/geyserite') - .soundType('dripstone_block') - .mapColor('quartz') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - - // Halite - event.create('tfg:rock/halite') - .mapColor('quartz') - .soundType('deepslate') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) - event.create('tfg:rock/halite2') - .mapColor('snow') - .soundType('deepslate') - .hardness(0.8) - .resistance(0.8) - .requiresTool(true) - .tagBlock('minecraft:mineable/pickaxe') - .fullBlock(true) - .opaque(true) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js b/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js new file mode 100644 index 000000000..98d0e933a --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/blocks.vanilla_stone.js @@ -0,0 +1,56 @@ +"use strict"; + +function registerTFGVanillaStoneBlocks(event) { + + event.create(`tfg:rock/stone_wall`, 'wall') + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/stone') + .tagBoth('tfg:rock_wall') + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + let SHAPES = ['stairs', 'wall'] + SHAPES.forEach(shape => { + event.create(`tfg:rock/smooth_stone_${shape}`, shape) + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/smooth_stone') + .tagBoth(`tfg:rock_${shape}s`.replace(/ss/g, 's')) + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + SHAPES = ['stairs', 'slab', 'wall'] + SHAPES.forEach(shape => { + event.create(`tfg:rock/cracked_bricks_stone_${shape}`, shape) + .soundType(global.STONE_CHARACS.reconstituted.sound) + .textureAll('minecraft:block/cracked_stone_bricks') + .tagBoth(`tfg:brick_${shape}s`.replace(/ss/g, 's')) + .mapColor(global.STONE_CHARACS.reconstituted.mapColor) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + }) + + event.create('tfg:rock/quartz_wall', 'wall') + .soundType('stone') + .textureAll('minecraft:block/quartz_block_side') + .tagBoth('tfg:rock_wall') + .mapColor('snow') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + event.create('tfg:rock/smooth_quartz_wall', 'wall') + .soundType('stone') + .textureAll('minecraft:block/quartz_block_bottom') + .tagBoth('tfg:rock_wall') + .mapColor('snow') + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/items.rocks.js b/kubejs/startup_scripts/tfg/stone_types/items.rocks.js new file mode 100644 index 000000000..8cf86dbb8 --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/items.rocks.js @@ -0,0 +1,43 @@ +"use strict"; + +function registerTFGRockItems(event) { + + event.create('tfg:brick/deepslate') + .tag(`tfc:metamorphic_items`) + .translationKey('item.tfg.brick.deepslate') + + event.create('tfg:brick/dripstone') + .tag(`tfc:sedimentary_items`) + .translationKey('item.tfg.brick.dripstone') + + event.create('tfg:brick/moon_stone') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.brick.moon_stone') + + event.create('tfg:brick/moon_deepslate') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.moon_deepslate') + + event.create('tfg:brick/mars_stone') + .tag(`tfc:sedimentary_items`) + .translationKey('item.tfg.brick.mars_stone') + + event.create('tfg:brick/venus_stone') + .tag(`tfc:igneous_extrusive_items`) + .translationKey('item.tfg.brick.venus_stone') + + event.create('tfg:brick/mercury_stone') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.brick.mercury_stone') + + event.create('tfg:brick/glacio_stone') + .tag(`tfc:igneous_extrusive_items`) + .translationKey('item.tfg.brick.glacio_stone') + + event.create('tfg:brick/permafrost') + .translationKey('item.tfg.brick.permafrost') + + event.create('tfg:brick/red_granite') + .tag(`tfc:igneous_intrusive_items`) + .translationKey('item.tfg.red_granite') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js b/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js new file mode 100644 index 000000000..ee90eda0a --- /dev/null +++ b/kubejs/startup_scripts/tfg/stone_types/materials.rocks.js @@ -0,0 +1,43 @@ +// priority: 0 +"use strict"; + +const registerTFGRockMaterials = (event) => { + const registerStoneMaterial = (rockType, color) => + event.create(`tfg:${rockType}`) + .dust() + .color(color) + .iconSet(GTMaterialIconSet.ROUGH) + .flags( + GTMaterialFlags.MORTAR_GRINDABLE, + GTMaterialFlags.NO_SMASHING, + GTMaterialFlags.NO_SMELTING + ) + + /* TFC Stone Types Materials */ + registerStoneMaterial('gabbro', 0x7F8081) + registerStoneMaterial('shale', 0x686567) + registerStoneMaterial('claystone', 0xAF9377) + registerStoneMaterial('limestone', 0xA09885) + registerStoneMaterial('conglomerate', 0xA3977F) + registerStoneMaterial('dolomite', 0x515155) + registerStoneMaterial('chert', 0x7A6756) + registerStoneMaterial('chalk', 0xA4A39F) + registerStoneMaterial('rhyolite', 0x726D69) + registerStoneMaterial('dacite', 0x979797) + registerStoneMaterial('slate', 0x989287) + registerStoneMaterial('phyllite', 0x706B61) + registerStoneMaterial('schist', 0x6E735C) + registerStoneMaterial('gneiss', 0x6A6D60) + + registerStoneMaterial('dripstone', 0x927965) + + registerStoneMaterial('moon_stone', 0x506869) + registerStoneMaterial('moon_deepslate', 0x45474D) + registerStoneMaterial('mars_stone', 0xD08957) + registerStoneMaterial('venus_stone', 0xD5A664) + registerStoneMaterial('mercury_stone', 0x723E49) + registerStoneMaterial('glacio_stone', 0x9897BF) + + // Specialized icon sets for TFC's own + modifyTFGIconSets(event) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js b/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js new file mode 100644 index 000000000..4e6961652 --- /dev/null +++ b/kubejs/startup_scripts/tfg/venus/blocks.venus_deco.js @@ -0,0 +1,176 @@ +"use strict"; + +function registerTFGWorldGenVenusDecoBlocks(event) { + + event.create('tfg:geyser_source', 'tfg:particle_emitter_decoration') + .soundType('dripstone_block') + .mapColor('color_white') + .resistance(6) + .hardness(1.5) + .particleOffset(0.3, 1, 0.3) + .particleVelocity(0, 0.1, 0) + .particle('minecraft:campfire_signal_smoke') + .particleCount(5) + .particleForced(true) + + event.create('tfg:geyser_source_small', 'tfg:particle_emitter_decoration') + .soundType('dripstone_block') + .mapColor('color_white') + .resistance(6) + .hardness(1.5) + .particleOffset(0.3, 1, 0.3) + .particleVelocity(0, 0.05, 0) + .particle('minecraft:campfire_cosy_smoke') + .particleCount(2) + .particleForced(false) + + //Geyserite + event.create('tfg:rock/raw/geyserite', 'tfc:raw_rock') + .textureAll('tfg:block/planets/venus/geyserite') + .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) + .naturallySupported(true) + .mapColor('quartz') + .sedimentary() + .soundType('dripstone_block') + .requiresTool(true) + .hardness(0.8) + .resistance(0.8) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:rock/spike/geyserite', 'tfc:rock_spike') + .textureAll('tfg:block/planets/venus/geyserite') + .soundType('dripstone_block') + .mapColor('quartz') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + + // Halite + event.create('tfg:rock/halite') + .mapColor('quartz') + .soundType('deepslate') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + event.create('tfg:rock/halite2') + .mapColor('snow') + .soundType('deepslate') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + .fullBlock(true) + .opaque(true) + + //Stromatolite + event.create('tfg:rock/raw/stromatolite', 'tfc:raw_rock') + .textureAll('tfg:block/planets/venus/stromatolite_spike') + .model('tfg:block/rock/stromatolite_block') + .rockTypeTooltip(Text.translatable('tooltip.tfg.sedimentary')) + .naturallySupported(true) + .sedimentary() + .renderType('cutout') + .soundType('dripstone_block') + .requiresTool(true) + .hardness(0.8) + .resistance(0.8) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:rock/spike/stromatolite', 'tfc:rock_spike') + .textureAll('tfg:block/planets/venus/stromatolite_spike') + .soundType('dripstone_block') + .hardness(0.8) + .resistance(0.8) + .requiresTool(true) + .tagBlock('minecraft:mineable/pickaxe') + + event.create('tfg:stromatolite_cluster_small', 'tfg:decorative_plant') + .soundType('dripstone_block') + .mapColor('color_brown') + .box(3, 0, 3, 13, 6, 13) + + event.create('tfg:stromatolite_cluster_medium', 'tfg:decorative_plant') + .soundType('dripstone_block') + .mapColor('color_brown') + .box(3, 0, 3, 13, 14, 13) + + //#region Fluorapatite + const fluorapatite_colors = ['blue', 'green', 'brown', 'orange', 'white', 'yellow']; + fluorapatite_colors.forEach(color => { + const mapColor = color === 'white' ? 'quartz' : `color_${color}`; + + //Sand + event.create(`tfg:sand/fluorapatite/${color}`, 'falling') + .textureAll(`tfg:block/planets/venus/sand_fluorapatite_${color}`) + .soundType('sand') + .requiresTool(false) + .tagBoth('forge:sand') + .tagItem('forge:sand/fluorapatite') + .tagBlock('minecraft:mineable/shovel') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Raw Sandstone + event.create(`tfg:sandstone/raw/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Smooth Sandstone + event.create(`tfg:sandstone/smooth/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Chiseled Sandstone + event.create(`tfg:sandstone/smooth/chiseled/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_chiseled_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + //Sandstone + event.create(`tfg:sandstone/fluorapatite/${color}`) + .textureAll(`tfg:block/planets/venus/sandstone_fluorapatite_${color}`) + .texture('down', `tfg:block/planets/venus/sandstone_bottom_fluorapatite_${color}`) + .texture('up', `tfg:block/planets/venus/sandstone_top_fluorapatite_${color}`) + .hardness(0.8) + .resistance(0.8) + .soundType('stone') + .requiresTool(true) + .tagBoth('forge:sandstone') + .tagItem('forge:sandstone/fluorapatite') + .tagBlock('minecraft:mineable/pickaxe') + .mapColor(mapColor) + .fullBlock(true) + .opaque(true) + }) + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/venus/materials.venus.js b/kubejs/startup_scripts/tfg/venus/materials.venus.js new file mode 100644 index 000000000..124fa9c6e --- /dev/null +++ b/kubejs/startup_scripts/tfg/venus/materials.venus.js @@ -0,0 +1,80 @@ +"use strict"; + +function registerTFGVenusMaterials(event) { + + // Ores + + event.create('tfg:calorite') + //.components('2x mercury', '1x tungsten', '1x rhodium', '2x sulfur') + .color(0xC94D4E) + .secondaryColor(0x9A296A) + .iconSet(GTMaterialIconSet.getByName('tfc_copper')) + .ore() + .ingot() + .flags( + GTMaterialFlags.FORCE_GENERATE_BLOCK, + GTMaterialFlags.GENERATE_PLATE + ) + + //#region Bromine Line + + event.create('raw_brine') + .fluid() + .color(0x947a11) + //.secondaryColor(0x81FFF9) + + event.create('hot_brine') + .liquid(320) + .color(0x944611) + + event.create('hot_chlorinated_brominated_brine') + .liquid(320) + .color(0xbf8d5a) + .components('1x unknown', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('brominated_chlorine_vapor') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(320)) + .color(0xbf8d5a) + .components('1x chlorine', '1x bromine', '1x water') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('acidic_bromine_solution') + .liquid(new GTFluidBuilder().attribute(GTFluidAttributes.ACID)) + .color(0xe7b989) + .components('1x chlorine', '1x bromine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('concentrated_bromine_solution') + .liquid() + .color(0x905d29) + .components('1x bromine', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('debrominated_brine') + .liquid() + .color(0xc3874a) + + event.create('acidic_bromine_exhaust') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).attribute(GTFluidAttributes.ACID).temperature(293)) + .color(0xec9c4a) + .components('3x water', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('hot_alkaline_debrominated_brine') + .liquid() + .color(0xcc6a06) + .components('2x unknown', '1x chlorine') + .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) + + event.create('hot_debrominated_brine') + .liquid(320) + .color(0xb08e6b) + + event.create('hydrogen_iodide') + .gas(new GTFluidBuilder().state(GTFluidState.GAS).temperature(293)) + .color(0x82a6ce) + .components('1x hydrogen', '1x iodine') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js b/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js new file mode 100644 index 000000000..963c68a77 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/blocks.beneath_deco.js @@ -0,0 +1,22 @@ +"use strict"; + +function registerTFGWorldGenBeneathDecoBlocks(event) { + + event.create('tfg:mushroom_roots', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfc:plants') + + event.create('tfg:mushroom_sprouts', 'tfg:decorative_plant') + .soundType('nether_wart') + .tagItem('tfc:plants') + + event.create('tfg:charred_log') + .fullBlock(true) + .woodSoundType() + .property(BlockProperties.AXIS) + .tagBoth('minecraft:mineable/axe') + .tagBoth('tfc:logs_that_log') + .tagBoth('afc:logs_that_log') + .tagBoth('minecraft:logs') + .mapColor('black') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js b/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js new file mode 100644 index 000000000..b5142d066 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/blocks.trees.js @@ -0,0 +1,115 @@ +"use strict"; + +function registerTFGWorldGenTrees(event) { + + // Mars Saplings + + event.create('tfg:saplings/crimson', 'tfc:sapling') + .features('tfg:mars/tree/crimson') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(6) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/warped', 'tfc:sapling') + .features('tfg:mars/tree/warped') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(6) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/alphacene', 'tfc:sapling') + .features('species:alphacene_mushroom') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(3) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/strophar', 'tfc:sapling') + .features('tfg:mars/tree/strophar_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(7) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/aeronos', 'tfc:sapling') + .features('tfg:mars/tree/aeronos_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(9) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + event.create('tfg:saplings/glacian', 'tfc:sapling') + .features('tfg:mars/tree/glacian_mini') + .tagBoth('minecraft:saplings') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') + .growthDays(9) + .soundType('nether_wart') + .defaultCutout() + .noCollision() + + // Glacian tree stuff + event.create('tfg:glacian_leaves', 'tfc:leaves') + .soundType('azalea_leaves') + .tagBlock('minecraft:mineable/hoe') + .tagBlock('tfg:do_not_destroy_in_space') + .mapColor('snow') + .seasonalColors(false) + .fallenLeaves(leaves => { + leaves.noCollision() + leaves.notSolid() + leaves.defaultCutout() + leaves.soundType('azalea_leaves') + leaves.tagBlock('minecraft:mineable/hoe') + leaves.tagBlock('minecraft:replaceable') + leaves.noDynamicTinting() + leaves.models((modelType, generator) => { + if (modelType.layers != 8) { + generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height); + generator.texture("all", "ad_astra:block/glacian_leaves"); + } else { + generator.parent("ad_astra:block/glacian_leaves"); + } + }) + }) + + event.create('tfg:glacian_wood', 'tfc:log') + .tagBoth('minecraft:logs') + .tagItem('minecraft:logs_that_burn') + .tagItem('ad_astra:glacian_logs') + .tagBlock('minecraft:mineable/axe') + .soundType('wood') + .stripped(stripped => { + stripped.tagBoth('minecraft:logs') + stripped.tagItem('minecraft:logs_that_burn') + stripped.tagItem('ad_astra:glacian_logs') + stripped.tagBlock('minecraft:mineable/axe') + stripped.soundType('wood') + }) + + event.create('tfg:glacian_log', 'tfc:log') + .tagBoth('minecraft:logs') + .tagBoth('c:hidden_from_recipe_viewers') + .soundType('wood') + .stripped(stripped => { + stripped.tagBoth('minecraft:logs') + stripped.tagBoth('c:hidden_from_recipe_viewers') + stripped.soundType('wood') + }) +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/items.wood.js b/kubejs/startup_scripts/tfg/worldgen/items.wood.js new file mode 100644 index 000000000..db87b70c9 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/items.wood.js @@ -0,0 +1,24 @@ +"use strict"; + +function registerTFGWoodItems(event) { + + global.AD_ASTRA_WOOD.forEach(wood => { + event.create(`tfg:wood/lumber/${wood.name}`) + .translationKey(`item.tfg.${wood.name}_lumber`) + .tag('tfc:lumber') + }) + + + event.create('tfg:twigs/strophar') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/strophar') + event.create('tfg:twigs/aeronos') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/aeronos') + event.create('tfg:twigs/glacian') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/glacian') + event.create('tfg:twigs/alphacene') + .tag('tfc:twigs') + .texture('tfg:item/wood/twig/alphacene') +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/worldgen/utility.js b/kubejs/startup_scripts/tfg/worldgen/utility.js new file mode 100644 index 000000000..83e19c2f5 --- /dev/null +++ b/kubejs/startup_scripts/tfg/worldgen/utility.js @@ -0,0 +1,29 @@ +// priority: 0 +"use strict"; + + +/** + * @param {any} event + * @param {string} id + * @param {string} planet + */ +function createPlant(event, id, planet) { + return event.create(`betterend:${id}`, 'tfg:decorative_plant') + .tagItem(`tfg:${planet}_plants`) + .tagBlock('minecraft:replaceable') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_snow_piled') +} + +/** + * @param {any} event + * @param {string} id + * @param {string} planet + */ +function createWaterPlant(event, id, planet) { + return event.create(`betterend:${id}`, 'tfg:decorative_plant') + .tagItem(`tfg:${planet}_plants`) + .tagBlock('minecraft:replaceable') + .tagBlock('tfg:do_not_destroy_in_space') + .tagBlock('tfc:can_be_ice_piled') +} \ No newline at end of file From 6f84c238a1f6c7c184f0bc8c25d97c56a90c2a99 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 2 Dec 2025 11:22:45 +0500 Subject: [PATCH 05/26] Bump the dependencies group across 1 directory with 3 updates (#2315) Bumps the dependencies group with 3 updates in the / directory: [actions/checkout](https://github.com/actions/checkout), [roamingowl/template-output-with-eta](https://github.com/roamingowl/template-output-with-eta) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release). Updates `actions/checkout` from 5.0.0 to 6.0.0 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v5.0.0...v6.0.0) Updates `roamingowl/template-output-with-eta` from 2.1.0 to 2.2.0 - [Release notes](https://github.com/roamingowl/template-output-with-eta/releases) - [Commits](https://github.com/roamingowl/template-output-with-eta/compare/v2.1.0...v2.2.0) Updates `softprops/action-gh-release` from 2.4.2 to 2.5.0 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v2.4.2...v2.5.0) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: 6.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: dependencies - dependency-name: roamingowl/template-output-with-eta dependency-version: 2.2.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies - dependency-name: softprops/action-gh-release dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: dependencies ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 339765c99..9f6283efd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,7 +34,7 @@ jobs: steps: - name: 📦 Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 with: fetch-depth: 0 @@ -194,7 +194,7 @@ jobs: - name: 📄 Format diff id: format_diff if: ${{ steps.read_diff.outputs.diff != '' }} - uses: roamingowl/template-output-with-eta@v2.1.0 + uses: roamingowl/template-output-with-eta@v2.2.0 with: template: | ```markdown @@ -229,7 +229,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 with: fetch-depth: 0 @@ -313,7 +313,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 - name: 🔄 Replace strings shell: bash @@ -424,7 +424,7 @@ jobs: steps: - name: 📦 Checkout - uses: actions/checkout@v5.0.0 + uses: actions/checkout@v6.0.0 - name: 📦 Download artifact uses: actions/download-artifact@v6.0.0 @@ -452,7 +452,7 @@ jobs: - name: 📄 Format diff id: format_diff if: ${{ needs.info.outputs.diff != '' }} - uses: roamingowl/template-output-with-eta@v2.1.0 + uses: roamingowl/template-output-with-eta@v2.2.0 with: template: | ```markdown @@ -461,7 +461,7 @@ jobs: - name: 🚀 Create release id: release - uses: softprops/action-gh-release@v2.4.2 + uses: softprops/action-gh-release@v2.5.0 with: name: ${{ needs.info.outputs.project_version }} tag_name: ${{ needs.info.outputs.project_version }} From b09b3215a302a18d785c0596a084076cdb87dad8 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:12:21 +0000 Subject: [PATCH 06/26] make some quests optional --- config/ftbquests/quests/chapters/questsmetallurgy.snbt | 3 +++ config/ftbquests/quests/chapters/questssteam_age.snbt | 2 ++ 2 files changed, 5 insertions(+) diff --git a/config/ftbquests/quests/chapters/questsmetallurgy.snbt b/config/ftbquests/quests/chapters/questsmetallurgy.snbt index 5b8e901f7..99a9758b1 100644 --- a/config/ftbquests/quests/chapters/questsmetallurgy.snbt +++ b/config/ftbquests/quests/chapters/questsmetallurgy.snbt @@ -50,6 +50,7 @@ { id: "19CF6D922179DFF9" linked_quest: "11C45DBB20ED7647" + shape: "heart" x: 9.0d y: -34.0d } @@ -1203,6 +1204,8 @@ dependencies: ["3C173357029AB649"] description: ["{quests.metal_age.copper_diving.desc}"] id: "70FE6706B43FC5FC" + optional: true + shape: "heart" subtitle: "{quests.metal_age.copper_diving.subtitle}" tasks: [ { diff --git a/config/ftbquests/quests/chapters/questssteam_age.snbt b/config/ftbquests/quests/chapters/questssteam_age.snbt index 660a1750c..4c553582d 100644 --- a/config/ftbquests/quests/chapters/questssteam_age.snbt +++ b/config/ftbquests/quests/chapters/questssteam_age.snbt @@ -577,6 +577,8 @@ description: ["{quests.steam_age.steam_bloomery.desc}"] icon: "gtceu:steam_bloomery" id: "0805CCABC8E7F6CF" + optional: true + shape: "heart" size: 1.5d subtitle: "{quests.steam_age.steam_bloomery.subtitle}" tasks: [ From 1545f19ce6c1fb42885ae16c687b0af337209b95 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:12:36 +0000 Subject: [PATCH 07/26] big refactor of a lot of the recipe files! --- kubejs/server_scripts/ad_astra/recipes.js | 549 +----- kubejs/server_scripts/ae2/recipes.js | 10 - kubejs/server_scripts/afc/recipes.js | 6 +- kubejs/server_scripts/beneath/recipes.js | 46 - kubejs/server_scripts/create/recipes.js | 64 - kubejs/server_scripts/gregtech/recipes.js | 1476 +---------------- .../gregtech/recipes.machines.js | 446 +---- .../gregtech/recipes.recycling.js | 116 +- .../gregtech/recipes.removes.js | 7 + kubejs/server_scripts/gregtech/tags.js | 4 - .../immersive_aircraft/recipes.js | 48 + kubejs/server_scripts/main_server_script.js | 2 +- kubejs/server_scripts/minecraft/recipes.js | 94 -- kubejs/server_scripts/species/recipes.js | 24 - kubejs/server_scripts/tfc/data.js | 23 - kubejs/server_scripts/tfc/recipes.js | 293 +--- kubejs/server_scripts/tfc/recipes.machines.js | 452 ----- kubejs/server_scripts/tfc/recipes.metals.js | 37 +- kubejs/server_scripts/tfc/recipes.wood.js | 55 - kubejs/server_scripts/tfg/data.js | 955 +---------- .../server_scripts/tfg/events.interactions.js | 521 ++++++ kubejs/server_scripts/tfg/events.js | 724 -------- kubejs/server_scripts/tfg/food/data.crops.js | 88 + kubejs/server_scripts/tfg/food/data.food.js | 583 +++++++ .../server_scripts/tfg/food/data.planters.js | 167 ++ .../tfg/food/recipes.biomass.js | 182 ++ .../tfg/{ => food}/recipes.food.js | 82 - .../tfg/food/recipes.meal_bags.js | 108 ++ .../tfg/food/recipes.refrigerators.js | 113 ++ .../tfg/machines/recipes.casings.js | 182 ++ .../tfg/machines/recipes.components.js | 254 +++ .../tfg/machines/recipes.ender_pearls.js | 61 + .../tfg/{ => machines}/recipes.molds.js | 0 .../tfg/machines/recipes.multiblocks.js | 177 ++ .../tfg/machines/recipes.steam_bloomery.js | 38 + .../events.sandstorm.js} | 0 .../server_scripts/tfg/mars/recipes.iodine.js | 74 + .../server_scripts/tfg/mars/recipes.mars.js | 231 +++ .../server_scripts/tfg/mars/recipes.ostrum.js | 140 ++ .../server_scripts/tfg/moon/recipes.moon.js | 27 + .../server_scripts/tfg/moon/recipes.plants.js | 90 + .../tfg/moon/recipes.regolith.js | 144 ++ .../natural_blocks}/recipes.alabaster.js | 2 +- .../{ => natural_blocks}/recipes.collapse.js | 4 + .../tfg/natural_blocks/recipes.concrete.js | 144 ++ .../natural_blocks}/recipes.dirt.js | 9 +- .../tfg/{ => natural_blocks}/recipes.rocks.js | 25 + .../natural_blocks}/recipes.sand.js | 23 +- .../recipes.stone_dusts.js | 18 + .../natural_blocks/recipes.tfc_stone.js} | 0 .../tfg/{ => natural_blocks}/tags.stones.js | 0 .../tfg/nuclear/recipes.ostrum.js | 83 - .../ores_and_materials/loot.ores.js} | 2 +- .../ores_and_materials/recipes.alloys.js} | 79 +- .../tfg/ores_and_materials/recipes.bromine.js | 126 ++ .../ores_and_materials/recipes.quartzes.js | 132 ++ .../ores_and_materials/recipes.tungsten.js | 86 + .../ores_and_materials/recipes.zirconium.js | 61 + .../nuclear/recipes.components.js | 0 .../{ => powergen}/nuclear/recipes.nuclear.js | 145 -- .../{ => powergen}/nuclear/tags.nuclear.js | 0 .../tfg/powergen/recipes.biodiesel.js | 116 ++ .../tfg/powergen/recipes.boiler.js | 91 + .../tfg/powergen/recipes.coal.js | 96 ++ .../recipes.early_gas.js} | 66 +- .../tfg/powergen/recipes.solar.js | 184 ++ .../tfg/primitive/events.fishing_nets.js | 93 ++ .../tfg/primitive/events.medicine.js | 100 ++ .../tfg/primitive/recipes.arrows.js | 75 + .../tfg/primitive/recipes.baskets.js | 64 + .../tfg/primitive/recipes.clay.js | 144 ++ .../tfg/primitive/recipes.cloth.js | 263 +++ .../tfg/primitive/recipes.compost.js | 194 +++ .../{ => primitive}/recipes.fishing_nets.js | 0 .../primitive/recipes.glue_and_chipboard.js | 101 ++ .../tfg/primitive/recipes.ice.js | 104 ++ .../primitive}/recipes.knapping.js | 2 +- .../tfg/primitive/recipes.leather.js | 212 +++ .../tfg/{ => primitive}/recipes.medicine.js | 0 .../tfg/{ => primitive}/recipes.paper.js | 29 +- .../tfg/primitive/recipes.rubber.js | 133 ++ .../tfg/{ => primitive}/recipes.supports.js | 0 .../tfg/primitive/recipes.vases.js | 59 + .../tfg/primitive/recipes.wax.js | 64 + .../tfg/primitive/recipes.wood.js | 236 +++ kubejs/server_scripts/tfg/recipes.js | 79 +- .../tfg/recipes.miscellaneous.js | 1433 +--------------- kubejs/server_scripts/tfg/recipes.space.js | 457 ----- .../server_scripts/tfg/recipes.space_ores.js | 259 --- .../tfg/space_general/recipes.insulation.js | 234 +++ .../tfg/space_general/recipes.railgun.js | 111 ++ .../tfg/space_general/recipes.rockets.js | 283 ++++ .../tfg/space_general/recipes.space.js | 114 ++ .../tfg/space_general/recipes.space_suits.js | 182 ++ kubejs/server_scripts/tfg/tags.js | 6 +- .../tfg/{ => venus}/recipes.biochem.js | 0 .../server_scripts/tfg/worldgen/data.fauna.js | 108 ++ .../tfg/{ => worldgen}/entities.js | 0 .../tfg/{ => worldgen}/events.chunks.js | 0 .../tfg/{ => worldgen}/events.forests.js | 0 .../{tfc => tfg/worldgen}/select_climates.js | 0 .../wan_ancient_beasts/recipes.js | 13 - .../tfg/nuclear/materials.nuclear.js | 4 +- 103 files changed, 7701 insertions(+), 7640 deletions(-) delete mode 100644 kubejs/server_scripts/tfc/recipes.machines.js delete mode 100644 kubejs/server_scripts/tfc/recipes.wood.js create mode 100644 kubejs/server_scripts/tfg/events.interactions.js create mode 100644 kubejs/server_scripts/tfg/food/data.crops.js create mode 100644 kubejs/server_scripts/tfg/food/data.food.js create mode 100644 kubejs/server_scripts/tfg/food/data.planters.js create mode 100644 kubejs/server_scripts/tfg/food/recipes.biomass.js rename kubejs/server_scripts/tfg/{ => food}/recipes.food.js (95%) create mode 100644 kubejs/server_scripts/tfg/food/recipes.meal_bags.js create mode 100644 kubejs/server_scripts/tfg/food/recipes.refrigerators.js create mode 100644 kubejs/server_scripts/tfg/machines/recipes.casings.js create mode 100644 kubejs/server_scripts/tfg/machines/recipes.components.js create mode 100644 kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js rename kubejs/server_scripts/tfg/{ => machines}/recipes.molds.js (100%) create mode 100644 kubejs/server_scripts/tfg/machines/recipes.multiblocks.js create mode 100644 kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js rename kubejs/server_scripts/tfg/{events.mars.js => mars/events.sandstorm.js} (100%) create mode 100644 kubejs/server_scripts/tfg/mars/recipes.iodine.js create mode 100644 kubejs/server_scripts/tfg/mars/recipes.mars.js create mode 100644 kubejs/server_scripts/tfg/mars/recipes.ostrum.js create mode 100644 kubejs/server_scripts/tfg/moon/recipes.moon.js create mode 100644 kubejs/server_scripts/tfg/moon/recipes.plants.js create mode 100644 kubejs/server_scripts/tfg/moon/recipes.regolith.js rename kubejs/server_scripts/{tfc => tfg/natural_blocks}/recipes.alabaster.js (98%) rename kubejs/server_scripts/tfg/{ => natural_blocks}/recipes.collapse.js (97%) create mode 100644 kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js rename kubejs/server_scripts/{tfc => tfg/natural_blocks}/recipes.dirt.js (95%) rename kubejs/server_scripts/tfg/{ => natural_blocks}/recipes.rocks.js (98%) rename kubejs/server_scripts/{tfc => tfg/natural_blocks}/recipes.sand.js (93%) rename kubejs/server_scripts/tfg/{ => natural_blocks}/recipes.stone_dusts.js (95%) rename kubejs/server_scripts/{tfc/recipes.stone.js => tfg/natural_blocks/recipes.tfc_stone.js} (100%) rename kubejs/server_scripts/tfg/{ => natural_blocks}/tags.stones.js (100%) delete mode 100644 kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js rename kubejs/server_scripts/{gregtech/loot.js => tfg/ores_and_materials/loot.ores.js} (99%) rename kubejs/server_scripts/{gregtech/recipes.tfcmetals.js => tfg/ores_and_materials/recipes.alloys.js} (63%) create mode 100644 kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js create mode 100644 kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js create mode 100644 kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js create mode 100644 kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js rename kubejs/server_scripts/tfg/{ => powergen}/nuclear/recipes.components.js (100%) rename kubejs/server_scripts/tfg/{ => powergen}/nuclear/recipes.nuclear.js (77%) rename kubejs/server_scripts/tfg/{ => powergen}/nuclear/tags.nuclear.js (100%) create mode 100644 kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js create mode 100644 kubejs/server_scripts/tfg/powergen/recipes.boiler.js create mode 100644 kubejs/server_scripts/tfg/powergen/recipes.coal.js rename kubejs/server_scripts/tfg/{early_power.js => powergen/recipes.early_gas.js} (77%) create mode 100644 kubejs/server_scripts/tfg/powergen/recipes.solar.js create mode 100644 kubejs/server_scripts/tfg/primitive/events.fishing_nets.js create mode 100644 kubejs/server_scripts/tfg/primitive/events.medicine.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.arrows.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.baskets.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.clay.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.cloth.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.compost.js rename kubejs/server_scripts/tfg/{ => primitive}/recipes.fishing_nets.js (100%) create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.ice.js rename kubejs/server_scripts/{tfc => tfg/primitive}/recipes.knapping.js (99%) create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.leather.js rename kubejs/server_scripts/tfg/{ => primitive}/recipes.medicine.js (100%) rename kubejs/server_scripts/tfg/{ => primitive}/recipes.paper.js (91%) create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.rubber.js rename kubejs/server_scripts/tfg/{ => primitive}/recipes.supports.js (100%) create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.vases.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.wax.js create mode 100644 kubejs/server_scripts/tfg/primitive/recipes.wood.js delete mode 100644 kubejs/server_scripts/tfg/recipes.space.js delete mode 100644 kubejs/server_scripts/tfg/recipes.space_ores.js create mode 100644 kubejs/server_scripts/tfg/space_general/recipes.insulation.js create mode 100644 kubejs/server_scripts/tfg/space_general/recipes.railgun.js create mode 100644 kubejs/server_scripts/tfg/space_general/recipes.rockets.js create mode 100644 kubejs/server_scripts/tfg/space_general/recipes.space.js create mode 100644 kubejs/server_scripts/tfg/space_general/recipes.space_suits.js rename kubejs/server_scripts/tfg/{ => venus}/recipes.biochem.js (100%) create mode 100644 kubejs/server_scripts/tfg/worldgen/data.fauna.js rename kubejs/server_scripts/tfg/{ => worldgen}/entities.js (100%) rename kubejs/server_scripts/tfg/{ => worldgen}/events.chunks.js (100%) rename kubejs/server_scripts/tfg/{ => worldgen}/events.forests.js (100%) rename kubejs/server_scripts/{tfc => tfg/worldgen}/select_climates.js (100%) diff --git a/kubejs/server_scripts/ad_astra/recipes.js b/kubejs/server_scripts/ad_astra/recipes.js index 3e7a73a00..250a1732d 100644 --- a/kubejs/server_scripts/ad_astra/recipes.js +++ b/kubejs/server_scripts/ad_astra/recipes.js @@ -8,426 +8,6 @@ const registerAdAstraRecipes = (event) => { event.remove({ mod: 'ad_astra' }) - //#region Rocket parts - - event.recipes.gtceu.shaped('ad_astra:launch_pad', [ - 'BAB', - 'AAA', - 'BAB' - ], { - A: '#forge:plates/steel', - B: '#forge:rods/steel' - }).addMaterialInfo().id('tfg:launch_pad') - - //#region Tier 1 rocket - - event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') - .itemInputs( - 'gtceu:hv_emitter', - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) - .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) - .itemOutputs('ad_astra:rocket_nose_cone') - .duration(1200) - .circuit(2) - .EUt(480) - .addMaterialInfo(true, true) - - - event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemInputs('gtceu:asbestos_dust') - .itemOutputs('gtceu:vitrified_asbestos_dust') - .duration(80) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') - .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') - .inputFluids(Fluid.of('gtceu:red_steel', 144)) - .itemOutputs('9x #forge:dusts/rocket_alloy_t1') - .duration(580) - .circuit(2) - .EUt(480) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('minecraft:water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(400) - .EUt(120) - - event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') - .itemInputs('#forge:hot_ingots/rocket_alloy_t1') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('#forge:ingots/rocket_alloy_t1') - .duration(250) - .EUt(120) - - event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) - ) - .itemOutputs('ad_astra:rocket_fin') - .duration(150) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_steel_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), - '2x #gtceu:circuits/hv', - 'gtceu:hv_electric_pump', - '2x gtceu:power_thruster', - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) - .itemOutputs('ad_astra:steel_engine') - .duration(600) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), - '4x ad_astra:rocket_fin', - '1x ad_astra:steel_engine', - '1x ad_astra:rocket_nose_cone', - '16x #forge:insulation_t1', - '4x #gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) - .itemOutputs('ad_astra:tier_1_rocket') - .duration(1200) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true, true) - - //#endregion - - - //region tier 2 rocket - - event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(1320 * 20) - .circuit(2) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) - .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) - .duration(17688) - .circuit(12) - .blastFurnaceTemp(3200) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') - .notConsumable('gtceu:ingot_casting_mold') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') - .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') - .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) - .itemOutputs('32x #forge:dusts/rocket_alloy_t2') - .duration(15 * 20) - .circuit(5) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') - .itemInputs('#forge:hot_ingots/rocket_alloy_t2') - .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) - .itemOutputs('#forge:ingots/rocket_alloy_t2') - .duration(120) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:rocket_fin_t2') - .itemInputs('#forge:plates/rocket_alloy_t2', - '#forge:double_plates/titanium') - .itemOutputs('tfg:rocket_fin_t2') - .duration(180) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t2') - .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', - '#forge:double_plates/desh') - .itemOutputs('tfg:rocket_cone_t2') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.assembler('tfg:rocket_desh_engine') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), - '2x #gtceu:circuits/ev', - 'gtceu:ev_electric_pump', - '3x gtceu:advanced_power_thruster', - ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) - .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) - .itemOutputs('ad_astra:desh_engine') - .duration(800) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), - '4x tfg:rocket_fin_t2', - '1x ad_astra:desh_engine', - '1x tfg:rocket_cone_t2', - '12x #forge:insulation_t2/roll', - '4x #gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) - .itemOutputs('ad_astra:tier_2_rocket') - .duration(1440) - .circuit(3) - .EUt(GTValues.VA[GTValues.EV]) - .addMaterialInfo(true, true) - - //#endregion - - //region Tier 3 DISABLED UNTIL IV - event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) - event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) - /* - event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .duration(800) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') - .itemInputs('#forge:hot_ingots/rocket_alloy_t3') - .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) - .itemOutputs('#forge:ingots/rocket_alloy_t3') - .outputFluids(Fluid.of('gtceu:helium', 250)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - - //Add some unique cooling thing for molten ingots - - event.recipes.gtceu.assembler('tfg:rocket_fin_t3') - .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') - .itemOutputs('tfg:rocket_fin_t3') - .duration(220) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_cone_t3') - .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', - '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet - .itemOutputs('tfg:rocket_cone_t3') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:elite_power_thruster') - .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', - 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') - .itemOutputs('tfg:elite_power_thruster') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') - .itemInputs( - '6x #forge:double_plates/tungsten_steel', - '4x #gtceu:circuits/iv', - 'gtceu:iv_electric_pump', - '3x tfg:elite_power_thruster', - '4x #forge:insulation_t3/cryo', - '6x #forge:rods/magnetic_neodymium', - '#forge:rotors/tungsten_steel') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) - .itemOutputs('ad_astra:ostrum_engine') - .duration(960) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') - .itemInputs( - '4x #forge:double_plates/rocket_alloy_t3', - 'gtceu:iv_electric_pump', - 'tfg:elite_power_thruster', - '2x #forge:insulation_t3/cryo') - .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) - .itemOutputs('ad_astra:ostrum_tank') - .duration(400) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') - .itemInputs( - '16x #forge:dense_plates/rocket_alloy_t3', - '4x tfg:rocket_fin_t3', - '1x ad_astra:ostrum_engine', - '2x ad_astra:ostrum_tank', - '1x tfg:rocket_cone_t3', - '8x #forge:insulation_t3/sheet' - ) - .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) - .itemOutputs('ad_astra:tier_3_rocket') - .duration(1700) - .circuit(4) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true, true) - - //#endregion -*/ - //#region space suits NETHERITE STUFF DISABLED UNTIL IV - - event.recipes.gtceu.forming_press('space_suit_fabric') - .itemInputs( - '#forge:foils/aluminium', - 'gtceu:carbon_fiber_mesh', - '#forge:foils/silicone_rubber', - 'tfg:polycaprolactam_fabric' - ) - .itemOutputs('2x tfg:space_suit_fabric') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - .addMaterialInfo(true) - - event.recipes.gtceu.forming_press('better_space_suit_fabric') - .itemInputs( - '#forge:foils/polybenzimidazole', - 'gtceu:carbon_fiber_mesh', - '#forge:aerogels', - 'tfg:glacian_wool' - ) - .itemOutputs('2x tfg:better_space_suit_fabric') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_helmet', [ - 'AAA', - 'ADA', - 'BBB' - ], { - A: 'gtceu:tempered_glass', - B: 'tfg:space_suit_fabric', - D: '#forge:small_fluid_pipes/polyethylene' - }).addMaterialInfo().id('tfg:space_helmet') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') - .itemInputs( - 'ad_astra:space_helmet', - '2x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '3x tfg:better_space_suit_fabric', - '5x gtceu:laminated_glass' - ) - .itemOutputs('ad_astra:netherite_space_helmet') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_suit', [ - 'B B', - 'BDB', - 'BBB' - ], { - B: 'tfg:space_suit_fabric', - D: 'ad_astra:oxygen_gear' - }).addMaterialInfo().id('tfg:space_suit') - - event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) - .id('tfg:empty_space_suit') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') - .itemInputs( - 'ad_astra:space_suit', - '3x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '5x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_suit') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) - .id('tfg:empty_netherite_space_suit') - - event.recipes.gtceu.shaped('ad_astra:space_pants', [ - 'BAB', - 'B B', - 'B B' - ], { - A: 'gtceu:hv_electric_motor', - B: 'tfg:space_suit_fabric', - }).addMaterialInfo().id('tfg:space_pants') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') - .itemInputs( - 'ad_astra:space_pants', - '2x #forge:plates/tungsten_steel', - '2x #forge:plates/ostrum', - '4x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_pants') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - event.recipes.gtceu.shaped('ad_astra:space_boots', [ - 'B B', - 'A A' - ], { - A: '#forge:plates/polyphenylene_sulfide', - B: 'tfg:space_suit_fabric' - }).addMaterialInfo().id('tfg:space_boots') - - event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') - .itemInputs( - 'ad_astra:space_boots', - '1x #forge:plates/tungsten_steel', - '1x #forge:plates/ostrum', - '2x tfg:better_space_suit_fabric' - ) - .itemOutputs('ad_astra:netherite_space_boots') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - .addMaterialInfo(true) - - - event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ - 'BAB', - 'ECE', - 'BDB' - ], { - A: '#gtceu:circuits/hv', - B: '#forge:tiny_fluid_pipes/stainless_steel', - C: 'gtceu:hv_electric_pump', - D: 'gtceu:fluid_detector_cover', - E: 'ad_astra:gas_tank' - }).addMaterialInfo().id('tfg:oxygen_gear') - - //#endregion //#region Gas tanks @@ -919,28 +499,6 @@ const registerAdAstraRecipes = (event) => { event.stonecutting('ad_astra:encased_etrium_block', '#tfg:ad_astra_etrium_blocks') event.stonecutting('ad_astra:etrium_plateblock', '#tfg:ad_astra_etrium_blocks') - event.recipes.tfc.loom( - '8x ad_astra:glacian_fur', - '8x tfg:glacian_wool', - 8, - 'ad_astra:block/glacian_fur' - ) - - event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') - .itemInputs('tfg:glacian_wool') - .circuit(10) - .itemOutputs('ad_astra:glacian_fur') - .duration(100) - .EUt(4) - - event.shaped('minecraft:pink_bed', [ - 'AAA', - 'BBB' - ], { - A: 'ad_astra:glacian_fur', - B: '#tfc:lumber' - }).id('tfg:shaped/glacian_bed') - //#endregion //#region Space stations @@ -949,10 +507,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:earth_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -961,10 +519,10 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:moon_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -973,10 +531,46 @@ const registerAdAstraRecipes = (event) => { type: "ad_astra:space_station_recipe", dimension: "ad_astra:mars_orbit", ingredients: [ - { count: 43, ingredient: { item: "gtceu:aluminium_frame" }}, - { count: 24, ingredient: { item: "gtceu:glass_plate" }}, - { count: 4, ingredient: { item: "minecraft:glowstone_dust" }}, - { count: 1, ingredient: { item: "ad_astra:launch_pad" }} + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:venus_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:mercury_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } + ], + structure: "tfg:orbit/space_station" + }) + + event.custom({ + type: "ad_astra:space_station_recipe", + dimension: "ad_astra:glacio_orbit", + ingredients: [ + { count: 43, ingredient: { item: "gtceu:aluminium_frame" } }, + { count: 24, ingredient: { item: "gtceu:glass_plate" } }, + { count: 4, ingredient: { item: "minecraft:glowstone_dust" } }, + { count: 1, ingredient: { item: "ad_astra:launch_pad" } } ], structure: "tfg:orbit/space_station" }) @@ -984,45 +578,12 @@ const registerAdAstraRecipes = (event) => { //#endregion //#region Wood - event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) - event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) - event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) - - global.AD_ASTRA_WOOD.forEach(wood => { - woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) - }) - - event.shaped('16x ad_astra:aeronos_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/aeronos', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/aeronos_ladder') - - event.shaped('16x ad_astra:strophar_ladder', [ - 'A A', - 'ABA', - 'A A' - ], { - A: 'tfg:wood/lumber/strophar', - B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), - }).id('tfg:shaped/strophar_ladder') - - - generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, - '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, - '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' }) + event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' }) + event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' }) //#endregion } diff --git a/kubejs/server_scripts/ae2/recipes.js b/kubejs/server_scripts/ae2/recipes.js index 117d1425b..0bc16b7c4 100644 --- a/kubejs/server_scripts/ae2/recipes.js +++ b/kubejs/server_scripts/ae2/recipes.js @@ -2306,16 +2306,6 @@ const registerAE2Recipes = (event) => { .category(GTRecipeCategories.MACERATOR_RECYCLING) .EUt(GTValues.VA[GTValues.ULV]) - // Cryogenized Fluix - - event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .inputFluids(Fluid.of('tfg:fluix', 144)) - .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - // Certus deco blocks event.stonecutting('ae2:quartz_block', '#tfg:certus_quartz_blocks') diff --git a/kubejs/server_scripts/afc/recipes.js b/kubejs/server_scripts/afc/recipes.js index 4bc552380..fa7d7a67e 100644 --- a/kubejs/server_scripts/afc/recipes.js +++ b/kubejs/server_scripts/afc/recipes.js @@ -361,7 +361,7 @@ const registerAFCRecipes = (event) => { //#endregion - //region gt sap processing + //#region GT sap processing event.recipes.gtceu.fluid_heater('maple_sap_condense') .inputFluids(Fluid.of('afc:maple_sap', 1000)) @@ -375,8 +375,6 @@ const registerAFCRecipes = (event) => { .duration(20*35) .EUt(GTValues.VA[GTValues.ULV]) - - //endregion event.recipes.gtceu.fluid_solidifier('maple_syrup') .inputFluids(Fluid.of('afc:maple_syrup', 100)) @@ -389,6 +387,8 @@ const registerAFCRecipes = (event) => { .itemOutputs('afc:birch_sugar') .duration(20*12) .EUt(GTValues.VHA[GTValues.ULV]) + + //#endregion // Syrup into sugar diff --git a/kubejs/server_scripts/beneath/recipes.js b/kubejs/server_scripts/beneath/recipes.js index 9c56912e3..11edd6094 100644 --- a/kubejs/server_scripts/beneath/recipes.js +++ b/kubejs/server_scripts/beneath/recipes.js @@ -67,12 +67,6 @@ const registerBeneathRecipes = (event) => { event.recipes.tfc.landslide('beneath:soul_clay', 'beneath:soul_clay') - generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, - '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) - generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, - '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) Ingredient.of('#beneath:mushrooms').stacks.forEach(element => { const itemId = element.id; @@ -82,26 +76,6 @@ const registerBeneathRecipes = (event) => { recipeId, 'minecraft:the_nether', 8, element.withCount(4), GTValues.VH[GTValues.LV]); }); - // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those - woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', - 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, - 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', - 'beneath:wood/planks/crimson_button') - - event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/crimson') - .itemOutputs('beneath:wood/stripped_wood/crimson') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/crimson' }], - results: [{ item: 'beneath:wood/stripped_wood/crimson' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_crimson_wood`) - event.shaped('beneath:wood/sewing_table/crimson', [ ' AB', 'CCC', @@ -113,26 +87,6 @@ const registerBeneathRecipes = (event) => { D: 'beneath:wood/log/crimson' }).id('tfg:shaped/crimson_sewing_table') - - woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', - 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, - 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', - 'beneath:wood/planks/warped_button') - - event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) - .itemInputs('beneath:wood/wood/warped') - .itemOutputs('beneath:wood/stripped_wood/warped') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: 'beneath:wood/wood/warped' }], - results: [{ item: 'beneath:wood/stripped_wood/warped' }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_warped_wood`) - event.shaped('beneath:wood/sewing_table/warped', [ ' AB', 'CCC', diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 2cf69d560..bf6d47c34 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -985,70 +985,6 @@ const registerCreateRecipes = (event) => { .duration(200) .EUt(20) - // Электронная трубка - event.shaped('1x create:electron_tube', [ - 'FAG', - 'BCB', - 'DED' - ], { - A: 'gtceu:glass_tube', - B: '#forge:bolts/steel', - C: 'gtceu:wood_plate', - D: 'gtceu:red_alloy_single_wire', - E: '#forge:plates/wrought_iron', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube') - - event.recipes.createSequencedAssembly([ - '2x create:electron_tube', - ], 'gtceu:wood_plate', [ - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), - event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), - ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') - - event.recipes.gtceu.assembler('create:electron_tube') - .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('2x create:electron_tube') - .duration(50) - .EUt(7) - .circuit(14) - - event.shaped('4x create:electron_tube', [ - 'FAG', - 'DCD' - ], { - A: 'gtceu:glass_tube', - C: 'gtceu:plastic_circuit_board', - D: 'gtceu:red_alloy_single_wire', - F: '#forge:tools/screwdrivers', - G: '#forge:tools/wire_cutters' - }).id('tfg:create/shaped/electron_tube2') - - event.recipes.gtceu.assembler('create:electron_tube2') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - - event.shaped('4x create:electron_tube', [ - ' A ', - ' B ', - ' C ' - ], { - A: '#forge:tools/screwdrivers', - B: 'gtceu:nand_chip', - C: 'gtceu:plastic_circuit_board' - }).id('tfg:create/shaped/electron_tube3') - - event.recipes.gtceu.assembler('create:electron_tube3') - .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') - .itemOutputs('4x create:electron_tube') - .duration(50) - .EUt(7) - // Тюбик с клеем event.shaped('create:super_glue', [ 'BA', diff --git a/kubejs/server_scripts/gregtech/recipes.js b/kubejs/server_scripts/gregtech/recipes.js index b40802279..508996a71 100644 --- a/kubejs/server_scripts/gregtech/recipes.js +++ b/kubejs/server_scripts/gregtech/recipes.js @@ -9,634 +9,15 @@ const registerGTCEURecipes = (event) => { registerGTCEUMetalRecipes(event) registerGTCEURecyclingRecipes(event) - registerGTCEuTFCMetalsRecipes(event) registerGTCEuMachineRecipes(event) removeGTCEURecipes(event) - //#region Выход: Удобрение - // В обычном миксере - event.recipes.gtceu.mixer('tfg:fertilizer') - .itemInputs( - '#tfc:dirt', - '2x #tfg:wood_dusts', - '4x #forge:sand' - ) - .circuit(1) - .inputFluids("#tfg:clean_water 1000") - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - event.recipes.gtceu.mixer('tfg:fertilizer_2') - .itemInputs('tfc:compost') - .inputFluids('#tfg:clean_water 1000') - .itemOutputs('4x gtceu:fertilizer') - .duration(300) - .EUt(30) - - //#endregion - - //#region Выход: Кварцевый песок - - event.shaped('gtceu:quartz_sand_dust', [ - 'A', - 'B' - ], { - A: '#forge:sand', - B: '#forge:tools/mortars' - }).id('gtceu:shaped/quartz_sand') - - event.recipes.gtceu.macerator('quartz_sand_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('gtceu:quartz_sand_dust') - .duration(30) - .EUt(2) - - //#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) - - event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') - .recipeTier(0) - .id('greate:pressing/flux') - - //#region Выход: Диоксид силикона - - event.recipes.gtceu.electrolyzer('sand_electrolysis') - .itemInputs('8x #forge:sand') - .itemOutputs('gtceu:silicon_dioxide_dust') - .duration(500) - .EUt(25) - - //#endregion - - event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') - .itemInputs('5x tfc:food/beet') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(800) - .EUt(7) - .circuit(3) - - event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') - - //#region Выход: Соленая пыль + Вода - - // Декрафт в центрифуге - event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:salt_dust') - .outputFluids(Fluid.of('minecraft:water', 1000)) - .duration(51) - .EUt(30) - .circuit(1) - - // Декрафт в электролайзере - event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') - .inputFluids(Fluid.of('tfc:salt_water', 1000)) - .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') - .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) - .duration(720) - .EUt(30) - - // Add circuit to gregtech salt water mixer recipe - event.remove({ id: 'gtceu:mixer/salt_water' }) - generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') - - //#endregion - - //#region Выход: Пропитанные доски - - event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) - - event.recipes.tfc.barrel_sealed(4000) - .outputItem('gtceu:treated_wood_planks') - .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) - .id('tfg:barrel/treated_wood_planks') - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('gtceu:treated_wood_dust') - .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) - .id('tfg:barrel/treated_wood_dust') - - //#endregion - - //#region Выход: Капля резины - - // Из латекса - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_latex') - - event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('gtceu:sticky_resin') - .id('tfg:pot/sticky_resin_from_conifer_pitch') - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') - .duration(12 * 20) - .EUt(30) - .itemInputs('tfc:powder/wood_ash') - .itemOutputs('gtceu:sticky_resin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - //#endregion - - //#region Выход: Растительный шарик - // 8x Ванильная растительность -> Plant Ball (Compressor) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') - .itemInputs('4x #tfc:seeds') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - let food = Ingredient.of('#tfc:foods') - .subtract('minecraft:brown_mushroom') - .subtract('minecraft:red_mushroom') - .withCount(8) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_food') - .itemInputs(food) - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') - .itemInputs('4x #tfc:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_moon_plants') - .itemInputs('4x #tfg:moon_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_mars_plants') - .itemInputs('4x #tfg:mars_plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') - .itemInputs('4x #tfc:corals') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_misc_plants') - .itemInputs('4x #createaddition:plants') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') - .itemInputs('4x #minecraft:wart_blocks') - .itemOutputs('gtceu:plant_ball') - .duration(300) - .EUt(2) - - //#endregion - - //#region Выход: Биомасса - - // Ванильная растительность -> Биомасса (Brewery) - - event.recipes.gtceu.brewery('biomass_from_tfc_seeds') - .itemInputs('#tfc:seeds') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_food') - .itemInputs('#tfc:foods') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_plants') - .itemInputs('#tfc:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_moon_plants') - .itemInputs('#tfg:moon_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_mars_plants') - .itemInputs('#tfg:mars_plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_tfc_corals') - .itemInputs('#tfc:corals') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_spider_eyes') - .itemInputs('minecraft:spider_eye') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_leaves') - .itemInputs('#minecraft:leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_minecraft_plants') - .itemInputs('#createaddition:plants') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .duration(100) - .EUt(3) - - event.recipes.gtceu.brewery('biomass_from_wart_blocks') - .itemInputs('#minecraft:wart_blocks') - .inputFluids("#tfc:any_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 50)) - .duration(100) - .EUt(3) - - //#endregion - - //#region Выход: Рыбье масло - - event.recipes.gtceu.extractor(`tfg:fish_oil`) - .itemInputs('#minecraft:fishes') - .outputFluids(Fluid.of('gtceu:fish_oil', 200)) - .duration(40) - .EUt(4) - - event.recipes.gtceu.extractor(`tfg:tallow`) - .itemInputs('tfc:blubber') - .outputFluids(Fluid.of('tfc:tallow', 200)) - .duration(40) - .EUt(4) - - // you get tallow from killing things like orcas, so this seems close enough - event.recipes.gtceu.mixer('tallow_to_fish_oil') - .inputFluids('tfc:tallow 100', 'tfc:lye 100') - .outputFluids('gtceu:fish_oil 200') - .duration(100) - .EUt(4) - - //#endregion - - //#region Выход: Семянное масло - - event.recipes.gtceu.extractor(`tfg:seed_oil`) - .itemInputs('#tfc:seeds') - .outputFluids(Fluid.of('gtceu:seed_oil', 50)) - .duration(32) - .EUt(2) - - //#endregion - - //#region Выход: Цемент - - const recipe = event.recipes.gtceu.mixer('concrete_from_marble') - .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') - .inputFluids("#tfg:clean_water 1000") - .outputFluids('gtceu:concrete 1152') - .duration(40) - .EUt(16) - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], - "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') - - generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], - "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') - - //GT light/dark concrete recipe fix - - event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) - event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) - - event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') - .inputFluids(Fluid.of('gtceu:concrete', 144)) - .notConsumable('1x gtceu:block_casting_mold') - .itemOutputs('1x gtceu:light_concrete') - .duration(98) - .EUt(7) - - event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') - .inputFluids(Fluid.of('tfc:black_dye', 18)) - .itemInputs('1x gtceu:light_concrete') - .itemOutputs('1x gtceu:dark_concrete') - .duration(20) - .EUt(7) - - event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') - .itemInputs('1x gtceu:light_concrete') - .outputFluids(Fluid.of('gtceu:concrete', 144)) - .duration(98) - .EUt(30) - - event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') - event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') - event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') - event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') - event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') - event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') - event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') - event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') - - event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') - event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') - event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') - event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') - event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') - event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') - event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') - event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') - - //#endregion - - //#region GT marble - - event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') - event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') - event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') - event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') - event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') - event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') - event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') - event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') - - //#endregion - - //#region Выход: Бурильная жидкость + // Drilling fluid from all stone dusts generateMixerRecipe(event, ['2x #tfg:stone_dusts'], ['gtceu:lubricant 20', "#tfg:clean_water 4000"], [], null, Fluid.of('gtceu:drilling_fluid', 5000), 40, 16, 64, 'drilling_fluid') - //#endregion - - //#region Выход: Пыль мяса - - event.recipes.gtceu.macerator('macerate_meat_to_dust') - .itemInputs('#tfc:foods/meats') - .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region Выход: Пыль какао-бобов - - event.recipes.gtceu.macerator('macerate_cocoa') - .itemInputs('firmalife:food/roasted_cocoa_beans') - .itemOutputs('gtceu:cocoa_dust') - .duration(100) - .EUt(2) - - //#endregion - - //#region Стеклодувка - - // Glass Tube - event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) - .id('tfg:gtceu/glassworking/glass_tube') - - //#endregion - - // Пыль звезды незера - 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') - // TODO: change to something else with venus - .inputFluids(Fluid.of('gtceu:neon', 1000)) - .duration(700) - .EUt(2720) - - // Empty Wooden Form - event.shaped('gtceu:empty_wooden_form', [ - ' AA', - 'BAA' - ], { - A: '#minecraft:planks', - B: '#forge:tools/saws' - }).id('gtceu:shaped/plank_to_wooden_shape') - - // Деревянная шестерня - event.shaped('gtceu:small_wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#forge:rods/wooden', - C: 'tfc:glue' - }).id('gtceu:shaped/small_gear_wood') - - event.shaped('gtceu:wood_gear', [ - 'AB ', - 'BCB', - ' B ' - ], { - A: '#forge:tools/saws', - B: '#minecraft:planks', - C: 'tfc:glue' - }).id('gtceu:shaped/gear_wood') - - // Compressed Coke Clay - event.shaped('gtceu:compressed_coke_clay', [ - 'AAA', - 'BCB', - 'BBB' - ], { - A: 'minecraft:clay_ball', - B: '#minecraft:sand', - C: 'gtceu:brick_wooden_form' - }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') - - // Coke Oven Brick - event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) - .resultItem('gtceu:coke_oven_brick') - .id('tfg:heating/coke_oven_bricks') - - event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') - .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') - .itemOutputs('gtceu:coke_oven_brick') - .duration(7.5 * 20) - .EUt(GTValues.VA[GTValues.ULV]) - - // Multi-Smelter - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace') - - event.shaped('gtceu:multi_smelter', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/hv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:copper_single_cable' - }).id('gtceu:shaped/multi_furnace2') - - // Electric Blast Furnace - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:hp_steam_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace') - - event.shaped('gtceu:electric_blast_furnace', [ - 'AAA', - 'BCB', - 'DBD' - ], { - A: 'gtceu:lv_electric_furnace', - B: '#gtceu:circuits/lv', - C: 'gtceu:heatproof_machine_casing', - D: 'gtceu:tin_single_cable' - }).id('gtceu:shaped/electric_blast_furnace2') - - // Клей из ТФК клея / Glue from resin - event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') - .itemInputs('tfc:glue') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(20 * 10) - .EUt(5) - - event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') - .itemInputs('minecraft:bone_meal') - .inputFluids(Fluid.of('tfc:limewater', 500)) - .outputFluids(Fluid.of('gtceu:glue', 50)) - .duration(100) - .EUt(5) - - // Исправление рецепта пыли серебра стерлинга - event.remove({ id: 'gtceu:mixer/sterling_silver' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', - 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') - - // Исправление рецепта пыли розовой бронзы - event.remove({ id: 'gtceu:mixer/rose_gold' }) - generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', - 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') - - //#region Рецепт ULV микросхемы - - event.remove({ id: 'gtceu:shaped/vacuum_tube' }) - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') - - event.recipes.createSequencedAssembly([ - 'gtceu:vacuum_tube', - ], 'gtceu:resin_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), - event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), - event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) - ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') - - //#endregion - - //#region Рецепт LV микросхемы - - event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:basic_electronic_circuit', - ], 'gtceu:resin_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), - event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), - event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') - - event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) - - event.recipes.createSequencedAssembly([ - 'gtceu:good_electronic_circuit', - ], 'gtceu:phenolic_printed_circuit_board', [ - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), - event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), - ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') - - //#endregion - //#region Quantum mainframe stack fix. // // Quantum Mainframes need 48x annealed copper wire but @@ -733,227 +114,6 @@ const registerGTCEURecipes = (event) => { // #endregion - // #region Add all glass colors to macerator/hammer - removeMaceratorRecipe(event, 'macerate_glass'); - event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") - .itemInputs( - "#forge:glass" - ) - .itemOutputs("gtceu:glass_dust") - .duration(20) - .EUt(2); - - removeMaceratorRecipe(event, '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 - - // #region Rich coal processing - - event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") - .itemInputs('2x gtceu:poor_raw_coal') - .itemOutputs('1x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 500)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 1000)) - .duration(900) - - event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") - .itemInputs('gtceu:rich_raw_coal') - .itemOutputs('4x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(900) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") - .itemInputs('3x gtceu:rich_raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") - .itemInputs('4x gtceu:rich_raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") - .itemInputs('gtceu:raw_coal') - .itemOutputs('2x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 2000)) - .duration(1710) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") - .itemInputs('6x gtceu:raw_coal') - .chancedOutput('gtceu:dark_ash_dust', 5000, 0) - .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) - .duration(288) - .EUt(96) - .circuit(8) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(576) - .EUt(64) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:steam')) - .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) - .duration(288) - .EUt(96) - .circuit(22) - - event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") - .itemInputs('8x gtceu:raw_coal') - .itemOutputs('16x gtceu:coke_gem') - .inputFluids(Fluid.of('gtceu:nitrogen')) - .outputFluids(Fluid.of('gtceu:creosote', 8000)) - .duration(288) - .EUt(96) - .circuit(2) - - // #endregion - - // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - - const SIGN_METALS = [ - GTMaterials.Copper, - GTMaterials.Bronze, - GTMaterials.BlackBronze, - GTMaterials.BismuthBronze, - GTMaterials.WroughtIron, - GTMaterials.Steel, - GTMaterials.BlackSteel, - GTMaterials.RedSteel, - GTMaterials.BlueSteel - ]; - - SIGN_METALS.forEach(metal => { - // Arc furnace - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - global.AFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:tiny_ash_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) - .inputFluids(Fluid.of('gtceu:oxygen', 12)) - .duration(12) - .EUt(30) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - }) - - // Macerator - global.TFC_HARDWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.TFC_SOFTWOOD_TYPES.forEach(wood => { - removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_HARDWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:hardwood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - - global.AFC_SOFTWOOD_TYPES.forEach(wood => { - event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) - .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) - .itemOutputs('gtceu:wood_dust') - .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) - .duration(108) - .EUt(8) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - }) - }) - // #endregion - - //#region support recycling - event.recipes.gtceu.macerator(`hardwood_support_to_dust`) - .itemInputs('#tfg:hardwood_supports') - .itemOutputs('gtceu:hardwood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - - event.recipes.gtceu.macerator(`softwood_support_to_dust`) - .itemInputs('#tfg:softwood_supports') - .itemOutputs('gtceu:wood_dust') - .duration(150) - .EUt(2) - .category(GTRecipeCategories.MACERATOR_RECYCLING); - //#endregion - //#region Voiding covers event.replaceInput({ id: 'gtceu:shaped/cover_fluid_voiding' }, @@ -970,102 +130,6 @@ const registerGTCEURecipes = (event) => { //#endregion - // #region Treated Wood - - event.shaped('2x gtceu:treated_wood_door', [ - 'AA ', - 'AA ', - 'AA ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_door') - - event.shaped('3x gtceu:treated_wood_trapdoor', [ - 'AAA', - 'AAA', - ' ' - ], { - A: 'gtceu:treated_wood_plate' - }).id('tfg:shaped/treated_trapdoor') - - // #endregion - - // #region Rubber Processing Line - event.recipes.firmalife.vat() - .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) - .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(300) - .id('tfg:vat/vulcanized_latex') - - event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) - .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) - .id('tfg:pot/vulcanized_latex') - - event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') - .duration(100) - .EUt(20) - .itemInputs('tfc:powder/sulfur') - .inputFluids(Fluid.of('tfg:latex', 1000)) - .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - - event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') - .duration(100) - .EUt(20) - .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) - .itemOutputs('4x gtceu:raw_rubber_dust') - - // #endregion - - // #region Primitive protection - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('tfg:prepared_leather_gloves') - .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) - .id('tfg:sealed_barrel/prepared_leather_gloves') - - event.recipes.firmalife.vat() - .outputItem('tfg:latex_soaked_gloves') - .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(200) - .id('tfg:vat/latex_soaked_gloves') - - event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') - .id('tfg:oven/rubber_gloves') - - event.remove({ id: 'gtceu:shaped/rubber_gloves' }) - - event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') - .itemInputs('2x #forge:plates/rubber') - .notConsumable('create:brass_hand') - .itemOutputs('gtceu:rubber_gloves') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.INGOT_MOLDING) - - - event.recipes.tfc.damage_inputs_shaped_crafting( - event.shaped('gtceu:face_mask', [ - 'ACA', - 'ABA', - ' D ' - ], { - A: '#forge:string', - B: '#forge:cloth', - C: 'minecraft:paper', - D: '#tfc:sewing_needles' - }) - ).id('gtceu:shaped/face_mask') - - event.recipes.gtceu.assembler('assemble_face_mask') - .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') - .itemOutputs('gtceu:face_mask') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - .circuit(7) - - // #endregion event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:glass_lens', 'tfc:lens') event.replaceInput({ id: 'gtceu:shaped/nightvision_goggles' }, 'gtceu:lv_sodium_battery', '#gtceu:batteries/lv') @@ -1078,99 +142,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:shaped/blacklight' }, 'gtceu:tungsten_carbide_screw', '#tfg:components/uv_leds') - event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') - .inputFluids(Fluid.of('gtceu:glue', 50)) - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:glue') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') - .itemInputs('tfg:conifer_rosin') - .outputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('2x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 7500, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') - .itemInputs('gtceu:sticky_resin') - .outputFluids(Fluid.of('gtceu:glue', 100)) - .itemOutputs('3x #forge:dusts/carbon') - .chancedOutput('gtceu:plant_ball', 5000, 0) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) - .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') - .circuit(1) - .outputFluids(Fluid.of('tfg:latex', 1000)) - .duration(200) - .EUt(20) - - event.recipes.createSequencedAssembly([ - 'gtceu:ulv_voltage_coil', - ], 'gtceu:magnetic_iron_rod', [ - event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) - ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') - - //#endregion - - //#region Steam Bloomery - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') - .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') - .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - forEachMaterial(material => { - - const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) - if (tfcProperty === null) - return; - - const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() - if (outputMaterial === GTMaterials.Iron) { - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') - .itemOutputs('tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - - event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') - .itemOutputs('2x tfc:raw_iron_bloom') - .duration(2400) - .EUt(2) - } - }) - - //#endregion - - //#region Stick Packing - - event.recipes.gtceu.packer('tfg:stick_bunch') - .itemInputs('9x #forge:rods/wooden') - .circuit(5) - .itemOutputs('tfc:stick_bunch') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.packer('tfg:stick_bundle') - .itemInputs('18x #forge:rods/wooden') - .circuit(8) - .itemOutputs('tfc:stick_bundle') - .duration(50) - .EUt(GTValues.VA[GTValues.ULV]) - - //#endregion // Fix Snow in Compressor @@ -1181,31 +152,7 @@ const registerGTCEURecipes = (event) => { .duration(20 * 10) .EUt(2) - //#region Changing tiers of decomposition recipes - - event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') - .itemInputs('13x #forge:dusts/clay') - .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') - .outputFluids(Fluid.of('minecraft:water', 6000)) - .duration(GTMaterials.Clay.getMass() * 13) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') - .itemInputs('gtceu:stone_dust') - .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) - .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) - .chancedOutput('#forge:small_dusts/marble', 2222, 0) - .chancedOutput('#forge:small_dusts/biotite', 1111, 0) - .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) - .chancedOutput('#forge:small_dusts/sodalite', 550, 55) - .duration(12 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - - //#endregion - - //#region Tape - + // Tape event.shaped('gtceu:basic_tape', [ ' A ', 'ABA', @@ -1221,20 +168,8 @@ const registerGTCEURecipes = (event) => { .duration(100) .EUt(GTValues.VA[GTValues.ULV]) - //#endregion - //#region glowstone - event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') - .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') - .outputFluids(Fluid.of('gtceu:glowstone', 288)) - .duration(20 * 60 / 1.3) - .EUt(GTValues.VA[GTValues.LV]) - .blastFurnaceTemp(1064) - .circuit(9) - //#endregion - - - //#region GT Facades + // GT Facades event.remove({ id: 'gtceu:crafting/facade_cover' }) event.shapeless(Item.of('gtceu:facade_cover', 8, '{Facade: {Count:1b,id:"minecraft:stone"}}'), ['3x #forge:plates/iron', "#tfg:whitelisted/facades"]) @@ -1254,8 +189,8 @@ const registerGTCEURecipes = (event) => { result.nbt = facadeNBT return result; }).id('gtceu:facade_cover32'); - //#endregion + // Diamond gear event.recipes.gtceu.laser_engraver('tfg:diamond_gear') .itemInputs('4x #forge:plates/diamond') .itemOutputs('#forge:gears/diamond') @@ -1263,28 +198,6 @@ const registerGTCEURecipes = (event) => { .duration(200) .EUt(GTValues.VA[GTValues.MV]) - //#region Rose Quartz fabrication + decomposition - event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) - event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) - - generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') - generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') - - event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") - .itemInputs('#forge:dusts/rose_quartz') - .inputFluids(Fluid.of("gtceu:ice", 144)) - .itemOutputs("#forge:gems/rose_quartz") - .duration(2000) - .EUt(120) - - event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') - .itemInputs('9x gtceu:rose_quartz_dust') - .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') - .duration(7 * 20) - .EUt(60) - //#endregion - //#region Multiblock Tanks event.recipes.gtceu.assembler('tfg:assembler/wood_wall') @@ -1322,13 +235,6 @@ const registerGTCEURecipes = (event) => { //#endregion - event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') - .id('tfg:revert_wrought_iron_ingot') - - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') - //#region Circuit Fixes global.ADD_CIRCUIT.forEach(item => { @@ -1337,55 +243,6 @@ const registerGTCEURecipes = (event) => { //#endregion - //#region Chemical Reaction for Solar Panel - - event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') - .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') - .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) - .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') - .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) - .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) - .duration(20 * 5) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') - .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) - .itemInputs(Item.of('#forge:aerogels')) - .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) - .duration(20 * 15) - .EUt(GTValues.VH[GTValues.IV]) - - //#endregion - - event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') - - event.shaped('gtceu:treated_wood_pressure_plate', [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: 'gtceu:treated_wood_slab', - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id('gtceu:shaped/treated_pressure_plate') - - event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') - .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') - .itemOutputs('gtceu:treated_wood_pressure_plate') - .circuit(3) - .duration(50) - .EUt(2) - // Matches event.shapeless('4x gtceu:matches', ['#forge:dusts/phosphorus', 'tfc:glue', '4x #forge:bolts/wood']) @@ -1397,21 +254,6 @@ const registerGTCEURecipes = (event) => { event.shapeless(Item.of('gtceu:matchbox', '{usesLeft:8}'), ['minecraft:paper', '8x gtceu:matches']) .id('tfg:shapeless/matchbox') - - event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) - event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) - - event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') - .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) - .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') - .itemOutputs('gtceu:nano_cpu_wafer') - .duration(20*60) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) - event.recipes.gtceu.implosion_compressor('tfg:dense_lead_plate') .itemInputs('16x #forge:ingots/lead', '16x #forge:ingots/lead', '6x #forge:ingots/lead') .itemInputs('gtceu:industrial_tnt') @@ -1446,75 +288,7 @@ const registerGTCEURecipes = (event) => { F: 'gtceu:stainless_steel_huge_fluid_pipe' }).id('tfg:shaped/large_centrifuge') - event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') - .itemInputs('8x tfc:powder/wood_ash') - .inputFluids(Fluid.of('gtceu:air', 100)) - .outputFluids('gtceu:wood_gas 100') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) - event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 40) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:tin', 576)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') - .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .itemOutputs('gtceu:micro_processor_mainframe') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.HV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Buttons - removeCutterRecipe(event, 'blackstone_button') - removeCutterRecipe(event, 'blackstone_button_water') - removeCutterRecipe(event, 'blackstone_button_distilled_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') - removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') - - event.recipes.gtceu.cutter('tfg:blackstone_button') - .itemInputs('minecraft:polished_blackstone_pressure_plate') - .itemOutputs('6x minecraft:polished_blackstone_button') - .EUt(7) - .duration(100) - - - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') - - event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') - - //#region Replace Recipe - + // ME Pattern Buffer event.remove({ id: 'gtceu:assembly_line/me_pattern_buffer_proxy' }) event.recipes.gtceu.assembly_line('tfg:me_pattern_buffer_proxy') .itemInputs( @@ -1537,88 +311,6 @@ const registerGTCEURecipes = (event) => { event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:pattern_provider', '3x expatternprovider:ex_pattern_provider') event.replaceInput({ id: 'gtceu:assembly_line/me_pattern_buffer' }, 'ae2:interface', '3x expatternprovider:oversize_interface') - event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') - - // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler - removeMaceratorRecipe(event, 'macerate_palladium_substation') - event.recipes.gtceu.shaped('gtceu:palladium_substation', [ - 'AAA', - ' B ', - 'AAA' - ], { - A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), - B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - - event.recipes.gtceu.assembler('casing_palladium_substation') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) - ) - .itemOutputs('gtceu:palladium_substation') - .duration(20 * 2.5) - .circuit(6) - .EUt(GTValues.VA[GTValues.LV]) - - - removeMaceratorRecipe(event, 'macerate_power_substation') - event.recipes.gtceu.shaped('gtceu:power_substation', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: 'gtceu:lapotron_crystal', - B: 'gtceu:mpic_chip', - C: '#gtceu:circuits/ev', - D: 'gtceu:palladium_substation' - }).addMaterialInfo().id('gtceu:shaped/power_substation') - - event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') - event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') - event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') - - event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate , 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), - C: '#gtceu:circuits/hv', - D: 'tfg:cryo_fluix_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') - - event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), - C: '#gtceu:circuits/ev', - D: 'gtceu:quantum_eye' - }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') - - event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide , 1), - B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), - C: '#gtceu:circuits/iv', - D: 'minecraft:nether_star' - }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') - - event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) - event.recipes.gtceu.chemical_bath('tfg:quantum_eye') - .itemInputs('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('gtceu:radon', 250)) - .itemOutputs('gtceu:quantum_eye') - .duration(20 * 24) - .EUt(GTValues.VA[GTValues.HV]) // Modify Rotor Holder to require an Assembler @@ -1665,164 +357,6 @@ const registerGTCEURecipes = (event) => { .duration(20 * 6) .EUt(GTValues.VA[GTValues.UV]) - //# Circuit Board - - event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') - - //#region New Tungsten Line - - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) - event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) - event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) - - // Transform Tungstate and Scheelite - - event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:scheelite_dust', 6)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:calcite_dust', 5)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') - .itemInputs(Item.of('gtceu:tungstate_dust', 7)) - .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) - .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:lithium_dust', 2)) - .itemOutputs(Item.of('gtceu:carbon_dust', 1)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .duration(20*12) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) - .itemOutputs(Item.of('gtceu:salt_dust', 4)) - .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .duration(20*24) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') - .inputFluids(Fluid.of('gtceu:ammonia', 10000)) - .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) - .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .duration(20*16) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') - .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) - .itemOutputs(Item.of('tfg:apt_gem', 1)) - .outputFluids(Fluid.of('gtceu:hydrogen', 500)) - .duration(20*48) - .EUt(GTValues.VHA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*36) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(1) - - event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') - .itemInputs(Item.of('tfg:apt_gem', 1)) - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .outputFluids(Fluid.of('gtceu:ammonia', 10000)) - .duration(20*18) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) - - event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') - .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) - .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) - .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) - .duration(20*2.8) - .EUt(GTValues.VA[GTValues.EV]) - - //#endregion - - - // New Alloys - - event.recipes.gtceu.mixer('tfg:ostrum_iodide') - .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') - .itemOutputs('3x #forge:dusts/ostrum_iodide') - .duration(20 * 12) - .circuit(1) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') - .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') - .inputFluids(Fluid.of('gtceu:oxygen', 3000)) - .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.EV]) - - // Handcrafted artisanal concrete - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) - .outputFluid(Fluid.of('gtceu:concrete', 500)) - - event.recipes.firmalife.mixing_bowl() - .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('gtceu:concrete', 1000)) - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 144)) - .inputItem('gtceu:wood_frame') - .outputItem('gtceu:light_concrete') - .id('tfg:barrel/light_concrete') - - event.recipes.tfc.barrel_sealed(1000) - .inputFluid(Fluid.of('gtceu:concrete', 96)) - .inputItem('tfg:rebar_support') - .outputItem('tfg:reinforced_light_concrete_support') - .id('tfg:barrel/reinforced_light_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('gtceu:light_concrete') - .inputFluid(Fluid.of('tfc:black_dye', 18)) - .outputItem('gtceu:dark_concrete') - .id('tfg:barrel/dark_concrete') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:dark_concrete_support') - .id('tfg:barrel/dark_concrete_support') - - event.recipes.tfc.barrel_sealed(500) - .inputItem('tfg:reinforced_light_concrete_support') - .inputFluid(Fluid.of('tfc:black_dye', 10)) - .outputItem('tfg:reinforced_dark_concrete_support') - .id('tfg:barrel/reinforced_dark_concrete_support') - - event.recipes.gtceu.alloy_smelter('glass_bottle') - .itemInputs('#forge:dusts/glass') - .itemOutputs('tfc:silica_glass_bottle') - .notConsumable('gtceu:bottle_casting_mold') - .EUt(2) - .duration(20 * 5) - .category(GTRecipeCategories.INGOT_MOLDING) event.replaceInput( {output: 'gtceu:nano_saber'}, 'gtceu:ruridit_plate', '#forge:plates/ostrum_iodide' ) diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 39b786f03..ebe072752 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -828,427 +828,37 @@ function registerGTCEuMachineRecipes(event) { B: 'gtceu:steam_machine_casing' }).addMaterialInfo().id('gtceu:shaped/steam_output_bus') - //#region Chipboard Composite - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') - .itemInputs('2x #tfg:wood_dusts', - '1x #forge:wax') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') - .itemInputs('4x #tfg:wood_dusts', - '1x gtceu:sticky_resin') - .itemOutputs('4x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') - .itemInputs('2x #tfg:wood_dusts', - '1x tfc:glue') - .itemOutputs('2x tfg:chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.LV]) - - - event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') - .itemInputs('1x #tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs('1x tfg:chipboard_composite') - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.compressor('gtceu:wood_mdf') - .itemInputs('1x tfg:chipboard_composite') - .itemOutputs('gtceu:wood_plate') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') - .itemInputs('1x tfg:chipboard_composite') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:treated_chipboard_composite') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') - .itemInputs('1x gtceu:wood_plate') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') - .itemInputs('#tfg:wood_dusts') - .inputFluids(Fluid.of('gtceu:creosote', 50)) - .itemOutputs('gtceu:treated_wood_dust') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') - .itemInputs('tfg:treated_chipboard_composite') - .itemOutputs('tfg:high_density_treated_fiberboard') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') - .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') - .itemOutputs('gtceu:resin_circuit_board') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.ULV]) - - //#region New Casings - - event.recipes.gtceu.assembler('basic_solar_casing') - .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') - .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('advanced_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') - .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('elite_solar_casing') - .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') - .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') - .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('iron_desh_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') - .itemOutputs('2x tfg:casings/machine_casing_iron_desh') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('steel_machine_casing') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) - .itemOutputs('gtceu:steel_machine_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(16) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') - .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') - .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) - .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') - .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') - .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) - .itemOutputs('tfg:casings/machine_casing_mars') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.assembler('gtceu:atomic_casing') - .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') - .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) - .itemOutputs('2x gtceu:atomic_casing') - .circuit(6) - .duration(2.5 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - //#endregion - - //#region Large Solar Panel - - event.shaped( - 'gtceu:large_solar_panel', - ['WSW', 'TZT', 'WUW'], - { - S: 'tfg:photo_cell_t1', - Z: 'ad_astra:solar_panel', - W: '#gtceu:circuits/ev', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel') - - event.shaped( - 'gtceu:large_solar_panel_tier2', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_etrium_cell', - Z: 'gtceu:large_solar_panel', - W: '#gtceu:circuits/iv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier2') - - event.shaped( - 'gtceu:large_solar_panel_tier3', - ['WSW', 'TZT', 'WUW'], - { - S: 'ad_astra:photovoltaic_vesnium_cell', - Z: 'gtceu:large_solar_panel_tier2', - W: '#gtceu:circuits/luv', - U: '#forge:gears/rocket_alloy_t1', - T: '#forge:gears/desh' - } - ).id('gtceu:shaped/large_solar_panel_tier3') - - event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') - .itemInputs('8x tfg:photo_cell_t1', - '6x #forge:dusts/vanadium_gallium', - '#forge:insulation_t2/sheet') - .inputFluids(Fluid.of('gtceu:helium_3', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') - .itemInputs('8x ad_astra:photovoltaic_etrium_cell', - '6x gtceu:energium_dust', - '#forge:insulation_t3/sheet') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) - .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.IV]) - - // LSP Generating recipes - - // Solar T1 - - event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') - .chancedInput('tfg:photo_cell_t1', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-((GTValues.V[GTValues.HV])), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel('solar_panel_t1') - .notConsumable('tfg:photo_cell_t1') - .perTick(true) - .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(2) - - // Solar T2 - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') - .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') - .notConsumable('ad_astra:photovoltaic_etrium_cell') - .perTick(true) - .inputFluids('tfg:compressed_trimix_3 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.EV]), 2) - .circuit(3) - - // Solar T3 - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') - .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(1) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.LuV]), 2) - .circuit(2) - - event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') - .notConsumable('ad_astra:photovoltaic_vesnium_cell') - .perTick(true) - .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) - .inputFluids('tfg:cryogenized_fluix 4') - .outputFluids('tfg:fluix 1') - .perTick(false) - .duration(20 * 20) - .daytime(false) - .dimension('ad_astra:moon') - .EUt(-(GTValues.V[GTValues.IV]), 2) - .circuit(2) - - //#endregion - - //#region Mars Ore Line - - // Multiblock - - event.shaped('tfg:ostrum_linear_accelerator', [ - 'USU', - 'WZW', - 'PTP' + // the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler + removeMaceratorRecipe(event, 'macerate_palladium_substation') + event.recipes.gtceu.shaped('gtceu:palladium_substation', [ + 'AAA', + ' B ', + 'AAA' ], { - S: 'tfg:casings/machine_casing_vacuum_engine_intake', - Z: 'gtceu:iv_machine_hull', - W: '#gtceu:circuits/iv', - U: '#forge:double_plates/stellite_100', - T: '#forge:single_cables/platinum', - P: 'gtceu:iv_electric_pump' - } - ).id('tfg:shaped/ostrum_linear_accelerator') + A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1), + B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + }).addMaterialInfo().id('tfg:shaped/casing_palladium_substation') - event.recipes.gtceu.assembler('tfg:ostrum_harvester') + event.recipes.gtceu.assembler('casing_palladium_substation') .itemInputs( - '1x gtceu:ev_machine_hull', - '4x #gtceu:circuits/ev', - '4x gtceu:ev_electric_motor', - '4x #forge:rotors/black_steel', - '4x gtceu:ev_electric_pump', - '4x #forge:gears/desh') - .itemOutputs('gtceu:ostrum_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - .circuit(2) + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1) + ) + .itemOutputs('gtceu:palladium_substation') + .duration(20 * 2.5) + .circuit(6) + .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.assembler('tfg:moon_dust_harvester') - .itemInputs( - '1x gtceu:hv_machine_hull', - '4x #gtceu:circuits/hv', - '4x gtceu:hv_electric_motor', - '4x #forge:rotors/titanium', - '4x gtceu:hv_electric_pump', - '4x #forge:gears/rocket_alloy_t1') - .itemOutputs('gtceu:moon_dust_harvester') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - .circuit(2) - - // Vacuum Intake - - event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ - 'USU', - 'WZW', - 'UTU' + + removeMaceratorRecipe(event, 'macerate_power_substation') + event.recipes.gtceu.shaped('gtceu:power_substation', [ + 'ABA', + 'CDC', + 'ABA' ], { - S: '#forge:tools/hammers', - T: '#forge:tools/wrenches', - W: '#forge:rotors/ultimet', - U: 'gtceu:ultimet_normal_item_pipe', - Z: 'gtceu:inert_machine_casing' - }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') - - event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') - .itemInputs( - '2x #forge:rotors/ultimet', - '4x gtceu:ultimet_normal_item_pipe', - '1x gtceu:inert_machine_casing') - .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') - .duration(50) - .EUt(GTValues.VH[GTValues.LV]) - .circuit(2) - - // Stainless Evaporation Tower - - event.recipes.gtceu.shaped('tfg:evaporation_tower', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: '#gtceu:circuits/iv', - W: 'gtceu:ev_electric_pump', - U: '#forge:double_wires/nichrome', - Z: 'gtceu:ev_machine_hull' - }).addMaterialInfo().id('tfg:shaped/evaporation_tower') - - //#endregion - - //#region Nuclear Controler - - event.shaped('deafission:fission_reactor_mk1', [ - 'TUT', - 'WZW', - 'TUT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:hv_field_generator', - Z: 'gtceu:ev_machine_hull' - } - ).id('tfg:shaped/fission_reactor_mk1') - - event.shaped('gtceu:nuclear_fuel_factory', [ - 'TUT', - 'WZW', - 'TBT' - ], { - T: 'gtceu:atomic_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_emitter', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_robot_arm' - } - ).id('tfg:shaped/nuclear_fuel_factory') - - event.shaped('gtceu:heat_exchanger', [ - 'TUT', - 'WZW', - 'GBG' - ], { - T: 'gtceu:high_temperature_smelting_casing', - W: '#gtceu:circuits/ev', - U: 'gtceu:ev_sensor', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ev_fluid_regulator', - G: '#forge:gears/ostrum_iodide' - } - ).id('tfg:shaped/heat_exchanger') - - event.shaped('tfg:nuclear_turbine', [ - 'CTC', - 'TZT', - 'BTB' - ], { - T: '#forge:gears/magnalium', - Z: 'gtceu:ev_machine_hull', - B: 'gtceu:ultimet_large_item_pipe', - C: '#gtceu:circuits/ev' - } - ).id('tfg:shaped/nuclear_turbine') - + A: 'gtceu:lapotron_crystal', + B: 'gtceu:mpic_chip', + C: '#gtceu:circuits/ev', + D: 'gtceu:palladium_substation' + }).addMaterialInfo().id('gtceu:shaped/power_substation') } diff --git a/kubejs/server_scripts/gregtech/recipes.recycling.js b/kubejs/server_scripts/gregtech/recipes.recycling.js index 2e398078b..925f5f08f 100644 --- a/kubejs/server_scripts/gregtech/recipes.recycling.js +++ b/kubejs/server_scripts/gregtech/recipes.recycling.js @@ -140,25 +140,103 @@ function registerGTCEURecyclingRecipes(event) { .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) .EUt(GTValues.VA[GTValues.LV]) + // #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace - // Clean Foil pack - event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .EUt(GTValues.VA[GTValues.ULV]) + const SIGN_METALS = [ + GTMaterials.Copper, + GTMaterials.Bronze, + GTMaterials.BlackBronze, + GTMaterials.BismuthBronze, + GTMaterials.WroughtIron, + GTMaterials.Steel, + GTMaterials.BlackSteel, + GTMaterials.RedSteel, + GTMaterials.BlueSteel + ]; - event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') - .itemInputs('tfg:clean_foil_pack') - .itemOutputs( - ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) - ) - .duration(GTMaterials.Aluminium.getMass() * 1) - .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) - .EUt(GTValues.VA[GTValues.LV]) + SIGN_METALS.forEach(metal => { + // Arc furnace + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + global.AFC_WOOD_TYPES.forEach(wood => { + event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:tiny_ash_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0) + .inputFluids(Fluid.of('gtceu:oxygen', 12)) + .duration(12) + .EUt(30) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + }) + + // Macerator + global.TFC_HARDWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.TFC_SOFTWOOD_TYPES.forEach(wood => { + removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_HARDWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:hardwood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + + global.AFC_SOFTWOOD_TYPES.forEach(wood => { + event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`) + .itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`) + .itemOutputs('gtceu:wood_dust') + .chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0) + .duration(108) + .EUt(8) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + }) + }) + // #endregion + + //#region support recycling + event.recipes.gtceu.macerator(`hardwood_support_to_dust`) + .itemInputs('#tfg:hardwood_supports') + .itemOutputs('gtceu:hardwood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + + event.recipes.gtceu.macerator(`softwood_support_to_dust`) + .itemInputs('#tfg:softwood_supports') + .itemOutputs('gtceu:wood_dust') + .duration(150) + .EUt(2) + .category(GTRecipeCategories.MACERATOR_RECYCLING); + //#endregion } \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/recipes.removes.js b/kubejs/server_scripts/gregtech/recipes.removes.js index dbac80643..6377deb5c 100644 --- a/kubejs/server_scripts/gregtech/recipes.removes.js +++ b/kubejs/server_scripts/gregtech/recipes.removes.js @@ -817,6 +817,13 @@ function removeGTCEURecipes(event) { event.remove({ id: 'gtceu:ore_washer/wash_plutonium_pure_dust_to_dust' }) event.remove({ id: 'gtceu:ore_washer/wash_plutonium_dirty_dust_to_dust' }) event.remove({ id: 'gtceu:forge_hammer/hammer_plutonium_refined_ore_to_dust' }) + + + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }); + + + event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' }) + event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' }) } function removeMaceratorRecipe(event, id) { diff --git a/kubejs/server_scripts/gregtech/tags.js b/kubejs/server_scripts/gregtech/tags.js index c121d87d8..de4bdf149 100644 --- a/kubejs/server_scripts/gregtech/tags.js +++ b/kubejs/server_scripts/gregtech/tags.js @@ -25,10 +25,6 @@ function registerGTCEUItemTags(event) { event.remove("minecraft:planks", "gtceu:wood_plate"); - event.add("tfg:sugars", "minecraft:sugar"); - event.add("tfg:sugars", "afc:birch_sugar"); - event.add("tfg:sugars", "afc:maple_sugar"); - global.MINECRAFT_DYE_NAMES.forEach((dyeName) => { event.remove("ae2:p2p_attunements/fluid_p2p_tunnel", `gtceu:${dyeName}_dye_bucket`); }); diff --git a/kubejs/server_scripts/immersive_aircraft/recipes.js b/kubejs/server_scripts/immersive_aircraft/recipes.js index d31b3cb42..e66a4cf66 100644 --- a/kubejs/server_scripts/immersive_aircraft/recipes.js +++ b/kubejs/server_scripts/immersive_aircraft/recipes.js @@ -872,4 +872,52 @@ function registerImmersiveAircraftRecipes(event) { }).id('tfg:immersive_aircraft/mechanical_crafter/bamboo_hopper') //#endregion + + // Custom stuff + + //Scaffolding Frame + event.shaped('tfg:scaffolding_frame', + [ + ' A ', + 'ABA', + ' A ' + ], + { + A: '#forge:rods/wood', + B: '#forge:cloth' + }).id('tfg:shaped/scaffolding_frame'); + + //Airship Hull + event.shaped('tfg:airship_hull', [ + 'A B', + 'C C', + 'CCC' + ], { + A: '#forge:tools/screwdrivers', + B: '#forge:tools/hammers', + C: 'immersive_aircraft:hull' + }).id('tfg:shaped/airship_hull'); + event.recipes.gtceu.assembler('tfg:assembler/airship_hull') + .itemInputs('5x immersive_aircraft:hull') + .itemOutputs('tfg:airship_hull') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]); + + //Airship Balloon + event.shaped('tfg:airship_balloon', [ + 'ABA', + 'BAB', + 'ABA' + ], { + A: '#forge:string', + B: 'immersive_aircraft:sail' + }).id('tfg:shaped/airship_balloon') + + event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') + .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') + .itemOutputs('tfg:airship_balloon') + .duration(40) + .circuit(1) + .EUt(GTValues.VA[GTValues.ULV]) } \ No newline at end of file diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index ea9c4e1bc..78248cb3b 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -180,7 +180,7 @@ TFCEvents.data(event => { */ LootJS.modifiers((event) => { registerAdAstraLoots(event) - registerGTCEULoots(event) + registerTFGOreLoots(event) registerLootrLoots(event) registerPrimitiveCreaturesLoots(event) registerSpeciesLoots(event) diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index d137c331b..acfe66bc3 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -10,26 +10,6 @@ const registerMinecraftRecipes = (event) => { removeMinecraftRecipes(event) registerMinecraftDyeRecipes(event) - //#region Выход: Земля, dirt - - event.recipes.gtceu.macerator('dirt_from_bio_chaff') - .itemInputs('gtceu:bio_chaff') - .itemOutputs('tfc:dirt/loam') - .duration(300) - .EUt(4) - - //#endregion - - //#region Выход: Стекло, glass - - event.recipes.gtceu.arc_furnace('glass_from_sand') - .itemInputs('#forge:sand') - .itemOutputs('2x minecraft:glass') - .duration(20) - .EUt(30) - - //#endregion - //#region Добавление, copper for (let i = 0; i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length; i++) { @@ -142,48 +122,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region Выход: Бумага, paper - - event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') - .itemInputs('tfc:papyrus') - .inputFluids(Fluid.of('gtceu:distilled_water', 100)) - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.chemical_bath('paper_from_papyrus') - .itemInputs('tfc:papyrus') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('4x tfc:soaked_papyrus_strip') - .duration(100) - .EUt(7) - - event.recipes.gtceu.assembler('papyrus_strips') - .itemInputs('4x tfc:soaked_papyrus_strip') - .itemOutputs('minecraft:paper') - .circuit(1) - .duration(100) - .EUt(7) - - //#endregion - - //#region Выход: Сахар, sugar - - event.recipes.gtceu.centrifuge('sugar_from_sugarcane') - .itemInputs('tfc:food/sugarcane') - .inputFluids("#tfg:clean_water 600") - .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') - .duration(800) - .EUt(6) - - event.recipes.gtceu.centrifuge('sugar_from_honey') - .itemInputs('firmalife:raw_honey') - .itemOutputs('minecraft:sugar') - .duration(400) - .EUt(6) - - //#endregion - //#region Выход: Блок сена, hay block event.recipes.gtceu.packer('hay_block') @@ -823,7 +761,6 @@ const registerMinecraftRecipes = (event) => { //#region Выход: Элитра, elytra - // Ну и херь я придумал, here's some bullshit i came up with event.recipes.gtceu.assembler('tfg:minecraft/elytra') .itemInputs('16x tfg:polycaprolactam_fabric', '16x #forge:foils/aluminium', '8x tfg:phantom_silk', '4x #forge:rings/aluminium', '2x #forge:rods/long/vanadium_steel', '2x #forge:small_springs/aluminium', '1x #forge:small_gears/aluminium') .circuit(4) @@ -861,16 +798,6 @@ const registerMinecraftRecipes = (event) => { //#endregion - //#region Glowstone - - event.recipes.gtceu.mixer('gtceu:lv_glowstone') - .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') - .itemOutputs('2x minecraft:glowstone_dust') - .circuit(8) - .duration(1200) - .EUt(30) - - //#endregion //#region Netherite leggings (for the lavaproof diving set) @@ -931,14 +858,6 @@ const registerMinecraftRecipes = (event) => { generateCutterRecipe(event, '#forge:double_plates/wrought_iron', 'minecraft:iron_door', 400, GTValues.VA[GTValues.LV], 'iron_door') - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#forge:rods/wooden' - }).id('gtceu:shaped/ladder') - // #endregion // #region Calcite @@ -1018,19 +937,6 @@ const registerMinecraftRecipes = (event) => { event.smelting('tfc:glue', 'minecraft:magma_cream') .id('tfg:smelting/magma_cream_to_glue') - //#region Clay - event.shaped('minecraft:clay', [ - 'AA', - 'AA' - ], { - A: 'minecraft:clay_ball' - }) - .id('tfg:shaped/clay_balls_to_block') - - event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) - .id('tfg:shapeless/clay_block_to_balls') - - //#endregion //#region Mushrooms diff --git a/kubejs/server_scripts/species/recipes.js b/kubejs/server_scripts/species/recipes.js index 14b95dcdf..2c7fe4c09 100644 --- a/kubejs/server_scripts/species/recipes.js +++ b/kubejs/server_scripts/species/recipes.js @@ -66,30 +66,6 @@ function registerSpeciesRecipes(event) { B: 'firmaciv:rope_coil' }).id('tfg:shaped/harpoon') - generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, - '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, - '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) - - event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') - event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') - - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') - .itemInputs('species:cracked_wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') - .itemInputs('tfg:wraptor_egg') - .itemOutputs('4x tfg:wraptor_sugar') - .duration(200) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') - .itemInputs('tfg:sniffer_egg') - .outputFluids(Fluid.of('firmalife:cream', 1000)) - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.shaped('species:ricoshield', [ 'EBE', 'ACA', diff --git a/kubejs/server_scripts/tfc/data.js b/kubejs/server_scripts/tfc/data.js index d800003a3..481d834ce 100644 --- a/kubejs/server_scripts/tfc/data.js +++ b/kubejs/server_scripts/tfc/data.js @@ -7,8 +7,6 @@ const registerTFCDataForTFC = (event) => { registerTFCLampFuels(event) registerTFCFertilizers(event) registerTFCKnappingTypes(event) - registerTFCItemSize(event) - registerTFCFoodData(event) registerTFCArmourResistances(event) } @@ -77,27 +75,6 @@ const registerTFCKnappingTypes = (event) => { event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw') } - -const registerTFCItemSize = (event) => { - event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') - - event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') - event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') - - event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') - event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') - event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') -} - - -const registerTFCFoodData = (event) => { - - event.foodItem('firmalife:ice_shavings', food => { - food.water(5) - food.decayModifier(0) - }) -} - const registerTFCArmourResistances = (event) => { event.itemDamageResistance( 'create:copper_diving_helmet', diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index f38d1df41..f26ac71a1 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -10,17 +10,8 @@ const registerTFCRecipes = (event) => { removeTFCRecipes(event) registerTFCMaterialsRecipes(event) registerTFCMetalsRecipes(event) - registerTFCStoneRecipes(event) - registerTFCSandRecipes(event) - registerTFCDirtRecipes(event) - registerTFCWoodRecipes(event) - registerTFCKnappingRecipes(event) - registerTFCMachineRecipes(event) - registerTFCAlabasterRecipes(event) registerTFCDyeRecipes(event) - //#region Рецепты порошков - // Добавление рецептов global.TFC_QUERN_POWDER_RECIPE_COMPONENTS.forEach(element => { event.recipes.gtceu.macerator(`tfg:${element.name}`) @@ -33,26 +24,6 @@ const registerTFCRecipes = (event) => { .id(`tfg:quern/${element.name}`) }) - //#endregion - - //#region Рецепты обжарки форм - - global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { - event.smelting(element.output, element.input) - .id(`tfg:smelting/${element.name}`) - }) - - global.MINECRAFT_DYE_NAMES.forEach(dye => { - event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) - .id(`tfg:smelting/${dye}_glazed_vessel`) - - event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) - .id(`tfg:smelting/${dye}_large_vessel`) - }) - - //#endregion - - //#region Рецепты электрической теплицы // Дерево @@ -89,21 +60,12 @@ const registerTFCRecipes = (event) => { const itemId = element.id; const recipeId = `greenhouse_${itemId.replace(':', '_')}`; - generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, + generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`, recipeId, null, 8, itemId, GTValues.VH[GTValues.LV]); }); //#endregion - event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') - - event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') - - event.recipes.gtceu.cutter('tfg:saplings_to_sticks') - .itemInputs('#minecraft:saplings') - .itemOutputs('2x minecraft:stick') - .duration(20) - .EUt(7) // Доменная печь event.recipes.gtceu.shaped('tfc:blast_furnace', [ @@ -126,40 +88,64 @@ const registerTFCRecipes = (event) => { [TFC.ingredient.notRotten('tfc:pumpkin'), '#tfc:knives'], 'tfc:pumpkin') .id(`tfc:crafting/pumpkin_chunks_knife`) - // Lime + // Flux + Lime event.smelting('tfc:powder/lime', 'tfc:powder/flux') .id('tfg:smelting/lime') - // Kaolinite Clay - regular smelting recipes can't have multiple inputs - event.recipes.gtceu.alloy_smelter('tfg:kaolinite') - .itemInputs('tfc:kaolin_clay') - .circuit(1) - .chancedOutput('tfc:powder/kaolinite', 2000, 0) - .duration(100) - .EUt(16) + event.recipes.gtceu.macerator('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - // Fire Clay - event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') - .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') - .itemOutputs('2x tfc:fire_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.forge_hammer('flux') + .itemInputs('#tfc:fluxstone') + .itemOutputs('2x tfc:powder/flux') + .duration(30) + .EUt(2) - event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') - .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') - .itemOutputs('tfc:kaolin_clay') - .duration(600) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone') + .recipeTier(0) + .id('greate:pressing/flux') - // Выпаривание соли + // Salt Water event.recipes.tfc.pot([], Fluid.of('tfc:salt_water', 625), 300, 100) .itemOutput('gtceu:small_salt_dust') .id('tfg:tfc/pot/salt') - // Salt Water generateMixerRecipe(event, ['#forge:dusts/salt'], "#tfg:clean_water 1000", [], 2, Fluid.of('tfc:salt_water', 1000), 40, 7, 64, 'tfg:tfc/salt_water') + event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:salt_dust') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(51) + .EUt(30) + .circuit(1) + + event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust') + .outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500)) + .duration(720) + .EUt(30) + + // Add circuit to gregtech salt water mixer recipe + event.remove({ id: 'gtceu:mixer/salt_water' }) + generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) + .inputFluid(Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('tfc:salt_water', 1000)) + .id('tfg:barrel/water_to_salt_water') + + event.recipes.tfc.barrel_instant() + .inputItem("tfc:powder/salt") + .inputFluid(Fluid.of('minecraft:water', 250)) + .outputFluid(Fluid.of('tfc:salt_water', 250)) + .id('tfg:barrel/water_to_salt_water_tfc') // Seaweed and kelp event.recipes.tfc.heating('tfc:groundcover/seaweed', 200) @@ -176,20 +162,9 @@ const registerTFCRecipes = (event) => { event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_seaweed').id('tfg:smelting/dried_seaweed_to_soda') event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_kelp').id('tfg:smelting/dried_kelp_to_soda') - //#region Обрушения - - event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') - event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') - event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') - - //#endregion - //More accesible solar drier event.replaceInput({ id: 'firmalife:crafting/solar_drier' }, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod') - //Wood ash - event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') - .id('tfg:splashing/wash_torch') //Lye generateMixerRecipe(event, 'tfc:powder/wood_ash', "#tfg:clean_water 200", @@ -204,102 +179,37 @@ const registerTFCRecipes = (event) => { .EUt(2) // Brass Mechanism - event.recipes.shapeless('gtceu:small_brass_gear', [ 'tfc:brass_mechanisms' ]).id('tfg:replace_brass_mechanisms') - event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') + event.recipes.shapeless('gtceu:small_brass_gear', ['tfc:brass_mechanisms']).id('tfg:replace_brass_mechanisms') + event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear') - // Fertilizers - event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') - .itemInputs('1x gtceu:fertilizer') - .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') - .duration(340) - .EUt(GTValues.VA[GTValues.ULV]) + // Rennet + event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet') + .itemInputs('#tfg:ferments_to_rennet') + .itemOutputs('firmalife:rennet') + .duration(400) + .EUt(16) - event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') - .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) - .itemOutputs('1x gtceu:fertilizer') - .duration(160) - .EUt(GTValues.VA[GTValues.ULV]) + event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet') + .inputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .itemOutputs('firmalife:rennet') + .duration(2400) + .EUt(16) - event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') - .itemInputs('#forge:wax') - .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .itemOutputs('16x tfc:pure_nitrogen') + // Brine + event.recipes.gtceu.mixer('tfg:tfc/brine') + .inputFluids(Fluid.of('tfc:salt_water', 900)) + .inputFluids(Fluid.of('tfc:vinegar', 100)) + .outputFluids(Fluid.of('tfc:brine', 1000)) .duration(100) - .EUt(GTValues.VA[GTValues.LV]) + .EUt(16) - //Hide Sewing - const stages = [ - 'raw', - 'soaked', - 'scraped', - 'prepared', - 'sheepskin' - ]; - - stages.forEach(stage => { - //Combining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:medium_${stage}_hide`, [ - `2x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) - ) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`1x tfc:large_${stage}_hide`, [ - `3x tfc:small_${stage}_hide`, - '#tfc:sewing_needles', - '#forge:string', - 'tfc:glue' - ]).id(`tfg:tfc/small_to_large_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:medium_${stage}_hide`) - .itemInputs(`2x tfc:small_${stage}_hide`) - .duration(60) - .circuit(7) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) - .inputFluids(Fluid.of('gtceu:glue', 25)) - .itemOutputs(`1x tfc:large_${stage}_hide`) - .itemInputs(`3x tfc:small_${stage}_hide`) - .duration(60) - .circuit(9) - .EUt(GTValues.VA[GTValues.ULV]) - - //Cutting - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`2x tfc:small_${stage}_hide`, [ - `1x tfc:medium_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless(`3x tfc:small_${stage}_hide`, [ - `1x tfc:large_${stage}_hide`, - '#forge:shears' - ]).id(`tfg:tfc/large_to_small_${stage}_hide`) - ) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) - .itemOutputs(`2x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:medium_${stage}_hide`) - .duration(60) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) - .itemOutputs(`3x tfc:small_${stage}_hide`) - .itemInputs(`1x tfc:large_${stage}_hide`) - .duration(60) - .circuit(6) - .EUt(GTValues.VA[GTValues.ULV]) - }); + // LimeWater + Sand -> Mortar + event.recipes.gtceu.mixer('mortar') + .itemInputs('#forge:sand') + .inputFluids(Fluid.of('tfc:limewater', 100)) + .itemOutputs('16x tfc:mortar') + .duration(800) + .EUt(8) // Jar lids @@ -311,46 +221,25 @@ const registerTFCRecipes = (event) => { event.replaceInput({ mod: 'tfc' }, 'minecraft:sugar', '#tfg:sugars') - // Sea Water - event.recipes.tfc.barrel_instant() - .inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1)) - .inputFluid(Fluid.of('minecraft:water', 1000)) - .outputFluid(Fluid.of('tfc:salt_water', 1000)) - .id('tfg:barrel/water_to_salt_water') - event.recipes.tfc.barrel_instant() - .inputItem("tfc:powder/salt") - .inputFluid(Fluid.of('minecraft:water', 250)) - .outputFluid(Fluid.of('tfc:salt_water', 250)) - .id('tfg:barrel/water_to_salt_water_tfc') + // jute net -> burlap net + event.replaceInput({ id: 'tfc:crafting/jute_net' }, 'tfc:jute_fiber', '#tfg:burlap_fiber') - // jute net -> burlap net - event.replaceInput({ id: 'tfc:crafting/jute_net'}, 'tfc:jute_fiber', '#tfg:burlap_fiber') - - // horse armor to use burlap - global.TFC_EQUIPMENT_METALS.forEach(material => { - event.replaceInput({ id: `tfc:crafting/${material}_horse_armor`}, `tfc:jute_fiber`, `#tfg:burlap_fiber`) - }) - - // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [{ item: 'tfc:torch' }], - result: { item: 'tfc:powder/wood_ash' } - }).id(`tfg:ae_transform/torch_to_wood_ash`) - - event.shaped('8x minecraft:ladder', [ - 'A A', - 'AAA', - 'A A' - ], { - A: '#tfc:lumber' - }).id('tfc:crafting/vanilla/ladder') - - event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') - event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + // horse armor to use burlap + global.TFC_EQUIPMENT_METALS.forEach(material => { + event.replaceInput({ id: `tfc:crafting/${material}_horse_armor` }, `tfc:jute_fiber`, `#tfg:burlap_fiber`) + }) + + event.recipes.gtceu.centrifuge('tfg:soot') + .itemInputs('tfc:soot') + .itemOutputs('#forge:dusts/carbon') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') + .itemInputs('2x #forge:plates/wrought_iron') + .notConsumable('tfg:large_casing_extruder_mold') + .itemOutputs('tfc:wrought_iron_grill') + .duration(60) + .EUt(8) } diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js deleted file mode 100644 index 319bbe004..000000000 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ /dev/null @@ -1,452 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCMachineRecipes(event) { - - // Бумага - event.recipes.gtceu.cutter('tfg:unrefined_paper') - .itemInputs('tfc:unrefined_paper') - .itemOutputs('minecraft:paper') - .duration(100) - .EUt(7) - - // 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(7) - - event.recipes.gtceu.cutter('tfg:medium_scraped_hide') - .itemInputs('tfc:medium_soaked_hide') - .itemOutputs('tfc:medium_scraped_hide') - .duration(100) - .EUt(7) - - event.recipes.gtceu.cutter('tfg:large_scraped_hide') - .itemInputs('tfc:large_soaked_hide') - .itemOutputs('tfc:large_scraped_hide') - .duration(100) - .EUt(7) - - // 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) - - //#region Молды в ассемблере - - for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { - let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; - - event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .circuit(i) - .itemOutputs(element.output) - .duration(450) - .EUt(2) - } - - event.recipes.gtceu.extruder('tfg:unfired_clay_brick') - .itemInputs('minecraft:clay_ball') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_brick') - .duration(20) - .EUt(2) - - event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') - .itemInputs('tfc:fire_clay') - .notConsumable('gtceu:ingot_extruder_mold') - .itemOutputs('tfc:ceramic/unfired_fire_brick') - .duration(20) - .EUt(2) - - //#endregion - - //#region Стеклянные смеси в бутылки в ассемблере - - global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { - event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) - .itemInputs(element.input) - .notConsumable('gtceu:bottle_casting_mold') - .itemOutputs(element.output) - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - }) - - //#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) - - //#endregion - - // Brine - - event.recipes.gtceu.mixer('tfg:tfc/brine') - .inputFluids(Fluid.of('tfc:salt_water', 900)) - .inputFluids(Fluid.of('tfc:vinegar', 100)) - .outputFluids(Fluid.of('tfc:brine', 1000)) - .duration(100) - .EUt(16) - - //#endregion - - // Lamp Glass - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) - .itemInputs('#tfc:glass_batches') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) - .itemInputs('#forge:dusts/glass') - .notConsumable('#tfg:unfinished_lamps') - .itemOutputs('tfc:lamp_glass') - .duration(100) - .EUt(2) - - // Empty Jar - event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') - .itemInputs('#tfc:glass_batches_tier_2') - .notConsumable('gtceu:ball_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - .category(GTRecipeCategories.INGOT_MOLDING) - - event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') - .inputFluids(Fluid.of('gtceu:glass', 144)) - .notConsumable('gtceu:cylinder_casting_mold') - .itemOutputs('tfc:empty_jar') - .duration(100) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:jar_extraction') - .itemInputs('#tfc:jars') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.extractor('tfc:glass_batch_extraction') - .itemInputs('#tfc:glass_batches') - .outputFluids(Fluid.of('gtceu:glass', 144)) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe('tfc:lens') - .itemInputs('#forge:glass') - .itemOutputs('tfc:lens') - .duration(100) - .EUt(16) - - // Wool Yarn - event.recipes.gtceu.macerator('macerate_wool') - .itemInputs('#minecraft:wool') - .itemOutputs('tfc:wool_yarn') - .chancedOutput('tfc:wool_yarn', 9000, 0) - .chancedOutput('tfc:wool_yarn', 5000, 0) - .chancedOutput('tfc:wool_yarn', 2000, 0) - .duration(200) - .EUt(2) - - // LimeWater + Sand -> Mortar - event.recipes.gtceu.mixer('mortar') - .itemInputs('#forge:sand') - .inputFluids(Fluid.of('tfc:limewater', 100)) - .itemOutputs('16x tfc:mortar') - .duration(800) - .EUt(8) - - - // 1x Small SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_1') - .itemInputs('tfc:small_sheepskin_hide') - .itemOutputs('tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Medium SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_2') - .itemInputs('tfc:medium_sheepskin_hide') - .itemOutputs('2x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // 1x Large SheepSkin -> 1x Wool - event.recipes.gtceu.assembler('tfg:tfc/wool_3') - .itemInputs('tfc:large_sheepskin_hide') - .itemOutputs('3x tfc:wool') - .duration(100) - .circuit(3) - .EUt(4) - - // Wool Yarn - event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') - .itemInputs('tfc:wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - // Burlap Cloth - event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') - .itemInputs('12x tfc:jute_fiber') - .circuit(0) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - // Silk Cloth - event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') - .itemInputs('24x minecraft:string') - .circuit(0) - .itemOutputs('tfc:silk_cloth') - .duration(100) - .EUt(4) - - // Wool Cloth - event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') - .itemInputs('16x tfc:wool_yarn') - .circuit(0) - .itemOutputs('tfc:wool_cloth') - .duration(100) - .EUt(4) - - // Cloths to Wool - event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') - .itemInputs('4x #tfc:sewing_light_cloth') - .itemOutputs('8x minecraft:white_wool') - .circuit(16) - .duration(100) - .EUt(4) - - // Jute Fiber - generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", - 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') - - // Ceramic Recycling - event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') - .itemInputs('firmalife:pottery_sherd') - .itemOutputs('#forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:ceramic_molds') - .itemInputs('#tfc:fired_molds') - .itemOutputs('2x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:large_vessels') - .itemInputs('#tfc:fired_large_vessels') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:casting_channel') - .itemInputs('tfcchannelcasting:channel') - .itemOutputs('1x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:mold_table') - .itemInputs('tfcchannelcasting:mold_table') - .itemOutputs('5x #forge:dusts/brick') - .category(GTRecipeCategories.MACERATOR_RECYCLING) - .duration(20) - .EUt(2) - - // Humus and compost - event.recipes.gtceu.extractor('tfg:humus_from_leaves') - .itemInputs('#minecraft:leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') - .itemInputs('#tfc:fallen_leaves') - .itemOutputs('tfc:groundcover/humus') - .duration(600) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') - .itemInputs('4x gtceu:fertilizer') - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - - const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; - const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; - - let i = 0; - BROWNS.forEach(brown => { - GREENS.forEach(green => { - event.recipes.gtceu.mixer(`tfg:compost_${i++}`) - .itemInputs(brown, green) - .itemOutputs('tfc:compost') - .duration(1200) - .EUt(2) - }) - }) - - event.recipes.gtceu.centrifuge('tfg:soot') - .itemInputs('tfc:soot') - .itemOutputs('#forge:dusts/carbon') - .duration(20) - .EUt(2) - - // Stripped logs - - global.TFC_WOOD_TYPES.forEach(wood => { - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) - .itemInputs(`tfc:wood/log/${wood}`) - .itemOutputs(`tfc:wood/stripped_log/${wood}`) - .duration(50) - .EUt(2) - - event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) - .itemInputs(`tfc:wood/wood/${wood}`) - .itemOutputs(`tfc:wood/stripped_wood/${wood}`) - .duration(50) - .EUt(2) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/log/${wood}` }], - results: [{ item: `tfc:wood/stripped_log/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_log`) - - event.custom({ - type: 'vintageimprovements:polishing', - ingredients: [{ item: `tfc:wood/wood/${wood}` }], - results: [{ item: `tfc:wood/stripped_wood/${wood}` }], - speed_limits: 0, - processingTime: 50 - }).id(`tfg:vi/lathe/stripping_${wood}_wood`) - }) - - - event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only') - .itemInputs('2x #forge:plates/wrought_iron') - .notConsumable('tfg:large_casing_extruder_mold') - .itemOutputs('tfc:wrought_iron_grill') - .duration(60) - .EUt(8) -} diff --git a/kubejs/server_scripts/tfc/recipes.metals.js b/kubejs/server_scripts/tfc/recipes.metals.js index a1026e886..82358d538 100644 --- a/kubejs/server_scripts/tfc/recipes.metals.js +++ b/kubejs/server_scripts/tfc/recipes.metals.js @@ -200,39 +200,6 @@ function registerTFCMetalsRecipes(event) { .duration(700) .EUt(4) - // Rose Gold + Sterling Silver - const copper_types = [ - "#forge:ingots/copper", - "#forge:dusts/copper", - "#forge:ingots/annealed_copper", - "#forge:dusts/annealed_copper" - ]; - const gold_types = [ - "#forge:ingots/gold", - "#forge:dusts/gold" - ]; - const silver_types = [ - "#forge:ingots/silver", - "#forge:dusts/silver" - ]; - - copper_types.forEach(copper_types_array => { - gold_types.forEach(gold_types_array => { - event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`) - .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4)) - .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.LV]) - }); - silver_types.forEach(silver_types_array => { - event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`) - .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4)) - .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.LV]) - }); - }); - const TFC_INTERMEDIATE_METALS = [ @@ -401,6 +368,10 @@ function registerTFCMetalsRecipes(event) { }) //#endregion + event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron') + .id('tfg:revert_wrought_iron_ingot') + + // Melting powders const METAL_POWDERS = [ diff --git a/kubejs/server_scripts/tfc/recipes.wood.js b/kubejs/server_scripts/tfc/recipes.wood.js deleted file mode 100644 index 7ede26945..000000000 --- a/kubejs/server_scripts/tfc/recipes.wood.js +++ /dev/null @@ -1,55 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFCWoodRecipes(event) { - - event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') - - // Какие то рецепты дерева - global.TFC_WOOD_TYPES.forEach(wood => { - event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) - event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) - event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) - event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) - - // Бревна -> Пиломатериалы - generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) - - // Доски -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) - - // Ступень -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) - - - // Плита -> Пиломатериалы - generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) - - // ? -> Деревянная нажимная пластина - event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ - ' B ', - 'CDC', - ' E ' - ], { - B: '#tfc:hammers', - C: `tfc:wood/planks/${wood}_slab`, - D: '#forge:small_springs', - E: '#forge:tools/screwdrivers' - }).id(`tfc:crafting/wood/${wood}_pressure_plate`) - - event.recipes.gtceu.assembler(`${wood}_pressure_plate`) - .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) - .circuit(3) - .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) - .duration(50) - .EUt(2) - - // ? -> Деревянная кнопка - event.remove({ id: `tfc:crafting/wood/${wood}_button` }) - - generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) - - }) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/data.js b/kubejs/server_scripts/tfg/data.js index 07e49af45..ba1b45d80 100644 --- a/kubejs/server_scripts/tfg/data.js +++ b/kubejs/server_scripts/tfg/data.js @@ -301,6 +301,16 @@ function registerTFGItemSize(event) { event.itemSize("tfg:beaker", "large", "heavy", "tfg/beaker"); event.itemSize("tfg:flask", "normal", "medium", "tfg/flask"); event.itemSize("tfg:vial", "tiny", "light", "tfg/vial"); + + + event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores') + + event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves') + event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves') + + event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches') + event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers') + event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades') } //#endregion @@ -328,949 +338,4 @@ function registerTFGSupportData(event) { }); } -//#endregion -//#region Food Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFoodData(event) { - - // Birt - event.foodItem("tfg:food/raw_birt", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_birt", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Crawlermari - event.foodItem("tfg:food/raw_crawlermari", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crawlermari", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Limpet - event.foodItem("tfg:food/raw_limpet", (food) => { - food.hunger(2); - food.water(5); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_limpet", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Moon Rabbit - event.foodItem("tfg:food/raw_moon_rabbit", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.2); - food.decayModifier(2.25); - }); - - // Glacian Mutton - event.foodItem("tfg:food/raw_glacian_mutton", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Sniffer Beef - event.foodItem("tfg:food/raw_sniffer_beef", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Wraptor - event.foodItem("tfg:food/raw_wraptor", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_wraptor", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Springling Collar - event.foodItem("tfg:food/raw_springling_collar", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_springling_collar", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Surfer Steak - event.foodItem("tfg:food/raw_surfer_steak", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_surfer_steak", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Cruncher Ribs - event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Long Pig Filet - event.foodItem("tfg:food/raw_long_pig_filet", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { - food.hunger(2); - food.saturation(2); - food.protein(2); - food.decayModifier(2.25); - }); - - // Stackatick Chunks - event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/raw_stickastackatick", (food) => { - food.hunger(2); - food.protein(1.2); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_stickastackatick", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Walker Steak - event.foodItem("tfg:food/raw_walker_steak", (food) => { - food.hunger(2); - food.protein(2.0); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_walker_steak", (food) => { - food.hunger(4); - food.saturation(2.2); - food.protein(4); - food.decayModifier(2.25); - }); - - // Glider Wings - event.foodItem("tfg:food/raw_glider_wings", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_glider_wings", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(2.75); - food.decayModifier(2.25); - }); - - // Soarer - event.foodItem("tfg:food/raw_whole_soarer", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_whole_soarer", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3.1); - food.decayModifier(2.25); - }); - - // Crusher Meat - event.foodItem("tfg:food/raw_crusher_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - }); - - event.foodItem("tfg:food/cooked_crusher_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // Goober Meat - event.foodItem("tfg:food/raw_goober_meat", (food) => { - food.hunger(2); - food.protein(1.5); - food.decayModifier(3); - food.water(1); - }); - - event.foodItem("tfg:food/cooked_goober_meat", (food) => { - food.hunger(4); - food.saturation(2); - food.protein(3); - food.decayModifier(2.25); - }); - - // high-tech food - global.FOOD_FRUIT.forEach((fruit) => { - event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { - food.hunger(4); - food.saturation(fruit.saturation); - food.water(0); - food.fruit(fruit.fruit); - food.decayModifier(fruit.decay); - }); - }); - - event.foodItem("tfg:food/calorie_paste", (food) => { - food.hunger(6); - food.saturation(4); - food.decayModifier(4.5); - food.grain(0.1); - food.vegetables(0.2); - food.protein(0.2); - }); - - event.foodItem("tfg:food/meal_bag", (food) => { - food.type("dynamic"); - }); - - // Sunflower products - event.foodItem("tfg:roasted_sunflower_seeds", (food) => { - food.hunger(4); - food.decayModifier(0.5); - food.grain(0.1); - food.saturation(0.5); - }); - - event.foodItem("tfg:sunflower_product", (food) => { - food.decayModifier(0.5); - }); - - // Amber Roots - event.foodItem("betterend:amber_root_product", (food) => { - food.hunger(4); - food.decayModifier(1); - food.saturation(1); - food.grain(3); - }); - - // Blossom Berries - event.foodItem("betterend:blossom_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(7.5); - food.fruit(2.1); - }); - - // Cave Pumpkin - event.foodItem("betterend:cave_pumpkin", (food) => { - food.hunger(4); - food.saturation(0); - food.decayModifier(0.5); - }); - - event.foodItem("betterend:cave_pumpkin_chunks", (food) => { - food.hunger(4); - food.saturation(1); - food.decayModifier(2.5); - food.water(5); - food.fruit(0.8); - }); - - event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { - food.hunger(2); - food.decayModifier(3); - }); - - event.foodItem("betterend:cave_pumpkin_pie", (food) => { - food.hunger(4); - food.saturation(2.8); - food.decayModifier(1.5); - food.water(5); - food.protein(1); - food.fruit(5); - food.grain(4); - food.dairy(1); - }); - - // Chorus Mushroom - event.foodItem("betterend:chorus_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:chorus_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2.1); - food.decayModifier(1.5); - food.vegetables(2.5); - }); - - // Shadow Berry - event.foodItem("betterend:shadow_berry_product", (food) => { - food.hunger(5); - food.decayModifier(2); - food.saturation(1); - food.water(5); - food.fruit(1.9); - }); - - event.foodItem("betterend:shadow_berry_cooked", (food) => { - food.hunger(5); - food.decayModifier(1); - food.saturation(2); - food.fruit(2.2); - }); - - // Bolux Mushroom - event.foodItem("betterend:bolux_mushroom_product", (food) => { - food.hunger(2); - food.saturation(1); - food.decayModifier(3); - food.water(3); - food.vegetables(1.5); - }); - - event.foodItem("betterend:bolux_mushroom_cooked", (food) => { - food.hunger(2); - food.saturation(2); - food.decayModifier(1.5); - food.vegetables(2.4); - }); - - // Dino Nuggets - event.foodItem('tfg:food/raw_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(1); - food.decayModifier(3); - }); - - event.foodItem('tfg:food/cooked_dino_nugget', (food) => { - food.type("dynamic"); - food.hunger(3); - food.saturation(2); - food.decayModifier(1.5); - }); - - // Ice Soup - event.foodItem("tfg:food/ice_soup", (food) => { - food.hunger(1); - food.water(20); - food.decayModifier(0); - }); - - // Fries - event.foodItem('tfg:food/raw_fries', (food) => { - food.hunger(1); - food.decayModifier(3); - food.vegetables(0.25); - }); - - event.foodItem('tfg:food/cooked_fries', (food) => { - food.hunger(2); - food.decayModifier(1.5); - food.vegetables(0.6); - food.saturation(2); - }); - - // Cheese Curds - event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { - food.hunger(1); - food.decayModifier(1.3); - food.dairy(1); - food.saturation(1); - }); - - event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { - food.hunger(3); - food.decayModifier(0.8); - food.dairy(1.2); - food.saturation(2); - food.grain(0.5); - }); - - // Hamburgers - event.foodItem('tfg:food/raw_burger_patty', (food) => { - food.hunger(2); - food.decayModifier(2.3); - food.protein(2); - }); - - event.foodItem('tfg:food/cooked_burger_patty', (food) => { - food.hunger(4); - food.decayModifier(2); - food.protein(2.5); - food.saturation(2); - }); - - event.foodItem('tfg:food/brioche_dough', (food) => { - food.hunger(1.5); - food.decayModifier(2.3); - }); - - event.foodItem('tfg:food/brioche_bun', (food) => { - food.hunger(3.5); - food.decayModifier(1.5); - food.grain(1.5); - food.dairy(0.5); - food.saturation(1); - }); - - event.foodItem('tfg:food/hamburger', (food) => { - food.type("dynamic"); - }); - - event.foodItem('tfg:food/cheeseburger', (food) => { - food.type("dynamic"); - }); - - // Poutine - event.foodItem('tfg:food/poutine', (food) => { - food.type("dynamic_bowl"); - }); - - // Oatmeal - event.foodItem('tfg:food/oatmeal', (food) => { - food.type("dynamic_bowl"); - }); - - // Biochem Items - event.foodItem("tfg:progenitor_cells", (food) => { - food.decayModifier(1); - }); - event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { - food.decayModifier(0.5); - }); - - // Instant Mac - event.foodItem('tfg:food/raw_instant_mac', (food) => { - food.hunger(2); - food.decayModifier(0.2); - }); - - event.foodItem('tfg:food/cooked_instant_mac', (food) => { - food.hunger(3.5); - food.decayModifier(1.6); - food.grain(1.5); - food.dairy(2.5); - food.protein(0.8); - food.saturation(1.8); - }); - - //#region Drinkables - // Proto Growth Medium - event.drinkable("tfg:proto_growth_medium", (data) => { - data.thirst(10); - data.food(food => { - food.dairy(5); - food.protein(1); - }); - data.effect("minecraft:absorption", (effect) => { - effect.amplifier(2); - effect.chance(0.25); - effect.duration(1200); - }); - }); - - // Semiheavy Ammoniacal Water - event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { - data.thirst(10); - data.effect("minecraft:nausea", (effect) => { - effect.chance(0.5); - effect.duration(200); - }); - }); - - // Rich Stock - event.drinkable('tfg:rich_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Light Stock - event.drinkable('tfg:light_stock', (data) => { - data.thirst(4); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.2); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.25); - food.vegetables(0.25); - }); - }); - - // Brown Gravy - event.drinkable('tfg:brown_gravy', (data) => { - data.thirst(2); - data.effect("tfc:thirst", (effect) => { - effect.chance(0.3); - effect.duration(20*5); - }); - data.food(food => { - food.protein(0.5); - food.vegetables(0.5); - food.grain(0.25); - }); - }); - - //#endregion -} - -//#endregion -//#region Crop Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGCropRanges(event) { - // Earth - event.climateRange((climate) => { - climate.minHydration(20); - climate.maxHydration(80); - climate.minTemperature(5); - climate.maxTemperature(40); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "tfg:sunflower"); - - event.climateRange((climate) => { - climate.minHydration(10); - climate.maxHydration(60); - climate.minTemperature(-5); - climate.maxTemperature(25); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(1.5); - }, "tfg:rapeseed"); - - event.climateRange((climate) => { - climate.minHydration(15); - climate.maxHydration(65); - climate.minTemperature(-8); - climate.maxTemperature(25); - climate.hydrationWiggle(6.5); - climate.temperatureWiggle(3); - }, "tfg:flax"); - - // Mars - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:amber_root"); - - event.climateRange((climate) => { - climate.minHydration(70); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:blossom_berry"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:bolux_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(60); - climate.minTemperature(-100); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:cave_pumpkin_plant"); - - event.climateRange((climate) => { - climate.minHydration(0); - climate.maxHydration(40); - climate.minTemperature(-150); - climate.maxTemperature(15); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:chorus_mushroom"); - - event.climateRange((climate) => { - climate.minHydration(50); - climate.maxHydration(100); - climate.minTemperature(-80); - climate.maxTemperature(30); - climate.hydrationWiggle(7.5); - climate.temperatureWiggle(5.5); - }, "betterend:shadow_berry"); -} - -//#endregion -//#region Planter Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFLPlanters(event) { - event.firmalifePlantable( - "tfg:sunflower_seeds", - "large", - 0, - 3, - 0.15, - "tfg:sunflower_seeds", - "tfg:sunflower_product", - "nitrogen", - [ - "tfg:block/crop/sunflower_greenhouse_0", - "tfg:block/crop/sunflower_greenhouse_1", - "tfg:block/crop/sunflower_greenhouse_2", - "tfg:block/crop/sunflower_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:rapeseed_seeds", - "large", - 0, - 3, - 0.15, - "tfg:rapeseed_seeds", - "tfg:rapeseed_product", - "phosphorous", - [ - "tfg:block/crop/rapeseed_greenhouse_0", - "tfg:block/crop/rapeseed_greenhouse_1", - "tfg:block/crop/rapeseed_greenhouse_2", - "tfg:block/crop/rapeseed_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "tfg:flax_seeds", - "large", - 0, - 3, - 0.2, - "tfg:flax_seeds", - "tfg:flax_product", - "nitrogen", - [ - "tfg:block/crop/flax_age_0", - "tfg:block/crop/flax_age_1", - "tfg:block/crop/flax_age_5_top", - "tfg:block/crop/flax_age_6_top" - ], - null - ); - - event.firmalifePlantable( - "betterend:amber_root_seeds", - "large", - 0, - 3, - 0.15, - "betterend:amber_root_seeds", - "betterend:amber_root_product", - "phosphorous", - [ - "betterend:block/amber_root_0", - "betterend:block/amber_root_1", - "betterend:block/amber_root_2", - "betterend:block/amber_root_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:blossom_berry_seeds", - "large", - 0, - 3, - 0.15, - "betterend:blossom_berry_seeds", - "betterend:blossom_berry_product", - "potassium", - [ - "betterend:block/blossom_berry_seed_0", - "betterend:block/blossom_berry_seed_1", - "betterend:block/blossom_berry_seed_2", - "betterend:block/blossom_berry_seed_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:bolux_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:bolux_mushroom_seeds", - "betterend:bolux_mushroom_product", - "phosphorous", - [ - "betterend:block/bolux_mushroom_greenhouse_0", - "betterend:block/bolux_mushroom_greenhouse_1", - "betterend:block/bolux_mushroom_greenhouse_2", - "betterend:block/bolux_mushroom_greenhouse_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:chorus_mushroom_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:chorus_mushroom_seeds", - "betterend:chorus_mushroom_product", - "phosphorous", - [ - "betterend:block/chorus_mushroom_0", - "betterend:block/chorus_mushroom_1", - "betterend:block/chorus_mushroom_2", - "betterend:block/chorus_mushroom_3" - ], - null - ); - - event.firmalifePlantable( - "betterend:cave_pumpkin_plant_seeds", - "hanging", - 2, - 3, - 0.15, - "betterend:cave_pumpkin_plant_seeds", - "betterend:cave_pumpkin", - "phosphorous", - [ - "betterend:block/cave_pumpkin_greenhouse_0", - "betterend:block/cave_pumpkin_greenhouse_1", - "betterend:block/cave_pumpkin_greenhouse_2", - "betterend:block/cave_pumpkin_greenhouse_3" - ], - "betterend:block/cave_pumpkin_top" - ); - - event.firmalifePlantable( - "betterend:shadow_berry_seeds", - "quad", - 1, - 3, - 0.15, - "betterend:shadow_berry_seeds", - "betterend:shadow_berry_product", - "potassium", - [ - "betterend:block/shadow_berry_greenhouse_0", - "betterend:block/shadow_berry_greenhouse_1", - "betterend:block/shadow_berry_greenhouse_2", - "betterend:block/shadow_berry_greenhouse_3" - ], - null - ); -} - -//#endregion -//#region Fauna Data - -/** @param {Internal.TFCDataEventJS} event */ -function registerTFGFauna(event) { - - // -108 is the average at z=-4k to z=-6k, which feels like a big enough band - event.fauna( - climate => { - climate.maxTemp(-108) - climate.fuzzy(false) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:glacian_ram") - - event.fauna( - climate => { - climate.minTemp(-102) - climate.maxTemp(-30) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:sniffer") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "tfg:wraptor") - - event.fauna( - climate => { - climate.minTemp(-108) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:springling") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "species:goober") - - event.fauna( - climate => { - climate.minTemp(-97) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:walker") - - event.fauna( - climate => { - climate.minTemp(-109) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:eater") - - event.fauna( - climate => { - climate.minTemp(-100) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:crusher") - - event.fauna( - climate => { - climate.minTemp(-105) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:soarer") - - event.fauna( - climate => { - climate.minTemp(-106) - climate.fuzzy(true) - }, - faunaData => { - faunaData.solidGround(true) - }, - "wan_ancient_beasts:glider") -} - //#endregion \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.interactions.js b/kubejs/server_scripts/tfg/events.interactions.js new file mode 100644 index 000000000..c7ca21bf3 --- /dev/null +++ b/kubejs/server_scripts/tfg/events.interactions.js @@ -0,0 +1,521 @@ + +/** + * @typedef {Object} BrickVariant + * @property {string} brick_type - The name of the brick variant. + * @property {string|null} brick - Main brick block ID. + * @property {string|null} brick_stairs - Brick stairs block ID. + * @property {string|null} brick_slab - Brick slab block ID. + * @property {string|null} brick_wall - Brick wall block ID. + * @property {string|null} cracked_brick - Cracked brick block ID. + * @property {string|null} cracked_stairs - Cracked brick stairs block ID. + * @property {string|null} cracked_slab - Cracked brick slab block ID. + * @property {string|null} cracked_wall - Cracked brick wall block ID. + * @property {string|null} mossy_brick - Mossy brick block ID. + * @property {string|null} mossy_stairs - Mossy brick stairs block ID. + * @property {string|null} mossy_slab - Mossy brick slab block ID. + * @property {string|null} mossy_wall - Mossy brick wall block ID. + * @property {string|null} smooth_brick - Smooth brick block ID. + * @property {string|null} smooth_stairs - Smooth brick stairs block ID. + * @property {string|null} smooth_slab - Smooth brick slab block ID. + * @property {string|null} smooth_wall - Smooth brick wall block ID. + * @property {string|null} chiseled_brick - Chiseled brick block ID. + */ + +const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] + +// #region BRICK_INDEX +/** @type {BrickVariant[]} */ +global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + brick_type: tfc_stone, + brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, + cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, + mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, + smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, + chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` +})); +(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { + global.BRICK_INDEX.push({ + brick_type: create_brick, + brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, + cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, + mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, + smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, + chiseled_brick: `createdeco:tiled_${create_brick}_bricks` + }) +}); +global.BRICK_INDEX = global.BRICK_INDEX.concat([ + // { brick_type: '', + // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', + // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', + // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', + // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', + // chiseled_brick: '' }, + + { + brick_type: 'red', + brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', + cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', + mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', + smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', + chiseled_brick: 'createdeco:tiled_red_bricks' + }, + + { + brick_type: 'light_concrete', + brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_light_concrete' + }, + + { + brick_type: 'dark_concrete', + brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, + cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, + mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: 'gtceu:chiseled_dark_concrete' + }, + + { + brick_type: 'deepslate', + brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', + cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', + mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'deepslate_tiles', + brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', + cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', + chiseled_brick: 'minecraft:chiseled_deepslate' + }, + + { + brick_type: 'blackstone', + brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', + cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', + smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', + chiseled_brick: 'minecraft:chiseled_polished_blackstone' + }, + + { + brick_type: 'dripstone', + brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', + cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', + mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', + smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', + chiseled_brick: 'create:small_dripstone_bricks' + }, + + { + brick_type: 'crackrack', + brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', + cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', + mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', + smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', + chiseled_brick: 'minecraft:chiseled_nether_bricks' + }, + + { + brick_type: 'moon_deepslate', + brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', + cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', + mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', + smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', + chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' + }, + + { + brick_type: 'permafrost', + brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', + cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', + mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', + smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', + chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' + }, + + { + brick_type: 'red_granite', + brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', + cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', + mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', + smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', + chiseled_brick: 'gtceu:chiseled_red_granite' + }, + + { + brick_type: 'venus_sandstone', + brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', + cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, + smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, + chiseled_brick: null + }, + + { + brick_type: 'stone', + brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', + cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', + mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', + smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', + chiseled_brick: 'minecraft:chiseled_stone_bricks' + } +]); + +global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + brick_type: stone, + brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, + cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, + mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, + smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, + chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` + } +))) + +// #endregion BRICK_INDEX + +// #region COBBLE_INDEX +global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ + cobble_type: tfc_stone, + block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, + mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` +})); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ + { + cobble_type: 'deepslate', + block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' + }, + + { + cobble_type: 'blackstone', + block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' + }, + + { + cobble_type: 'dripstone', + block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', + mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' + }, + + { + cobble_type: 'crackrack', + block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', + mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' + }, + + { + cobble_type: 'moon_deepslate', + block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', + mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' + }, + + { + cobble_type: 'permafrost', + block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', + mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' + }, + + { + cobble_type: 'red_granite', + block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', + mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' + }, + + { + cobble_type: 'stone', + block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', + mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' + } +]); + +global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( + { + cobble_type: stone, + block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, + mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` + } +))) + +// #endregion COBBLE_INDEX + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + if (!player.crouching) return; + + let state = block.getBlockState().toString(); + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(state.indexOf('[')); + } else { + state = ''; + } + + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing(); + + if (!player.isCreative() && damageTool) { + item.damageValue++; + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + item.count--; + } + } + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); + server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); +}; + +/** + * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} outputItem -Item ID of item to receive + * @param {number} outputCount -Number of items to be returned + * @param {string} toolId -Item ID of the tool. + * @param {boolean} damageTool -Sets wether the tool should be damaged on use. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + if (!player.crouching) return; + + if (toolId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== toolId) return; + } + + transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) + + const dim = block.level.name.getString(); + server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); + +} +/** + * Function for replacing a block with another block by crouch-right-clicking with an item. + * + * If input and output is null recipe will just return. + * + * @param {*} event + * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. + * @param {string} outputBlock -Block ID of the replacement. + * @param {string} itemId -Item ID of the consumed item. Accepts Tags. + * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. + * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. + * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. + * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. + * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. + */ +function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { + const { server, item, player, block } = event; + + if (!inputBlock || !outputBlock) return; + + if (inputBlock.startsWith('#')) { + if (!block.hasTag(inputBlock.substring(1))) return; + } else { + if (block.id.toString() !== inputBlock) return; + } + + if (itemId.startsWith('#')) { + if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; + } else { + if (item.isEmpty() || player.mainHandItem.id !== itemId) return; + } + if (!player.crouching) return; + + let state = block.getBlockState().toString() + if (state.includes('[') && copyBlockstate === true) { + state = state.substring(block.getBlockState().toString().indexOf('[')); + } else { + state = '' + } + + if (!player.isCreative() && consumeItem === true) { + if (item.count < consumeAmount) { + player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) + return; + } + item.count -= consumeAmount; + } + if (soundId) { + server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) + } + if (particleId) { + server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) + } + player.swing() + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) + event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) +}; + +// Declare Events +BlockEvents.rightClicked(event => { + //Brick index events + for (const b of global.BRICK_INDEX) { + //brick -> cracked + transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //brick -> mossy + transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //cracked -> mossy + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cracked + transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + //mossy -> brick + transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + //cracked -> brick + transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); + // brick -> smooth + transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); + // smooth -> brick + transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + } + + //Cobble index events + for (const c of global.COBBLE_INDEX) { + //cobble -> mossy + transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); + //mossy -> cobble + transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); + } + + //Misc Events + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + + transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); + transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); + +}); + +// Makes scythes, hoes, and knives take damage when cutting grass +BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { + let player = event.player; + let toolUsed = player.mainHandItem; + + if (!toolUsed.hasTag('tfc:sharp_tools')) { + return; + } + + if (!player.isCreative()) { + toolUsed.damageValue++; + if (toolUsed.damageValue >= toolUsed.maxDamage) { + event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); + toolUsed.count--; + } + } +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.js b/kubejs/server_scripts/tfg/events.js index 37f1b7963..4c19dd387 100644 --- a/kubejs/server_scripts/tfg/events.js +++ b/kubejs/server_scripts/tfg/events.js @@ -11,110 +11,6 @@ TFGServerEvents.dimensionalPowerConsumption(event => { event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000); }); -//#region Medicine - -//Pills & Tablets -const pill_event = [ - 'haste', - 'luck', - 'night_vision', - 'poison', - 'regeneration', - 'slowness', - 'speed', - 'water_breathing', - 'weakness', -]; - -pill_event.forEach(pill_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_pill`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${pill_event}_tablet`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_pill`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:antipoison_tablet`) return - item.count-- - player.addItemCooldown(item, 50) - event.player.removeEffect('minecraft:poison') - event.player.removeEffect('minecraft:wither') - event.player.removeEffect('minecraft:weakness') - event.player.removeEffect('minecraft:slowness') - event.player.removeEffect('minecraft:mining_fatigue') - event.player.removeEffect('minecraft:nausea') - event.player.removeEffect('minecraft:blindness') - event.player.removeEffect('minecraft:hunger') - event.player.removeEffect('minecraft:bad_omen') - event.player.removeEffect('minecraft:darkness') - event.player.removeEffect('minecraft:unluck') - server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) -}); - -//salvos -const salvo_event = [ - 'fire_resistance', - 'invisibility', - 'luck', - 'resistance', -]; - -salvo_event.forEach(salvo_event => { - - ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:${salvo_event}_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) - }); -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:absorption_salvo`) return - item.count-- - player.addItemCooldown(item, 200) - server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -ItemEvents.rightClicked(event => { - const { item, server, player, player: { x, y, z } } = event - if (item.id !== `tfg:instant_health_salvo`) return - item.count-- - player.addItemCooldown(item, 100) - server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) - server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) -}); - -//#endregion - // Vase Sounds global.MINECRAFT_DYE_NAMES.forEach(color => { BlockEvents.rightClicked(event => { @@ -158,623 +54,3 @@ function getTFGPersistentDataRoot(player) { return player.persistentData.getCompound("tfg:custom_data") } -//#region Fishing Net -const fish = [ - 'cod', - 'crappie', - 'jellyfish', - 'lake_trout', - 'largemouth_bass', - 'rainbow_trout', - 'salmon', - 'smallmouth_bass', - 'tropical_fish', - 'bluegill' -]; - -const shellfish = [ - 'lobster', - 'isopod', - 'crayfish' -]; - -//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. -const tiers = [ - 'wood', - 'brass', - 'rose_gold', - 'sterling_silver', - 'invar', - 'tin_alloy', - 'cupronickel', - 'magnalium' -]; - -//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. -tiers.forEach(tier => { - fish.forEach(fish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${fish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give(`tfc:food/${fish}`) - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Shellfish Exception - shellfish.forEach(shellfish => { - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== `tfc:${shellfish}`) return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('tfc:food/shellfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) - }) - - //Pufferfish Exception - ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { - const { item, player, server, target } = event; - - if (target.type !== 'tfc:pufferfish') return - server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) - server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) - server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) - event.player.give('minecraft:pufferfish') - player.swing() - if (player.isCreative() === false) { - item.damageValue++ - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) - item.count-- - } - } - }) -}) -//#endregion - -//#region Block Interactions - -/** - * @typedef {Object} BrickVariant - * @property {string} brick_type - The name of the brick variant. - * @property {string|null} brick - Main brick block ID. - * @property {string|null} brick_stairs - Brick stairs block ID. - * @property {string|null} brick_slab - Brick slab block ID. - * @property {string|null} brick_wall - Brick wall block ID. - * @property {string|null} cracked_brick - Cracked brick block ID. - * @property {string|null} cracked_stairs - Cracked brick stairs block ID. - * @property {string|null} cracked_slab - Cracked brick slab block ID. - * @property {string|null} cracked_wall - Cracked brick wall block ID. - * @property {string|null} mossy_brick - Mossy brick block ID. - * @property {string|null} mossy_stairs - Mossy brick stairs block ID. - * @property {string|null} mossy_slab - Mossy brick slab block ID. - * @property {string|null} mossy_wall - Mossy brick wall block ID. - * @property {string|null} smooth_brick - Smooth brick block ID. - * @property {string|null} smooth_stairs - Smooth brick stairs block ID. - * @property {string|null} smooth_slab - Smooth brick slab block ID. - * @property {string|null} smooth_wall - Smooth brick wall block ID. - * @property {string|null} chiseled_brick - Chiseled brick block ID. - */ - -const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio'] - -// #region BRICK_INDEX -/** @type {BrickVariant[]} */ -global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - brick_type: tfc_stone, - brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`, - cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`, - mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`, - smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`, - chiseled_brick: `tfc:rock/chiseled/${tfc_stone}` -})); -(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => { - global.BRICK_INDEX.push({ - brick_type: create_brick, - brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`, - cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`, - mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`, - smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`, - chiseled_brick: `createdeco:tiled_${create_brick}_bricks` - }) -}); -global.BRICK_INDEX = global.BRICK_INDEX.concat([ - // { brick_type: '', - // brick: '', brick_stairs: '', brick_slab: '', brick_wall: '', - // cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '', - // mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '', - // smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '', - // chiseled_brick: '' }, - - { - brick_type: 'red', - brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall', - cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall', - mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall', - smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall', - chiseled_brick: 'createdeco:tiled_red_bricks' - }, - - { - brick_type: 'light_concrete', - brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_light_concrete' - }, - - { - brick_type: 'dark_concrete', - brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null, - cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null, - mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: 'gtceu:chiseled_dark_concrete' - }, - - { - brick_type: 'deepslate', - brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall', - cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall', - mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall', - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'deepslate_tiles', - brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall', - cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall', - chiseled_brick: 'minecraft:chiseled_deepslate' - }, - - { - brick_type: 'blackstone', - brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall', - cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall', - smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall', - chiseled_brick: 'minecraft:chiseled_polished_blackstone' - }, - - { - brick_type: 'dripstone', - brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall', - cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall', - mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall', - smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall', - chiseled_brick: 'create:small_dripstone_bricks' - }, - - { - brick_type: 'crackrack', - brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall', - cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall', - mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall', - smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall', - chiseled_brick: 'minecraft:chiseled_nether_bricks' - }, - - { - brick_type: 'moon_deepslate', - brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall', - cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall', - mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall', - smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall', - chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate' - }, - - { - brick_type: 'permafrost', - brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall', - cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall', - mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall', - smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall', - chiseled_brick: 'ad_astra:chiseled_permafrost_bricks' - }, - - { - brick_type: 'red_granite', - brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall', - cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall', - mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall', - smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall', - chiseled_brick: 'gtceu:chiseled_red_granite' - }, - - { - brick_type: 'venus_sandstone', - brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall', - cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null, - smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null, - chiseled_brick: null - }, - - { - brick_type: 'stone', - brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall', - cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall', - mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall', - smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall', - chiseled_brick: 'minecraft:chiseled_stone_bricks' - } -]); - -global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - brick_type: stone, - brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`, - cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`, - mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`, - smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`, - chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks` - } -))) - -// #endregion BRICK_INDEX - -// #region COBBLE_INDEX -global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({ - cobble_type: tfc_stone, - block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`, - mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall` -})); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat([ - { - cobble_type: 'deepslate', - block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall' - }, - - { - cobble_type: 'blackstone', - block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall' - }, - - { - cobble_type: 'dripstone', - block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall', - mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall' - }, - - { - cobble_type: 'crackrack', - block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall', - mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall' - }, - - { - cobble_type: 'moon_deepslate', - block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall', - mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall' - }, - - { - cobble_type: 'permafrost', - block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall', - mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall' - }, - - { - cobble_type: 'red_granite', - block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall', - mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall' - }, - - { - cobble_type: 'stone', - block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall', - mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall' - } -]); - -global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => ( - { - cobble_type: stone, - block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`, - mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall` - } -))) - -// #endregion COBBLE_INDEX - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - if (!player.crouching) return; - - let state = block.getBlockState().toString(); - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(state.indexOf('[')); - } else { - state = ''; - } - - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing(); - - if (!player.isCreative() && damageTool) { - item.damageValue++; - if (item.damageValue >= item.maxDamage) { - server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - item.count--; - } - } - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`); - server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`); -}; - -/** - * Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} outputItem -Item ID of item to receive - * @param {number} outputCount -Number of items to be returned - * @param {string} toolId -Item ID of the tool. - * @param {boolean} damageTool -Sets wether the tool should be damaged on use. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - if (!player.crouching) return; - - if (toolId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== toolId) return; - } - - transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) - - const dim = block.level.name.getString(); - server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`); - -} -/** - * Function for replacing a block with another block by crouch-right-clicking with an item. - * - * If input and output is null recipe will just return. - * - * @param {*} event - * @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended. - * @param {string} outputBlock -Block ID of the replacement. - * @param {string} itemId -Item ID of the consumed item. Accepts Tags. - * @param {boolean} consumeItem -Sets wether the item should be comsumed or not. - * @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize. - * @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null. - * @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null. - * @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block. - */ -function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) { - const { server, item, player, block } = event; - - if (!inputBlock || !outputBlock) return; - - if (inputBlock.startsWith('#')) { - if (!block.hasTag(inputBlock.substring(1))) return; - } else { - if (block.id.toString() !== inputBlock) return; - } - - if (itemId.startsWith('#')) { - if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return; - } else { - if (item.isEmpty() || player.mainHandItem.id !== itemId) return; - } - if (!player.crouching) return; - - let state = block.getBlockState().toString() - if (state.includes('[') && copyBlockstate === true) { - state = state.substring(block.getBlockState().toString().indexOf('[')); - } else { - state = '' - } - - if (!player.isCreative() && consumeItem === true) { - if (item.count < consumeAmount) { - player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`) - return; - } - item.count -= consumeAmount; - } - if (soundId) { - server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`) - } - if (particleId) { - server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`) - } - player.swing() - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`) - event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`) -}; - -// Declare Events -BlockEvents.rightClicked(event => { - //Brick index events - for (const b of global.BRICK_INDEX) { - //brick -> cracked - transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //brick -> mossy - transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //cracked -> mossy - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cracked - transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - //mossy -> brick - transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - //cracked -> brick - transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true); - // brick -> smooth - transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true); - // smooth -> brick - transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - } - - //Cobble index events - for (const c of global.COBBLE_INDEX) { - //cobble -> mossy - transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true); - //mossy -> cobble - transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true); - } - - //Misc Events - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - - transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true); - transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true); - -}); - -// Makes scythes, hoes, and knives take damage when cutting grass -BlockEvents.broken('tfc:mineable_with_sharp_tool', event => { - let player = event.player; - let toolUsed = player.mainHandItem; - - if (!toolUsed.hasTag('tfc:sharp_tools')) { - return; - } - - if (!player.isCreative()) { - toolUsed.damageValue++; - if (toolUsed.damageValue >= toolUsed.maxDamage) { - event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`); - toolUsed.count--; - } - } -}); - -//#endregion diff --git a/kubejs/server_scripts/tfg/food/data.crops.js b/kubejs/server_scripts/tfg/food/data.crops.js new file mode 100644 index 000000000..af2a55d2f --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.crops.js @@ -0,0 +1,88 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGCropRanges(event) { + // Earth + event.climateRange((climate) => { + climate.minHydration(20); + climate.maxHydration(80); + climate.minTemperature(5); + climate.maxTemperature(40); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "tfg:sunflower"); + + event.climateRange((climate) => { + climate.minHydration(10); + climate.maxHydration(60); + climate.minTemperature(-5); + climate.maxTemperature(25); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(1.5); + }, "tfg:rapeseed"); + + event.climateRange((climate) => { + climate.minHydration(15); + climate.maxHydration(65); + climate.minTemperature(-8); + climate.maxTemperature(25); + climate.hydrationWiggle(6.5); + climate.temperatureWiggle(3); + }, "tfg:flax"); + + // Mars + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:amber_root"); + + event.climateRange((climate) => { + climate.minHydration(70); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:blossom_berry"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:bolux_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(60); + climate.minTemperature(-100); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:cave_pumpkin_plant"); + + event.climateRange((climate) => { + climate.minHydration(0); + climate.maxHydration(40); + climate.minTemperature(-150); + climate.maxTemperature(15); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:chorus_mushroom"); + + event.climateRange((climate) => { + climate.minHydration(50); + climate.maxHydration(100); + climate.minTemperature(-80); + climate.maxTemperature(30); + climate.hydrationWiggle(7.5); + climate.temperatureWiggle(5.5); + }, "betterend:shadow_berry"); +} diff --git a/kubejs/server_scripts/tfg/food/data.food.js b/kubejs/server_scripts/tfg/food/data.food.js new file mode 100644 index 000000000..def08ba3d --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.food.js @@ -0,0 +1,583 @@ +"use strict"; + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFoodData(event) { + + // Ice shavings + event.foodItem('firmalife:ice_shavings', food => { + food.water(5) + food.decayModifier(0) + }) + + // Birt + event.foodItem("tfg:food/raw_birt", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_birt", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Crawlermari + event.foodItem("tfg:food/raw_crawlermari", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crawlermari", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Limpet + event.foodItem("tfg:food/raw_limpet", (food) => { + food.hunger(2); + food.water(5); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_limpet", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Moon Rabbit + event.foodItem("tfg:food/raw_moon_rabbit", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_moon_rabbit", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.2); + food.decayModifier(2.25); + }); + + // Glacian Mutton + event.foodItem("tfg:food/raw_glacian_mutton", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glacian_mutton", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Sniffer Beef + event.foodItem("tfg:food/raw_sniffer_beef", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_sniffer_beef", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Wraptor + event.foodItem("tfg:food/raw_wraptor", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_wraptor", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Springling Collar + event.foodItem("tfg:food/raw_springling_collar", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_springling_collar", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Surfer Steak + event.foodItem("tfg:food/raw_surfer_steak", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_surfer_steak", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Cruncher Ribs + event.foodItem("tfg:food/raw_cruncher_ribs", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Long Pig Filet + event.foodItem("tfg:food/raw_long_pig_filet", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_long_pig_filet", (food) => { + food.hunger(2); + food.saturation(2); + food.protein(2); + food.decayModifier(2.25); + }); + + // Stackatick Chunks + event.foodItem("tfg:food/raw_stackatick_chunks", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/raw_stickastackatick", (food) => { + food.hunger(2); + food.protein(1.2); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_stickastackatick", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Walker Steak + event.foodItem("tfg:food/raw_walker_steak", (food) => { + food.hunger(2); + food.protein(2.0); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_walker_steak", (food) => { + food.hunger(4); + food.saturation(2.2); + food.protein(4); + food.decayModifier(2.25); + }); + + // Glider Wings + event.foodItem("tfg:food/raw_glider_wings", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_glider_wings", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(2.75); + food.decayModifier(2.25); + }); + + // Soarer + event.foodItem("tfg:food/raw_whole_soarer", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_whole_soarer", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3.1); + food.decayModifier(2.25); + }); + + // Crusher Meat + event.foodItem("tfg:food/raw_crusher_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + }); + + event.foodItem("tfg:food/cooked_crusher_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // Goober Meat + event.foodItem("tfg:food/raw_goober_meat", (food) => { + food.hunger(2); + food.protein(1.5); + food.decayModifier(3); + food.water(1); + }); + + event.foodItem("tfg:food/cooked_goober_meat", (food) => { + food.hunger(4); + food.saturation(2); + food.protein(3); + food.decayModifier(2.25); + }); + + // high-tech food + global.FOOD_FRUIT.forEach((fruit) => { + event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => { + food.hunger(4); + food.saturation(fruit.saturation); + food.water(0); + food.fruit(fruit.fruit); + food.decayModifier(fruit.decay); + }); + }); + + event.foodItem("tfg:food/calorie_paste", (food) => { + food.hunger(6); + food.saturation(4); + food.decayModifier(4.5); + food.grain(0.1); + food.vegetables(0.2); + food.protein(0.2); + }); + + event.foodItem("tfg:food/meal_bag", (food) => { + food.type("dynamic"); + }); + + // Sunflower products + event.foodItem("tfg:roasted_sunflower_seeds", (food) => { + food.hunger(4); + food.decayModifier(0.5); + food.grain(0.1); + food.saturation(0.5); + }); + + event.foodItem("tfg:sunflower_product", (food) => { + food.decayModifier(0.5); + }); + + // Amber Roots + event.foodItem("betterend:amber_root_product", (food) => { + food.hunger(4); + food.decayModifier(1); + food.saturation(1); + food.grain(3); + }); + + // Blossom Berries + event.foodItem("betterend:blossom_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(7.5); + food.fruit(2.1); + }); + + // Cave Pumpkin + event.foodItem("betterend:cave_pumpkin", (food) => { + food.hunger(4); + food.saturation(0); + food.decayModifier(0.5); + }); + + event.foodItem("betterend:cave_pumpkin_chunks", (food) => { + food.hunger(4); + food.saturation(1); + food.decayModifier(2.5); + food.water(5); + food.fruit(0.8); + }); + + event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => { + food.hunger(2); + food.decayModifier(3); + }); + + event.foodItem("betterend:cave_pumpkin_pie", (food) => { + food.hunger(4); + food.saturation(2.8); + food.decayModifier(1.5); + food.water(5); + food.protein(1); + food.fruit(5); + food.grain(4); + food.dairy(1); + }); + + // Chorus Mushroom + event.foodItem("betterend:chorus_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:chorus_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2.1); + food.decayModifier(1.5); + food.vegetables(2.5); + }); + + // Shadow Berry + event.foodItem("betterend:shadow_berry_product", (food) => { + food.hunger(5); + food.decayModifier(2); + food.saturation(1); + food.water(5); + food.fruit(1.9); + }); + + event.foodItem("betterend:shadow_berry_cooked", (food) => { + food.hunger(5); + food.decayModifier(1); + food.saturation(2); + food.fruit(2.2); + }); + + // Bolux Mushroom + event.foodItem("betterend:bolux_mushroom_product", (food) => { + food.hunger(2); + food.saturation(1); + food.decayModifier(3); + food.water(3); + food.vegetables(1.5); + }); + + event.foodItem("betterend:bolux_mushroom_cooked", (food) => { + food.hunger(2); + food.saturation(2); + food.decayModifier(1.5); + food.vegetables(2.4); + }); + + // Dino Nuggets + event.foodItem('tfg:food/raw_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(1); + food.decayModifier(3); + }); + + event.foodItem('tfg:food/cooked_dino_nugget', (food) => { + food.type("dynamic"); + food.hunger(3); + food.saturation(2); + food.decayModifier(1.5); + }); + + // Ice Soup + event.foodItem("tfg:food/ice_soup", (food) => { + food.hunger(1); + food.water(20); + food.decayModifier(0); + }); + + // Fries + event.foodItem('tfg:food/raw_fries', (food) => { + food.hunger(1); + food.decayModifier(3); + food.vegetables(0.25); + }); + + event.foodItem('tfg:food/cooked_fries', (food) => { + food.hunger(2); + food.decayModifier(1.5); + food.vegetables(0.6); + food.saturation(2); + }); + + // Cheese Curds + event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => { + food.hunger(1); + food.decayModifier(1.3); + food.dairy(1); + food.saturation(1); + }); + + event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => { + food.hunger(3); + food.decayModifier(0.8); + food.dairy(1.2); + food.saturation(2); + food.grain(0.5); + }); + + // Hamburgers + event.foodItem('tfg:food/raw_burger_patty', (food) => { + food.hunger(2); + food.decayModifier(2.3); + food.protein(2); + }); + + event.foodItem('tfg:food/cooked_burger_patty', (food) => { + food.hunger(4); + food.decayModifier(2); + food.protein(2.5); + food.saturation(2); + }); + + event.foodItem('tfg:food/brioche_dough', (food) => { + food.hunger(1.5); + food.decayModifier(2.3); + }); + + event.foodItem('tfg:food/brioche_bun', (food) => { + food.hunger(3.5); + food.decayModifier(1.5); + food.grain(1.5); + food.dairy(0.5); + food.saturation(1); + }); + + event.foodItem('tfg:food/hamburger', (food) => { + food.type("dynamic"); + }); + + event.foodItem('tfg:food/cheeseburger', (food) => { + food.type("dynamic"); + }); + + // Poutine + event.foodItem('tfg:food/poutine', (food) => { + food.type("dynamic_bowl"); + }); + + // Oatmeal + event.foodItem('tfg:food/oatmeal', (food) => { + food.type("dynamic_bowl"); + }); + + // Biochem Items + event.foodItem("tfg:progenitor_cells", (food) => { + food.decayModifier(1); + }); + event.foodItem("tfg:rough_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => { + food.decayModifier(0.5); + }); + + // Instant Mac + event.foodItem('tfg:food/raw_instant_mac', (food) => { + food.hunger(2); + food.decayModifier(0.2); + }); + + event.foodItem('tfg:food/cooked_instant_mac', (food) => { + food.hunger(3.5); + food.decayModifier(1.6); + food.grain(1.5); + food.dairy(2.5); + food.protein(0.8); + food.saturation(1.8); + }); + + //#region Drinkables + // Proto Growth Medium + event.drinkable("tfg:proto_growth_medium", (data) => { + data.thirst(10); + data.food(food => { + food.dairy(5); + food.protein(1); + }); + data.effect("minecraft:absorption", (effect) => { + effect.amplifier(2); + effect.chance(0.25); + effect.duration(1200); + }); + }); + + // Semiheavy Ammoniacal Water + event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => { + data.thirst(10); + data.effect("minecraft:nausea", (effect) => { + effect.chance(0.5); + effect.duration(200); + }); + }); + + // Rich Stock + event.drinkable('tfg:rich_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Light Stock + event.drinkable('tfg:light_stock', (data) => { + data.thirst(4); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.2); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.25); + food.vegetables(0.25); + }); + }); + + // Brown Gravy + event.drinkable('tfg:brown_gravy', (data) => { + data.thirst(2); + data.effect("tfc:thirst", (effect) => { + effect.chance(0.3); + effect.duration(20*5); + }); + data.food(food => { + food.protein(0.5); + food.vegetables(0.5); + food.grain(0.25); + }); + }); + + //#endregion +} diff --git a/kubejs/server_scripts/tfg/food/data.planters.js b/kubejs/server_scripts/tfg/food/data.planters.js new file mode 100644 index 000000000..e694e6ca7 --- /dev/null +++ b/kubejs/server_scripts/tfg/food/data.planters.js @@ -0,0 +1,167 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFLPlanters(event) { + event.firmalifePlantable( + "tfg:sunflower_seeds", + "large", + 0, + 3, + 0.15, + "tfg:sunflower_seeds", + "tfg:sunflower_product", + "nitrogen", + [ + "tfg:block/crop/sunflower_greenhouse_0", + "tfg:block/crop/sunflower_greenhouse_1", + "tfg:block/crop/sunflower_greenhouse_2", + "tfg:block/crop/sunflower_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:rapeseed_seeds", + "large", + 0, + 3, + 0.15, + "tfg:rapeseed_seeds", + "tfg:rapeseed_product", + "phosphorous", + [ + "tfg:block/crop/rapeseed_greenhouse_0", + "tfg:block/crop/rapeseed_greenhouse_1", + "tfg:block/crop/rapeseed_greenhouse_2", + "tfg:block/crop/rapeseed_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "tfg:flax_seeds", + "large", + 0, + 3, + 0.2, + "tfg:flax_seeds", + "tfg:flax_product", + "nitrogen", + [ + "tfg:block/crop/flax_age_0", + "tfg:block/crop/flax_age_1", + "tfg:block/crop/flax_age_5_top", + "tfg:block/crop/flax_age_6_top" + ], + null + ); + + event.firmalifePlantable( + "betterend:amber_root_seeds", + "large", + 0, + 3, + 0.15, + "betterend:amber_root_seeds", + "betterend:amber_root_product", + "phosphorous", + [ + "betterend:block/amber_root_0", + "betterend:block/amber_root_1", + "betterend:block/amber_root_2", + "betterend:block/amber_root_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:blossom_berry_seeds", + "large", + 0, + 3, + 0.15, + "betterend:blossom_berry_seeds", + "betterend:blossom_berry_product", + "potassium", + [ + "betterend:block/blossom_berry_seed_0", + "betterend:block/blossom_berry_seed_1", + "betterend:block/blossom_berry_seed_2", + "betterend:block/blossom_berry_seed_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:bolux_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:bolux_mushroom_seeds", + "betterend:bolux_mushroom_product", + "phosphorous", + [ + "betterend:block/bolux_mushroom_greenhouse_0", + "betterend:block/bolux_mushroom_greenhouse_1", + "betterend:block/bolux_mushroom_greenhouse_2", + "betterend:block/bolux_mushroom_greenhouse_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:chorus_mushroom_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:chorus_mushroom_seeds", + "betterend:chorus_mushroom_product", + "phosphorous", + [ + "betterend:block/chorus_mushroom_0", + "betterend:block/chorus_mushroom_1", + "betterend:block/chorus_mushroom_2", + "betterend:block/chorus_mushroom_3" + ], + null + ); + + event.firmalifePlantable( + "betterend:cave_pumpkin_plant_seeds", + "hanging", + 2, + 3, + 0.15, + "betterend:cave_pumpkin_plant_seeds", + "betterend:cave_pumpkin", + "phosphorous", + [ + "betterend:block/cave_pumpkin_greenhouse_0", + "betterend:block/cave_pumpkin_greenhouse_1", + "betterend:block/cave_pumpkin_greenhouse_2", + "betterend:block/cave_pumpkin_greenhouse_3" + ], + "betterend:block/cave_pumpkin_top" + ); + + event.firmalifePlantable( + "betterend:shadow_berry_seeds", + "quad", + 1, + 3, + 0.15, + "betterend:shadow_berry_seeds", + "betterend:shadow_berry_product", + "potassium", + [ + "betterend:block/shadow_berry_greenhouse_0", + "betterend:block/shadow_berry_greenhouse_1", + "betterend:block/shadow_berry_greenhouse_2", + "betterend:block/shadow_berry_greenhouse_3" + ], + null + ); +} diff --git a/kubejs/server_scripts/tfg/food/recipes.biomass.js b/kubejs/server_scripts/tfg/food/recipes.biomass.js new file mode 100644 index 000000000..65aeb4fcf --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.biomass.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGBiomassRecipes(event) { + + //#region Biomass + + event.recipes.gtceu.brewery('biomass_from_tfc_seeds') + .itemInputs('#tfc:seeds') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_food') + .itemInputs('#tfc:foods') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_plants') + .itemInputs('#tfc:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_moon_plants') + .itemInputs('#tfg:moon_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_mars_plants') + .itemInputs('#tfg:mars_plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_tfc_corals') + .itemInputs('#tfc:corals') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_spider_eyes') + .itemInputs('minecraft:spider_eye') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_leaves') + .itemInputs('#minecraft:leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_minecraft_plants') + .itemInputs('#createaddition:plants') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .duration(100) + .EUt(3) + + event.recipes.gtceu.brewery('biomass_from_wart_blocks') + .itemInputs('#minecraft:wart_blocks') + .inputFluids("#tfc:any_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 50)) + .duration(100) + .EUt(3) + + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust') + + //#endregion + + //#region Plant ball + + event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds') + .itemInputs('4x #tfc:seeds') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + let food = Ingredient.of('#tfc:foods') + .subtract('minecraft:brown_mushroom') + .subtract('minecraft:red_mushroom') + .withCount(8) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_food') + .itemInputs(food) + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_plants') + .itemInputs('4x #tfc:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_moon_plants') + .itemInputs('4x #tfg:moon_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_mars_plants') + .itemInputs('4x #tfg:mars_plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_tfc_corals') + .itemInputs('4x #tfc:corals') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_misc_plants') + .itemInputs('4x #createaddition:plants') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + event.recipes.gtceu.compressor('plant_ball_from_wart_blocks') + .itemInputs('4x #minecraft:wart_blocks') + .itemOutputs('gtceu:plant_ball') + .duration(300) + .EUt(2) + + //#endregion + + // Sugar + event.recipes.gtceu.centrifuge('sugar_from_sugarcane') + .itemInputs('tfc:food/sugarcane') + .inputFluids("#tfg:clean_water 600") + .itemOutputs('minecraft:sugar', 'gtceu:plant_ball') + .duration(800) + .EUt(6) + + event.recipes.gtceu.centrifuge('sugar_from_honey') + .itemInputs('firmalife:raw_honey') + .itemOutputs('minecraft:sugar') + .duration(400) + .EUt(6) + + event.recipes.gtceu.centrifuge('tfg:beets_to_sugar') + .itemInputs('5x tfc:food/beet') + .inputFluids(Fluid.of('tfc:salt_water', 1000)) + .itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 1000)) + .duration(800) + .EUt(7) + .circuit(3) + + // Misc + event.recipes.gtceu.macerator('macerate_cocoa') + .itemInputs('firmalife:food/roasted_cocoa_beans') + .itemOutputs('gtceu:cocoa_dust') + .duration(100) + .EUt(2) + + event.recipes.gtceu.macerator('macerate_meat_to_dust') + .itemInputs('#tfc:foods/meats') + .itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust') + .duration(100) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/food/recipes.food.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.food.js rename to kubejs/server_scripts/tfg/food/recipes.food.js index afffe2bce..40bd7bc70 100644 --- a/kubejs/server_scripts/tfg/recipes.food.js +++ b/kubejs/server_scripts/tfg/food/recipes.food.js @@ -1720,87 +1720,5 @@ function registerTFGFoodRecipes(event) { }); //#endregion - //#region Machine Recipes - event.remove({id: 'gtceu:shaped/mv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/hv_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/ev_food_refrigerator'}) - event.remove({id: 'gtceu:shaped/iv_food_refrigerator'}) - - event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), - '2x gtceu:mv_electric_pump', - 'gtceu:mv_hermetic_casing', - '#gtceu:circuits/mv' - ) - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) - .itemOutputs('1x tfg:mv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), - '2x gtceu:hv_electric_pump', - 'gtceu:hv_hermetic_casing', - '#gtceu:circuits/hv' - ) - .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) - .itemOutputs('1x tfg:hv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), - '2x gtceu:ev_electric_pump', - 'gtceu:ev_hermetic_casing', - '#gtceu:circuits/ev' - ) - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) - .itemOutputs('1x tfg:ev_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') - .itemInputs( - ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), - ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), - '2x gtceu:iv_electric_pump', - 'gtceu:iv_hermetic_casing', - '#gtceu:circuits/iv' - ) - .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) - .itemOutputs('1x tfg:iv_food_refrigerator') - .duration(200) - .circuit(7) - .addMaterialInfo(true) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:electric_greenhouse', [ - 'ABA', - 'CDC', - 'BCB' - ], { - A: '#gtceu:circuits/mv', - B: '#forge:single_cables/copper', - C: 'tfc:compost', - D: 'gtceu:steel_machine_casing' - }).id('tfg:shaped/electric_greenhouse') - - //#endregion } diff --git a/kubejs/server_scripts/tfg/food/recipes.meal_bags.js b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js new file mode 100644 index 000000000..172352b7e --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.meal_bags.js @@ -0,0 +1,108 @@ +"use strict"; + +function registerTFGMealBagRecipes(event) { + + // Food related + event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') + .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) + .itemOutputs('1x tfg:foil_pack') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('2x tfg:dry_ice') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') + .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .duration(160) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('10x tfg:dry_ice') + .duration(60) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') + .itemInputs('1x tfg:dry_ice') + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') + .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') + .itemInputs('1x tfg:used_foil_pack') + .inputFluids(Fluid.of('gtceu:distilled_water', 10)) + .itemOutputs('1x tfg:clean_foil_pack') + .duration(200) + .circuit(2) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [ + { item: 'tfg:used_foil_pack' }], + result: { item: 'tfg:clean_foil_pack' } + }).id('tfg:ae_transform/clean_foil_pack') + + event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') + .id('tfg:splashing/clean_foil_pack') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/calorie_paste' + ]).id('tfg:shapeless/emptying/calorie_paste') + + event.shapeless('1x tfg:used_foil_pack', [ + 'tfg:food/meal_bag' + ]).id('tfg:shapeless/emptying/meal_bag') + + global.FOOD_FRUIT.forEach(fruit => { + event.shapeless('1x tfg:used_foil_pack', [ + `tfg:food/freeze_dried/${fruit.name}` + ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) + }) + + // Recycling + event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack') + .itemInputs('tfg:clean_foil_pack') + .itemOutputs( + ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1) + ) + .duration(GTMaterials.Aluminium.getMass() * 1) + .category(GTRecipeCategories.ARC_FURNACE_RECYCLING) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/food/recipes.refrigerators.js b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js new file mode 100644 index 000000000..97113c2aa --- /dev/null +++ b/kubejs/server_scripts/tfg/food/recipes.refrigerators.js @@ -0,0 +1,113 @@ +"use strict"; + +function registerTFGRefrigeratorRecipes(event) { + + //#region Machine Recipes + + event.remove({ id: 'gtceu:shaped/mv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/hv_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/ev_food_refrigerator' }) + event.remove({ id: 'gtceu:shaped/iv_food_refrigerator' }) + + event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1), + '2x gtceu:mv_electric_pump', + 'gtceu:mv_hermetic_casing', + '#gtceu:circuits/mv' + ) + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000)) + .itemOutputs('1x tfg:mv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1), + '2x gtceu:hv_electric_pump', + 'gtceu:hv_hermetic_casing', + '#gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000)) + .itemOutputs('1x tfg:hv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1), + '2x gtceu:ev_electric_pump', + 'gtceu:ev_hermetic_casing', + '#gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000)) + .itemOutputs('1x tfg:ev_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator') + .itemInputs( + ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2), + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1), + '2x gtceu:iv_electric_pump', + 'gtceu:iv_hermetic_casing', + '#gtceu:circuits/iv' + ) + .inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000)) + .itemOutputs('1x tfg:iv_food_refrigerator') + .duration(200) + .circuit(7) + .addMaterialInfo(true) + .EUt(GTValues.VA[GTValues.LV]) + + //#endregion + + // Refrigerants + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') + .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) + .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) + .duration(480) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') + .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) + .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') + .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) + .circuit(4) + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') + .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) + .circuit(4) + .duration(480) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.cracker('tfg:cracker/isobutane') + .inputFluids(Fluid.of('gtceu:butane', 4000)) + .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) + .circuit(4) + .duration(2400) + .EUt(GTValues.VA[GTValues.HV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.casings.js b/kubejs/server_scripts/tfg/machines/recipes.casings.js new file mode 100644 index 000000000..08dcf5c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.casings.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGCasingRecipes(event) { + + event.recipes.gtceu.assembler('steel_machine_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)) + .itemOutputs('gtceu:steel_machine_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Railgun + global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { + const multiplier = index + 1 + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) + ) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) + .circuit(4) + .duration(400) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), + ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) + .inputFluids(Fluid.of('gtceu:epoxy', 144)) + .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) + .circuit(7) + .duration(600) + .EUt(GTValues.VA[GTValues.MV]) + }) + + event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') + .itemInputs( + '2x #forge:plates/desh', + 'gtceu:mv_voltage_coil', + '5x tfg:dry_ice', + 'gtceu:nonconducting_casing' + ) + .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) + .itemOutputs('6x tfg:electromagnetic_accelerator') + .circuit(4) + .duration(800) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) + ) + .inputFluids(Fluid.of('gtceu:silicon', 72)) + .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') + .circuit(6) + .duration(20 * (2.5)) + .EUt(GTValues.VH[GTValues.LV]) + + // Solar + event.recipes.gtceu.assembler('basic_solar_casing') + .itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1') + .itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('advanced_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell') + .itemOutputs('8x tfg:casings/machine_casing_green_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('elite_solar_casing') + .itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell') + .itemOutputs('8x tfg:casings/machine_casing_red_solar_panel') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + event.recipes.gtceu.assembler('tfg:reflector_from_lens') + .itemInputs( + '24x #forge:lenses', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 1296)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_inr') + .itemInputs( + '1x gtceu:neutron_reflector', + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .itemOutputs('2x tfg:reflector') + .circuit(9) + .duration(20 * (20)) + .EUt(GTValues.VH[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:reflector_from_certus') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), + ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:silver', 488)) + .itemOutputs('1x tfg:reflector') + .circuit(6) + .dimension('ad_astra:moon') + .duration(20 * (60)) + .EUt(GTValues.VH[GTValues.MV]) + + // Moon + event.recipes.gtceu.assembler('iron_desh_casing') + .itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame') + .itemOutputs('2x tfg:casings/machine_casing_iron_desh') + .circuit(6) + .duration(2.5 * 20) + .EUt(16) + + // Evaporation + event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation') + .itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire') + .inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288)) + .itemOutputs('tfg:casings/machine_casing_stainless_evaporation') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Ostrum Linear Acclerator + event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars') + .itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal') + .inputFluids(Fluid.of('gtceu:polybenzimidazole', 288)) + .itemOutputs('tfg:casings/machine_casing_mars') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('gtceu:atomic_casing') + .itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium') + .inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288)) + .itemOutputs('2x gtceu:atomic_casing') + .circuit(6) + .duration(2.5 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // Vacuum Intake + event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [ + 'USU', + 'WZW', + 'UTU' + ], { + S: '#forge:tools/hammers', + T: '#forge:tools/wrenches', + W: '#forge:rotors/ultimet', + U: 'gtceu:ultimet_normal_item_pipe', + Z: 'gtceu:inert_machine_casing' + }).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake') + + event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake') + .itemInputs( + '2x #forge:rotors/ultimet', + '4x gtceu:ultimet_normal_item_pipe', + '1x gtceu:inert_machine_casing') + .itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake') + .duration(50) + .EUt(GTValues.VH[GTValues.LV]) + .circuit(2) + + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.components.js b/kubejs/server_scripts/tfg/machines/recipes.components.js new file mode 100644 index 000000000..5f9746144 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.components.js @@ -0,0 +1,254 @@ +"use strict"; + +function registerTFGElectronicComponentsRecipes(event) { + + // Electron tubes + event.shaped('1x create:electron_tube', [ + 'FAG', + 'BCB', + 'DED' + ], { + A: 'gtceu:glass_tube', + B: '#forge:bolts/steel', + C: 'gtceu:wood_plate', + D: 'gtceu:red_alloy_single_wire', + E: '#forge:plates/wrought_iron', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube') + + event.recipes.createSequencedAssembly([ + '2x create:electron_tube', + ], 'gtceu:wood_plate', [ + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']), + event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']), + ]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube') + + event.recipes.gtceu.assembler('create:electron_tube') + .itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('2x create:electron_tube') + .duration(50) + .EUt(7) + .circuit(14) + + event.shaped('4x create:electron_tube', [ + 'FAG', + 'DCD' + ], { + A: 'gtceu:glass_tube', + C: 'gtceu:plastic_circuit_board', + D: 'gtceu:red_alloy_single_wire', + F: '#forge:tools/screwdrivers', + G: '#forge:tools/wire_cutters' + }).id('tfg:create/shaped/electron_tube2') + + event.recipes.gtceu.assembler('create:electron_tube2') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + event.shaped('4x create:electron_tube', [ + ' A ', + ' B ', + ' C ' + ], { + A: '#forge:tools/screwdrivers', + B: 'gtceu:nand_chip', + C: 'gtceu:plastic_circuit_board' + }).id('tfg:create/shaped/electron_tube3') + + event.recipes.gtceu.assembler('create:electron_tube3') + .itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip') + .itemOutputs('4x create:electron_tube') + .duration(50) + .EUt(7) + + // Vacuum Tubes + event.remove({ id: 'gtceu:shaped/vacuum_tube' }) + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board') + + event.recipes.createSequencedAssembly([ + 'gtceu:vacuum_tube', + ], 'gtceu:resin_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']), + event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']), + event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 }) + ]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube') + + // ULV Coil + event.recipes.createSequencedAssembly([ + 'gtceu:ulv_voltage_coil', + ], 'gtceu:magnetic_iron_rod', [ + event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead']) + ]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil') + + // LV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:basic_electronic_circuit', + ], 'gtceu:resin_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']), + event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]), + event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit') + + // MV basic circuit + event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' }) + + event.recipes.createSequencedAssembly([ + 'gtceu:good_electronic_circuit', + ], 'gtceu:phenolic_printed_circuit_board', [ + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']), + event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']), + ]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit') + + // Vitrified Pearl + event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), + C: '#gtceu:circuits/mv', + D: 'tfg:vitrified_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') + + event.recipes.gtceu.assembler('field_generator_mv') + .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') + .itemOutputs('gtceu:mv_field_generator') + .duration(100) + .EUt(30) + + // Cryo Fluix Pearl + event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl') + + event.recipes.gtceu.shaped('gtceu:hv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate, 1), + B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1), + C: '#gtceu:circuits/hv', + D: 'tfg:cryo_fluix_pearl' + }).addMaterialInfo().id('gtceu:shaped/field_generator_hv') + + // Change recipes to want EV circuit instead of IV + event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev') + + // Nano wafer + event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' }) + event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' }) + + event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer') + .inputFluids(Fluid.of('gtceu:tritiated_water', 576)) + .itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers') + .itemOutputs('gtceu:nano_cpu_wafer') + .duration(20*60) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Change components of IV mainframe to nano chip + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'}) + event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'}) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 40) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:tin', 576)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy') + .itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire') + .inputFluids(Fluid.of('gtceu:soldering_alloy', 288)) + .itemOutputs('gtceu:micro_processor_mainframe') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.HV]) + .cleanroom(CleanroomType.CLEANROOM) + + // Quantum Eye + event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye') + + event.recipes.gtceu.shaped('gtceu:ev_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1), + C: '#gtceu:circuits/ev', + D: 'gtceu:quantum_eye' + }).addMaterialInfo().id('gtceu:shaped/field_generator_ev') + + event.remove({ id: 'gtceu:chemical_bath/quantum_eye' }) + event.recipes.gtceu.chemical_bath('tfg:quantum_eye') + .itemInputs('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('gtceu:radon', 250)) + .itemOutputs('gtceu:quantum_eye') + .duration(20 * 24) + .EUt(GTValues.VA[GTValues.HV]) + + // Nether Star + event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star') + + event.recipes.gtceu.shaped('gtceu:iv_field_generator', [ + 'ABA', + 'CDC', + 'ABA' + ], { + A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide, 1), + B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1), + C: '#gtceu:circuits/iv', + D: 'minecraft:nether_star' + }).addMaterialInfo().id('gtceu:shaped/field_generator_iv') + + 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') + // TODO: change to something else with venus + .inputFluids(Fluid.of('gtceu:neon', 1000)) + .duration(700) + .EUt(2720) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js new file mode 100644 index 000000000..84162e695 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.ender_pearls.js @@ -0,0 +1,61 @@ +"use strict"; + +function registerTFGEnderPearlRecipes(event) { + event.recipes.gtceu.chemical_reactor('kaolinite') + .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('kaolinite_ruby') + .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') + .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) + .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') + .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') + .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemOutputs('tfg:vitrified_pearl') + .chancedOutput('gtceu:ash_dust', 2500, 0) + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') + .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') + .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') + .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') + .itemOutputs('3x tfg:vitrified_pearl') + .chancedOutput('#forge:dusts/dark_ash', 2500, 0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.macerator('vitrified_ender_pearl') + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('#forge:dusts/vitrified_pearl') + .duration(40) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.molds.js b/kubejs/server_scripts/tfg/machines/recipes.molds.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.molds.js rename to kubejs/server_scripts/tfg/machines/recipes.molds.js diff --git a/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js new file mode 100644 index 000000000..1b54c719c --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.multiblocks.js @@ -0,0 +1,177 @@ +"use strict"; + +function registerTFGMultiblockRecipes(event) { + + // Multi-Smelter + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace') + + event.shaped('gtceu:multi_smelter', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/hv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:copper_single_cable' + }).id('gtceu:shaped/multi_furnace2') + + // Electric Blast Furnace + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:hp_steam_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace') + + event.shaped('gtceu:electric_blast_furnace', [ + 'AAA', + 'BCB', + 'DBD' + ], { + A: 'gtceu:lv_electric_furnace', + B: '#gtceu:circuits/lv', + C: 'gtceu:heatproof_machine_casing', + D: 'gtceu:tin_single_cable' + }).id('gtceu:shaped/electric_blast_furnace2') + + // TFG customs + event.shaped('tfg:electric_greenhouse', [ + 'ABA', + 'CDC', + 'BCB' + ], { + A: '#gtceu:circuits/mv', + B: '#forge:single_cables/copper', + C: 'tfc:compost', + D: 'gtceu:steel_machine_casing' + }).id('tfg:shaped/electric_greenhouse') + + event.shaped('gtceu:steam_bloomery', [ + 'CEC', + 'DAD', + 'CBC' + ], { + A: 'tfc:bloomery', + B: '#forge:frames/bronze', + C: '#forge:rods/black_steel', + D: '#forge:screws/wrought_iron', + E: '#forge:tools/wrenches' + }) + + event.shaped('tfg:ostrum_linear_accelerator', [ + 'USU', + 'WZW', + 'PTP' + ], { + S: 'tfg:casings/machine_casing_vacuum_engine_intake', + Z: 'gtceu:iv_machine_hull', + W: '#gtceu:circuits/iv', + U: '#forge:double_plates/stellite_100', + T: '#forge:single_cables/platinum', + P: 'gtceu:iv_electric_pump' + } + ).id('tfg:shaped/ostrum_linear_accelerator') + + event.recipes.gtceu.assembler('tfg:ostrum_harvester') + .itemInputs( + '1x gtceu:ev_machine_hull', + '4x #gtceu:circuits/ev', + '4x gtceu:ev_electric_motor', + '4x #forge:rotors/black_steel', + '4x gtceu:ev_electric_pump', + '4x #forge:gears/desh') + .itemOutputs('gtceu:ostrum_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.assembler('tfg:moon_dust_harvester') + .itemInputs( + '1x gtceu:hv_machine_hull', + '4x #gtceu:circuits/hv', + '4x gtceu:hv_electric_motor', + '4x #forge:rotors/titanium', + '4x gtceu:hv_electric_pump', + '4x #forge:gears/rocket_alloy_t1') + .itemOutputs('gtceu:moon_dust_harvester') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + .circuit(2) + + event.recipes.gtceu.shaped('tfg:evaporation_tower', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: '#gtceu:circuits/iv', + W: 'gtceu:ev_electric_pump', + U: '#forge:double_wires/nichrome', + Z: 'gtceu:ev_machine_hull' + }).addMaterialInfo().id('tfg:shaped/evaporation_tower') + + event.shaped('deafission:fission_reactor_mk1', [ + 'TUT', + 'WZW', + 'TUT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:hv_field_generator', + Z: 'gtceu:ev_machine_hull' + } + ).id('tfg:shaped/fission_reactor_mk1') + + event.shaped('gtceu:nuclear_fuel_factory', [ + 'TUT', + 'WZW', + 'TBT' + ], { + T: 'gtceu:atomic_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_emitter', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_robot_arm' + } + ).id('tfg:shaped/nuclear_fuel_factory') + + event.shaped('gtceu:heat_exchanger', [ + 'TUT', + 'WZW', + 'GBG' + ], { + T: 'gtceu:high_temperature_smelting_casing', + W: '#gtceu:circuits/ev', + U: 'gtceu:ev_sensor', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ev_fluid_regulator', + G: '#forge:gears/ostrum_iodide' + } + ).id('tfg:shaped/heat_exchanger') + + event.shaped('tfg:nuclear_turbine', [ + 'CTC', + 'TZT', + 'BTB' + ], { + T: '#forge:gears/magnalium', + Z: 'gtceu:ev_machine_hull', + B: 'gtceu:ultimet_large_item_pipe', + C: '#gtceu:circuits/ev' + } + ).id('tfg:shaped/nuclear_turbine') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js new file mode 100644 index 000000000..c9df6f6f2 --- /dev/null +++ b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js @@ -0,0 +1,38 @@ +"use strict"; + +function registerTFGSteamBloomeryRecipes(event) { + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') + .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke') + .itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + forEachMaterial(material => { + + const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY) + if (tfcProperty === null) + return; + + const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() + if (outputMaterial === GTMaterials.Iron) { + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') + .itemOutputs('tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + + event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`) + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel') + .itemOutputs('2x tfc:raw_iron_bloom') + .duration(2400) + .EUt(2) + } + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/events.mars.js b/kubejs/server_scripts/tfg/mars/events.sandstorm.js similarity index 100% rename from kubejs/server_scripts/tfg/events.mars.js rename to kubejs/server_scripts/tfg/mars/events.sandstorm.js diff --git a/kubejs/server_scripts/tfg/mars/recipes.iodine.js b/kubejs/server_scripts/tfg/mars/recipes.iodine.js new file mode 100644 index 000000000..90a8fc031 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.iodine.js @@ -0,0 +1,74 @@ +"use strict"; + +function registerTFGMarsIodineRecipes(event) { + + // This file is specifically for the crappy mars-based iodine recipe chain. + // The "proper" venus one is elsewhere + + event.recipes.gtceu.autoclave('tfg:crimsene') + .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) + .itemOutputs('#forge:gems/crimsene') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.autoclave('tfg:warpane') + .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) + .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:gems/warpane') + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.macerator('tfg:crimsene') + .itemInputs('#forge:gems/crimsene') + .itemOutputs('#forge:dusts/crimsene') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:warpane') + .itemInputs('#forge:gems/warpane') + .itemOutputs('#forge:dusts/warpane') + .duration(20 * 5) + .EUt(2) + + event.recipes.gtceu.mixer('tfg:mars_sap') + .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) + .itemOutputs('#forge:dusts/mycelienzene') + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') + .itemInputs('#forge:dusts/mycelienzene') + .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) + .blastFurnaceTemp(100) + .duration(30 * 10) + + event.recipes.gtceu.centrifuge('mars_sap_separation') + .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) + .outputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:krypton', 1000), + Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') + .inputFluids( + Fluid.of('tfg:iodomethane', 1000), + Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('#forge:dusts/iodine') + .outputFluids(Fluid.of('gtceu:methane', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') + .inputFluids( + Fluid.of('tfg:trideuteroiodomethane', 1000), + Fluid.of('gtceu:oxygen', 1500)) + .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') + .outputFluids(Fluid.of('tfg:heavy_water', 1500)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.MV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.mars.js b/kubejs/server_scripts/tfg/mars/recipes.mars.js new file mode 100644 index 000000000..844bbab19 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.mars.js @@ -0,0 +1,231 @@ +"use strict"; + +function registerTFGMarsRecipes(event) { + + // Mars air + + event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 4000)) + .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') + .inputFluids(Fluid.of('tfg:mars_air', 10000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) + .duration(1600) + .EUt(GTValues.VA[GTValues.MV]) + + // TODO: move neon and xenon somewhere else + event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') + .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) + .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) + .outputFluids(Fluid.of('gtceu:argon', 5000)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .outputFluids(Fluid.of('gtceu:krypton', 1000)) + .outputFluids(Fluid.of('gtceu:neon', 1000)) + .outputFluids(Fluid.of('gtceu:xenon', 1000)) + .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) + .disableDistilleryRecipes(true) + .duration(2000) + .EUt(GTValues.VA[GTValues.EV]) + + //#region Mars Water + + event.recipes.gtceu.centrifuge('mars_heavy_water') + .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:heavy_water', 500)) + .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) + .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') + .duration(20*9) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('mars_semiheavy_water') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) + .outputFluids(Fluid.of('minecraft:water', 250)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.MV]) + + // Mars plants + + event.recipes.gtceu.mixer('tfg:bio_glowstone') + .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') + .outputFluids(Fluid.of('gtceu:biomass', 100)) + .itemOutputs('2x minecraft:glowstone_dust') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.EV]) + .dimension('ad_astra:mars') + + // Ad astra woods + + global.AD_ASTRA_WOOD.forEach(wood => { + woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button) + }) + + event.shaped('16x ad_astra:aeronos_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/aeronos', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/aeronos_ladder') + + event.shaped('16x ad_astra:strophar_ladder', [ + 'A A', + 'ABA', + 'A A' + ], { + A: 'tfg:wood/lumber/strophar', + B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1), + }).id('tfg:shaped/strophar_ladder') + + + generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8, + '16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8, + '8x species:alphacene_moss_block', GTValues.VA[GTValues.MV]) + + // Beneath woods + + generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8, + '32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV]) + generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8, + '32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV]) + + // don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those + woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson', + 'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null, + 'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate', + 'beneath:wood/planks/crimson_button') + + event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/crimson') + .itemOutputs('beneath:wood/stripped_wood/crimson') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/crimson' }], + results: [{ item: 'beneath:wood/stripped_wood/crimson' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_crimson_wood`) + + woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped', + 'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null, + 'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate', + 'beneath:wood/planks/warped_button') + + event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`) + .itemInputs('beneath:wood/wood/warped') + .itemOutputs('beneath:wood/stripped_wood/warped') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: 'beneath:wood/wood/warped' }], + results: [{ item: 'beneath:wood/stripped_wood/warped' }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_warped_wood`) + + // Alphacene + + generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000, + '64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8, + '8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV]) + + //Large Nest + event.shaped('tfg:large_nest_box', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:crimson_thatch', + B: 'beneath:crimson_straw' + }).id('tfg:shaped_large_nest_crimson') + + event.shaped('tfg:large_nest_box_warped', + [ + 'B B', + 'ABA', + 'AAA' + ], { + A: 'beneath:warped_thatch', + B: 'beneath:warped_straw' + }).id('tfg:shaped_large_nest_warped') + + // Animal stuff + + event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg') + event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg') + + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv') + .itemInputs('species:cracked_wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full') + .itemInputs('tfg:wraptor_egg') + .itemOutputs('4x tfg:wraptor_sugar') + .duration(200) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.extractor('tfg:juice_sniffer_egg') + .itemInputs('tfg:sniffer_egg') + .outputFluids(Fluid.of('firmalife:cream', 1000)) + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.tfc.loom( + '8x ad_astra:glacian_fur', + '8x tfg:glacian_wool', + 8, + 'ad_astra:block/glacian_fur' + ) + + event.recipes.gtceu.assembler('tfg:assembler/glacian_fur') + .itemInputs('tfg:glacian_wool') + .circuit(10) + .itemOutputs('ad_astra:glacian_fur') + .duration(100) + .EUt(4) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('8x tfc:wool_yarn', [ + 'tfc:spindle', + 'tfg:glacian_wool' + ]).id('tfg:shapeless/glacian_wool_to_yarn')) + + event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') + .itemInputs('tfg:glacian_wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + event.shaped('minecraft:pink_bed', [ + 'AAA', + 'BBB' + ], { + A: 'ad_astra:glacian_fur', + B: '#tfc:lumber' + }).id('tfg:shaped/glacian_bed') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.ostrum.js b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js new file mode 100644 index 000000000..7aa0cdffd --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/recipes.ostrum.js @@ -0,0 +1,140 @@ +"use strict"; + +function registerTFGMarsOstrumRecipes(event) { + + var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); + var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + // Ostrum Harvester + + event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) + .perTick(true) + .inputFluids('gtceu:drilling_fluid 4') + .perTick(false) + .dimension('ad_astra:mars') + .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) + .duration(20 * 30) + .EUt(GTValues.VA[GTValues.LV]); + + // Ostrum Linear Accelerator Recipes + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') + .inputFluids('gtceu:lightweight_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('tfg:heavy_water', 1000)) + .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) + .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') + .inputFluids('gtceu:ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:radon', 100)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') + .inputFluids('gtceu:dense_ostrum_vapor 1000') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]); + + // Ostrum Linear Accelerator Recipes + + // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft + /* + event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') + .inputFluids('gtceu:residual_radioactive_concoction 100') + .itemInputs('32x #forge:dusts/ostrum') + .chancedFluidOutputLogic($ChanceLogic.XOR) + .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) + .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) + .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) + .dimension('ad_astra:mars') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.EV]); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .circuit(1); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) + //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(2); + + event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') + .perTick(true) + .inputFluids('gtceu:residual_radioactive_concoction 1') + .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) + .perTick(false) + .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) + .inputFluids(Fluid.of('gtceu:radon', 10)) + .inputFluids(Fluid.of('gtceu:krypton', 10)) + .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) + .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) + .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) + .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) + .dimension('ad_astra:mars') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.IV]) + .circuit(3); + */ + //#endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.moon.js b/kubejs/server_scripts/tfg/moon/recipes.moon.js new file mode 100644 index 000000000..2a6ca6a5c --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.moon.js @@ -0,0 +1,27 @@ +"use strict"; + +function registerTFGMoonRecipes(event) { + + // Cryo Fluix + event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .inputFluids(Fluid.of('tfg:fluix', 144)) + .outputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .duration(30 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fluid_heater('tfg:cryo_fluix') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .outputFluids(Fluid.of('tfg:fluix', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) + .itemInputs('tfg:vitrified_pearl') + .itemOutputs('tfg:cryo_fluix_pearl') + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + .cleanroom(CleanroomType.CLEANROOM) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.plants.js b/kubejs/server_scripts/tfg/moon/recipes.plants.js new file mode 100644 index 000000000..daaf47235 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.plants.js @@ -0,0 +1,90 @@ +"use strict"; + +function registerTFGMoonPlantRecipes(event) { + + // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, + // and we're using helium-3 as the fertiliser + + // Chorus + event.recipes.gtceu.greenhouse('tfg:chorus') + .notConsumable('8x tfg:lunar_chorus_flower') + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:chorus_helium') + .notConsumable('8x tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('64x minecraft:chorus_fruit') + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) + .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) + .duration(12000) // 10 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Replace the built-in greg one to add a circuit + event.recipes.gtceu.fermenter('fermented_biomass') + .inputFluids(Fluid.of('gtceu:biomass', 100)) + .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) + .circuit(1) + .duration(150) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:chorus') + .itemInputs('minecraft:chorus_fruit') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.fermenter('tfg:chorus_flower') + .itemInputs('tfg:lunar_chorus_flower') + .inputFluids(Fluid.of('gtceu:biomass', 20)) + .chancedOutput('ae2:ender_dust', 100, 0) + .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .circuit(2) + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + // Lightblooms + event.recipes.gtceu.greenhouse('tfg:lightbloom') + .notConsumable('8x minecraft:twisting_vines') + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) + .chancedOutput('minecraft:verdant_froglight', 2500, 0) + .chancedOutput('minecraft:ochre_froglight', 2500, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') + .notConsumable('8x minecraft:twisting_vines') + .inputFluids(Fluid.of('gtceu:helium_3', 2000)) + .itemOutputs('16x minecraft:twisting_vines') + .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) + .chancedOutput('minecraft:verdant_froglight', 3500, 0) + .chancedOutput('minecraft:ochre_froglight', 3500, 0) + .duration(12000) // 30 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.LV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.brewery('biomass_from_twisting_vines') + .itemInputs('minecraft:twisting_vines') + .inputFluids("#tfg:clean_water 20") + .outputFluids(Fluid.of('gtceu:biomass', 20)) + .duration(50) + .EUt(3) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.regolith.js b/kubejs/server_scripts/tfg/moon/recipes.regolith.js new file mode 100644 index 000000000..1d43f7489 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/recipes.regolith.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGMoonRegolithRecipes(event) { + + //#region Moon Harvester + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') + .biome('tfg:moon/lunar_asurine_dense') + .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(1) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') + .biome('tfg:moon/lunar_chorus_dense') + .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(2) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') + .biome('tfg:moon/lunar_corals_dense') + .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(3) + + event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') + .biome('tfg:moon/lunar_lights_dense') + .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) + .duration(20 * 80) + .EUt(GTValues.VA[GTValues.LV]) + .circuit(4) + + //#endregion + + //#region Regolith Vapor Processing + + event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') + .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') + .itemOutputs('#forge:dusts/regolith_mush') + .dimension('ad_astra:moon') + .duration(20 * 60) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') + .itemInputs('#forge:dusts/regolith_mush') + .inputFluids('gtceu:nitrogen 1000') + .itemOutputs('#forge:dusts/silicon_dioxide') + .outputFluids('gtceu:regolith_vapor 1000') + .dimension('ad_astra:moon') + .duration(20 * 28) + .EUt(GTValues.VHA[GTValues.LV]) + + //#endregion + + //#region Making Dusty Ores + + const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') + + event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') + .itemInputs('#forge:dusts/certus_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_certus_quartz') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') + .itemInputs('#forge:dusts/goethe_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_goethite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') + .itemInputs('#forge:dusts/bright_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) + .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') + .itemInputs('#forge:dusts/cassiterite_regolith') + .inputFluids('gtceu:regolith_vapor 100') + .itemOutputs('gtceu:dusty_raw_cassiterite') + .dimension('ad_astra:moon') + .duration(20 * 68) + .EUt(GTValues.VHA[GTValues.ULV]) + + //#endregion + + //#region Basic dusty ore centrifuging + + // These have special recipes + const DUSTY_ORE_EXCEPTIONS = [ + GTMaterials.Goethite, + GTMaterials.Cassiterite, + GTMaterials.Bauxite + ] + + // Otherwise everything else just centrifuges into its dust version + forEachMaterial(material => { + if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) + return; + + const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) + const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) + + if (dustyOre !== null && dust !== null) { + event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) + .itemInputs(dustyOre) + .itemOutputs(dust) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + } + }) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') + .itemInputs('#forge:dusty_raw_materials/goethite') + .chancedItemOutputLogic($ChanceLogic.XOR) + .chancedOutput('#forge:dusts/iron', 5000, 0) + .chancedOutput('#forge:dusts/copper', 5000, 0) + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') + .itemInputs('#forge:dusty_raw_materials/bauxite') + .itemOutputs('#forge:dusts/aluminium') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') + .itemInputs('#forge:dusty_raw_materials/cassiterite') + .itemOutputs('#forge:dusts/tin') + .duration(20 * 45) + .EUt(GTValues.VA[GTValues.MV]) + // #endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.alabaster.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js similarity index 98% rename from kubejs/server_scripts/tfc/recipes.alabaster.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js index 3fe1055cb..9c65df063 100644 --- a/kubejs/server_scripts/tfc/recipes.alabaster.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.alabaster.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCAlabasterRecipes(event) { +function registerTFGAlabasterRecipes(event) { event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('4x tfc:alabaster_brick', ['#forge:raw_materials/gypsum', '#tfc:chisels'])) .id('tfc:crafting/alabaster_brick/raw_gypsum') diff --git a/kubejs/server_scripts/tfg/recipes.collapse.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js similarity index 97% rename from kubejs/server_scripts/tfg/recipes.collapse.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js index a61d69a52..2c39a3f07 100644 --- a/kubejs/server_scripts/tfg/recipes.collapse.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.collapse.js @@ -122,6 +122,10 @@ function registerTFGCollapseRecipes(event) { // #endregion // #region Other + event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs') + event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs') + event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls') + event.recipes.tfc.collapse('minecraft:cobblestone', 'minecraft:stone') event.recipes.tfc.landslide('minecraft:cobblestone', 'minecraft:cobblestone') event.recipes.tfc.landslide('minecraft:mossy_cobblestone', 'minecraft:mossy_cobblestone') diff --git a/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js new file mode 100644 index 000000000..b305c5209 --- /dev/null +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.concrete.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGConcreteRecipes(event) { + + const recipe = event.recipes.gtceu.mixer('concrete_from_marble') + .itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust') + .inputFluids("#tfg:clean_water 1000") + .outputFluids('gtceu:concrete 1152') + .duration(40) + .EUt(16) + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'], + "#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay') + + generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'], + "#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite') + + //GT light/dark concrete recipe fix + + event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' }) + event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' }) + + event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete') + .inputFluids(Fluid.of('gtceu:concrete', 144)) + .notConsumable('1x gtceu:block_casting_mold') + .itemOutputs('1x gtceu:light_concrete') + .duration(98) + .EUt(7) + + event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete') + .inputFluids(Fluid.of('tfc:black_dye', 18)) + .itemInputs('1x gtceu:light_concrete') + .itemOutputs('1x gtceu:dark_concrete') + .duration(20) + .EUt(7) + + event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete') + .itemInputs('1x gtceu:light_concrete') + .outputFluids(Fluid.of('gtceu:concrete', 144)) + .duration(98) + .EUt(30) + + event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks') + event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete') + event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile') + event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile') + event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a') + event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b') + event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks') + event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks') + + event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks') + event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete') + event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile') + event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile') + event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a') + event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b') + event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks') + event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks') + + // Handcrafted artisanal concrete + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500)) + .outputFluid(Fluid.of('gtceu:concrete', 500)) + + event.recipes.firmalife.mixing_bowl() + .ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000)) + .outputFluid(Fluid.of('gtceu:concrete', 1000)) + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 144)) + .inputItem('gtceu:wood_frame') + .outputItem('gtceu:light_concrete') + .id('tfg:barrel/light_concrete') + + event.recipes.tfc.barrel_sealed(1000) + .inputFluid(Fluid.of('gtceu:concrete', 96)) + .inputItem('tfg:rebar_support') + .outputItem('tfg:reinforced_light_concrete_support') + .id('tfg:barrel/reinforced_light_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('gtceu:light_concrete') + .inputFluid(Fluid.of('tfc:black_dye', 18)) + .outputItem('gtceu:dark_concrete') + .id('tfg:barrel/dark_concrete') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:dark_concrete_support') + .id('tfg:barrel/dark_concrete_support') + + event.recipes.tfc.barrel_sealed(500) + .inputItem('tfg:reinforced_light_concrete_support') + .inputFluid(Fluid.of('tfc:black_dye', 10)) + .outputItem('tfg:reinforced_dark_concrete_support') + .id('tfg:barrel/reinforced_dark_concrete_support') + + // Titanium concrete + event.recipes.gtceu.assembler('tfg:titanium_concrete') + .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') + .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) + .itemOutputs('tfg:titanium_concrete') + .circuit(2) + .duration(20) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/light_blue') + .itemOutputs('tfg:titanium_concrete_bricks') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/pink') + .itemOutputs('tfg:titanium_concrete_bricks_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/green') + .itemOutputs('tfg:titanium_concrete_bricks_square') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/red') + .itemOutputs('tfg:titanium_concrete_tile') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) + event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') + .itemInputs('tfg:polished_titanium_concrete') + .notConsumable('#forge:lenses/black') + .itemOutputs('tfg:titanium_concrete_tile_small') + .duration(20 * (2.5)) + .EUt(GTValues.VA[GTValues.LV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.dirt.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js similarity index 95% rename from kubejs/server_scripts/tfc/recipes.dirt.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js index 89f2ba194..714706f91 100644 --- a/kubejs/server_scripts/tfc/recipes.dirt.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.dirt.js @@ -1,7 +1,14 @@ // priority: 0 "use strict"; -function registerTFCDirtRecipes(event) { +function registerTFGDirtRecipes(event) { + + // Dirt creation + event.recipes.gtceu.macerator('dirt_from_bio_chaff') + .itemInputs('gtceu:bio_chaff') + .itemOutputs('tfc:dirt/loam') + .duration(300) + .EUt(4) // Loam + Silt -> Silty Loam (Миксер) event.recipes.gtceu.mixer('silty_loam_dirt') diff --git a/kubejs/server_scripts/tfg/recipes.rocks.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js similarity index 98% rename from kubejs/server_scripts/tfg/recipes.rocks.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js index 7851c6e91..fe606f170 100644 --- a/kubejs/server_scripts/tfg/recipes.rocks.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.rocks.js @@ -1238,4 +1238,29 @@ function registerTFGRockRecipes(event) { }) //#endregion Magma Blocks + + //#region GT marble + event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble') + event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble') + event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile') + event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile') + event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a') + event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b') + event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks') + event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks') + //#endregion + + // Blackstone Buttons + removeCutterRecipe(event, 'blackstone_button') + removeCutterRecipe(event, 'blackstone_button_water') + removeCutterRecipe(event, 'blackstone_button_distilled_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water') + removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water') + + event.recipes.gtceu.cutter('tfg:blackstone_button') + .itemInputs('minecraft:polished_blackstone_pressure_plate') + .itemOutputs('6x minecraft:polished_blackstone_button') + .EUt(7) + .duration(100) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.sand.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js similarity index 93% rename from kubejs/server_scripts/tfc/recipes.sand.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js index 2ef29e6a1..6b035dca2 100644 --- a/kubejs/server_scripts/tfc/recipes.sand.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.sand.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCSandRecipes(event) { +function registerTFGSandRecipes(event) { // Нефтеносный -> Желтый песок event.recipes.gtceu.centrifuge('oilsands_ore_separation') @@ -210,4 +210,25 @@ function registerTFCSandRecipes(event) { event.recipes.greate.pressing('tfc:sand/pink', '#tfc:pink_gravel') .recipeTier(1) .id(`greate:pressing/pink_gravel_to_sand`) + + // Quartz sand + event.shaped('gtceu:quartz_sand_dust', [ + 'A', + 'B' + ], { + A: '#forge:sand', + B: '#forge:tools/mortars' + }).id('gtceu:shaped/quartz_sand') + + event.recipes.gtceu.macerator('quartz_sand_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('gtceu:quartz_sand_dust') + .duration(30) + .EUt(2) + + event.recipes.gtceu.electrolyzer('sand_electrolysis') + .itemInputs('8x #forge:sand') + .itemOutputs('gtceu:silicon_dioxide_dust') + .duration(500) + .EUt(25) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.stone_dusts.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js similarity index 95% rename from kubejs/server_scripts/tfg/recipes.stone_dusts.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js index 2ce4ca2eb..f805affa3 100644 --- a/kubejs/server_scripts/tfg/recipes.stone_dusts.js +++ b/kubejs/server_scripts/tfg/natural_blocks/recipes.stone_dusts.js @@ -6,6 +6,24 @@ */ function registerTFGStoneDustRecipes(event) { + event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay') + .itemInputs('13x #forge:dusts/clay') + .itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon') + .outputFluids(Fluid.of('minecraft:water', 6000)) + .duration(GTMaterials.Clay.getMass() * 13) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation') + .itemInputs('gtceu:stone_dust') + .chancedOutput('#forge:small_dusts/quartzite', 2500, 0) + .chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0) + .chancedOutput('#forge:small_dusts/marble', 2222, 0) + .chancedOutput('#forge:small_dusts/biotite', 1111, 0) + .chancedOutput('#forge:small_dusts/metal_mixture', 825, 80) + .chancedOutput('#forge:small_dusts/sodalite', 550, 55) + .duration(12 * 20) + .EUt(GTValues.VA[GTValues.HV]) + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_blackstone' }) event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__diorite') diff --git a/kubejs/server_scripts/tfc/recipes.stone.js b/kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js similarity index 100% rename from kubejs/server_scripts/tfc/recipes.stone.js rename to kubejs/server_scripts/tfg/natural_blocks/recipes.tfc_stone.js diff --git a/kubejs/server_scripts/tfg/tags.stones.js b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js similarity index 100% rename from kubejs/server_scripts/tfg/tags.stones.js rename to kubejs/server_scripts/tfg/natural_blocks/tags.stones.js diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js b/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js deleted file mode 100644 index 779b382ad..000000000 --- a/kubejs/server_scripts/tfg/nuclear/recipes.ostrum.js +++ /dev/null @@ -1,83 +0,0 @@ - // priority: 0 - -function registerTFGNOstrumRecipes(event) { - - var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability"); - var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient"); - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - // Ostrum Linear Accelerator Recipes - - // .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft -/* - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .circuit(1); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10) - //.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(2); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3') - .perTick(true) - .inputFluids('gtceu:residual_radioactive_concoction 1') - .inputFluids(Fluid.of('tfg:semiheavy_water', 1)) - .perTick(false) - .inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000)) - .inputFluids(Fluid.of('gtceu:radon', 10)) - .inputFluids(Fluid.of('gtceu:krypton', 10)) - .inputFluids(Fluid.of('gtceu:tritiated_water', 10)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10) - .itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20) - .input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500)) - .dimension('ad_astra:mars') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.IV]) - .circuit(3); -*/ - //#endregion - -} \ No newline at end of file diff --git a/kubejs/server_scripts/gregtech/loot.js b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js similarity index 99% rename from kubejs/server_scripts/gregtech/loot.js rename to kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js index 70f787b9c..0d8f49c3d 100644 --- a/kubejs/server_scripts/gregtech/loot.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/loot.ores.js @@ -34,7 +34,7 @@ const STONE_TYPES_TO_COBBLE = { permafrost: 'gtceu:ice_dust' } -const registerGTCEULoots = (event) => { +const registerTFGOreLoots = (event) => { // Have to define these here because normal loot table jsons don't support checking for hammers diff --git a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js similarity index 63% rename from kubejs/server_scripts/gregtech/recipes.tfcmetals.js rename to kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js index dc88c4a57..6700415b1 100644 --- a/kubejs/server_scripts/gregtech/recipes.tfcmetals.js +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.alloys.js @@ -1,10 +1,10 @@ -// priority: 0 +// priority: 0 "use strict"; /** * @param {Internal.RecipesEventJS} event */ -function registerGTCEuTFCMetalsRecipes(event) { +function registerTFGAlloyingRecipes(event) { // #region Colored steels @@ -93,7 +93,40 @@ function registerGTCEuTFCMetalsRecipes(event) { //#endregion - // red alloy, because crucible always makes 4+1=5 + // Rose Gold + Sterling Silver + const copper_types = [ + "#forge:ingots/copper", + "#forge:dusts/copper", + "#forge:ingots/annealed_copper", + "#forge:dusts/annealed_copper" + ]; + const gold_types = [ + "#forge:ingots/gold", + "#forge:dusts/gold" + ]; + const silver_types = [ + "#forge:ingots/silver", + "#forge:dusts/silver" + ]; + + copper_types.forEach(copper_types_array => { + gold_types.forEach(gold_types_array => { + event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`) + .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4)) + .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.LV]) + }); + silver_types.forEach(silver_types_array => { + event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`) + .itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4)) + .itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.LV]) + }); + }); + + // Red alloy, because crucible always makes 4+1=5 event.recipes.gtceu.alloy_blast_smelter('red_alloy') .itemInputs('1x gtceu:copper_dust', '4x minecraft:redstone') @@ -140,4 +173,44 @@ function registerGTCEuTFCMetalsRecipes(event) { .itemOutputs('5x gtceu:red_alloy_ingot') .duration(50) .EUt(16) + + event.remove({ id: 'gtceu:mixer/sterling_silver' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust', + 1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver') + + event.remove({ id: 'gtceu:mixer/rose_gold' }) + generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust', + 3, [], 500, 7, 64, 'gtceu:mixer/rose_gold') + + // Glowstone + event.recipes.gtceu.mixer('gtceu:lv_glowstone') + .itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust') + .itemOutputs('2x minecraft:glowstone_dust') + .circuit(8) + .duration(1200) + .EUt(30) + + event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone') + .itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur') + .outputFluids(Fluid.of('gtceu:glowstone', 288)) + .duration(20 * 60 / 1.3) + .EUt(GTValues.VA[GTValues.LV]) + .blastFurnaceTemp(1064) + .circuit(9) + + // New Alloys + + event.recipes.gtceu.mixer('tfg:ostrum_iodide') + .itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum') + .itemOutputs('3x #forge:dusts/ostrum_iodide') + .duration(20 * 12) + .circuit(1) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite') + .itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust') + .inputFluids(Fluid.of('gtceu:oxygen', 3000)) + .itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.EV]) } diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js new file mode 100644 index 000000000..76f55f6ab --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.bromine.js @@ -0,0 +1,126 @@ +"use strict"; + +function registerTFGBromineRecipes(event) { + + /* + + event.recipes.gtceu.evaporation_tower('evaporation_brine') + .inputFluids(Fluid.of('tfc:salt_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') + .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) + .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) + .duration(20*50) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.fluid_heater('heat_brine') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .duration(20*600) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) + .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) + .duration(20*100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') + .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) + .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) + .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) + .duration(20*10) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_acidification') + .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) + .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:steam', 3000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_chloroination') + .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brine_neutralization') + .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) + .itemInputs('gtceu:potassium_dust') + .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) + .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') + .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) + .outputFluids(Fluid.of('tfc:salt_water'), 1000) + .duration(20*3) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('brine_filtration') + .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) + .inputFluids(Fluid.of('gtceu:chlorine', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) + .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') + .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) + .inputFluids(Fluid.of('minecraft:water', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .outputFluids(Fluid.of('minecraft:water', 2000)) + .duration(20*15) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') + .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) + .inputFluids(Fluid.of('gtceu:steam', 1000)) + .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) + .duration(20*5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) + .outputFluids(Fluid.of('gtceu:chlorine', 50)) + .duration(20*5) + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillery('bromine_distillation_to_bromine') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) + .outputFluids(Fluid.of('gtceu:bromine', 40)) + .duration(20*2) + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.distillation_tower('bromine_distillation') + .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) + .outputFluids(Fluid.of('gtceu:chlorine', 500)) + .outputFluids(Fluid.of('gtceu:bromine', 1000)) + .duration(20*25) + .EUt(GTValues.VA[GTValues.HV]) + + */ + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js new file mode 100644 index 000000000..aef120457 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.quartzes.js @@ -0,0 +1,132 @@ +"use strict"; + +function registerTFGQuartzRecipes(event) { + + //#region Rose Quartz fabrication + decomposition + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' }) + event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' }) + + generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing') + generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing') + + event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice") + .itemInputs('#forge:dusts/rose_quartz') + .inputFluids(Fluid.of("gtceu:ice", 144)) + .itemOutputs("#forge:gems/rose_quartz") + .duration(2000) + .EUt(120) + + event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust') + .itemInputs('9x gtceu:rose_quartz_dust') + .itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone') + .duration(7 * 20) + .EUt(60) + //#endregion + + //#region Glass + + event.recipes.gtceu.arc_furnace('glass_from_sand') + .itemInputs('#forge:sand') + .itemOutputs('2x minecraft:glass') + .duration(20) + .EUt(30) + + global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => { + event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .notConsumable('gtceu:bottle_casting_mold') + .itemOutputs(element.output) + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + }) + + // Lamp Glass + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`) + .itemInputs('#tfc:glass_batches') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`) + .itemInputs('#forge:dusts/glass') + .notConsumable('#tfg:unfinished_lamps') + .itemOutputs('tfc:lamp_glass') + .duration(100) + .EUt(2) + + // Empty Jar + event.recipes.gtceu.alloy_smelter('tfc:jar_alloying') + .itemInputs('#tfc:glass_batches_tier_2') + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + .category(GTRecipeCategories.INGOT_MOLDING) + + event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification') + .inputFluids(Fluid.of('gtceu:glass', 144)) + .notConsumable('gtceu:cylinder_casting_mold') + .itemOutputs('tfc:empty_jar') + .duration(100) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:jar_extraction') + .itemInputs('#tfc:jars') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.extractor('tfc:glass_batch_extraction') + .itemInputs('#tfc:glass_batches') + .outputFluids(Fluid.of('gtceu:glass', 144)) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe('tfc:lens') + .itemInputs('#forge:glass') + .itemOutputs('tfc:lens') + .duration(100) + .EUt(16) + + // Add all glass colors to macerator/hammer + removeMaceratorRecipe(event, 'macerate_glass'); + event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass") + .itemInputs( + "#forge:glass" + ) + .itemOutputs("gtceu:glass_dust") + .duration(20) + .EUt(2); + + removeMaceratorRecipe(event, '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" + ); + + + event.recipes.gtceu.alloy_smelter('glass_bottle') + .itemInputs('#forge:dusts/glass') + .itemOutputs('tfc:silica_glass_bottle') + .notConsumable('gtceu:bottle_casting_mold') + .EUt(2) + .duration(20 * 5) + .category(GTRecipeCategories.INGOT_MOLDING) + + + // Glass Tube + event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch']) + .id('tfg:gtceu/glassworking/glass_tube') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js new file mode 100644 index 000000000..10511c843 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.tungsten.js @@ -0,0 +1,86 @@ +"use strict"; + +function registerTFGTungstenRecipes(event) { + + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' }) + event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' }) + event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' }) + + // Transform Tungstate and Scheelite + + event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:scheelite_dust', 6)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:calcite_dust', 5)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate') + .itemInputs(Item.of('gtceu:tungstate_dust', 7)) + .itemInputs(Item.of('gtceu:soda_ash_dust', 6)) + .itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:lithium_dust', 2)) + .itemOutputs(Item.of('gtceu:carbon_dust', 1)) + .outputFluids(Fluid.of('gtceu:oxygen', 3000)) + .duration(20*12) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemInputs(Item.of('tfg:sodium_tungstate_dust', 7)) + .itemOutputs(Item.of('gtceu:salt_dust', 4)) + .itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .duration(20*24) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate') + .inputFluids(Fluid.of('gtceu:ammonia', 10000)) + .itemInputs(Item.of('gtceu:tungstic_acid_dust', 7)) + .itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .duration(20*16) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt') + .itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1)) + .itemOutputs(Item.of('tfg:apt_gem', 1)) + .outputFluids(Fluid.of('gtceu:hydrogen', 500)) + .duration(20*48) + .EUt(GTValues.VHA[GTValues.HV]) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*36) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen') + .itemInputs(Item.of('tfg:apt_gem', 1)) + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .outputFluids(Fluid.of('gtceu:ammonia', 10000)) + .duration(20*18) + .EUt(GTValues.VA[GTValues.EV]) + .circuit(2) + + event.recipes.gtceu.arc_furnace('tfg:tungsten_apt') + .itemInputs(Item.of('tfg:tungsten_oxide_dust', 1)) + .inputFluids(Fluid.of('gtceu:hydrogen', 3000)) + .itemOutputs(Item.of('gtceu:tungsten_dust', 1)) + .duration(20*2.8) + .EUt(GTValues.VA[GTValues.EV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js new file mode 100644 index 000000000..e1b8dc933 --- /dev/null +++ b/kubejs/server_scripts/tfg/ores_and_materials/recipes.zirconium.js @@ -0,0 +1,61 @@ +// priority: 0 + +function registerTFGZirconiumRecipes(event) { + + // #region Zirconium + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') + .itemInputs('#forge:dusts/silicon') + .inputFluids('gtceu:chlorine 4000') + .outputFluids('tfg:silicon_tetrachloride 1000') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') + .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') + .itemOutputs('#forge:dusts/silicon') + .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') + .duration(5 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') + .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') + .inputFluids('gtceu:chlorine 8000') + .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') + .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') + .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') + .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') + .duration(55 * 20) + .blastFurnaceTemp(4241) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') + .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') + .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') + .itemOutputs('5x #forge:dusts/zirconium_bromide') + .outputFluids('gtceu:carbon_monoxide 2000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') + .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') + .notConsumable('#forge:dusts/carbon') + .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') + .outputFluids('gtceu:bromine 8000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.IV]) + + event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') + .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') + .inputFluids('gtceu:oxygen 6000') + .itemOutputs('5x #forge:dusts/boron_carbide') + .outputFluids('gtceu:carbon_monoxide 6000') + .duration(10 * 20) + .EUt(GTValues.VA[GTValues.HV]) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.components.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/recipes.components.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.components.js diff --git a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js similarity index 77% rename from kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js index 29df43882..a6257a9c3 100644 --- a/kubejs/server_scripts/tfg/nuclear/recipes.nuclear.js +++ b/kubejs/server_scripts/tfg/powergen/nuclear/recipes.nuclear.js @@ -85,28 +85,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Mars Water - - event.recipes.gtceu.centrifuge('mars_heavy_water') - .inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:heavy_water', 500)) - .itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.centrifuge('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('tfg:semiheavy_water', 500)) - .itemOutputs('2x #forge:tiny_dusts/ammonium_chloride') - .duration(20*9) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('mars_semiheavy_water') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000)) - .outputFluids(Fluid.of('minecraft:water', 250)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.MV]) - // Martian Sludge event.recipes.gtceu.chemical_bath('dirty_hexafluorosilicic_acid') @@ -590,129 +568,6 @@ function registerTFGNuclearRecipes(event) { //#endregion - //#region Bromine Line - SCRAP FROM MARS TO VENUS - - /* - - event.recipes.gtceu.evaporation_tower('evaporation_brine') - .inputFluids(Fluid.of('tfc:salt_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.evaporation_tower('evaporation_brine_mars') - .inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000)) - .outputFluids(Fluid.of('gtceu:raw_brine', 1000)) - .duration(20*50) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('heat_brine') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .duration(20*600) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.heat_exchanger('heat_brine_nuclear') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of("gtceu:irradiated_steam", 1000)) - .outputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .outputFluids(Fluid.of("gtceu:dense_steam", 1000)) - .duration(20*100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing') - .inputFluids(Fluid.of("gtceu:raw_brine", 1000)) - .inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_brine', 2000)) - .outputFluids(Fluid.of('gtceu:debrominated_brine', 1000)) - .duration(20*10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_acidification') - .inputFluids(Fluid.of("gtceu:hot_brine", 2000)) - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000)) - .outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:steam', 3000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_chloroination') - .inputFluids(Fluid.of("gtceu:hot_brine", 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brine_neutralization') - .inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000)) - .itemInputs('gtceu:potassium_dust') - .outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000)) - .itemOutputs(Item.of('2x gtceu:rock_salt_dust')) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.centrifuge('debrominated_brine_decomposition') - .inputFluids(Fluid.of('gtceu:debrominated_brine', 2000)) - .outputFluids(Fluid.of('tfc:salt_water'), 1000) - .duration(20*3) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('brine_filtration') - .inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000)) - .inputFluids(Fluid.of('gtceu:chlorine', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000)) - .outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation') - .inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000)) - .inputFluids(Fluid.of('minecraft:water', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .outputFluids(Fluid.of('minecraft:water', 2000)) - .duration(20*15) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration') - .inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000)) - .inputFluids(Fluid.of('gtceu:steam', 1000)) - .outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_chlorine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100)) - .outputFluids(Fluid.of('gtceu:chlorine', 50)) - .duration(20*5) - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillery('bromine_distillation_to_bromine') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40)) - .outputFluids(Fluid.of('gtceu:bromine', 40)) - .duration(20*2) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.distillation_tower('bromine_distillation') - .inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000)) - .outputFluids(Fluid.of('gtceu:chlorine', 500)) - .outputFluids(Fluid.of('gtceu:bromine', 1000)) - .duration(20*25) - .EUt(GTValues.VA[GTValues.HV]) - - */ - } diff --git a/kubejs/server_scripts/tfg/nuclear/tags.nuclear.js b/kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js similarity index 100% rename from kubejs/server_scripts/tfg/nuclear/tags.nuclear.js rename to kubejs/server_scripts/tfg/powergen/nuclear/tags.nuclear.js diff --git a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js new file mode 100644 index 000000000..ed60fc411 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js @@ -0,0 +1,116 @@ +"use strict"; + +function registerTFGBiodieselRecipes(event) { + + // Biofuels + + event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor + event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) + .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.extractor(`rapeseed_oil`) + .itemInputs('tfg:rapeseed_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 600)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.extractor(`sunflower_oil`) + .itemInputs('tfg:sunflower_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 350)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 250)) + .id('tfg:barrel/rapeseed_to_oil') + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 120)) + .id('tfg:barrel/sunflower_to_oil') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js new file mode 100644 index 000000000..5d0ba1862 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js @@ -0,0 +1,91 @@ +"use strict"; + +function registerTFGBoilerRecipes(event) { + + // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead + + event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration*3) + }) + + event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { + var newDuration = recipe.get("duration") + recipe.set("duration", newDuration/3) + }) + + // Allow oil in small boilers + + event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) + event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) + event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) + // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate + event.recipes.gtceu.steam_boiler('tfg:oil') + .inputFluids(Fluid.of('gtceu:oil', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:heavy_oil') + .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:fish_oil') + .inputFluids(Fluid.of('gtceu:fish_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // These aren't in base GT, but they have the same stats as oil + event.recipes.gtceu.steam_boiler('tfg:raw_oil') + .inputFluids(Fluid.of('gtceu:oil_medium', 200)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:light_oil') + .inputFluids(Fluid.of('gtceu:oil_light', 200)) + .duration(200) + .dimension('minecraft:overworld') + + // Same stats as fish oil + event.recipes.gtceu.steam_boiler('tfg:olive_oil') + .inputFluids(Fluid.of('tfc:olive_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:seed_oil') + .inputFluids(Fluid.of('gtceu:seed_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + event.recipes.gtceu.steam_boiler('tfg:soybean_oil') + .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // fish oil (aka tallowate) extraction + event.recipes.gtceu.extractor(`tfg:fish_oil`) + .itemInputs('#minecraft:fishes') + .outputFluids(Fluid.of('gtceu:fish_oil', 200)) + .duration(40) + .EUt(4) + + event.recipes.gtceu.extractor(`tfg:tallow`) + .itemInputs('tfc:blubber') + .outputFluids(Fluid.of('tfc:tallow', 200)) + .duration(40) + .EUt(4) + + // you get tallow from killing things like orcas, so this seems close enough + event.recipes.gtceu.mixer('tallow_to_fish_oil') + .inputFluids('tfc:tallow 100', 'tfc:lye 100') + .outputFluids('gtceu:fish_oil 200') + .duration(100) + .EUt(4) + + // Seed oil + event.recipes.gtceu.extractor(`tfg:seed_oil`) + .itemInputs('#tfc:seeds') + .outputFluids(Fluid.of('gtceu:seed_oil', 50)) + .duration(32) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.coal.js b/kubejs/server_scripts/tfg/powergen/recipes.coal.js new file mode 100644 index 000000000..6220f542f --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.coal.js @@ -0,0 +1,96 @@ +"use strict"; + +function registerTFGCoalRecipes(event) { + + event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke") + .itemInputs('2x gtceu:poor_raw_coal') + .itemOutputs('1x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 500)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 1000)) + .duration(900) + + event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke") + .itemInputs('gtceu:rich_raw_coal') + .itemOutputs('4x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(900) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar") + .itemInputs('3x gtceu:rich_raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen") + .itemInputs('4x gtceu:rich_raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) + + event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke") + .itemInputs('gtceu:raw_coal') + .itemOutputs('2x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 2000)) + .duration(1710) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar") + .itemInputs('6x gtceu:raw_coal') + .chancedOutput('gtceu:dark_ash_dust', 5000, 0) + .outputFluids(Fluid.of('gtceu:coal_tar', 3000)) + .duration(288) + .EUt(96) + .circuit(8) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(576) + .EUt(64) + .circuit(1) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:steam')) + .outputFluids(Fluid.of('gtceu:coal_gas', 4000)) + .duration(288) + .EUt(96) + .circuit(22) + + event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen") + .itemInputs('8x gtceu:raw_coal') + .itemOutputs('16x gtceu:coke_gem') + .inputFluids(Fluid.of('gtceu:nitrogen')) + .outputFluids(Fluid.of('gtceu:creosote', 8000)) + .duration(288) + .EUt(96) + .circuit(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/early_power.js b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js similarity index 77% rename from kubejs/server_scripts/tfg/early_power.js rename to kubejs/server_scripts/tfg/powergen/recipes.early_gas.js index 07181dec9..c4bbf5de1 100644 --- a/kubejs/server_scripts/tfg/early_power.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.early_gas.js @@ -1,6 +1,6 @@ // priority: 0 -function registerTFGEarlyPower(event) { +function registerTFGEarlyGasRecipes(event) { const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') @@ -204,72 +204,8 @@ function registerTFGEarlyPower(event) { //#endregion - //#region Rebalance Fuel - // Change - // The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead - - event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration*3) - }) - - event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => { - var newDuration = recipe.get("duration") - recipe.set("duration", newDuration/3) - }) - - // Allow oil in small boilers - - event.remove({ id: "gtceu:large_boiler/gtceu_oil" }) - event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" }) - event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" }) - // This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate - event.recipes.gtceu.steam_boiler('tfg:oil') - .inputFluids(Fluid.of('gtceu:oil', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:heavy_oil') - .inputFluids(Fluid.of('gtceu:oil_heavy', 32)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:fish_oil') - .inputFluids(Fluid.of('gtceu:fish_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - // These aren't in base GT, but they have the same stats as oil - event.recipes.gtceu.steam_boiler('tfg:raw_oil') - .inputFluids(Fluid.of('gtceu:oil_medium', 200)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:light_oil') - .inputFluids(Fluid.of('gtceu:oil_light', 200)) - .duration(200) - .dimension('minecraft:overworld') - - // Same stats as fish oil - event.recipes.gtceu.steam_boiler('tfg:olive_oil') - .inputFluids(Fluid.of('tfc:olive_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:seed_oil') - .inputFluids(Fluid.of('gtceu:seed_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - event.recipes.gtceu.steam_boiler('tfg:soybean_oil') - .inputFluids(Fluid.of('firmalife:soybean_oil', 160)) - .duration(200) - .dimension('minecraft:overworld') - - //#region New Power Generation - // Add Syngas event.recipes.gtceu.steam_boiler('tfg:syngas') // Small Boiler and Large Boiler divided by 4 diff --git a/kubejs/server_scripts/tfg/powergen/recipes.solar.js b/kubejs/server_scripts/tfg/powergen/recipes.solar.js new file mode 100644 index 000000000..e74ec4cb7 --- /dev/null +++ b/kubejs/server_scripts/tfg/powergen/recipes.solar.js @@ -0,0 +1,184 @@ +"use strict"; + +function registerTFGSolarRecipes(event) { + + //#region Large Solar Panel + + event.shaped( + 'gtceu:large_solar_panel', + ['WSW', 'TZT', 'WUW'], + { + S: 'tfg:photo_cell_t1', + Z: 'ad_astra:solar_panel', + W: '#gtceu:circuits/ev', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel') + + event.shaped( + 'gtceu:large_solar_panel_tier2', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_etrium_cell', + Z: 'gtceu:large_solar_panel', + W: '#gtceu:circuits/iv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier2') + + event.shaped( + 'gtceu:large_solar_panel_tier3', + ['WSW', 'TZT', 'WUW'], + { + S: 'ad_astra:photovoltaic_vesnium_cell', + Z: 'gtceu:large_solar_panel_tier2', + W: '#gtceu:circuits/luv', + U: '#forge:gears/rocket_alloy_t1', + T: '#forge:gears/desh' + } + ).id('gtceu:shaped/large_solar_panel_tier3') + + event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell') + .itemInputs('8x tfg:photo_cell_t1', + '6x #forge:dusts/vanadium_gallium', + '#forge:insulation_t2/sheet') + .inputFluids(Fluid.of('gtceu:helium_3', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_etrium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell') + .itemInputs('8x ad_astra:photovoltaic_etrium_cell', + '6x gtceu:energium_dust', + '#forge:insulation_t3/sheet') + .inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000)) + .itemOutputs('8x ad_astra:photovoltaic_vesnium_cell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.IV]) + + //#region Chemical Reaction for Solar Panel + + event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride') + .inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000)) + .outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride') + .inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000)) + .outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant') + .inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000)) + .outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000)) + .duration(20 * 5) + .EUt(GTValues.VH[GTValues.EV]) + + event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2') + .inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000)) + .itemInputs(Item.of('#forge:aerogels')) + .outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000)) + .duration(20 * 15) + .EUt(GTValues.VH[GTValues.IV]) + + //#endregion + + // LSP Generating recipes + + // Solar T1 + + event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency') + .chancedInput('tfg:photo_cell_t1', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-((GTValues.V[GTValues.HV])), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel('solar_panel_t1') + .notConsumable('tfg:photo_cell_t1') + .perTick(true) + .chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0) + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(2) + + // Solar T2 + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency') + .chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap') + .notConsumable('ad_astra:photovoltaic_etrium_cell') + .perTick(true) + .inputFluids('tfg:compressed_trimix_3 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.EV]), 2) + .circuit(3) + + // Solar T3 + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency') + .chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(1) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.LuV]), 2) + .circuit(2) + + event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap') + .notConsumable('ad_astra:photovoltaic_vesnium_cell') + .perTick(true) + .chancedFluidInput('tfg:solar_coolant 10', 5000, 0) + .inputFluids('tfg:cryogenized_fluix 4') + .outputFluids('tfg:fluix 1') + .perTick(false) + .duration(20 * 20) + .daytime(false) + .dimension('ad_astra:moon') + .EUt(-(GTValues.V[GTValues.IV]), 2) + .circuit(2) + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js new file mode 100644 index 000000000..c8bb64476 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js @@ -0,0 +1,93 @@ +const fish = [ + 'cod', + 'crappie', + 'jellyfish', + 'lake_trout', + 'largemouth_bass', + 'rainbow_trout', + 'salmon', + 'smallmouth_bass', + 'tropical_fish', + 'bluegill' +]; + +const shellfish = [ + 'lobster', + 'isopod', + 'crayfish' +]; + +//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier. +const tiers = [ + 'wood', + 'brass', + 'rose_gold', + 'sterling_silver', + 'invar', + 'tin_alloy', + 'cupronickel', + 'magnalium' +]; + +//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item. +tiers.forEach(tier => { + fish.forEach(fish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${fish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give(`tfc:food/${fish}`) + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Shellfish Exception + shellfish.forEach(shellfish => { + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== `tfc:${shellfish}`) return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('tfc:food/shellfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) + }) + + //Pufferfish Exception + ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => { + const { item, player, server, target } = event; + + if (target.type !== 'tfc:pufferfish') return + server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`) + server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`) + server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`) + event.player.give('minecraft:pufferfish') + player.swing() + if (player.isCreative() === false) { + item.damageValue++ + if (item.damageValue >= item.maxDamage) { + server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`) + item.count-- + } + } + }) +}) \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/events.medicine.js b/kubejs/server_scripts/tfg/primitive/events.medicine.js new file mode 100644 index 000000000..115e3caf7 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/events.medicine.js @@ -0,0 +1,100 @@ + +//Pills & Tablets +const pill_event = [ + 'haste', + 'luck', + 'night_vision', + 'poison', + 'regeneration', + 'slowness', + 'speed', + 'water_breathing', + 'weakness', +]; + +pill_event.forEach(pill_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_pill`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${pill_event}_tablet`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`) + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_pill`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:antipoison_tablet`) return + item.count-- + player.addItemCooldown(item, 50) + event.player.removeEffect('minecraft:poison') + event.player.removeEffect('minecraft:wither') + event.player.removeEffect('minecraft:weakness') + event.player.removeEffect('minecraft:slowness') + event.player.removeEffect('minecraft:mining_fatigue') + event.player.removeEffect('minecraft:nausea') + event.player.removeEffect('minecraft:blindness') + event.player.removeEffect('minecraft:hunger') + event.player.removeEffect('minecraft:bad_omen') + event.player.removeEffect('minecraft:darkness') + event.player.removeEffect('minecraft:unluck') + server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`) +}); + +//salvos +const salvo_event = [ + 'fire_resistance', + 'invisibility', + 'luck', + 'resistance', +]; + +salvo_event.forEach(salvo_event => { + + ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:${salvo_event}_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) + }); +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:absorption_salvo`) return + item.count-- + player.addItemCooldown(item, 200) + server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); + +ItemEvents.rightClicked(event => { + const { item, server, player, player: { x, y, z } } = event + if (item.id !== `tfg:instant_health_salvo`) return + item.count-- + player.addItemCooldown(item, 100) + server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`) + server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`) +}); \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.arrows.js b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js new file mode 100644 index 000000000..05962e312 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.arrows.js @@ -0,0 +1,75 @@ +"use strict"; + +function registerTFGArrowRecipes(event) { + // Arrow Parts + event.recipes.tfc.knapping( + '4x tfg:flint_arrow_head', + 'tfg:flint', + [ + ' XXX', + ' XXXX', + 'XXXXX', + ' XXX ', + ' X ' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/flint_arrow_head') + + event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') + .itemInputs('1x minecraft:flint') + .itemOutputs('4x tfg:flint_arrow_head') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'minecraft:feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/fletching') + .itemInputs('1x minecraft:feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('4x minecraft:arrow', [ + ' A ', + ' B ', + ' C ' + ], { + A: 'tfg:flint_arrow_head', + B: '#forge:rods/wooden', + C: 'tfg:fletching' + }).id('tfg:shaped/arrow') + + // Wraptor feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'tfg:wraptor_wool', + '#forge:tools/knives' + ]).id('tfg:shapeless/wraptor_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') + .itemInputs('1x tfg:wraptor_wool') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + // Glider feathers + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:fletching', [ + 'wan_ancient_beasts:glider_feather', + '#forge:tools/knives' + ]).id('tfg:shapeless/glider_feather_fletching')) + + event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') + .itemInputs('1x wan_ancient_beasts:glider_feather') + .itemOutputs('4x tfg:fletching') + .duration(20) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.baskets.js b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js new file mode 100644 index 000000000..a6bdc30ff --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.baskets.js @@ -0,0 +1,64 @@ +"use strict"; + +function registerTFGBasketRecipes(event) { + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfg:soaked_hardwood_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_wood') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') + .itemInputs( + '5x tfg:soaked_hardwood_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.shaped('tfg:harvest_basket', [ + 'BDB', + 'ACA', + 'AAA' + ], { + A: 'tfc:soaked_papyrus_strip', + B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), + C: 'tfc:glue', + D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + }).id('tfg:shaped/harvest_basket_from_papyrus') + + event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') + .itemInputs( + '5x tfc:soaked_papyrus_strip', + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), + ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) + ) + .inputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('tfg:harvest_basket') + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), + ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), + ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), + ChemicalHelper.get(TagPrefix.rodLong, + GTMaterials.Aluminium, 1) + ) + .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) + .itemOutputs('tfg:aluminium_harvest_basket') + .duration(200) + .circuit(4) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.clay.js b/kubejs/server_scripts/tfg/primitive/recipes.clay.js new file mode 100644 index 000000000..153455c8a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.clay.js @@ -0,0 +1,144 @@ +"use strict"; + +function registerTFGClayRecipes(event) { + + event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible') + + event.shaped('minecraft:clay', [ + 'AA', + 'AA' + ], { + A: 'minecraft:clay_ball' + }).id('tfg:shaped/clay_balls_to_block') + + event.shapeless('4x minecraft:clay_ball', ['minecraft:clay']) + .id('tfg:shapeless/clay_block_to_balls') + + global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { + event.smelting(element.output, element.input) + .id(`tfg:smelting/${element.name}`) + }) + + global.MINECRAFT_DYE_NAMES.forEach(dye => { + event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`) + .id(`tfg:smelting/${dye}_glazed_vessel`) + + event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`) + .id(`tfg:smelting/${dye}_large_vessel`) + }) + + for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { + let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i]; + + event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`) + .itemInputs(element.input) + .circuit(i) + .itemOutputs(element.output) + .duration(450) + .EUt(2) + } + + event.recipes.gtceu.extruder('tfg:unfired_clay_brick') + .itemInputs('minecraft:clay_ball') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_brick') + .duration(20) + .EUt(2) + + event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick') + .itemInputs('tfc:fire_clay') + .notConsumable('gtceu:ingot_extruder_mold') + .itemOutputs('tfc:ceramic/unfired_fire_brick') + .duration(20) + .EUt(2) + + // Kaolinite Clay - regular smelting recipes can't have multiple inputs + event.recipes.gtceu.alloy_smelter('tfg:kaolinite') + .itemInputs('tfc:kaolin_clay') + .circuit(1) + .chancedOutput('tfc:powder/kaolinite', 2000, 0) + .duration(100) + .EUt(16) + + // Fire Clay + event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay') + .itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay') + .itemOutputs('2x tfc:fire_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin') + .itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite') + .itemOutputs('tfc:kaolin_clay') + .duration(600) + .EUt(GTValues.VA[GTValues.ULV]) + + // Compressed Coke Clay + event.shaped('gtceu:compressed_coke_clay', [ + 'AAA', + 'BCB', + 'BBB' + ], { + A: 'minecraft:clay_ball', + B: '#minecraft:sand', + C: 'gtceu:brick_wooden_form' + }).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay') + + // Coke Oven Brick + event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399) + .resultItem('gtceu:coke_oven_brick') + .id('tfg:heating/coke_oven_bricks') + + event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick') + .itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball') + .itemOutputs('gtceu:coke_oven_brick') + .duration(7.5 * 20) + .EUt(GTValues.VA[GTValues.ULV]) + + // Ceramic Recycling + event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust') + .itemInputs('firmalife:pottery_sherd') + .itemOutputs('#forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:ceramic_molds') + .itemInputs('#tfc:fired_molds') + .itemOutputs('2x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:large_vessels') + .itemInputs('#tfc:fired_large_vessels') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:casting_channel') + .itemInputs('tfcchannelcasting:channel') + .itemOutputs('1x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) + + event.recipes.gtceu.macerator('tfg:mold_table') + .itemInputs('tfcchannelcasting:mold_table') + .itemOutputs('5x #forge:dusts/brick') + .category(GTRecipeCategories.MACERATOR_RECYCLING) + .duration(20) + .EUt(2) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.cloth.js b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js new file mode 100644 index 000000000..284666095 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.cloth.js @@ -0,0 +1,263 @@ +"use strict"; + +function registerTFGClothRecipes(event) { + + //Cloth & String + event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') + .itemInputs('1x minecraft:phantom_membrane') + .itemOutputs('16x tfg:phantom_thread') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') + .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) + .itemOutputs('32x tfg:polycaprolactam_string') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') + .itemInputs('16x tfg:phantom_thread') + .itemOutputs('1x tfg:phantom_silk') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') + .itemInputs('16x tfg:polycaprolactam_string') + .itemOutputs('1x tfg:polycaprolactam_fabric') + .duration(100) + .circuit(3) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') + .itemInputs('tfg:polycaprolactam_string') + .inputFluids(Fluid.of('gtceu:chlorine', 16)) + .itemOutputs('minecraft:string') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.loom( + '1x tfg:phantom_silk', + '16x tfg:phantom_thread', + 8, + 'tfg:block/phantom_silk_block' + ) + + event.recipes.tfc.loom( + '1x tfg:polycaprolactam_fabric', + '16x tfg:polycaprolactam_string', + 8, + 'tfg:block/polycaprolactam_fabric_block' + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('16x tfg:phantom_thread', [ + 'minecraft:phantom_membrane', + 'tfc:spindle' + ]).id('tfg:shapeless/phantom_thread')) + + // Wool Yarn + event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn') + .itemInputs('tfc:wool') + .itemOutputs('8x tfc:wool_yarn') + .duration(100) + .EUt(4) + + // Burlap Cloth + event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth') + .itemInputs('12x tfc:jute_fiber') + .circuit(0) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + + // Silk Cloth + event.recipes.gtceu.assembler('tfg:tfc/silk_cloth') + .itemInputs('24x minecraft:string') + .circuit(0) + .itemOutputs('tfc:silk_cloth') + .duration(100) + .EUt(4) + + // Wool Cloth + event.recipes.gtceu.assembler('tfg:tfc/wool_cloth') + .itemInputs('16x tfc:wool_yarn') + .circuit(0) + .itemOutputs('tfc:wool_cloth') + .duration(100) + .EUt(4) + + // Cloths to Wool + event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool') + .itemInputs('4x #tfc:sewing_light_cloth') + .itemOutputs('8x minecraft:white_wool') + .circuit(16) + .duration(100) + .EUt(4) + + // Wool Yarn + event.recipes.gtceu.macerator('macerate_wool') + .itemInputs('#minecraft:wool') + .itemOutputs('tfc:wool_yarn') + .chancedOutput('tfc:wool_yarn', 9000, 0) + .chancedOutput('tfc:wool_yarn', 5000, 0) + .chancedOutput('tfc:wool_yarn', 2000, 0) + .duration(200) + .EUt(2) + + // Jute Fiber + generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200", + 'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber') + + //#region flax stuff + + event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) + event.recipes.gtceu.packer('tfg:packer/flax_bundle') + .itemInputs('9x tfg:flax_product') + .itemOutputs('tfg:flax_bundle') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) + event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') + .itemInputs('9x tfg:flax_waste') + .itemOutputs('tfg:bundled_scraped_flax') + .duration('100') + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.tfc.scraping( + 'tfg:flax_waste', + 'tfg:flax_product', + 'tfg:item/flax_waste', + 'tfg:item/flax_product', + '2x tfg:flax_line' + ).id('tfg:scraping/flax_line') + + event.recipes.tfc.scraping( + 'tfg:bundled_scraped_flax', + 'tfg:flax_bundle', + 'tfg:item/bundled_scraped_flax', + 'tfg:item/flax_bundle', + '18x tfg:flax_line' + ).id('tfg:scraping/flax_line_from_bundle') + + event.recipes.tfc.scraping( + 'tfc:groundcover/humus', + 'tfg:flax_waste', + 'tfc:item/groundcover/humus', + 'tfg:item/flax_waste', + 'tfg:flax_tow' + ).id('tfg:scraping/flax_tow') + + event.recipes.tfc.scraping( + '9x tfc:groundcover/humus', + 'tfg:bundled_scraped_flax', + 'tfc:item/groundcover/humus', + 'tfg:item/bundled_scraped_flax', + '9x tfg:flax_tow' + ).id('tfg:scraping/flax_tow_from_pile') + + event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') + .duration(540) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') + .itemInputs('tfg:flax_waste') + .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') + .duration(60) + .EUt(2) + + event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') + .itemInputs('tfg:bundled_scraped_flax') + .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(540) + .EUt(2) + + event.recipes.gtceu.centrifuge('tfg:flax_product') + .itemInputs('tfg:flax_product') + .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') + .itemInputs('tfg:flax_bundle') + .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') + .duration(1800) + .EUt(GTValues.VA[GTValues.LV]) + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_product' }], + results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], + processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax') + + event.custom({ + type: 'vintageimprovements:centrifugation', + ingredients: [{ item: 'tfg:flax_bundle' }], + results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], + processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_seperate_flax_from_bundle') + + // #endregion + + //#region flax line spinning + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless('4x tfg:linen_thread', [ + 'tfg:flax_line', + 'tfc:spindle' + ]).id('tfg:shapeless/linen_thread') + ) + + event.custom({ + type: 'vintageimprovements:coiling', + ingredients: [{ item: 'tfg:flax_line' }], + results: [{ item: 'tfg:linen_thread', count: 4 }], + processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id('tfg:vi_spin_flax_line') + + event.recipes.gtceu.wiremill('tfg:spin_flax_line') + .itemInputs('tfg:flax_line') + .itemOutputs('4x tfg:linen_thread') + .duration(80) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + //#region flax looming + event.recipes.tfc.loom( + '1x tfg:linen_cloth', + '16x tfg:linen_thread', + 8, + 'tfc:block/burlap' + ) + + event.recipes.tfc.loom( + '1x tfc:burlap_cloth', + '16x tfg:flax_tow', + 12, + 'tfc:block/burlap' + ) + + event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') + .itemInputs('16x tfg:linen_thread') + .circuit(10) + .itemOutputs('tfg:linen_cloth') + .duration(100) + .EUt(4) + + event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') + .itemInputs('16x tfg:flax_tow') + .circuit(10) + .itemOutputs('tfc:burlap_cloth') + .duration(100) + .EUt(4) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.compost.js b/kubejs/server_scripts/tfg/primitive/recipes.compost.js new file mode 100644 index 000000000..623e231a2 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.compost.js @@ -0,0 +1,194 @@ +"use strict"; + +function registerTFGCompostRecipes(event) { + //#region Fertiliser + event.recipes.gtceu.mixer('tfg:fertilizer') + .itemInputs( + '#tfc:dirt', + '2x #tfg:wood_dusts', + '4x #forge:sand' + ) + .circuit(1) + .inputFluids("#tfg:clean_water 1000") + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.mixer('tfg:fertilizer_2') + .itemInputs('tfc:compost') + .inputFluids('#tfg:clean_water 1000') + .itemOutputs('4x gtceu:fertilizer') + .duration(300) + .EUt(30) + + event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers') + .itemInputs('1x gtceu:fertilizer') + .itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus') + .duration(340) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer') + .itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1)) + .itemOutputs('1x gtceu:fertilizer') + .duration(160) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen') + .itemInputs('#forge:wax') + .inputFluids(Fluid.of('gtceu:nitrogen', 1000)) + .itemOutputs('16x tfc:pure_nitrogen') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + //#endregion + + // Humus and compost + event.recipes.gtceu.extractor('tfg:humus_from_leaves') + .itemInputs('#minecraft:leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves') + .itemInputs('#tfc:fallen_leaves') + .itemOutputs('tfc:groundcover/humus') + .duration(600) + .EUt(2) + + event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost') + .itemInputs('4x gtceu:fertilizer') + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + + const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ]; + const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ]; + + let i = 0; + BROWNS.forEach(brown => { + GREENS.forEach(green => { + event.recipes.gtceu.mixer(`tfg:compost_${i++}`) + .itemInputs(brown, green) + .itemOutputs('tfc:compost') + .duration(1200) + .EUt(2) + }) + }) + + //Greens + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 1), [ + 'AB' + ], { + A: '#tfc:compost_greens_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 2), [ + 'AB' + ], { + A: '#tfc:compost_greens', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_greens', 4), [ + 'AB' + ], { + A: '#tfc:compost_greens_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_greens_from_high') + + // Filters + const greens_low = Ingredient.of('#tfc:compost_greens_low') + const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds + const greens_medium = Ingredient.of('#tfc:compost_greens') + const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds + const greens_high = Ingredient.of('#tfc:compost_greens_high') + const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds + + let low_filtered = greens_low + let medium_filtered = greens_medium + let high_filtered = greens_high + + browns_low.forEach(item => { + low_filtered = low_filtered.subtract(item) + low_filtered = low_filtered.subtract('tfg:universal_compost_greens') + }) + browns_medium.forEach(item => { + medium_filtered = medium_filtered.subtract(item) + }) + browns_high.forEach(item => { + high_filtered = high_filtered.subtract(item) + }) + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') + .itemInputs(low_filtered) + .itemOutputs('tfg:universal_compost_greens') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') + .itemInputs(medium_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') + .itemInputs(high_filtered) + .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) + .duration(20) + .EUt(8) + + //Browns + // Lows via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 1), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_low', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_low') + + // Mediums via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 2), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_medium') + + // Highs via crafting with mortar + event.shaped(Item.of('tfg:universal_compost_browns', 4), [ + 'A', + 'B' + ], { + A: '#tfc:compost_browns_high', + B: '#forge:tools/mortars' + }).id('tfg:shaped/universal_compost_browns_from_high') + + // Lows via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') + .itemInputs('#tfc:compost_browns_low') + .itemOutputs('tfg:universal_compost_browns') + .duration(20) + .EUt(8) + + // Mediums via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') + .itemInputs('#tfc:compost_browns') + .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) + .duration(20) + .EUt(8) + + // Highs via forge hammer + event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') + .itemInputs('#tfc:compost_browns_high') + .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) + .duration(20) + .EUt(8) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.fishing_nets.js rename to kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js new file mode 100644 index 000000000..29ccd1771 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.glue_and_chipboard.js @@ -0,0 +1,101 @@ +"use strict"; + +function registerTFGChipboardRecipes(event) { + + // Glue from resin + event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue') + .itemInputs('tfc:glue') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(20 * 10) + .EUt(5) + + event.recipes.gtceu.mixer('tfg:glue_from_bone_meal') + .itemInputs('minecraft:bone_meal') + .inputFluids(Fluid.of('tfc:limewater', 500)) + .outputFluids(Fluid.of('gtceu:glue', 50)) + .duration(100) + .EUt(5) + + // Chipboard + event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax') + .itemInputs('2x #tfg:wood_dusts', + '1x #forge:wax') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin') + .itemInputs('4x #tfg:wood_dusts', + '1x gtceu:sticky_resin') + .itemOutputs('4x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue') + .itemInputs('2x #tfg:wood_dusts', + '1x tfc:glue') + .itemOutputs('2x tfg:chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.LV]) + + + event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue') + .itemInputs('1x #tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs('1x tfg:chipboard_composite') + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.compressor('gtceu:wood_mdf') + .itemInputs('1x tfg:chipboard_composite') + .itemOutputs('gtceu:wood_plate') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite') + .itemInputs('1x tfg:chipboard_composite') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:treated_chipboard_composite') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard') + .itemInputs('1x gtceu:wood_plate') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust') + .itemInputs('#tfg:wood_dusts') + .inputFluids(Fluid.of('gtceu:creosote', 50)) + .itemOutputs('gtceu:treated_wood_dust') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite') + .itemInputs('tfg:treated_chipboard_composite') + .itemOutputs('tfg:high_density_treated_fiberboard') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler('tfg:resin_circuit_assembler') + .itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin') + .itemOutputs('gtceu:resin_circuit_board') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.ice.js b/kubejs/server_scripts/tfg/primitive/recipes.ice.js new file mode 100644 index 000000000..b610d3c9a --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.ice.js @@ -0,0 +1,104 @@ +"use strict"; + +function registerTFGIceRecipes(event) { + + // Ice + event.remove({ id: 'gtceu:compressor/ice_from_dust' }) + event.remove({ id: 'gtceu:compressor/ice_from_snow' }) + + event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) + .id('tfg:shaped/ice_shavings') + + event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') + .id('tfg:quern/ice_dust') + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') + .itemInputs('firmalife:ice_shavings') + .itemOutputs('#forge:small_dusts/ice') + .duration(10) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') + .itemInputs('#forge:dusts/ice') + .itemOutputs('4x firmalife:ice_shavings') + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.fluid_solidifier('tfg:ice') + .inputFluids("#tfg:clean_water 144") + .notConsumable('gtceu:block_casting_mold') + .itemOutputs('minecraft:ice') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) + + event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') + .itemInputs('1x tfg:dry_ice') + .inputFluids("#tfc:water 8000") + .outputFluids(Fluid.of('gtceu:ice', 8000)) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + + // Cooling water + event.recipes.tfc.barrel_sealed(250) + .inputItem('1x tfg:dry_ice') + .inputFluid(Fluid.of('minecraft:water', 5000)) + .outputFluid(Fluid.of('gtceu:ice', 5000)) + .id('tfg:barrel/cooling_water_0') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_1') + + event.recipes.tfc.barrel_sealed(1000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('minecraft:water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_2') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('1x #forge:dusts/ice') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_3') + + event.recipes.tfc.barrel_sealed(2000) + .inputItem('16x minecraft:snowball') + .inputFluid(Fluid.of('tfc:salt_water', 144)) + .outputFluid(Fluid.of('gtceu:ice', 144)) + .id('tfg:barrel/cooling_water_4') + + // Freezing it + event.recipes.tfc.barrel_sealed(3000) + .inputItem('9x #forge:dusts/ice') + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputItem('minecraft:packed_ice') + .id('tfg:barrel/packed_ice') + + // Heating it back up + event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) + .fluidOutput(Fluid.of('minecraft:water', 144)) + + event.recipes.firmalife.vat() + .inputFluid(Fluid.of('gtceu:ice', 144)) + .outputFluid(Fluid.of('minecraft:water', 144)) + .length(300) + .temperature(100) + + // Snow + event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', + 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') + .id('tfg:stomping/snow_layer') + + event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) + .id('tfg:shapeless/snow_block') + + event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) + .id('tfg:shapeless/snowball') + + event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) + .id('tfg:shapeless/snow') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/recipes.knapping.js b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js similarity index 99% rename from kubejs/server_scripts/tfc/recipes.knapping.js rename to kubejs/server_scripts/tfg/primitive/recipes.knapping.js index 1240dd49d..8c9113e82 100644 --- a/kubejs/server_scripts/tfc/recipes.knapping.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.knapping.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerTFCKnappingRecipes(event) { +function registerTFGKnappingRecipes(event) { //#region Топор diff --git a/kubejs/server_scripts/tfg/primitive/recipes.leather.js b/kubejs/server_scripts/tfg/primitive/recipes.leather.js new file mode 100644 index 000000000..4a99ace21 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.leather.js @@ -0,0 +1,212 @@ +// priority: 0 +"use strict"; + +function registerTFGLeatherRecipes(event) { + + // 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(7) + + event.recipes.gtceu.cutter('tfg:medium_scraped_hide') + .itemInputs('tfc:medium_soaked_hide') + .itemOutputs('tfc:medium_scraped_hide') + .duration(100) + .EUt(7) + + event.recipes.gtceu.cutter('tfg:large_scraped_hide') + .itemInputs('tfc:large_soaked_hide') + .itemOutputs('tfc:large_scraped_hide') + .duration(100) + .EUt(7) + + // 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) + + // 1x Small SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_1') + .itemInputs('tfc:small_sheepskin_hide') + .itemOutputs('tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Medium SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_2') + .itemInputs('tfc:medium_sheepskin_hide') + .itemOutputs('2x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + // 1x Large SheepSkin -> 1x Wool + event.recipes.gtceu.assembler('tfg:tfc/wool_3') + .itemInputs('tfc:large_sheepskin_hide') + .itemOutputs('3x tfc:wool') + .duration(100) + .circuit(3) + .EUt(4) + + //Hide Sewing + const stages = [ + 'raw', + 'soaked', + 'scraped', + 'prepared', + 'sheepskin' + ]; + + stages.forEach(stage => { + //Combining + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:medium_${stage}_hide`, [ + `2x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_medium_${stage}_hide`) + ) + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`1x tfc:large_${stage}_hide`, [ + `3x tfc:small_${stage}_hide`, + '#tfc:sewing_needles', + '#forge:string', + 'tfc:glue' + ]).id(`tfg:tfc/small_to_large_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:medium_${stage}_hide`) + .itemInputs(`2x tfc:small_${stage}_hide`) + .duration(60) + .circuit(7) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`) + .inputFluids(Fluid.of('gtceu:glue', 25)) + .itemOutputs(`1x tfc:large_${stage}_hide`) + .itemInputs(`3x tfc:small_${stage}_hide`) + .duration(60) + .circuit(9) + .EUt(GTValues.VA[GTValues.ULV]) + + //Cutting + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`2x tfc:small_${stage}_hide`, [ + `1x tfc:medium_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/medium_to_small_${stage}_hide`) + ) + + event.recipes.tfc.damage_inputs_shapeless_crafting( + event.shapeless(`3x tfc:small_${stage}_hide`, [ + `1x tfc:large_${stage}_hide`, + '#forge:shears' + ]).id(`tfg:tfc/large_to_small_${stage}_hide`) + ) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`) + .itemOutputs(`2x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:medium_${stage}_hide`) + .duration(60) + .circuit(4) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`) + .itemOutputs(`3x tfc:small_${stage}_hide`) + .itemInputs(`1x tfc:large_${stage}_hide`) + .duration(60) + .circuit(6) + .EUt(GTValues.VA[GTValues.ULV]) + }); + +} diff --git a/kubejs/server_scripts/tfg/recipes.medicine.js b/kubejs/server_scripts/tfg/primitive/recipes.medicine.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.medicine.js rename to kubejs/server_scripts/tfg/primitive/recipes.medicine.js diff --git a/kubejs/server_scripts/tfg/recipes.paper.js b/kubejs/server_scripts/tfg/primitive/recipes.paper.js similarity index 91% rename from kubejs/server_scripts/tfg/recipes.paper.js rename to kubejs/server_scripts/tfg/primitive/recipes.paper.js index ced487b9f..63cc6a933 100644 --- a/kubejs/server_scripts/tfg/recipes.paper.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.paper.js @@ -5,7 +5,34 @@ * @param {Internal.RecipesEventJS} event */ function registerTFGPapermakingRecipes(event) { - + + event.recipes.gtceu.cutter('tfg:unrefined_paper') + .itemInputs('tfc:unrefined_paper') + .itemOutputs('minecraft:paper') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled') + .itemInputs('tfc:papyrus') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.chemical_bath('paper_from_papyrus') + .itemInputs('tfc:papyrus') + .inputFluids("#tfg:clean_water 100") + .itemOutputs('4x tfc:soaked_papyrus_strip') + .duration(100) + .EUt(7) + + event.recipes.gtceu.assembler('papyrus_strips') + .itemInputs('4x tfc:soaked_papyrus_strip') + .itemOutputs('minecraft:paper') + .circuit(1) + .duration(100) + .EUt(7) + const generateVatRecipe = (id, inputItem, fluid, fluidAmount, output) => { event.custom({ "type": "firmalife:vat", diff --git a/kubejs/server_scripts/tfg/primitive/recipes.rubber.js b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js new file mode 100644 index 000000000..f607c75ea --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js @@ -0,0 +1,133 @@ +"use strict"; + +function registerTFGRubberRecipes(event) { + + // Sticky resin + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_latex') + + event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('gtceu:sticky_resin') + .id('tfg:pot/sticky_resin_from_conifer_pitch') + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin') + .duration(12 * 20) + .EUt(30) + .itemInputs('tfc:powder/wood_ash') + .itemOutputs('gtceu:sticky_resin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + + // Rubber Processing Line + event.recipes.firmalife.vat() + .inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000)) + .outputFluid(Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(300) + .id('tfg:vat/vulcanized_latex') + + event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300) + .fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000)) + .id('tfg:pot/vulcanized_latex') + + event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex') + .duration(100) + .EUt(20) + .itemInputs('tfc:powder/sulfur') + .inputFluids(Fluid.of('tfg:latex', 1000)) + .outputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + + event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp') + .duration(100) + .EUt(20) + .inputFluids(Fluid.of('tfg:vulcanized_latex', 1000)) + .itemOutputs('4x gtceu:raw_rubber_dust') + + event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue') + .inputFluids(Fluid.of('gtceu:glue', 50)) + .notConsumable('gtceu:ball_casting_mold') + .itemOutputs('tfc:glue') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin') + .itemInputs('tfg:conifer_rosin') + .outputFluids(Fluid.of('gtceu:glue', 50)) + .itemOutputs('2x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 7500, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin') + .itemInputs('gtceu:sticky_resin') + .outputFluids(Fluid.of('gtceu:glue', 100)) + .itemOutputs('3x #forge:dusts/carbon') + .chancedOutput('gtceu:plant_ball', 5000, 0) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`) + .itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust') + .circuit(1) + .outputFluids(Fluid.of('tfg:latex', 1000)) + .duration(200) + .EUt(20) + + + // #region Primitive protection + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('tfg:prepared_leather_gloves') + .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) + .id('tfg:sealed_barrel/prepared_leather_gloves') + + event.recipes.firmalife.vat() + .outputItem('tfg:latex_soaked_gloves') + .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(200) + .id('tfg:vat/latex_soaked_gloves') + + event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') + .id('tfg:oven/rubber_gloves') + + event.remove({ id: 'gtceu:shaped/rubber_gloves' }) + + event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') + .itemInputs('2x #forge:plates/rubber') + .notConsumable('create:brass_hand') + .itemOutputs('gtceu:rubber_gloves') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.INGOT_MOLDING) + + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('gtceu:face_mask', [ + 'ACA', + 'ABA', + ' D ' + ], { + A: '#forge:string', + B: '#forge:cloth', + C: 'minecraft:paper', + D: '#tfc:sewing_needles' + }) + ).id('gtceu:shaped/face_mask') + + event.recipes.gtceu.assembler('assemble_face_mask') + .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') + .itemOutputs('gtceu:face_mask') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + .circuit(7) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.supports.js b/kubejs/server_scripts/tfg/primitive/recipes.supports.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.supports.js rename to kubejs/server_scripts/tfg/primitive/recipes.supports.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.vases.js b/kubejs/server_scripts/tfg/primitive/recipes.vases.js new file mode 100644 index 000000000..ac6355a85 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.vases.js @@ -0,0 +1,59 @@ +"use strict"; + +function registerTFGVaseRecipes(event) { + + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) + .itemOutputs(`tfg:decorative_vase/unfired/${color}`) + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) + .resultItem(`tfg:decorative_vase/${color}`) + .id(`tfg:heating/decorative_vase/unfired/${color}`) + + event.recipes.tfc.barrel_sealed(1000) + .outputItem(`tfg:decorative_vase/unfired/${color}`) + .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) + .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) + .id(`tfg:barrel/dyeing/decorative_vase/${color}`) + + event.smelting( + `1x tfg:decorative_vase/${color}`, + `tfg:decorative_vase/unfired/${color}` + ).id(`tfg:smelting/decorative_vase/${color}`) + }) + + event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) + .itemInputs('#tfg:decorative_vases/unfired') + .inputFluids(Fluid.of('gtceu:chlorine', 72)) + .itemOutputs('tfg:decorative_vase/unfired') + .duration(80) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.CHEM_DYES) + + event.smelting( + '1x tfg:decorative_vase', + 'tfg:decorative_vase/unfired' + ).id('tfg:smelting/decorative_vase') + + event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) + .resultItem('tfg:decorative_vase') + .id('tfg:heating/decorative_vase/unfired') + + event.recipes.tfc.knapping( + 'tfg:decorative_vase/unfired', + 'tfc:clay', + [ + ' X X ', + 'XX XX', + 'X X', + 'X X', + 'XXXXX' + ] + ).outsideSlotRequired(false) + .id('tfg:knapping/decorative_vase/unfired') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wax.js b/kubejs/server_scripts/tfg/primitive/recipes.wax.js new file mode 100644 index 000000000..3ebf064b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wax.js @@ -0,0 +1,64 @@ +"use strict"; + +function registerTFGWaxRecipes(event) { + + //forge:wax + event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') + + //paraffin + event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') + .circuit(7) + .itemOutputs('6x tfg:paraffin_wax') + .outputFluids(Fluid.of('gtceu:oil_light', 25)) + .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) + .duration(500) + .EUt(GTValues.VA[GTValues.LV]) + + // Rosin + event.recipes.firmalife.vat() + .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) + .outputItem('tfg:conifer_rosin') + .id('tfg:vat/conifer_pitch_to_rosin'); + + event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) + .itemOutput('tfg:conifer_rosin') + .id('tfg:pot/conifer_pitch_to_rosin') + + event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') + .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) + .itemInputs('tfc:powder/charcoal') + .itemOutputs('tfg:conifer_rosin') + .duration(20 * 12) + .EUt(GTValues.VA[GTValues.LV]) + + //#region Wax Unification + + // Recipe Removals + event.remove({ id: 'gtceu:extractor/extract_honeycomb_block' }); + event.remove({ id: 'gtceu:extractor/extract_honeycomb' }); + event.remove({ id: 'gtceu:extractor/extract_wax_dust' }); + + // Extractor Recipe + event.recipes.gtceu.extractor('tfg:wax_melting') + .itemInputs(Ingredient.of('#forge:wax')) + .outputFluids(Fluid.of('gtceu:wax', 144)) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 16)) + .duration(10) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') + .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) + .outputFluids(Fluid.of('gtceu:wax', 36)) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .category(GTRecipeCategories.EXTRACTOR_RECYCLING); + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wood.js b/kubejs/server_scripts/tfg/primitive/recipes.wood.js new file mode 100644 index 000000000..23367a412 --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/recipes.wood.js @@ -0,0 +1,236 @@ +"use strict"; + +function registerTFGWoodRecipes(event) { + + event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives') + event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber') + + // Wood ash + event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash') + + event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air') + .itemInputs('8x tfc:powder/wood_ash') + .inputFluids(Fluid.of('gtceu:air', 100)) + .outputFluids('gtceu:wood_gas 100') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch') + .id('tfg:splashing/wash_torch') + + // Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC + event.custom({ + type: "ae2:transform", + circumstance: { + type: "fluid", + tag: "tfc:water" + }, + ingredients: [{ item: 'tfc:torch' }], + result: { item: 'tfc:powder/wood_ash' } + }).id(`tfg:ae_transform/torch_to_wood_ash`) + + // Ladder + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#forge:rods/wooden' + }).id('gtceu:shaped/ladder') + + event.shaped('8x minecraft:ladder', [ + 'A A', + 'AAA', + 'A A' + ], { + A: '#tfc:lumber' + }).id('tfc:crafting/vanilla/ladder') + + event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber') + event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' }) + + // Treated Wood + event.remove({ id: 'gtceu:shaped/treated_wood_planks' }) + + event.recipes.tfc.barrel_sealed(4000) + .outputItem('gtceu:treated_wood_planks') + .inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100)) + .id('tfg:barrel/treated_wood_planks') + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('gtceu:treated_wood_dust') + .inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50)) + .id('tfg:barrel/treated_wood_dust') + + event.shaped('2x gtceu:treated_wood_door', [ + 'AA ', + 'AA ', + 'AA ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_door') + + event.shaped('3x gtceu:treated_wood_trapdoor', [ + 'AAA', + 'AAA', + ' ' + ], { + A: 'gtceu:treated_wood_plate' + }).id('tfg:shaped/treated_trapdoor') + + event.shaped('gtceu:treated_wood_pressure_plate', [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: 'gtceu:treated_wood_slab', + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id('gtceu:shaped/treated_pressure_plate') + + event.recipes.gtceu.assembler('gtceu:treated_pressure_plate') + .itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab') + .itemOutputs('gtceu:treated_wood_pressure_plate') + .circuit(3) + .duration(50) + .EUt(2) + + event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button') + + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button') + + // Empty Wooden Form + event.shaped('gtceu:empty_wooden_form', [ + ' AA', + 'BAA' + ], { + A: '#minecraft:planks', + B: '#forge:tools/saws' + }).id('gtceu:shaped/plank_to_wooden_shape') + + // Wood gears + event.shaped('gtceu:small_wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#forge:rods/wooden', + C: 'tfc:glue' + }).id('gtceu:shaped/small_gear_wood') + + event.shaped('gtceu:wood_gear', [ + 'AB ', + 'BCB', + ' B ' + ], { + A: '#forge:tools/saws', + B: '#minecraft:planks', + C: 'tfc:glue' + }).id('gtceu:shaped/gear_wood') + + // Sticks + event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') + + event.recipes.gtceu.cutter('tfg:saplings_to_sticks') + .itemInputs('#minecraft:saplings') + .itemOutputs('2x minecraft:stick') + .duration(20) + .EUt(7) + + event.recipes.gtceu.packer('tfg:stick_bunch') + .itemInputs('9x #forge:rods/wooden') + .circuit(5) + .itemOutputs('tfc:stick_bunch') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + event.recipes.gtceu.packer('tfg:stick_bundle') + .itemInputs('18x #forge:rods/wooden') + .circuit(8) + .itemOutputs('tfc:stick_bundle') + .duration(50) + .EUt(GTValues.VA[GTValues.ULV]) + + + // Какие то рецепты дерева + global.TFC_WOOD_TYPES.forEach(wood => { + event.remove({ id: `tfc:crafting/wood/${wood}_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` }) + event.remove({ id: `tfc:crafting/wood/${wood}_clutch` }) + event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` }) + event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` }) + + // Бревна -> Пиломатериалы + generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`) + + // Доски -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`) + + // Ступень -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`) + + + // Плита -> Пиломатериалы + generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) + + // ? -> Деревянная нажимная пластина + event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [ + ' B ', + 'CDC', + ' E ' + ], { + B: '#tfc:hammers', + C: `tfc:wood/planks/${wood}_slab`, + D: '#forge:small_springs', + E: '#forge:tools/screwdrivers' + }).id(`tfc:crafting/wood/${wood}_pressure_plate`) + + event.recipes.gtceu.assembler(`${wood}_pressure_plate`) + .itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`) + .circuit(3) + .itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`) + .duration(50) + .EUt(2) + + // ? -> Деревянная кнопка + event.remove({ id: `tfc:crafting/wood/${wood}_button` }) + + generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`) + + // Stripped logs + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`) + .itemInputs(`tfc:wood/log/${wood}`) + .itemOutputs(`tfc:wood/stripped_log/${wood}`) + .duration(50) + .EUt(2) + + event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`) + .itemInputs(`tfc:wood/wood/${wood}`) + .itemOutputs(`tfc:wood/stripped_wood/${wood}`) + .duration(50) + .EUt(2) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/log/${wood}` }], + results: [{ item: `tfc:wood/stripped_log/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_log`) + + event.custom({ + type: 'vintageimprovements:polishing', + ingredients: [{ item: `tfc:wood/wood/${wood}` }], + results: [{ item: `tfc:wood/stripped_wood/${wood}` }], + speed_limits: 0, + processingTime: 50 + }).id(`tfg:vi/lathe/stripping_${wood}_wood`) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index 858f97f91..bbe860782 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -6,22 +6,77 @@ */ const registerTFGRecipes = (event) => { - registerTFGPapermakingRecipes(event) + registerTFGMoldRecipes(event) + registerTFGMiscellaneousRecipes(event) + registerTFGConvertingRecipes(event) + + registerTFGFoodRecipes(event) + registerTFGRefrigeratorRecipes(event) + registerTFGMealBagRecipes(event) + registerTFGBiomassRecipes(event) + + // TFC stone types + registerTFCStoneRecipes(event) + // Non-TFC stone types registerTFGRockRecipes(event) registerTFGCollapseRecipes(event) - registerTFGEarlyPower(event) - registerTFGMoldRecipes(event) - registerTFGMedicineRecipes(event) - registerTFGMiscellaneousRecipes(event) - registerTFGSupportRecipes(event) - registerTFGFishingNetsRecipes(event) - registerTFGConvertingRecipes(event) - registerTFGFoodRecipes(event) - registerTFGSpaceRecipes(event) registerTFGStoneDustRecipes(event) + registerTFGConcreteRecipes(event) + registerTFGAlabasterRecipes(event) + registerTFGDirtRecipes(event) + registerTFGSandRecipes(event) + + registerTFGPapermakingRecipes(event) + registerTFGMedicineRecipes(event) + registerTFGFishingNetsRecipes(event) + registerTFGSupportRecipes(event) + registerTFGVaseRecipes(event) + registerTFGIceRecipes(event) + registerTFGBasketRecipes(event) + registerTFGArrowRecipes(event) + registerTFGCompostRecipes(event) + registerTFGClothRecipes(event) + registerTFGChipboardRecipes(event) + registerTFGWaxRecipes(event) + registerTFGRubberRecipes(event) + registerTFGWoodRecipes(event) + registerTFGKnappingRecipes(event) + registerTFGLeatherRecipes(event) + registerTFGClayRecipes(event) + + registerTFGCasingRecipes(event) + registerTFGEnderPearlRecipes(event) + registerTFGMultiblockRecipes(event) + registerTFGSteamBloomeryRecipes(event) + registerTFGElectronicComponentsRecipes(event) + + registerTFGEarlyGasRecipes(event) + registerTFGBoilerRecipes(event) + registerTFGBiodieselRecipes(event) registerTFGNuclearRecipes(event) registerTFGNuclearComponentsRecipes(event) - registerTFGNOstrumRecipes(event) + registerTFGSolarRecipes(event) + registerTFGCoalRecipes(event) + + registerTFGZirconiumRecipes(event) + registerTFGBromineRecipes(event) + registerTFGTungstenRecipes(event) + registerTFGAlloyingRecipes(event) + registerTFGQuartzRecipes(event) + + registerTFGSpaceRecipes(event) + registerTFGRailgunRecipes(event) + registerTFGRocketRecipes(event) + registerTFGSpaceSuitRecipes(event) + registerTFGInsulationRecipes(event) + + registerTFGMoonRecipes(event) + registerTFGMoonPlantRecipes(event) + registerTFGMoonRegolithRecipes(event) + + registerTFGMarsRecipes(event) + registerTFGMarsIodineRecipes(event) + registerTFGMarsOstrumRecipes(event) + registerTFGBiochemRecipes(event) - registerTFGSpaceOres(event) } diff --git a/kubejs/server_scripts/tfg/recipes.miscellaneous.js b/kubejs/server_scripts/tfg/recipes.miscellaneous.js index 38d61ef34..bfa6163b8 100644 --- a/kubejs/server_scripts/tfg/recipes.miscellaneous.js +++ b/kubejs/server_scripts/tfg/recipes.miscellaneous.js @@ -7,13 +7,9 @@ */ function registerTFGMiscellaneousRecipes(event) { - //tfc:moss + //Moss event.replaceInput({}, 'minecraft:vine', '#tfc:moss') - //forge:wax - event.replaceInput({}, 'firmalife:beeswax', '#forge:wax') - - //Moss event.shapeless('1x minecraft:moss_block', [ '#tfc:dirt', '#tfc:moss' @@ -25,354 +21,13 @@ function registerTFGMiscellaneousRecipes(event) { A: 'minecraft:moss_block' }).id(`tfg:shaped/moss_carpet`) - //paraffin - event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant') - .circuit(7) - .itemOutputs('6x tfg:paraffin_wax') - .outputFluids(Fluid.of('gtceu:oil_light', 25)) - .inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25)) - .duration(500) - .EUt(GTValues.VA[GTValues.LV]) - - // Rosin - event.recipes.firmalife.vat() - .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) - .outputItem('tfg:conifer_rosin') - .id('tfg:vat/conifer_pitch_to_rosin'); - - event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300) - .itemOutput('tfg:conifer_rosin') - .id('tfg:pot/conifer_pitch_to_rosin') - - event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin') - .inputFluids(Fluid.of('tfg:conifer_pitch', 1000)) - .itemInputs('tfc:powder/charcoal') - .itemOutputs('tfg:conifer_rosin') - .duration(20 * 12) - .EUt(GTValues.VA[GTValues.LV]) - - // Decorative Vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of(`tfc:${color}_dye`, 25)) - .itemOutputs(`tfg:decorative_vase/unfired/${color}`) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399) - .resultItem(`tfg:decorative_vase/${color}`) - .id(`tfg:heating/decorative_vase/unfired/${color}`) - - event.recipes.tfc.barrel_sealed(1000) - .outputItem(`tfg:decorative_vase/unfired/${color}`) - .inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`)) - .inputFluid(Fluid.of(`tfc:${color}_dye`, 25)) - .id(`tfg:barrel/dyeing/decorative_vase/${color}`) - - event.smelting( - `1x tfg:decorative_vase/${color}`, - `tfg:decorative_vase/unfired/${color}` - ).id(`tfg:smelting/decorative_vase/${color}`) - }) - - event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`) - .itemInputs('#tfg:decorative_vases/unfired') - .inputFluids(Fluid.of('gtceu:chlorine', 72)) - .itemOutputs('tfg:decorative_vase/unfired') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.smelting( - '1x tfg:decorative_vase', - 'tfg:decorative_vase/unfired' - ).id('tfg:smelting/decorative_vase') - - event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399) - .resultItem('tfg:decorative_vase') - .id('tfg:heating/decorative_vase/unfired') - - event.recipes.tfc.knapping( - 'tfg:decorative_vase/unfired', - 'tfc:clay', - [ - ' X X ', - 'XX XX', - 'X X', - 'X X', - 'XXXXX' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/decorative_vase/unfired') - - - //Scaffolding Frame - event.shaped('tfg:scaffolding_frame', - [ - ' A ', - 'ABA', - ' A ' - ], - { - A: '#forge:rods/wood', - B: '#forge:cloth' - }).id('tfg:shaped/scaffolding_frame'); - - //Airship Hull - event.shaped('tfg:airship_hull', [ - 'A B', - 'C C', - 'CCC' - ], { - A: '#forge:tools/screwdrivers', - B: '#forge:tools/hammers', - C: 'immersive_aircraft:hull' - }).id('tfg:shaped/airship_hull'); - event.recipes.gtceu.assembler('tfg:assembler/airship_hull') - .itemInputs('5x immersive_aircraft:hull') - .itemOutputs('tfg:airship_hull') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]); - - //Airship Balloon - event.shaped('tfg:airship_balloon', [ - 'ABA', - 'BAB', - 'ABA' - ], { - A: '#forge:string', - B: 'immersive_aircraft:sail' - }).id('tfg:shaped/airship_balloon') - - event.recipes.gtceu.assembler('tfg:assembler/airship_balloon') - .itemInputs('4x immersive_aircraft:sail', '4x #forge:string') - .itemOutputs('tfg:airship_balloon') - .duration(40) - .circuit(1) - .EUt(GTValues.VA[GTValues.ULV]) - - // Steam bloomery - event.shaped('gtceu:steam_bloomery', [ - 'CEC', - 'DAD', - 'CBC' - ], { - A: 'tfc:bloomery', - B: '#forge:frames/bronze', - C: '#forge:rods/black_steel', - D: '#forge:screws/wrought_iron', - E: '#forge:tools/wrenches' - }) - - // Arrow Parts - event.recipes.tfc.knapping( - '4x tfg:flint_arrow_head', - 'tfg:flint', - [ - ' XXX', - ' XXXX', - 'XXXXX', - ' XXX ', - ' X ' - ] - ).outsideSlotRequired(false) - .id('tfg:knapping/flint_arrow_head') - - event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head') - .itemInputs('1x minecraft:flint') - .itemOutputs('4x tfg:flint_arrow_head') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'minecraft:feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/fletching') - .itemInputs('1x minecraft:feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('4x minecraft:arrow', [ - ' A ', - ' B ', - ' C ' - ], { - A: 'tfg:flint_arrow_head', - B: '#forge:rods/wooden', - C: 'tfg:fletching' - }).id('tfg:shaped/arrow') - - // Ice - event.remove({ id: 'gtceu:compressor/ice_from_dust' }) - event.remove({ id: 'gtceu:compressor/ice_from_snow' }) - - event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings']) - .id('tfg:shaped/ice_shavings') - - event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings') - .id('tfg:quern/ice_dust') - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings') - .itemInputs('firmalife:ice_shavings') - .itemOutputs('#forge:small_dusts/ice') - .duration(10) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse') - .itemInputs('#forge:dusts/ice') - .itemOutputs('4x firmalife:ice_shavings') - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_solidifier('tfg:ice') - .inputFluids("#tfg:clean_water 144") - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('minecraft:ice') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers']) - - event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice') - .itemInputs('1x tfg:dry_ice') - .inputFluids("#tfc:water 8000") - .outputFluids(Fluid.of('gtceu:ice', 8000)) - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - - // Cooling water - event.recipes.tfc.barrel_sealed(250) - .inputItem('1x tfg:dry_ice') - .inputFluid(Fluid.of('minecraft:water', 5000)) - .outputFluid(Fluid.of('gtceu:ice', 5000)) - .id('tfg:barrel/cooling_water_0') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_1') - - event.recipes.tfc.barrel_sealed(1000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('minecraft:water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_2') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('1x #forge:dusts/ice') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_3') - - event.recipes.tfc.barrel_sealed(2000) - .inputItem('16x minecraft:snowball') - .inputFluid(Fluid.of('tfc:salt_water', 144)) - .outputFluid(Fluid.of('gtceu:ice', 144)) - .id('tfg:barrel/cooling_water_4') - - // Freezing it - event.recipes.tfc.barrel_sealed(3000) - .inputItem('9x #forge:dusts/ice') - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputItem('minecraft:packed_ice') - .id('tfg:barrel/packed_ice') - - // Heating it back up - event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100) - .fluidOutput(Fluid.of('minecraft:water', 144)) - - event.recipes.firmalife.vat() - .inputFluid(Fluid.of('gtceu:ice', 144)) - .outputFluid(Fluid.of('minecraft:water', 144)) - .length(300) - .temperature(100) - - // Snow - event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball', - 'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place') - .id('tfg:stomping/snow_layer') - - event.shapeless('minecraft:snow_block', ['8x minecraft:snow']) - .id('tfg:shapeless/snow_block') - - event.shapeless('8x minecraft:snowball', ['minecraft:snow_block']) - .id('tfg:shapeless/snowball') - - event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws']) - .id('tfg:shapeless/snow') - - //Cloth & String - event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread') - .itemInputs('1x minecraft:phantom_membrane') - .itemOutputs('16x tfg:phantom_thread') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string') - .itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)) - .itemOutputs('32x tfg:polycaprolactam_string') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/phantom_silk') - .itemInputs('16x tfg:phantom_thread') - .itemOutputs('1x tfg:phantom_silk') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric') - .itemInputs('16x tfg:polycaprolactam_string') - .itemOutputs('1x tfg:polycaprolactam_fabric') - .duration(100) - .circuit(3) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string') - .itemInputs('tfg:polycaprolactam_string') - .inputFluids(Fluid.of('gtceu:chlorine', 16)) - .itemOutputs('minecraft:string') - .duration(80) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.CHEM_DYES) - - event.recipes.tfc.loom( - '1x tfg:phantom_silk', - '16x tfg:phantom_thread', - 8, - 'tfg:block/phantom_silk_block' - ) - - event.recipes.tfc.loom( - '1x tfg:polycaprolactam_fabric', - '16x tfg:polycaprolactam_string', - 8, - 'tfg:block/polycaprolactam_fabric_block' - ) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('16x tfg:phantom_thread', [ - 'minecraft:phantom_membrane', - 'tfc:spindle' - ]).id('tfg:shapeless/phantom_thread')) - // Universal Circuit global.UNIVERSAL_CIRCUIT_TIERS.forEach(tier => { event.shapeless(Item.of(`tfg:${tier}_universal_circuit`, 1), [Ingredient.of([`#gtceu:circuits/${tier}`]).subtract([`tfg:${tier}_universal_circuit`])] ).id(`universal_circuits_${tier}`); }); - + // Armor stands event.shapeless('1x tfg:armor_stand_arms', [ 'minecraft:armor_stand' ]).id(`tfg:shapeless/armor_stand_arms`) @@ -381,6 +36,7 @@ function registerTFGMiscellaneousRecipes(event) { 'tfg:armor_stand_arms' ]).id(`tfg:shapeless/armor_stand`) + // Piglin disguise event.recipes.tfc.sewing( '1x tfg:piglin_disguise', [ @@ -397,7 +53,7 @@ function registerTFGMiscellaneousRecipes(event) { ] ).id('tfg:sewing/piglin_disguise') - //trowel + //Trowel event.shaped('tfg:trowel', [ 'DBC', 'AA ', @@ -416,844 +72,6 @@ function registerTFGMiscellaneousRecipes(event) { .circuit(4) .EUt(GTValues.VA[GTValues.ULV]) - // Food related - event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack') - .itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1)) - .itemOutputs('1x tfg:foil_pack') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('2x tfg:dry_ice') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2') - .inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .duration(160) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .notConsumable('gtceu:block_casting_mold') - .itemOutputs('10x tfg:dry_ice') - .duration(60) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2') - .itemInputs('1x tfg:dry_ice') - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice') - .inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 100)) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.mixer('tfg:clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids("#tfg:clean_water 100") - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack') - .itemInputs('1x tfg:used_foil_pack') - .inputFluids(Fluid.of('gtceu:distilled_water', 10)) - .itemOutputs('1x tfg:clean_foil_pack') - .duration(200) - .circuit(2) - .EUt(GTValues.VA[GTValues.ULV]) - - event.custom({ - type: "ae2:transform", - circumstance: { - type: "fluid", - tag: "tfc:water" - }, - ingredients: [ - { item: 'tfg:used_foil_pack' }], - result: { item: 'tfg:clean_foil_pack' } - }).id('tfg:ae_transform/clean_foil_pack') - - event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack') - .id('tfg:splashing/clean_foil_pack') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/calorie_paste' - ]).id('tfg:shapeless/emptying/calorie_paste') - - event.shapeless('1x tfg:used_foil_pack', [ - 'tfg:food/meal_bag' - ]).id('tfg:shapeless/emptying/meal_bag') - - global.FOOD_FRUIT.forEach(fruit => { - event.shapeless('1x tfg:used_foil_pack', [ - `tfg:food/freeze_dried/${fruit.name}` - ]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`) - }) - - // Refrigerants - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane') - .inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000)) - .outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000)) - .duration(480) - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane') - .inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200)) - .outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200)) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene') - .inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000)) - .circuit(4) - .duration(120) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane') - .inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000)) - .outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000)) - .circuit(4) - .duration(480) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.cracker('tfg:cracker/isobutane') - .inputFluids(Fluid.of('gtceu:butane', 4000)) - .outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000)) - .circuit(4) - .duration(2400) - .EUt(GTValues.VA[GTValues.HV]) - - // Biofuels - - event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - // So you can craft Biodiesel without Chemical Reactor - event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) - .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`) - .inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000)) - .itemInputs('#forge:tiny_dusts/sodium_hydroxide') - .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) - .duration(20 * 10) - .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.extractor(`rapeseed_oil`) - .itemInputs('tfg:rapeseed_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 600)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.extractor(`sunflower_oil`) - .itemInputs('tfg:sunflower_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 350)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 250)) - .id('tfg:barrel/rapeseed_to_oil') - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 120)) - .id('tfg:barrel/sunflower_to_oil') - - // Not-ender pearl stuff - - event.recipes.gtceu.chemical_reactor('kaolinite') - .itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.chemical_reactor('kaolinite_ruby') - .itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon') - .inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000)) - .itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium') - .outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000)) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust') - .itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1') - .inputFluids(Fluid.of('gtceu:nitrogen', 100)) - .itemOutputs('tfg:vitrified_pearl') - .chancedOutput('gtceu:ash_dust', 2500, 0) - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite') - .itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel') - .itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt') - .itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt') - .itemOutputs('3x tfg:vitrified_pearl') - .chancedOutput('#forge:dusts/dark_ash', 2500, 0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.macerator('vitrified_ender_pearl') - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('#forge:dusts/vitrified_pearl') - .duration(40) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.shaped('gtceu:mv_field_generator', [ - 'ABA', - 'CDC', - 'ABA' - ], { - A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1), - B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1), - C: '#gtceu:circuits/mv', - D: 'tfg:vitrified_pearl' - }).addMaterialInfo().id('gtceu:shaped/field_generator_mv') - - event.recipes.gtceu.assembler('field_generator_mv') - .itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride') - .itemOutputs('gtceu:mv_field_generator') - .duration(100) - .EUt(30) - - // Harvest Baskets - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfg:soaked_hardwood_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_wood') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood') - .itemInputs( - '5x tfg:soaked_hardwood_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.shaped('tfg:harvest_basket', [ - 'BDB', - 'ACA', - 'AAA' - ], { - A: 'tfc:soaked_papyrus_strip', - B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1), - C: 'tfc:glue', - D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - }).id('tfg:shaped/harvest_basket_from_papyrus') - - event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus') - .itemInputs( - '5x tfc:soaked_papyrus_strip', - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2), - ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1) - ) - .inputFluids(Fluid.of('gtceu:glue', 50)) - .itemOutputs('tfg:harvest_basket') - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3), - ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2), - ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rodLong, - GTMaterials.Aluminium, 1) - ) - .inputFluids(Fluid.of('gtceu:cobalt_brass', 144)) - .itemOutputs('tfg:aluminium_harvest_basket') - .duration(200) - .circuit(4) - .EUt(GTValues.VA[GTValues.LV]) - .addMaterialInfo(true) - - //Rock-wool stuff - event.recipes.gtceu.mixer('tfg:aes_mix') - .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') - .itemOutputs('10x tfg:aes_mix_dust') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') - .itemInputs('2x tfg:aes_mix_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .chancedOutput('gtceu:ash_dust', 3000, 0) - .circuit(1) - .duration(400) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') - .itemInputs('2x tfg:aes_mix_dust') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 1000)) - .circuit(2) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:aes_wool') - .inputFluids(Fluid.of('tfg:molten_aes', 200)) - .itemOutputs('tfg:aes_wool') - .duration(30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') - .itemInputs('4x tfg:aes_wool') - .notConsumable('gtceu:ingot_casting_mold') - .itemOutputs('tfg:aes_compressed_wool') - .duration(40) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') - .itemInputs('tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 72)) - .circuit(1) - .itemOutputs('tfg:aes_insulation_sheet') - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_compressed_wool') - .inputFluids(Fluid.of('gtceu:epoxy', 648)) - .itemOutputs('tfg:aes_insulation_roll') - .circuit(9) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.assembler('tfg:aes_insulation_roll') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shaped('tfg:aes_insulation_roll', [ - 'AAA', - 'AAA', - 'AAA' - ], { - A: 'tfg:aes_insulation_sheet' - }).id('tfg:shaped/aes_insulation_roll') - - event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') - .itemInputs('9x tfg:aes_insulation_sheet') - .itemOutputs('tfg:aes_insulation_roll') - .circuit(0) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - - event.shapeless('9x tfg:aes_insulation_sheet', [ - 'tfg:aes_insulation_roll' - ]).id('tfg:shapeless/aes_insulation_sheet') - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') - .itemInputs('tfg:aes_insulation_sheet') - .inputFluids(Fluid.of('gtceu:helium', 200)) - .outputFluids(Fluid.of('tfg:molten_aes', 800)) - .chancedOutput('gtceu:ash_dust', 2500, 0) - .circuit(1) - .duration(140) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') - .itemInputs('tfg:aes_insulation_roll') - .inputFluids(Fluid.of('gtceu:helium', 1000)) - .itemOutputs('2x gtceu:ash_dust') - .outputFluids(Fluid.of('tfg:molten_aes', 7200)) - .circuit(9) - .duration(1000) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') - .itemInputs('tfg:sniffer_wool') - .chancedOutput('gtceu:ash_dust', 7500, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 200)) - .circuit(4) - .duration(80) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') - .itemInputs('tfg:wraptor_wool') - .chancedOutput('gtceu:ash_dust', 5000, 0) - .outputFluids(Fluid.of('tfg:molten_aes', 100)) - .circuit(8) - .duration(60) - .blastFurnaceTemp(3000) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('8x tfc:wool_yarn', [ - 'tfc:spindle', - 'tfg:glacian_wool' - ]).id('tfg:shapeless/glacian_wool_to_yarn')) - - event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn') - .itemInputs('tfg:glacian_wool') - .itemOutputs('8x tfc:wool_yarn') - .duration(100) - .EUt(4) - - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'tfg:wraptor_wool', - '#forge:tools/knives' - ]).id('tfg:shapeless/wraptor_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching') - .itemInputs('1x tfg:wraptor_wool') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - - - //endregion - - //#region Casings - global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => { - const multiplier = index + 1 - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4) - ) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier)) - .circuit(4) - .duration(400) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`) - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), - ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1), - ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4)) - .inputFluids(Fluid.of('gtceu:epoxy', 144)) - .itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier)) - .circuit(7) - .duration(600) - .EUt(GTValues.VA[GTValues.MV]) - }) - - event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator') - .itemInputs( - '2x #forge:plates/desh', - 'gtceu:mv_voltage_coil', - '5x tfg:dry_ice', - 'gtceu:nonconducting_casing' - ) - .inputFluids(Fluid.of('gtceu:blue_alloy', 288)) - .itemOutputs('6x tfg:electromagnetic_accelerator') - .circuit(4) - .duration(800) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1) - ) - .inputFluids(Fluid.of('gtceu:silicon', 72)) - .itemOutputs('2x tfg:machine_casing_aluminium_plated_steel') - .circuit(6) - .duration(20 * (2.5)) - .EUt(GTValues.VH[GTValues.LV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_lens') - .itemInputs( - '24x #forge:lenses', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 1296)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.HV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_inr') - .itemInputs( - '1x gtceu:neutron_reflector', - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .itemOutputs('2x tfg:reflector') - .circuit(9) - .duration(20 * (20)) - .EUt(GTValues.VH[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:reflector_from_certus') - .itemInputs( - ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12), - ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1) - ) - .inputFluids(Fluid.of('gtceu:silver', 488)) - .itemOutputs('1x tfg:reflector') - .circuit(6) - .dimension('ad_astra:moon') - .duration(20 * (60)) - .EUt(GTValues.VH[GTValues.MV]) - - //#endregion - - //region ammonia borane - event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') - .itemInputs('#forge:dusts/sodium') - .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('2x #forge:dusts/sodium_hydride') - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') - .itemInputs('23x #forge:dusts/borax') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) - .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('minecraft:water', 5000)) - .duration(400) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') - .itemInputs('7x #forge:dusts/boric_acid') - .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) - .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') - .itemInputs('4x #forge:dusts/sodium_hydride') - .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) - .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') - .duration(160) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') - .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') - .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') - .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //region polyurethane - event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') - .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) - .notConsumable('#forge:dusts/iron') - .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) - .duration(140) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') - .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) - .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(120) - .circuit(2) - .EUt(GTValues.VA[GTValues.HV]) - event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') - .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) - .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') - .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) - .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) - .duration(200) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') - .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) - .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') - .outputFluids(Fluid.of('gtceu:methanol', 2000)) - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') - .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') - .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:aes_polyurethane') - .duration(80) - .EUt(GTValues.VA[GTValues.IV]) - - //endregion - - //Aerogel - event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') - .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) - .itemInputs('3x #forge:dusts/silicon_dioxide') - .notConsumable('#forge:small_dusts/potassium_hydroxide') - .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) - .outputFluids(Fluid.of('gtceu:methanol', 4000)) - .itemOutputs('3x #forge:dusts/silicon_dioxide') - .duration(100) - .EUt(GTValues.VA[GTValues.MV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') - .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), - Fluid.of('gtceu:hydrochloric_acid', 100)) - .outputFluids(Fluid.of('tfg:silica_gel', 1000)) - .duration(300) - .EUt(GTValues.VA[GTValues.IV]) - event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') - .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) - .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) - .duration(400) - .EUt(GTValues.VA[GTValues.EV]) - event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') - .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) - .itemOutputs('tfg:silica_aerogel') - .duration(400) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //Tier 3 insulation - event.recipes.gtceu.forming_press('tfg:mli_shielding') - .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') - .itemOutputs('tfg:mli_shielding') - .duration(100) - .EUt(GTValues.VA[GTValues.IV]) - //endregion - - //#region Universal compost - - //Greens - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 1), [ - 'AB' - ], { - A: '#tfc:compost_greens_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 2), [ - 'AB' - ], { - A: '#tfc:compost_greens', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_greens', 4), [ - 'AB' - ], { - A: '#tfc:compost_greens_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_greens_from_high') - - // Filters - const greens_low = Ingredient.of('#tfc:compost_greens_low') - const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds - const greens_medium = Ingredient.of('#tfc:compost_greens') - const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds - const greens_high = Ingredient.of('#tfc:compost_greens_high') - const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds - - let low_filtered = greens_low - let medium_filtered = greens_medium - let high_filtered = greens_high - - browns_low.forEach(item => { - low_filtered = low_filtered.subtract(item) - low_filtered = low_filtered.subtract('tfg:universal_compost_greens') - }) - browns_medium.forEach(item => { - medium_filtered = medium_filtered.subtract(item) - }) - browns_high.forEach(item => { - high_filtered = high_filtered.subtract(item) - }) - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low') - .itemInputs(low_filtered) - .itemOutputs('tfg:universal_compost_greens') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium') - .itemInputs(medium_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high') - .itemInputs(high_filtered) - .itemOutputs(Item.of('tfg:universal_compost_greens', 4)) - .duration(20) - .EUt(8) - - //Browns - // Lows via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 1), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_low', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_low') - - // Mediums via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 2), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_medium') - - // Highs via crafting with mortar - event.shaped(Item.of('tfg:universal_compost_browns', 4), [ - 'A', - 'B' - ], { - A: '#tfc:compost_browns_high', - B: '#forge:tools/mortars' - }).id('tfg:shaped/universal_compost_browns_from_high') - - // Lows via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low') - .itemInputs('#tfc:compost_browns_low') - .itemOutputs('tfg:universal_compost_browns') - .duration(20) - .EUt(8) - - // Mediums via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium') - .itemInputs('#tfc:compost_browns') - .itemOutputs(Item.of('tfg:universal_compost_browns', 2)) - .duration(20) - .EUt(8) - - // Highs via forge hammer - event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high') - .itemInputs('#tfc:compost_browns_high') - .itemOutputs(Item.of('tfg:universal_compost_browns', 4)) - .duration(20) - .EUt(8) - - //#endregion - // Etching Tip event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('tfg:etching_diamond_tip', [ '#forge:tools/hammers', @@ -1263,220 +81,7 @@ function registerTFGMiscellaneousRecipes(event) { event.replaceInput({ id: "minecraft:jukebox" }, 'minecraft:diamond', 'tfg:etching_diamond_tip'); - //Large Nest - event.shaped('tfg:large_nest_box', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:crimson_thatch', - B: 'beneath:crimson_straw' - }).id('tfg:shaped_large_nest_crimson') - - event.shaped('tfg:large_nest_box_warped', - [ - 'B B', - 'ABA', - 'AAA' - ], { - A: 'beneath:warped_thatch', - B: 'beneath:warped_straw' - }).id('tfg:shaped_large_nest_warped') - - //#endregion - - //#region flax stuff - - event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product']) - event.recipes.gtceu.packer('tfg:packer/flax_bundle') - .itemInputs('9x tfg:flax_product') - .itemOutputs('tfg:flax_bundle') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste']) - event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax') - .itemInputs('9x tfg:flax_waste') - .itemOutputs('tfg:bundled_scraped_flax') - .duration('100') - .EUt(GTValues.VA[GTValues.ULV]) - - event.recipes.tfc.scraping( - 'tfg:flax_waste', - 'tfg:flax_product', - 'tfg:item/flax_waste', - 'tfg:item/flax_product', - '2x tfg:flax_line' - ).id('tfg:scraping/flax_line') - - event.recipes.tfc.scraping( - 'tfg:bundled_scraped_flax', - 'tfg:flax_bundle', - 'tfg:item/bundled_scraped_flax', - 'tfg:item/flax_bundle', - '18x tfg:flax_line' - ).id('tfg:scraping/flax_line_from_bundle') - - event.recipes.tfc.scraping( - 'tfc:groundcover/humus', - 'tfg:flax_waste', - 'tfc:item/groundcover/humus', - 'tfg:item/flax_waste', - 'tfg:flax_tow' - ).id('tfg:scraping/flax_tow') - - event.recipes.tfc.scraping( - '9x tfc:groundcover/humus', - 'tfg:bundled_scraped_flax', - 'tfc:item/groundcover/humus', - 'tfg:item/bundled_scraped_flax', - '9x tfg:flax_tow' - ).id('tfg:scraping/flax_tow_from_pile') - - event.recipes.gtceu.cutter('tfg:flax_line_in_cutter') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_waste') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax') - .duration(540) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter') - .itemInputs('tfg:flax_waste') - .itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus') - .duration(60) - .EUt(2) - - event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter') - .itemInputs('tfg:bundled_scraped_flax') - .itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(540) - .EUt(2) - - event.recipes.gtceu.centrifuge('tfg:flax_product') - .itemInputs('tfg:flax_product') - .itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus') - .duration(200) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle') - .itemInputs('tfg:flax_bundle') - .itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus') - .duration(1800) - .EUt(GTValues.VA[GTValues.LV]) - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_product' }], - results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }], - processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax') - - event.custom({ - type: 'vintageimprovements:centrifugation', - ingredients: [{ item: 'tfg:flax_bundle' }], - results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }], - processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_seperate_flax_from_bundle') - - //#region flax line spining - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:linen_thread', [ - 'tfg:flax_line', - 'tfc:spindle' - ]).id('tfg:shapeless/linen_thread') - ) - - event.custom({ - type: 'vintageimprovements:coiling', - ingredients: [{ item: 'tfg:flax_line' }], - results: [{ item: 'tfg:linen_thread', count: 4 }], - processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER - }).id('tfg:vi_spin_flax_line') - - event.recipes.gtceu.wiremill('tfg:spin_flax_line') - .itemInputs('tfg:flax_line') - .itemOutputs('4x tfg:linen_thread') - .duration(80) - .EUt(GTValues.VA[GTValues.LV]) - - //#region flax looming - event.recipes.tfc.loom( - '1x tfg:linen_cloth', - '16x tfg:linen_thread', - 8, - 'tfc:block/burlap' - ) - - event.recipes.tfc.loom( - '1x tfc:burlap_cloth', - '16x tfg:flax_tow', - 12, - 'tfc:block/burlap' - ) - - event.recipes.gtceu.assembler('tfg:assembler/linen_cloth') - .itemInputs('16x tfg:linen_thread') - .circuit(10) - .itemOutputs('tfg:linen_cloth') - .duration(100) - .EUt(4) - - event.recipes.gtceu.assembler('tfg:assembler/flax_burlap') - .itemInputs('16x tfg:flax_tow') - .circuit(10) - .itemOutputs('tfc:burlap_cloth') - .duration(100) - .EUt(4) - - - - event.recipes.gtceu.assembler('tfg:titanium_concrete') - .itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite') - .inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5)) - .itemOutputs('tfg:titanium_concrete') - .circuit(2) - .duration(20) - .EUt(GTValues.VH[GTValues.EV]) - - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/light_blue') - .itemOutputs('tfg:titanium_concrete_bricks') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/pink') - .itemOutputs('tfg:titanium_concrete_bricks_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/green') - .itemOutputs('tfg:titanium_concrete_bricks_square') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/red') - .itemOutputs('tfg:titanium_concrete_tile') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small') - .itemInputs('tfg:polished_titanium_concrete') - .notConsumable('#forge:lenses/black') - .itemOutputs('tfg:titanium_concrete_tile_small') - .duration(20 * (2.5)) - .EUt(GTValues.VA[GTValues.LV]) - // Interplanetary ae2 card - event.recipes.gtceu.assembler('tfg:wireless_card') .itemInputs( 'ae2:advanced_card', @@ -1529,35 +134,5 @@ function registerTFGMiscellaneousRecipes(event) { }); TFGHelpers.registerMaterialInfo('tfg:rnr_plow', {'cobalt_brass': 5, 'invar': 2, 'steel': 2, 'wrought_iron': 2, 'rubber': 1, 'treated_wood': 1}); - //#endregion - //#region Wax Unification - - // Recipe Removals - event.remove({id: 'gtceu:extractor/extract_honeycomb_block'}); - event.remove({id: 'gtceu:extractor/extract_honeycomb'}); - event.remove({id: 'gtceu:extractor/extract_wax_dust'}); - - // Extractor Recipe - event.recipes.gtceu.extractor('tfg:wax_melting') - .itemInputs(Ingredient.of('#forge:wax')) - .outputFluids(Fluid.of('gtceu:wax', 144)) - .duration(20*5) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 16)) - .duration(10) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - - event.recipes.gtceu.extractor('tfg:small_wax_dust_melting') - .itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1)) - .outputFluids(Fluid.of('gtceu:wax', 36)) - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .category(GTRecipeCategories.EXTRACTOR_RECYCLING); - //#endregion } diff --git a/kubejs/server_scripts/tfg/recipes.space.js b/kubejs/server_scripts/tfg/recipes.space.js deleted file mode 100644 index 17fb6edab..000000000 --- a/kubejs/server_scripts/tfg/recipes.space.js +++ /dev/null @@ -1,457 +0,0 @@ -// priority: 0 -"use strict"; - -/** - * @param {Internal.RecipesEventJS} event - */ -function registerTFGSpaceRecipes(event) { - - const allowedCombustibleDims = [ - { - dimension: "minecraft:the_nether", - type: "dimension" - }, - { - dimension: "minecraft:overworld", - type: "dimension" - } - ] - - event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { - recipe.json.add("recipeConditions", allowedCombustibleDims) - }) - - // Air collector - - event.recipes.gtceu.gas_collector('tfg:nether') - .circuit(2) - .outputFluids(Fluid.of('gtceu:air', 10000)) - .dimension('minecraft:the_nether') - .duration(200) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:moon') - .circuit(3) - .outputFluids(Fluid.of('gtceu:argon', 1)) - .dimension('ad_astra:moon') - .duration(20*60*30) - .EUt(16) - - event.recipes.gtceu.gas_collector('tfg:mars') - .circuit(4) - .outputFluids(Fluid.of('tfg:mars_air', 10000)) - .dimension('ad_astra:mars') - .duration(20*10) - .EUt(16) - - event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 4000)) - .outputFluids(Fluid.of('tfg:liquid_mars_air', 4000)) - .duration(80) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air') - .inputFluids(Fluid.of('tfg:mars_air', 10000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500)) - .duration(1600) - .EUt(GTValues.VA[GTValues.MV]) - - // TODO: move neon and xenon somewhere else - event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air') - .inputFluids(Fluid.of('tfg:liquid_mars_air', 100000)) - .outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000)) - .outputFluids(Fluid.of('gtceu:nitrogen', 7000)) - .outputFluids(Fluid.of('gtceu:argon', 5000)) - .outputFluids(Fluid.of('gtceu:oxygen', 3000)) - .outputFluids(Fluid.of('gtceu:krypton', 1000)) - .outputFluids(Fluid.of('gtceu:neon', 1000)) - .outputFluids(Fluid.of('gtceu:xenon', 1000)) - .chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0) - .disableDistilleryRecipes(true) - .duration(2000) - .EUt(GTValues.VA[GTValues.EV]) - - // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues - - let aaCircuit = 1; - - event.recipes.gtceu.aqueous_accumulator('water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('sea_water') - .circuit(aaCircuit++) - .duration(20) - .EUt(GTValues.VA[GTValues.ULV]) - .adjacentFluids(["tfc:salt_water"]) - .outputFluids(Fluid.of("tfc:salt_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') - .circuit(aaCircuit++) - .dimension('ad_astra:mars') - .duration(20) - .EUt(GTValues.VHA[GTValues.ULV]) - .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) - .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_overworld') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('lava_nether') - .circuit(aaCircuit++) - .dimension('minecraft:the_nether') - .duration(20*15) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:lava"]) - .outputFluids(Fluid.of("minecraft:lava", 1000)) - - event.recipes.gtceu.aqueous_accumulator('spring_water') - .circuit(aaCircuit++) - .dimension('minecraft:overworld') - .duration(20) - .EUt(GTValues.VA[GTValues.LV]) - .adjacentFluids(["tfc:spring_water"]) - .outputFluids(Fluid.of("tfc:spring_water", 1000)) - - event.recipes.gtceu.aqueous_accumulator('more_water') - .circuit(aaCircuit++) - .duration(10) - .EUt(GTValues.VHA[GTValues.HV]) - .adjacentFluids(["minecraft:water"]) - .outputFluids(Fluid.of("minecraft:water", 16000)) - - - // Plants - Can't use the default builder here because fertiliser is much harder to get on the moon, - // and we're using helium-3 as the fertiliser - - // Chorus - event.recipes.gtceu.greenhouse('tfg:chorus') - .notConsumable('8x tfg:lunar_chorus_flower') - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 500, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 750, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:chorus_helium') - .notConsumable('8x tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('64x minecraft:chorus_fruit') - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0) - .chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0) - .duration(12000) // 10 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - // Replace the built-in greg one to add a circuit - event.recipes.gtceu.fermenter('fermented_biomass') - .inputFluids(Fluid.of('gtceu:biomass', 100)) - .outputFluids(Fluid.of('gtceu:fermented_biomass', 100)) - .circuit(1) - .duration(150) - .EUt(2) - - event.recipes.gtceu.fermenter('tfg:chorus') - .itemInputs('minecraft:chorus_fruit') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.fermenter('tfg:chorus_flower') - .itemInputs('tfg:lunar_chorus_flower') - .inputFluids(Fluid.of('gtceu:biomass', 20)) - .chancedOutput('ae2:ender_dust', 100, 0) - .outputFluids(Fluid.of('gtceu:nitrogen', 1000)) - .circuit(2) - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.mixer('tfg:bio_glowstone') - .itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block') - .outputFluids(Fluid.of('gtceu:biomass', 100)) - .itemOutputs('2x minecraft:glowstone_dust') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.EV]) - .dimension('ad_astra:mars') - - // Lightblooms - event.recipes.gtceu.greenhouse('tfg:lightbloom') - .notConsumable('8x minecraft:twisting_vines') - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 2500, 0) - .chancedOutput('minecraft:verdant_froglight', 2500, 0) - .chancedOutput('minecraft:ochre_froglight', 2500, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse('tfg:lightbloom_helium') - .notConsumable('8x minecraft:twisting_vines') - .inputFluids(Fluid.of('gtceu:helium_3', 2000)) - .itemOutputs('16x minecraft:twisting_vines') - .chancedOutput('minecraft:pearlescent_froglight', 3500, 0) - .chancedOutput('minecraft:verdant_froglight', 3500, 0) - .chancedOutput('minecraft:ochre_froglight', 3500, 0) - .duration(12000) // 30 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.LV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.brewery('biomass_from_twisting_vines') - .itemInputs('minecraft:twisting_vines') - .inputFluids("#tfg:clean_water 20") - .outputFluids(Fluid.of('gtceu:biomass', 20)) - .duration(50) - .EUt(3) - - // Space suit gases - - event.recipes.gtceu.gas_pressurizer('compressed_nitrox') - .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox') - .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') - .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) - .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) - .circuit(1) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') - .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) - .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) - .circuit(2) - .duration(100) - .EUt(GTValues.VA[GTValues.HV]) - - //Cryo Fluix Pearl - event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl') - .inputFluids(Fluid.of('tfg:cryogenized_fluix', 576)) - .itemInputs('tfg:vitrified_pearl') - .itemOutputs('tfg:cryo_fluix_pearl') - .duration(300) - .EUt(GTValues.VA[GTValues.EV]) - .cleanroom(CleanroomType.CLEANROOM) - - // Railgun stuff - // (the railgun inputs and outputs are in tfg-core) - - - //item bus to railgun item bus conversion recipes - const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] - GTTiers.forEach(x => { - event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) - .itemInputs(`gtceu:${x}_input_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_in`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) - .itemInputs(`gtceu:${x}_output_bus`) - .circuit(4) - .itemOutputs(`tfg:${x}_railgun_item_loader_out`) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.LV]) - }) - - //Railgun ammo - event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') - .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') - .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_best') - .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') - .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('4x tfg:railgun_ammo_shell') - .dimension('ad_astra:moon') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') - .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') - .inputFluids('gtceu:rocket_fuel 250') - .itemOutputs('8x tfg:railgun_ammo_shell') - .dimension('ad_astra:mars') - .duration(20 * 10) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ - 'RMR', - 'MBM', - 'CCC' - ], { - B: 'gtceu:mv_input_bus', - R: 'gtceu:mv_robot_arm', - M: 'gtceu:mv_electric_motor', - C: '#forge:single_cables/annealed_copper' - }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') - - event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ - 'CDC', - 'SHE', - 'WCW' - ], { - C: '#gtceu:circuits/hv', - D: 'gtceu:computer_monitor_cover', - S: 'gtceu:hv_sensor', - H: 'gtceu:hv_machine_hull', - E: 'gtceu:hv_emitter', - W: '#forge:single_cables/silver' - }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ - 'NSN', - 'CHC', - 'NEN' - ], { - C: '#gtceu:circuits/ev', - S: 'gtceu:hv_sensor', - E: 'gtceu:hv_emitter', - H: 'gtceu:ev_machine_hull', - N: '#forge:plates/hsla_steel' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') - - event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ - 'CSC', - 'WHW', - 'CSC' - ], { - C: '#gtceu:circuits/mv', - S: 'gtceu:mv_sensor', - W: '#forge:double_cables/copper', - H: 'gtceu:mv_machine_hull' - }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') - - // Mars tree tapping - - event.recipes.gtceu.autoclave('tfg:crimsene') - .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000)) - .itemOutputs('#forge:gems/crimsene') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.autoclave('tfg:warpane') - .inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) - .outputFluids(Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:gems/warpane') - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.macerator('tfg:crimsene') - .itemInputs('#forge:gems/crimsene') - .itemOutputs('#forge:dusts/crimsene') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.macerator('tfg:warpane') - .itemInputs('#forge:gems/warpane') - .itemOutputs('#forge:dusts/warpane') - .duration(20 * 5) - .EUt(2) - - event.recipes.gtceu.mixer('tfg:mars_sap') - .itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene') - .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500)) - .itemOutputs('#forge:dusts/mycelienzene') - .duration(30 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.deafission.fission_reactor_processing('tfg:mars_sap') - .itemInputs('#forge:dusts/mycelienzene') - .outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000)) - // TODO: change these to something appropriate - .blastFurnaceTemp(100) - .duration(30 * 10) - - event.recipes.gtceu.centrifuge('mars_sap_separation') - .inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000)) - .outputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:krypton', 1000), - Fluid.of('gtceu:diluted_hydrochloric_acid', 4000)) - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation') - .inputFluids( - Fluid.of('tfg:iodomethane', 1000), - Fluid.of('gtceu:hydrogen', 1000)) - .itemOutputs('#forge:dusts/iodine') - .outputFluids(Fluid.of('gtceu:methane', 1000)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation') - .inputFluids( - Fluid.of('tfg:trideuteroiodomethane', 1000), - Fluid.of('gtceu:oxygen', 1500)) - .itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon') - .outputFluids(Fluid.of('tfg:heavy_water', 1500)) - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.MV]) -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.space_ores.js b/kubejs/server_scripts/tfg/recipes.space_ores.js deleted file mode 100644 index ce2a650ae..000000000 --- a/kubejs/server_scripts/tfg/recipes.space_ores.js +++ /dev/null @@ -1,259 +0,0 @@ -// priority: 0 - -function registerTFGSpaceOres(event) { - - //#region Moon Harvester - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester') - .biome('tfg:moon/lunar_asurine_dense') - .itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(1) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense') - .biome('tfg:moon/lunar_chorus_dense') - .itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(2) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense') - .biome('tfg:moon/lunar_corals_dense') - .itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(3) - - event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense') - .biome('tfg:moon/lunar_lights_dense') - .itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5) - .duration(20 * 80) - .EUt(GTValues.VA[GTValues.LV]) - .circuit(4) - - //#endregion - - //#region Regolith Vapor Processing - - event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension') - .itemInputs('ad_astra:moon_sand', 'tfg:dry_ice') - .itemOutputs('#forge:dusts/regolith_mush') - .dimension('ad_astra:moon') - .duration(20 * 60) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_bath('tfg:regolith_vapor') - .itemInputs('#forge:dusts/regolith_mush') - .inputFluids('gtceu:nitrogen 1000') - .itemOutputs('#forge:dusts/silicon_dioxide') - .outputFluids('gtceu:regolith_vapor 1000') - .dimension('ad_astra:moon') - .duration(20 * 28) - .EUt(GTValues.VHA[GTValues.LV]) - - //#endregion - - //#region Making Dusty Ores - - const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic') - - event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor') - .itemInputs('#forge:dusts/certus_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_certus_quartz') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor') - .itemInputs('#forge:dusts/goethe_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_goethite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor') - .itemInputs('#forge:dusts/bright_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('gtceu:dusty_raw_diamond', 2000, 0) - .chancedOutput('gtceu:dusty_raw_gold', 8000, 0) - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor') - .itemInputs('#forge:dusts/cassiterite_regolith') - .inputFluids('gtceu:regolith_vapor 100') - .itemOutputs('gtceu:dusty_raw_cassiterite') - .dimension('ad_astra:moon') - .duration(20 * 68) - .EUt(GTValues.VHA[GTValues.ULV]) - - //#endregion - - //#region Basic dusty ore centrifuging - - // These have special recipes - const DUSTY_ORE_EXCEPTIONS = [ - GTMaterials.Goethite, - GTMaterials.Cassiterite, - GTMaterials.Bauxite - ] - - // Otherwise everything else just centrifuges into its dust version - forEachMaterial(material => { - if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0) - return; - - const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1) - const dust = ChemicalHelper.get(TagPrefix.dust, material, 1) - - if (dustyOre !== null && dust !== null) { - event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`) - .itemInputs(dustyOre) - .itemOutputs(dust) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - } - }) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite') - .itemInputs('#forge:dusty_raw_materials/goethite') - .chancedItemOutputLogic($ChanceLogic.XOR) - .chancedOutput('#forge:dusts/iron', 5000, 0) - .chancedOutput('#forge:dusts/copper', 5000, 0) - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite') - .itemInputs('#forge:dusty_raw_materials/bauxite') - .itemOutputs('#forge:dusts/aluminium') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin') - .itemInputs('#forge:dusty_raw_materials/cassiterite') - .itemOutputs('#forge:dusts/tin') - .duration(20 * 45) - .EUt(GTValues.VA[GTValues.MV]) - - //#region Mars Ores Line - - // Ostrum Harvester - - event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`) - .perTick(true) - .inputFluids('gtceu:drilling_fluid 4') - .perTick(false) - .dimension('ad_astra:mars') - .itemOutputsRanged('gtceu:ostrum_dust', 1, 5) - .duration(20 * 30) - .EUt(GTValues.VA[GTValues.LV]); - - // Ostrum Linear Accelerator Recipes - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .itemInputs('32x #forge:dusts/ostrum') - .chancedFluidOutputLogic($ChanceLogic.XOR) - .chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0) - .chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0) - .chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.EV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum') - .inputFluids('gtceu:lightweight_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('tfg:heavy_water', 1000)) - .itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10) - .itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum') - .inputFluids('gtceu:ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:radon', 100)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum') - .inputFluids('gtceu:dense_ostrum_vapor 1000') - .inputFluids('gtceu:residual_radioactive_concoction 100') - .inputFluids(Fluid.of('gtceu:tritiated_water', 500)) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10) - .itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10) - .dimension('ad_astra:mars') - .duration(20 * 5) - .EUt(GTValues.VA[GTValues.IV]); - - - // #region Zirconium - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride') - .itemInputs('#forge:dusts/silicon') - .inputFluids('gtceu:chlorine 4000') - .outputFluids('tfg:silicon_tetrachloride 1000') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp') - .inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000') - .itemOutputs('#forge:dusts/silicon') - .outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000') - .duration(5 * 20) - .EUt(GTValues.VA[GTValues.LV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride') - .itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon') - .inputFluids('gtceu:chlorine 8000') - .outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000') - .itemOutputs('5x #forge:dusts/zirconium_tetrachloride') - .duration(20 * 20) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.electric_blast_furnace('tfg:zirconium') - .itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride') - .itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride') - .duration(55 * 20) - .blastFurnaceTemp(4241) - .EUt(GTValues.VA[GTValues.EV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide') - .itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon') - .inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000') - .itemOutputs('5x #forge:dusts/zirconium_bromide') - .outputFluids('gtceu:carbon_monoxide 2000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride') - .itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide') - .notConsumable('#forge:dusts/carbon') - .itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon') - .outputFluids('gtceu:bromine 8000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.IV]) - - event.recipes.gtceu.chemical_reactor('tfg:boron_carbide') - .itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon') - .inputFluids('gtceu:oxygen 6000') - .itemOutputs('5x #forge:dusts/boron_carbide') - .outputFluids('gtceu:carbon_monoxide 6000') - .duration(10 * 20) - .EUt(GTValues.VA[GTValues.HV]) - - // #endregion -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.insulation.js b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js new file mode 100644 index 000000000..40bd3062d --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.insulation.js @@ -0,0 +1,234 @@ +"use strict"; + +function registerTFGInsulationRecipes(event) { + + //#region Rock-wool stuff + event.recipes.gtceu.mixer('tfg:aes_mix') + .itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust') + .itemOutputs('10x tfg:aes_mix_dust') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes') + .itemInputs('2x tfg:aes_mix_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .chancedOutput('gtceu:ash_dust', 3000, 0) + .circuit(1) + .duration(400) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he') + .itemInputs('2x tfg:aes_mix_dust') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 1000)) + .circuit(2) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.centrifuge('tfg:aes_wool') + .inputFluids(Fluid.of('tfg:molten_aes', 200)) + .itemOutputs('tfg:aes_wool') + .duration(30) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.forming_press('tfg:aes_compressed_wool') + .itemInputs('4x tfg:aes_wool') + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('tfg:aes_compressed_wool') + .duration(40) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet') + .itemInputs('tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 72)) + .circuit(1) + .itemOutputs('tfg:aes_insulation_sheet') + .duration(80) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_compressed_wool') + .inputFluids(Fluid.of('gtceu:epoxy', 648)) + .itemOutputs('tfg:aes_insulation_roll') + .circuit(9) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.assembler('tfg:aes_insulation_roll') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shaped('tfg:aes_insulation_roll', [ + 'AAA', + 'AAA', + 'AAA' + ], { + A: 'tfg:aes_insulation_sheet' + }).id('tfg:shaped/aes_insulation_roll') + + event.recipes.gtceu.assembler('tfg:aes_insulation_sheet') + .itemInputs('9x tfg:aes_insulation_sheet') + .itemOutputs('tfg:aes_insulation_roll') + .circuit(0) + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + + event.shapeless('9x tfg:aes_insulation_sheet', [ + 'tfg:aes_insulation_roll' + ]).id('tfg:shapeless/aes_insulation_sheet') + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet') + .itemInputs('tfg:aes_insulation_sheet') + .inputFluids(Fluid.of('gtceu:helium', 200)) + .outputFluids(Fluid.of('tfg:molten_aes', 800)) + .chancedOutput('gtceu:ash_dust', 2500, 0) + .circuit(1) + .duration(140) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll') + .itemInputs('tfg:aes_insulation_roll') + .inputFluids(Fluid.of('gtceu:helium', 1000)) + .itemOutputs('2x gtceu:ash_dust') + .outputFluids(Fluid.of('tfg:molten_aes', 7200)) + .circuit(9) + .duration(1000) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool') + .itemInputs('tfg:sniffer_wool') + .chancedOutput('gtceu:ash_dust', 7500, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 200)) + .circuit(4) + .duration(80) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool') + .itemInputs('tfg:wraptor_wool') + .chancedOutput('gtceu:ash_dust', 5000, 0) + .outputFluids(Fluid.of('tfg:molten_aes', 100)) + .circuit(8) + .duration(60) + .blastFurnaceTemp(3000) + .EUt(GTValues.VA[GTValues.EV]) + // #endregion + + //#region ammonia borane + event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis') + .itemInputs('#forge:dusts/sodium') + .inputFluids(Fluid.of('gtceu:hydrogen', 1000)) + .itemOutputs('2x #forge:dusts/sodium_hydride') + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis') + .itemInputs('23x #forge:dusts/borax') + .inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000)) + .itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('minecraft:water', 5000)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis') + .itemInputs('7x #forge:dusts/boric_acid') + .inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100)) + .outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000)) + .duration(300) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis') + .itemInputs('4x #forge:dusts/sodium_hydride') + .inputFluids(Fluid.of('tfg:trimethyl_borate', 1000)) + .itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide') + .duration(160) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis') + .itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride') + .itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt') + .outputFluids(Fluid.of('gtceu:hydrogen', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region polyurethane + event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis') + .inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000)) + .notConsumable('#forge:dusts/iron') + .outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000)) + .duration(140) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis') + .inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000)) + .outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(120) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis') + .inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000)) + .outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis') + .inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000)) + .outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000)) + .duration(200) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis') + .inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000)) + .itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate') + .outputFluids(Fluid.of('gtceu:methanol', 2000)) + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only') + .itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate') + .inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:aes_polyurethane') + .duration(80) + .EUt(GTValues.VA[GTValues.IV]) + + //#endregion + + //#region Aerogel + event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis') + .inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000)) + .itemInputs('3x #forge:dusts/silicon_dioxide') + .notConsumable('#forge:small_dusts/potassium_hydroxide') + .outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000)) + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000)) + .outputFluids(Fluid.of('gtceu:methanol', 4000)) + .itemOutputs('3x #forge:dusts/silicon_dioxide') + .duration(100) + .EUt(GTValues.VA[GTValues.MV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis') + .inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500), + Fluid.of('gtceu:hydrochloric_acid', 100)) + .outputFluids(Fluid.of('tfg:silica_gel', 1000)) + .duration(300) + .EUt(GTValues.VA[GTValues.IV]) + event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking') + .inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000)) + .outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000)) + .duration(400) + .EUt(GTValues.VA[GTValues.EV]) + event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel') + .inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000)) + .outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000)) + .itemOutputs('tfg:silica_aerogel') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion + + //#region Tier 3 insulation + event.recipes.gtceu.forming_press('tfg:mli_shielding') + .itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate') + .itemOutputs('tfg:mli_shielding') + .duration(100) + .EUt(GTValues.VA[GTValues.IV]) + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.railgun.js b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js new file mode 100644 index 000000000..fb532c5bf --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.railgun.js @@ -0,0 +1,111 @@ +"use strict"; + +function registerTFGRailgunRecipes(event) { + + // Railgun stuff + // (the railgun inputs and outputs are in tfg-core) + + + //item bus to railgun item bus conversion recipes + const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv'] + GTTiers.forEach(x => { + event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`) + .itemInputs(`gtceu:${x}_input_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_in`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + + event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`) + .itemInputs(`gtceu:${x}_output_bus`) + .circuit(4) + .itemOutputs(`tfg:${x}_railgun_item_loader_out`) + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.LV]) + }) + + //Railgun ammo + event.recipes.gtceu.assembler('tfg:railgun_ammo_basic') + .itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced') + .itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_best') + .itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_moon') + .itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('4x tfg:railgun_ammo_shell') + .dimension('ad_astra:moon') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.assembler('tfg:railgun_ammo_mars') + .itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver') + .inputFluids('gtceu:rocket_fuel 250') + .itemOutputs('8x tfg:railgun_ammo_shell') + .dimension('ad_astra:mars') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [ + 'RMR', + 'MBM', + 'CCC' + ], { + B: 'gtceu:mv_input_bus', + R: 'gtceu:mv_robot_arm', + M: 'gtceu:mv_electric_motor', + C: '#forge:single_cables/annealed_copper' + }).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader') + + event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [ + 'CDC', + 'SHE', + 'WCW' + ], { + C: '#gtceu:circuits/hv', + D: 'gtceu:computer_monitor_cover', + S: 'gtceu:hv_sensor', + H: 'gtceu:hv_machine_hull', + E: 'gtceu:hv_emitter', + W: '#forge:single_cables/silver' + }).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [ + 'NSN', + 'CHC', + 'NEN' + ], { + C: '#gtceu:circuits/ev', + S: 'gtceu:hv_sensor', + E: 'gtceu:hv_emitter', + H: 'gtceu:ev_machine_hull', + N: '#forge:plates/hsla_steel' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher') + + event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [ + 'CSC', + 'WHW', + 'CSC' + ], { + C: '#gtceu:circuits/mv', + S: 'gtceu:mv_sensor', + W: '#forge:double_cables/copper', + H: 'gtceu:mv_machine_hull' + }).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.rockets.js b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js new file mode 100644 index 000000000..161eb46af --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.rockets.js @@ -0,0 +1,283 @@ +"use strict"; + +function registerTFGRocketRecipes(event) { + + //#region Tier 1 rocket + + event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1') + .itemInputs( + 'gtceu:hv_emitter', + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3)) + .inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16)) + .itemOutputs('ad_astra:rocket_nose_cone') + .duration(1200) + .circuit(2) + .EUt(480) + .addMaterialInfo(true, true) + + + event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust') + .inputFluids(Fluid.of('gtceu:nitrogen', 100)) + .itemInputs('gtceu:asbestos_dust') + .itemOutputs('gtceu:vitrified_asbestos_dust') + .duration(80) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t1') + .itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel') + .inputFluids(Fluid.of('gtceu:red_steel', 144)) + .itemOutputs('9x #forge:dusts/rocket_alloy_t1') + .duration(580) + .circuit(2) + .EUt(480) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('minecraft:water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(400) + .EUt(120) + + event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water') + .itemInputs('#forge:hot_ingots/rocket_alloy_t1') + .inputFluids(Fluid.of('gtceu:distilled_water', 100)) + .itemOutputs('#forge:ingots/rocket_alloy_t1') + .duration(250) + .EUt(120) + + event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`) + .itemInputs( + ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1), + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1) + ) + .itemOutputs('ad_astra:rocket_fin') + .duration(150) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_steel_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2), + '2x #gtceu:circuits/hv', + 'gtceu:hv_electric_pump', + '2x gtceu:power_thruster', + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1) + ) + .inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8)) + .itemOutputs('ad_astra:steel_engine') + .duration(600) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8), + '4x ad_astra:rocket_fin', + '1x ad_astra:steel_engine', + '1x ad_astra:rocket_nose_cone', + '16x #forge:insulation_t1', + '4x #gtceu:circuits/hv' + ) + .inputFluids(Fluid.of('gtceu:silicon', 144 * 16)) + .itemOutputs('ad_astra:tier_1_rocket') + .duration(1200) + .circuit(2) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true, true) + + //#endregion + + + //region tier 2 rocket + + event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' }) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(1320 * 20) + .circuit(2) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200)) + .outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32)) + .duration(17688) + .circuit(12) + .blastFurnaceTemp(3200) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2') + .notConsumable('gtceu:ingot_casting_mold') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.MV]) + + event.recipes.gtceu.mixer('tfg:rocket_alloy_t2') + .itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium') + .inputFluids(Fluid.of('gtceu:vanadium', 144 * 4)) + .itemOutputs('32x #forge:dusts/rocket_alloy_t2') + .duration(15 * 20) + .circuit(5) + .EUt(GTValues.VA[GTValues.EV]) + + event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2') + .itemInputs('#forge:hot_ingots/rocket_alloy_t2') + .inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288)) + .itemOutputs('#forge:ingots/rocket_alloy_t2') + .duration(120) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.assembler('tfg:rocket_fin_t2') + .itemInputs('#forge:plates/rocket_alloy_t2', + '#forge:double_plates/titanium') + .itemOutputs('tfg:rocket_fin_t2') + .duration(180) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t2') + .itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium', + '#forge:double_plates/desh') + .itemOutputs('tfg:rocket_cone_t2') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true) + + + event.recipes.gtceu.assembler('tfg:rocket_desh_engine') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4), + '2x #gtceu:circuits/ev', + 'gtceu:ev_electric_pump', + '3x gtceu:advanced_power_thruster', + ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4), + ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1)) + .inputFluids(Fluid.of('gtceu:desh', 144 * 12)) + .itemOutputs('ad_astra:desh_engine') + .duration(800) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_2_rocket') + .itemInputs( + ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12), + '4x tfg:rocket_fin_t2', + '1x ad_astra:desh_engine', + '1x tfg:rocket_cone_t2', + '12x #forge:insulation_t2/roll', + '4x #gtceu:circuits/ev' + ) + .inputFluids(Fluid.of('gtceu:titanium', 144 * 16)) + .itemOutputs('ad_astra:tier_2_rocket') + .duration(1440) + .circuit(3) + .EUt(GTValues.VA[GTValues.EV]) + .addMaterialInfo(true, true) + + //#endregion + + //region Tier 3 DISABLED UNTIL IV + event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" }) + event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" }) + /* + event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000)) + .notConsumable('gtceu:ingot_casting_mold') + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .duration(800) + .EUt(GTValues.VA[GTValues.HV]) + event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3') + .itemInputs('#forge:hot_ingots/rocket_alloy_t3') + .inputFluids(Fluid.of('gtceu:liquid_helium', 500)) + .itemOutputs('#forge:ingots/rocket_alloy_t3') + .outputFluids(Fluid.of('gtceu:helium', 250)) + .duration(400) + .EUt(GTValues.VA[GTValues.HV]) + + //Add some unique cooling thing for molten ingots + + event.recipes.gtceu.assembler('tfg:rocket_fin_t3') + .itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel') + .itemOutputs('tfg:rocket_fin_t3') + .duration(220) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_cone_t3') + .itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel', + '#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet + .itemOutputs('tfg:rocket_cone_t3') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:elite_power_thruster') + .itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium', + 'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable') + .itemOutputs('tfg:elite_power_thruster') + .duration(200) + .EUt(GTValues.VA[GTValues.LV]) + .addMaterialInfo(true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine') + .itemInputs( + '6x #forge:double_plates/tungsten_steel', + '4x #gtceu:circuits/iv', + 'gtceu:iv_electric_pump', + '3x tfg:elite_power_thruster', + '4x #forge:insulation_t3/cryo', + '6x #forge:rods/magnetic_neodymium', + '#forge:rotors/tungsten_steel') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 16)) + .itemOutputs('ad_astra:ostrum_engine') + .duration(960) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank') + .itemInputs( + '4x #forge:double_plates/rocket_alloy_t3', + 'gtceu:iv_electric_pump', + 'tfg:elite_power_thruster', + '2x #forge:insulation_t3/cryo') + .inputFluids(Fluid.of('gtceu:ostrum', 144 * 4)) + .itemOutputs('ad_astra:ostrum_tank') + .duration(400) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + event.recipes.gtceu.assembler('ad_astra:tier_3_rocket') + .itemInputs( + '16x #forge:dense_plates/rocket_alloy_t3', + '4x tfg:rocket_fin_t3', + '1x ad_astra:ostrum_engine', + '2x ad_astra:ostrum_tank', + '1x tfg:rocket_cone_t3', + '8x #forge:insulation_t3/sheet' + ) + .inputFluids(Fluid.of('gtceu:bromine', 1000 * 16)) + .itemOutputs('ad_astra:tier_3_rocket') + .duration(1700) + .circuit(4) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true, true) + + //#endregion +*/ +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space.js b/kubejs/server_scripts/tfg/space_general/recipes.space.js new file mode 100644 index 000000000..88e54b3a5 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space.js @@ -0,0 +1,114 @@ +// priority: 0 +"use strict"; + +/** + * @param {Internal.RecipesEventJS} event + */ +function registerTFGSpaceRecipes(event) { + + const allowedCombustibleDims = [ + { + dimension: "minecraft:the_nether", + type: "dimension" + }, + { + dimension: "minecraft:overworld", + type: "dimension" + } + ] + + event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => { + recipe.json.add("recipeConditions", allowedCombustibleDims) + }) + + // Air collector + + event.recipes.gtceu.gas_collector('tfg:nether') + .circuit(2) + .outputFluids(Fluid.of('gtceu:air', 10000)) + .dimension('minecraft:the_nether') + .duration(200) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:moon') + .circuit(3) + .outputFluids(Fluid.of('gtceu:argon', 1)) + .dimension('ad_astra:moon') + .duration(20*60*30) + .EUt(16) + + event.recipes.gtceu.gas_collector('tfg:mars') + .circuit(4) + .outputFluids(Fluid.of('tfg:mars_air', 10000)) + .dimension('ad_astra:mars') + .duration(20*10) + .EUt(16) + + + // Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues + + let aaCircuit = 1; + + event.recipes.gtceu.aqueous_accumulator('water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('sea_water') + .circuit(aaCircuit++) + .duration(20) + .EUt(GTValues.VA[GTValues.ULV]) + .adjacentFluids(["tfc:salt_water"]) + .outputFluids(Fluid.of("tfc:salt_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars') + .circuit(aaCircuit++) + .dimension('ad_astra:mars') + .duration(20) + .EUt(GTValues.VHA[GTValues.ULV]) + .adjacentFluids(["tfg:semiheavy_ammoniacal_water"]) + .outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_overworld') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('lava_nether') + .circuit(aaCircuit++) + .dimension('minecraft:the_nether') + .duration(20*15) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:lava"]) + .outputFluids(Fluid.of("minecraft:lava", 1000)) + + event.recipes.gtceu.aqueous_accumulator('spring_water') + .circuit(aaCircuit++) + .dimension('minecraft:overworld') + .duration(20) + .EUt(GTValues.VA[GTValues.LV]) + .adjacentFluids(["tfc:spring_water"]) + .outputFluids(Fluid.of("tfc:spring_water", 1000)) + + event.recipes.gtceu.aqueous_accumulator('more_water') + .circuit(aaCircuit++) + .duration(10) + .EUt(GTValues.VHA[GTValues.HV]) + .adjacentFluids(["minecraft:water"]) + .outputFluids(Fluid.of("minecraft:water", 16000)) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js new file mode 100644 index 000000000..7c1d54856 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/recipes.space_suits.js @@ -0,0 +1,182 @@ +"use strict"; + +function registerTFGSpaceSuitRecipes(event) { + + event.recipes.gtceu.shaped('ad_astra:launch_pad', [ + 'BAB', + 'AAA', + 'BAB' + ], { + A: '#forge:plates/steel', + B: '#forge:rods/steel' + }).addMaterialInfo().id('tfg:launch_pad') + + + // Space suit gases + + event.recipes.gtceu.gas_pressurizer('compressed_nitrox') + .inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_nitrox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox') + .inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_heliox_3') + .inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000)) + .outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000)) + .circuit(1) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + event.recipes.gtceu.gas_pressurizer('compressed_trimix_3') + .inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000)) + .outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000)) + .circuit(2) + .duration(100) + .EUt(GTValues.VA[GTValues.HV]) + + //#region space suits + + event.recipes.gtceu.forming_press('space_suit_fabric') + .itemInputs( + '#forge:foils/aluminium', + 'gtceu:carbon_fiber_mesh', + '#forge:foils/silicone_rubber', + 'tfg:polycaprolactam_fabric' + ) + .itemOutputs('2x tfg:space_suit_fabric') + .duration(20 * 10) + .EUt(GTValues.VA[GTValues.HV]) + .addMaterialInfo(true) + + event.recipes.gtceu.forming_press('better_space_suit_fabric') + .itemInputs( + '#forge:foils/polybenzimidazole', + 'gtceu:carbon_fiber_mesh', + '#forge:aerogels', + 'tfg:glacian_wool' + ) + .itemOutputs('2x tfg:better_space_suit_fabric') + .duration(20 * 5) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_helmet', [ + 'AAA', + 'ADA', + 'BBB' + ], { + A: 'gtceu:tempered_glass', + B: 'tfg:space_suit_fabric', + D: '#forge:small_fluid_pipes/polyethylene' + }).addMaterialInfo().id('tfg:space_helmet') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet') + .itemInputs( + 'ad_astra:space_helmet', + '2x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '3x tfg:better_space_suit_fabric', + '5x gtceu:laminated_glass' + ) + .itemOutputs('ad_astra:netherite_space_helmet') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_suit', [ + 'B B', + 'BDB', + 'BBB' + ], { + B: 'tfg:space_suit_fabric', + D: 'ad_astra:oxygen_gear' + }).addMaterialInfo().id('tfg:space_suit') + + event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit']) + .id('tfg:empty_space_suit') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_suit') + .itemInputs( + 'ad_astra:space_suit', + '3x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '5x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_suit') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit']) + .id('tfg:empty_netherite_space_suit') + + event.recipes.gtceu.shaped('ad_astra:space_pants', [ + 'BAB', + 'B B', + 'B B' + ], { + A: 'gtceu:hv_electric_motor', + B: 'tfg:space_suit_fabric', + }).addMaterialInfo().id('tfg:space_pants') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_pants') + .itemInputs( + 'ad_astra:space_pants', + '2x #forge:plates/tungsten_steel', + '2x #forge:plates/ostrum', + '4x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_pants') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:space_boots', [ + 'B B', + 'A A' + ], { + A: '#forge:plates/polyphenylene_sulfide', + B: 'tfg:space_suit_fabric' + }).addMaterialInfo().id('tfg:space_boots') + + event.recipes.gtceu.assembler('ad_astra:netherite_space_boots') + .itemInputs( + 'ad_astra:space_boots', + '1x #forge:plates/tungsten_steel', + '1x #forge:plates/ostrum', + '2x tfg:better_space_suit_fabric' + ) + .itemOutputs('ad_astra:netherite_space_boots') + .duration(400) + .EUt(GTValues.VA[GTValues.IV]) + .addMaterialInfo(true) + + event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [ + 'BAB', + 'ECE', + 'BDB' + ], { + A: '#gtceu:circuits/hv', + B: '#forge:tiny_fluid_pipes/stainless_steel', + C: 'gtceu:hv_electric_pump', + D: 'gtceu:fluid_detector_cover', + E: 'ad_astra:gas_tank' + }).addMaterialInfo().id('tfg:oxygen_gear') + + //#endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/tags.js b/kubejs/server_scripts/tfg/tags.js index 04a914fba..785160a42 100644 --- a/kubejs/server_scripts/tfg/tags.js +++ b/kubejs/server_scripts/tfg/tags.js @@ -18,6 +18,10 @@ const registerTFGItemTags = (event) => { event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') + event.add("tfg:sugars", "minecraft:sugar"); + event.add("tfg:sugars", "afc:birch_sugar"); + event.add("tfg:sugars", "afc:maple_sugar"); + // Actually "layers", can't rename them without screwing with peoples' worlds event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') @@ -627,12 +631,10 @@ const registerTFGItemTags = (event) => { event.remove('forge:dusts', 'tfg:cellulose_matrix') event.remove('forge:dusts/cellulose_matrix', 'tfg:cellulose_matrix') - event.remove('balm:ingots', 'tfg:polycaprolactam_fabric') event.remove('tfc:pileable_ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots', 'tfg:polycaprolactam_fabric') event.remove('forge:ingots/tfg_polycaprolactam', 'tfg:polycaprolactam_fabric') - event.remove('balm:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets/tfg_polycaprolactam', 'tfg:polycaprolactam_string') diff --git a/kubejs/server_scripts/tfg/recipes.biochem.js b/kubejs/server_scripts/tfg/venus/recipes.biochem.js similarity index 100% rename from kubejs/server_scripts/tfg/recipes.biochem.js rename to kubejs/server_scripts/tfg/venus/recipes.biochem.js diff --git a/kubejs/server_scripts/tfg/worldgen/data.fauna.js b/kubejs/server_scripts/tfg/worldgen/data.fauna.js new file mode 100644 index 000000000..6a54f27b4 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/data.fauna.js @@ -0,0 +1,108 @@ +"use strict"; + + +/** @param {Internal.TFCDataEventJS} event */ +function registerTFGFauna(event) { + + // -108 is the average at z=-4k to z=-6k, which feels like a big enough band + event.fauna( + climate => { + climate.maxTemp(-108) + climate.fuzzy(false) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:glacian_ram") + + event.fauna( + climate => { + climate.minTemp(-102) + climate.maxTemp(-30) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:sniffer") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "tfg:wraptor") + + event.fauna( + climate => { + climate.minTemp(-108) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:springling") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "species:goober") + + event.fauna( + climate => { + climate.minTemp(-97) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:walker") + + event.fauna( + climate => { + climate.minTemp(-109) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:eater") + + event.fauna( + climate => { + climate.minTemp(-100) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:crusher") + + event.fauna( + climate => { + climate.minTemp(-105) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:soarer") + + event.fauna( + climate => { + climate.minTemp(-106) + climate.fuzzy(true) + }, + faunaData => { + faunaData.solidGround(true) + }, + "wan_ancient_beasts:glider") +} diff --git a/kubejs/server_scripts/tfg/entities.js b/kubejs/server_scripts/tfg/worldgen/entities.js similarity index 100% rename from kubejs/server_scripts/tfg/entities.js rename to kubejs/server_scripts/tfg/worldgen/entities.js diff --git a/kubejs/server_scripts/tfg/events.chunks.js b/kubejs/server_scripts/tfg/worldgen/events.chunks.js similarity index 100% rename from kubejs/server_scripts/tfg/events.chunks.js rename to kubejs/server_scripts/tfg/worldgen/events.chunks.js diff --git a/kubejs/server_scripts/tfg/events.forests.js b/kubejs/server_scripts/tfg/worldgen/events.forests.js similarity index 100% rename from kubejs/server_scripts/tfg/events.forests.js rename to kubejs/server_scripts/tfg/worldgen/events.forests.js diff --git a/kubejs/server_scripts/tfc/select_climates.js b/kubejs/server_scripts/tfg/worldgen/select_climates.js similarity index 100% rename from kubejs/server_scripts/tfc/select_climates.js rename to kubejs/server_scripts/tfg/worldgen/select_climates.js diff --git a/kubejs/server_scripts/wan_ancient_beasts/recipes.js b/kubejs/server_scripts/wan_ancient_beasts/recipes.js index 2b65d3851..9f083ead7 100644 --- a/kubejs/server_scripts/wan_ancient_beasts/recipes.js +++ b/kubejs/server_scripts/wan_ancient_beasts/recipes.js @@ -38,19 +38,6 @@ const registerWABRecipes = (event) => { .duration(400) .EUt(30) - event.recipes.tfc.damage_inputs_shapeless_crafting( - event.shapeless('4x tfg:fletching', [ - 'wan_ancient_beasts:glider_feather', - '#forge:tools/knives' - ]).id('tfg:shapeless/glider_feather_fletching')) - - event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching') - .itemInputs('1x wan_ancient_beasts:glider_feather') - .itemOutputs('4x tfg:fletching') - .duration(20) - .circuit(4) - .EUt(GTValues.VA[GTValues.ULV]) - event.shaped('wan_ancient_beasts:reinforced_shield', [ 'BAB', 'DCD', diff --git a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js index 6fd163157..b2eb4b3df 100644 --- a/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js +++ b/kubejs/startup_scripts/tfg/nuclear/materials.nuclear.js @@ -153,7 +153,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:oxidized_nuclear_residue') .dust() - .components('1x uranium', '1x oxygen', '2x unknown') + .components('1x plutonium', '2x fluorine', '1x oxygen', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .iconSet(GTMaterialIconSet.SHINY) .color(0x286529) @@ -162,7 +162,7 @@ const registerTFGNuclearMaterials = (event) => { event.create('tfg:refined_nuclear_residue') .dust() - .components('1x uranium', '2x unknown') + .components('1x plutonium', '2x unknown') .flags(GTMaterialFlags.DISABLE_DECOMPOSITION) .color(0x82c383) .secondaryColor('0xffffff') From a3096dd5c9d3895f1fc6d903f7742ef87b7156a3 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:20:01 +0000 Subject: [PATCH 08/26] move around some files --- kubejs/startup_scripts/tfg/entity_types.js | 26 ------------------- .../tfg/{ => worldgen}/fauna.js | 0 .../tfg/{ => worldgen}/register_climates.js | 0 3 files changed, 26 deletions(-) delete mode 100644 kubejs/startup_scripts/tfg/entity_types.js rename kubejs/startup_scripts/tfg/{ => worldgen}/fauna.js (100%) rename kubejs/startup_scripts/tfg/{ => worldgen}/register_climates.js (100%) diff --git a/kubejs/startup_scripts/tfg/entity_types.js b/kubejs/startup_scripts/tfg/entity_types.js deleted file mode 100644 index f39471767..000000000 --- a/kubejs/startup_scripts/tfg/entity_types.js +++ /dev/null @@ -1,26 +0,0 @@ -// priority: 0 -"use strict"; - -function registerTFGEntityTypes(event) { - - //event.create('tfg:moon_rabbit', 'tfc:mammal') - // .withFaunaDefinition('on_ground', 'world_surface_wg') - // .foodTag('tfc:rabbit_food') - // .sized(1, 1) - // .modelSize(1, 1) - // .updateInterval(3) - // .setDeathSound("minecraft:entity.rabbit.death") - // .setAmbientSound("minecraft:entity.rabbit.ambient") - // .setHurtSound(context => "minecraft:entity.rabbit.hurt") - // .canJump(true) - // .setBlockJumpFactor(entity => 0.42) - // // these are the same as tfc rabbits - // .configs(config => { - // config.gestationDays(19) - // config.daysToAdult(80) - // config.childCount(6) - // config.uses(40) - // config.maxFamiliarity(0.35) - // config.eatsRottenFood(true) - // }) -} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fauna.js b/kubejs/startup_scripts/tfg/worldgen/fauna.js similarity index 100% rename from kubejs/startup_scripts/tfg/fauna.js rename to kubejs/startup_scripts/tfg/worldgen/fauna.js diff --git a/kubejs/startup_scripts/tfg/register_climates.js b/kubejs/startup_scripts/tfg/worldgen/register_climates.js similarity index 100% rename from kubejs/startup_scripts/tfg/register_climates.js rename to kubejs/startup_scripts/tfg/worldgen/register_climates.js From d9774c2dda852090b97f71d90adc521fab4d130b Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:33:31 +0000 Subject: [PATCH 09/26] move over some seed oils --- .../tfg/powergen/recipes.biodiesel.js | 22 ------------------- .../tfg/powergen/recipes.boiler.js | 22 +++++++++++++++++++ 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js index ed60fc411..bde4a6cd9 100644 --- a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js @@ -91,26 +91,4 @@ function registerTFGBiodieselRecipes(event) { .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) .duration(20 * 10) .EUt(GTValues.VHA[GTValues.LV]) - - event.recipes.gtceu.extractor(`rapeseed_oil`) - .itemInputs('tfg:rapeseed_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 600)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.gtceu.extractor(`sunflower_oil`) - .itemInputs('tfg:sunflower_product') - .outputFluids(Fluid.of('gtceu:seed_oil', 350)) - .duration(20 * 5) - .EUt(GTValues.VHA[GTValues.ULV]) - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 250)) - .id('tfg:barrel/rapeseed_to_oil') - - event.recipes.tfc.barrel_sealed(1000) - .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) - .outputFluid(Fluid.of('gtceu:seed_oil', 120)) - .id('tfg:barrel/sunflower_to_oil') } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js index 5d0ba1862..78207ec66 100644 --- a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js @@ -88,4 +88,26 @@ function registerTFGBoilerRecipes(event) { .outputFluids(Fluid.of('gtceu:seed_oil', 50)) .duration(32) .EUt(2) + + event.recipes.gtceu.extractor(`rapeseed_oil`) + .itemInputs('tfg:rapeseed_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 600)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.extractor(`sunflower_oil`) + .itemInputs('tfg:sunflower_product') + .outputFluids(Fluid.of('gtceu:seed_oil', 350)) + .duration(20 * 5) + .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 250)) + .id('tfg:barrel/rapeseed_to_oil') + + event.recipes.tfc.barrel_sealed(1000) + .inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100)) + .outputFluid(Fluid.of('gtceu:seed_oil', 120)) + .id('tfg:barrel/sunflower_to_oil') } \ No newline at end of file From a7aef94e015867bf4e7cbacb6a2ca65052540b87 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:36:38 +0000 Subject: [PATCH 10/26] fix moon helium depleted yield being bigger than the minimum yield --- kubejs/server_scripts/gregtech/data.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubejs/server_scripts/gregtech/data.js b/kubejs/server_scripts/gregtech/data.js index 4245617f8..29a1ff202 100644 --- a/kubejs/server_scripts/gregtech/data.js +++ b/kubejs/server_scripts/gregtech/data.js @@ -153,7 +153,7 @@ function registerGTCEUBedrockFluidVeins(event) { vein.maximumYield(50) vein.depletionAmount(1) vein.depletionChance(1) - vein.depletedYield(50) + vein.depletedYield(20) }) event.add('tfg:moon_argon', vein => { From 5b612d88fd7ce764ab0dc53c9c0e786a1073a83a Mon Sep 17 00:00:00 2001 From: Pyritie Date: Tue, 2 Dec 2025 19:49:22 +0000 Subject: [PATCH 11/26] whoops --- kubejs/startup_scripts/main_startup_script.js | 4 ---- 1 file changed, 4 deletions(-) diff --git a/kubejs/startup_scripts/main_startup_script.js b/kubejs/startup_scripts/main_startup_script.js index 94f249b16..79399185f 100644 --- a/kubejs/startup_scripts/main_startup_script.js +++ b/kubejs/startup_scripts/main_startup_script.js @@ -9,10 +9,6 @@ StartupEvents.registry('block', event => { registerTFGBlocks(event) }) -StartupEvents.registry('entity_type', event => { - registerTFGEntityTypes(event) -}) - BlockEvents.modification(event => { registerAdAstraBlockModifications(event) registerSpeciesBlockModifications(event) From cc47fe55ce5e2f697b50de16608d0a950577776d Mon Sep 17 00:00:00 2001 From: Pyritie Date: Wed, 3 Dec 2025 00:32:14 +0000 Subject: [PATCH 12/26] big tag/data refactor --- kubejs/server_scripts/ad_astra/tags.js | 643 ------------- kubejs/server_scripts/afc/recipes.js | 225 +---- kubejs/server_scripts/betterend/recipes.js | 59 -- kubejs/server_scripts/betterend/tags.js | 48 - kubejs/server_scripts/create/tags.js | 5 - kubejs/server_scripts/firmalife/tags.js | 4 - kubejs/server_scripts/gregtech/data.js | 101 +- kubejs/server_scripts/gregtech/tags.js | 46 - kubejs/server_scripts/main_server_script.js | 8 +- kubejs/server_scripts/minecraft/tags.js | 153 --- kubejs/server_scripts/tfc/data.js | 186 +--- kubejs/server_scripts/tfc/tags.js | 94 +- kubejs/server_scripts/tfcambiental/tags.js | 26 - .../tfg/beneath/tags.beneath.js | 139 +++ kubejs/server_scripts/tfg/data.js | 1 + .../tfg/equipment/data.equipment.js | 189 ++++ .../tfg/equipment/recipes.equipment.js | 54 ++ .../tfg/equipment/tags.equipment.js | 52 ++ .../server_scripts/tfg/europa/tags.europa.js | 22 + kubejs/server_scripts/tfg/food/tags.food.js | 348 +++++++ .../tfg/json_tool.armor_trim.js | 2 +- .../tfg/machines/recipes.steam_bloomery.js | 4 +- .../tfg/{ => machines}/tags.facades.js | 2 +- kubejs/server_scripts/tfg/mars/data.mars.js | 68 ++ .../server_scripts/tfg/mars/recipes.iodine.js | 28 + .../server_scripts/tfg/mars/recipes.mars.js | 30 + kubejs/server_scripts/tfg/mars/tags.mars.js | 529 +++++++++++ kubejs/server_scripts/tfg/moon/data.moon.js | 38 + .../server_scripts/tfg/moon/recipes.plants.js | 26 + kubejs/server_scripts/tfg/moon/tags.moon.js | 117 +++ .../tfg/natural_blocks/tags.stones.js | 2 +- .../{ => fishing_nets}/events.fishing_nets.js | 0 .../recipes.fishing_nets.js | 0 .../{ => medicine}/events.medicine.js | 0 .../{ => medicine}/recipes.medicine.js | 0 .../tfg/primitive/medicine/tags.medicine.js | 67 ++ .../tfg/primitive/recipes.rubber.js | 112 ++- .../tfg/primitive/recipes.wax.js | 74 ++ .../tfg/primitive/tags.primitive.js | 88 ++ kubejs/server_scripts/tfg/recipes.js | 1 + .../tfg/space_general/tags.railgun.js | 82 ++ .../tfg/space_general/tags.rockets.js | 28 + kubejs/server_scripts/tfg/tags.interaction.js | 47 +- kubejs/server_scripts/tfg/tags.js | 881 ++---------------- kubejs/server_scripts/tfg/venus/data.venus.js | 26 + kubejs/server_scripts/tfg/venus/tags.venus.js | 117 +++ .../tfg/worldgen/tags.general_worldgen.js | 212 +++++ .../tfg/worldgen/tags.overworld.js | 76 ++ kubejs/startup_scripts/tfg/constants.js | 12 +- 49 files changed, 2601 insertions(+), 2471 deletions(-) delete mode 100644 kubejs/server_scripts/betterend/recipes.js delete mode 100644 kubejs/server_scripts/betterend/tags.js delete mode 100644 kubejs/server_scripts/tfcambiental/tags.js create mode 100644 kubejs/server_scripts/tfg/beneath/tags.beneath.js create mode 100644 kubejs/server_scripts/tfg/equipment/data.equipment.js create mode 100644 kubejs/server_scripts/tfg/equipment/recipes.equipment.js create mode 100644 kubejs/server_scripts/tfg/equipment/tags.equipment.js create mode 100644 kubejs/server_scripts/tfg/europa/tags.europa.js create mode 100644 kubejs/server_scripts/tfg/food/tags.food.js rename kubejs/server_scripts/tfg/{ => machines}/tags.facades.js (99%) create mode 100644 kubejs/server_scripts/tfg/mars/data.mars.js create mode 100644 kubejs/server_scripts/tfg/mars/tags.mars.js create mode 100644 kubejs/server_scripts/tfg/moon/data.moon.js create mode 100644 kubejs/server_scripts/tfg/moon/tags.moon.js rename kubejs/server_scripts/tfg/primitive/{ => fishing_nets}/events.fishing_nets.js (100%) rename kubejs/server_scripts/tfg/primitive/{ => fishing_nets}/recipes.fishing_nets.js (100%) rename kubejs/server_scripts/tfg/primitive/{ => medicine}/events.medicine.js (100%) rename kubejs/server_scripts/tfg/primitive/{ => medicine}/recipes.medicine.js (100%) create mode 100644 kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js create mode 100644 kubejs/server_scripts/tfg/primitive/tags.primitive.js create mode 100644 kubejs/server_scripts/tfg/space_general/tags.railgun.js create mode 100644 kubejs/server_scripts/tfg/space_general/tags.rockets.js create mode 100644 kubejs/server_scripts/tfg/venus/data.venus.js create mode 100644 kubejs/server_scripts/tfg/venus/tags.venus.js create mode 100644 kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js create mode 100644 kubejs/server_scripts/tfg/worldgen/tags.overworld.js diff --git a/kubejs/server_scripts/ad_astra/tags.js b/kubejs/server_scripts/ad_astra/tags.js index fd670d96c..b6578ed62 100644 --- a/kubejs/server_scripts/ad_astra/tags.js +++ b/kubejs/server_scripts/ad_astra/tags.js @@ -11,7 +11,6 @@ const registerAdAstraFluidTags = (event) => { // Using this to represent 'breathable air' instead of oxygen event.removeAllTagsFrom('ad_astra:oxygen') - event.removeAll('ad_astra:fuel') event.removeAll('ad_astra:efficient_fuel') @@ -52,38 +51,6 @@ const registerAdAstraItemTags = (event) => { event.add('c:hidden_from_recipe_viewers', 'ad_astra:alphacene_mushroom') event.add('c:hidden_from_recipe_viewers', 'ad_astra:strophar_mushroom') - event.add('gtceu:ppe_armor', '#ad_astra:space_suit_items') - event.add('minecraft:trimmable_armor', '#ad_astra:space_suit_items') - - event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') - event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') - event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') - - // Insulation Tier 1 - event.add('forge:insulation_t1', 'gtceu:borosilicate_glass_dust') - event.add('forge:insulation_t1', 'gtceu:vitrified_asbestos_dust') - - //Insulation Tier 2 - event.add('forge:insulation_t2/sheet', 'tfg:aes_insulation_sheet') - event.add('forge:insulation_t2/roll', 'tfg:aes_insulation_roll') - - //Insulation Tier3 - event.add('forge:insulation_t3/foam', 'tfg:aes_polyurethane') - event.add('forge:insulation_t3/sheet', 'tfg:mli_shielding') - event.add('forge:insulation_t3/cryo', 'tfg:silica_aerogel') - - event.add('forge:aerogels', 'tfg:silica_aerogel') - - //Rocket Engines - event.add('ad_astra:rocket_engine', 'ad_astra:steel_engine') - event.add('ad_astra:rocket_engine', 'ad_astra:desh_engine') - event.add('ad_astra:rocket_engine', 'ad_astra:ostrum_engine') - - //Rocket Tank - event.add('ad_astra:rocket_tank', 'ad_astra:ostrum_tank') - // Deco blocks const DECO_BLOCKS = [ 'iron', 'steel', 'desh', 'calorite', 'ostrum' ]; DECO_BLOCKS.forEach(block => { @@ -100,46 +67,6 @@ const registerAdAstraItemTags = (event) => { event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:encased_etrium_block') event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_plateblock') event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_panel') - - event.add('tfc:foods', 'ad_astra:cheese') - event.add('tfc:foods/dairy', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_sandwich', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_jam_sandwich', 'ad_astra:cheese') - event.add('tfc:foods/usable_in_jam_sandwich_2', 'ad_astra:cheese') - event.add('firmalife:foods/cheeses', 'ad_astra:cheese') - - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_helmet') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_chestplate') - event.add('ad_astra:space_suit_items', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_leggings') - event.add('ad_astra:space_suit_items', 'gtceu:quarktech_boots') - - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_helmet') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_chestplate') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_leggings') - event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_boots') - - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_helmet') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_chestplate') - event.add('ad_astra:heat_resistant_armor', 'gtceu:advanced_quarktech_chestplate') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_leggings') - event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_boots') - - event.remove('minecraft:wool', 'ad_astra:glacian_fur') - - event.add('tfc:compost_greens', 'ad_astra:aeronos_cap') - event.add('tfc:compost_greens', 'ad_astra:strophar_cap') - - // these are log tags - event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') - event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') - event.add('minecraft:wart_blocks', 'ad_astra:aeronos_cap') - event.add('minecraft:wart_blocks', 'ad_astra:strophar_cap') - - event.add('tfc:makes_tannin', '#ad_astra:glacian_logs') - event.add('tfc:makes_tannin', '#tfc:crimson_logs') - event.add('tfc:makes_tannin', '#tfc:warped_logs') global.AD_ASTRA_WOOD.forEach(wood => { @@ -159,13 +86,6 @@ const registerAdAstraItemTags = (event) => { event.add('tfg:softwood', wood.logs) } }) - - event.add('forge:smooth_stone_slab', 'ad_astra:polished_moon_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_mars_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_venus_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_mercury_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_glacio_stone_slab') - event.add('forge:smooth_stone_slab', 'ad_astra:polished_permafrost_slab') } const registerAdAstraBlockTags = (event) => { @@ -175,273 +95,6 @@ const registerAdAstraBlockTags = (event) => { event.add('c:hidden_from_recipe_viewers', item) }) - // All new stones - global.EXTRATERRESTRIAL_RAW_ROCKS.forEach(rock => { - event.add('forge:stone', rock) - event.add('tfc:breaks_when_isolated', rock) - event.add('tfc:rock/raw', rock) - event.add('minecraft:mineable/pickaxe', rock) - event.add('tfc:can_carve', rock) - // Collapse tags also require a collapse recipe to work. - // Don't add the recipe if you don't want them to actually collapse! - event.add('tfc:can_collapse', rock) - event.add('tfc:can_trigger_collapse', rock) - event.add('tfc:can_start_collapse', rock) - event.add('tfc:powderkeg_breaking_blocks', rock) - event.add('tfc:bloomery_insulation', rock) - event.add('firmalife:oven_insulation', rock) - event.add('tfc:forge_insulation', rock) - }) - - global.EXTRATERRESTRIAL_HARDENED_ROCKS.forEach(rock => { - event.add('minecraft:mineable/pickaxe', rock) - event.add('tfc:can_collapse', rock) - event.add('tfc:can_trigger_collapse', rock) - event.add('tfc:powderkeg_breaking_blocks', rock) - event.add('tfc:bloomery_insulation', rock) - event.add('firmalife:oven_insulation', rock) - event.add('tfc:forge_insulation', rock) - event.add('tfc:can_carve', rock) - }) - - // Moon - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:moon_sand') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_stone') - event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/white') - event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/black') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/dacite') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon_deepslate') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_glacio') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_stone') - event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_glacio_stone') - event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_cobblestone') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/rhyolite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/dacite') - - // Mars - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dacite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/basalt') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/gabbro') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/diorite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/rhyolite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/andesite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/chert') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/conglomerate') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/claystone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/limestone') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dolomite') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/shale') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/shale') - event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/shale') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:mars_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_mars_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_mars') - event.add('ad_astra:mars_stone_replaceables', 'minecraft:red_sandstone') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_stone') - event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_sandstone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_venus_stone') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_venus') - event.add('ad_astra:mars_stone_replaceables', 'gtceu:red_granite') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_red_granite') - event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_red_granite') - event.add('ad_astra:mars_stone_replaceables', 'create:ochrum') - event.add('tfg:mars_soil', 'minecraft:red_sand') - event.add('tfg:mars_soil', 'ad_astra:mars_sand') - event.add('tfg:mars_soil', 'ad_astra:venus_sand') - event.add('tfg:mars_soil', 'tfg:rock/gravel_venus') - event.add('tfg:mars_soil', 'tfg:rock/gravel_mars') - event.add('tfg:mars_soil', 'tfc:rock/gravel/dacite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/basalt') - event.add('tfg:mars_soil', 'tfc:rock/gravel/gabbro') - event.add('tfg:mars_soil', 'tfc:rock/gravel/diorite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/rhyolite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/andesite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/conglomerate') - event.add('tfg:mars_soil', 'tfc:rock/gravel/claystone') - event.add('tfg:mars_soil', 'tfc:rock/gravel/limestone') - event.add('tfg:mars_soil', 'tfc:rock/gravel/dolomite') - event.add('tfg:mars_soil', 'tfc:rock/gravel/shale') - event.add('tfg:mars_soil', 'tfc:sand/black') - event.add('tfg:mars_soil', 'tfc:sand/red') - event.add('tfg:mars_soil', 'tfc:sand/pink') - event.add('tfg:mars_soil', 'tfg:grass/mars_dirt') - event.add('tfg:mars_soil', 'tfg:grass/mars_clay_dirt') - event.add('tfg:mars_soil', 'tfg:grass/amber_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/amber_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil') - event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil') - event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants') - event.add('minecraft:valid_spawn', '#minecraft:animals_spawnable_on') - - // Venus - event.add('ad_astra:venus_stone_replaceables', 'ad_astra:venus_stone') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_venus_stone') - event.add('ad_astra:venus_stone_replaceables', 'gtceu:red_granite') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_red_granite') - event.add('ad_astra:venus_stone_replaceables', 'ad_astra:moon_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:deepslate') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_deepslate') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:dripstone_block') - event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_dripstone') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/granite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/granite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/diorite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/diorite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gabbro') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gabbro') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/basalt') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/basalt') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/rhyolite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/andesite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/dacite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/dacite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/slate') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/slate') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/schist') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/schist') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gneiss') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gneiss') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/phyllite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/phyllite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/quartzite') - event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/quartzite') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/blue') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/blue') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/green') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/green') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/brown') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/brown') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/orange') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/orange') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/white') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/white') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/yellow') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/yellow') - event.add('ad_astra:venus_stone_replaceables', 'tfg:geyser_slurry') - event.add('ad_astra:venus_stone_replaceables', 'tfg:sulfur_fumes') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:lava') - event.add('ad_astra:venus_stone_replaceables', 'create:scoria') - event.add('ad_astra:venus_stone_replaceables', 'create:scorchia') - event.add('ad_astra:venus_stone_replaceables', 'minecraft:tuff') - - event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables') - event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables') - event.add('tfc:can_carve', '#ad_astra:venus_stone_replaceables') - - event.add('minecraft:rabbits_spawnable_on', '#ad_astra:moon_stone_replaceables') - event.add('species:limpet_spawnable_on', '#ad_astra:moon_stone_replaceables') - - event.add('tfc:can_landslide', 'ad_astra:moon_sand') - event.add('tfc:can_landslide', 'ad_astra:mars_sand') - event.add('tfc:can_landslide', 'ad_astra:venus_sand') - event.add('tfc:can_landslide', 'minecraft:red_sand') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone') - event.add('tfc:can_landslide', 'gtceu:red_granite_cobblestone') - - event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') - event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') - event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') - event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_slab') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_slab') - - event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_stairs') - event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_stairs') - - event.add('tfg:rock_stairs', 'ad_astra:moon_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:mars_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:venus_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:mercury_stone_stairs') - event.add('tfg:rock_stairs', 'ad_astra:glacio_stone_stairs') - - event.add('tfg:rock_slabs', 'ad_astra:moon_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:mars_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:venus_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:mercury_stone_slab') - event.add('tfg:rock_slabs', 'ad_astra:glacio_stone_slab') - - event.add('ad_astra:destroyed_in_space', '#tfc:wild_fruits') - event.add('ad_astra:destroyed_in_space', '#minecraft:saplings') - - event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') - event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') - - event.add('tfg:heightmap_ignore', 'ad_astra:strophar_cap') - event.add('tfg:heightmap_ignore', 'ad_astra:strophar_stem') - event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_cap') - event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_stem') - event.add('tfg:heightmap_ignore', 'minecraft:nether_wart_block') - event.add('tfg:heightmap_ignore', 'minecraft:warped_wart_block') - event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_block') - event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_growth') - event.add('tfg:heightmap_ignore', 'tfg:glacian_leaves') - event.add('tfg:heightmap_ignore', 'betterend:glacian_hymenophore') - event.add('tfg:heightmap_ignore', 'species:alphacene_moss_block') - event.add('tfg:heightmap_ignore', 'minecraft:ice') - - event.add('tfc:can_be_snow_piled', 'ad_astra:aeronos_mushroom') - event.add('tfc:can_be_snow_piled', 'ad_astra:strophar_mushroom') - global.AD_ASTRA_WOOD.forEach(wood => { if (wood.log) { @@ -457,301 +110,5 @@ const registerAdAstraBlockTags = (event) => { } const registerAdAstraBiomeTags = (event) => { - event.removeAll('ad_astra:has_structure/oil_well') - - global.MOON_BIOMES.forEach(biome => { - event.add('tfg:moon_biomes', biome) - event.add('tfg:has_structure/meteors', biome) - event.add('tfg:has_structure/cheese_ores', biome) - event.add('tfg:has_structure/moonbase', biome) - event.add('tfg:has_structure/moon_rabbit_houses', biome) - event.add('species:limpet_spawns', biome) - }) - - global.MARS_BIOMES.forEach(biome => { - event.add('tfg:mars_biomes', biome) - }) - - global.VENUS_BIOMES.forEach(biome => { - event.add('tfg:venus_biomes', biome); - event.add('ad_astra:has_acid_rain', biome); - }) - - event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_dunes') - event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_deep_desert') - - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_dunes') - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_deep_desert') - event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_mountains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_hills') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_hills') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_plains') - event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_hills') - event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_dune_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/amber_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/rusticus_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/sangnum_edge') - event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_river') - - event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_mountains') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_river') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/amber_hills') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/rusticus_hills') - event.add('tfg:has_mild_dust_storms', 'tfg:mars/sangnum_hills') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_edge') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_edge') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_plains') - event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_edge') - event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_dunes') - event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_deep_desert') -} - -const registerAdAstraEntityTypeTags = (event) => { - - const COLD_ENTITIES = [ - // moon - 'tfc:rat', - 'tfg:moon_rabbit', - 'minecraft:enderman', - 'minecraft:shulker', - 'minecraft:shulker_bullet', - 'minecraft:skeleton', - 'minecraft:stray', - 'species:limpet', - 'species:birt', - 'endermanoverhaul:windswept_hills_enderman', - 'endermanoverhaul:soulsand_valley_enderman', - 'endermanoverhaul:spirit', - 'endermanoverhaul:end_enderman', - 'endermanoverhaul:end_islands_enderman', - // mars - 'tfg:sniffer', - 'tfg:glacian_ram', - 'tfg:wraptor', - 'species:goober', - 'species:cruncher', - 'species:springling', - 'species:quake', - 'species:stackatick', - 'endermanoverhaul:crimson_forest_enderman', - 'endermanoverhaul:warped_forest_enderman', - 'endermanoverhaul:badlands_enderman', - 'endermanoverhaul:cave_enderman', - 'wan_ancient_beasts:walker', - 'wan_ancient_beasts:eater', - 'wan_ancient_beasts:crusher', - 'wan_ancient_beasts:soarer', - 'wan_ancient_beasts:glider', - 'wan_ancient_beasts:toxlacanth', - 'wan_ancient_beasts:surfer', - 'tfg:surfer', - // europa - 'endermanoverhaul:coral_enderman', - 'endermanoverhaul:snowy_enderman', - 'endermanoverhaul:ice_spikes_enderman', - 'species:deepfish', - 'species:leaf_hanger' - ] - - const HOT_ENTITIES = [ - // venus - 'minecraft:enderman', - "endermanoverhaul:desert_enderman", - "endermanoverhaul:savanna_enderman", - "endermanoverhaul:nether_wastes_enderman", - "ad_astra:sulfur_creeper", - 'species:cliff_hanger', - ] - - COLD_ENTITIES.forEach(entity => { - event.add('ad_astra:can_survive_extreme_cold', entity) - event.add('ad_astra:lives_without_oxygen', entity) - }) - - HOT_ENTITIES.forEach(entity => { - event.add('ad_astra:can_survive_extreme_heat', entity) - event.add('ad_astra:lives_without_oxygen', entity) - }) - - event.add('ad_astra:can_survive_in_space', 'railways:conductor') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:pet_enderman') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:axolotl_pet_enderman') - event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:hammerhead_pet_enderman') - - event.add('tfc:deals_crushing_damage', 'minecraft:enderman') - event.add('tfc:deals_crushing_damage', 'minecraft:stray') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:windswept_hills_enderman') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:soulsand_valley_enderman') - event.add('tfc:deals_piercing_damage', 'endermanoverhaul:end_enderman') - event.add('tfc:deals_crushing_damage', 'endermanoverhaul:end_islands_enderman') - event.add('tfc:deals_crushing_damage', 'ad_astra:star_crawler') - - event.add('tfg:ignores_gravity', 'minecraft:shulker_bullet') - event.add('tfg:ignores_gravity', 'endermanoverhaul:spirit') - event.add('tfg:ignores_gravity', 'species:birt') - event.add('tfg:ignores_gravity', 'ad_astra:star_crawler') - - // this guy has a bounce animation that looks silly in low grav - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:crusher') - // this huge guy also looks silly in low grav - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:walker') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:eater') - // flying mobs - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:soarer') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:glider') - // swimming mobs - event.add('tfg:ignores_gravity', 'tfg:surfer') - event.add('tfg:ignores_gravity', 'wan_ancient_beasts:toxlacanth') - event.add('tfg:ignores_gravity', 'endermanoverhaul:coral_enderman') -} - -const registerAdAstraPlacedFeatures = (event) => { - - //#region Moon - event.add('tfg:moon_craters', 'tfg:moon/crater/extra_large') - event.add('tfg:moon_craters', 'tfg:moon/crater/large') - event.add('tfg:moon_craters', 'tfg:moon/crater/medium') - event.add('tfg:moon_craters', 'tfg:moon/crater/small') - - global.MOON_STONE_TYPES.forEach(stone => { - // only in the sparse ones - event.add('tfg:moon_large_rock_features', `tfg:moon/surface/delta/${stone}`) - // in all moon biomes - event.add('tfg:moon_small_rock_features', `tfg:moon/surface/pile/${stone}`) - event.add('tfg:moon_small_rock_features', `tfg:moon/surface/loose/${stone}`) - }) - - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_moon_sand') - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_white_sand') - event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_black_sand') - //#endregion - - //#region Mars - // Underground decoration - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/loose_rocks') - event.add('tfg:mars_underground_decoration', 'tfc:cave_spike') - event.add('tfg:mars_underground_decoration', 'tfc:cave_column') - event.add('tfg:mars_underground_decoration', 'tfc:large_cave_spike') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagmite') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagtite') - - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/calcite') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/mega_calcite') - - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ice_cave') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle_extra') - event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ochrum_blob') - - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/amethyst") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/barite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/calcite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/gypsum") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/opal") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/pyrite") - event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite") - - // Vegetation - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia_common") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush") - event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush_common") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea") - event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove") - - event.add("tfg:mars_amber_vegetal_decoration", "#tfg:mars_global_small_plants") - event.add("tfg:mars_rusticus_vegetal_decoration", "#tfg:mars_global_small_plants") - event.add("tfg:mars_sangnum_vegetal_decoration", "#tfg:mars_global_small_plants") - - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/amber_root") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") - - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lutebus") - event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/orango") - - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/amber_root") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore") - - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lamellarium") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lutebus") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/orango") - event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/ruscus") - - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/blossom_berry") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/shadow_berry") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") - - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/globulagus") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/lamellarium") - event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/ruscus") - - // Top layer - event.add("tfg:mars_top_layer_modification", "tfg:glow_lichen") - event.add("tfg:mars_top_layer_modification", "tfc:surface_loose_rocks") - event.add("tfg:mars_top_layer_modification", "tfg:mars/terrain/mars_poles") - - //#endregion - - //#region Venus - - // Underground decoration - event.add("tfg:venus_underground_decoration", "tfg:glow_lichen") - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/loose_rocks') - event.add('tfg:venus_underground_decoration', 'tfc:cave_spike') - event.add('tfg:venus_underground_decoration', 'tfc:cave_column') - event.add('tfg:venus_underground_decoration', 'tfc:large_cave_spike') - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagmite') - event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagtite') - - event.add("tfg:venus_top_layer_modification", "tfc:surface_loose_rocks") - //#endregion - - //#region Glacio - event.add("tfg:glacio_top_layer_modification", "tfg:glow_lichen") - event.add("tfg:glacio_top_layer_modification", "tfc:surface_loose_rocks") - //#endregion } diff --git a/kubejs/server_scripts/afc/recipes.js b/kubejs/server_scripts/afc/recipes.js index fa7d7a67e..305f4ff47 100644 --- a/kubejs/server_scripts/afc/recipes.js +++ b/kubejs/server_scripts/afc/recipes.js @@ -16,10 +16,10 @@ const registerAFCRecipes = (event) => { event.remove({ id: "afc:pot/rubber" }) event.remove({ id: "afc:tree_tapping/hevea_latex" }) event.remove({ id: "afc:tree_tapping/rubber_fig_latex" }) - event.remove({ id: "afc:crafting/1_birch_sugar"}) - event.remove({ id: "afc:crafting/1_maple_sugar"}) - event.remove({ id: "afc:crafting/0_birch_sugar_bucket"}) - event.remove({ id: "afc:crafting/0_maple_sugar_bucket"}) + event.remove({ id: "afc:crafting/1_birch_sugar" }) + event.remove({ id: "afc:crafting/1_maple_sugar" }) + event.remove({ id: "afc:crafting/0_birch_sugar_bucket" }) + event.remove({ id: "afc:crafting/0_maple_sugar_bucket" }) // #endregion @@ -48,7 +48,7 @@ const registerAFCRecipes = (event) => { generateCutterRecipe(event, `afc:wood/planks/${wood}_slab`, `2x afc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`) - + // ? -> Деревянная нажимная пластина event.shaped(`afc:wood/planks/${wood}_pressure_plate`, [ ' B ', @@ -72,10 +72,10 @@ const registerAFCRecipes = (event) => { event.remove({ id: `afc:crafting/wood/${wood}_button` }) generateCutterRecipe(event, `afc:wood/planks/${wood}_pressure_plate`, `6x afc:wood/planks/${wood}_button`, 50, 2, `${wood}_button`) - + //Stomping Barrel - event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel`}) - + event.remove({ id: `afc:crafting/wood/${wood}_stomping_barrel` }) + event.shaped(`afc:wood/stomping_barrel/${wood}`, [ 'ABA', 'AAA', @@ -83,9 +83,9 @@ const registerAFCRecipes = (event) => { ], { A: `afc:wood/lumber/${wood}`, B: 'tfc:glue' - + }).id(`afc:crafting/wood/${wood}_stomping_barrel`) - + }) // #endregion @@ -108,86 +108,6 @@ const registerAFCRecipes = (event) => { .resultFluid(Fluid.of('gtceu:copper', 144)) .id('tfg:heating/tree_tap') - //Custom rubber and hevea tappings - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/rubber_fig")) - .resultFluid(Fluid.of("tfg:latex", 2)) - .minTemp(4) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/rubber_fig") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_rubber_fig")) - .resultFluid(Fluid.of("tfg:latex", 2)) - .minTemp(4) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/ancient_rubber_fig") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/hevea")) - .resultFluid(Fluid.of("tfg:latex", 3)) - .minTemp(8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/hevea") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_hevea")) - .resultFluid(Fluid.of("tfg:latex", 3)) - .minTemp(8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/latex/ancient_hevea") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/kapok")) - .resultFluid(Fluid.of("tfg:latex", 4)) - .minTemp(12) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/kapok_latex") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_kapok")) - .resultFluid(Fluid.of("tfg:latex", 4)) - .minTemp(12) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_kapok_latex") - - - // Pine/etc resin - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/aspen")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-10) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/aspen_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_aspen")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-10) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_aspen_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/spruce")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) - .minTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/spruce_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_spruce")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) - .minTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_spruce_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/white_cedar")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/white_cedar_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_white_cedar")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_white_cedar_resin") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/douglas_fir')) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/douglas_fir_resin") - event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_douglas_fir")) - .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) - .minTemp(-8) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/ancient_douglas_fir_resin") - //Syrups event.remove({ id: "afc:tree_tapping/maple_syrup" }) event.remove({ id: "afc:tree_tapping/birch_syrup" }) @@ -198,87 +118,17 @@ const registerAFCRecipes = (event) => { .maxTemp(5) .requiresNaturalLog(true) .id("tfg:tree_tapping/maple_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/birch')) + + event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/birch')) .resultFluid(Fluid.of('afc:birch_sap', 5)) .minTemp(-15) .maxTemp(5) .requiresNaturalLog(true) .id("tfg:tree_tapping/birch_log") - // Mars stuff - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/crimson')) - .resultFluid(Fluid.of('tfg:crimsene', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/crimson_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/crimson')) - .resultFluid(Fluid.of('tfg:crimsene', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/crimson_wood") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/warped')) - .resultFluid(Fluid.of('tfg:warpane', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/warped_log") - - event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/warped')) - .resultFluid(Fluid.of('tfg:warpane', 1)) - .minTemp(-110) - .maxTemp(-15) - .requiresNaturalLog(true) - .id("tfg:tree_tapping/warped_wood") - //#region Extractor Recipe - // Latex - - event.recipes.gtceu.extractor('latex_from_log') - .itemInputs('#tfg:latex_logs') - .outputFluids(Fluid.of('tfg:latex', 250)) - .duration(600) - .EUt(20) - - event.recipes.gtceu.extractor('latex_from_sapling') - .itemInputs('#tfg:rubber_saplings') - .outputFluids(Fluid.of('tfg:latex', 100)) - .duration(750) - .EUt(20) - - event.recipes.gtceu.extractor('latex_from_leaves') - .itemInputs('#tfg:rubber_leaves') - .outputFluids(Fluid.of('tfg:latex', 50)) - .duration(750) - .EUt(20) - - // Conifer Pitch - - event.recipes.gtceu.extractor('conifer_from_log') - .itemInputs('#tfg:rosin_logs') - .outputFluids(Fluid.of('tfg:conifer_pitch', 250)) - .duration(600) - .EUt(20) - - event.recipes.gtceu.extractor('conifer_from_sapling') - .itemInputs('#tfg:rosin_saplings') - .outputFluids(Fluid.of('tfg:conifer_pitch', 100)) - .duration(750) - .EUt(20) - - event.recipes.gtceu.extractor('conifer_from_leaves') - .itemInputs('#tfg:rosin_leaves') - .outputFluids(Fluid.of('tfg:conifer_pitch', 50)) - .duration(750) - .EUt(20) - - // Maple Sirup + // Maple Syrup event.recipes.gtceu.extractor('maple_from_log') .itemInputs('#tfc:maple_logs') @@ -298,7 +148,7 @@ const registerAFCRecipes = (event) => { .duration(750) .EUt(20) - // Birch Sirup + // Birch Syrup event.recipes.gtceu.extractor('birch_from_log') .itemInputs('#tfc:birch_logs') @@ -321,25 +171,6 @@ const registerAFCRecipes = (event) => { //#endregion // Из бревна капока / Logs Centrifuge - event.recipes.gtceu.centrifuge('rubber_log_separation') - .itemInputs('#tfg:latex_logs') - .chancedOutput('gtceu:raw_rubber_dust', 5000, 0) - .chancedOutput('gtceu:plant_ball', 3750, 0) - .chancedOutput('gtceu:sticky_resin', 2500, 0) - .chancedOutput('gtceu:wood_dust', 2500, 0) - .outputFluids(Fluid.of('gtceu:methane', 60)) - .duration(20*20) - .EUt(GTValues.VA[GTValues.MV]) - - event.recipes.gtceu.centrifuge('conifer_log_separation') - .itemInputs('#tfg:rosin_logs') - .chancedOutput('tfg:conifer_rosin', 7500, 0) - .chancedOutput('gtceu:plant_ball', 3750, 0) - .chancedOutput('gtceu:sticky_resin', 2500, 0) - .chancedOutput('gtceu:wood_dust', 2500, 0) - .outputFluids(Fluid.of('gtceu:methane', 60)) - .duration(20*20) - .EUt(GTValues.VA[GTValues.MV]) event.recipes.gtceu.centrifuge('maple_syrup_log_separation') .itemInputs('#tfc:maple_logs') @@ -347,7 +178,7 @@ const registerAFCRecipes = (event) => { .chancedOutput('gtceu:plant_ball', 3750, 0) .chancedOutput('gtceu:hardwood_dust', 2500, 0) .outputFluids(Fluid.of('gtceu:methane', 60), Fluid.of('afc:maple_syrup', 100)) - .duration(20*20) + .duration(20 * 20) .EUt(GTValues.VA[GTValues.MV]) event.recipes.gtceu.centrifuge('birch_syrup_log_separation') @@ -356,7 +187,7 @@ const registerAFCRecipes = (event) => { .chancedOutput('gtceu:plant_ball', 3750, 0) .chancedOutput('gtceu:hardwood_dust', 2500, 0) .outputFluids(Fluid.of('gtceu:methane', 60), Fluid.of('afc:birch_syrup', 100)) - .duration(20*20) + .duration(20 * 20) .EUt(GTValues.VA[GTValues.MV]) //#endregion @@ -366,42 +197,42 @@ const registerAFCRecipes = (event) => { event.recipes.gtceu.fluid_heater('maple_sap_condense') .inputFluids(Fluid.of('afc:maple_sap', 1000)) .outputFluids(Fluid.of('afc:maple_syrup', 100)) - .duration(20*25) + .duration(20 * 25) .EUt(GTValues.VA[GTValues.ULV]) event.recipes.gtceu.fluid_heater('birch_sap_condense') .inputFluids(Fluid.of('afc:birch_sap', 1000)) .outputFluids(Fluid.of('afc:birch_syrup', 100)) - .duration(20*35) + .duration(20 * 35) .EUt(GTValues.VA[GTValues.ULV]) - + event.recipes.gtceu.fluid_solidifier('maple_syrup') .inputFluids(Fluid.of('afc:maple_syrup', 100)) .itemOutputs('afc:maple_sugar') - .duration(20*12) + .duration(20 * 12) .EUt(GTValues.VHA[GTValues.ULV]) event.recipes.gtceu.fluid_solidifier('birch_syrup') .inputFluids(Fluid.of('afc:birch_syrup', 100)) .itemOutputs('afc:birch_sugar') - .duration(20*12) + .duration(20 * 12) .EUt(GTValues.VHA[GTValues.ULV]) - + //#endregion // Syrup into sugar event.recipes.tfc.barrel_sealed(24000) - .inputFluid(Fluid.of('afc:maple_syrup', 100)) - .outputItem('afc:maple_sugar') - .id('tfg:barrel/maple_syrup_to_sugar') + .inputFluid(Fluid.of('afc:maple_syrup', 100)) + .outputItem('afc:maple_sugar') + .id('tfg:barrel/maple_syrup_to_sugar') event.recipes.tfc.barrel_sealed(24000) - .inputFluid(Fluid.of('afc:birch_syrup', 100)) - .outputItem('afc:birch_sugar') - .id('tfg:barrel/birch_syrup_to_sugar') + .inputFluid(Fluid.of('afc:birch_syrup', 100)) + .outputItem('afc:birch_sugar') + .id('tfg:barrel/birch_syrup_to_sugar') // Stripped logs diff --git a/kubejs/server_scripts/betterend/recipes.js b/kubejs/server_scripts/betterend/recipes.js deleted file mode 100644 index 7bdb90325..000000000 --- a/kubejs/server_scripts/betterend/recipes.js +++ /dev/null @@ -1,59 +0,0 @@ -// priority: 0 -"use strict"; - -function registerBetterEndRecipes(event) { - - Ingredient.of('#tfg:moon_plants').stacks.forEach(element => { - const itemId = element.id; - const recipeId = `betterend:greenhouse_${itemId.replace(':', '_')}`; - - event.recipes.gtceu.greenhouse(recipeId) - .notConsumable(element.id) - .itemOutputs(`8x ${element.id}`) - .chancedOutput(element.id, 750, 0) - .chancedOutput(element.id, 500, 0) - .duration(36000) // 30 mins - .circuit(1) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - - event.recipes.gtceu.greenhouse(`${recipeId}_helium`) - .notConsumable(element.id) - .inputFluids(Fluid.of('gtceu:helium_3', 500)) - .itemOutputs(`8x ${element.id}`) - .chancedOutput(element.id, 4000, 0) - .chancedOutput(element.id, 3000, 0) - .duration(12000) // 30 mins - .circuit(2) - .EUt(GTValues.VA[GTValues.MV]) - .dimension('ad_astra:moon') - }); - - Ingredient.of('#tfg:mars_plants').stacks.forEach(element => { - const itemId = element.id; - const recipeId = `greenhouse_${itemId.replace(':', '_')}`; - - generateGreenHouseRecipe(event, itemId, 'tfg:semiheavy_ammoniacal_water', 8000, `8x ${itemId}`, - recipeId, 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]); - }); - - generateGreenHouseRecipe(event, '8x betterend:amber_root_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:amber_root_product', 'amber_root', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:blossom_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:blossom_berry_product', 'blossom_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:bolux_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:bolux_mushroom_product', 'bolux_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:cave_pumpkin_plant_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:cave_pumpkin', 'cave_pumpkin', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:chorus_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:chorus_mushroom_product', 'chorus_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - generateGreenHouseRecipe(event, '8x betterend:shadow_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, - '24x betterend:shadow_berry_product', 'shadow_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) - - event.recipes.firmalife.oven('betterend:cave_pumpkin_pie_raw', 400, 60 * 20, 'betterend:cave_pumpkin_pie') -} \ No newline at end of file diff --git a/kubejs/server_scripts/betterend/tags.js b/kubejs/server_scripts/betterend/tags.js deleted file mode 100644 index a7cc94002..000000000 --- a/kubejs/server_scripts/betterend/tags.js +++ /dev/null @@ -1,48 +0,0 @@ -// priority: 0 -"use strict"; - -function registerBetterEndItemTags(event) { - - event.add('forge:seeds', 'betterend:amber_root_seeds') - event.add('forge:seeds', 'betterend:blossom_berry_seeds') - event.add('forge:seeds', 'betterend:bolux_mushroom_seeds') - event.add('forge:seeds', 'betterend:cave_pumpkin_seeds') - event.add('forge:seeds', 'betterend:shadow_berry_seeds') - - event.add('tfc:foods', 'betterend:amber_root_product') - event.add('tfc:foods/grains', 'betterend:amber_root_product') - - event.add('tfc:foods', 'betterend:blossom_berry_product') - event.add('tfc:foods/fruits', 'betterend:blossom_berry_product') - - event.add('tfc:foods', 'betterend:bolux_mushroom_product') - event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_product') - event.add('forge:mushrooms', 'betterend:bolux_mushroom_product') - event.add('tfc:foods', 'betterend:bolux_mushroom_cooked') - event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_cooked') - event.add('forge:mushrooms', 'betterend:bolux_mushroom_cooked') - - event.add('tfc:foods', 'betterend:cave_pumpkin') - event.add('tfc:foods', 'betterend:cave_pumpkin_chunks') - event.add('tfc:foods/fruits', 'betterend:cave_pumpkin_chunks') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie_dough') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie_raw') - event.add('tfc:foods', 'betterend:cave_pumpkin_pie') - event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie_raw') - event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie') - - event.add('tfc:foods', 'betterend:chorus_mushroom_product') - event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_product') - event.add('forge:mushrooms', 'betterend:chorus_mushroom_product') - event.add('tfc:foods', 'betterend:chorus_mushroom_cooked') - event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_cooked') - event.add('forge:mushrooms', 'betterend:chorus_mushroom_cooked') - - event.add('tfc:foods', 'betterend:shadow_berry_product') - event.add('tfc:foods/fruits', 'betterend:shadow_berry_product') - event.add('tfc:foods', 'betterend:shadow_berry_cooked') - event.add('tfc:foods/fruits', 'betterend:shadow_berry_cooked') - - event.add('forge:mushrooms', 'betterend:flammalix') - event.add('forge:mushrooms', 'betterend:small_amaranita_mushroom') -} \ No newline at end of file diff --git a/kubejs/server_scripts/create/tags.js b/kubejs/server_scripts/create/tags.js index ee7c1e2b2..016f8ec1c 100644 --- a/kubejs/server_scripts/create/tags.js +++ b/kubejs/server_scripts/create/tags.js @@ -33,11 +33,6 @@ const registerCreateItemTags = (event) => { if (dye !== 'white') event.add('tfg:colored_seats', `create:${dye}_seat`) }) - event.add('minecraft:trimmable_armor', 'create:copper_diving_helmet') - event.add('minecraft:trimmable_armor', 'create:copper_diving_boots') - - event.add('minecraft:trimmable_armor', 'create:netherite_diving_helmet') - event.add('minecraft:trimmable_armor', 'create:netherite_diving_boots') event.add('create:blaze_burner_fuel/regular', "gtceu:poor_raw_coal") event.add('create:blaze_burner_fuel/regular', "gtceu:coal_dust") diff --git a/kubejs/server_scripts/firmalife/tags.js b/kubejs/server_scripts/firmalife/tags.js index e33989e16..7a7d32de3 100644 --- a/kubejs/server_scripts/firmalife/tags.js +++ b/kubejs/server_scripts/firmalife/tags.js @@ -14,10 +14,6 @@ const registerFirmaLifeItemTags = (event) => { event.add('c:hidden_from_recipe_viewers', item) }) - event.add('minecraft:trimmable_armor', '#firmalife:beekeeper_armor') - - event.add('tfc:foods/usable_in_salad', 'firmalife:food/pickled_egg') - // Удаление тегов у руд event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/") } diff --git a/kubejs/server_scripts/gregtech/data.js b/kubejs/server_scripts/gregtech/data.js index 29a1ff202..3197bcd1b 100644 --- a/kubejs/server_scripts/gregtech/data.js +++ b/kubejs/server_scripts/gregtech/data.js @@ -134,103 +134,8 @@ const registerGTCEUMetals = (event) => { function registerGTCEUBedrockFluidVeins(event) { - event.add('tfg:moon_helium_3', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:helium_3').fluid) - vein.weight(100) - vein.minimumYield(200) - vein.maximumYield(400) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(200) - }) - - event.add('tfg:moon_helium', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:helium').fluid) - vein.weight(10) - vein.minimumYield(20) - vein.maximumYield(50) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(20) - }) - - event.add('tfg:moon_argon', vein => { - vein.dimensions('ad_astra:moon') - vein.fluid(() => Fluid.of('gtceu:argon').fluid) - vein.weight(5) - vein.minimumYield(10) - vein.maximumYield(30) - vein.depletionAmount(1) - vein.depletionChance(1) - vein.depletedYield(10) - }) - - // Mars Fluid Vein - Credit to Monifactory - - const Registries = Java.loadClass("net.minecraft.core.registries.Registries") - const ResourceKey = Java.loadClass("net.minecraft.resources.ResourceKey") - const martianAmberHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_hills") - const martianAmberPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_plains") - const martianMountainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/martian_mountains") - const martianRusticusHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_hills") - const martianRusticusPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_plains") - const martianSangnumHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_hills") - const martianSangnumPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_plains") - - event.add('tfg:semiheavy_ammoniacal_water', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('tfg:semiheavy_ammoniacal_water').fluid) - vein.weight(100) - vein.minimumYield(200) - vein.maximumYield(400) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(15) - }) - - event.add('tfg:liquid_carbon_dioxide', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('gtceu:liquid_carbon_dioxide').fluid) - vein.weight(30) - vein.minimumYield(20) - vein.maximumYield(350) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) - - event.add('tfg:liquid_ice', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('gtceu:ice').fluid) - vein.weight(20) - vein.minimumYield(20) - vein.maximumYield(200) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) - - // Heavy Ammonical Water in Specific Biome Credit to Monifactory from https://github.com/ThePansmith/Monifactory/blob/main/kubejs/server_scripts/worldgen/fluidVeins.js - - event.add('tfg:heavy_ammoniacal_water', vein => { - vein.dimensions('ad_astra:mars') - vein.fluid(() => Fluid.of('tfg:heavy_ammoniacal_water').fluid) - vein.biomes(20, martianAmberHillsResourceKey) - vein.biomes(20, martianAmberPlainsResourceKey) - vein.biomes(20, martianRusticusHillsResourceKey) - vein.biomes(20, martianRusticusPlainsResourceKey) - vein.biomes(20, martianSangnumHillsResourceKey) - vein.biomes(20, martianSangnumPlainsResourceKey) - // This one is exclusively far inland, so it's ok to buff it a bit in case the player has bad luck - vein.biomes(50, martianMountainsResourceKey) - vein.weight(0) - vein.minimumYield(100) - vein.maximumYield(650) - vein.depletionAmount(1) - vein.depletionChance(20) - vein.depletedYield(5) - }) + registerTFGMoonBedrockFluidVeins(event) + registerTFGMarsBedrockFluidVeins(event) + registerTFGVenusBedrockFluidVeins(event) } diff --git a/kubejs/server_scripts/gregtech/tags.js b/kubejs/server_scripts/gregtech/tags.js index de4bdf149..da08ef709 100644 --- a/kubejs/server_scripts/gregtech/tags.js +++ b/kubejs/server_scripts/gregtech/tags.js @@ -13,10 +13,6 @@ function registerGTCEUItemTags(event) { event.add("c:hidden_from_recipe_viewers", item); }); - global.GTCEU_ARMORS.forEach((item) => { - event.add("minecraft:trimmable_armor", item); - }); - // Добавление тега EMI для скрытия всех руд event.add("c:hidden_from_recipe_viewers", "#forge:ores"); @@ -29,12 +25,6 @@ function registerGTCEUItemTags(event) { event.remove("ae2:p2p_attunements/fluid_p2p_tunnel", `gtceu:${dyeName}_dye_bucket`); }); - // Piglin loved - event.add("minecraft:piglin_loved", "gtceu:tiny_pyrite_dust"); - event.add("minecraft:piglin_loved", "gtceu:poor_raw_pyrite"); - event.add("minecraft:piglin_loved", "gtceu:raw_pyrite"); - event.add("minecraft:piglin_loved", "gtceu:rich_raw_pyrite"); - event.remove("forge:gems", "gtceu:coke_gem"); // Rose Quartz Lens @@ -54,7 +44,6 @@ function registerGTCEUItemTags(event) { // @ts-expect-error According to KJS docs adding tags to tags is supported. event.add("gtceu:molds", "#gtceu:casting_molds", "#gtceu:extruder_molds", "gtceu:empty_mold"); - event.add('forge:wax', 'gtceu:wax_dust'); } /** @param {TagEvent.Block} event */ @@ -64,22 +53,8 @@ function registerGTCEUBlockTags(event) { event.removeAllTagsFrom(item); }); - event.add("minecraft:mineable/pickaxe", "#forge:ores"); - event.add("minecraft:needs_iron_tool", "#forge:ores"); - event.add('gtceu:mineable/pickaxe_or_wrench', 'gtceu:ulv_hermetic_casing'); - // Collapse tags - event.add("tfc:can_collapse", "#forge:ores"); - event.add("tfc:can_start_collapse", "#forge:ores"); - event.add("tfc:can_trigger_collapse", "#forge:ores"); - event.add("c:hidden_from_recipe_viewers", "#forge:ores"); - - event.add("tfc:can_collapse", "#forge:raw_ore_blocks"); - event.add("tfc:can_start_collapse", "#forge:raw_ore_blocks"); - event.add("tfc:can_trigger_collapse", "#forge:raw_ore_blocks"); - event.add("c:hidden_from_recipe_viewers", "#forge:raw_ore_blocks"); - event.remove("gtceu:cleanroom_doors", "#minecraft:wooden_doors"); event.add("gtceu:cleanroom_doors", "firmalife:sealed_door"); event.add("gtceu:cleanroom_doors", "firmalife:iron_greenhouse_door"); @@ -101,27 +76,6 @@ function registerGTCEUBlockTags(event) { event.add("gtceu:cleanroom_doors", "createdeco:zinc_door"); event.add("gtceu:cleanroom_doors", "createdeco:locked_zinc_door"); event.add("gtceu:cleanroom_doors", "ad_astra:steel_door"); - - // Let GT indicators be covered by snow - forEachMaterial((material) => { - if (material.hasProperty(PropertyKey.ORE)) { - const indicator = `gtceu:${material.getName()}_indicator`; - - event.add("tfg:dust_ore_indicators", indicator); - event.add("tfc:can_be_snow_piled", indicator); - event.add("tfc:can_be_ice_piled", indicator); - - if (material.hasProperty(PropertyKey.GEM)) { - const bud = `gtceu:${material.getName()}_bud_indicator`; - - event.add("tfg:bud_ore_indicators", bud); - event.add("tfc:can_be_snow_piled", bud); - event.add("tfc:can_be_ice_piled", bud); - - event.add("minecraft:mineable/pickaxe", bud); - } - } - }); } /** @param {TagEvent.Fluid} event */ diff --git a/kubejs/server_scripts/main_server_script.js b/kubejs/server_scripts/main_server_script.js index 78248cb3b..ac9749489 100644 --- a/kubejs/server_scripts/main_server_script.js +++ b/kubejs/server_scripts/main_server_script.js @@ -13,7 +13,6 @@ ServerEvents.tags('item', event => { registerAlekishipsItemTags(event) registerAsticorCartsItemTags(event) registerBeneathItemTags(event) - registerBetterEndItemTags(event) registerChalkItemTags(event); registerComputerCraftItemTags(event) registerConstructionWandItemTags(event) @@ -50,7 +49,6 @@ ServerEvents.tags('item', event => { registerSNSItemTags(event) registerSpeciesItemTags(event) registerTACZItemTags(event) - registerTFCAmbientalItemTags(event) registerTFCItemTags(event) registerTFCTextileItemTags(event) registerTFGItemTags(event) @@ -125,20 +123,17 @@ ServerEvents.tags('worldgen/placed_feature', event => { // Remove default veins event.removeAll('tfc:in_biome/veins') - registerAdAstraPlacedFeatures(event) - registerTFCPlacedFeatures(event) registerTFGPlacedFeatures(event) }) ServerEvents.tags('worldgen/biome', event => { registerAdAstraBiomeTags(event) registerCreatePickyWheelsBiomeTags(event) - registerTFCBiomeTags(event) registerTFGBiomeTags(event) }) ServerEvents.tags('entity_type', event => { - registerAdAstraEntityTypeTags(event) + registerTFGEntityTypeTags(event) registerWABEntityTypeTags(event) }) @@ -216,7 +211,6 @@ ServerEvents.recipes(event => { registerAE2NetworkAnalyzerRecipes(event) registerAE2WTLibRecipes(event) registerBeneathRecipes(event) - registerBetterEndRecipes(event) registerBuildingGadgetsRecipes(event) registerChalkRecipes(event); registerComfortsRecipes(event); diff --git a/kubejs/server_scripts/minecraft/tags.js b/kubejs/server_scripts/minecraft/tags.js index fb4f5c00f..938e0be90 100644 --- a/kubejs/server_scripts/minecraft/tags.js +++ b/kubejs/server_scripts/minecraft/tags.js @@ -26,67 +26,15 @@ const registerMinecraftItemTags = (event) => { event.add('tfg:bamboo_slabs', 'minecraft:bamboo_mosaic_slab') event.remove('minecraft:creeper_drop_music_discs', ['minecraft:music_disc_11']) - event.add('tfc:foods', 'minecraft:red_mushroom') - event.add('tfc:foods', 'minecraft:brown_mushroom') - event.add('tfc:foods', 'minecraft:glow_berries') - event.add('tfc:foods', 'minecraft:chorus_fruit') - event.add('tfc:foods', 'minecraft:popped_chorus_fruit') - - event.add('tfc:foods/vegetables', 'minecraft:red_mushroom') - event.add('tfc:foods/vegetables', 'minecraft:brown_mushroom') - event.add('tfc:foods/fruits', 'minecraft:glow_berries') - event.add('tfc:foods/fruits', 'minecraft:chorus_fruit') - event.add('tfc:foods/fruits', 'minecraft:popped_chorus_fruit') - - event.add('beneath:usable_in_juicer', 'minecraft:glow_berries') - event.add('beneath:usable_in_juicer', 'minecraft:chorus_fruit') - event.add('beneath:usable_in_juicer', 'minecraft:red_mushroom') - event.add('beneath:usable_in_juicer', 'minecraft:brown_mushroom') - - event.add('tfc:foods/usable_in_soup', 'minecraft:red_mushroom') - event.add('tfc:foods/usable_in_soup', 'minecraft:brown_mushroom') - event.add('tfc:foods/usable_in_soup', 'minecraft:glow_berries') - event.add('tfc:foods/usable_in_soup', 'minecraft:chorus_fruit') - event.add('tfc:foods/usable_in_soup', 'minecraft:popped_chorus_fruit') - - event.add('tfc:foods/usable_in_salad', 'minecraft:red_mushroom') - event.add('tfc:foods/usable_in_salad', 'minecraft:brown_mushroom') - event.add('tfc:foods/usable_in_salad', 'minecraft:glow_berries') - event.add('tfc:foods/usable_in_salad', 'minecraft:chorus_fruit') - event.add('tfc:foods/usable_in_salad', 'minecraft:popped_chorus_fruit') - - event.add('tfc:rabbit_food', 'minecraft:chorus_fruit') - event.add('tfc:rabbit_food', 'minecraft:popped_chorus_fruit') - - event.add('tfc:rock/raw', 'minecraft:deepslate') - event.add('tfc:rock/raw', 'minecraft:blackstone') - event.add('tfc:rock/raw', 'minecraft:dripstone_block') event.remove('forge:gems', 'minecraft:charcoal') event.remove('forge:gems', 'minecraft:coal') event.remove('forge:gems', 'minecraft:flint') - event.add('tfc:compost_greens', 'minecraft:red_mushroom_block') - event.add('tfc:compost_greens', 'minecraft:brown_mushroom_block') - event.add('tfc:compost_greens', 'minecraft:mushroom_stem') - event.add('tfc:compost_greens', 'minecraft:moss_block') - event.add('tfc:compost_greens_low', 'minecraft:moss_carpet') - event.add('tfc:compost_greens_low', 'minecraft:twisting_vines') - event.add('tfc:compost_greens_high', 'minecraft:pearlescent_froglight') - event.add('tfc:compost_greens_high', 'minecraft:verdant_froglight') - event.add('tfc:compost_greens_high', 'minecraft:ochre_froglight') - //event.add('tfc:moss', 'minecraft:moss_carpet') - event.remove('createaddition:plants', 'minecraft:moss_carpet') - event.add('tfc:colored_terracotta', 'minecraft:white_terracotta') event.add('tfc:bells', 'minecraft:bell') - event.add('tfc:plants', 'minecraft:spore_blossom') - - event.add('tfc:compost_greens', 'minecraft:nether_wart_block') - event.add('tfc:compost_greens', 'minecraft:warped_wart_block') - event.add('tfc:hematitic_sand', 'minecraft:red_sand') event.add('tfc:makes_black_dye', 'minecraft:ink_sac') @@ -95,13 +43,6 @@ const registerMinecraftItemTags = (event) => { event.add('create:blaze_burner_fuel/regular', 'minecraft:coal') event.add('create:blaze_burner_fuel/regular', 'minecraft:charcoal') - event.add('minecraft:wart_blocks', 'minecraft:mushroom_stem') - - event.add('forge:smooth_stone_slab', 'minecraft:polished_deepslate_slab') - event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_slab') - event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_brick_slab') - - event.add('tfc:rock/smooth', 'minecraft:smooth_stone') } const registerMinecraftBlockTags = (event) => { @@ -115,98 +56,4 @@ const registerMinecraftBlockTags = (event) => { // Теперь обсидиан сторадж блок event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian') - //#region Nether blocks - - event.add('tfg:lush_ground_replaceable', 'minecraft:deepslate') - event.add('tfg:lush_ground_replaceable', 'minecraft:blackstone') - - event.add('tfc:rock/raw', 'minecraft:deepslate') - event.add('tfc:rock/raw', 'minecraft:blackstone') - event.add('tfc:rock/raw', 'minecraft:dripstone_block') - event.add('forge:cobblestone/normal', 'minecraft:cobbled_deepslate') - event.add('minecraft:lush_ground_replaceable', 'minecraft:blackstone') - event.add('beneath:nether_bush_plantable_on', 'minecraft:blackstone') - event.add('beneath:nether_bush_plantable_on', 'minecraft:deepslate') - event.add('beneath:nether_bush_plantable_on', 'minecraft:moss_block') - event.add('beneath:nether_bush_plantable_on', 'minecraft:dripstone_block') - event.add('minecraft:nether_carver_replaceables', 'minecraft:blackstone') - event.add('minecraft:nether_carver_replaceables', 'minecraft:deepslate') - event.add('minecraft:nether_carver_replaceables', 'minecraft:dripstone_block') - event.add('minecraft:frogs_spawnable_on', 'minecraft:deepslate') - event.add('minecraft:frogs_spawnable_on', 'minecraft:blackstone') - event.add('minecraft:frogs_spawnable_on', 'minecraft:dripstone_block') - event.add('minecraft:axolotls_spawnable_on', 'minecraft:deepslate') - event.add('minecraft:axolotls_spawnable_on', 'minecraft:dripstone_block') - event.add('tfc:grass_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_plantable_on', 'minecraft:deepslate') - event.add('tfc:creeping_plantable_on', 'minecraft:blackstone') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:moss_block') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:deepslate') - event.add('tfc:creeping_stone_plantable_on', 'minecraft:blackstone') - event.add('minecraft:base_stone_nether', 'minecraft:deepslate') - event.add('minecraft:base_stone_nether', 'minecraft:blackstone') - event.add('minecraft:base_stone_nether', 'minecraft:dripstone_block') - event.add('forge:stone', 'minecraft:blackstone') - - event.add('tfc:can_landslide', 'minecraft:cobbled_deepslate') - - event.add('tfc:breaks_when_isolated', 'minecraft:deepslate') - event.add('tfc:breaks_when_isolated', 'minecraft:blackstone') - event.add('tfc:breaks_when_isolated', 'minecraft:gilded_blackstone') - event.add('tfc:breaks_when_isolated', 'minecraft:dripstone_block') - - event.add('tfg:rock_stairs', 'minecraft:cobbled_deepslate_stairs') - event.add('tfg:rock_slabs', 'minecraft:cobbled_deepslate_slab') - event.add('tfg:rock_walls', 'minecraft:cobbled_deepslate_wall') - event.add('tfg:brick_stairs', 'minecraft:deepslate_brick_stairs') - event.add('tfg:brick_slabs', 'minecraft:deepslate_brick_slab') - event.add('tfg:brick_walls', 'minecraft:deepslate_brick_wall') - event.add('tfg:brick_stairs', 'minecraft:deepslate_tile_stairs') - event.add('tfg:brick_slabs', 'minecraft:deepslate_tile_slab') - event.add('tfg:brick_walls', 'minecraft:deepslate_tile_wall') - event.add('tfg:rock_stairs', 'minecraft:blackstone_stairs') - event.add('tfg:rock_slabs', 'minecraft:blackstone_slab') - event.add('tfg:rock_walls', 'minecraft:blackstone_wall') - event.add('tfg:brick_stairs', 'minecraft:blackstone_stairs') - event.add('tfg:brick_slabs', 'minecraft:blackstone_slab') - event.add('tfg:brick_walls', 'minecraft:blackstone_wall') - - event.add('tfc:bloomery_insulation', 'minecraft:polished_deepslate'); - event.add('tfc:forge_insulation', 'minecraft:polished_deepslate'); - event.add('tfc:bloomery_insulation', 'minecraft:polished_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:polished_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:deepslate_tiles'); - event.add('tfc:forge_insulation', 'minecraft:deepslate_tiles'); - event.add('tfc:bloomery_insulation', 'minecraft:cracked_deepslate_tiles'); - event.add('tfc:forge_insulation', 'minecraft:cracked_deepslate_tiles'); - event.add('tfc:bloomery_insulation', 'minecraft:chiseled_deepslate'); - event.add('tfc:forge_insulation', 'minecraft:chiseled_deepslate'); - event.add('tfc:bloomery_insulation', 'minecraft:chiseled_polished_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:chiseled_polished_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:gilded_blackstone'); - event.add('tfc:forge_insulation', 'minecraft:gilded_blackstone'); - event.add('tfc:bloomery_insulation', 'minecraft:basalt'); - event.add('tfc:forge_insulation', 'minecraft:basalt'); - event.add('tfc:bloomery_insulation', 'minecraft:smooth_basalt'); - event.add('tfc:forge_insulation', 'minecraft:smooth_basalt'); - - event.add('minecraft:mineable/pickaxe', 'minecraft:lantern'); - - event.add('minecraft:mineable/pickaxe', 'minecraft:cobweb'); - event.add('minecraft:mineable/hoe', 'minecraft:cobweb'); - event.add('minecraft:mineable/shovel', 'minecraft:cobweb'); - event.add('minecraft:mineable/axe', 'minecraft:cobweb'); - - //#region - - event.removeAll('minecraft:sniffer_diggable_block') - - event.add('tfc:can_be_snow_piled', 'minecraft:crimson_fungus') - event.add('tfc:can_be_snow_piled', 'minecraft:warped_fungus') - event.add('tfc:can_be_snow_piled', 'minecraft:torchflower') - event.add('tfc:can_be_snow_piled', 'minecraft:pitcher_plant') - - event.remove('minecraft:enderman_holdable', 'minecraft:crimson_fungus') - event.remove('minecraft:enderman_holdable', 'minecraft:warped_fungus') } \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/data.js b/kubejs/server_scripts/tfc/data.js index 481d834ce..982310c93 100644 --- a/kubejs/server_scripts/tfc/data.js +++ b/kubejs/server_scripts/tfc/data.js @@ -7,7 +7,6 @@ const registerTFCDataForTFC = (event) => { registerTFCLampFuels(event) registerTFCFertilizers(event) registerTFCKnappingTypes(event) - registerTFCArmourResistances(event) } @@ -73,187 +72,4 @@ const registerTFCFertilizers = (event) => { const registerTFCKnappingTypes = (event) => { event.knappingType('minecraft:flint', 1, 1, 'tfc:item.knapping.stone', true, false, true, 'minecraft:flint', 'tfg:flint') event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw') -} - -const registerTFCArmourResistances = (event) => { - event.itemDamageResistance( - 'create:copper_diving_helmet', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_backtank', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_diving_boots', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'create:copper_diving_helmet', - 2, - 2, - 2 - ) - event.itemDamageResistance( - 'gtceu:hazmat_headpiece', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_chestpiece', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_leggings', - null, - null, - 3 - ) - event.itemDamageResistance( - 'gtceu:hazmat_boots', - null, - null, - 3 - ) - event.itemDamageResistance( - 'create:netherite_diving_helmet', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'create:netherite_backtank', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'minecraft:netherite_leggings', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'create:netherite_diving_boots', - 13, - 13, - 15 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_helmet', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_chestplate', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:advanced_nanomuscle_chestplate', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_leggings', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:nanomuscle_boots', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'gtceu:quarktech_helmet', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_chestplate', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:advanced_quarktech_chestplate', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_leggings', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'gtceu:quarktech_boots', - 24, - 24, - 24 - ) - event.itemDamageResistance( - 'ad_astra:space_helmet', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_suit', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_pants', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:space_boots', - 16, - 16, - 16 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_helmet', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_suit', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_pants', - 21, - 21, - 21 - ) - event.itemDamageResistance( - 'ad_astra:netherite_space_boots', - 21, - 21, - 21 - ) -} +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfc/tags.js b/kubejs/server_scripts/tfc/tags.js index b566fc9ab..040b9857b 100644 --- a/kubejs/server_scripts/tfc/tags.js +++ b/kubejs/server_scripts/tfc/tags.js @@ -111,14 +111,6 @@ function registerTFCItemTags(event) { event.add("minecraft:fishes", "tfc:food/rainbow_trout"); event.add("minecraft:fishes", "tfc:food/smallmouth_bass"); - // Make eggs not useless - event.add("tfc:foods/usable_in_salad", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_salad", "tfc:food/boiled_egg"); - event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/boiled_egg"); - event.add("tfc:foods/usable_in_sandwich", "tfc:food/cooked_egg"); - event.add("tfc:foods/usable_in_sandwich", "tfc:food/boiled_egg"); - // Чтобы жарились бревна из TFC в пиролиз. печке // Почему нельзя просто добавить тег в тег? (допустим minecraft:logs), потому что из-за этого ломаются все рецепты minecraft:logs, магия... global.TFC_WOOD_TYPES.forEach((woodType) => { @@ -147,16 +139,6 @@ function registerTFCItemTags(event) { event.add("tfc:blast_furnace_fuel", "gtceu:coke_gem"); event.add("tfc:blast_furnace_fuel", "beneath:cursecoal"); - // Create a tag for Steam Bloomery - - event.add("tfc:steam_bloomery_basic_fuels", "minecraft:coal"); - event.add("tfc:steam_bloomery_basic_fuels", "minecraft:charcoal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:rich_raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:poor_raw_coal"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:coal_dust"); - event.add("tfc:steam_bloomery_basic_fuels", "gtceu:charcoal_dust"); - // Тэги для сундуков, чтобы отличать их виды global.TFC_WOOD_TYPES.forEach((woodType) => { event.add("tfg:default_chests", `tfc:wood/chest/${woodType}`); @@ -331,12 +313,6 @@ function registerTFCItemTags(event) { event.add("forge:cloth", "tfc:wool_cloth"); event.add("forge:cloth", "tfc:silk_cloth"); - // Piglin loved - event.add("minecraft:piglin_loved", "tfc:ore/small_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/poor_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/normal_native_gold"); - event.add("minecraft:piglin_loved", "tfc:ore/rich_native_gold"); - // Bells event.add("tfc:bells", "tfc:bronze_bell"); event.add("tfc:bells", "tfc:brass_bell"); @@ -432,36 +408,6 @@ function registerTFCBlockTags(event) { // Удаление тегов у руд event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/"); - //#region Nether - - event.add("beneath:nether_bush_plantable_on", "#tfc:clay_grass"); - event.add("minecraft:small_dripleaf_placeable", "#tfc:clay_grass"); - event.add("minecraft:big_dripleaf_placeable", "#tfc:clay_grass"); - event.add("minecraft:frogs_spawnable_on", "#tfc:clay_grass"); - event.add("minecraft:axolotls_spawnable_on", "#tfc:clay_grass"); - - event.add("minecraft:small_dripleaf_placeable", "#tfc:clay"); - event.add("minecraft:big_dripleaf_placeable", "#tfc:clay"); - event.add("minecraft:frogs_spawnable_on", "#tfc:clay"); - event.add("minecraft:axolotls_spawnable_on", "#tfc:clay"); - - event.add("beneath:nether_bush_plantable_on", "#tfc:mud"); - event.add("minecraft:frogs_spawnable_on", "#tfc:mud"); - - event.add("beneath:nether_bush_plantable_on", "#tfc:dirt"); - event.add("minecraft:frogs_spawnable_on", "#tfc:dirt"); - - event.add("minecraft:base_stone_nether", "tfc:rock/raw/gneiss"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/schist"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/diorite"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/granite"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/gabbro"); - event.add("minecraft:base_stone_nether", "tfc:rock/raw/basalt"); - event.add("minecraft:nether_carver_replaceables", "#minecraft:base_stone_nether"); - event.add("minecraft:frogs_spawnable_on", "#minecraft:base_stone_nether"); - - //#endregion - // Lets the basin be put on top of a charcoal forge event.add("tfc:forge_invisible_whitelist", "create:basin"); @@ -752,42 +698,4 @@ function registerTFCFluidTags(event) { event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_black_steel"); event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_red_steel"); event.add("c:hidden_from_recipe_viewers", "tfc:metal/high_carbon_blue_steel"); -} - -/** @param {TagEvent.Biome} event */ -function registerTFCBiomeTags(event) { - event.add("tfc:kaolin_clay_spawns_in", "tfc:rolling_hills"); - - global.TFC_BIOMES.forEach(biome => { - event.add('tfg:overworld_biomes', biome); - }) -} - -/** @param {TagEvent.PlacedFeature} event */ -function registerTFCPlacedFeatures(event) { - // Add back the non-ore ones - event.add("tfc:in_biome/veins", "tfc:vein/gravel"); - event.add("tfc:in_biome/veins", "tfc:vein/kaolin_disc"); - event.add("tfc:in_biome/veins", "tfc:vein/granite_dike"); - event.add("tfc:in_biome/veins", "tfc:vein/diorite_dike"); - event.add("tfc:in_biome/veins", "tfc:vein/gabbro_dike"); - - // Geodes - event.add("tfc:in_biome/veins", "tfg:earth/geode/amethyst"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/barite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/calcite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/gypsum"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/opal"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/pyrite"); - event.add("tfc:in_biome/veins", "tfg:earth/geode/quartzite"); - - // Crops - event.add("tfc:feature/crops", "tfg:earth/sunflower_patch"); - event.add("tfc:feature/crops", "tfg:earth/rapeseed_patch"); - event.add("tfc:feature/crops", "tfg:earth/flax_patch"); - - // Other decoration - event.add("tfc:in_biome/underground_decoration", "tfg:glow_lichen"); - event.add("tfc:in_biome/underground_decoration", "tfg:earth/sulfur_patch"); - event.add("tfc:in_biome/underground_decoration", "tfg:earth/oil_spout"); -} +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfcambiental/tags.js b/kubejs/server_scripts/tfcambiental/tags.js deleted file mode 100644 index aeabe274a..000000000 --- a/kubejs/server_scripts/tfcambiental/tags.js +++ /dev/null @@ -1,26 +0,0 @@ -// priority: 0 -"use strict"; - -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') - - event.add('tfg:lightweight_cloth', 'tfc:silk_cloth') - event.add('tfg:lightweight_cloth', 'tfg:phantom_silk') - event.add('tfg:lightweight_cloth', 'tfg:polycaprolactam_fabric') -} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/beneath/tags.beneath.js b/kubejs/server_scripts/tfg/beneath/tags.beneath.js new file mode 100644 index 000000000..c61249bb5 --- /dev/null +++ b/kubejs/server_scripts/tfg/beneath/tags.beneath.js @@ -0,0 +1,139 @@ +"use strict"; + +function registerTFGBeneathItemTags(event) { + + event.add("minecraft:piglin_loved", "gtceu:tiny_pyrite_dust"); + event.add("minecraft:piglin_loved", "gtceu:poor_raw_pyrite"); + event.add("minecraft:piglin_loved", "gtceu:raw_pyrite"); + event.add("minecraft:piglin_loved", "gtceu:rich_raw_pyrite"); + event.add("minecraft:piglin_loved", "tfc:ore/small_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/poor_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/normal_native_gold"); + event.add("minecraft:piglin_loved", "tfc:ore/rich_native_gold"); + event.add('minecraft:piglin_loved', 'tfg:piglin_disguise') + + event.add('tfc:plants', 'minecraft:spore_blossom') + event.remove('createaddition:plants', 'minecraft:moss_carpet') + + event.add('tfc:compost_greens', 'minecraft:red_mushroom_block') + event.add('tfc:compost_greens', 'minecraft:brown_mushroom_block') + event.add('tfc:compost_greens', 'minecraft:mushroom_stem') + event.add('tfc:compost_greens', 'minecraft:moss_block') + event.add('tfc:compost_greens_low', 'minecraft:moss_carpet') + event.add('tfc:compost_greens_low', 'minecraft:twisting_vines') +} + + +function registerTFGBeneathBlockTags(event) { + event.add('tfg:lush_ground_replaceable', 'minecraft:deepslate') + event.add('tfg:lush_ground_replaceable', 'minecraft:blackstone') + + event.add('minecraft:lush_ground_replaceable', 'minecraft:blackstone') + event.add('beneath:nether_bush_plantable_on', 'minecraft:blackstone') + event.add('beneath:nether_bush_plantable_on', 'minecraft:deepslate') + event.add('beneath:nether_bush_plantable_on', 'minecraft:moss_block') + event.add('beneath:nether_bush_plantable_on', 'minecraft:dripstone_block') + event.add('minecraft:nether_carver_replaceables', 'minecraft:blackstone') + event.add('minecraft:nether_carver_replaceables', 'minecraft:deepslate') + event.add('minecraft:nether_carver_replaceables', 'minecraft:dripstone_block') + event.add('minecraft:frogs_spawnable_on', 'minecraft:deepslate') + event.add('minecraft:frogs_spawnable_on', 'minecraft:blackstone') + event.add('minecraft:frogs_spawnable_on', 'minecraft:dripstone_block') + event.add('minecraft:axolotls_spawnable_on', 'minecraft:deepslate') + event.add('minecraft:axolotls_spawnable_on', 'minecraft:dripstone_block') + event.add('tfc:grass_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_plantable_on', 'minecraft:deepslate') + event.add('tfc:creeping_plantable_on', 'minecraft:blackstone') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:moss_block') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:deepslate') + event.add('tfc:creeping_stone_plantable_on', 'minecraft:blackstone') + + event.add('minecraft:base_stone_nether', 'minecraft:deepslate') + event.add('minecraft:base_stone_nether', 'minecraft:blackstone') + event.add('minecraft:base_stone_nether', 'minecraft:dripstone_block') + event.add("minecraft:base_stone_nether", "tfc:rock/raw/gneiss"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/schist"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/diorite"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/granite"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/gabbro"); + event.add("minecraft:base_stone_nether", "tfc:rock/raw/basalt"); + + event.add('minecraft:mineable/pickaxe', 'minecraft:lantern'); + + event.add('minecraft:mineable/pickaxe', 'minecraft:cobweb'); + event.add('minecraft:mineable/hoe', 'minecraft:cobweb'); + event.add('minecraft:mineable/shovel', 'minecraft:cobweb'); + event.add('minecraft:mineable/axe', 'minecraft:cobweb'); + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate') + event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_deepslate') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_deepslate') + event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_deepslate') + event.add('tfc:grass_plantable_on', 'tfg:rock/hardened_deepslate') + event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_deepslate') + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_blackstone') + event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_blackstone') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_blackstone') + event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_blackstone') + event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_blackstone') + + event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_dripstone') + event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone') + + event.add("beneath:nether_bush_plantable_on", "#tfc:clay_grass"); + event.add("minecraft:small_dripleaf_placeable", "#tfc:clay_grass"); + event.add("minecraft:big_dripleaf_placeable", "#tfc:clay_grass"); + event.add("minecraft:frogs_spawnable_on", "#tfc:clay_grass"); + event.add("minecraft:axolotls_spawnable_on", "#tfc:clay_grass"); + + event.add("minecraft:small_dripleaf_placeable", "#tfc:clay"); + event.add("minecraft:big_dripleaf_placeable", "#tfc:clay"); + event.add("minecraft:frogs_spawnable_on", "#tfc:clay"); + event.add("minecraft:axolotls_spawnable_on", "#tfc:clay"); + + event.add("beneath:nether_bush_plantable_on", "#tfc:mud"); + event.add("minecraft:frogs_spawnable_on", "#tfc:mud"); + + event.add("beneath:nether_bush_plantable_on", "#tfc:dirt"); + event.add("minecraft:frogs_spawnable_on", "#tfc:dirt"); + + event.add("minecraft:nether_carver_replaceables", "#minecraft:base_stone_nether"); + event.add("minecraft:frogs_spawnable_on", "#minecraft:base_stone_nether"); +} + +function registerTFGBeneathBiomeTags(event) { + + event.add('tfg:nether_biomes', 'tfg:nether/lush_hollow') + event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/lush_hollow') + event.add('minecraft:spawns_cold_variant_frogs', 'tfg:nether/lush_hollow') + + event.add('tfg:nether_biomes', 'tfg:nether/decaying_caverns') + event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/decaying_caverns') + event.add('minecraft:spawns_warm_variant_frogs', 'tfg:nether/decaying_caverns') + event.add('minecraft:has_closer_water_fog', 'tfg:nether/decaying_caverns') + + event.add('tfg:nether_biomes', 'tfg:nether/basalt_deltas') + event.add('tfg:nether_biomes', 'tfg:nether/ash_forest') + event.add('tfg:nether_biomes', 'tfg:nether/lava_floes') + event.add('tfg:nether_biomes', 'tfg:nether/webbed_lair') + event.add('tfg:nether_biomes', 'tfg:nether/gneiss_caves') + event.add('tfg:nether_biomes', 'tfg:nether/diorite_caves') + event.add('tfg:nether_biomes', 'tfg:nether/gabbro_caves') + event.add('tfg:nether_biomes', 'tfg:nether/granite_caves') + event.add('tfg:nether_biomes', 'tfg:nether/schist_caves') + + event.add('minecraft:has_structure/nether_fossil', '#tfg:nether_biomes') + event.add('minecraft:has_structure/bastion_remnant', '#tfg:nether_biomes') + +} + +function registerTFGBeneathPlacedFeatures(event) { + + event.add('tfg:nether_veins', 'beneath:vein/crackrack_pipe') + + event.add('tfg:nether_underground_decoration', 'minecraft:spring_open') + event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed') + event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/data.js b/kubejs/server_scripts/tfg/data.js index ba1b45d80..d8c290270 100644 --- a/kubejs/server_scripts/tfg/data.js +++ b/kubejs/server_scripts/tfg/data.js @@ -10,6 +10,7 @@ function registerTFCDataForTFG(event) { registerTFGCropRanges(event); registerTFGFLPlanters(event); registerTFGFauna(event); + registerTFGEquipmentData(event); } //#region Heat Data diff --git a/kubejs/server_scripts/tfg/equipment/data.equipment.js b/kubejs/server_scripts/tfg/equipment/data.equipment.js new file mode 100644 index 000000000..4263d344b --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/data.equipment.js @@ -0,0 +1,189 @@ +"use strict"; + +function registerTFGEquipmentData(event) { + + // #region Armor resistances + + event.itemDamageResistance( + 'create:copper_diving_helmet', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_backtank', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_diving_boots', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'create:copper_diving_helmet', + 2, + 2, + 2 + ) + event.itemDamageResistance( + 'gtceu:hazmat_headpiece', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_chestpiece', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_leggings', + null, + null, + 3 + ) + event.itemDamageResistance( + 'gtceu:hazmat_boots', + null, + null, + 3 + ) + event.itemDamageResistance( + 'create:netherite_diving_helmet', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'create:netherite_backtank', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'minecraft:netherite_leggings', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'create:netherite_diving_boots', + 13, + 13, + 15 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_helmet', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_chestplate', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:advanced_nanomuscle_chestplate', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_leggings', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:nanomuscle_boots', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'gtceu:quarktech_helmet', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_chestplate', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:advanced_quarktech_chestplate', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_leggings', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'gtceu:quarktech_boots', + 24, + 24, + 24 + ) + event.itemDamageResistance( + 'ad_astra:space_helmet', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_suit', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_pants', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:space_boots', + 16, + 16, + 16 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_helmet', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_suit', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_pants', + 21, + 21, + 21 + ) + event.itemDamageResistance( + 'ad_astra:netherite_space_boots', + 21, + 21, + 21 + ) + + // #endregion +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/equipment/recipes.equipment.js b/kubejs/server_scripts/tfg/equipment/recipes.equipment.js new file mode 100644 index 000000000..83c54f8d4 --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/recipes.equipment.js @@ -0,0 +1,54 @@ +"use strict"; + +function registerTFGEquipmentRecipes(event) { + // #region Primitive protection + + event.recipes.tfc.barrel_sealed(2000) + .outputItem('tfg:prepared_leather_gloves') + .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) + .id('tfg:sealed_barrel/prepared_leather_gloves') + + event.recipes.firmalife.vat() + .outputItem('tfg:latex_soaked_gloves') + .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) + .length(300) + .temperature(200) + .id('tfg:vat/latex_soaked_gloves') + + event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') + .id('tfg:oven/rubber_gloves') + + event.remove({ id: 'gtceu:shaped/rubber_gloves' }) + + event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') + .itemInputs('2x #forge:plates/rubber') + .notConsumable('create:brass_hand') + .itemOutputs('gtceu:rubber_gloves') + .duration(200) + .EUt(GTValues.VA[GTValues.ULV]) + .category(GTRecipeCategories.INGOT_MOLDING) + + + event.recipes.tfc.damage_inputs_shaped_crafting( + event.shaped('gtceu:face_mask', [ + 'ACA', + 'ABA', + ' D ' + ], { + A: '#forge:string', + B: '#forge:cloth', + C: 'minecraft:paper', + D: '#tfc:sewing_needles' + }) + ).id('gtceu:shaped/face_mask') + + event.recipes.gtceu.assembler('assemble_face_mask') + .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') + .itemOutputs('gtceu:face_mask') + .duration(100) + .EUt(GTValues.VA[GTValues.ULV]) + .circuit(7) + + // #endregion + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/equipment/tags.equipment.js b/kubejs/server_scripts/tfg/equipment/tags.equipment.js new file mode 100644 index 000000000..b0d28afdc --- /dev/null +++ b/kubejs/server_scripts/tfg/equipment/tags.equipment.js @@ -0,0 +1,52 @@ +"use strict"; + +function registerTFGEquipmentItemTags(event) { + + event.add('minecraft:trimmable_armor', 'create:copper_diving_helmet') + event.add('minecraft:trimmable_armor', 'create:copper_diving_boots') + event.add('minecraft:trimmable_armor', 'create:netherite_diving_helmet') + event.add('minecraft:trimmable_armor', 'create:netherite_diving_boots') + 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') + event.add('minecraft:trimmable_armor', '#firmalife:beekeeper_armor') + + global.GTCEU_ARMORS.forEach((item) => { + event.add("minecraft:trimmable_armor", item); + }); + + event.add('gtceu:ppe_armor', '#ad_astra:space_suit_items') + event.add('minecraft:trimmable_armor', '#ad_astra:space_suit_items') + + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_helmet') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_chestplate') + event.add('ad_astra:space_suit_items', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_leggings') + event.add('ad_astra:space_suit_items', 'gtceu:quarktech_boots') + + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_helmet') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_chestplate') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_leggings') + event.add('ad_astra:freeze_resistant_armor', 'gtceu:quarktech_boots') + + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_helmet') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_chestplate') + event.add('ad_astra:heat_resistant_armor', 'gtceu:advanced_quarktech_chestplate') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_leggings') + event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_boots') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/europa/tags.europa.js b/kubejs/server_scripts/tfg/europa/tags.europa.js new file mode 100644 index 000000000..de5cfc9a7 --- /dev/null +++ b/kubejs/server_scripts/tfg/europa/tags.europa.js @@ -0,0 +1,22 @@ +"use strict"; + +function registerTFGEuropaEntityTypeTags(event) { + const ENTITIES = [ + 'endermanoverhaul:coral_enderman', + 'endermanoverhaul:snowy_enderman', + 'endermanoverhaul:ice_spikes_enderman', + 'species:deepfish', + 'species:leaf_hanger' + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) +} + +function registerTFGEuropaPlacedFeatures(event) { + + event.add("tfg:glacio_top_layer_modification", "tfg:glow_lichen") + event.add("tfg:glacio_top_layer_modification", "tfc:surface_loose_rocks") +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/food/tags.food.js b/kubejs/server_scripts/tfg/food/tags.food.js new file mode 100644 index 000000000..02aa366af --- /dev/null +++ b/kubejs/server_scripts/tfg/food/tags.food.js @@ -0,0 +1,348 @@ +"use strict"; + +function registerTFGFoodItemTags(event) { + + // Crops + event.add('tfc:seeds', 'tfg:sunflower_seeds') + event.add('tfc:seeds', 'tfg:rapeseed_seeds') + event.add('tfc:seeds', 'tfg:flax_seeds') + + event.add('tfc:compost_greens_high', 'tfg:rapeseed_product') + event.add('tfc:compost_greens_high', 'tfg:sunflower_product') + event.add('tfc:compost_greens_high', 'tfg:flax_product') + event.add('tfc:compost_greens_high', 'tfg:lunar_chorus_flower') + + event.add("tfg:sugars", "minecraft:sugar"); + event.add("tfg:sugars", "afc:birch_sugar"); + event.add("tfg:sugars", "afc:maple_sugar"); + + const RAW_MEATS = [ + 'tfg:food/raw_birt', + 'tfg:food/raw_crawlermari', + 'tfg:food/raw_limpet' + ] + RAW_MEATS.forEach(meat => { + event.add('tfc:foods', meat) + event.add('tfc:foods/meats', meat) + event.add('tfc:foods/raw_meats', meat) + }) + + const COOKED_MEATS = [ + 'tfg:food/cooked_birt', + 'tfg:food/cooked_crawlermari', + 'tfg:food/cooked_limpet' + ] + COOKED_MEATS.forEach(meat => { + event.add('tfc:foods', meat) + event.add('tfc:foods/meats', meat) + event.add('tfc:foods/cooked_meats', meat) + }) + + //These tags are used to add the tooltips and for searchability + global.COOLING_FOODS.forEach(food => { event.add('tfg:cooling_foods', food) }) + + event.add('tfg:cooling_foods_strong', 'tfg:food/ice_soup') + + global.WARMING_FOODS.forEach(food => { event.add('tfg:warming_foods', food) }) + + //jam sandwhich stuff + const usable_in_jam_sandwich = Ingredient.of('#tfc:foods/usable_in_jam_sandwich').itemIds.toArray().map(String); + const preserves = Ingredient.of('#tfc:foods/preserves').itemIds.toArray().map(String); + + const usable_in_jam_sandwich_2 = usable_in_jam_sandwich.filter(item => !preserves.includes(item)); + + usable_in_jam_sandwich_2.forEach(item => { + event.add('tfc:foods/usable_in_jam_sandwich_2', item); + }); + + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_sniffer_beef') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_wraptor') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_springling_collar') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_walker_steak') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_glider_wings') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_whole_soarer') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_crusher_meat') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_goober_meat') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_cruncher_ribs') + event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_surfer_steak') + event.add('tfg:raw_dinosaur_meat', 'wan_ancient_beasts:raw_ancient_meat') + + /** + * List of items that can make light stock. + * @type {string[]} + */ + const makesLightStock = [ + 'tfc:food/chicken', + 'tfc:food/cooked_chicken', + 'tfc:food/quail', + 'tfc:food/cooked_quail', + 'tfc:food/pheasant', + 'tfc:food/cooked_pheasant', + 'tfc:food/grouse', + 'tfc:food/cooked_grouse', + 'tfc:food/turkey', + 'tfc:food/cooked_turkey', + 'tfc:food/peafowl', + 'tfc:food/cooked_peafowl', + 'tfc:food/rabbit', + 'tfc:food/cooked_rabbit', + 'tfc:food/duck', + 'tfc:food/cooked_duck', + 'tfg:food/raw_birt', + 'tfg:food/cooked_birt', + 'tfg:food/raw_moon_rabbit', + 'tfg:food/cooked_moon_rabbit', + 'tfg:food/raw_wraptor', + 'tfg:food/cooked_wraptor', + 'tfg:food/raw_glider_wings', + 'tfg:food/cooked_glider_wings', + 'tfg:food/raw_whole_soarer', + 'tfg:food/cooked_whole_soarer' + ]; + makesLightStock.forEach(item => { + event.add('tfg:foods/makes_light_stock', item); + }); + + /** + * List of items that can make rich stock. + * @type {string[]} + */ + const makesRichStock = [ + 'tfc:food/beef', + 'tfc:food/cooked_beef', + 'tfc:food/mutton', + 'tfc:food/cooked_mutton', + 'tfc:food/bear', + 'tfc:food/cooked_bear', + 'tfc:food/horse_meat', + 'tfc:food/cooked_horse_meat', + 'tfc:food/venison', + 'tfc:food/cooked_venison', + 'tfc:food/chevon', + 'tfc:food/cooked_chevon', + 'tfc:food/gran_feline', + 'tfc:food/cooked_gran_feline', + 'tfc:food/turtle', + 'tfc:food/cooked_turtle', + 'tfc:food/camelidae', + 'tfc:food/cooked_camelidae', + 'tfg:food/raw_glacian_mutton', + 'tfg:food/cooked_glacian_mutton', + 'tfg:food/raw_sniffer_beef', + 'tfg:food/cooked_sniffer_beef', + 'tfg:food/raw_walker_steak', + 'tfg:food/cooked_walker_steak', + 'tfg:food/raw_crusher_meat', + 'tfg:food/cooked_crusher_meat', + 'wan_ancient_beasts:raw_ancient_meat', + 'wan_ancient_beasts:cooked_ancient_meat' + ]; + makesRichStock.forEach(item => { + event.add('tfg:foods/makes_rich_stock', item); + }); + + /** + * @type {string[]} - List of cheese curd item IDs. + */ + const cheeseCurds = [ + 'firmalife:food/yak_curd', + 'firmalife:food/goat_curd', + 'firmalife:food/milk_curd', + 'tfc_gurman:ox_curd', + 'tfc_gurman:sheep_curd', + 'tfc_gurman:alpaca_curd' + ]; + cheeseCurds.forEach(item => { + event.add('tfg:foods/cheese_curds', item); + }); + + /** + * @type {string[]} - List of item tags and item IDs that can be used on burgers. + */ + const usable_in_burgers = [ + '#tfc:foods/vegetables', + 'firmalife:food/cooked_bacon', + 'tfc:food/cooked_egg', + 'firmalife:food/tofu' + ]; + usable_in_burgers.forEach(item => { + event.add('tfg:foods/usable_in_burgers', item); + }); + + /** + * @type {string[]} - List of cheese tags and item IDs that can be used on a cheeseburger. + */ + const cheeses = [ + '#firmalife:foods/cheeses', + 'tfg:food/slice_of_cheese', + 'firmalife:food/shredded_cheese' + ]; + cheeses.forEach(item => { + event.add('tfg:foods/cheeses', item); + }); + + /** + * @type {string[]} - List of item IDs that can be used as burger meats. + */ + const burgerMeats = [ + 'tfc:food/beef', + 'tfc:food/turkey', + 'tfc:food/venison', + 'tfg:food/raw_sniffer_beef', + 'tfg:food/raw_crusher_meat', + 'wan_ancient_beasts:raw_ancient_meat' + ]; + burgerMeats.forEach(item => { + event.add('tfg:foods/burger_meats', item); + }); + + // Spice tags + global.SPICES.forEach(spice => { + event.add('tfg:foods/spices', spice.product); + event.add('tfg:foods/spice_plants', spice.plant); + }); + + /** + * @type {string[]} - List of item tags and item IDs that are allowed to be used in oatmeal. + */ + const usable_in_oatmeal = [ + '#tfc:foods/fruits', + 'tfc:food/oat_grain', + '#firmalife:foods/chocolate' + ]; + usable_in_oatmeal.forEach(item => { + event.add('tfg:foods/usable_in_oatmeal', item); + }); + + /** + * @type {string[]} - List of citrus fruit item IDs. + */ + const citrus_fruits = [ + 'tfc:food/orange', + 'tfc:jar/orange_unsealed', + 'tfg:food/freeze_dried/orange', + 'tfc:food/lemon', + 'tfc:jar/lemon_unsealed', + 'tfg:food/freeze_dried/lemon', + 'minecraft:glow_berries', + 'tfg:food/freeze_dried/glow_berries' + ]; + citrus_fruits.forEach(item => { + event.add('tfg:foods/citrus_fruits', item); + }); + + /** + * List of item tags and item IDs that are allowed to be used in a meal bag. + * @type {string[]} + */ + const usable_in_meal_bag = [ + '#tfc:foods/meats', + '#tfc:foods/grains', + '#tfc:foods/vegetables', + '#tfc:foods/fruits', + '#tfc:foods/dairy', + '#tfc:foods/preserves', + '#firmalife:foods/chocolate', + '#tfcchannelcasting:foods/chocolate_sweet', + 'firmalife:food/sugar_cookie', + 'firmalife:food/chocolate_chip_cookie', + 'firmalife:food/vanilla_ice_cream', + 'firmalife:food/strawberry_ice_cream', + 'firmalife:food/chocolate_ice_cream', + 'tfc:food/cooked_egg', + 'tfc:food/boiled_egg', + 'firmalife:food/pickled_egg', + 'tfc:food/cooked_rice', + 'firmalife:food/cooked_pasta', + 'firmalife:food/pasta_with_tomato_sauce', + 'firmalife:food/cooked_rice_noodles', + 'firmalife:food/tortilla_chips', + 'firmalife:food/shredded_cheese', + 'firmalife:food/salsa', + 'firmalife:food/tomato_sauce', + 'tfg:roasted_sunflower_seeds', + 'tfg:food/cooked_dino_nugget', + 'firmalife:food/toast', + 'firmalife:food/toast_with_butter', + 'firmalife:food/toast_with_jam', + 'firmalife:food/butter', + 'tfc_gurman:adjika', + 'tfc_gurman:tzatziki', + 'tfc_gurman:falafel', + 'tfc_gurman:hummus', + 'tfc_gurman:sauerkraut', + 'tfc_gurman:bratwurst' + ]; + usable_in_meal_bag.forEach(item => { + event.add('tfg:foods/usable_in_meal_bag', item); + }); + event.add('tfg:foil_packs', 'tfg:foil_pack'); + event.add('tfg:foil_packs', 'tfg:clean_foil_pack') + + event.add('tfg:solid_fats', 'firmalife:food/butter') + event.add('tfg:solid_fats', 'tfc:blubber') + + // Space foods + event.add('tfc:foods', 'minecraft:red_mushroom') + event.add('tfc:foods', 'minecraft:brown_mushroom') + event.add('tfc:foods', 'minecraft:glow_berries') + event.add('tfc:foods', 'minecraft:chorus_fruit') + event.add('tfc:foods', 'minecraft:popped_chorus_fruit') + + event.add('tfc:foods/vegetables', 'minecraft:red_mushroom') + event.add('tfc:foods/vegetables', 'minecraft:brown_mushroom') + event.add('tfc:foods/fruits', 'minecraft:glow_berries') + event.add('tfc:foods/fruits', 'minecraft:chorus_fruit') + event.add('tfc:foods/fruits', 'minecraft:popped_chorus_fruit') + + event.add('beneath:usable_in_juicer', 'minecraft:glow_berries') + event.add('beneath:usable_in_juicer', 'minecraft:chorus_fruit') + event.add('beneath:usable_in_juicer', 'minecraft:red_mushroom') + event.add('beneath:usable_in_juicer', 'minecraft:brown_mushroom') + + event.add('tfc:foods/usable_in_soup', 'minecraft:red_mushroom') + event.add('tfc:foods/usable_in_soup', 'minecraft:brown_mushroom') + event.add('tfc:foods/usable_in_soup', 'minecraft:glow_berries') + event.add('tfc:foods/usable_in_soup', 'minecraft:chorus_fruit') + event.add('tfc:foods/usable_in_soup', 'minecraft:popped_chorus_fruit') + + // Make eggs not useless + event.add('tfc:foods/usable_in_salad', 'firmalife:food/pickled_egg') + event.add("tfc:foods/usable_in_salad", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_salad", "tfc:food/boiled_egg"); + event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_jam_sandwich", "tfc:food/boiled_egg"); + event.add("tfc:foods/usable_in_sandwich", "tfc:food/cooked_egg"); + event.add("tfc:foods/usable_in_sandwich", "tfc:food/boiled_egg"); + + event.add('tfc:foods/usable_in_salad', 'minecraft:red_mushroom') + event.add('tfc:foods/usable_in_salad', 'minecraft:brown_mushroom') + event.add('tfc:foods/usable_in_salad', 'minecraft:glow_berries') + event.add('tfc:foods/usable_in_salad', 'minecraft:chorus_fruit') + event.add('tfc:foods/usable_in_salad', 'minecraft:popped_chorus_fruit') + + event.add('tfc:rabbit_food', 'minecraft:chorus_fruit') + event.add('tfc:rabbit_food', 'minecraft:popped_chorus_fruit') + + event.add('tfc:foods', 'ad_astra:cheese') + event.add('tfc:foods/dairy', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_sandwich', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_jam_sandwich', 'ad_astra:cheese') + event.add('tfc:foods/usable_in_jam_sandwich_2', 'ad_astra:cheese') + event.add('firmalife:foods/cheeses', 'ad_astra:cheese') +} + +function registerTFGFoodBlockTags(event) { + //crop stuff + event.add('tfc:crops', 'tfg:rapeseed') + event.add('tfc:mineable_with_sharp_tool', 'tfg:rapeseed') + + event.add('tfc:crops', 'tfg:sunflower') + event.add('tfc:mineable_with_sharp_tool', 'tfg:sunflower') + + event.add('tfc:crops', 'tfg:flax') + event.add('tfc:mineable_with_sharp_tool', 'tfg:flax') + + event.add('ad_astra:destroyed_in_space', '#tfc:wild_fruits') + event.add('ad_astra:destroyed_in_space', '#minecraft:saplings') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/json_tool.armor_trim.js b/kubejs/server_scripts/tfg/json_tool.armor_trim.js index 4f66e02ce..35346486e 100644 --- a/kubejs/server_scripts/tfg/json_tool.armor_trim.js +++ b/kubejs/server_scripts/tfg/json_tool.armor_trim.js @@ -69,7 +69,7 @@ const materials = [ // #region Tags // Assigns trim_materials tag to items registered above -function registerTFGTrimTags(event) { +function registerTFGTrimItemTags(event) { event.removeAll('minecraft:trim_materials') materials.forEach(material => { event.add('minecraft:trim_materials', material.itemName) diff --git a/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js index c9df6f6f2..7f5b1888e 100644 --- a/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js +++ b/kubejs/server_scripts/tfg/machines/recipes.steam_bloomery.js @@ -3,7 +3,7 @@ function registerTFGSteamBloomeryRecipes(event) { event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal') - .itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels') + .itemInputs('#forge:ingots/iron', '#tfg:steam_bloomery_basic_fuels') .itemOutputs('tfc:raw_iron_bloom') .duration(2400) .EUt(2) @@ -23,7 +23,7 @@ function registerTFGSteamBloomeryRecipes(event) { const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial() if (outputMaterial === GTMaterials.Iron) { event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`) - .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels') + .itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfg:steam_bloomery_basic_fuels') .itemOutputs('tfc:raw_iron_bloom') .duration(2400) .EUt(2) diff --git a/kubejs/server_scripts/tfg/tags.facades.js b/kubejs/server_scripts/tfg/machines/tags.facades.js similarity index 99% rename from kubejs/server_scripts/tfg/tags.facades.js rename to kubejs/server_scripts/tfg/machines/tags.facades.js index cb12fa3e3..33a59ebbd 100644 --- a/kubejs/server_scripts/tfg/tags.facades.js +++ b/kubejs/server_scripts/tfg/machines/tags.facades.js @@ -1,7 +1,7 @@ // priority: 0 "use strict"; -function registerFacadeWhitelistTags(event) { +function registerTFGFacadeWhitelistItemTags(event) { const facade_materials = [ //tags diff --git a/kubejs/server_scripts/tfg/mars/data.mars.js b/kubejs/server_scripts/tfg/mars/data.mars.js new file mode 100644 index 000000000..0a40f9896 --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/data.mars.js @@ -0,0 +1,68 @@ +"use strict"; + +function registerTFGMarsBedrockFluidVeins(event) { + + const Registries = Java.loadClass("net.minecraft.core.registries.Registries") + const ResourceKey = Java.loadClass("net.minecraft.resources.ResourceKey") + const martianAmberHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_hills") + const martianAmberPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/amber_plains") + const martianMountainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/martian_mountains") + const martianRusticusHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_hills") + const martianRusticusPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/rusticus_plains") + const martianSangnumHillsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_hills") + const martianSangnumPlainsResourceKey = ResourceKey.create(Registries.BIOME, "tfg:mars/sangnum_plains") + + event.add('tfg:semiheavy_ammoniacal_water', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('tfg:semiheavy_ammoniacal_water').fluid) + vein.weight(100) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(15) + }) + + event.add('tfg:liquid_carbon_dioxide', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('gtceu:liquid_carbon_dioxide').fluid) + vein.weight(30) + vein.minimumYield(20) + vein.maximumYield(350) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(5) + }) + + event.add('tfg:liquid_ice', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('gtceu:ice').fluid) + vein.weight(20) + vein.minimumYield(20) + vein.maximumYield(200) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(5) + }) + + // Heavy Ammonical Water in Specific Biome Credit to Monifactory from https://github.com/ThePansmith/Monifactory/blob/main/kubejs/server_scripts/worldgen/fluidVeins.js + + event.add('tfg:heavy_ammoniacal_water', vein => { + vein.dimensions('ad_astra:mars') + vein.fluid(() => Fluid.of('tfg:heavy_ammoniacal_water').fluid) + vein.biomes(20, martianAmberHillsResourceKey) + vein.biomes(20, martianAmberPlainsResourceKey) + vein.biomes(20, martianRusticusHillsResourceKey) + vein.biomes(20, martianRusticusPlainsResourceKey) + vein.biomes(20, martianSangnumHillsResourceKey) + vein.biomes(20, martianSangnumPlainsResourceKey) + // This one is exclusively far inland, so it's ok to buff it a bit in case the player has bad luck + vein.biomes(50, martianMountainsResourceKey) + vein.weight(0) + vein.minimumYield(100) + vein.maximumYield(650) + vein.depletionAmount(1) + vein.depletionChance(20) + vein.depletedYield(30) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/recipes.iodine.js b/kubejs/server_scripts/tfg/mars/recipes.iodine.js index 90a8fc031..371c0a9fc 100644 --- a/kubejs/server_scripts/tfg/mars/recipes.iodine.js +++ b/kubejs/server_scripts/tfg/mars/recipes.iodine.js @@ -4,6 +4,34 @@ function registerTFGMarsIodineRecipes(event) { // This file is specifically for the crappy mars-based iodine recipe chain. // The "proper" venus one is elsewhere + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/crimson')) + .resultFluid(Fluid.of('tfg:crimsene', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/crimson_log") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/crimson')) + .resultFluid(Fluid.of('tfg:crimsene', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/crimson_wood") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/log/warped')) + .resultFluid(Fluid.of('tfg:warpane', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/warped_log") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('beneath:wood/wood/warped')) + .resultFluid(Fluid.of('tfg:warpane', 1)) + .minTemp(-110) + .maxTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/warped_wood") event.recipes.gtceu.autoclave('tfg:crimsene') .inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000)) diff --git a/kubejs/server_scripts/tfg/mars/recipes.mars.js b/kubejs/server_scripts/tfg/mars/recipes.mars.js index 844bbab19..5c995e9f8 100644 --- a/kubejs/server_scripts/tfg/mars/recipes.mars.js +++ b/kubejs/server_scripts/tfg/mars/recipes.mars.js @@ -228,4 +228,34 @@ function registerTFGMarsRecipes(event) { A: 'ad_astra:glacian_fur', B: '#tfc:lumber' }).id('tfg:shaped/glacian_bed') + + // Plants + + Ingredient.of('#tfg:mars_plants').stacks.forEach(element => { + const itemId = element.id; + const recipeId = `greenhouse_${itemId.replace(':', '_')}`; + + generateGreenHouseRecipe(event, itemId, 'tfg:semiheavy_ammoniacal_water', 8000, `8x ${itemId}`, + recipeId, 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]); + }); + + generateGreenHouseRecipe(event, '8x betterend:amber_root_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:amber_root_product', 'amber_root', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:blossom_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:blossom_berry_product', 'blossom_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:bolux_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:bolux_mushroom_product', 'bolux_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:cave_pumpkin_plant_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:cave_pumpkin', 'cave_pumpkin', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:chorus_mushroom_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:chorus_mushroom_product', 'chorus_mushroom', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + generateGreenHouseRecipe(event, '8x betterend:shadow_berry_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, + '24x betterend:shadow_berry_product', 'shadow_berry', 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]) + + event.recipes.firmalife.oven('betterend:cave_pumpkin_pie_raw', 400, 60 * 20, 'betterend:cave_pumpkin_pie') } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/mars/tags.mars.js b/kubejs/server_scripts/tfg/mars/tags.mars.js new file mode 100644 index 000000000..bd1cbc9ef --- /dev/null +++ b/kubejs/server_scripts/tfg/mars/tags.mars.js @@ -0,0 +1,529 @@ +"use strict"; + +function registerTFGMarsItemTags(event) { + + event.add('c:hidden_from_recipe_viewers', 'tfg:mars_ice') + + event.add('tfc:compost_greens', 'ad_astra:aeronos_cap') + event.add('tfc:compost_greens', 'ad_astra:strophar_cap') + + // Dirt + event.add('minecraft:dirt', 'tfg:grass/mars_dirt') + event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:grass', 'tfg:grass/amber_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:farmland', 'tfg:grass/mars_farmland') + event.add('tfc:paths', 'tfg:grass/mars_path') + event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') + + // Mars animals + event.add('tfg:martian_eggs', 'tfg:sniffer_egg') + event.add('tfg:martian_eggs', 'tfg:wraptor_egg') + event.add('forge:eggs', '#tfg:martian_eggs') + event.add('firmalife:foods/raw_eggs', '#tfg:martian_eggs') + + event.add('tfg:martian_animal_foods', 'betterend:amber_root_product') + event.add('tfg:martian_animal_foods', 'betterend:blossom_berry_product') + event.add('tfg:martian_animal_foods', 'betterend:chorus_mushroom_product') + event.add('tfg:martian_animal_foods', 'betterend:shadow_berry_product') + event.add('tfg:martian_animal_foods', 'betterend:bolux_mushroom_product') + event.add('tfg:martian_animal_foods', 'betterend:cave_pumpkin_chunks') + + event.add('tfg:glacian_ram_food', '#tfg:martian_animal_foods') + event.add('tfg:sniffer_food', '#tfg:martian_animal_foods') + event.add('tfg:wraptor_food', '#tfg:martian_animal_foods') + + event.remove('minecraft:wool', 'ad_astra:glacian_fur') + + event.add('tfg:mineral_rich_wool', 'tfg:wraptor_wool') + event.add('tfg:mineral_rich_wool', 'tfg:sniffer_wool') + + event.add('buildinggadgets2:deny', 'tfg:spice') + + // these are log tags + event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') + event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') + + event.add('tfc:makes_tannin', '#ad_astra:glacian_logs') + event.add('tfc:makes_tannin', '#tfc:crimson_logs') + event.add('tfc:makes_tannin', '#tfc:warped_logs') + + // Crops + event.add('forge:seeds', 'betterend:amber_root_seeds') + event.add('forge:seeds', 'betterend:blossom_berry_seeds') + event.add('forge:seeds', 'betterend:bolux_mushroom_seeds') + event.add('forge:seeds', 'betterend:cave_pumpkin_seeds') + event.add('forge:seeds', 'betterend:shadow_berry_seeds') + + event.add('tfc:foods', 'betterend:amber_root_product') + event.add('tfc:foods/grains', 'betterend:amber_root_product') + + event.add('tfc:foods', 'betterend:blossom_berry_product') + event.add('tfc:foods/fruits', 'betterend:blossom_berry_product') + + event.add('tfc:foods', 'betterend:bolux_mushroom_product') + event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_product') + event.add('forge:mushrooms', 'betterend:bolux_mushroom_product') + event.add('tfc:foods', 'betterend:bolux_mushroom_cooked') + event.add('tfc:foods/vegetables', 'betterend:bolux_mushroom_cooked') + event.add('forge:mushrooms', 'betterend:bolux_mushroom_cooked') + + event.add('tfc:foods', 'betterend:cave_pumpkin') + event.add('tfc:foods', 'betterend:cave_pumpkin_chunks') + event.add('tfc:foods/fruits', 'betterend:cave_pumpkin_chunks') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie_dough') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie_raw') + event.add('tfc:foods', 'betterend:cave_pumpkin_pie') + event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie_raw') + event.add('firmalife:foods/washable', 'betterend:cave_pumpkin_pie') + + event.add('tfc:foods', 'betterend:chorus_mushroom_product') + event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_product') + event.add('forge:mushrooms', 'betterend:chorus_mushroom_product') + event.add('tfc:foods', 'betterend:chorus_mushroom_cooked') + event.add('tfc:foods/vegetables', 'betterend:chorus_mushroom_cooked') + event.add('forge:mushrooms', 'betterend:chorus_mushroom_cooked') + + event.add('tfc:foods', 'betterend:shadow_berry_product') + event.add('tfc:foods/fruits', 'betterend:shadow_berry_product') + event.add('tfc:foods', 'betterend:shadow_berry_cooked') + event.add('tfc:foods/fruits', 'betterend:shadow_berry_cooked') + + event.add('forge:mushrooms', 'betterend:flammalix') + event.add('forge:mushrooms', 'betterend:small_amaranita_mushroom') +} + +function registerTFGMarsBlockTags(event) { + + event.add('buildinggadgets2:deny', 'tfg:spice') + event.add('ae2:blacklisted/spatial', 'tfg:spice') + + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dacite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/basalt') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/gabbro') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/diorite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/rhyolite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/andesite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/chert') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/conglomerate') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/claystone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/limestone') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/dolomite') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/raw/shale') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/hardened/shale') + event.add('ad_astra:mars_stone_replaceables', 'tfc:rock/gravel/shale') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:mars_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_mars_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_mars') + event.add('ad_astra:mars_stone_replaceables', 'minecraft:red_sandstone') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_stone') + event.add('ad_astra:mars_stone_replaceables', 'ad_astra:venus_sandstone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_venus_stone') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_venus') + event.add('ad_astra:mars_stone_replaceables', 'gtceu:red_granite') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/hardened_red_granite') + event.add('ad_astra:mars_stone_replaceables', 'tfg:rock/gravel_red_granite') + event.add('ad_astra:mars_stone_replaceables', 'create:ochrum') + + event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables') + + event.add('tfg:mars_soil', 'minecraft:red_sand') + event.add('tfg:mars_soil', 'ad_astra:mars_sand') + event.add('tfg:mars_soil', 'ad_astra:venus_sand') + event.add('tfg:mars_soil', 'tfg:rock/gravel_venus') + event.add('tfg:mars_soil', 'tfg:rock/gravel_mars') + event.add('tfg:mars_soil', 'tfc:rock/gravel/dacite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/basalt') + event.add('tfg:mars_soil', 'tfc:rock/gravel/gabbro') + event.add('tfg:mars_soil', 'tfc:rock/gravel/diorite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/rhyolite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/andesite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/conglomerate') + event.add('tfg:mars_soil', 'tfc:rock/gravel/claystone') + event.add('tfg:mars_soil', 'tfc:rock/gravel/limestone') + event.add('tfg:mars_soil', 'tfc:rock/gravel/dolomite') + event.add('tfg:mars_soil', 'tfc:rock/gravel/shale') + event.add('tfg:mars_soil', 'tfc:sand/black') + event.add('tfg:mars_soil', 'tfc:sand/red') + event.add('tfg:mars_soil', 'tfc:sand/pink') + event.add('tfg:mars_soil', 'tfg:grass/mars_dirt') + event.add('tfg:mars_soil', 'tfg:grass/mars_clay_dirt') + event.add('tfg:mars_soil', 'tfg:grass/amber_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/amber_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil') + event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil') + event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants') + event.add('minecraft:valid_spawn', '#minecraft:animals_spawnable_on') + + event.removeAll('minecraft:sniffer_diggable_block') + + event.add('tfc:can_be_snow_piled', 'minecraft:crimson_fungus') + event.add('tfc:can_be_snow_piled', 'minecraft:warped_fungus') + event.add('tfc:can_be_snow_piled', 'minecraft:torchflower') + event.add('tfc:can_be_snow_piled', 'minecraft:pitcher_plant') + + event.add('tfg:heightmap_ignore', 'ad_astra:strophar_cap') + event.add('tfg:heightmap_ignore', 'ad_astra:strophar_stem') + event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_cap') + event.add('tfg:heightmap_ignore', 'ad_astra:aeronos_stem') + event.add('tfg:heightmap_ignore', 'minecraft:nether_wart_block') + event.add('tfg:heightmap_ignore', 'minecraft:warped_wart_block') + event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_block') + event.add('tfg:heightmap_ignore', 'species:alphacene_mushroom_growth') + event.add('tfg:heightmap_ignore', 'tfg:glacian_leaves') + event.add('tfg:heightmap_ignore', 'betterend:glacian_hymenophore') + event.add('tfg:heightmap_ignore', 'species:alphacene_moss_block') + event.add('tfg:heightmap_ignore', 'minecraft:ice') + + event.remove('minecraft:enderman_holdable', 'minecraft:crimson_fungus') + event.remove('minecraft:enderman_holdable', 'minecraft:warped_fungus') + + event.remove('ad_astra:strophar_caps', 'ad_astra:strophar_cap') + event.remove('ad_astra:aeronos_caps', 'ad_astra:aeronos_cap') + + event.add('tfc:can_be_snow_piled', 'ad_astra:aeronos_mushroom') + event.add('tfc:can_be_snow_piled', 'ad_astra:strophar_mushroom') + + event.add('minecraft:dirt', 'tfg:grass/mars_dirt') + event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') + event.add('minecraft:dirt', 'tfg:grass/amber_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_mycelium') + event.add('minecraft:dirt', 'tfg:grass/amber_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_clay_mycelium') + event.add('minecraft:dirt', 'tfg:grass/amber_kaolin_mycelium') + event.add('minecraft:dirt', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('minecraft:dirt', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:dirt', 'tfg:grass/mars_dirt') + event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') + event.add('tfc:farmland', 'tfg:grass/mars_farmland') + + event.add('tfc:paths', 'tfg:grass/mars_path') + + event.add('tfc:grass', 'tfg:grass/amber_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:grass', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:grass', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:grass', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_kaolin_mycelium') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_farmland') + event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_path') + + event.add('tfc:can_landslide', 'tfg:grass/mars_dirt') + event.add('tfc:can_landslide', 'tfg:grass/mars_clay_dirt') + event.add('tfc:can_landslide', 'tfg:grass/mars_farmland') + event.add('tfc:can_landslide', 'tfg:grass/mars_path') + event.add('tfc:can_landslide', 'tfg:grass/amber_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/amber_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_clay_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/amber_kaolin_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('tfc:can_landslide', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_dirt') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_clay_dirt') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_path') + event.add('minecraft:mineable/shovel', 'tfg:grass/mars_farmland') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/amber_kaolin_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_kaolin_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_clay_mycelium') + event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_kaolin_mycelium') + + event.add('tfc:bush_plantable_on', 'tfg:grass/mars_farmland') + event.add('tfc:grass_plantable_on', 'tfg:grass/mars_farmland') + event.add('tfc:creeping_plantable_on', 'tfg:grass/mars_farmland') + + event.add('tfg:decorative_plant_attachable', '#minecraft:logs') + event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem') + event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block') + event.add('tfg:decorative_plant_attachable', 'species:alphacene_moss_block') + event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap') + event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap') + event.add('tfg:decorative_plant_attachable', 'tfg:glacian_leaves') + event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block') + event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block') + event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush') + event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves') + + event.add('minecraft:mineable/shovel', 'tfg:ash_pile') + event.add('minecraft:mineable/shovel', 'tfg:pile/black_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/white_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/brown_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/red_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/yellow_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/pink_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/green_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/moon_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand') + event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand_covering') + event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand_covering') + event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand_covering') +} + +function registerTFGMarsBiomeTags(event) { + + global.MARS_BIOMES.forEach(biome => { + event.add('tfg:mars_biomes', biome) + }) + + event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_dunes') + event.add('sandworm_mod:can_spawn_sandworms', 'tfg:mars/martian_deep_desert') + + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_dunes') + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_deep_desert') + event.add('tfg:has_dark_sand_particles', 'tfg:mars/martian_mountains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/amber_hills') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/rusticus_hills') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_plains') + event.add('tfg:has_medium_sand_particles', 'tfg:mars/sangnum_hills') + event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_dune_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/amber_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/rusticus_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/sangnum_edge') + event.add('tfg:has_light_sand_particles', 'tfg:mars/martian_river') + + event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_mountains') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/martian_river') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/amber_hills') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/rusticus_hills') + event.add('tfg:has_mild_dust_storms', 'tfg:mars/sangnum_hills') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/amber_edge') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/rusticus_edge') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_plains') + event.add('tfg:has_moderate_dust_storms', 'tfg:mars/sangnum_edge') + event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_dunes') + event.add('tfg:has_severe_dust_storms', 'tfg:mars/martian_deep_desert') +} + +function registerTFGMarsEntityTypeTags(event) { + + const ENTITIES = [ + 'tfg:sniffer', + 'tfg:glacian_ram', + 'tfg:wraptor', + 'species:goober', + 'species:cruncher', + 'species:springling', + 'species:quake', + 'species:stackatick', + 'endermanoverhaul:crimson_forest_enderman', + 'endermanoverhaul:warped_forest_enderman', + 'endermanoverhaul:badlands_enderman', + 'endermanoverhaul:cave_enderman', + 'wan_ancient_beasts:walker', + 'wan_ancient_beasts:eater', + 'wan_ancient_beasts:crusher', + 'wan_ancient_beasts:soarer', + 'wan_ancient_beasts:glider', + 'wan_ancient_beasts:toxlacanth', + 'wan_ancient_beasts:surfer', + 'tfg:surfer' + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_piercing_damage', 'tfg:wraptor') + event.add('tfc:deals_piercing_damage', 'species:cruncher') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:eater') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:soarer') + event.add('tfc:deals_piercing_damage', 'wan_ancient_beasts:glider') + event.add('tfc:deals_piercing_damage', 'ad_astra:martian_raptor') + event.add('tfc:deals_crushing_damage', 'species:quake') + event.add('tfc:deals_crushing_damage', 'wan_ancient_beasts:walker') + event.add('tfc:deals_crushing_damage', 'wan_ancient_beasts:crusher') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:crimson_forest_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:warped_forest_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:badlands_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:cave_enderman') + + // this guy has a bounce animation that looks silly in low grav + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:crusher') + // this huge guy also looks silly in low grav + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:walker') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:eater') + // flying mobs + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:soarer') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:glider') + // swimming mobs + event.add('tfg:ignores_gravity', 'tfg:surfer') + event.add('tfg:ignores_gravity', 'wan_ancient_beasts:toxlacanth') + event.add('tfg:ignores_gravity', 'endermanoverhaul:coral_enderman') +} + +function registerTFGMarsPlacedFeatures(event) { + // Underground decoration + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/loose_rocks') + event.add('tfg:mars_underground_decoration', 'tfc:cave_spike') + event.add('tfg:mars_underground_decoration', 'tfc:cave_column') + event.add('tfg:mars_underground_decoration', 'tfc:large_cave_spike') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagmite') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/noise_cave_stalagtite') + + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/calcite') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/mega_calcite') + + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ice_cave') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/icicle_extra') + event.add('tfg:mars_underground_decoration', 'tfg:mars/underground/ochrum_blob') + + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/amethyst") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/barite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/calcite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/gypsum") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/opal") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/pyrite") + event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite") + + // Vegetation + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia_common") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush") + event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush_common") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea") + event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove") + + event.add("tfg:mars_amber_vegetal_decoration", "#tfg:mars_global_small_plants") + event.add("tfg:mars_rusticus_vegetal_decoration", "#tfg:mars_global_small_plants") + event.add("tfg:mars_sangnum_vegetal_decoration", "#tfg:mars_global_small_plants") + + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/amber_root") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") + + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lutebus") + event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/orango") + + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/amber_root") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore") + + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lamellarium") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lutebus") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/orango") + event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/ruscus") + + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/blossom_berry") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/bolux_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/cave_pumpkin") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/chorus_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/crop/shadow_berry") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/filalux_wings_top") + + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/globulagus") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/lamellarium") + event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/ruscus") + + // Top layer + event.add("tfg:mars_top_layer_modification", "tfg:glow_lichen") + event.add("tfg:mars_top_layer_modification", "tfc:surface_loose_rocks") + event.add("tfg:mars_top_layer_modification", "tfg:mars/terrain/mars_poles") +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/data.moon.js b/kubejs/server_scripts/tfg/moon/data.moon.js new file mode 100644 index 000000000..7e72dfc32 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/data.moon.js @@ -0,0 +1,38 @@ +"use strict"; + +function registerTFGMoonBedrockFluidVeins(event) { + + event.add('tfg:moon_helium_3', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:helium_3').fluid) + vein.weight(100) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(200) + }) + + event.add('tfg:moon_helium', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:helium').fluid) + vein.weight(10) + vein.minimumYield(20) + vein.maximumYield(50) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(20) + }) + + event.add('tfg:moon_argon', vein => { + vein.dimensions('ad_astra:moon') + vein.fluid(() => Fluid.of('gtceu:argon').fluid) + vein.weight(5) + vein.minimumYield(10) + vein.maximumYield(30) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(10) + }) + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/recipes.plants.js b/kubejs/server_scripts/tfg/moon/recipes.plants.js index daaf47235..fd5bfdb5b 100644 --- a/kubejs/server_scripts/tfg/moon/recipes.plants.js +++ b/kubejs/server_scripts/tfg/moon/recipes.plants.js @@ -87,4 +87,30 @@ function registerTFGMoonPlantRecipes(event) { .outputFluids(Fluid.of('gtceu:biomass', 20)) .duration(50) .EUt(3) + + Ingredient.of('#tfg:moon_plants').stacks.forEach(element => { + const itemId = element.id; + const recipeId = `betterend:greenhouse_${itemId.replace(':', '_')}`; + + event.recipes.gtceu.greenhouse(recipeId) + .notConsumable(element.id) + .itemOutputs(`8x ${element.id}`) + .chancedOutput(element.id, 750, 0) + .chancedOutput(element.id, 500, 0) + .duration(36000) // 30 mins + .circuit(1) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + + event.recipes.gtceu.greenhouse(`${recipeId}_helium`) + .notConsumable(element.id) + .inputFluids(Fluid.of('gtceu:helium_3', 500)) + .itemOutputs(`8x ${element.id}`) + .chancedOutput(element.id, 4000, 0) + .chancedOutput(element.id, 3000, 0) + .duration(12000) // 30 mins + .circuit(2) + .EUt(GTValues.VA[GTValues.MV]) + .dimension('ad_astra:moon') + }); } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/moon/tags.moon.js b/kubejs/server_scripts/tfg/moon/tags.moon.js new file mode 100644 index 000000000..33b50a4d3 --- /dev/null +++ b/kubejs/server_scripts/tfg/moon/tags.moon.js @@ -0,0 +1,117 @@ +"use strict"; + +function registerTFGMoonItemTags(event) { + + event.add('tfg:moon_plants', 'tfg:lunar_roots') + event.add('tfg:moon_plants', 'tfg:lunar_sprouts') + + event.add('tfc:compost_greens_high', 'minecraft:pearlescent_froglight') + event.add('tfc:compost_greens_high', 'minecraft:verdant_froglight') + event.add('tfc:compost_greens_high', 'minecraft:ochre_froglight') +} + +function registerTFGMoonBlockTags(event) { + + event.add('minecraft:rabbits_spawnable_on', '#ad_astra:moon_stone_replaceables') + event.add('species:limpet_spawnable_on', '#ad_astra:moon_stone_replaceables') + + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:moon_sand') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_stone') + event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/white') + event.add('ad_astra:moon_stone_replaceables', 'tfc:sand/black') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/gravel/dacite') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_moon_deepslate') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/gravel_glacio') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_stone') + event.add('ad_astra:moon_stone_replaceables', 'tfg:rock/hardened_glacio_stone') + event.add('ad_astra:moon_stone_replaceables', 'ad_astra:glacio_cobblestone') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/rhyolite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:moon_stone_replaceables', 'tfc:rock/hardened/dacite') + + event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables') +} + +function registerTFGMoonBiomeTags(event) { + global.MOON_BIOMES.forEach(biome => { + event.add('tfg:moon_biomes', biome) + event.add('tfg:has_structure/meteors', biome) + event.add('tfg:has_structure/cheese_ores', biome) + event.add('tfg:has_structure/moonbase', biome) + event.add('tfg:has_structure/moon_rabbit_houses', biome) + event.add('species:limpet_spawns', biome) + }) +} + +function registerTFGMoonEntityTypeTags(event) { + const ENTITIES = [ + 'tfc:rat', + 'tfg:moon_rabbit', + 'minecraft:enderman', + 'minecraft:shulker', + 'minecraft:shulker_bullet', + 'minecraft:skeleton', + 'minecraft:stray', + 'species:limpet', + 'species:birt', + 'endermanoverhaul:windswept_hills_enderman', + 'endermanoverhaul:soulsand_valley_enderman', + 'endermanoverhaul:spirit', + 'endermanoverhaul:end_enderman', + 'endermanoverhaul:end_islands_enderman', + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_cold', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_piercing_damage', 'minecraft:stray') + event.add('tfc:deals_slashing_damage', 'minecraft:enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:windswept_hills_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:soulsand_valley_enderman') + event.add('tfc:deals_piercing_damage', 'endermanoverhaul:end_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:end_islands_enderman') + event.add('tfc:deals_crushing_damage', 'ad_astra:star_crawler') + event.add('tfc:deals_crushing_damage', 'species:birt') + + event.add('tfg:ignores_gravity', 'minecraft:shulker_bullet') + event.add('tfg:ignores_gravity', 'endermanoverhaul:spirit') + event.add('tfg:ignores_gravity', 'species:birt') + event.add('tfg:ignores_gravity', 'ad_astra:star_crawler') +} + +function registerTFGMoonPlacedFeatures(event) { + event.add('tfg:moon_craters', 'tfg:moon/crater/extra_large') + event.add('tfg:moon_craters', 'tfg:moon/crater/large') + event.add('tfg:moon_craters', 'tfg:moon/crater/medium') + event.add('tfg:moon_craters', 'tfg:moon/crater/small') + + global.MOON_STONE_TYPES.forEach(stone => { + // only in the sparse ones + event.add('tfg:moon_large_rock_features', `tfg:moon/surface/delta/${stone}`) + // in all moon biomes + event.add('tfg:moon_small_rock_features', `tfg:moon/surface/pile/${stone}`) + event.add('tfg:moon_small_rock_features', `tfg:moon/surface/loose/${stone}`) + }) + + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_moon_sand') + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_white_sand') + event.add('tfg:moon_small_rock_features', 'tfg:moon/surface/pile_black_sand') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js index d1c642af9..2df6ade7c 100644 --- a/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js +++ b/kubejs/server_scripts/tfg/natural_blocks/tags.stones.js @@ -1,6 +1,6 @@ // priority: 0 -function registerTFGItemStoneTags(event) { +function registerTFGStoneItemTags(event) { event.add('tfc:fluxstone', 'tfg:loose/dripstone') diff --git a/kubejs/server_scripts/tfg/primitive/events.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/fishing_nets/events.fishing_nets.js similarity index 100% rename from kubejs/server_scripts/tfg/primitive/events.fishing_nets.js rename to kubejs/server_scripts/tfg/primitive/fishing_nets/events.fishing_nets.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js b/kubejs/server_scripts/tfg/primitive/fishing_nets/recipes.fishing_nets.js similarity index 100% rename from kubejs/server_scripts/tfg/primitive/recipes.fishing_nets.js rename to kubejs/server_scripts/tfg/primitive/fishing_nets/recipes.fishing_nets.js diff --git a/kubejs/server_scripts/tfg/primitive/events.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/events.medicine.js similarity index 100% rename from kubejs/server_scripts/tfg/primitive/events.medicine.js rename to kubejs/server_scripts/tfg/primitive/medicine/events.medicine.js diff --git a/kubejs/server_scripts/tfg/primitive/recipes.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/recipes.medicine.js similarity index 100% rename from kubejs/server_scripts/tfg/primitive/recipes.medicine.js rename to kubejs/server_scripts/tfg/primitive/medicine/recipes.medicine.js diff --git a/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js b/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js new file mode 100644 index 000000000..edfe6bceb --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/medicine/tags.medicine.js @@ -0,0 +1,67 @@ +"use strict"; + +function registerTFGMedicineItemTags(event) { + + event.add('tfg:antipoison_ingredients', 'tfc:plant/blood_lily') + event.add('tfg:antipoison_ingredients', 'tfc:plant/pistia') + event.add('tfg:antipoison_ingredients', 'tfc:powder/bismuthinite') + event.add('tfg:antipoison_ingredients', 'gtceu:mica_dust') + event.add('tfg:antipoison_ingredients', 'gtceu:fullers_earth_dust') + + event.add('tfg:poison_ingredients', 'tfc:plant/butterfly_milkweed') + event.add('tfg:poison_ingredients', 'tfc:plant/grape_hyacinth') + event.add('tfg:poison_ingredients', 'tfc:plant/lily_of_the_valley') + event.add('tfg:poison_ingredients', 'tfc:plant/pulsatilla') + event.add('tfg:poison_ingredients', 'firmalife:food/nightshade_berry') + event.add('tfg:poison_ingredients', 'minecraft:red_mushroom') + + event.add('tfg:regeneration_ingredients', 'tfc:plant/lilac') + event.add('tfg:regeneration_ingredients', 'tfc:plant/field_horsetail') + event.add('tfg:regeneration_ingredients', 'tfc:plant/licorice_fern') + event.add('tfg:regeneration_ingredients', 'tfc:plant/sacred_datura') + + event.add('tfg:speed_ingredients', 'tfc:plant/labrador_tea') + event.add('tfg:speed_ingredients', 'firmalife:raw_honey') + + event.add('tfg:slowness_ingredients', 'tfc:plant/marigold') + event.add('tfg:slowness_ingredients', 'tfc:plant/nasturtium') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_red') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_white') + event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_yellow') + + event.add('tfg:weakness_ingredients', 'tfc:plant/laminaria') + event.add('tfg:weakness_ingredients', 'tfc:plant/sea_palm') + event.add('tfg:weakness_ingredients', 'tfc:plant/sea_lavender') + event.add('tfg:weakness_ingredients', 'tfc:plant/canna') + event.add('tfg:weakness_ingredients', 'tfc:plant/water_canna') + + event.add('tfg:haste_ingredients', '#tfg:sugars') + + event.add('tfg:water_breathing_ingredients', 'tfc:powder/saltpeter') + event.add('tfg:water_breathing_ingredients', 'tfc:powder/charcoal') + event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') + + event.add('tfg:night_vision_ingredients', 'tfc:food/carrot') + event.add('tfg:night_vision_ingredients', 'beneath:gleamflower') + event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') + + event.add('tfg:invisibility_ingredients', 'tfc:plant/calendula') + event.add('tfg:absorption_ingredients', 'beneath:burpflower') + + event.add('tfg:fire_resistance_ingredients', 'tfc:plant/cattail') + event.add('tfg:fire_resistance_ingredients', 'tfc:plant/meads_milkweed') + event.add('tfg:fire_resistance_ingredients', 'firmalife:plant/bay_laurel') + event.add('tfg:fire_resistance_ingredients', 'beneath:ghost_pepper') + + event.add('tfg:resistance_ingredients', 'tfc:plant/hibiscus') + event.add('tfg:resistance_ingredients', 'gtceu:calcium_dust') + + event.add('tfg:instant_health_ingredients', 'tfc:plant/foxglove') + event.add('tfg:instant_health_ingredients', 'tfc:plant/artists_conk') + + event.add('tfg:absorption_ingredients', 'tfc:plant/poppy') + event.add('tfg:invisibility_ingredients', 'tfc:plant/snapdragon_pink') + + event.add('tfg:luck_ingredients', 'tfc:plant/goldenrod') + event.add('tfg:luck_ingredients', 'tfc:plant/heather') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.rubber.js b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js index f607c75ea..5920707dd 100644 --- a/kubejs/server_scripts/tfg/primitive/recipes.rubber.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.rubber.js @@ -2,6 +2,59 @@ function registerTFGRubberRecipes(event) { + // Tapping + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/rubber_fig")) + .resultFluid(Fluid.of("tfg:latex", 2)) + .minTemp(4) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/rubber_fig") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_rubber_fig")) + .resultFluid(Fluid.of("tfg:latex", 2)) + .minTemp(4) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/ancient_rubber_fig") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/hevea")) + .resultFluid(Fluid.of("tfg:latex", 3)) + .minTemp(8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/hevea") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_hevea")) + .resultFluid(Fluid.of("tfg:latex", 3)) + .minTemp(8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/latex/ancient_hevea") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/kapok")) + .resultFluid(Fluid.of("tfg:latex", 4)) + .minTemp(12) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/kapok_latex") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_kapok")) + .resultFluid(Fluid.of("tfg:latex", 4)) + .minTemp(12) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_kapok_latex") + + // Latex + event.recipes.gtceu.extractor('latex_from_log') + .itemInputs('#tfg:latex_logs') + .outputFluids(Fluid.of('tfg:latex', 250)) + .duration(600) + .EUt(20) + + event.recipes.gtceu.extractor('latex_from_sapling') + .itemInputs('#tfg:rubber_saplings') + .outputFluids(Fluid.of('tfg:latex', 100)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.extractor('latex_from_leaves') + .itemInputs('#tfg:rubber_leaves') + .outputFluids(Fluid.of('tfg:latex', 50)) + .duration(750) + .EUt(20) + // Sticky resin event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300) .itemOutput('gtceu:sticky_resin') @@ -80,54 +133,13 @@ function registerTFGRubberRecipes(event) { .duration(200) .EUt(20) - - // #region Primitive protection - - event.recipes.tfc.barrel_sealed(2000) - .outputItem('tfg:prepared_leather_gloves') - .inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000)) - .id('tfg:sealed_barrel/prepared_leather_gloves') - - event.recipes.firmalife.vat() - .outputItem('tfg:latex_soaked_gloves') - .inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000)) - .length(300) - .temperature(200) - .id('tfg:vat/latex_soaked_gloves') - - event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves') - .id('tfg:oven/rubber_gloves') - - event.remove({ id: 'gtceu:shaped/rubber_gloves' }) - - event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter') - .itemInputs('2x #forge:plates/rubber') - .notConsumable('create:brass_hand') - .itemOutputs('gtceu:rubber_gloves') - .duration(200) - .EUt(GTValues.VA[GTValues.ULV]) - .category(GTRecipeCategories.INGOT_MOLDING) - - - event.recipes.tfc.damage_inputs_shaped_crafting( - event.shaped('gtceu:face_mask', [ - 'ACA', - 'ABA', - ' D ' - ], { - A: '#forge:string', - B: '#forge:cloth', - C: 'minecraft:paper', - D: '#tfc:sewing_needles' - }) - ).id('gtceu:shaped/face_mask') - - event.recipes.gtceu.assembler('assemble_face_mask') - .itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper') - .itemOutputs('gtceu:face_mask') - .duration(100) - .EUt(GTValues.VA[GTValues.ULV]) - .circuit(7) - - // #endregion + event.recipes.gtceu.centrifuge('rubber_log_separation') + .itemInputs('#tfg:latex_logs') + .chancedOutput('gtceu:raw_rubber_dust', 5000, 0) + .chancedOutput('gtceu:plant_ball', 3750, 0) + .chancedOutput('gtceu:sticky_resin', 2500, 0) + .chancedOutput('gtceu:wood_dust', 2500, 0) + .outputFluids(Fluid.of('gtceu:methane', 60)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/primitive/recipes.wax.js b/kubejs/server_scripts/tfg/primitive/recipes.wax.js index 3ebf064b4..e3376285f 100644 --- a/kubejs/server_scripts/tfg/primitive/recipes.wax.js +++ b/kubejs/server_scripts/tfg/primitive/recipes.wax.js @@ -14,6 +14,80 @@ function registerTFGWaxRecipes(event) { .duration(500) .EUt(GTValues.VA[GTValues.LV]) + // Tapping + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/aspen")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-10) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/aspen_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_aspen")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-10) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_aspen_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/spruce")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) + .minTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/spruce_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_spruce")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 4)) + .minTemp(-15) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_spruce_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient("tfc:wood/log/white_cedar")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/white_cedar_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_white_cedar")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 3)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_white_cedar_resin") + + event.recipes.afc.tree_tapping(TFC.blockIngredient('tfc:wood/log/douglas_fir')) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/douglas_fir_resin") + event.recipes.afc.tree_tapping(TFC.blockIngredient("afc:wood/log/ancient_douglas_fir")) + .resultFluid(Fluid.of('tfg:conifer_pitch', 2)) + .minTemp(-8) + .requiresNaturalLog(true) + .id("tfg:tree_tapping/ancient_douglas_fir_resin") + + // Conifer Pitch + event.recipes.gtceu.extractor('conifer_from_log') + .itemInputs('#tfg:rosin_logs') + .outputFluids(Fluid.of('tfg:conifer_pitch', 250)) + .duration(600) + .EUt(20) + + event.recipes.gtceu.extractor('conifer_from_sapling') + .itemInputs('#tfg:rosin_saplings') + .outputFluids(Fluid.of('tfg:conifer_pitch', 100)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.extractor('conifer_from_leaves') + .itemInputs('#tfg:rosin_leaves') + .outputFluids(Fluid.of('tfg:conifer_pitch', 50)) + .duration(750) + .EUt(20) + + event.recipes.gtceu.centrifuge('conifer_log_separation') + .itemInputs('#tfg:rosin_logs') + .chancedOutput('tfg:conifer_rosin', 7500, 0) + .chancedOutput('gtceu:plant_ball', 3750, 0) + .chancedOutput('gtceu:sticky_resin', 2500, 0) + .chancedOutput('gtceu:wood_dust', 2500, 0) + .outputFluids(Fluid.of('gtceu:methane', 60)) + .duration(20 * 20) + .EUt(GTValues.VA[GTValues.MV]) + // Rosin event.recipes.firmalife.vat() .inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000)) diff --git a/kubejs/server_scripts/tfg/primitive/tags.primitive.js b/kubejs/server_scripts/tfg/primitive/tags.primitive.js new file mode 100644 index 000000000..02915188c --- /dev/null +++ b/kubejs/server_scripts/tfg/primitive/tags.primitive.js @@ -0,0 +1,88 @@ +"use strict"; + +function registerTFGPrimitiveItemTags(event) { + + //Decorative Vases + global.MINECRAFT_DYE_NAMES.forEach(color => { + event.add('c:hidden_from_recipe_viewers', `tfg:decorative_vase/generated/${color}`) + event.add('tfg:decorative_vases/generated', `tfg:decorative_vase/generated/${color}`) + event.add('tfg:decorative_vases', `tfg:decorative_vase/${color}`) + event.add('tfg:decorative_vases/unfired', `tfg:decorative_vase/unfired/${color}`) + }) + event.add('tfg:decorative_vases', 'tfg:decorative_vase') + event.add('tfg:decorative_vases/unfired', 'tfg:decorative_vase/unfired') + + //Knapping + event.add('tfc:any_knapping', 'minecraft:flint') + + // Tools + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/wood') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/brass') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/rose_gold') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/sterling_silver') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/invar') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/tin_alloy') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/cupronickel') + event.add('forge:tools/fishing_nets', 'tfg:fishing_net/magnalium') + + event.add('forge:tools/trowels', 'tfg:trowel') + + event.add('tfg:harvester', 'tfg:harvest_basket') + event.add('tfg:harvester', 'tfg:aluminium_harvest_basket') + + event.add('tfg:tools/ore_prospectors/copper', 'tfc:metal/propick/copper') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bronze') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bismuth_bronze') + event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/black_bronze') + event.add('tfg:tools/ore_prospectors/wrought_iron', 'tfc:metal/propick/wrought_iron') + event.add('tfg:tools/ore_prospectors/steel', 'tfc:metal/propick/steel') + event.add('tfg:tools/ore_prospectors/black_steel', 'tfc:metal/propick/black_steel') + event.add('tfg:tools/ore_prospectors/blue_steel', 'tfc:metal/propick/blue_steel') + event.add('tfg:tools/ore_prospectors/red_steel', 'tfc:metal/propick/red_steel') + + // Paper from wood + event.add('tfg:hardwood_strips', 'tfg:hardwood_strip') + event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip') + //Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok. + event.add('tfg:wood_dusts', 'gtceu:hardwood_dust') + event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust') + event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust') + event.add('tfg:wood_dusts', 'gtceu:wood_dust') + event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust') + event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust') + + // Waxe + event.add('forge:wax', 'gtceu:wax_dust'); + event.add('forge:wax', 'tfg:paraffin_wax') + event.add('forge:wax', 'firmalife:beeswax') + event.add('forge:wax', 'tfg:conifer_rosin') + event.add('forge:wax', 'tfg:crimsene_gem') + event.add('forge:wax', 'tfg:warpane_gem') + + // Cloth & String + event.add('tfg:lightweight_cloth', 'tfc:silk_cloth') + event.add('tfg:lightweight_cloth', 'tfg:phantom_silk') + event.add('tfg:lightweight_cloth', 'tfg:polycaprolactam_fabric') + event.add('forge:cloth', 'tfg:phantom_silk') + event.add('forge:cloth', 'tfg:polycaprolactam_fabric') + event.add('tfc:high_quality_cloth', 'tfg:phantom_silk') + event.add('tfc:high_quality_cloth', 'tfg:polycaprolactam_fabric') + event.add('tfc:sewing_light_cloth', 'tfg:phantom_silk') + event.add('tfc:sewing_dark_cloth', 'tfg:polycaprolactam_fabric') + event.add('forge:string', 'tfg:phantom_thread') + event.add('forge:string', 'tfg:polycaprolactam_string') + event.add('forge:string', 'firmalife:pineapple_yarn') +} + +function registerTFGPrimitiveBlockTags(event) { + event.add('minecraft:mineable/shovel', 'tfg:ash_pile') + + event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves') + event.add('tfg:harvester_harvestable', '#tfc:berry_bushes') + event.add('tfg:harvester_harvestable', '#tfc:any_spreading_bush') + event.add('tfg:harvester_harvestable', '#firmalife:grape_strings') + event.add('tfg:harvester_harvestable', '#firmalife:grape_trellis_posts_plant') + //added for QOL but doesnt harvest anything + event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_red') + event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_white') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index bbe860782..e078a55b3 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -43,6 +43,7 @@ const registerTFGRecipes = (event) => { registerTFGKnappingRecipes(event) registerTFGLeatherRecipes(event) registerTFGClayRecipes(event) + registerTFGEquipmentRecipes(event) registerTFGCasingRecipes(event) registerTFGEnderPearlRecipes(event) diff --git a/kubejs/server_scripts/tfg/space_general/tags.railgun.js b/kubejs/server_scripts/tfg/space_general/tags.railgun.js new file mode 100644 index 000000000..0ad284fb5 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/tags.railgun.js @@ -0,0 +1,82 @@ +"use strict"; + +function registerTFGRailgunItemTags(event) { + + event.add('tfg:cannot_launch_in_railgun', '#tfc:vessels') + event.add('tfg:cannot_launch_in_railgun', '#tfc:large_vessels') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_1k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_4k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_16k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_64k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_256k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_1k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_4k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_16k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_64k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_256k') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_2') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_16') + event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_128') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_1m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_4m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_16m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_64m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_1m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_4m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_16m') + event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_64m') + event.add('tfg:cannot_launch_in_railgun', 'create:minecart_contraption') + event.add('tfg:cannot_launch_in_railgun', 'tfg:railgun_ammo_shell') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x10') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x8') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x12') + event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x12') + event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:composite_package') + event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:copper_jar_package_8x8') + event.add('tfg:cannot_launch_in_railgun', 'sns:ore_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:leather_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:burlap_sack') + event.add('tfg:cannot_launch_in_railgun', 'sns:seed_pouch') + event.add('tfg:cannot_launch_in_railgun', 'sns:straw_basket') + event.add('tfg:cannot_launch_in_railgun', 'sns:frame_pack') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:cooling_lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:electric_lunchbox') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:copper_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:iron_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:gold_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:diamond_backpack') + event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:netherite_backpack') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:wood_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:black_bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:bismuth_bronze_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:steel_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:aluminium_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:stainless_steel_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:titanium_crate') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:tungsten_steel_crate') + event.add('tfg:cannot_launch_in_railgun', '#create:toolboxes') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_chest') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_tank') + event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_tank') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/space_general/tags.rockets.js b/kubejs/server_scripts/tfg/space_general/tags.rockets.js new file mode 100644 index 000000000..fd6a8ef65 --- /dev/null +++ b/kubejs/server_scripts/tfg/space_general/tags.rockets.js @@ -0,0 +1,28 @@ +"use strict"; + +function registerTFGRocketItemTags(event) { + + // Insulation Tier 1 + event.add('forge:insulation_t1', 'gtceu:borosilicate_glass_dust') + event.add('forge:insulation_t1', 'gtceu:vitrified_asbestos_dust') + + //Insulation Tier 2 + event.add('forge:insulation_t2/sheet', 'tfg:aes_insulation_sheet') + event.add('forge:insulation_t2/roll', 'tfg:aes_insulation_roll') + + //Insulation Tier3 + event.add('forge:insulation_t3/foam', 'tfg:aes_polyurethane') + event.add('forge:insulation_t3/sheet', 'tfg:mli_shielding') + event.add('forge:insulation_t3/cryo', 'tfg:silica_aerogel') + + event.add('forge:aerogels', 'tfg:silica_aerogel') + + //Rocket Engines + event.add('ad_astra:rocket_engine', 'ad_astra:steel_engine') + event.add('ad_astra:rocket_engine', 'ad_astra:desh_engine') + event.add('ad_astra:rocket_engine', 'ad_astra:ostrum_engine') + + //Rocket Tank + event.add('ad_astra:rocket_tank', 'ad_astra:ostrum_tank') + +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/tags.interaction.js b/kubejs/server_scripts/tfg/tags.interaction.js index 99be4b76f..ad0c2bea0 100644 --- a/kubejs/server_scripts/tfg/tags.interaction.js +++ b/kubejs/server_scripts/tfg/tags.interaction.js @@ -1,8 +1,8 @@ // priority: 0 "use strict"; -function registerBlockInteractionTags(event) { - +function registerBlockInteractionItemTags(event) { + /** * @typedef {Object} BrickVariant * @property {string} brick_type - The name of the brick variant. @@ -23,11 +23,11 @@ function registerBlockInteractionTags(event) { * @property {string|null} smooth_slab - Smooth brick slab block ID. * @property {string|null} smooth_wall - Smooth brick wall block ID. * @property {string|null} chiseled_brick - Chiseled brick block ID. - */ - - for (const b of global.BRICK_INDEX) { + */ + + for (const b of global.BRICK_INDEX) { if (b.brick !== null) { event.add('tfg:interaction/brick', b.brick) } - if (b.brick_stairs !== null) {event.add('tfg:interaction/brick_stairs', b.brick_stairs) } + if (b.brick_stairs !== null) { event.add('tfg:interaction/brick_stairs', b.brick_stairs) } if (b.brick_slab !== null) { event.add('tfg:interaction/brick_slab', b.brick_slab) } if (b.brick_wall !== null) { event.add('tfg:interaction/brick_wall', b.brick_wall) } @@ -42,27 +42,22 @@ function registerBlockInteractionTags(event) { if (b.mossy_wall !== null) { event.add('tfg:interaction/mossy_brick_wall', b.mossy_wall) } if (b.smooth_brick !== null) { event.add('tfg:interaction/smooth_brick', b.smooth_brick) } - //event.add('tfg:interaction/smooth_bricks', b.smooth_stairs) - //event.add('tfg:interaction/smooth_bricks', b.smooth_slab) - //event.add('tfg:interaction/smooth_bricks', b.smooth_wall) - + //event.add('tfg:interaction/smooth_bricks', b.smooth_stairs) + //event.add('tfg:interaction/smooth_bricks', b.smooth_slab) + //event.add('tfg:interaction/smooth_bricks', b.smooth_wall) + } - } - - - for (const c of global.COBBLE_INDEX) { - - event.add('tfg:interaction/cobble', c.block) - event.add('tfg:interaction/cobble_stairs', c.stairs) - event.add('tfg:interaction/cobble_slab', c.slab) - event.add('tfg:interaction/cobble_wall', c.wall) - event.add('tfg:interaction/mossy_cobble', c.mossy_block) - event.add('tfg:interaction/mossy_cobble_stairs', c.mossy_stairs) - event.add('tfg:interaction/mossy_cobble_slab', c.mossy_slab) - event.add('tfg:interaction/mossy_cobble_wall', c.mossy_wall) + for (const c of global.COBBLE_INDEX) { - - } - + event.add('tfg:interaction/cobble', c.block) + event.add('tfg:interaction/cobble_stairs', c.stairs) + event.add('tfg:interaction/cobble_slab', c.slab) + event.add('tfg:interaction/cobble_wall', c.wall) + + event.add('tfg:interaction/mossy_cobble', c.mossy_block) + event.add('tfg:interaction/mossy_cobble_stairs', c.mossy_stairs) + event.add('tfg:interaction/mossy_cobble_slab', c.mossy_slab) + event.add('tfg:interaction/mossy_cobble_wall', c.mossy_wall) + } } diff --git a/kubejs/server_scripts/tfg/tags.js b/kubejs/server_scripts/tfg/tags.js index 785160a42..8735c6b48 100644 --- a/kubejs/server_scripts/tfg/tags.js +++ b/kubejs/server_scripts/tfg/tags.js @@ -2,66 +2,21 @@ const registerTFGItemTags = (event) => { - registerTFGTrimTags(event) - registerFacadeWhitelistTags(event) - registerBlockInteractionTags(event) - registerTFGItemStoneTags(event) - - //crop stuff - event.add('tfc:seeds', 'tfg:sunflower_seeds') - event.add('tfc:seeds', 'tfg:rapeseed_seeds') - event.add('tfc:seeds', 'tfg:flax_seeds') - event.add('tfc:compost_greens_high', 'tfg:rapeseed_product') - event.add('tfc:compost_greens_high', 'tfg:sunflower_product') - event.add('tfc:compost_greens_high', 'tfg:flax_product') - event.add('tfc:compost_greens_high', 'tfg:lunar_chorus_flower') - event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product') - event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product') - - event.add("tfg:sugars", "minecraft:sugar"); - event.add("tfg:sugars", "afc:birch_sugar"); - event.add("tfg:sugars", "afc:maple_sugar"); - - // Actually "layers", can't rename them without screwing with peoples' worlds - event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/brown_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/green_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/pink_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/red_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/white_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/yellow_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/moon_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand') - - // Actually "piles", the kind that can hide plants inside them - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') - - // Actually "piles", the kind that can hide plants inside them - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') - event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') - - event.add('c:hidden_from_recipe_viewers', 'tfg:mars_ice') - - //Decorative Vases - global.MINECRAFT_DYE_NAMES.forEach(color => { - event.add('c:hidden_from_recipe_viewers', `tfg:decorative_vase/generated/${color}`) - event.add('tfg:decorative_vases/generated', `tfg:decorative_vase/generated/${color}`) - event.add('tfg:decorative_vases', `tfg:decorative_vase/${color}`) - event.add('tfg:decorative_vases/unfired', `tfg:decorative_vase/unfired/${color}`) - }) - event.add('tfg:decorative_vases', 'tfg:decorative_vase') - event.add('tfg:decorative_vases/unfired', 'tfg:decorative_vase/unfired') - - //Knapping - event.add('tfc:any_knapping', 'minecraft:flint') + registerTFGTrimItemTags(event) + registerTFGFacadeWhitelistItemTags(event) + registerBlockInteractionItemTags(event) + registerTFGStoneItemTags(event) + registerTFGFoodItemTags(event); + registerTFGMedicineItemTags(event); + registerTFGPrimitiveItemTags(event) + registerTFGEquipmentItemTags(event); + registerTFGRailgunItemTags(event) + registerTFGRocketItemTags(event) + registerTFGGeneralWorldgenItemTags(event); + registerTFGBeneathItemTags(event) + registerTFGMoonItemTags(event) + registerTFGMarsItemTags(event) + registerTFGVenusItemTags(event) //Circuit Stuff event.add('tfg:components/uv_leds', 'tfg:uv_led') @@ -75,134 +30,13 @@ const registerTFGItemTags = (event) => { event.add('tfg:platinum_ore_group', 'gtceu:purified_cooperite_ore') event.add('tfg:platinum_ore_group', 'gtceu:purified_chalcocite_ore') - //#region Tools & Armor - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/wood') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/brass') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/rose_gold') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/sterling_silver') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/invar') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/tin_alloy') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/cupronickel') - event.add('forge:tools/fishing_nets', 'tfg:fishing_net/magnalium') - - event.add('minecraft:piglin_loved', 'tfg:piglin_disguise') - - event.add('forge:tools/trowels', 'tfg:trowel') - - event.add('tfg:harvester', 'tfg:harvest_basket') - event.add('tfg:harvester', 'tfg:aluminium_harvest_basket') - - event.add('tfg:tools/ore_prospectors/copper', 'tfc:metal/propick/copper') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bronze') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/bismuth_bronze') - event.add('tfg:tools/ore_prospectors/bronze', 'tfc:metal/propick/black_bronze') - event.add('tfg:tools/ore_prospectors/wrought_iron', 'tfc:metal/propick/wrought_iron') - event.add('tfg:tools/ore_prospectors/steel', 'tfc:metal/propick/steel') - event.add('tfg:tools/ore_prospectors/black_steel', 'tfc:metal/propick/black_steel') - event.add('tfg:tools/ore_prospectors/blue_steel', 'tfc:metal/propick/blue_steel') - event.add('tfg:tools/ore_prospectors/red_steel', 'tfc:metal/propick/red_steel') - + //#region Tools event.add('tfg:empty_dna_syringes', 'tfg:empty_dna_syringe') event.add('tfg:empty_dna_syringes', 'tfg:clean_dna_syringe') event.add('tfc:sewing_needles', 'tfg:stainless_steel_needle') //#endregion - // #region Paper from wood - event.add('tfg:hardwood_strips', 'tfg:hardwood_strip') - event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip') - //Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok. - event.add('tfg:wood_dusts', 'gtceu:hardwood_dust') - event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust') - event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust') - event.add('tfg:wood_dusts', 'gtceu:wood_dust') - event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust') - event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust') - - event.add('forge:wax', 'tfg:paraffin_wax') - event.add('forge:wax', 'firmalife:beeswax') - event.add('forge:wax', 'tfg:conifer_rosin') - event.add('forge:wax', 'tfg:crimsene_gem') - event.add('forge:wax', 'tfg:warpane_gem') - // #endregion - - event.add('buildinggadgets2:deny', 'tfg:spice') - - //#region Cloth & String - event.add('forge:cloth', 'tfg:phantom_silk') - event.add('forge:cloth', 'tfg:polycaprolactam_fabric') - event.add('tfc:high_quality_cloth', 'tfg:phantom_silk') - event.add('tfc:high_quality_cloth', 'tfg:polycaprolactam_fabric') - event.add('tfc:sewing_light_cloth', 'tfg:phantom_silk') - event.add('tfc:sewing_dark_cloth', 'tfg:polycaprolactam_fabric') - event.add('forge:string', 'tfg:phantom_thread') - event.add('forge:string', 'tfg:polycaprolactam_string') - event.add('forge:string', 'firmalife:pineapple_yarn') - //#endregion - - // #region Medicines - event.add('tfg:antipoison_ingredients', 'tfc:plant/blood_lily') - event.add('tfg:antipoison_ingredients', 'tfc:plant/pistia') - event.add('tfg:antipoison_ingredients', 'tfc:powder/bismuthinite') - event.add('tfg:antipoison_ingredients', 'gtceu:mica_dust') - event.add('tfg:antipoison_ingredients', 'gtceu:fullers_earth_dust') - - event.add('tfg:poison_ingredients', 'tfc:plant/butterfly_milkweed') - event.add('tfg:poison_ingredients', 'tfc:plant/grape_hyacinth') - event.add('tfg:poison_ingredients', 'tfc:plant/lily_of_the_valley') - event.add('tfg:poison_ingredients', 'tfc:plant/pulsatilla') - event.add('tfg:poison_ingredients', 'firmalife:food/nightshade_berry') - event.add('tfg:poison_ingredients', 'minecraft:red_mushroom') - - event.add('tfg:regeneration_ingredients', 'tfc:plant/lilac') - event.add('tfg:regeneration_ingredients', 'tfc:plant/field_horsetail') - event.add('tfg:regeneration_ingredients', 'tfc:plant/licorice_fern') - event.add('tfg:regeneration_ingredients', 'tfc:plant/sacred_datura') - - event.add('tfg:speed_ingredients', 'tfc:plant/labrador_tea') - event.add('tfg:speed_ingredients', 'firmalife:raw_honey') - - event.add('tfg:slowness_ingredients', 'tfc:plant/marigold') - event.add('tfg:slowness_ingredients', 'tfc:plant/nasturtium') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_red') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_white') - event.add('tfg:slowness_ingredients', 'tfc:plant/snapdragon_yellow') - - event.add('tfg:weakness_ingredients', 'tfc:plant/laminaria') - event.add('tfg:weakness_ingredients', 'tfc:plant/sea_palm') - event.add('tfg:weakness_ingredients', 'tfc:plant/sea_lavender') - event.add('tfg:weakness_ingredients', 'tfc:plant/canna') - event.add('tfg:weakness_ingredients', 'tfc:plant/water_canna') - - event.add('tfg:haste_ingredients', '#tfg:sugars') - - event.add('tfg:water_breathing_ingredients', 'tfc:powder/saltpeter') - event.add('tfg:water_breathing_ingredients', 'tfc:powder/charcoal') - - event.add('tfg:night_vision_ingredients', 'tfc:food/carrot') - event.add('tfg:night_vision_ingredients', 'beneath:gleamflower') - - event.add('tfg:invisibility_ingredients', 'tfc:plant/calendula') - event.add('tfg:absorption_ingredients', 'beneath:burpflower') - - event.add('tfg:fire_resistance_ingredients', 'tfc:plant/cattail') - event.add('tfg:fire_resistance_ingredients', 'tfc:plant/meads_milkweed') - event.add('tfg:fire_resistance_ingredients', 'firmalife:plant/bay_laurel') - event.add('tfg:fire_resistance_ingredients', 'beneath:ghost_pepper') - - event.add('tfg:resistance_ingredients', 'tfc:plant/hibiscus') - event.add('tfg:resistance_ingredients', 'gtceu:calcium_dust') - - event.add('tfg:instant_health_ingredients', 'tfc:plant/foxglove') - event.add('tfg:instant_health_ingredients', 'tfc:plant/artists_conk') - - event.add('tfg:absorption_ingredients', 'tfc:plant/poppy') - event.add('tfg:invisibility_ingredients', 'tfc:plant/snapdragon_pink') - - event.add('tfg:luck_ingredients', 'tfc:plant/goldenrod') - event.add('tfg:luck_ingredients', 'tfc:plant/heather') - // #endregion - // Airplane Upgrades global.AIRCRAFT_UPGRADES.forEach(value => { event.add('immersive_aircraft:upgrades', `tfg:${value}`); @@ -234,396 +68,16 @@ const registerTFGItemTags = (event) => { event.add('forge:screws/any_bronze', '#forge:screws/bronze') event.add('forge:screws/any_bronze', '#forge:screws/bismuth_bronze') event.add('forge:screws/any_bronze', '#forge:screws/black_bronze') - - //#region Food - const RAW_MEATS = [ - 'tfg:food/raw_birt', - 'tfg:food/raw_crawlermari', - 'tfg:food/raw_limpet' - ] - RAW_MEATS.forEach(meat => { - event.add('tfc:foods', meat) - event.add('tfc:foods/meats', meat) - event.add('tfc:foods/raw_meats', meat) - }) - - const COOKED_MEATS = [ - 'tfg:food/cooked_birt', - 'tfg:food/cooked_crawlermari', - 'tfg:food/cooked_limpet' - ] - COOKED_MEATS.forEach(meat => { - event.add('tfc:foods', meat) - event.add('tfc:foods/meats', meat) - event.add('tfc:foods/cooked_meats', meat) - }) - - //These tags are used to add the tooltips and for searchability - global.COOLING_FOODS.forEach(food => { event.add('tfg:cooling_foods', food) }) - - event.add('tfg:cooling_foods_strong', 'tfg:food/ice_soup') - - global.WARMING_FOODS.forEach(food => { event.add('tfg:warming_foods', food) }) - - //jam sandwhich stuff - const usable_in_jam_sandwich = Ingredient.of('#tfc:foods/usable_in_jam_sandwich').itemIds.toArray().map(String); - const preserves = Ingredient.of('#tfc:foods/preserves').itemIds.toArray().map(String); - - const usable_in_jam_sandwich_2 = usable_in_jam_sandwich.filter(item => !preserves.includes(item)); - - usable_in_jam_sandwich_2.forEach(item => { - event.add('tfc:foods/usable_in_jam_sandwich_2', item); - }); - - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_sniffer_beef') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_wraptor') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_springling_collar') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_walker_steak') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_glider_wings') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_whole_soarer') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_crusher_meat') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_goober_meat') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_cruncher_ribs') - event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_surfer_steak') - event.add('tfg:raw_dinosaur_meat', 'wan_ancient_beasts:raw_ancient_meat') - - /** - * List of items that can make light stock. - * @type {string[]} - */ - const makesLightStock = [ - 'tfc:food/chicken', - 'tfc:food/cooked_chicken', - 'tfc:food/quail', - 'tfc:food/cooked_quail', - 'tfc:food/pheasant', - 'tfc:food/cooked_pheasant', - 'tfc:food/grouse', - 'tfc:food/cooked_grouse', - 'tfc:food/turkey', - 'tfc:food/cooked_turkey', - 'tfc:food/peafowl', - 'tfc:food/cooked_peafowl', - 'tfc:food/rabbit', - 'tfc:food/cooked_rabbit', - 'tfc:food/duck', - 'tfc:food/cooked_duck', - 'tfg:food/raw_birt', - 'tfg:food/cooked_birt', - 'tfg:food/raw_moon_rabbit', - 'tfg:food/cooked_moon_rabbit', - 'tfg:food/raw_wraptor', - 'tfg:food/cooked_wraptor', - 'tfg:food/raw_glider_wings', - 'tfg:food/cooked_glider_wings', - 'tfg:food/raw_whole_soarer', - 'tfg:food/cooked_whole_soarer' - ]; - makesLightStock.forEach(item => { - event.add('tfg:foods/makes_light_stock', item); - }); - - /** - * List of items that can make rich stock. - * @type {string[]} - */ - const makesRichStock = [ - 'tfc:food/beef', - 'tfc:food/cooked_beef', - 'tfc:food/mutton', - 'tfc:food/cooked_mutton', - 'tfc:food/bear', - 'tfc:food/cooked_bear', - 'tfc:food/horse_meat', - 'tfc:food/cooked_horse_meat', - 'tfc:food/venison', - 'tfc:food/cooked_venison', - 'tfc:food/chevon', - 'tfc:food/cooked_chevon', - 'tfc:food/gran_feline', - 'tfc:food/cooked_gran_feline', - 'tfc:food/turtle', - 'tfc:food/cooked_turtle', - 'tfc:food/camelidae', - 'tfc:food/cooked_camelidae', - 'tfg:food/raw_glacian_mutton', - 'tfg:food/cooked_glacian_mutton', - 'tfg:food/raw_sniffer_beef', - 'tfg:food/cooked_sniffer_beef', - 'tfg:food/raw_walker_steak', - 'tfg:food/cooked_walker_steak', - 'tfg:food/raw_crusher_meat', - 'tfg:food/cooked_crusher_meat', - 'wan_ancient_beasts:raw_ancient_meat', - 'wan_ancient_beasts:cooked_ancient_meat' - ]; - makesRichStock.forEach(item => { - event.add('tfg:foods/makes_rich_stock', item); - }); - - /** - * @type {string[]} - List of cheese curd item IDs. - */ - const cheeseCurds = [ - 'firmalife:food/yak_curd', - 'firmalife:food/goat_curd', - 'firmalife:food/milk_curd', - 'tfc_gurman:ox_curd', - 'tfc_gurman:sheep_curd', - 'tfc_gurman:alpaca_curd' - ]; - cheeseCurds.forEach(item => { - event.add('tfg:foods/cheese_curds', item); - }); - - /** - * @type {string[]} - List of item tags and item IDs that can be used on burgers. - */ - const usable_in_burgers = [ - '#tfc:foods/vegetables', - 'firmalife:food/cooked_bacon', - 'tfc:food/cooked_egg', - 'firmalife:food/tofu' - ]; - usable_in_burgers.forEach(item => { - event.add('tfg:foods/usable_in_burgers', item); - }); - - /** - * @type {string[]} - List of cheese tags and item IDs that can be used on a cheeseburger. - */ - const cheeses = [ - '#firmalife:foods/cheeses', - 'tfg:food/slice_of_cheese', - 'firmalife:food/shredded_cheese' - ]; - cheeses.forEach(item => { - event.add('tfg:foods/cheeses', item); - }); - - /** - * @type {string[]} - List of item IDs that can be used as burger meats. - */ - const burgerMeats = [ - 'tfc:food/beef', - 'tfc:food/turkey', - 'tfc:food/venison', - 'tfg:food/raw_sniffer_beef', - 'tfg:food/raw_crusher_meat', - 'wan_ancient_beasts:raw_ancient_meat' - ]; - burgerMeats.forEach(item => { - event.add('tfg:foods/burger_meats', item); - }); - - // Spice tags - global.SPICES.forEach(spice => { - event.add('tfg:foods/spices', spice.product); - event.add('tfg:foods/spice_plants', spice.plant); - }); - - /** - * @type {string[]} - List of item tags and item IDs that are allowed to be used in oatmeal. - */ - const usable_in_oatmeal = [ - '#tfc:foods/fruits', - 'tfc:food/oat_grain', - '#firmalife:foods/chocolate' - ]; - usable_in_oatmeal.forEach(item => { - event.add('tfg:foods/usable_in_oatmeal', item); - }); - - /** - * @type {string[]} - List of citrus fruit item IDs. - */ - const citrus_fruits = [ - 'tfc:food/orange', - 'tfc:jar/orange_unsealed', - 'tfg:food/freeze_dried/orange', - 'tfc:food/lemon', - 'tfc:jar/lemon_unsealed', - 'tfg:food/freeze_dried/lemon', - 'minecraft:glow_berries', - 'tfg:food/freeze_dried/glow_berries' - ]; - citrus_fruits.forEach(item => { - event.add('tfg:foods/citrus_fruits', item); - }); - - /** - * List of item tags and item IDs that are allowed to be used in a meal bag. - * @type {string[]} - */ - const usable_in_meal_bag = [ - '#tfc:foods/meats', - '#tfc:foods/grains', - '#tfc:foods/vegetables', - '#tfc:foods/fruits', - '#tfc:foods/dairy', - '#tfc:foods/preserves', - '#firmalife:foods/chocolate', - '#tfcchannelcasting:foods/chocolate_sweet', - 'firmalife:food/sugar_cookie', - 'firmalife:food/chocolate_chip_cookie', - 'firmalife:food/vanilla_ice_cream', - 'firmalife:food/strawberry_ice_cream', - 'firmalife:food/chocolate_ice_cream', - 'tfc:food/cooked_egg', - 'tfc:food/boiled_egg', - 'firmalife:food/pickled_egg', - 'tfc:food/cooked_rice', - 'firmalife:food/cooked_pasta', - 'firmalife:food/pasta_with_tomato_sauce', - 'firmalife:food/cooked_rice_noodles', - 'firmalife:food/tortilla_chips', - 'firmalife:food/shredded_cheese', - 'firmalife:food/salsa', - 'firmalife:food/tomato_sauce', - 'tfg:roasted_sunflower_seeds', - 'tfg:food/cooked_dino_nugget', - 'firmalife:food/toast', - 'firmalife:food/toast_with_butter', - 'firmalife:food/toast_with_jam', - 'firmalife:food/butter', - 'tfc_gurman:adjika', - 'tfc_gurman:tzatziki', - 'tfc_gurman:falafel', - 'tfc_gurman:hummus', - 'tfc_gurman:sauerkraut', - 'tfc_gurman:bratwurst' - ]; - usable_in_meal_bag.forEach(item => { - event.add('tfg:foods/usable_in_meal_bag', item); - }); - event.add('tfg:foil_packs', 'tfg:foil_pack'); - event.add('tfg:foil_packs', 'tfg:clean_foil_pack') - - event.add('tfg:solid_fats', 'firmalife:food/butter') - event.add('tfg:solid_fats', 'tfc:blubber') - //#endregion - - //#region Blacklisted from the railgun - event.add('tfg:cannot_launch_in_railgun', '#tfc:vessels') - event.add('tfg:cannot_launch_in_railgun', '#tfc:large_vessels') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_1k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_4k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_16k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_64k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:item_storage_cell_256k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_1k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_4k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_16k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_64k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:fluid_storage_cell_256k') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_2') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_16') - event.add('tfg:cannot_launch_in_railgun', 'ae2:spatial_storage_cell_128') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_1m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_4m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_16m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:item_storage_cell_64m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_1m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_4m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_16m') - event.add('tfg:cannot_launch_in_railgun', 'megacells:fluid_storage_cell_64m') - event.add('tfg:cannot_launch_in_railgun', 'create:minecart_contraption') - event.add('tfg:cannot_launch_in_railgun', 'tfg:railgun_ammo_shell') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x10') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x8') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_10x12') - event.add('tfg:cannot_launch_in_railgun', 'create:cardboard_package_12x12') - event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:composite_package') - event.add('tfg:cannot_launch_in_railgun', 'create_factory_logistics:copper_jar_package_8x8') - event.add('tfg:cannot_launch_in_railgun', 'sns:ore_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:leather_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:burlap_sack') - event.add('tfg:cannot_launch_in_railgun', 'sns:seed_pouch') - event.add('tfg:cannot_launch_in_railgun', 'sns:straw_basket') - event.add('tfg:cannot_launch_in_railgun', 'sns:frame_pack') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:cooling_lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'tfclunchbox:electric_lunchbox') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:copper_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:iron_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:gold_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:diamond_backpack') - event.add('tfg:cannot_launch_in_railgun', 'sophisticatedbackpacks:netherite_backpack') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:wood_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:black_bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:bismuth_bronze_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:steel_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:aluminium_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:stainless_steel_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:titanium_crate') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:tungsten_steel_crate') - event.add('tfg:cannot_launch_in_railgun', '#create:toolboxes') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_chest') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ulv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:lv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:mv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:hv_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:ev_super_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:iv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:luv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:zpm_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uv_quantum_tank') - event.add('tfg:cannot_launch_in_railgun', 'gtceu:uhv_quantum_tank') - //#endregion - - // #region Dirt - event.add('tfg:moon_plants', 'tfg:lunar_roots') - event.add('tfg:moon_plants', 'tfg:lunar_sprouts') - - event.add('minecraft:dirt', 'tfg:grass/mars_dirt') - event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:grass', 'tfg:grass/amber_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:farmland', 'tfg:grass/mars_farmland') - event.add('tfc:paths', 'tfg:grass/mars_path') - event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') - // #endregion - - //Mars animal region - event.add('tfg:martian_eggs', 'tfg:sniffer_egg') - event.add('tfg:martian_eggs', 'tfg:wraptor_egg') - event.add('forge:eggs', '#tfg:martian_eggs') - event.add('firmalife:foods/raw_eggs', '#tfg:martian_eggs') - - event.add('tfg:martian_animal_foods', 'betterend:amber_root_product') - event.add('tfg:martian_animal_foods', 'betterend:blossom_berry_product') - event.add('tfg:martian_animal_foods', 'betterend:chorus_mushroom_product') - event.add('tfg:martian_animal_foods', 'betterend:shadow_berry_product') - event.add('tfg:martian_animal_foods', 'betterend:bolux_mushroom_product') - event.add('tfg:martian_animal_foods', 'betterend:cave_pumpkin_chunks') - - event.add('tfg:glacian_ram_food', '#tfg:martian_animal_foods') - event.add('tfg:sniffer_food', '#tfg:martian_animal_foods') - event.add('tfg:wraptor_food', '#tfg:martian_animal_foods') - - event.add('tfg:mineral_rich_wool', 'tfg:wraptor_wool') - event.add('tfg:mineral_rich_wool', 'tfg:sniffer_wool') - //#endregion + // Steam Bloomery + event.add("tfg:steam_bloomery_basic_fuels", "minecraft:coal"); + event.add("tfg:steam_bloomery_basic_fuels", "minecraft:charcoal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:rich_raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:poor_raw_coal"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:coal_dust"); + event.add("tfg:steam_bloomery_basic_fuels", "gtceu:charcoal_dust"); + //#region holder materials event.remove('forge:dusts', 'tfg:nitrocellulose') event.remove('forge:dusts/nitrocellulose', 'tfg:nitrocellulose') @@ -637,151 +91,19 @@ const registerTFGItemTags = (event) => { event.remove('forge:nuggets', 'tfg:polycaprolactam_string') event.remove('forge:nuggets/tfg_polycaprolactam', 'tfg:polycaprolactam_string') - + //#endregion } //#region Blocks const registerTFGBlockTags = (event) => { - event.add('minecraft:mineable/shovel', 'tfg:ash_pile') - //crop stuff - event.add('tfc:crops', 'tfg:rapeseed') - event.add('tfc:mineable_with_sharp_tool', 'tfg:rapeseed') - - event.add('tfc:crops', 'tfg:sunflower') - event.add('tfc:mineable_with_sharp_tool', 'tfg:sunflower') - - event.add('tfc:crops', 'tfg:flax') - event.add('tfc:mineable_with_sharp_tool', 'tfg:flax') - - // Spice unmovable - - event.add('buildinggadgets2:deny', 'tfg:spice') - event.add('ae2:blacklisted/spatial', 'tfg:spice') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') - - // Spice unmovable - - event.add('buildinggadgets2:deny', 'tfg:spice') - event.add('ae2:blacklisted/spatial', 'tfg:spice') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') - - event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') - event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') - - //#endregion - - // #region Nether blocks - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate') - event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_deepslate') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_deepslate') - event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:grass_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_deepslate') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_deepslate') - - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_blackstone') - event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_blackstone') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_blackstone') - event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_blackstone') - event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_blackstone') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_blackstone') - - event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_dripstone') - event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone') - event.add('tfc:rock/hardened', 'tfg:rock/hardened_dripstone') - // #endregion - - // #region Mars blocks - event.add('minecraft:dirt', 'tfg:grass/mars_dirt') - event.add('minecraft:dirt', 'tfg:grass/mars_clay_dirt') - event.add('minecraft:dirt', 'tfg:grass/amber_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_mycelium') - event.add('minecraft:dirt', 'tfg:grass/amber_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_clay_mycelium') - event.add('minecraft:dirt', 'tfg:grass/amber_kaolin_mycelium') - event.add('minecraft:dirt', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('minecraft:dirt', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:dirt', 'tfg:grass/mars_dirt') - event.add('tfc:dirt', 'tfg:grass/mars_clay_dirt') - event.add('tfc:farmland', 'tfg:grass/mars_farmland') - event.add('tfc:paths', 'tfg:grass/mars_path') - event.add('tfc:grass', 'tfg:grass/amber_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:grass', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:grass', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:grass', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:kaolin_clay', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_farmland') - event.add('tfg:do_not_destroy_in_space', 'tfg:grass/mars_path') - event.add('tfc:can_landslide', 'tfg:grass/mars_dirt') - event.add('tfc:can_landslide', 'tfg:grass/mars_clay_dirt') - event.add('tfc:can_landslide', 'tfg:grass/mars_farmland') - event.add('tfc:can_landslide', 'tfg:grass/mars_path') - event.add('tfc:can_landslide', 'tfg:grass/amber_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/amber_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_clay_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/amber_kaolin_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('tfc:can_landslide', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_dirt') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_clay_dirt') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_path') - event.add('minecraft:mineable/shovel', 'tfg:grass/mars_farmland') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/amber_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/rusticus_kaolin_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_clay_mycelium') - event.add('minecraft:mineable/shovel', 'tfg:grass/sangnum_kaolin_mycelium') - event.add('tfc:bush_plantable_on', 'tfg:grass/mars_farmland') - event.add('tfc:grass_plantable_on', 'tfg:grass/mars_farmland') - event.add('tfc:creeping_plantable_on', 'tfg:grass/mars_farmland') - - event.add('minecraft:mushroom_grow_block', '#tfc:dirt') - event.add('minecraft:mushroom_grow_block', '#tfc:grass') - event.add('minecraft:mushroom_grow_block', '#forge:sand') - event.add('minecraft:mushroom_grow_block', '#forge:gravel') - // #endregion - - event.add('tfg:harvester_harvestable', '#tfc:fruit_tree_leaves') - event.add('tfg:harvester_harvestable', '#tfc:berry_bushes') - event.add('tfg:harvester_harvestable', '#tfc:any_spreading_bush') - event.add('tfg:harvester_harvestable', '#firmalife:grape_strings') - event.add('tfg:harvester_harvestable', '#firmalife:grape_trellis_posts_plant') - //added for QOL but doesnt harvest anything - event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_red') - event.add('tfg:harvester_harvestable', 'firmalife:grape_fluff_white') + registerTFGPrimitiveBlockTags(event) + registerTFGFoodBlockTags(event) + registerTFGGeneralWorldgenBlockTags(event) + registerTFGBeneathBlockTags(event) + registerTFGMoonBlockTags(event) + registerTFGMarsBlockTags(event) + registerTFGVenusBlockTags(event) event.add('minecraft:mineable/pickaxe', 'tfg:superconductor_coil_large') event.add('minecraft:mineable/pickaxe', 'tfg:superconductor_coil_small') @@ -794,47 +116,12 @@ const registerTFGBlockTags = (event) => { event.add('forge:mineable/wrench', 'tfg:reflector') event.add('forge:mineable/wrench', 'tfg:machine_casing_aluminium_plated_steel') - event.add('tfg:decorative_plant_attachable', '#minecraft:logs') - event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem') - event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block') - event.add('tfg:decorative_plant_attachable', 'species:alphacene_moss_block') - event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap') - event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap') - event.add('tfg:decorative_plant_attachable', 'tfg:glacian_leaves') - event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block') - event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block') - event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush') - event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves') - event.add('minecraft:mineable/pickaxe', 'tfg:mars_ice') event.add('minecraft:mineable/pickaxe', 'tfg:dry_ice') event.add('tfcambiental:cold_stuff', 'tfg:mars_ice') event.add('tfcambiental:cold_stuff', 'tfg:dry_ice') event.add('minecraft:ice', 'tfg:mars_ice') event.add('minecraft:ice', 'tfg:dry_ice') - - event.add('minecraft:mineable/shovel', 'tfg:ash_pile') - event.add('minecraft:mineable/shovel', 'tfg:pile/black_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/white_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/brown_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/red_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/yellow_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/pink_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/green_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/moon_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand') - event.add('minecraft:mineable/shovel', 'tfg:pile/mars_sand_covering') - event.add('minecraft:mineable/shovel', 'tfg:pile/venus_sand_covering') - event.add('minecraft:mineable/shovel', 'tfg:pile/hematitic_sand_covering') - - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/blue') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/green') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/brown') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/orange') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/white') - event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/yellow') } //#endregion @@ -878,91 +165,37 @@ const registerTFGFluidTags = (event) => { const registerTFGBiomeTags = (event) => { - - // #region TFG Structure Biomes - - event.add('tfg:has_structure/plains_temperate_0', 'tfc:plains') - event.add('tfg:has_structure/plains_temperate_0', 'tfc:plateau') - event.add('tfg:has_structure/plains_temperate_0', 'tfc:highlands') - - event.add('tfg:has_structure/aqueduct', 'tfc:plains') - event.add('tfg:has_structure/aqueduct', 'tfc:highlands') - event.add('tfg:has_structure/aqueduct', 'tfc:lowlands') - event.add('tfg:has_structure/aqueduct', 'tfc:badlands') - - event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_oceanic_mountains') - event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_mountains') - - event.add('tfg:has_structure/illages', 'tfc:plains') - event.add('tfg:has_structure/illages', 'tfc:hills') - event.add('tfg:has_structure/illages', 'tfc:rolling_hills') - event.add('tfg:has_structure/illages', 'tfc:badlands') - event.add('tfg:has_structure/illages', 'tfc:plateau') - event.add('tfg:has_structure/illages', 'tfc:old_mountains') - - event.add('tfg:never_has_structure/illages', '#tfc:is_lake') - event.add('tfg:never_has_structure/illages', '#tfc:is_ocean') - event.add('tfg:never_has_structure/illages', '#tfc:is_river') - - // #endregion - - // #region Nether biomes - event.add('tfg:nether_biomes', 'tfg:nether/lush_hollow') - event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/lush_hollow') - event.add('minecraft:spawns_cold_variant_frogs', 'tfg:nether/lush_hollow') - - event.add('tfg:nether_biomes', 'tfg:nether/decaying_caverns') - event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/decaying_caverns') - event.add('minecraft:spawns_warm_variant_frogs', 'tfg:nether/decaying_caverns') - event.add('minecraft:has_closer_water_fog', 'tfg:nether/decaying_caverns') - - event.add('tfg:nether_biomes', 'tfg:nether/basalt_deltas') - event.add('tfg:nether_biomes', 'tfg:nether/ash_forest') - event.add('tfg:nether_biomes', 'tfg:nether/lava_floes') - event.add('tfg:nether_biomes', 'tfg:nether/webbed_lair') - event.add('tfg:nether_biomes', 'tfg:nether/gneiss_caves') - event.add('tfg:nether_biomes', 'tfg:nether/diorite_caves') - event.add('tfg:nether_biomes', 'tfg:nether/gabbro_caves') - event.add('tfg:nether_biomes', 'tfg:nether/granite_caves') - event.add('tfg:nether_biomes', 'tfg:nether/schist_caves') - - event.add('minecraft:has_structure/nether_fossil', '#tfg:nether_biomes') - event.add('minecraft:has_structure/bastion_remnant', '#tfg:nether_biomes') - // #endregion + registerTFGOverworldBiomeTags(event) + registerTFGBeneathBiomeTags(event) + registerTFGMoonBiomeTags(event) + registerTFGMarsBiomeTags(event) + registerTFGVenusBiomeTags(event) } function registerTFGConfiguredFeatures(event) { registerTFGForestConfiguredFeatures(event) } -// Other space decoration is in ad_astra/tags.js const registerTFGPlacedFeatures = (event) => { - - // #region Earth biomes - - event.add('tfc:in_biome/surface_decoration/ocean', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/ocean_reef', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/deep_ocean', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/deep_ocean_trench', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/shore', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/tidal_flats', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/lowlands', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/salt_marsh', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/plains', 'tfg:earth/rose_quartz/rose_quartz') - event.add('tfc:in_biome/surface_decoration/lake', 'tfg:earth/rose_quartz/rose_quartz') - - // #endregion - registerTFGOreVeinFeatures(event); - // #region Nether - - event.add('tfg:nether_veins', 'beneath:vein/crackrack_pipe') - - event.add('tfg:nether_underground_decoration', 'minecraft:spring_open') - event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed') - event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob') - - // #endregion - + registerTFGOverworldPlacedFeatures(event); + registerTFGBeneathPlacedFeatures(event); + registerTFGMoonPlacedFeatures(event); + registerTFGMarsPlacedFeatures(event); + registerTFGVenusPlacedFeatures(event); + registerTFGEuropaPlacedFeatures(event); } + +const registerTFGEntityTypeTags = (event) => { + + registerTFGMoonEntityTypeTags(event) + registerTFGMarsEntityTypeTags(event) + registerTFGVenusEntityTypeTags(event) + registerTFGEuropaEntityTypeTags(event) + + event.add('ad_astra:can_survive_in_space', 'railways:conductor') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:pet_enderman') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:axolotl_pet_enderman') + event.add('ad_astra:can_survive_in_space', 'endermanoverhaul:hammerhead_pet_enderman') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/venus/data.venus.js b/kubejs/server_scripts/tfg/venus/data.venus.js new file mode 100644 index 000000000..7dc7d555d --- /dev/null +++ b/kubejs/server_scripts/tfg/venus/data.venus.js @@ -0,0 +1,26 @@ +"use strict"; + +function registerTFGVenusBedrockFluidVeins(event) { + + event.add('tfg:venus_sulfuric_acid', vein => { + vein.dimensions('ad_astra:venus') + vein.fluid(() => Fluid.of('gtceu:sulfuric_acid').fluid) + vein.weight(50) + vein.minimumYield(100) + vein.maximumYield(200) + vein.depletionAmount(1) + vein.depletionChance(50) + vein.depletedYield(20) + }) + + event.add('tfg:venus_lava', vein => { + vein.dimensions('ad_astra:venus') + vein.fluid(() => Fluid.of('minecraft:lava').fluid) + vein.weight(50) + vein.minimumYield(200) + vein.maximumYield(400) + vein.depletionAmount(1) + vein.depletionChance(1) + vein.depletedYield(50) + }) +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/venus/tags.venus.js b/kubejs/server_scripts/tfg/venus/tags.venus.js new file mode 100644 index 000000000..493030147 --- /dev/null +++ b/kubejs/server_scripts/tfg/venus/tags.venus.js @@ -0,0 +1,117 @@ +"use strict"; + +function registerTFGVenusItemTags(event) { + +} + + +function registerTFGVenusBlockTags(event) { + + event.add('buildinggadgets2:deny', 'tfg:geyser_source') + event.add('ae2:blacklisted/spatial', 'tfg:geyser_source') + + event.add('buildinggadgets2:deny', 'tfg:geyser_source_small') + event.add('ae2:blacklisted/spatial', 'tfg:geyser_source_small') + + event.add('ad_astra:venus_stone_replaceables', 'ad_astra:venus_stone') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_venus_stone') + event.add('ad_astra:venus_stone_replaceables', 'gtceu:red_granite') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_red_granite') + event.add('ad_astra:venus_stone_replaceables', 'ad_astra:moon_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_moon_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:deepslate') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_deepslate') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:dripstone_block') + event.add('ad_astra:venus_stone_replaceables', 'tfg:rock/hardened_dripstone') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/granite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/granite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/diorite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/diorite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gabbro') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gabbro') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/basalt') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/basalt') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/rhyolite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/andesite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/dacite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/dacite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/slate') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/slate') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/schist') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/schist') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/gneiss') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/gneiss') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/phyllite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/phyllite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/raw/quartzite') + event.add('ad_astra:venus_stone_replaceables', 'tfc:rock/hardened/quartzite') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/blue') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/blue') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/green') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/green') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/brown') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/brown') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/orange') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/orange') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/white') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/white') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sand/fluorapatite/yellow') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sandstone/raw/fluorapatite/yellow') + event.add('ad_astra:venus_stone_replaceables', 'tfg:geyser_slurry') + event.add('ad_astra:venus_stone_replaceables', 'tfg:sulfur_fumes') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:lava') + event.add('ad_astra:venus_stone_replaceables', 'create:scoria') + event.add('ad_astra:venus_stone_replaceables', 'create:scorchia') + event.add('ad_astra:venus_stone_replaceables', 'minecraft:tuff') + + event.add('tfc:can_carve', '#ad_astra:venus_stone_replaceables') + + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/blue') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/green') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/brown') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/orange') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/white') + event.add('tfc:can_landslide', 'tfg:sand/fluorapatite/yellow') +} + +function registerTFGVenusBiomeTags(event) { + global.VENUS_BIOMES.forEach(biome => { + event.add('tfg:venus_biomes', biome); + event.add('ad_astra:has_acid_rain', biome); + }) +} + +function registerTFGVenusEntityTypeTags(event) { + const ENTITIES = [ + 'minecraft:enderman', + "endermanoverhaul:desert_enderman", + "endermanoverhaul:savanna_enderman", + "endermanoverhaul:nether_wastes_enderman", + "ad_astra:sulfur_creeper", + 'species:cliff_hanger', + ] + + ENTITIES.forEach(entity => { + event.add('ad_astra:can_survive_extreme_heat', entity) + event.add('ad_astra:lives_without_oxygen', entity) + }) + + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:desert_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:savanna_enderman') + event.add('tfc:deals_slashing_damage', 'endermanoverhaul:nether_wastes_enderman') + event.add('tfc:deals_slashing_damage', 'species:cliff_hanger') +} + +function registerTFGVenusPlacedFeatures(event) { + + // Underground decoration + event.add("tfg:venus_underground_decoration", "tfg:glow_lichen") + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/loose_rocks') + event.add('tfg:venus_underground_decoration', 'tfc:cave_spike') + event.add('tfg:venus_underground_decoration', 'tfc:cave_column') + event.add('tfg:venus_underground_decoration', 'tfc:large_cave_spike') + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagmite') + event.add('tfg:venus_underground_decoration', 'tfg:venus/underground/noise_cave_stalagtite') + + event.add("tfg:venus_top_layer_modification", "tfc:surface_loose_rocks") +} diff --git a/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js b/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js new file mode 100644 index 000000000..55ba87c95 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/tags.general_worldgen.js @@ -0,0 +1,212 @@ +"use strict"; + +function registerTFGGeneralWorldgenItemTags(event) { + + // Actually "layers", can't rename them without screwing with peoples' worlds + event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/brown_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/green_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/pink_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/red_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/white_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/yellow_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/moon_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand') + + // Actually "piles", the kind that can hide plants inside them + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/venus_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/hematitic_sand_covering') + event.add('c:hidden_from_recipe_viewers', 'tfg:pile/mars_snow_covering') + + event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') + event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') + event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') + + event.add('forge:smooth_stone_slab', 'ad_astra:polished_moon_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_mars_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_venus_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_mercury_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_glacio_stone_slab') + event.add('forge:smooth_stone_slab', 'ad_astra:polished_permafrost_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_deepslate_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_slab') + event.add('forge:smooth_stone_slab', 'minecraft:polished_blackstone_brick_slab') + + event.add('tfc:rock/smooth', 'minecraft:smooth_stone') + + event.add('tfc:rock/raw', 'minecraft:deepslate') + event.add('tfc:rock/raw', 'minecraft:blackstone') + event.add('tfc:rock/raw', 'minecraft:dripstone_block') + + event.add('minecraft:wart_blocks', 'ad_astra:aeronos_cap') + event.add('minecraft:wart_blocks', 'ad_astra:strophar_cap') + event.add('minecraft:wart_blocks', 'minecraft:mushroom_stem') + event.add('tfc:compost_greens', 'minecraft:nether_wart_block') + event.add('tfc:compost_greens', 'minecraft:warped_wart_block') +} + +function registerTFGGeneralWorldgenBlockTags(event) { + + // All new stones + global.EXTRATERRESTRIAL_RAW_ROCKS.forEach(rock => { + event.add('forge:stone', rock) + event.add('tfc:breaks_when_isolated', rock) + event.add('tfc:rock/raw', rock) + event.add('minecraft:mineable/pickaxe', rock) + event.add('tfc:can_carve', rock) + // Collapse tags also require a collapse recipe to work. + // Don't add the recipe if you don't want them to actually collapse! + event.add('tfc:can_collapse', rock) + event.add('tfc:can_trigger_collapse', rock) + event.add('tfc:can_start_collapse', rock) + event.add('tfc:powderkeg_breaking_blocks', rock) + event.add('tfc:bloomery_insulation', rock) + event.add('firmalife:oven_insulation', rock) + event.add('tfc:forge_insulation', rock) + }) + + global.EXTRATERRESTRIAL_HARDENED_ROCKS.forEach(rock => { + event.add('minecraft:mineable/pickaxe', rock) + event.add('tfc:can_collapse', rock) + event.add('tfc:can_trigger_collapse', rock) + event.add('tfc:powderkeg_breaking_blocks', rock) + event.add('tfc:bloomery_insulation', rock) + event.add('firmalife:oven_insulation', rock) + event.add('tfc:forge_insulation', rock) + event.add('tfc:can_carve', rock) + }) + + event.add('tfc:can_landslide', 'minecraft:cobbled_deepslate') + event.add('forge:cobblestone/normal', 'minecraft:cobbled_deepslate') + + event.add('tfc:breaks_when_isolated', 'minecraft:deepslate') + event.add('tfc:breaks_when_isolated', 'minecraft:blackstone') + event.add('tfc:breaks_when_isolated', 'minecraft:gilded_blackstone') + event.add('tfc:breaks_when_isolated', 'minecraft:dripstone_block') + + event.add('forge:stone', 'minecraft:blackstone') + + event.add('tfg:rock_stairs', 'minecraft:cobbled_deepslate_stairs') + event.add('tfg:rock_slabs', 'minecraft:cobbled_deepslate_slab') + event.add('tfg:rock_walls', 'minecraft:cobbled_deepslate_wall') + event.add('tfg:brick_stairs', 'minecraft:deepslate_brick_stairs') + event.add('tfg:brick_slabs', 'minecraft:deepslate_brick_slab') + event.add('tfg:brick_walls', 'minecraft:deepslate_brick_wall') + event.add('tfg:brick_stairs', 'minecraft:deepslate_tile_stairs') + event.add('tfg:brick_slabs', 'minecraft:deepslate_tile_slab') + event.add('tfg:brick_walls', 'minecraft:deepslate_tile_wall') + event.add('tfg:rock_stairs', 'minecraft:blackstone_stairs') + event.add('tfg:rock_slabs', 'minecraft:blackstone_slab') + event.add('tfg:rock_walls', 'minecraft:blackstone_wall') + event.add('tfg:brick_stairs', 'minecraft:blackstone_stairs') + event.add('tfg:brick_slabs', 'minecraft:blackstone_slab') + event.add('tfg:brick_walls', 'minecraft:blackstone_wall') + + event.add('tfc:bloomery_insulation', 'minecraft:polished_deepslate'); + event.add('tfc:forge_insulation', 'minecraft:polished_deepslate'); + event.add('tfc:bloomery_insulation', 'minecraft:polished_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:polished_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:deepslate_tiles'); + event.add('tfc:forge_insulation', 'minecraft:deepslate_tiles'); + event.add('tfc:bloomery_insulation', 'minecraft:cracked_deepslate_tiles'); + event.add('tfc:forge_insulation', 'minecraft:cracked_deepslate_tiles'); + event.add('tfc:bloomery_insulation', 'minecraft:chiseled_deepslate'); + event.add('tfc:forge_insulation', 'minecraft:chiseled_deepslate'); + event.add('tfc:bloomery_insulation', 'minecraft:chiseled_polished_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:chiseled_polished_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:gilded_blackstone'); + event.add('tfc:forge_insulation', 'minecraft:gilded_blackstone'); + event.add('tfc:bloomery_insulation', 'minecraft:basalt'); + event.add('tfc:forge_insulation', 'minecraft:basalt'); + event.add('tfc:bloomery_insulation', 'minecraft:smooth_basalt'); + event.add('tfc:forge_insulation', 'minecraft:smooth_basalt'); + + // Ores + event.add("minecraft:mineable/pickaxe", "#forge:ores"); + event.add("minecraft:needs_iron_tool", "#forge:ores"); + + event.add("tfc:can_collapse", "#forge:ores"); + event.add("tfc:can_start_collapse", "#forge:ores"); + event.add("tfc:can_trigger_collapse", "#forge:ores"); + event.add("c:hidden_from_recipe_viewers", "#forge:ores"); + + event.add("tfc:can_collapse", "#forge:raw_ore_blocks"); + event.add("tfc:can_start_collapse", "#forge:raw_ore_blocks"); + event.add("tfc:can_trigger_collapse", "#forge:raw_ore_blocks"); + event.add("c:hidden_from_recipe_viewers", "#forge:raw_ore_blocks"); + + // Let GT indicators be covered by snow + forEachMaterial((material) => { + if (material.hasProperty(PropertyKey.ORE)) { + const indicator = `gtceu:${material.getName()}_indicator`; + + event.add("tfg:dust_ore_indicators", indicator); + event.add("tfc:can_be_snow_piled", indicator); + event.add("tfc:can_be_ice_piled", indicator); + + if (material.hasProperty(PropertyKey.GEM)) { + const bud = `gtceu:${material.getName()}_bud_indicator`; + + event.add("tfg:bud_ore_indicators", bud); + event.add("tfc:can_be_snow_piled", bud); + event.add("tfc:can_be_ice_piled", bud); + + event.add("minecraft:mineable/pickaxe", bud); + } + } + }); + + // More rock tags + event.add('tfc:can_landslide', 'ad_astra:moon_sand') + event.add('tfc:can_landslide', 'ad_astra:mars_sand') + event.add('tfc:can_landslide', 'ad_astra:venus_sand') + event.add('tfc:can_landslide', 'minecraft:red_sand') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone') + event.add('tfc:can_landslide', 'gtceu:red_granite_cobblestone') + + event.add('forge:cobblestone', 'ad_astra:moon_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mars_cobblestone') + event.add('forge:cobblestone', 'ad_astra:venus_cobblestone') + event.add('forge:cobblestone', 'ad_astra:mercury_cobblestone') + event.add('forge:cobblestone', 'ad_astra:glacio_cobblestone') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_slab') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_slab') + + event.add('tfc:can_landslide', 'ad_astra:moon_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:mars_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:venus_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:mercury_cobblestone_stairs') + event.add('tfc:can_landslide', 'ad_astra:glacio_cobblestone_stairs') + + event.add('tfg:rock_stairs', 'ad_astra:moon_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:mars_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:venus_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:mercury_stone_stairs') + event.add('tfg:rock_stairs', 'ad_astra:glacio_stone_stairs') + + event.add('tfg:rock_slabs', 'ad_astra:moon_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:mars_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:venus_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:mercury_stone_slab') + event.add('tfg:rock_slabs', 'ad_astra:glacio_stone_slab') + + event.add('minecraft:mushroom_grow_block', '#tfc:dirt') + event.add('minecraft:mushroom_grow_block', '#tfc:grass') + event.add('minecraft:mushroom_grow_block', '#forge:sand') + event.add('minecraft:mushroom_grow_block', '#forge:gravel') +} diff --git a/kubejs/server_scripts/tfg/worldgen/tags.overworld.js b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js new file mode 100644 index 000000000..7bd81d8d9 --- /dev/null +++ b/kubejs/server_scripts/tfg/worldgen/tags.overworld.js @@ -0,0 +1,76 @@ +"use strict"; + +function registerTFGOverworldBiomeTags(event) { + + // Structures + event.add('tfg:has_structure/plains_temperate_0', 'tfc:plains') + event.add('tfg:has_structure/plains_temperate_0', 'tfc:plateau') + event.add('tfg:has_structure/plains_temperate_0', 'tfc:highlands') + + event.add('tfg:has_structure/aqueduct', 'tfc:plains') + event.add('tfg:has_structure/aqueduct', 'tfc:highlands') + event.add('tfg:has_structure/aqueduct', 'tfc:lowlands') + event.add('tfg:has_structure/aqueduct', 'tfc:badlands') + + event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_oceanic_mountains') + event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_mountains') + + event.add('tfg:has_structure/illages', 'tfc:plains') + event.add('tfg:has_structure/illages', 'tfc:hills') + event.add('tfg:has_structure/illages', 'tfc:rolling_hills') + event.add('tfg:has_structure/illages', 'tfc:badlands') + event.add('tfg:has_structure/illages', 'tfc:plateau') + event.add('tfg:has_structure/illages', 'tfc:old_mountains') + + event.add('tfg:never_has_structure/illages', '#tfc:is_lake') + event.add('tfg:never_has_structure/illages', '#tfc:is_ocean') + event.add('tfg:never_has_structure/illages', '#tfc:is_river') + + // Kaolin + event.add("tfc:kaolin_clay_spawns_in", "tfc:rolling_hills"); + + global.TFC_BIOMES.forEach(biome => { + event.add('tfg:overworld_biomes', biome); + }) +} + +function registerTFGOverworldPlacedFeatures(event) { + + // Rose quartz + event.add('tfc:in_biome/surface_decoration/ocean', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/ocean_reef', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/deep_ocean', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/deep_ocean_trench', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/shore', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/tidal_flats', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/lowlands', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/salt_marsh', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/plains', 'tfg:earth/rose_quartz/rose_quartz') + event.add('tfc:in_biome/surface_decoration/lake', 'tfg:earth/rose_quartz/rose_quartz') + + // Add back the non-ore ones + event.add("tfc:in_biome/veins", "tfc:vein/gravel"); + event.add("tfc:in_biome/veins", "tfc:vein/kaolin_disc"); + event.add("tfc:in_biome/veins", "tfc:vein/granite_dike"); + event.add("tfc:in_biome/veins", "tfc:vein/diorite_dike"); + event.add("tfc:in_biome/veins", "tfc:vein/gabbro_dike"); + + // Geodes + event.add("tfc:in_biome/veins", "tfg:earth/geode/amethyst"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/barite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/calcite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/gypsum"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/opal"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/pyrite"); + event.add("tfc:in_biome/veins", "tfg:earth/geode/quartzite"); + + // Crops + event.add("tfc:feature/crops", "tfg:earth/sunflower_patch"); + event.add("tfc:feature/crops", "tfg:earth/rapeseed_patch"); + event.add("tfc:feature/crops", "tfg:earth/flax_patch"); + + // Other decoration + event.add("tfc:in_biome/underground_decoration", "tfg:glow_lichen"); + event.add("tfc:in_biome/underground_decoration", "tfg:earth/sulfur_patch"); + event.add("tfc:in_biome/underground_decoration", "tfg:earth/oil_spout"); +} \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/constants.js b/kubejs/startup_scripts/tfg/constants.js index 3695376f9..01e7e1586 100644 --- a/kubejs/startup_scripts/tfg/constants.js +++ b/kubejs/startup_scripts/tfg/constants.js @@ -28,13 +28,17 @@ global.AIRCRAFT_UPGRADES = [ * @type {string[]} - Item IDs */ global.EXTRATERRESTRIAL_RAW_ROCKS = [ + 'minecraft:deepslate', + 'minecraft:blackstone', + 'minecraft:dripstone_block', 'ad_astra:moon_stone', 'ad_astra:moon_deepslate', 'ad_astra:mars_stone', 'ad_astra:venus_stone', 'ad_astra:mercury_stone', 'ad_astra:glacio_stone', - 'gtceu:red_granite' + 'gtceu:red_granite', + 'beneath:crackrack' ] /** @@ -47,7 +51,11 @@ global.EXTRATERRESTRIAL_HARDENED_ROCKS = [ 'tfg:rock/hardened_venus_stone', 'tfg:rock/hardened_mercury_stone', 'tfg:rock/hardened_glacio_stone', - 'tfg:rock/hardened_red_granite' + 'tfg:rock/hardened_red_granite', + 'tfg:rock/hardened_deepslate', + 'tfg:rock/hardened_blackstone', + 'tfg:rock/hardened_dripstone', + 'tfg:rock/hardened_crackrack' ] /** From c5ca371764c8c13083edfbc49e0980102c857aad Mon Sep 17 00:00:00 2001 From: Jeuv <73312791+Jeuvke@users.noreply.github.com> Date: Wed, 3 Dec 2025 02:27:32 +0100 Subject: [PATCH 13/26] Reworked the Reinforced Hang Glider (#2314) * Reinforced glider recipes Made the reinforced hang glider cheaper (late LV) + added assembler recipes to repair it Signed-off-by: Jeuv <73312791+Jeuvke@users.noreply.github.com> * Update quest book Update the quest book entry for the Reinforced Hang Glider, to go with the new recipes. Signed-off-by: Jeuv <73312791+Jeuvke@users.noreply.github.com> * Revert "Update quest book" This reverts commit 933170c412414c7034d641216fff3359efab935e. --------- Signed-off-by: Jeuv <73312791+Jeuvke@users.noreply.github.com> Co-authored-by: Pyritie --- kubejs/server_scripts/handglider/recipes.js | 54 ++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/kubejs/server_scripts/handglider/recipes.js b/kubejs/server_scripts/handglider/recipes.js index 1cc17225b..94ca53617 100644 --- a/kubejs/server_scripts/handglider/recipes.js +++ b/kubejs/server_scripts/handglider/recipes.js @@ -4,6 +4,8 @@ const registerHandGliderRecipes = (event) => { event.remove({id: 'hangglider:glider_framework'}) + event.remove({id: 'hangglider:reinforced_hang_glider'}) + // Glider Framework event.shaped('hangglider:glider_framework', [ 'AAA', @@ -16,6 +18,7 @@ const registerHandGliderRecipes = (event) => { D: '#forge:rings' }).id('hangglider:shaped/glider_framework') + // Glider Wing event.shaped('hangglider:glider_wing', [ ' C', ' BA', @@ -25,4 +28,53 @@ const registerHandGliderRecipes = (event) => { B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.WroughtIron, 1), C: '#forge:rings' }).id('hangglider:shaped/glider_wing') -} \ No newline at end of file + + //Reinforced Hang Glider Stuff + event.shaped('hangglider:reinforced_hang_glider', [ + ' A ', + 'ABA', + ' C ' + ], { + A: 'sns:reinforced_fabric', + B: 'hangglider:hang_glider', + C: '#forge:rods/long/aluminium' + }).id('hangglider:shaped/reinforced_hang_glider') + + event.shaped('hangglider:reinforced_hang_glider', [ + ' A ', + ' B ', + ' C ' + ], { + A: '#tfg:lightweight_cloth', + B: 'hangglider:hang_glider', + C: '#forge:rods/long/aluminium' + }).id('hangglider:shaped/reinforced_hang_glider2') + + event.recipes.gtceu.assembler('tfg:hand_glider/reinforced_hang_glider') + .itemInputs('3x sns:reinforced_fabric', '1x hangglider:hang_glider', '1x #forge:rods/long/aluminium') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(1200) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hand_glider/reinforced_hang_glider2') + .itemInputs('1x #tfg:lightweight_cloth', '1x hangglider:hang_glider', '1x #forge:rods/long/aluminium') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(600) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hang_glider/reinforced_hang_glider_repairing') + .itemInputs('3x sns:reinforced_fabric', 'hangglider:reinforced_hang_glider') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(800) + .EUt(30) + + event.recipes.gtceu.assembler('tfg:hang_glider/reinforced_hang_glider_repairing2') + .itemInputs('1x #tfg:lightweight_cloth', 'hangglider:reinforced_hang_glider') + .circuit(3) + .itemOutputs(Item.of('hangglider:reinforced_hang_glider', "{Damage:0}")) + .duration(400) + .EUt(30) +} From f900e517afb524443fd3aa693f8cadfc2f787e1c Mon Sep 17 00:00:00 2001 From: applenper Date: Wed, 3 Dec 2025 09:16:52 -0400 Subject: [PATCH 14/26] Tallow and fish oil changes for 0.11.9 (#2318) * reverted tallowate to fish oil, added tallow to biodiesel recipe, removed tallow to fish oil recipe * added tallow boiler recipe, buffed fish oil extraction from fish * added tallow to firmalife:oils * added tallow ethanol and methanol biodiesel recipes --- kubejs/assets/gtceu/lang/en_us.json | 2 +- kubejs/server_scripts/firmalife/tags.js | 1 + .../tfg/powergen/recipes.biodiesel.js | 30 +++++++++++++++++++ .../tfg/powergen/recipes.boiler.js | 18 +++++------ 4 files changed, 40 insertions(+), 11 deletions(-) diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index 4bd56737f..e63bcdcd5 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -132,7 +132,7 @@ "material.gtceu.damascus_steel": "Swine-steel", "material.gtceu.air": "Earth Air", "material.gtceu.liquid_air": "Liquid Earth Air", - "material.gtceu.fish_oil": "Tallowate", + "material.gtceu.fish_oil": "Fish Oil", "material.gtceu.cooperite": "Cooperite", "material.gtceu.armalcolite": "Armalcolite", "material.gtceu.desh": "Desh", diff --git a/kubejs/server_scripts/firmalife/tags.js b/kubejs/server_scripts/firmalife/tags.js index 7a7d32de3..e8746e3c1 100644 --- a/kubejs/server_scripts/firmalife/tags.js +++ b/kubejs/server_scripts/firmalife/tags.js @@ -82,6 +82,7 @@ const registerFirmaLifeFluidTags = (event) => { event.add('firmalife:mixable', 'afc:maple_syrup') event.add('firmalife:mixable', 'afc:birch_syrup') + event.add('firmalife:oils', 'tfc:tallow') event.add('firmalife:oils', 'gtceu:seed_oil') event.add('firmalife:oils', 'gtceu:fish_oil') event.add('firmalife:oils', 'tfg:triglyceride_oil') diff --git a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js index bde4a6cd9..f9eab5cf2 100644 --- a/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.biodiesel.js @@ -56,6 +56,14 @@ function registerTFGBiodieselRecipes(event) { .duration(20 * 10) .EUt(GTValues.VHA[GTValues.ULV]) + event.recipes.gtceu.chemical_reactor(`tallow_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:tallow', 6000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + + // So you can craft Biodiesel without Chemical Reactor event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`) .inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000)) @@ -64,6 +72,14 @@ function registerTFGBiodieselRecipes(event) { .duration(20 * 10) .EUt(GTValues.VHA[GTValues.ULV]) + + event.recipes.gtceu.mixer(`tfg:tallow_alcohol_biodiesel`) + .inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:tallow', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:bio_diesel', 500)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.ULV]) + event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`) .inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000)) .itemInputs('#forge:tiny_dusts/sodium_hydroxide') @@ -91,4 +107,18 @@ function registerTFGBiodieselRecipes(event) { .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) .duration(20 * 10) .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tallow_methanol_biodiesel`) + .inputFluids(Fluid.of('tfc:tallow', 6000), Fluid.of('gtceu:methanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) + + event.recipes.gtceu.chemical_reactor(`tallow_ethanol_biodiesel`) + .inputFluids(Fluid.of('tfc:tallow', 6000), Fluid.of('gtceu:ethanol', 1000)) + .itemInputs('#forge:tiny_dusts/sodium_hydroxide') + .outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000)) + .duration(20 * 10) + .EUt(GTValues.VHA[GTValues.LV]) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js index 78207ec66..1633a1a34 100644 --- a/kubejs/server_scripts/tfg/powergen/recipes.boiler.js +++ b/kubejs/server_scripts/tfg/powergen/recipes.boiler.js @@ -62,26 +62,24 @@ function registerTFGBoilerRecipes(event) { .duration(200) .dimension('minecraft:overworld') - // fish oil (aka tallowate) extraction + event.recipes.gtceu.steam_boiler('tfg:tallow') + .inputFluids(Fluid.of('tfc:tallow', 160)) + .duration(200) + .dimension('minecraft:overworld') + + // fish oil extraction event.recipes.gtceu.extractor(`tfg:fish_oil`) .itemInputs('#minecraft:fishes') - .outputFluids(Fluid.of('gtceu:fish_oil', 200)) + .outputFluids(Fluid.of('gtceu:fish_oil', 400)) .duration(40) .EUt(4) event.recipes.gtceu.extractor(`tfg:tallow`) .itemInputs('tfc:blubber') - .outputFluids(Fluid.of('tfc:tallow', 200)) + .outputFluids(Fluid.of('tfc:tallow', 400)) .duration(40) .EUt(4) - // you get tallow from killing things like orcas, so this seems close enough - event.recipes.gtceu.mixer('tallow_to_fish_oil') - .inputFluids('tfc:tallow 100', 'tfc:lye 100') - .outputFluids('gtceu:fish_oil 200') - .duration(100) - .EUt(4) - // Seed oil event.recipes.gtceu.extractor(`tfg:seed_oil`) .itemInputs('#tfc:seeds') From a192b32f24a02b49488241a705f470077b28ba5c Mon Sep 17 00:00:00 2001 From: Mqrius Date: Wed, 3 Dec 2025 22:51:43 +0100 Subject: [PATCH 15/26] Remove "Visit moon" from Liquid Fluix quest (#2323) You're already guaranteed to have been on the moon at that point, and the task blocks progression since you usually first get fluix on Earth. Signed-off-by: Mqrius --- .../ftbquests/quests/chapters/applied_energistics_2.snbt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/config/ftbquests/quests/chapters/applied_energistics_2.snbt b/config/ftbquests/quests/chapters/applied_energistics_2.snbt index cbf9211a4..8a53c009a 100644 --- a/config/ftbquests/quests/chapters/applied_energistics_2.snbt +++ b/config/ftbquests/quests/chapters/applied_energistics_2.snbt @@ -218,13 +218,6 @@ id: "432E105A84AEA630" type: "checkmark" } - { - dimension: "ad_astra:moon" - disable_toast: true - icon: "tfg:marker/moon" - id: "6A4F5147475443C5" - type: "dimension" - } ] title: "{quests.ae2.fluix_liquid.title}" x: -3.5d From 8cdce5c82634a91dfe496a2382e464dc4d578adc Mon Sep 17 00:00:00 2001 From: Pyritie Date: Wed, 3 Dec 2025 23:05:14 +0000 Subject: [PATCH 16/26] fixed small wrought iron gear melting into wrought iron and not cast iron --- kubejs/server_scripts/tfc/recipes.materials.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kubejs/server_scripts/tfc/recipes.materials.js b/kubejs/server_scripts/tfc/recipes.materials.js index 8bc5ee8b6..5fc44fd5e 100644 --- a/kubejs/server_scripts/tfc/recipes.materials.js +++ b/kubejs/server_scripts/tfc/recipes.materials.js @@ -642,7 +642,7 @@ function registerTFCMaterialsRecipes(event) { if (tfcProperty.getMeltTemp() <= 1540) { event.recipes.tfc.heating(`gtceu:small_${material.getName()}_gear`, tfcProperty.getMeltTemp()) - .resultFluid(Fluid.of(`gtceu:${material.getName()}`, 144)) + .resultFluid(Fluid.of(outputMaterial, 144)) .id(`tfc:heating/small_${material.getName()}_gear`) } From 534cafd2366ef97e0fc4d74b35245503d07bb565 Mon Sep 17 00:00:00 2001 From: Mqrius Date: Fri, 5 Dec 2025 10:21:55 +0100 Subject: [PATCH 17/26] Remove hydration from freezedried food (#2325) * Remove hydration from freezedried food Change all freezedried food to give no hydration. Freezedrying removes all moisture from food, so it shouldn't fix your thirst. Signed-off-by: Mqrius * Remove .meal() from freeze dried fruit Freeze dried fruit are not dynamic food items so they can't have .meal(). Their hydration is already set to 0 in item creation. Signed-off-by: Mqrius --------- Signed-off-by: Mqrius --- kubejs/server_scripts/tfg/food/recipes.food.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kubejs/server_scripts/tfg/food/recipes.food.js b/kubejs/server_scripts/tfg/food/recipes.food.js index 40bd7bc70..c99e8b67e 100644 --- a/kubejs/server_scripts/tfg/food/recipes.food.js +++ b/kubejs/server_scripts/tfg/food/recipes.food.js @@ -478,7 +478,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -489,7 +489,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -500,7 +500,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -511,7 +511,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) @@ -522,7 +522,7 @@ function registerTFGFoodRecipes(event) { itemOutputs: ['2x tfg:food/meal_bag'], itemOutputProvider: TFC.isp.of('2x tfg:food/meal_bag').meal( (food => food.hunger(4).saturation(1.5).decayModifier(4.5)), [ - (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0.8) + (portion) => portion.nutrientModifier(1).saturationModifier(0.8).waterModifier(0) ]).addTrait('tfg:freeze_dried') }) From a0bc4528ebdc8f9a230518d4ec2957aa83b8d24d Mon Sep 17 00:00:00 2001 From: Pyritie Date: Fri, 5 Dec 2025 20:16:39 +0000 Subject: [PATCH 18/26] create:non_movable block tag was missing some things --- kubejs/server_scripts/create/tags.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/kubejs/server_scripts/create/tags.js b/kubejs/server_scripts/create/tags.js index 016f8ec1c..0001ac2ad 100644 --- a/kubejs/server_scripts/create/tags.js +++ b/kubejs/server_scripts/create/tags.js @@ -143,10 +143,26 @@ const registerCreateBlockTags = (event) => { event.add('create:non_movable', 'gtceu:titanium_crate') event.add('create:non_movable', 'gtceu:tungsten_steel_crate') event.add('create:non_movable', '#create:toolboxes') + event.add('create:non_movable', 'gtceu:ulv_super_chest') event.add('create:non_movable', 'gtceu:lv_super_chest') event.add('create:non_movable', 'gtceu:mv_super_chest') event.add('create:non_movable', 'gtceu:hv_super_chest') event.add('create:non_movable', 'gtceu:ev_super_chest') + event.add('create:non_movable', 'gtceu:iv_quantum_chest') + event.add('create:non_movable', 'gtceu:luv_quantum_chest') + event.add('create:non_movable', 'gtceu:zpm_quantum_chest') + event.add('create:non_movable', 'gtceu:uv_quantum_chest') + event.add('create:non_movable', 'gtceu:uhv_quantum_chest') + event.add('create:non_movable', 'gtceu:ulv_super_tank') + event.add('create:non_movable', 'gtceu:lv_super_tank') + event.add('create:non_movable', 'gtceu:mv_super_tank') + event.add('create:non_movable', 'gtceu:hv_super_tank') + event.add('create:non_movable', 'gtceu:ev_super_tank') + event.add('create:non_movable', 'gtceu:iv_quantum_tank') + event.add('create:non_movable', 'gtceu:luv_quantum_tank') + event.add('create:non_movable', 'gtceu:zpm_quantum_tank') + event.add('create:non_movable', 'gtceu:uv_quantum_tank') + event.add('create:non_movable', 'gtceu:uhv_quantum_tank') event.add('create:non_movable', 'tfg:spice') event.add('create:non_movable', 'tfg:geyser_source') event.add('create:non_movable', 'tfg:geyser_source_small') From 095849edb0ead6af6a201f851739ba371d457e63 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 00:23:24 +0000 Subject: [PATCH 19/26] fixed some inconsistencies with moon/mars deco plant EGH recipes --- kubejs/server_scripts/tfg/mars/recipes.mars.js | 2 +- kubejs/server_scripts/tfg/moon/recipes.plants.js | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/kubejs/server_scripts/tfg/mars/recipes.mars.js b/kubejs/server_scripts/tfg/mars/recipes.mars.js index 5c995e9f8..1e3f8e1b4 100644 --- a/kubejs/server_scripts/tfg/mars/recipes.mars.js +++ b/kubejs/server_scripts/tfg/mars/recipes.mars.js @@ -236,7 +236,7 @@ function registerTFGMarsRecipes(event) { const recipeId = `greenhouse_${itemId.replace(':', '_')}`; generateGreenHouseRecipe(event, itemId, 'tfg:semiheavy_ammoniacal_water', 8000, `8x ${itemId}`, - recipeId, 'ad_astra:mars', 8, null, GTValues.VA[GTValues.LV]); + recipeId, 'ad_astra:mars', 8, itemId, GTValues.VA[GTValues.LV]); }); generateGreenHouseRecipe(event, '8x betterend:amber_root_seeds', 'tfg:semiheavy_ammoniacal_water', 8000, diff --git a/kubejs/server_scripts/tfg/moon/recipes.plants.js b/kubejs/server_scripts/tfg/moon/recipes.plants.js index fd5bfdb5b..38c5e8f8b 100644 --- a/kubejs/server_scripts/tfg/moon/recipes.plants.js +++ b/kubejs/server_scripts/tfg/moon/recipes.plants.js @@ -97,6 +97,7 @@ function registerTFGMoonPlantRecipes(event) { .itemOutputs(`8x ${element.id}`) .chancedOutput(element.id, 750, 0) .chancedOutput(element.id, 500, 0) + .chancedOutput(element.id, 750, 0) .duration(36000) // 30 mins .circuit(1) .EUt(GTValues.VA[GTValues.MV]) @@ -108,6 +109,7 @@ function registerTFGMoonPlantRecipes(event) { .itemOutputs(`8x ${element.id}`) .chancedOutput(element.id, 4000, 0) .chancedOutput(element.id, 3000, 0) + .chancedOutput(element.id, 4000, 0) .duration(12000) // 30 mins .circuit(2) .EUt(GTValues.VA[GTValues.MV]) From e2d01b65365e8cb7470d6d6830b1298c0e4b4cfd Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 00:29:06 +0000 Subject: [PATCH 20/26] add new icon set, thank you cosmic frontiers --- .../gtceu/models/block/cube_3_layer/all.json | 24 ++++++++++ .../block/cube_3_layer/all_translucent.json | 25 ++++++++++ .../models/block/cube_3_layer/default.json | 43 ++++++++++++++++++ .../block/material_sets/chonky/block.json | 8 ++++ .../block/material_sets/chonky/frame_gt.json | 8 ++++ .../item/material_sets/chonky/block.json | 3 ++ .../item/material_sets/chonky/bolt.json | 8 ++++ .../item/material_sets/chonky/foil.json | 8 ++++ .../item/material_sets/chonky/frame_gt.json | 3 ++ .../item/material_sets/chonky/gear.json | 8 ++++ .../item/material_sets/chonky/gear_small.json | 8 ++++ .../item/material_sets/chonky/ingot.json | 8 ++++ .../material_sets/chonky/ingot_double.json | 8 ++++ .../item/material_sets/chonky/ingot_hot.json | 9 ++++ .../item/material_sets/chonky/nugget.json | 8 ++++ .../item/material_sets/chonky/plate.json | 8 ++++ .../material_sets/chonky/plate_dense.json | 8 ++++ .../material_sets/chonky/plate_double.json | 8 ++++ .../item/material_sets/chonky/ring.json | 8 ++++ .../models/item/material_sets/chonky/rod.json | 8 ++++ .../item/material_sets/chonky/rod_long.json | 8 ++++ .../item/material_sets/chonky/rotor.json | 8 ++++ .../item/material_sets/chonky/round.json | 8 ++++ .../item/material_sets/chonky/screw.json | 8 ++++ .../item/material_sets/chonky/spring.json | 8 ++++ .../material_sets/chonky/spring_small.json | 8 ++++ .../chonky/tool_head_buzz_saw.json | 8 ++++ .../chonky/tool_head_chainsaw.json | 8 ++++ .../material_sets/chonky/tool_head_drill.json | 8 ++++ .../chonky/tool_head_screwdriver.json | 8 ++++ .../chonky/tool_head_wrench.json | 8 ++++ .../material_sets/chonky/turbine_blade.json | 8 ++++ .../item/material_sets/chonky/wire_fine.json | 8 ++++ .../block/material_sets/chonky/block.png | Bin 0 -> 260 bytes .../material_sets/chonky/block_overlay.png | Bin 0 -> 189 bytes .../material_sets/chonky/block_secondary.png | Bin 0 -> 303 bytes .../block/material_sets/chonky/frame_gt.png | Bin 0 -> 391 bytes .../material_sets/chonky/frame_gt_overlay.png | Bin 0 -> 195 bytes .../chonky/frame_gt_secondary.png | Bin 0 -> 343 bytes .../item/material_sets/chonky/bolt.png | Bin 0 -> 178 bytes .../material_sets/chonky/bolt_overlay.png | Bin 0 -> 138 bytes .../material_sets/chonky/bolt_secondary.png | Bin 0 -> 179 bytes .../item/material_sets/chonky/foil.png | Bin 0 -> 328 bytes .../material_sets/chonky/foil_overlay.png | Bin 0 -> 203 bytes .../material_sets/chonky/foil_secondary.png | Bin 0 -> 325 bytes .../item/material_sets/chonky/gear.png | Bin 0 -> 406 bytes .../material_sets/chonky/gear_overlay.png | Bin 0 -> 190 bytes .../material_sets/chonky/gear_secondary.png | Bin 0 -> 380 bytes .../item/material_sets/chonky/gear_small.png | Bin 0 -> 324 bytes .../chonky/gear_small_overlay.png | Bin 0 -> 169 bytes .../chonky/gear_small_secondary.png | Bin 0 -> 344 bytes .../item/material_sets/chonky/ingot.png | Bin 0 -> 284 bytes .../material_sets/chonky/ingot_double.png | Bin 0 -> 315 bytes .../chonky/ingot_double_overlay.png | Bin 0 -> 202 bytes .../chonky/ingot_double_secondary.png | Bin 0 -> 362 bytes .../item/material_sets/chonky/ingot_hot.png | Bin 0 -> 284 bytes .../chonky/ingot_hot_overlay.png | Bin 0 -> 237 bytes .../chonky/ingot_hot_secondary.png | Bin 0 -> 329 bytes .../material_sets/chonky/ingot_overlay.png | Bin 0 -> 197 bytes .../material_sets/chonky/ingot_secondary.png | Bin 0 -> 329 bytes .../item/material_sets/chonky/nugget.png | Bin 0 -> 227 bytes .../material_sets/chonky/nugget_overlay.png | Bin 0 -> 161 bytes .../material_sets/chonky/nugget_secondary.png | Bin 0 -> 250 bytes .../item/material_sets/chonky/plate.png | Bin 0 -> 270 bytes .../item/material_sets/chonky/plate_dense.png | Bin 0 -> 349 bytes .../chonky/plate_dense_overlay.png | Bin 0 -> 195 bytes .../chonky/plate_dense_secondary.png | Bin 0 -> 389 bytes .../material_sets/chonky/plate_double.png | Bin 0 -> 316 bytes .../chonky/plate_double_overlay.png | Bin 0 -> 200 bytes .../chonky/plate_double_secondary.png | Bin 0 -> 375 bytes .../material_sets/chonky/plate_overlay.png | Bin 0 -> 182 bytes .../material_sets/chonky/plate_secondary.png | Bin 0 -> 324 bytes .../item/material_sets/chonky/ring.png | Bin 0 -> 228 bytes .../material_sets/chonky/ring_overlay.png | Bin 0 -> 153 bytes .../material_sets/chonky/ring_secondary.png | Bin 0 -> 218 bytes .../item/material_sets/chonky/rod.png | Bin 0 -> 183 bytes .../item/material_sets/chonky/rod_long.png | Bin 0 -> 164 bytes .../material_sets/chonky/rod_long_overlay.png | Bin 0 -> 143 bytes .../chonky/rod_long_secondary.png | Bin 0 -> 163 bytes .../item/material_sets/chonky/rod_overlay.png | Bin 0 -> 142 bytes .../material_sets/chonky/rod_secondary.png | Bin 0 -> 157 bytes .../item/material_sets/chonky/rotor.png | Bin 0 -> 301 bytes .../material_sets/chonky/rotor_overlay.png | Bin 0 -> 181 bytes .../material_sets/chonky/rotor_secondary.png | Bin 0 -> 331 bytes .../item/material_sets/chonky/round.png | Bin 0 -> 175 bytes .../material_sets/chonky/round_overlay.png | Bin 0 -> 127 bytes .../material_sets/chonky/round_secondary.png | Bin 0 -> 187 bytes .../item/material_sets/chonky/screw.png | Bin 0 -> 232 bytes .../material_sets/chonky/screw_overlay.png | Bin 0 -> 156 bytes .../material_sets/chonky/screw_secondary.png | Bin 0 -> 227 bytes .../item/material_sets/chonky/spring.png | Bin 0 -> 283 bytes .../material_sets/chonky/spring_overlay.png | Bin 0 -> 152 bytes .../material_sets/chonky/spring_secondary.png | Bin 0 -> 259 bytes .../material_sets/chonky/spring_small.png | Bin 0 -> 249 bytes .../chonky/spring_small_overlay.png | Bin 0 -> 141 bytes .../chonky/spring_small_secondary.png | Bin 0 -> 210 bytes .../chonky/tool_head_buzz_saw.png | Bin 0 -> 332 bytes .../chonky/tool_head_buzz_saw_overlay.png | Bin 0 -> 170 bytes .../chonky/tool_head_buzz_saw_secondary.png | Bin 0 -> 357 bytes .../chonky/tool_head_chainsaw.png | Bin 0 -> 259 bytes .../chonky/tool_head_chainsaw_overlay.png | Bin 0 -> 151 bytes .../chonky/tool_head_chainsaw_secondary.png | Bin 0 -> 251 bytes .../material_sets/chonky/tool_head_drill.png | Bin 0 -> 299 bytes .../chonky/tool_head_drill_overlay.png | Bin 0 -> 189 bytes .../chonky/tool_head_drill_secondary.png | Bin 0 -> 295 bytes .../chonky/tool_head_screwdriver.png | Bin 0 -> 220 bytes .../chonky/tool_head_screwdriver_overlay.png | Bin 0 -> 145 bytes .../tool_head_screwdriver_secondary.png | Bin 0 -> 203 bytes .../material_sets/chonky/tool_head_wrench.png | Bin 0 -> 208 bytes .../chonky/tool_head_wrench_overlay.png | Bin 0 -> 137 bytes .../chonky/tool_head_wrench_secondary.png | Bin 0 -> 162 bytes .../material_sets/chonky/turbine_blade.png | Bin 0 -> 268 bytes .../chonky/turbine_blade_overlay.png | Bin 0 -> 195 bytes .../chonky/turbine_blade_secondary.png | Bin 0 -> 311 bytes .../item/material_sets/chonky/wire_fine.png | Bin 0 -> 243 bytes .../chonky/wire_fine_overlay.png | Bin 0 -> 309 bytes .../chonky/wire_fine_secondary.png | Bin 0 -> 254 bytes kubejs/startup_scripts/tfg/icon_sets.js | 18 ++++++-- kubejs/startup_scripts/tfg/materials.js | 2 +- 119 files changed, 339 insertions(+), 4 deletions(-) create mode 100644 kubejs/assets/gtceu/models/block/cube_3_layer/all.json create mode 100644 kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json create mode 100644 kubejs/assets/gtceu/models/block/cube_3_layer/default.json create mode 100644 kubejs/assets/gtceu/models/block/material_sets/chonky/block.json create mode 100644 kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/block.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/round.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json create mode 100644 kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png create mode 100644 kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ring.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_drill_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_secondary.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png create mode 100644 kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/all.json b/kubejs/assets/gtceu/models/block/cube_3_layer/all.json new file mode 100644 index 000000000..bd4649c5f --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/all.json @@ -0,0 +1,24 @@ +{ + "parent": "gtceu:block/cube_3_layer/default", + "textures": { + "particle": "#bot_all", + "bot_down": "#bot_all", + "bot_up": "#bot_all", + "bot_north": "#bot_all", + "bot_east": "#bot_all", + "bot_south": "#bot_all", + "bot_west": "#bot_all", + "mid_down": "#mid_all", + "mid_up": "#mid_all", + "mid_north": "#mid_all", + "mid_east": "#mid_all", + "mid_south": "#mid_all", + "mid_west": "#mid_all", + "top_down": "#top_all", + "top_up": "#top_all", + "top_north": "#top_all", + "top_east": "#top_all", + "top_south": "#top_all", + "top_west": "#top_all" + } +} diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json b/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json new file mode 100644 index 000000000..7e9b40eb4 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/all_translucent.json @@ -0,0 +1,25 @@ +{ + "parent": "gtceu:block/cube_3_layer/default", + "render_type": "translucent", + "textures": { + "particle": "#bot_all", + "bot_down": "#bot_all", + "bot_up": "#bot_all", + "bot_north": "#bot_all", + "bot_east": "#bot_all", + "bot_south": "#bot_all", + "bot_west": "#bot_all", + "mid_down": "#mid_all", + "mid_up": "#mid_all", + "mid_north": "#mid_all", + "mid_east": "#mid_all", + "mid_south": "#mid_all", + "mid_west": "#mid_all", + "top_down": "#top_all", + "top_up": "#top_all", + "top_north": "#top_all", + "top_east": "#top_all", + "top_south": "#top_all", + "top_west": "#top_all" + } +} diff --git a/kubejs/assets/gtceu/models/block/cube_3_layer/default.json b/kubejs/assets/gtceu/models/block/cube_3_layer/default.json new file mode 100644 index 000000000..4919daa49 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/cube_3_layer/default.json @@ -0,0 +1,43 @@ +{ + "parent": "block/block", + "elements": [ + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "faces": { + "down": { "texture": "#bot_down", "cullface": "down", "tintindex": 0 }, + "up": { "texture": "#bot_up", "cullface": "up", "tintindex": 0 }, + "north": { "texture": "#bot_north", "cullface": "north", "tintindex": 0 }, + "south": { "texture": "#bot_south", "cullface": "south", "tintindex": 0 }, + "west": { "texture": "#bot_west", "cullface": "west", "tintindex": 0 }, + "east": { "texture": "#bot_east", "cullface": "east", "tintindex": 0 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "texture": "#mid_down", "cullface": "down", "tintindex": 1 }, + "up": { "texture": "#mid_up", "cullface": "up", "tintindex": 1 }, + "north": { "texture": "#mid_north", "cullface": "north", "tintindex": 1 }, + "south": { "texture": "#mid_south", "cullface": "south", "tintindex": 1 }, + "west": { "texture": "#mid_west", "cullface": "west", "tintindex": 1 }, + "east": { "texture": "#mid_east", "cullface": "east", "tintindex": 1 } + } + }, + { + "from": [ 0, 0, 0 ], + "to": [ 16, 16, 16 ], + "shade": false, + "faces": { + "down": { "texture": "#top_down", "cullface": "down", "tintindex": 2 }, + "up": { "texture": "#top_up", "cullface": "up", "tintindex": 2 }, + "north": { "texture": "#top_north", "cullface": "north", "tintindex": 2 }, + "south": { "texture": "#top_south", "cullface": "south", "tintindex": 2 }, + "west": { "texture": "#top_west", "cullface": "west", "tintindex": 2 }, + "east": { "texture": "#top_east", "cullface": "east", "tintindex": 2 } + } + } + ] +} diff --git a/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json b/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json new file mode 100644 index 000000000..9f753d696 --- /dev/null +++ b/kubejs/assets/gtceu/models/block/material_sets/chonky/block.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/cube_3_layer/all", + "textures": { + "bot_all": "gtceu:block/material_sets/chonky/block", + "mid_all": "gtceu:block/material_sets/chonky/block_secondary", + "top_all": "gtceu:block/material_sets/chonky/block_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json b/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json new file mode 100644 index 000000000..e98a4e16d --- /dev/null +++ b/kubejs/assets/gtceu/models/block/material_sets/chonky/frame_gt.json @@ -0,0 +1,8 @@ +{ + "parent": "gtceu:block/cube_3_layer/all_translucent", + "textures": { + "bot_all": "gtceu:block/material_sets/chonky/frame_gt", + "mid_all": "gtceu:block/material_sets/chonky/frame_gt_secondary", + "top_all": "gtceu:block/material_sets/chonky/frame_gt_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json new file mode 100644 index 000000000..495c503ae --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/block.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:item/material_sets/chonky/block" +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json new file mode 100644 index 000000000..e77b96e4f --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/bolt.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/bolt", + "layer1": "gtceu:item/material_sets/chonky/bolt_secondary", + "layer2": "gtceu:item/material_sets/chonky/bolt_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json new file mode 100644 index 000000000..dca6eed74 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/foil.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/foil", + "layer1": "gtceu:item/material_sets/chonky/foil_secondary", + "layer2": "gtceu:item/material_sets/chonky/foil_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json new file mode 100644 index 000000000..61f59e8b9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/frame_gt.json @@ -0,0 +1,3 @@ +{ + "parent": "gtceu:item/material_sets/chonky/frame_gt" +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json new file mode 100644 index 000000000..b0265d2c0 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/gear", + "layer1": "gtceu:item/material_sets/chonky/gear_secondary", + "layer2": "gtceu:item/material_sets/chonky/gear_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json new file mode 100644 index 000000000..dd51c5c7f --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/gear_small.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/gear_small", + "layer1": "gtceu:item/material_sets/chonky/gear_small_secondary", + "layer2": "gtceu:item/material_sets/chonky/gear_small_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json new file mode 100644 index 000000000..d7347df75 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ingot", + "layer1": "gtceu:item/material_sets/chonky/ingot_secondary", + "layer2": "gtceu:item/material_sets/chonky/ingot_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json new file mode 100644 index 000000000..bffa7f1e1 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_double.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ingot_double", + "layer1": "gtceu:item/material_sets/chonky/ingot_double_secondary", + "layer2": "gtceu:item/material_sets/chonky/ingot_double_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json new file mode 100644 index 000000000..db6a4ec37 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ingot_hot.json @@ -0,0 +1,9 @@ +{ + "parent": "gtceu:item/material_sets/chonky/ingot", + "textures": { + "layer0":"gtceu:item/material_sets/chonky/ingot", + "layer1":"gtceu:item/material_sets/chonky/ingot_secondary", + "layer2":"gtceu:item/material_sets/chonky/ingot_overlay", + "layer3":"gtceu:item/material_sets/chonky/ingot_hot_overlay" + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json new file mode 100644 index 000000000..1b994d90c --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/nugget.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/nugget", + "layer1": "gtceu:item/material_sets/chonky/nugget_secondary", + "layer2": "gtceu:item/material_sets/chonky/nugget_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json new file mode 100644 index 000000000..662218a13 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate", + "layer1": "gtceu:item/material_sets/chonky/plate_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json new file mode 100644 index 000000000..479760975 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_dense.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate_dense", + "layer1": "gtceu:item/material_sets/chonky/plate_dense_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_dense_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json new file mode 100644 index 000000000..ba5f9b677 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/plate_double.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/plate_double", + "layer1": "gtceu:item/material_sets/chonky/plate_double_secondary", + "layer2": "gtceu:item/material_sets/chonky/plate_double_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json new file mode 100644 index 000000000..665aa603b --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/ring.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/ring", + "layer1": "gtceu:item/material_sets/chonky/ring_secondary", + "layer2": "gtceu:item/material_sets/chonky/ring_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json new file mode 100644 index 000000000..05da66ead --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rod", + "layer1": "gtceu:item/material_sets/chonky/rod_secondary", + "layer2": "gtceu:item/material_sets/chonky/rod_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json new file mode 100644 index 000000000..2856de974 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rod_long.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rod_long", + "layer1": "gtceu:item/material_sets/chonky/rod_long_secondary", + "layer2": "gtceu:item/material_sets/chonky/rod_long_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json new file mode 100644 index 000000000..e411f89b0 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/rotor.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/rotor", + "layer1": "gtceu:item/material_sets/chonky/rotor_secondary", + "layer2": "gtceu:item/material_sets/chonky/rotor_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json new file mode 100644 index 000000000..8be0d3752 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/round.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/round", + "layer1": "gtceu:item/material_sets/chonky/round_secondary", + "layer2": "gtceu:item/material_sets/chonky/round_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json new file mode 100644 index 000000000..45d4b4464 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/screw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/screw", + "layer1": "gtceu:item/material_sets/chonky/screw_secondary", + "layer2": "gtceu:item/material_sets/chonky/screw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json new file mode 100644 index 000000000..3999b33c5 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/spring", + "layer1": "gtceu:item/material_sets/chonky/spring_secondary", + "layer2": "gtceu:item/material_sets/chonky/spring_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json new file mode 100644 index 000000000..71ffb6a0b --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/spring_small.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/spring_small", + "layer1": "gtceu:item/material_sets/chonky/spring_small_secondary", + "layer2": "gtceu:item/material_sets/chonky/spring_small_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json new file mode 100644 index 000000000..1481a0e52 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_buzz_saw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_buzz_saw", + "layer1": "gtceu:item/material_sets/chonky/tool_head_buzz_saw_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_buzz_saw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json new file mode 100644 index 000000000..b97e0c3a9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_chainsaw.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_chainsaw", + "layer1": "gtceu:item/material_sets/chonky/tool_head_chainsaw_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_chainsaw_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json new file mode 100644 index 000000000..74085a203 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_drill.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_drill", + "layer1": "gtceu:item/material_sets/chonky/tool_head_drill_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_drill_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json new file mode 100644 index 000000000..5e81cc3b4 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_screwdriver.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_screwdriver", + "layer1": "gtceu:item/material_sets/chonky/tool_head_screwdriver_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_screwdriver_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json new file mode 100644 index 000000000..af4a2f5d9 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/tool_head_wrench.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/tool_head_wrench", + "layer1": "gtceu:item/material_sets/chonky/tool_head_wrench_secondary", + "layer2": "gtceu:item/material_sets/chonky/tool_head_wrench_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json new file mode 100644 index 000000000..4778455f1 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/turbine_blade.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/turbine_blade", + "layer1": "gtceu:item/material_sets/chonky/turbine_blade_secondary", + "layer2": "gtceu:item/material_sets/chonky/turbine_blade_overlay" + } +} diff --git a/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json b/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json new file mode 100644 index 000000000..5a734e877 --- /dev/null +++ b/kubejs/assets/gtceu/models/item/material_sets/chonky/wire_fine.json @@ -0,0 +1,8 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "gtceu:item/material_sets/chonky/wire_fine", + "layer1": "gtceu:item/material_sets/chonky/wire_fine_secondary", + "layer2": "gtceu:item/material_sets/chonky/wire_fine_overlay" + } +} diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block.png new file mode 100644 index 0000000000000000000000000000000000000000..d456c5965b3b4011baa8df25760e2c0af1565ac3 GIT binary patch literal 260 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7PJ6mIhFJ8@4LT@z*nlIr zSkCdL;yuIaHrX?LZ@p#IaxYygx2riOxe4tppTOd|=CzfrR5F9Z zoqody?>0&^OgK^~^KpX8omwTq#v&~V7N-2$W~C3_InG-8Y7fVZgR9nQ6zt`1It PU|{fc^>bP0l+XkKM!stc literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..baf443562f6a5e35a9732aa872e7556c93aa0bb5 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7T0C7GLo9mN208K_P~dRh z{Qp7!pH2H#?B21|$SCOw_a!dfBPpP? zoO4m6{=*xaH+{^iHF-=93@*)ip=>NVEX ra`v+tM^8PL`F(1QS?yK%e?86850W10s@${!Ih4WE)z4*}Q$iB}hYC!9 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/block_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..6b7c18018c00e08092cdf679a6b7fdb5855c6598 GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7zInPhhFJ8@oxHK|umO*& zqty&t86CbF z+AnWs**9xu?&H&wOaCp^%G6nU=g;{^u{T3c%(YsjFmpfSj7y5=zux_3#K6G7;OXk; Jvd$@?2>>qTfYty2 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt.png new file mode 100644 index 0000000000000000000000000000000000000000..d4ad8581b3d4bc904bd6f90b1c072ec161597bed GIT binary patch literal 391 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7{XAV9Lo9mdPFCD>*nr1n z{{Jr=TzuygyPD5>-`4!X$W-0%L1xj8c8zT-H}*RJb#(jbH*3=V6OS)??asc*b2z}I z<-bD90Z*45ck?RV3kuF!c2i{O6ozZRrwCc5yR>A^vS6%uUuidgh0yakma{DSk}saT z{#sNpQmTVPscGx9Wtj!%WWBasn^YVp%JApPrx4$sjc-nVwh>po{^MeE@wqLz*;`iR z8J#cwcyDs?viH@WD{Oci&Q)eEaAf>ayWgyG|9#bCI~23$YW>_0VE%Gf-q)DPqDr6A z6Z=2^?D1PC`tD<5;(N=bF4s%t4|Z`_K7T5?e`4sj*I%_543Ayf_V(DRSqClpo_4I6 zS@E7zQ6O38u)!4Hjx5LPUo@^ zL`9n{sV%SyIRC6}zxZEn(=8seuRPiHOq}`o&sozIk7h71Ffe$!`njxgN@xNA4aT-l literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png b/kubejs/assets/gtceu/textures/block/material_sets/chonky/frame_gt_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..bf82e85e46a84ee8bdf2185e12c02cb2571f231e GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7x;$MRLo9mN20QW{P~c#; zKQg)IbKDi#Wq#bj(|c1CHJ3K8;&RyMqGdTfhkt&+-me)ZjjP(~yLXf}#a)$o%@@zE zz|d3l>|8^!Z-}E%iq3YnN0vsNEoZ$O6HL?Hj!s_P(1?hptFQgy z{;!cHC+HMWbgsj2)*Ry~^Q_TA~sc*~%$G-XER54*+1d8?<{GAvjbCL(ZAOM0Ex zFPAOHBzOha%6|>;I=RK8=$wb<%wK<9AI!NuCFsMw`&mMa)$jAYG^dE&7qNJ5_Wti% zoAa(YoI56-^=B*PjM#JS?`fVT&noYwe7<_-w3Do#=I)SNN-r1|y#MXatuxP=qx;&g zdBtr(tJXf)eqdSVt<(24jVn(#%xn+4b#7Iw`NeaaWN9uLzqgl-%mK`+q(I0|SGntDnm{r-UW|>mrs4 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt.png new file mode 100644 index 0000000000000000000000000000000000000000..156644f37c3ec6c751a78c9d3953f9eafdc8c0b4 GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7Dm`5sLo9mV_HX1pY{0{k zsmz_l&3jNWB8%bcDpQvB1m9~}_hTP8H7wooaXQPp_nu$UG?kbH5BeJzC-*QK&z?5N zzrd^W&RnG?rKJ0Js@qpJ&Ac9;khVhW4A0iECv(0h82_F%|H1h;5`s_OU5Q#8bZTSH i{`EIz{e8ZZA!v6*--U0NSr`}?7(8A5T-G@yGywo6{77p6 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/bolt_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..a6eb6cb3f04730224aea8b314e9bd740abec5e6a GIT binary patch literal 138 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s70zF+ELo9mV_8k;#FyJ{X zBB7yNTDQz#{k=kgOJDB3ntj47$IHVhsKQ#y=mNukZb>umPdTn?+uc2Wl&fvF7H^p8 rYx;Y|&d;5-+)tk+9Nn`+!6@8V+jTgmY9l||qY)_qFflvS8iEP`%axb$XCqx$kk?(Qk0%`47*Lq`qcg00iC)+TS?IptGl$C6dv;xdArDn;k)1s|q<7W{M1dfoq7H*?Ys jXZ|j8z5ZtQbN*B3{nM>VquwwuFfe$!`njxgN@xNASzbwS literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil.png new file mode 100644 index 0000000000000000000000000000000000000000..60e99db4757b29e9d158d7c9a808d2bae8fd8396 GIT binary patch literal 328 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7`8{16Lo9l?PF5^BY#`t| zf0n}OfL+ct9P&=>Cwdkhzn~nDmh~c9qJ1_SyLQO2MO+zAJ*CxiZ7;hr{hs%wJnX~$ z)V00WZtaldQ*?PA^X7M5=%;U!pA_v}u=SY4;aMsF-=sAhet5v5k3qz>(U48yTB&Xr zE2qwBp`{|9ZJ75=dGr3^w%m{R^cMtWO|+lcKIl%F_dK+7iqL!8>#x5mAF5saU2d&u)NA&W-z^Rsa7 kXaD$lCU<_i_g#jB(=!WPFPuEVz`(%Z>FVdQ&MBb@0Q_%|8vpZ z{7a#mO?gvpZVHrC4vwiWc*4M_v{hZvq2PT^L%p}qq`dRfCraLExY5jWSv7akGsSa1 zc#4weG*1yvQ|zAEI3qHDdta)+hTj*aYd=5nc^13FsR_-i&(*$`ws%!!TPfnCutUse zpD44G%FK@~KkBR|>@^8%;8WS!-}Txx$nmJNNa?o*&1d?x?`Pz`)??>gTe~ HDWM4fP#sO) literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/foil_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..a66c6cdda669354fd9d16d75663eca77e9649143 GIT binary patch literal 325 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7c|2VlLo9l?PBip8Vj$pZ zpJJW8)FdxxXHjzXeEdMYxbgQhcmCg!adO~b^u26zcJI!ZW{c-V3@cW>s^c`Wo;maPy4P|u zc5c7+EPHm1Vb)syYqw&uYj5z(e75!4vyImkJWZ~b)(R&&bzH2T@1@!AIcX2`fx7+M zb8p*;xqeh?k?{XD!JydRrTpIS5Dr5>#dAAr_$DoTIot4Al|KOa9#I+p1^w}VNr^{9MAQ%!bEbB>W;cZX9;j^X=rt(Oz) f%)aV>WjufKcjTShPm&oJ7#KWV{an^LB{Ts57CMSW literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear.png new file mode 100644 index 0000000000000000000000000000000000000000..96da2eebdb84a6b8eeb87e2b476b5e278903cab8 GIT binary patch literal 406 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7V?A9QLo9mN1{vlZHsG<@ zUdd#d-h1uLMddFYERwd;Qc(x^Pe>f-{~)jQ*KyX~uFVsDW0ek--Cnu3b4tmRk1h}T zGwOC1oD)@=v?uqr{QZ5op67N3eLnq^DVb+R&7B6Xkhtlj#=OS4nka%szyNptpJfAF!Q#%})k{>L9X{?_p`%vi?x z*`~R};Jop&%tID^JMO=KbbQ^Z^+7Wwy)+Gs+Y%#6)s^P>sS5-uDs9QVeS#zQy5e)5 zr6Nf^5^auFf`OLv&wFS(X7jE!JysYq`-jo{aD&Y=e!Uf66_fq;+Llc+3#DY8BE%!S zwq9$RS!f}XlE?7jp0g(F`@g4LIA7U^uk_NKc;<|PQpVbYXFl9p{QfuFjhrOac7Y`x zs_g;-$t;2=)7JUC`Mqyv-1=0*NjY&Gj_1TaR<-D6ZR}Eg8UK-W-o4Xd7h|OlFfcGM Nc)I$ztaD0e0sze2vp)a; literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..658a48b0021da4b17f9ab5a48854f940826552f0 GIT binary patch literal 190 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7T0LDHLo9li20QW{P~bRR z+wr$UKVLsde7ooxDP>MWCf%b8PAr=mcj#_%;=`rxY^n=H+PQBjnbW_^Ei2SwKFYi5;SRLZgp;&_g&Oy%8M6*+)d$c t?w;Ahe)^l>gLRwtzJI#i{_-|kUa|kj1D5DtV_;xl@O1TaS?83{1OQoRMOpv= literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..372125edc9659d8185fda4c59024d1193ca49eda GIT binary patch literal 380 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7ojqL~Lo9li1}RQDY`_ze z|EpDCq0NGw)0aG(dr0I3_uI1)5>I#;mwsn#-lOC&xn;YDLS2jZDrx_7j-ne=GnZaH z#UOtxPy4|fX~Dvv|3y3J6j#P)Pbkg{*`GOUv*9y$7p>m=@4w$a+h^z&F>Ptdx!yA| ztIwa=TAUX%ZE268)3y$=fC*~rYtzc3%tfuN+IrN-4K zHVTh=IyM_VV`Esn^_z6US7FgNd-GkFI34jkc<=YOwg2W^c6#2o%1+QVZQbvE`~S{SY(zL0@|fx*+&&t;ucLK6Vm*r#g% literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/gear_small.png new file mode 100644 index 0000000000000000000000000000000000000000..36d3fc08751258fa951cee3d06d87f8871e1457d GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7xjkJRLo9laPTbgg*g$~A zoqu|P>kQWo9HNR23zM4{KA5qPQFNiw61gREJ8VBpR%i4!`g8HW8q51{V%60j?q{6q zQf%Q#NV}7_J=pKy_1(w*)*Y|*?=cj=D3Pr9zn@7{l|e<&=|t@HhkNZm=vCilxL2+6 zaL(Z~6OL@lW%z2#A#$7H^{z*A9)GL|aWqbrai4eoxwl#=tLK{6zl>~noQ-*$jn5lT zGBExo8NzOV>gE}P&6i_tZDUn9Hsf?DpE{S~lWn;ZkJy}Nh*=*#r`SVj>5)x3rBhGW z?RagqEmwJINICnAWt^Vu;nQmuPMDT@@XUvMlY^WtDISq62T9@XgFPi)EOvrw_8I}{Y5^ik#DtSjL Xte*E^(+4>Q1_lOCS3j3^P6-Lo9la25rneY#?C6 z9(C|+xXgi~r-nW93YoDPY^)_8UDFZ{hIy=Cv(RbLUG=NtPXv6DnVNDBdQOgUmHXHK z{X5G)>DARsI#?JK7F~W=Q1Nr?s*aX9#z{TLs_%=QtG++A`ru_{!_c*^DiPV+&-~eC z;k1#L;mjSOiKPrpPOf;x#xSQ?{@l*n7rWmk**@nHhJY!<2-AyxL|)GcYog z?Y?U*I5)I(@v5%|Jm(qmSiNptHhCMmRWC8_NOkDi^|7JXUA#^*INbl9?^2TVEG#rT zbnW}4^`H6sjz50>Xw|z1i5F{1?M44a*Dy1>tqI)qgwvgYfq}u()z4*}Q$iB}e-xEF literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot.png new file mode 100644 index 0000000000000000000000000000000000000000..0c739c56444638f24b18ddc6cdf5b9e7cd9f58a5 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s79(%ethFJ9Oopf+wi-Lfw ze6%#vTxK>$zd5>nY!5E#@FX=g$h?rb6CC{F#hhi^{I&Ldub+OX-sjxUi0fZ>SQpP% z*xhG%Datw2Q*-VN^TtL)Hz$r2S`4eIvel=KNoQ1J(7D7&BN?G7$y+qOAWZvP36_rLiLY|CB8JuS8Hn|zG$Jcrqreb4>mP&Dur pUUh4s^@p$oq1%5sf4%y{C_jIP(aNRaObiSR44$rjF6*2UngDxBc)$Pv literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double.png new file mode 100644 index 0000000000000000000000000000000000000000..2c889a4d602d30a381717e622182fe533b13afa5 GIT binary patch literal 315 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7nLJ$_Lo9lGCmk$2qQK+2 zKRu}F3bS65(uIQ9Z&G)C z=PTSkE)kgBx=QK!9m9Mk=Hwm@MTbyEhE-NmeEb(Ux_k*VlH8-y9nZudSSrMjkai_X zQEA6}Y0Kv?Pg||n+B8$vXhO%IJyRaJy09=jU|N0VOk5_*w!6HnYoA#3z1#Eln95y_ zwF{;gwRmgBI*Q-$Q8P~D?&^466dSJZq506}JfDyt|Cy+~;}xe5s9f`vzQ!S!HX(>f z@aO)2+)>ki@B443^5D5)tH6OX9EueY{tMQ=JFN2A#yM10s?oX8Q)jaJirD)prDuPf Uh_>rtU|?YIboFyt=akR{06K1eI{*Lx literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..b6344c952c6ae39573dd16f00690b0f447140fbb GIT binary patch literal 202 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7CVIL!hFJ9WPP)i@K!L-h zUoXYHXj@*0`Xc*lG96r;7d5^+uz1W^x zOcjhK)AwHd_e?_2u;CH&903Nob+?!$n)tX{tsB}~oY)?)TdWU!yvWV(zQ@z$I#o`$ zTv8$(Z-q5vGA(|?{NVX-l_wR8?|e;~nqp;IJa5Gt<}T*OJKC$v`xzJ*7(8A5T-G@y GGywps2~KSQ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_double_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..4a7e09631f04bb32618649d911aac88fe5791c11 GIT binary patch literal 362 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s74Lw~PLo9lGC+yBWY#`v^ z?+}(yJe6(2qPAp-H=^6Mwlu}ANSG)YvV!-HG23e^cpTTT$VBG*$!=m0FJ_St6m+qoX*T3k=!*!rJ9wA z!Qy$*u^WH&IXyJf-`iHaKNvMTI{WhvAH%nWGW;f!x94()Ok8Dr?A?^v%U(L@Ux=z_ zIAF-Zq2Q_0>&U?1vL{fFLqqcL_19lr{&Tto SZZiV|1B0ilpUXO@geCx-X_*!P literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot.png new file mode 100644 index 0000000000000000000000000000000000000000..0c739c56444638f24b18ddc6cdf5b9e7cd9f58a5 GIT binary patch literal 284 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s79(%ethFJ9Oopf+wi-Lfw ze6%#vTxK>$zd5>nY!5E#@FX=g$h?rb6CC{F#hhi^{I&Ldub+OX-sjxUi0fZ>SQpP% z*xhG%Datw2Q*-VN^TtL)Hz$r2S`4eIvel=KNoQ1J(7D7&BN?G7$y+qOAWZvP36_rLiLY|CB8JuS8Hn|zG$Jcrqreb4>mP&Dur pUUh4s^@p$oq1%5sf4%y{C_jIP(aNRaObiSR44$rjF6*2UngDxBc)$Pv literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_hot_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..66495dfa3bba53f8d5e25d406e0f1212a0da1522 GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4rT@h1`S>QU zJuGR{=`+v%|JQ0+{g{D)A=%T#F+^f&>3M6uBMuzQ0goS=-}!$)aPr+2H4l+Jhl~z9 z4>_y7`CHx5JIN=ER`EW3W!k^O%1K~BR@giFghsh{`U#R(l-Rbk-j^)WH{GNquW;7* q^Op(Cb3f{9P0%y4o2d8QRD6aO(-wO*<)aJ?3=E#GelF{r5}E)i>{>3D|*rPcWdyLO`=)8Yh z*YR)hoZ{>I-rE=LeI(hkdFwYFrKue+w&nW!vofsR`h3^A{YgElf)hJl%voZ=)Y*~L zvot8{pRd!oo!MTUL0%$G8qOR~zx5fTgi_ejgrB{0HnfUUWNwhtj+u^sG zfk7qurHSuZp@l+%XU~*>32W?lVJnlYGqL*j*==<$2h<|U?HgvkKT~t~_jKJkvp3{S zX#FmzmA0?5Bh2gUiEg`u_kYy|Cw|`-!5VvgujTV~$0Tm~TQCLQ*Xw?g)U&grgKY}) jW+o4TmmI$?S1}yB@PM1^!L5D<1_lOCS3j3^P6oV z0>p(Hcoxif=ej3;Q(MOrg^tS@3O>pv#h1qLzD7C#&6EwJVi`iS BN-qEa literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ingot_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..8bba7db7e25f67d86f2534e99357324499e4a4eb GIT binary patch literal 329 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s71w36GLo9mtPS{x3Vj$ou z-X9&XNsyIe@(La|)*nHub~HGIYAAe-VJwqmDJW+Z$W;(s=>3D|*rPcWdyLO`=)8Yh z*YR)hoZ{>I-rE=LeI(hkdFwYFrKue+w&nW!vofsR`h3^A{YgElf)hJl%voZ=)Y*~L zvot8{pRd!oo!MTUL0%$G8qOR~zx5fTgi_ejgrB{0HnfUUWNwhtj+u^sG zfk7qurHSuZp@l+%XU~*>32W?lVJnlYGqL*j*==<$2h<|U?HgvkKT~t~_jKJkvp3{S zX#FmzmA0?5Bh2gUiEg`u_kYy|Cw|`-!5VvgujTV~$0Tm~TQCLQ*Xw?g)U&grgKY}) jW+o4TmmI$?S1}yB@PM1^!L5D<1_lOCS3j3^P6R=6BH0kdG<2)YoY0~%qmxwNhi(-M`Wi)PP;9X-?07O_Oxfol64>X eRcxpI@7Tw%syyTKEhTpb5b$*Mb6Mw<&;$THKwKLD literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..2012f8c33f9d6ac5d7db25525d51b3c7501b471b GIT binary patch literal 161 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7GCW-zLo9mVPS_}TK!JzZ zRjjGkDB4U(xK@hGz--Cc*ef#*Z@ZxU*DH`&f_<`mRnD~H6bUYY0;ZjF+ka^_F40=K zg{6G;QRz7ceE!tEob+h_1`gX(1>0Q>^sl&{cQ=qY{q(|tSvfoRuVp_I@7|Jbyzept P0|SGntDnm{r-UW|y6`&$ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/nugget_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..8a2166461c671f7b5d040e429c4c8cf69bb6d489 GIT binary patch literal 250 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s74tlychFJ8zowS#?*+8H* zzAkJ-%etbeTJw~2g;jJXS9AtkSazCE=K+(mtJbQ?A9x>zcyu^Cu{xElv-k6N(Ql0Z z-)v*Mc1w(*V+C`=B8|M0VcEITP8ST_S_Dcin^cB|_NQ1J>)@O>KYP+&^O-?e0)lI& zNHH9+EcX@a=$PltaG-kr`n$I4rk<&pm+-#!+?ljj(=2tmcddKx@wk}XrBT_D!hS`s85kHCJYD@<);T3K F0RSQvXk`EZ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate.png new file mode 100644 index 0000000000000000000000000000000000000000..c5852b31fcbf759f309f09b838693be61a9b0348 GIT binary patch literal 270 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7u6nvShFJ7Iop`Xf#ej#Q z{qnSg?*ifz=T#`r6FD$hPebWTLY0E;n|(4H*>C-wS5oJ?F+IupgME_B@#i+@&+m@; z&e>IbPLiQ~`TO7I%XTv}d1(e_=az51*1d$gLW1p%EQ4TXLr2Y&KQ50f_|B{mZPic_ zRBD)hJelB>FAK76;9?*XHMZ?L#`Nx2J4sB7r$ zZ^_?I#MUWJn;CTI%&lz3;}*BKF>cWDE*G4mYMJh(xkBspu5C39+hymdK41Tv_wU*Y a#(1`tOmPs_dS)wA)4#OZChsj=6E zl67A1nzrtB*1w-Ma<_IeESVAz%Fvd0pt`@fZ;tWy+r5br0ikn>S7^PT#C>3sPH55r z^UmUT3Oi?LKIdup{x8I+Px(Oml5Gjjx4d}_I2%?eDe0X4^ovz+rT#6OAg|Jhd%vsr z6ek2F&02O{?v3iXo%|>EU0M|ydaUrtaXlNk{-gSnvp!#Qx0V!KwBSNh z(Ug1FlNcW@4b`vs@9rO|I*EZb@c#qh+l*HinA*IbTjIjNz`)??>gTe~DWM4fZ&ynd literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_dense_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..ec537401b78264a00dfa772412426200871da72e GIT binary patch literal 389 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7eLP(pLo9l?PFBo6EJx}9I>pH9SgKM^f&Bp!%epe>#0IWx@^w> zW}4aloy`>shvX*P1d6L!Yfse2mbZjBOSXj1sWb@&4V!``^} zp>9*R8u0MH{<>>_)Y`o5x8M3QFickoI=8c8`|Vin87e2+4WF&kY&@A#SU=T3k+;2u&Wuxoq?cY~Dv@>L7$*XHj&6=+f@@aPZ&0|SGntDnm{r-UW|7~-k; literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double.png new file mode 100644 index 0000000000000000000000000000000000000000..eb91a882570a3a4633f9c5d990ffb342e8ab73db GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7nLS+`Lo9mtPCi(8RDs83 zx{ud{DhJmKlh4a_eVC}Hap;}n7Y194_8yVP?|<%0*`&^Y$u6v+@qfU%pLe#sty$Gt zuJ+qclaV1r^zH(nwf-@w~yva7( zeKn3jbEzhyv2*C%oX1r2@7Wk&PU4FcOLb2WY_3!h31=lj}a9(|N UiB{Qk1_lNOPgg&ebxsLQ0Hhp$WB>pF literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..cc7c6e60a6d1768d723e2dd8f738c248e5d31820 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7`aNA7Lo9mtPQJ@~K!Ky> zVCxIFbJu#`xO_P(zbB?QbJipY(R%EilT==3GtLGaPL-8&ew@2|OD)!1mwz`(%Z>FVdQ&MBb@ E09P?jVE_OC literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_double_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..df0a19900afd29043923a53ad7c6277d1133a990 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7?L1u^Lo9mtPPWZEY{1hR z-xb%`ttPL~CMKtR;a%BTO{1(Ak`^htd#o+l+ATgZ+GI}Pd#IPVV1e7kg&OLemwumE zF8{z@=~#uWT>t#+?Ah~O%=i>#7#u=(|E>GKk81_1+NXQ-y)}EE26^2!DcdOPJ1_V zr})H$`{wRS-K?ObE_l;s?-3~{m(Lb`)}M2$&n)Z6nP(Nz9C2EyXj7?h)S7>-5|6Li gtn2(|vX9|$&C}f{!e>upU|?YIboFyt=akR{0QFj+JOBUy literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..98bb6f50303595d47e97ac6e0e354dcff28490cd GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7YCT;XLo9lqPP)k3pupo2 zEw)P9aJKYAm#@oT6^bSOG1|z<81zndX~!SsJF$0c&%X4T!nI|(NSUH}H49%LYr|22 z8OF_g3Hb`F7SU&>eiO@X{u4P%tyH#w?GWpy*P3B_cR5U0$kA+l$n@Hpyt*SsirXe? l&-1ny+WxZas{c{GDGhTs`2L7k&cMLH;OXk;vd$@?2>@c|L&*RD literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/plate_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..89211c9462cb8c004e038da231c9bbe3a31c4b34 GIT binary patch literal 324 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7xjkJRLo9lqPTZJ##DK^3 zKkN1;sW7<*LZ&f?4jlX&8>K%{L@z`|dqsitj&hy~PSI`WnRf&!@-7VFVVNVighwDu zsPnr<(1HIP$!9KYdwV?Y?FV6%=c`u5F&?liU-|l1W%vYUrp&eN63L2|@Be1{GbNvy z6y(IQkV8>KQ}u-H`F4S>%vtAtTJZ1m(A>({P!j5uYk17*6N7_`wsE=APq8zfYyS1R zXl~71%l`b1C_~@Pntp}_Tjh#6gR)LPlt_L!XE#SVOT)6vc|C^Q#?2kqWCSMaOy~$x z+I9DDlg{Ls)@koP<=y)|`ON+Af2A2BviZxKVuGeU{cX{w?^3e)TAf$yfxF^Qgl?Xc e`?CEJw`RlY^!*oHeljpHFnGH9xvXHoeTjr;RfCSNu&JYUT4 zYL{P?|HIPQ#jD&xdvk9eoBuFTBI*A3z|hB=be1dLlzcNMS;pOoqvAcI!RA^&wwzlD z&t=lwI38a4ZlQOEM{uEzH-ig{VB##bUF&{peX5H&^ZC!IO>ZJaSnpMbd=+XtBE5Rm hE$-b-|9`#Uy>nLCapBgBm62STJ@HC0F>@s2o$kAAV%o^Sz`)??>gTe~ HDWM4f*AzI^ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/ring_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..00c57fd320472237ddf6564d43c044ac22bf414a GIT binary patch literal 218 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77J9lkhFJ8zow!%v93>(!yGI>UEg%vDp)6~e=%oH5Zu(_GbuqCMQ`60Ekxi#ghO5V?{WB9l8%dB%d zT{XY5F&G@P@t--jxVyt)wZNg*CUc7CCG~9XU@(5Id$N?T)XwqnO$$sov}J*5uN>XLV|9l`HO?Q^JARv{eHK*-d6rW Ye1_W6dkcjb7#J8lUHx3vIVCg!0QSdP6aWAK literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod.png new file mode 100644 index 0000000000000000000000000000000000000000..7861a55687c618824b4fc97568384fd3a089e909 GIT binary patch literal 183 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7>O5T>Lo9l)o>?f!tSHd> zuzcngS8E>EfFoX92Nr+4p_}w|(MFfT!!uiC)PCN*Ju|;?e|LwK;Ma}v_mi@9v(`S( z{dw@fs;bHjJ<-{*F1w1?)r$q+`(1nH%=Zl)ZywJ1Y$qQC#ELCVJ n*weiDxlNE4!-k&v#o`v3rMlYB{BAHXFfe$!`njxgN@xNA)8tKJ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_long.png new file mode 100644 index 0000000000000000000000000000000000000000..aac16b37878f3dfea30ffcd41271ee6186d678b6 GIT binary patch literal 164 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7vOQfKLo9lao>?f!qA0*{ z@Zo1A`KB8R6IdLCD&DYdlue@N7FVdQ&MBb@04jnxegFUf literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rod_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..9063b94be01a0f1c42e8a03426301de743106082 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7LOop^Lo9l)UUKAf5ae;a zc)U&LSvSrJ>MY8L@zM6XIK*qj;hfVyE zv*PzwEp?dqEcf=d&`C>w9%|*bTauOL`0UIK!(`(rX(}hbF|snW=;TQX-~E1-fq{X+ M)78&qol`;+0E@{&tN;K2 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor.png new file mode 100644 index 0000000000000000000000000000000000000000..12733d7d4a061b5c347c6d6ecdd9f90f738fce02 GIT binary patch literal 301 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7zIeJghFJ6-4LUfnMM2=r zUL%$>j?D%fO$$yf&(EI6l6dvm0>=ct3Cweuzu#!Sdiil(`RAsEFJI;{{M#*eUs`Dr zgM%h3!;EDwn|@AoaJgi_6X3P*ef65xT$4g4_3u{mJR)&=SJ>IYX9o=j{?d;gT}ERl>KxQbTBzS1U-*QSUh(S z^3rS(@Kf>aWvF1C=B!-#Q#`b3z30mt(bJZ$`t|;`u-&vq@uC8?9SjT%44$rjF6*2U FngF@&dpiIC literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..d567d4eb277ddf563f2ebeb7fe3be220caaa5b2e GIT binary patch literal 181 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7YCK&WLo9la208LIDDd3w z`QIr2F|{&quR&_D&zA+h9%8%9w0mCUZ`jMQK>Ej}MH^TiJ(6r=V~bvqv!mCcj$|HC)x36YXUXF0Vd0kq62mdKI;Vst0L2+dO8@`> literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/rotor_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..d6bfa4c80a32dc59e09a598c5f4a0b4cd12238f5 GIT binary patch literal 331 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7g*;sxLo9laPBP4EF%WRA zU$mErSM;U0R^P@&?wOi3tV%PJCKR!W-&SKUV4OaKX^;4gEUp@kOGmVwBDUQ9cS^2$ z-?Lu34>^0+aJxKVQ0RNi%@7j$_1^|*!JUZ`ewR&DKie#Rz3W$vUH#jyd-6nGpX{($ zUd`72bZO=+o(Ao%M~AED8x-%HC-9@Y{6&#Go|#Q>uWMk*-fn}w$C)Q}lvZy2c5MH#n|B;D(w-R=Xf5SR z(_6cB{%*F@{Jxh{yjEKFJ@%HcKL0si(6e6r?~INUx}PtU#>!6H+gaex=tTu^IIr>(|vWyiuCebocy*uM7+f44$rjF6*2UngEszju8L= literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round.png new file mode 100644 index 0000000000000000000000000000000000000000..b85f9e9151616dd963d45897d0b0f50f8b25d32a GIT binary patch literal 175 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7$~;{hLo9mVPB0X7Hso=> z8mFjn;E+->gM`Nq7MC*zA5HMve_e6jzh7HVPP_k-$7a{s@NEX0eLp>~et-N;VMf~S zYhBzA-bG}~D$ZZS=s6{bfnm~vcgOEoGshekWb};G$v1e;;_2b!vZUcl=i04*-yfIA f{C3f|mho|w>f&9ep0_eEFfe$!`njxgN@xNAa?D3O literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..05589c8ccb1e7c66ea2e7f1363e4d11aa17504ce GIT binary patch literal 127 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7+&oP6~Sbm e=ws4iVA!&l-`aGG9S;Ko1B0ilpUXO@geCyRMJIXy literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/round_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..1c99631cd8ed8de620af395de560c34b4c48e479 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7nmk<`Lo9le6C_wgnB8K8 ze0_bVFIlog@9+;zP0fogvu|CwQu6ZZ>Ts_A|Np1|`2XMja4WZX&9gHzH;c@UQj2Np z=<2d-*tm4bl67+|i`BYRm?s?EoPNHf;N->!lXg^mT+}~h%9W|<=jXk&ss838KHX|g r&oC(E6&m4TtbLhH493ws~~0|SGntDnm{r-UW|PZvx# literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw.png new file mode 100644 index 0000000000000000000000000000000000000000..980f4e98a33554dfc2d62b6cb0728d87d23f1f5c GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7)_b}*hFJ98ov6rn*nr3N z|1#Ny?I%i$I=@v;L&3T4<0n-`+7mk*LQcuhWU}#syF><{N3JBGE42R zwBFJT&8H!sas&;Hf9-Sk{S-VQsL7D+3{Uo3$4^$wbBnXqwstTu^cV_Eto`>Su({Kt zJ(0n9@oTFVfp2#$`a+*^_ZeoLi`@JD)tv17h7ObGYhLfl>eQ{A6ij+muN+lNcBn7(8A5T-G@yGywo`@na?c literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/screw_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..b287140b2b33f3c83ba8df9c25a38bfb52eb29e3 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7l097i_z<#lOa+Qgu6KGFS4iQXK=KCML!9PLKe=iR$pf8baD%=Ufn z_3IC>;tD-FCnZ>^%W&JZTbCcHp0Rl{M>^D%W8vRzDc0=56NN77E#1P-kbI_A=D6C@ zk{_B0&lbMkrFHDawbH)=6JLKRJ}29qUj6>O%M#YD`4z9uTAHhVa6fcKQ^{O#r5N{| hVt)pW#_%HjkNY!{9oM@>FfcGMc)I$ztaD0e0s!LmT?haG literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c81adf0fbc924335aeacc6330677255a97b46b GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s79(lSrhFJ8TowTs1#Xz8K zfA(q%?rAojHfH=2XL_)mb#8d9`ynFf;*mwdva?scmeD;P8@f9yy=?#g`*$OMyxy_r z(v@wwr#{Ox>{=I}RQ6$8uI8~BNj)oH?<$F}uV!Pmc%Ctf z%6XE<1(%AP+xeNZZ_d_hEdm^hZ>sLgTZV_W3N)og7MxRTQ8;b1EHg=>?exL}XMa}h zz4YBSHBxD5$}F`O0s9AY59H6~&;O8-p8Zyl=f2!YiO*jRg1q*8U;e@GfW+h}K^5;A oH(XFVdQ&MBb@09vYjnE(I) literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..53d28ec2243ceccb724c02bd673c09171c848de5 GIT binary patch literal 152 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7;yqm)Lo9laPIBa95a40C z-u+|K^lPmFshKh+FI{)d&1Cu!`!LPJrApz&i9$zScZQXAPb)cj^{up&`6E{vbGzm3 zHMN+idDq#D&HoAS+)2F$6B64wD(w!6E@QjC|82GC6UX|bm$@CA85kHCJYD@<);T3K F0RVGsGn4=T literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d70dabc3d7da1eb3bda3f0dbaf1aa7e8636b8b GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7PIuzLAq_w(nEnD?(s zIIW(xEm7hg;{uJYH_FV$(V?yOxwr2vd*5yA-9~c-I O7(8A5T-G@yGywqQz-H?J literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small.png new file mode 100644 index 0000000000000000000000000000000000000000..a8975e21122978ddc9ea1cdb4533bf5f9130ad08 GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s74tTmahFJ7IooLwCY#`to zzv*QSdlg^ey9dq+g&g89Gh&qrIjY_zMBQ=few{g&Yl;Tn#cjLyOGbXHj+Z+8zhkSJ z<#V9}cJ-|Krzg3nSU#Wh-Oko~-Tj2Mrn$F`&Kn<-Na|@3=rgxZFNnQ9CAIVWJOL&z z&9=k^uXmkZnUMeP_q;_K7owDvdLI8^N@txvtGFO6AoOaiW^2bBvvk&Lw^$5(gbP0l+XkK DwmoMo literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..401a0972b204bcab5922200f0516913c41e759b9 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7LOfj@Lo9lqPCUqYz=4D1 zxJioV^?K3S_Z5%1%vX#QaFHo@{L!wWnE5^MI18IhM7ev^^8mTaJ_*yed|D`OE&gup t=F}ZAM%vE}Djo~hcuoi|`QTo{6mDIA(pg$@J_7>-gQu&X%Q~loCIE*?FGm0X literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/spring_small_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..71fc8e5e76bf4c6ca8e6ecb2bf93875d98bb6594 GIT binary patch literal 210 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7W_r3fhFJ7I?c2!fWXR*f ze~>})q5c7pEgRguqN4mC9-1^3UuTyL>HeNqZG{^07)a|PG{I%)NPOmm#u#q`le!sQe#hjg~`?LDCeJ2?h P7#KWV{an^LB{Ts5A<0FmZR^mqS+!J=_f*+(~N}L7d#WVvTo&O)3^WBws9zWe*GWvdTV)_joBaeU;DO~ zS1-?R|Gm#VwATBd(}Gnk0z3*W3C}q4A)F}4c%6)VlrTOF2gYW^iqoy z9>p7*bj;3g_Pv~P+2p3p`EBb~>z+<3jkS;6=;6HbV}Nt$=BQQei4V$l+iK2dxV25! z?Am;`w!{OL?mdEniSHHCKPVUqCeGefthYW?RPdl>y5|?wj$P|~T{;XO?PY&ZxBq#S z%yFMP+j0Znw6DLO9oB8g^kDD*IgVULvafdWg&wW;kDM0ymE$+hHUq(%tD>r=I3j literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..bdae8fcf8dda9bf36e5803ff7cd911d58d498852 GIT binary patch literal 170 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s73O!vMLo9mt21fH8P~g}c zcS5=F+1!r58(an0@=nf@2-@;AF}uED=HcD*Z0m$}vu*ZJN|n`1N>dY_K3S5--6gz^ z?b$SKh6NSoCrj>af7@=|kRHU!kgM=W@k@tG*ZVL&UY#p*4xGIkzanJIArb4-e_Di9 Y*0l(%`!3YRz`(%Z>FVdQ&MBb@09AlKA^-pY literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_buzz_saw_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..485a43548e564c0f0177d1788ac45e74b84761cc GIT binary patch literal 357 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7bv#`hLo9mt25A=^HV~+N z`-Mx%5|9V$x>~n^i*y}${d^rW* zGE^`a9P42SnD+GR(KByCMHO38B--8@@Z1(~TC^%4RA8c>h|5U^2bbNMvxEdadkx>K zM{6=fWZTav<}WvF7Z6ekQo1DIbgA^N;7HvoOF+2a)^SGrt$jc zUE)O@9y2TNe*as{qerjZsxg!~+_h=+!w(W7VoJ zB9C_5%!yNayW=3wq!Be_&nOefZq0wnBdf1_lOC LS3j3^P6dm8EyVAbo1eW_*YwJ^&1aod{;f$_J+~!^>Hcg_hPpM6UOF!o zF+9e=kbB#%OfdhpnE(CnQ+n5KOgTe~DWM4f$l`2| literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..4d2ba9f4d82396cf2a094de20bb561eb97e29bc1 GIT binary patch literal 151 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7;yhg(Lo9lqPCUrlV8Fxt zxYH^qJ^9k(%a=F;CpA?hp6qwA{4Kb7deAoki3x1exH1Y#SD$TfF$ie9bmw{MjXB;D z1|z;J0}1D literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_chainsaw_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..03bbe678f801d37724a2ea67dcb9e940da323b49 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s74tcsbhFJ7oow$+rkb!`! zy^!{j!l#TJlPj2SiEMZ3GMRVCHA>Cllg#uKMlJE_iayP%+-n{<9Q6#3*!TUuC;Oj> z_FInGZ`VwTVp#Bc*J-`(tz~_NN?$GduCGrNyjXeSqp%InVM&H-rB@YOgc(eHi}@9| z%x1K-@tu6~|GdQ9tGCYN1XaJU7QE;pa{0||(Mgu^mN%yabr-*THb*;Nf2OO8@n*$E zFZRCoewH<(BdIF?(3u=B1BRSKE8~1a12j|2zx@Bo;GMkVh`hC#Y_wIu^w_RBT7iLO1aa6qT zH2mc9#Y%nEDkm3)5BDyY$||;`6iL2)G(&@7*Sga`E9b3T)g__)dRN+HZbpa5X&oGj zEFn`X=NWTOaNlJr(YDZ|+gqhHmU+P{oztHx**%X*gop|%9_#on*RU;D^0?u3+kKyB zD(RNXxG&2*RolhFJ8Tow$+rkb!_} zeL$E;u_!ac)af3RSv4--FkZ04f^%cj>?s}h7F$R*oa$}oV3jdabSx>jT6_Ed>${Ra zN>eWxY@WU^_x9cGjFnommI*HYZV^UWpr1`tp3i75#&SO~c zdRH+=;%=8I{`{*}S&6t7iWbLS|K0K~cgysKF2ax$Fo*v#m}$WW|uE$VwAyKvXMjy8$Mw=Bz9-r1-0NIs3-CZcd(U1U>C z@|ldawZFtTgSajRe|BeLxDeI9a^9@}i}Tp?a>8Tc3cMK@7#KWV{an^LB{Ts5r5GCSa(ujqJ)z75?^0mf8W=u9Ztm-`puf-{lWMed&RD0+GkZ#=cO|^ za6FvE>Z!TZBiq-*%f3GI<0c)0V+zlEqF(O^=4CJ_@Zx;E>(zC2&9$Zj6i-|IDeO$-bS44$rjF6*2UngHprS?d4* literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_screwdriver_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..ef831b9ccd0eb88cc75f8c0f9c3e17bba8668a78 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7B0OCjLo9le6C^SYcyvAb z|Np2bdQ7D@x{B*H y2=*?q63?^Q<>qAexP(!2Rv?dp>*WVb4AVaOaujMMoM&KQVDNPHb6Mw<&;$UG05jFhuMdW19nsdS1_|BOw`~hs5NR?-&N8up z6rD4lF5HlnmXgM@z;AMNwzl!@8L>7_d%uUen1%lR|K;JiGi4=ZlkXnM{3P(B=9+$u zt)PRi=3Up6;@wOumQGo%{w=ym;<0n+{B^VXW~_Qu^2WwDAyZhPUMJM&9L#>qA5-Hey4VxZRuFDRn5g@YeawVbk4TkAg?Jw1?O~+ z-_&$b*?MigT7RU+Imu%ZHC&a}iT+-h*6!K744YoZK0f38f2#VspI*=Bs(D2*FfcH9 My85}Sb4q9e03+K_g#Z8m literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/tool_head_wrench_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..f26a211aa800af45e70b092bdff9646e5b693955 GIT binary patch literal 137 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s70z6$DLo9le6C_F={Qv)7 zWo7!IMV9kKoFA|qFq!;XXvebu|Np;s&b-9yV8oIqpm?C;yn;w;&yA@@iK0grH)b$% q?BvK3Tsf<=RPv&p1S<~@LmHFu-}lzL{xL8xFnGH9xvXFVdQ&MBb@0Md~<0{{R3 literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade.png new file mode 100644 index 0000000000000000000000000000000000000000..46349c3c73c63e3d55450f1afedf68f65e69c372 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7E_=E-hFJ8jy?8pe)j+`E zVz#RHv}Np4&PBW#VxHpDG@9fZzopr0C&G}H~;_u literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/turbine_blade_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..74ffd68e7f8779fcb8a9cb0b9b5610aaf8206ec7 GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7x;$MRLo9mNPVyEyWWeJ* zU-I2#<)^3Kb{<)l8LOR@6hsBSiJudy*ch=!CgKWm;gy~l{O6tYGB|!BpS40AwzmgMn{O&l`K}T%+MXXn!<}3yj`2OwYvCC;1}5O z?C<${_CJCA`y1yJZ@%{HvmW#FJ9C~b%bdr!Aoq6Vc2S=TCcdV|(n`04FFuUEU}@gX zafw?|Lhzsg&-!aoj19BpW7L@#jHMX@yynihx#XX{+Ow5POz&&o?p+`Ji**m1nng>( zySC3atK*;VEslNjV3)SwTgHYCzS{fpyVvcu{H@nMHE6j>ek0=oiQ^ylYIN;fwaPrr z?DVERMSQW=Cyxwmr|1RbxJ&d%gl za&eG!=by2SGtDs3Oe5Z&VN~ZL7oB6;cLlhh|4?N-HYkW(KeS#=yY9;OXk;vd$@?2>>QYTa^F+ literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_overlay.png new file mode 100644 index 0000000000000000000000000000000000000000..8cc50d44b61b650d2c003f026906d538f8a663a5 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s77>k44ofy`glX=O&!0_JF z#WBR9_w1yLxkn6moacAxEYz9E6nA*0V*R|;vL_DQ75XOe#{Kbuk3awQ+q1C*Em4tX zcH)rAX0S}3eRX=Egwuh$=`m-eB8A%p7z)a>)`~Bja%k7O+DXyEvpb8=nP-=$$A)`p zGV~@h#M`d4JojN;U9Uj$o})GG_x@%v2qf>BX7O$TXXSPm22be^d*A=|e}8T1ta%^9 za(vm&9X>N}aloa-wEfrrs^(7W`+WCYTJVnQ%QD;!UY==b2ZAqM-1+DD8=)f-S9O1G zoU>VT>5|DdbGPbRKKEJs^()uk@U)`u&!VzTJ)^z9KDzcy`r__7v40F|_h;SZduVLI Qz`(%Z>FVdQ&MBb@03Dczm;e9( literal 0 HcmV?d00001 diff --git a/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png b/kubejs/assets/gtceu/textures/item/material_sets/chonky/wire_fine_secondary.png new file mode 100644 index 0000000000000000000000000000000000000000..de7589ef74e8055f72854296cc1c8d201c6ed8fc GIT binary patch literal 254 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7j(WN{hFJ8zow%2`*+8H* ze$g5S=ckMu%?kX7xH2^~CW&g?*~GwFJSTw7qx5KHhxcS>K1HDt%}*+)?W^9`s!RTO z?S5t3+bvh4uWw!UeX(qa=&D~cD?D9f1S=Uf{9UVX?8T);C7m6~&zfeQXE5M7d^JH` z`^2U<8<#|B8jDxXyZ?4?<}9HDOIAJ2QB%@adUu<}<;n5FJxdruk0yGmD$T!?^JUel zJn#2e2gO!uCH1U(y(_Ui!X<`d;r-8FH+P(97x;D8@v_uc&UwnMk3ai2eqmr>VDNPH Kb6Mw<&;$U+sBF~$ literal 0 HcmV?d00001 diff --git a/kubejs/startup_scripts/tfg/icon_sets.js b/kubejs/startup_scripts/tfg/icon_sets.js index 4730d201a..39e0c7b21 100644 --- a/kubejs/startup_scripts/tfg/icon_sets.js +++ b/kubejs/startup_scripts/tfg/icon_sets.js @@ -36,6 +36,9 @@ function registerTFGIconSets(event) { event.create('tfc_chromite').parent('dull') event.create('nether_quartz').parent('quartz') + + // Credits to Flare from the Cosmic Frontiers team + event.create('chonky').parent('shiny') } function modifyTFGIconSets(event) { @@ -88,7 +91,6 @@ function modifyTFGIconSets(event) { GTMaterials.BlackBronze.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Potin.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Cupronickel.setMaterialIconSet(GTMaterialIconSet.SHINY) - GTMaterials.Zirconium.setMaterialIconSet(GTMaterialIconSet.SHINY) GTMaterials.Aluminium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_silver')) GTMaterials.Asbestos.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) @@ -103,10 +105,9 @@ function modifyTFGIconSets(event) { GTMaterials.Galena.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_copper')) GTMaterials.Grossular.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_sapphire')) GTMaterials.Neodymium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_limonite')) - GTMaterials.Palladium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_pyrite')) + GTMaterials.Palladium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) GTMaterials.Platinum.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) GTMaterials.Thorium.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_hematite')) - GTMaterials.Naquadah.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_malachite')) GTMaterials.Goethite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_silver')) GTMaterials.Calcite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) GTMaterials.Cooperite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_gold')) @@ -136,4 +137,15 @@ function modifyTFGIconSets(event) { GTMaterials.Zeolite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_copper')) GTMaterials.Electrotine.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_garnierite')) GTMaterials.Bauxite.setMaterialIconSet(GTMaterialIconSet.getByName('tfc_borax')) + + GTMaterials.Naquadah.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.NaquadahEnriched.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.Naquadria.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.UraniumRhodiumDinaquadide.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.EnrichedNaquadahTriniumEuropiumDuranide.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.NaquadahAlloy.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.Neutronium.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + GTMaterials.RutheniumTriniumAmericiumNeutronate.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) + + GTMaterials.Zirconium.setMaterialIconSet(GTMaterialIconSet.getByName('chonky')) } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/materials.js b/kubejs/startup_scripts/tfg/materials.js index 0682eee71..b25ca13df 100644 --- a/kubejs/startup_scripts/tfg/materials.js +++ b/kubejs/startup_scripts/tfg/materials.js @@ -172,7 +172,7 @@ const registerTFGMaterials = (event) => { .ingot() .color(0xFADED2) .secondaryColor(0x4FA883) - .iconSet('shiny') + .iconSet('chonky') .components('1x zirconium', '2x boron') .flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_FOIL) From 9440b408782e55db327645b32c3980f73d718db7 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 01:05:29 +0000 Subject: [PATCH 21/26] tidied some quests, added a new one for ulv supers, langs --- .../quests/chapters/lv__low_voltage.snbt | 1 + .../quests/chapters/mv__medium_voltage.snbt | 6 +- .../quests/chapters/questsmetallurgy.snbt | 1 - .../quests/chapters/questssteam_age.snbt | 34 ++- .../quests/chapters/questsstoneage.snbt | 94 ++++---- kubejs/assets/gtceu/lang/en_us.json | 1 - kubejs/assets/gtceu/lang/zh_cn.json | 17 +- kubejs/assets/tfg/lang/en_us.json | 13 +- kubejs/assets/tfg/lang/ru_ru.json | 218 +++++++++--------- kubejs/assets/tfg/lang/zh_cn.json | 16 +- 10 files changed, 218 insertions(+), 183 deletions(-) diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index f36f38569..f6a83f0d4 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -1597,6 +1597,7 @@ { description: ["{quests.low_voltage.cupronickel_ingot.desc}"] id: "6042514C8FC54334" + shape: "diamond" subtitle: "{quests.low_voltage.cupronickel_ingot.subtitle}" tasks: [{ id: "701DEB748320107C" diff --git a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt index 3cfa63777..ce8de1cd5 100644 --- a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt +++ b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt @@ -39,6 +39,7 @@ "53DC6E32C41C94C3" "1A29EFBCEA017F99" ] + dependency_requirement: "one_completed" description: [ "{quests.medium_voltage.mv_biomass.desc.1}" "{@pagebreak}" @@ -782,7 +783,7 @@ id: "6C53B01A05FFF1DC" optional: true shape: "heart" - size: 2.0d + size: 1.0d subtitle: "{quests.medium_voltage.mv_tank.subtitle}" tasks: [{ id: "47EA273D728C158F" @@ -790,7 +791,7 @@ type: "item" }] title: "{quests.medium_voltage.mv_tank.title}" - x: -14.0d + x: -12.0d y: 10.0d } { @@ -1437,6 +1438,7 @@ description: ["{quests.medium_voltage.mv_seawater.desc}"] id: "45449ECE4F8128E7" optional: true + shape: "diamond" subtitle: "{quests.medium_voltage.mv_seawater.subtitle}" tasks: [{ id: "77395198DC98E3A5" diff --git a/config/ftbquests/quests/chapters/questsmetallurgy.snbt b/config/ftbquests/quests/chapters/questsmetallurgy.snbt index 99a9758b1..8f0d107a4 100644 --- a/config/ftbquests/quests/chapters/questsmetallurgy.snbt +++ b/config/ftbquests/quests/chapters/questsmetallurgy.snbt @@ -287,7 +287,6 @@ description: ["{quests.metal_age.bellows.desc}"] hide_dependency_lines: true id: "021D3DEEB15A3D17" - shape: "rsquare" subtitle: "{quests.metal_age.bellows.subtitle}" tasks: [{ id: "588EB07E980386F9" diff --git a/config/ftbquests/quests/chapters/questssteam_age.snbt b/config/ftbquests/quests/chapters/questssteam_age.snbt index 4c553582d..b4b4653b1 100644 --- a/config/ftbquests/quests/chapters/questssteam_age.snbt +++ b/config/ftbquests/quests/chapters/questssteam_age.snbt @@ -487,8 +487,8 @@ } ] title: "{quests.steam_age.miner.title}" - x: -7.0d - y: 14.0d + x: -12.0d + y: 15.0d } { dependencies: [ @@ -792,6 +792,7 @@ description: ["{quests.steam_age.coiling_machine.desc}"] id: "072F6E48A1C5ECE9" optional: true + size: 1.25d subtitle: "{quests.steam_age.coiling_machine.subtitle}" tasks: [{ id: "07B7D41ACDCD1DEA" @@ -799,8 +800,8 @@ type: "item" }] title: "{quests.steam_age.coiling_machine.title}" - x: -12.0d - y: 15.0d + x: -7.0d + y: 14.0d } { dependencies: ["2C35D4E01AEC02AA"] @@ -1654,6 +1655,7 @@ description: ["{quests.steam_age.fuel_sources.desc}"] icon: "createdeco:decal_fire" id: "753A53733C6DFA04" + shape: "circle" subtitle: "{quests.steam_age.fuel_sources.subtitle}" tasks: [{ id: "38A3F9A1D2F11EE3" @@ -1677,6 +1679,30 @@ x: -3.5d y: -2.0d } + { + dependencies: ["2C35D4E01AEC02AA"] + description: ["{quests.steam_age.supers.desc}"] + icon: "gtceu:ulv_super_chest" + id: "671405A9F3A8DFDB" + optional: true + shape: "heart" + subtitle: "{quests.steam_age.supers.subtitle}" + tasks: [{ + id: "5F5A6967B674C05A" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:ulv_super_chest)item(gtceu:lv_super_chest)item(gtceu:mv_super_chest)item(gtceu:hv_super_chest)item(gtceu:ev_super_chest)item(gtceu:iv_quantum_chest)item(gtceu:luv_quantum_chest)item(gtceu:zpm_quantum_chest)item(gtceu:uv_quantum_chest)item(gtceu:uhv_quantum_chest)item(gtceu:ulv_super_tank)item(gtceu:lv_super_tank)item(gtceu:mv_super_tank)item(gtceu:hv_super_tank)item(gtceu:ev_super_tank)item(gtceu:iv_quantum_tank)item(gtceu:luv_quantum_tank)item(gtceu:zpm_quantum_tank)item(gtceu:uv_quantum_tank)item(gtceu:uhv_quantum_tank))" + } + } + title: "{quests.steam_age.supers.task}" + type: "item" + }] + title: "{quests.steam_age.supers.title}" + x: -12.0d + y: 13.0d + } ] subtitle: ["{quests.steam_age.subtitle}"] title: "{quests.steam_age}" diff --git a/config/ftbquests/quests/chapters/questsstoneage.snbt b/config/ftbquests/quests/chapters/questsstoneage.snbt index a8ebfefce..9c7ebc5ef 100644 --- a/config/ftbquests/quests/chapters/questsstoneage.snbt +++ b/config/ftbquests/quests/chapters/questsstoneage.snbt @@ -8,15 +8,7 @@ images: [ { height: 1.0d - image: "tfc:item/grass_block_top" - rotation: 0.0d - width: 1.0d - x: -3.0d - y: 10.5d - } - { - height: 1.0d - image: "minecraft:block/blue_ice" + image: "ad_astra:textures/gui/sprites/snowflake.png" rotation: 0.0d width: 1.0d x: -6.0d @@ -24,36 +16,33 @@ } { height: 1.0d - image: "minecraft:block/lava_still" + image: "ad_astra:textures/gui/sprites/fire.png" rotation: 0.0d width: 1.0d x: 0.0d y: 10.5d } + { + height: 1.0d + image: "tfc:textures/gui/book/icons/thermometer.png" + rotation: 0.0d + width: 1.0d + x: -3.0d + y: 10.5d + } ] order_index: 0 - quest_links: [ - { - id: "409385C6F6640BEA" - linked_quest: "427814F6E9386772" - shape: "gear" - size: 4.0d - x: 0.0d - y: 0.0d - } - { - disable_toast: true - id: "40D0029A2097C68F" - linked_quest: "3D7B0F3134C30364" - shape: "octagon" - size: 3.0d - x: 4.5d - y: 0.0d - } - ] + quest_links: [{ + id: "409385C6F6640BEA" + linked_quest: "427814F6E9386772" + shape: "gear" + size: 4.0d + x: 4.0d + y: 0.0d + }] quests: [ { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: [ "{quests.stone_age.find_rock.desc}" "{@pagebreak}" @@ -82,10 +71,11 @@ y: 0.0d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.find_potable_water.desc}"] icon: "createdeco:decal_fluid" id: "1D40CAE675C4BB91" + shape: "circle" size: 1.0d subtitle: "{quests.stone_age.find_potable_water.subtitle}" tasks: [{ @@ -96,7 +86,7 @@ type: "gamestage" }] title: "{quests.stone_age.find_potable_water.title}" - x: 4.5d + x: 4.0d y: 6.0d } { @@ -434,7 +424,7 @@ type: "item" }] title: "{quests.stone_age.water_jug.title}" - x: 7.0d + x: 6.5d y: 6.0d } { @@ -509,7 +499,7 @@ type: "item" }] title: "{quests.stone_age.leather_flask.title}" - x: 1.5d + x: 1.0d y: 6.0d } { @@ -540,7 +530,7 @@ type: "item" }] title: "{quests.stone_age.iron_flask.title}" - x: 2.5d + x: 2.0d y: 8.0d } { @@ -549,6 +539,7 @@ guide_page: "tfc:field_guide tfc:getting_started/pottery" hide_dependency_lines: true id: "021921B4D2044B3B" + shape: "diamond" subtitle: "{quests.stone_age.find_clay.subtitle}" tasks: [ { @@ -601,7 +592,6 @@ guide_page: "tfc:field_guide tfc:getting_started/finding_ores" hide_dependency_lines: true id: "669F84C6A2A64145" - shape: "diamond" subtitle: "{quests.stone_age.native_ores.subtitle}" tasks: [{ id: "0B70FD35D2C27E4C" @@ -1386,7 +1376,7 @@ guide_page: "tfc:field_guide tfc:mechanics/support_beams" icon: "createdeco:decal_warning" id: "618090A6D0D3B2F1" - shape: "diamond" + shape: "circle" size: 1.0d subtitle: "{quests.stone_age.hazards.subtitle}" tasks: [{ @@ -1399,7 +1389,7 @@ y: 10.5d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.foods.desc}"] id: "0FB8FD84B13F10C6" subtitle: "{quests.stone_age.foods.subtitle}" @@ -1416,7 +1406,7 @@ type: "item" }] title: "{quests.stone_age.foods.title}" - x: 4.5d + x: 4.0d y: -5.0d } { @@ -1495,6 +1485,7 @@ guide_page: "tfc:field_guide tfc:getting_started/food_and_water 5" icon: "minecraft:apple" id: "749B3C8698D34E91" + shape: "circle" size: 1.5d subtitle: "{quests.stone_age.nutrition.subtitle}" tasks: [{ @@ -1502,7 +1493,7 @@ type: "checkmark" }] title: "{quests.stone_age.nutrition.title}" - x: 3.0d + x: 2.5d y: -5.0d } { @@ -1666,7 +1657,7 @@ type: "item" }] title: "{quests.stone_age.leather.title}" - x: 1.5d + x: 1.0d y: 13.5d } { @@ -1688,28 +1679,37 @@ type: "checkmark" }] title: "{quests.stone_age.hydration.title}" - x: 6.0d + x: 5.5d y: 4.5d } { - dependencies: ["3D7B0F3134C30364"] + dependencies: ["427814F6E9386772"] description: ["{quests.stone_age.temperature.desc}"] icon: "minecraft:sunflower" id: "38839D3E049215CE" + shape: "circle" subtitle: "{quests.stone_age.temperature.subtitle}" tasks: [{ id: "5EF087A092F21202" type: "checkmark" }] title: "{quests.stone_age.temperature.title}" - x: 1.0d + x: 0.5d y: 3.0d } { dependencies: ["38839D3E049215CE"] description: ["{quests.stone_age.insulation.desc}"] + icon: { + Count: 1 + id: "tfcambiental:straw_hat" + tag: { + Damage: 0 + } + } id: "4521BB8892B386AF" - size: 2.0d + shape: "circle" + size: 1.5d subtitle: "{quests.stone_age.insulation.subtitle}" tasks: [{ id: "139FA72AB6F06E57" @@ -1834,7 +1834,7 @@ type: "item" }] title: "{quests.stone_age.glass_bottles.title}" - x: 6.5d + x: 6.0d y: 8.0d } { @@ -1848,7 +1848,7 @@ type: "checkmark" }] title: "{quests.stone_age.water_bucket.title}" - x: 4.5d + x: 4.0d y: 9.0d } { diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index e63bcdcd5..cf0d3534c 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -132,7 +132,6 @@ "material.gtceu.damascus_steel": "Swine-steel", "material.gtceu.air": "Earth Air", "material.gtceu.liquid_air": "Liquid Earth Air", - "material.gtceu.fish_oil": "Fish Oil", "material.gtceu.cooperite": "Cooperite", "material.gtceu.armalcolite": "Armalcolite", "material.gtceu.desh": "Desh", diff --git a/kubejs/assets/gtceu/lang/zh_cn.json b/kubejs/assets/gtceu/lang/zh_cn.json index 3394f3270..851079756 100644 --- a/kubejs/assets/gtceu/lang/zh_cn.json +++ b/kubejs/assets/gtceu/lang/zh_cn.json @@ -13,8 +13,8 @@ "block.gtceu.evaporation_tower": "蒸发塔", "block.gtceu.ostrum_harvester": "紫金采集器", "block.gtceu.moon_dust_harvester": "月壤采集器", - "block.gtceu.coal_liquefaction_tower": "煤炭液化塔", "block.tfg.ostrum_linear_accelerator": "紫金线性加速器", + "block.gtceu.coal_liquefaction_tower": "煤炭液化塔", "block.gtceu.ulv_super_tank": "基础超级缸", "block.gtceu.ulv_super_chest": "基础超级箱", "block.gtceu.ulv_hermetic_casing": "基础密封机械方块", @@ -63,6 +63,8 @@ "gtceu.tooltip.machine.nuclear_fuel_factory_2": "§7将原始放射性材料加工成裂变燃料§r", "gtceu.tooltip.machine.steam_bloomery_1": "§7用蒸汽动力升级你的锻铁炉!§r", "gtceu.tooltip.machine.steam_bloomery_2": "§7将含铁矿粉或锭加工成生铁方坯。\n使用焦煤或无烟煤可倍增产量。\n支持最多8组配方并行处理,相应调整蒸汽需求。§r", + "gtceu.tooltip.machine.coal_liquefaction_tower_1": "§7碳素奶昔制造机§r", + "gtceu.tooltip.machine.coal_liquefaction_tower_2": "§7从碳质固体与杂酚油中提取气体燃料§r", "item.gtceu.tiny_wood_dust": "小撮软木浆", "item.gtceu.small_wood_dust": "小堆软木浆", "item.gtceu.wood_dust": "软木浆", @@ -130,14 +132,13 @@ "material.gtceu.damascus_steel": "猪灵钢", "material.gtceu.air": "地球空气", "material.gtceu.liquid_air": "液态地球空气", - "material.gtceu.fish_oil": "脂酸盐", "material.gtceu.cooperite": "硫铂矿", "material.gtceu.armalcolite": "阿姆阿尔柯尔矿", "material.gtceu.desh": "戴斯", "material.gtceu.ostrum": "紫金", "material.gtceu.calorite": "耐热金属", "material.gtceu.etrium": "埃忒恩", - "material.gtceu.tarkianite": "塔基安石", + "material.gtceu.tarkianite": "塔基安矿", "material.gtceu.aluminium_silicate": "硅酸铝", "material.gtceu.rocket_alloy_t1": "R型铝钢火箭合金", "material.gtceu.rocket_alloy_t2": "ASM 4914 钛合金火箭合金", @@ -204,7 +205,7 @@ "gtceu.jei.bedrock_fluid.heavy_ammoniacal_water": "火星重氨水", "gtceu.jei.bedrock_fluid.liquid_ice": "火星冰", "gtceu.recipe.category.ingot_molding": "压模", - "tagprefix.sword_head": "%s剑头", + "tagprefix.sword_head": "%s剑身", "tagprefix.pickaxe_head": "%s镐头", "tagprefix.shovel_head": "%s铲头", "tagprefix.axe_head": "%s斧头", @@ -214,13 +215,13 @@ "tagprefix.hammer_head": "%s锤头", "tagprefix.saw_head": "%s锯头", "tagprefix.knife_head": "%s刀头", - "tagprefix.butchery_knife_head": "%s屠刀头", + "tagprefix.butchery_knife_head": "%s屠宰刀头", "tagprefix.mining_hammer_head": "%s采矿锤头", "tagprefix.spade_head": "%s锹头", "tagprefix.double_ingot": "%s双锭", - "tagprefix.poor_raw": "贫瘠%s原矿", - "tagprefix.rich_raw": "富集%s原矿", - "tagprefix.dusty_raw": "积尘%s原矿", + "tagprefix.poor_raw": "贫瘠粗%s", + "tagprefix.rich_raw": "富集粗%s", + "tagprefix.dusty_raw": "积尘粗%s", "tagprefix.gabbro": "辉长岩%s矿石", "tagprefix.shale": "页岩%s矿石", "tagprefix.claystone": "黏土岩%s矿石", diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index 14b27bc2f..db0d40ce6 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -1162,7 +1162,7 @@ "material.tfg.aromatic_feedstock": "Aromatic Feedstock", "material.tfg.reformed_aromatic_feedstock": "Reformed Aromatic Feedstock", "material.tfg.reformate_gas": "Reformate Gas", - "material.tfg.cracker_off_gas": "Cracked Off-Gas", + "material.tfg.cracker_off_gas": "Cracked Reformate Off-Gas", "ore_vein.tfg.deep_sheldonite": "Cooperite & Bornite", "ore_vein.tfg.deep_garnet_amethyst": "Amethyst & Garnet", "ore_vein.tfg.deep_garnet_opal": "Opal & Garnet", @@ -2907,9 +2907,6 @@ "quests.medium_voltage.mv_polyethylene.title": "Polyethylene", "quests.medium_voltage.mv_polyethylene.subtitle": "Baby's first polymer!", "quests.medium_voltage.mv_polyethylene.desc": "If you want to be less fancy, just call it plastic.\n\nFor the polymerization process, add &aOxygen&r, which gives better returns than Air, then solidify like you would with Rubber.\n\n&aPolyethylene (PE)&r is the key to unlocking &6many new things&r. It's commonly used as &dSheets&r, or in &dFluid&r form.\n\n&l&3Lore:&r&o The OreDict and fluid name for Polyethylene in 1.12.2 GTCEu was &bplastic&f, for cross-mod compatibility.", - "quests.medium_voltage.mv_tank.title": "Super Tank", - "quests.medium_voltage.mv_tank.subtitle": "Super Tanks are OP!", - "quests.medium_voltage.mv_tank.desc": "No, but seriously.\n\nThis is the &cu&6l&et&ai&bm&9a&5t&4e&r portable Fluid storage solution. &64,000 buckets of storage&r - in one single block without any regards to temperature or acidity!\n\nLike Drums, Super Tanks &6keep their fluids when broken&r, and can be cleared in the crafting grid.\n\nIf you hunger for &9even more&r storage, take a look at higher tier Super Tanks or AE2 Fluid Storage Cells.", "quests.medium_voltage.mv_pvc.title": "Polyvinyl Chloride", "quests.medium_voltage.mv_pvc.subtitle": "You've already made one polymer, what's two?", "quests.medium_voltage.mv_pvc.desc": "&aPolyvinyl Chloride (PVC)&r is the 3rd-most produced plastic in real life. Here in CEu, it can be substituted for Polyethylene in the production of &aPlastic Circuit Boards&r and other items to increase the yield. It is required from &5EV&r onwards to wrap Cables.\n\nPVC item pipes also have the &6highest throughput&r available for a while, but most of your setups right now won't need such speed. Still, it's good to keep this knowledge in your pocket.\n\n&9Pro tip:&r The fluid form of PVC is never used in base GTCEu, so feel free to solidify all of it into sheets.", @@ -3660,6 +3657,10 @@ "quests.steam_age.steel_mech_press.subtitle": "Almost a Forge Hammer", "quests.steam_age.steel_mech_press.desc.1": "The High Pressure Steam Forge Hammer is right around the corner and can do almost everything that this machine can do, but if you're desperate for some higher tier automatic welding recipes, this is your ticket.\n\nIf you're unfamiliar with the Forge Hammer, both it and the Steel Mechanical Press can crush ores (without byproducts), turn rock into cobble into gravel into sand, and crack bricks. However, only the Forge Hammer can provide a &3cheaper recipe for metal plates&r...", "quests.steam_age.steel_mech_press.desc.2": "&l&3Lore:&r&o The Create Mechanical Press used to be a key piece of late steam age progression prior to version 0.9 of TerraFirmaGreg, because it produced plates at an even better ratio of 5 to 4. However, its implementation was actually \"20 percent of the time, you get nothing\", which caused many people to proclaim how much they loved gambling while using it.", + "quests.steam_age.supers.title": "Super Chests and Super Drums", + "quests.steam_age.supers.subtitle": "Super Storage Drawers", + "quests.steam_age.supers.desc": "This is the &cu&6l&et&ai&bm&9a&5t&4e&r portable item and storage solution if you have a lot of single items or fluids. While these &dBasic&r (&8ULV&r) ones start out relatively small, higher tiers of Super chests and drums can hold an insane amount of stuff - all in one single block without any regards to temperature or acidity!\n\nLike Drums, Super Tanks and Chests &6keep their contents when broken&r, can be cleared in the crafting grid, and can automatically void any overflow.\n\nIf you hunger for &9even more&r storage, take a look at higher tier Quantum Chests and Tanks or AE2 Storage Cells.", + "quests.steam_age.supers.task": "Any super chest or tank", "quests.stone_age": "Stone Age", "quests.stone_age.subtitle": "Humble Beginnings", "quests.stone_age.foods.title": "Hungry?", @@ -4224,8 +4225,8 @@ "quests.tfg_tips.glider.subtitle": "This is not Breath of the Wild", "quests.tfg_tips.glider.desc": "A &dHang Glider&r can be used to glide along the air. You &ccannot gain altitude&r with this but it can be useful to traverse long distances if you jump from high up.\nGreat synergy with &bJetpacks&r though!", "quests.tfg_tips.reinforced_glider.title": "Reinforced Glider", - "quests.tfg_tips.reinforced_glider.subtitle": "Elytra well spent...?", - "quests.tfg_tips.reinforced_glider.desc": "If you combine an &aElytra&r, made in &6HV&r, with a &aHang Glider&r, you'll obtain a &dReinforced Glider.&r It has greater durability and a higher velocity ceiling.", + "quests.tfg_tips.reinforced_glider.subtitle": "Light as a feather!", + "quests.tfg_tips.reinforced_glider.desc": "A &dReinforced Hang Glider&r is the improved version of a &aHang Glider&r. With an upgraded &aAluminium&r frame and a fabric made of either &aReinforced Fabric&r or &aLightweight Cloth&r, you can now soar through the skies at &cdouble the speed&r!\nIt also has &cmore durability&r than the normal hang glider, and can be &crepaired&r in an assembler.\n\n&3Pro tip:&r\nUsing either &aSilk Cloth&r or &aPhantom Silk&r obtained in the &4Beneath&r reduces the fabric cost by &e2/3rds&r for both crafting and repairing!\nOnce you enter &6HV&r, you can also use &aPolycaprolactam Fabric&r as one of the fabrics with a reduced cost.", "quests.tfg_tips.immersive_aircraft.title": "Immersive Aircraft", "quests.tfg_tips.immersive_aircraft.subtitle": "Fly across the skies, with style.", "quests.tfg_tips.immersive_aircraft.desc": "&2Immersive Aircraft&r is a mod all about aircrafts, allowing traversing large distances in the skies.", diff --git a/kubejs/assets/tfg/lang/ru_ru.json b/kubejs/assets/tfg/lang/ru_ru.json index 8bb890f33..0417d1fa0 100644 --- a/kubejs/assets/tfg/lang/ru_ru.json +++ b/kubejs/assets/tfg/lang/ru_ru.json @@ -3032,115 +3032,115 @@ "quests.metal_age.this_is_a_bucket.desc": "Поздравляем с созданием ведра. Век металлургии официально завершен.\n\nТеперь можешь приступать к созданию компонентов низкого напряжения!", "quests.ore_proc": "Переработка руд", "quests.ore_proc.subtitle": "Всё, что вам нужно, чтобы получать по максимуму от ваших руд", - "quests.ore_proc.native_ore.title": "Welcome to Ore Processing", - "quests.ore_proc.native_ore.subtitle": "To Process, Ore Not To Process", - "quests.ore_proc.native_ore.desc": "An important part of &6GregTech&r is its &dOre Processing Mechanics&r, but it can get pretty complicated, so this chapter is here to help!\n\nTo start with, you should be aware of the &6Ore Processing Diagram&r tab in EMI - Press the Show Uses key (default &bU&r) on any item related to ore processing and look for the tab with the vanilla Iron Ore icon. This diagram may look overwhelming at first, but we'll take it step by step.\n\nA major part of GregTech philosophy is that there's not just one way to solve a problem, but we've marked everything important with a &estar&r, so if you're completely lost, try following those!", - "quests.ore_proc.native_ore.task": "I agree to not just dump everything in a furnace", - "quests.ore_proc.robot_arm.title": "Ore processing with GregTech's own tools", - "quests.ore_proc.robot_arm.subtitle": "Providing answers to its own problems", - "quests.ore_proc.robot_arm.desc": "GregTech comes with its own tools to help solve ore processing logistics.\n\nThe &6Robot Arm&r can move precice numbers of items into a machine, such as only moving flawed gems into a Laser Engraver once you have two of them. The &6Tag Filter&r can filter items by tag, such as '&5*purified_ores*&r' to match all Purified Ores.\n\nThe &4Smart Filter&r can filter items depending on their &6recipe&r. For example, if you use it with a robot arm on an electrolyzer, and set the robot arm to supply exact, it will only move your dusts into the electrolyzer once it has as many inputs as the recipe requires!", - "quests.ore_proc.ae2.title": "Ore processing with Applied Energistics 2", - "quests.ore_proc.ae2.subtitle": "A tag storage bus? What's that?", - "quests.ore_proc.ae2.desc": "AE2 is great at moving items around without tons of spaghetti cables! You can use the &dTag Storage Bus&r to tell your network where to put items that match an item's tag, which you can view by pressing F3 + H. For example, if you want to send all your Purified Ores to a chest, slap a Tag Storage Bus on it and set its filter to '&5*purified_ores*&r'.\n\nThere's many online guides on how to set up an AE2 system, but a subnet to handle all ore processing before it goes into your main storage is a solid choice!", - "quests.ore_proc.gtcy.title": "Ore processing but bigger", - "quests.ore_proc.gtcy.subtitle": "When size does matter", - "quests.ore_proc.gtcy.desc": "Once you get to IV, you'll gain access to multiblock versions of all of GregTech's single block machines. They do the exact same recipes as their single block cousins, but are more flexible - you can put lots of huge Input Buses on them, you can overclock them with higher tier &6Energy Hatches&r instead of making new ones every tier, and they even support &6Parallel Hatches&r to do multiple recipes simultaneously!\n\nAll of these machines require alloys created with the &bAlloy Blast Smelter&r, found at the end of &dEV&r.", - "quests.ore_proc.copper_tier.title": "Copper Age Ore Processing", - "quests.ore_proc.copper_tier.desc": "This row is for the very basics of ore processing. There's no byproducts and no automation.", - "quests.ore_proc.bronze_tier.title": "Bronze Age Ore Processing", - "quests.ore_proc.bronze_tier.desc": "This row is for what's available once you've obtained any Bronze Anvil.", - "quests.ore_proc.steel_tier.title": "Steel Age Ore Processing", - "quests.ore_proc.steel_tier.desc": "A Steel Anvil unlocks your first byproducts from ore washing.", - "quests.ore_proc.steam_tier.title": "Steam Age Ore Processing", - "quests.ore_proc.steam_tier.desc": "Steam machines give access to your second byproducts from centrifuging.", - "quests.ore_proc.lv_tier.title": "&7LV&r Ore Processing", - "quests.ore_proc.lv_tier.desc": "LV comes with a ton of machines that can process your ores in many different ways. The most important is probably the Thermal Centrifuge.", - "quests.ore_proc.mv_tier.title": "&bMV&r Ore Processing", - "quests.ore_proc.mv_tier.desc": "Not much happens at MV except that the electrolyzer becomes much more powerful.", - "quests.ore_proc.hv_tier.title": "&6HV&r Ore Processing", - "quests.ore_proc.hv_tier.desc": "HV Macerators now output byproducts! If you don't have a dedicated ore processing setup yet, now is definitely the time to build one.", - "quests.ore_proc.ev_tier.title": "&5EV&r Ore Processing", - "quests.ore_proc.ev_tier.desc": "EV is the first tier where you'll need to need to start splitting up your ore processing into different \"lines\".", - "quests.ore_proc.iv_tier.title": "&9IV&r Ore Processing", - "quests.ore_proc.iv_tier.desc": "With IV comes the big huge multiblocks to really ramp up your ore processing speeds.", - "quests.ore_proc.luv_tier.title": "&dLuV&r Ore Processing", - "quests.ore_proc.luv_tier.desc": "LuV's Naquadah line will be a real test of your ore processing. Can your machines keep up?", - "quests.ore_proc.raw_ore.title": "Raw Ore", - "quests.ore_proc.raw_ore.desc": "This column shows ways to process raw ore, the first step of ore processing!", - "quests.ore_proc.crushed_ore.title": "Crushed Ore", - "quests.ore_proc.crushed_ore.desc": "This column shows how to process crushed ore, which is almost always the second step.", - "quests.ore_proc.purified_ore.title": "Purified Ore", - "quests.ore_proc.purified_ore.desc": "This column shows what to do with your purified ore.", - "quests.ore_proc.refined_ore.title": "Refined Ore", - "quests.ore_proc.refined_ore.desc": "The only thing you can really do with refined ore is crush it.", - "quests.ore_proc.impure_dust.title": "Impure Dust", - "quests.ore_proc.impure_dust.desc": "Wash that dirty dust!", - "quests.ore_proc.purified_dust.title": "Purified Dust", - "quests.ore_proc.purified_dust.desc": "This column shows what you can do with your purified dust.", - "quests.ore_proc.dust_processed.title": "Your final dust", - "quests.ore_proc.dust_processed.subtitle": "Or is it?", - "quests.ore_proc.dust_processed.desc": "&6Dusts&r are the final form of almost every ore.\n\nFrom here, you can put it in a &cFurnace&r, send it to &estorage&r, or even start using it right away! Some dusts will require one last step before they become truly useful.\n\nRemember to keep your &6ore processing line&r in top shape! You'll want to keep expanding and upgrading it as you progress, so you can spend less time mining and more time gregging.", - "quests.ore_proc.macerator_byproduct.title": "Crushing with byproducts", - "quests.ore_proc.macerator_byproduct.subtitle": "I can get even more from my ores!", - "quests.ore_proc.macerator_byproduct.desc": "While looking at &bEMI&r, you've probably noticed that your &dMacerator&r or &dMillstone&r lists more &boutputs&r than what you're actually getting.\n\nGregTech doesn't communicate this very well, but these extra slots are only available in &6HV&r. Once you make it to that tier, the &6HV&r macerator becomes incredibly powerful, giving a huge amount of bonus byproducts from each ore.", - "quests.ore_proc.macerator_byproduct.task": "Either an HV Macerator or HS Crushing Wheels", - "quests.ore_proc.sodium_persulfate.title": "Bathe them in Sodium Persulfate", - "quests.ore_proc.sodium_persulfate.subtitle": "Not just for circuit board etching", - "quests.ore_proc.sodium_persulfate.desc": "Once you get to LV, you may be interested in using a &bChemical Bath&r with &dSodium persulfate&r to get some extra byproducts. Not all ores can be processed this way, but the ones that can, will get around a &670 percent&r chance of byproducts, compared to the &630 percent&r of the &bOre Washer&r.\n\nSodium persulfate can be a little annoying to mass produce, though if you want, &9Sea Water&r is a great starting point.\n\nThe quest on the left gives some examples that might be worth the investment.", - "quests.ore_proc.sodium_ores.title": "Sodium Persulfate bathing examples", - "quests.ore_proc.sodium_ores.subtitle": "A useful time saver", - "quests.ore_proc.sodium_ores.desc": "Here's some recommendations for Sodium Persulfate bathing:\n\n- &6Crushed Aluminium&r: for &dRutile&r (Titanium)\n\n- &6Crushed Bauxite&r: &dGallium&r\n\n- &6Crushed Cobalt&r: &dCobaltite&r for &dArsenic&r", - "quests.ore_proc.ore_washer.title": "Bathe them in Water", - "quests.ore_proc.ore_washer.subtitle": "The standard option for most ores", - "quests.ore_proc.ore_washer.desc": "Most ores don't need any fancy bathing setups, and running them through an &dOre Washer&r or &9Bulk Washing&r with an &dEncased Fan&r will suffice.\n\nIf you use the &bOre Washer&r, make sure to use &9Distilled Water&r to double the speed of the recipe.\n\nDon't have access to either of these yet? You can just throw your crushed ores into water to purify them, though this won't get you any byproducts.", - "quests.ore_proc.ore_washer.task": "Any Ore Washer", - "quests.ore_proc.mercury_ores.title": "Bathe them in Mercury", - "quests.ore_proc.mercury_ores.subtitle": "Don't stick your finger in it", - "quests.ore_proc.mercury_ores.desc": "Bathing certain ores in &dMercury&r can give some other useful byproducts. Not all ores can be processed this way, but the ones that can, will get around a &670 percent&r chance of byproducts, compared to the &630 percent&r of the &bOre Washer&r.\n\n&dMercury&r can be easily obtained from &cRedstone&r or &cCinnabar&r.\n\nThe quest on the right gives some examples are good to process in Mercury.", - "quests.ore_proc.mercury.title": "Mercury bathing examples", - "quests.ore_proc.mercury.subtitle": "Liquid metal bath time", - "quests.ore_proc.mercury.desc": "Here's some recommendations for Mercury bathing:\n\n- &6Crushed Platinum&r: &dPalladium&r\n\n- &6Crushed Cooperite&r: &dPalladium&r\n\n- &6Crushed Nickel&r: &dPlatinum&r\n\n- &6Crushed Gold&r: &dSilver&r", - "quests.ore_proc.indium.title": "The Indium Line", - "quests.ore_proc.indium.subtitle": "We say line, but really it's just a two step process", - "quests.ore_proc.indium.desc": "The &6Indium Line&r shouldn't be needed before &9IV&r, but it will require purified &bSphalerite&r and &bGalena&r.", - "quests.ore_proc.platline.title": "The Infamous Platline", - "quests.ore_proc.platline.subtitle": "GregTech players vs Mekanism players when they need Osmium:", - "quests.ore_proc.platline.desc": "The &6Platinum Line&r will be your first real challenge to process, providing you with essential platinum-group metals: &bPlatinum&r, &bPalladium&r, &bRuthenium&r, &bRhodium&r, &bIridium&r, and &bOsmium&r.\n\nWhile there's easier ways to obtain &bPlatinum&r and &bPalladium&r, this line will be &amandatory&r for accessing the others.\n\nThe Platline can be started at &6HV&r, but you won’t be able to complete it fully until later in &5EV&r.", - "quests.ore_proc.electro_separator.title": "Electromagnetic Separator", - "quests.ore_proc.electro_separator.subtitle": "Probably the least useful GregTech machine", - "quests.ore_proc.electro_separator.desc": "The &6Electromagnetic Separator&r can extract things like Iron and Gold from &dRefined Ores&r, which you can get by crushing your purified ones. For now, we recommend using it primarily for &dNaquadah&r. If you need more &aNeodymium&r, you can also process &dBastnasite&r.", - "quests.ore_proc.electro_separator.task": "Any Electromagnetic Separator", - "quests.ore_proc.macerator_separator.title": "The Macerator", - "quests.ore_proc.macerator_separator.subtitle": "(again)", - "quests.ore_proc.macerator_separator.desc": "The macerator can sometimes yield different byproducts from your Purified ores than other routes, but these are still locked to &6HV&r like every other macerator byproduct.", - "quests.ore_proc.macerator_separator.task": "Any Macerator", - "quests.ore_proc.thermal_centrifuge.title": "The Thermal Centrifuge", - "quests.ore_proc.thermal_centrifuge.subtitle": "The go-to for most purified ores", - "quests.ore_proc.thermal_centrifuge.desc": "For all your other Purified Ores that doesn't need special treatment, it's best to run them through the &dThermal Centrifuge&r. This machine can produce byproducts at a reliable rate, while only using electricity. It's quite slow, however, so we suggest making multiple machines.", - "quests.ore_proc.thermal_centrifuge.task": "Any Thermal Centrifuge", - "quests.ore_proc.sifter.title": "The Sifter", - "quests.ore_proc.sifter.subtitle": "The Skyblock Simulator", - "quests.ore_proc.sifter.desc": "The &6Sifter&r should be used for all your &aGems&r. It gives far more yield per ore than any other method, and is the only way to obtain Exquisite and Flawless gems before &6HV&r laser engraving.", - "quests.ore_proc.sifter.task": "Any Sifter", - "quests.ore_proc.centrifuge_sifter.title": "Centrifuging the dust", - "quests.ore_proc.centrifuge_sifter.subtitle": "Byproducts of byproducts", - "quests.ore_proc.centrifuge_sifter.desc": "The &6Sifter&r can output &6Purified Dust&r, which you can toss into a centrifuge for a few extra byproducts.", - "quests.ore_proc.centrifuge_sifter.task": "Any Centrifuge", - "quests.ore_proc.electrolyzer.title": "Further refinement", - "quests.ore_proc.electrolyzer.subtitle": "An encore for ore!", - "quests.ore_proc.electrolyzer.desc": "Certain &6Dusts&r have no direct use. For example, &2Tantalite&r must be processed in an &6Electrolyzer&r to extract the raw elements of &dTantalum&r and &dManganese&r.\n\nMost of these recipes will only be available with an &bMV Electrolyzer&r, so come back to this later!", - "quests.ore_proc.electrolyzer.task": "Any Electrolyzer", - "quests.ore_proc.packer.title": "The Packer", - "quests.ore_proc.packer.subtitle": "It's real fast", - "quests.ore_proc.packer.desc": "Back in the old days of GregTech, this little bad boy saw a lot of use—you used to get a ton of &6Small&r and &6Tiny Dusts&r from ore processing.\n\nNowadays, it's only really useful for automatic packing, such as &dRare Earth&r in a &6Centrifuge&r returning many &6Small Piles of Dust&r.\n\nDon't forget: a &eRobot Arm&r set to Supply Exact mode can be useful to avoid clogging the input slots.", - "quests.ore_proc.packer.task": "Any Packer", - "quests.ore_proc.bauxite.title": "The Bauxite Line", - "quests.ore_proc.bauxite.subtitle": "New to modern GregTech versions!", - "quests.ore_proc.bauxite.desc": "You &ocould&r just electrolyze all your Bauxite dust to get a measly 6 Aluminium and 1 Rutile per 15 Bauxite... Or you could try out the &6Bauxite Line&r!\n\nThis new processing line returns about 2x as much &bAluminium&r and 3x as much &4Rutile&r per Bauxite, while also giving you a bunch of Gallium, Iron, Neodymium, and Chromium for free!", - "quests.ore_proc.gem_slurry.title": "Gem Slurries", - "quests.ore_proc.gem_slurry.subtitle": "We... are the crystal—hblrlrlr", - "quests.ore_proc.gem_slurry.desc": "&6Gem Slurries&r are optional but short processing lines for Ruby, Sapphire, and Green Sapphire to squeeze a bit more resources out of them. Compared to electrolysis:\n\n- &cRuby Slurry&r returns almost 3x as much Aluminium and Chromium\n\n- &9Sapphire Slurry&r returns 2x as much Aluminium\n\n- &aGreen Sapphire Slurry&r returns 2x as much Aluminium and a little extra Beryllium\n\nAnd on top of that, they all have a small chance to return some extra Titanium, Iron, and Vanadium too!", - "quests.ore_proc.gem_slurry.task": "Any Gem Slurry Ore", + "quests.ore_proc.native_ore.title": "Добро пожаловать в переработку руды", + "quests.ore_proc.native_ore.subtitle": "Перерабатывать или не перерабатывать", + "quests.ore_proc.native_ore.desc": "Важной частью &6GregTech&r являются его &dМеханики Переработки Руды&r, но они могут оказаться довольно сложными, поэтому эта глава создана, чтобы помочь!\n\nДля начала стоит обратить внимание на вкладку &6Ore Processing Diagram&r в EMI — нажмите клавишу просмотра использований (по умолчанию &bU&r) на любом предмете, связанном с переработкой руды, и найдите вкладку с иконкой ванильной железной руды. На первый взгляд эта диаграмма может показаться перегруженной, но мы разберём всё шаг за шагом.\n\nБольшая часть философии GregTech заключается в том, что для решения проблемы существует не один путь, но мы отметили всё важное &eзвёздочкой&r, так что если вы полностью потерялись — попробуйте следовать этим отметкам!", + "quests.ore_proc.native_ore.task": "Я согласен не закидывать всё подряд в печь", + "quests.ore_proc.robot_arm.title": "Переработка руды с помощью инструментов GregTech", + "quests.ore_proc.robot_arm.subtitle": "Решая собственные проблемы собственными средствами", + "quests.ore_proc.robot_arm.desc": "GregTech поставляется с собственными инструментами, которые помогают решать логистику переработки руды.\n\n&6Роботизированный Манипулятор&r может перемещать точное количество предметов в машину — например, помещать в Лазерный Гравёр только повреждённые (flawed) драгоценные камни и только тогда, когда у вас есть ровно два.\n\n&6Тег-Фильтр&r позволяет фильтровать предметы по тегу, например '&5*purified_ores*&r', чтобы выбирать все очищенные руды.\n\n&4Умный Фильтр&r может фильтровать предметы в зависимости от их &6рецепта&r. Например, если использовать его вместе с роботизированной рукой на электролизёре и установить руке точную подачу (exact), она будет перемещать пыль (dusts) в электролизёр только тогда, когда их количество соответствует требованиям рецепта!", + "quests.ore_proc.ae2.title": "Переработка руды с Applied Energistics 2", + "quests.ore_proc.ae2.subtitle": "Шина хранения по тегам? Что это такое?", + "quests.ore_proc.ae2.desc": "AE2 отлично подходит для перемещения предметов без километров кабельной лапши! Вы можете использовать &dШину Храненения по Тегам&r, чтобы указать вашей сети, куда складывать предметы, соответствующие тегу выбранного предмета. Посмотреть его можно, нажав F3 + H. Например, если вы хотите отправлять все Очищенные Руды в сундук, просто установите на него Шину Храненения по Тегам и задайте фильтр '&5*purified_ores*&r'.\n\nСуществует множество онлайн-гайдов по настройке AE2, но отдельная подсеть (subnet) для обработки всей руды перед попаданием в ваше основное хранилище — очень хорошая идея!", + "quests.ore_proc.gtcy.title": "Переработка руды, но крупнее", + "quests.ore_proc.gtcy.subtitle": "Когда размер действительно имеет значение", + "quests.ore_proc.gtcy.desc": "Когда вы добираетесь до IV, вам открывается доступ к мультиблочным версиям всех одноблочных машин GregTech. Они выполняют те же рецепты, что и их одноблочные аналоги, но гораздо гибче — вы можете установить на них множество огромных Входных Люком, можете разгонять их с помощью Энергетических Входных Разъемов более высокого уровня, вместо создания новой машины на каждый тир, а также можете использовать &6Параллельные Разъемы&r для выполнения нескольких рецептов одновременно!\n\nВсе эти машины требуют сплавов, создаваемых в &bДоменной Печи для Сплавов&r, доступной в конце тира &dEV&r.", + "quests.ore_proc.copper_tier.title": "Переработка руд в Медной Эпохе", + "quests.ore_proc.copper_tier.desc": "Этот ряд описывает самые базовые способы переработки руды. Никаких побочных продуктов и никакой автоматизации.", + "quests.ore_proc.bronze_tier.title": "Переработка руд в Бронзовой Эпохе", + "quests.ore_proc.bronze_tier.desc": "Этот ряд посвящён тому, что становится доступно после получения любой Бронзовой Наковальни.", + "quests.ore_proc.steel_tier.title": "Переработка руд в Стальной Эпохе", + "quests.ore_proc.steel_tier.desc": "Стальная Наковальня открывает ваши первые побочные продукты от промывки руды.", + "quests.ore_proc.steam_tier.title": "Переработка руд в Паровой Эпохе", + "quests.ore_proc.steam_tier.desc": "Паровые машины дают доступ ко вторым побочным продуктам — от центрифугирования.", + "quests.ore_proc.lv_tier.title": "Переработка руд в &7LV&r", + "quests.ore_proc.lv_tier.desc": "LV приносит множество машин, способных перерабатывать руды различными способами. Самой важной, вероятно, является Термальная Центрифуга.", + "quests.ore_proc.mv_tier.title": "Переработка руд в &bMV&r", + "quests.ore_proc.mv_tier.desc": "На MV происходит немногое, кроме того, что электролизёр становится куда более мощным.", + "quests.ore_proc.hv_tier.title": "Переработка руд в &6HV&r", + "quests.ore_proc.hv_tier.desc": "HV Дробители теперь выдают побочные продукты! Если у вас всё ещё нет выделенной системы переработки руд, сейчас определённо самое время её построить.", + "quests.ore_proc.ev_tier.title": "Переработка руд в &5EV&r", + "quests.ore_proc.ev_tier.desc": "EV — первый тир, на котором вам потребуется разбивать переработку руды на разные «линии».", + "quests.ore_proc.iv_tier.title": "Переработка руд в &9IV&r", + "quests.ore_proc.iv_tier.desc": "На IV становятся доступны огромные мультиблоки, которые значительно ускорят переработку руд.", + "quests.ore_proc.luv_tier.title": "Переработка руд в &dLuV&r", + "quests.ore_proc.luv_tier.desc": "Линия Наквада уровня LuV станет настоящим испытанием вашей системы переработки руд. Справятся ли ваши машины?", + "quests.ore_proc.raw_ore.title": "Сырая Руда", + "quests.ore_proc.raw_ore.desc": "Этот столбец показывает способы обработки сырой руды — первый шаг переработки руд!", + "quests.ore_proc.crushed_ore.title": "Дроблённая Руда", + "quests.ore_proc.crushed_ore.desc": "Этот столбец показывает, как переработать дроблённую руду, что почти всегда является вторым шагом.", + "quests.ore_proc.purified_ore.title": "Очищенная Руда", + "quests.ore_proc.purified_ore.desc": "Этот столбец показывает, что можно сделать с очищенной рудой.", + "quests.ore_proc.refined_ore.title": "Обработанная Руда", + "quests.ore_proc.refined_ore.desc": "Единственное, что действительно можно сделать с обработанной рудой — это раздробить её.", + "quests.ore_proc.impure_dust.title": "Грязная кучка пыли", + "quests.ore_proc.impure_dust.desc": "Отмой эту грязную пыль!", + "quests.ore_proc.purified_dust.title": "Очищенная кучка пыли", + "quests.ore_proc.purified_dust.desc": "Этот столбец показывает, что можно сделать с очищенной пылью.", + "quests.ore_proc.dust_processed.title": "Ваша последняя пыль", + "quests.ore_proc.dust_processed.subtitle": "А может и нет?", + "quests.ore_proc.dust_processed.desc": "&6Кучки Пыли&r — это окончательная форма почти каждой руды.\n\nОтсюда вы можете отправить её в &cПечь&r, сложить в &eхранилище&r или даже начать использовать прямо сейчас! Некоторые пыли потребуют ещё одного последнего шага, прежде чем станут по-настоящему полезными.\n\nНе забывайте поддерживать свою &6линию переработки руд&r в идеальном состоянии! По мере развития вам захочется расширять и улучшать её, чтобы тратить меньше времени на шахтёрство и больше на грегтеччинг.", + "quests.ore_proc.macerator_byproduct.title": "Дробление с побочными продуктами", + "quests.ore_proc.macerator_byproduct.subtitle": "Можно выжать ещё больше из руды!", + "quests.ore_proc.macerator_byproduct.desc": "Просматривая &bEMI&r, вы, вероятно, заметили, что ваш &dИзмельчитель&r или &dЖернов&r показывают больше &bвыходов&r, чем вы фактически получаете.\n\nGregTech объясняет это не очень ясно, но эти дополнительные слоты доступны только на уровне &6HV&r. Когда вы достигнете этого тира, &6HV&r-измельчитель станет невероятно мощным, давая огромное количество бонусных побочных продуктов с каждой руды.", + "quests.ore_proc.macerator_byproduct.task": "Либо HV Измельчитель, либо HS Crushing Wheels", + "quests.ore_proc.sodium_persulfate.title": "Купание в персульфате натрия", + "quests.ore_proc.sodium_persulfate.subtitle": "Не только для травления плат", + "quests.ore_proc.sodium_persulfate.desc": "Когда вы доберётесь до LV, вас может заинтересовать использование &bХимической Ванны&r с &dПерсульфатом натрия&r, чтобы получить дополнительные побочные продукты. Не все руды можно обработать таким способом, но те, которые можно, дадут примерно &670 процентов&r шанса на побочку, по сравнению с &630 процентами&r у &bРудопромывочной Машиной&r.\n\nПерсульфат натрия может быть немного раздражающим в массовом производстве, но &9Морская Вода&r — отличный источник.\n\nКвест снизу приводит примеры, которые могут стоить вложений.", + "quests.ore_proc.sodium_ores.title": "Примеры купания в персульфате", + "quests.ore_proc.sodium_ores.subtitle": "Полезный способ сэкономить время", + "quests.ore_proc.sodium_ores.desc": "Вот несколько рекомендаций по купанию в персульфате натрия:\n\n- &6Дроблённый алюминий&r: для &dРутила&r (Титан)\n\n- &6Дроблённая бокситовая руда&r: &dГаллий&r\n\n- &6Дроблённый кобальт&r: &dКобальтит&r для &dМышьяка&r", + "quests.ore_proc.ore_washer.title": "Купание в воде", + "quests.ore_proc.ore_washer.subtitle": "Стандартный вариант для большинства руд", + "quests.ore_proc.ore_washer.desc": "Большинство руд не требуют никакой особой ванны — достаточно пропустить их через &dРудопромывочную Машину&r или использовать &9Массовое Мытьё&r с &dВентилятором в Корпусе&r.\n\nЕсли используете &bРудопромывочная Машина&r, убедитесь, что применяете &9Дистиллированную воду&r — она удваивает скорость рецепта.\n\nНет доступа ни к тому, ни к другому? Просто бросьте дроблёную руду в воду, чтобы очистить её — хотя побочных продуктов такой способ не даст.", + "quests.ore_proc.ore_washer.task": "Любая Рудопромывочная Машина", + "quests.ore_proc.mercury_ores.title": "Купание в ртути", + "quests.ore_proc.mercury_ores.subtitle": "Не суй туда палец", + "quests.ore_proc.mercury_ores.desc": "Купание некоторых руд в &dРтути&r может дать полезные побочные продукты. Не все руды можно обработать таким способом, но те, что можно, дадут примерно &670 процентов&r шанса на побочку, по сравнению с &630 процентами&r у &bРудопромывочной Машиной&r.\n\n&dРтуть&r легко получить из &cРедстоуна&r или &cКиновари&r.\n\nКвест снизу приводит хорошие примеры руд для обработки ртутью.", + "quests.ore_proc.mercury.title": "Примеры купания в ртути", + "quests.ore_proc.mercury.subtitle": "Время ванны с жидким металлом", + "quests.ore_proc.mercury.desc": "Вот несколько рекомендаций по купанию в ртути:\n\n- &6Дроблённая платиновая руда&r: &dПалладий&r\n\n- &6Дроблённая куперитовая руда&r: &dПалладий&r\n\n- &6Дроблённый никель&r: &dПлатина&r\n\n- &6Дроблённое золото&r: &dСеребро&r", + "quests.ore_proc.indium.title": "Линия Индия", + "quests.ore_proc.indium.subtitle": "Мы называем это линией, но на самом деле это всего два шага", + "quests.ore_proc.indium.desc": "&6Линия Индия&r вам, скорее всего, не понадобится до &9IV&r, но она потребует очищенные &bСфалерит&r и &bГалену&r.", + "quests.ore_proc.platline.title": "Та самая знаменитая Платиновая Линия", + "quests.ore_proc.platline.subtitle": "Игроки GregTech vs. игроки Mekanism, когда им нужен Осмий:", + "quests.ore_proc.platline.desc": "&6Платиновая Линия&r станет вашим первым серьёзным испытанием в переработке руды, обеспечивая доступ к важнейшим металлам платиновой группы: &bПлатина&r, &bПалладий&r, &bРутений&r, &bРодий&r, &bИридий&r и &bОсмий&r.\n\nХотя существуют способы проще получить &bПлатину&r и &bПалладий&r, эта линия будет &aобязательной&r для доступа ко всем остальным.\n\nНачать Платиновую Линию можно на &6HV&r, но полностью завершить её вы не сможете до более позднего &5EV&r.", + "quests.ore_proc.electro_separator.title": "Электромагнитный сепаратор", + "quests.ore_proc.electro_separator.subtitle": "Вероятно, самая бесполезная машина GregTech", + "quests.ore_proc.electro_separator.desc": "&6Электромагнитный сепаратор&r может извлекать железо и золото из &dОбработанных руд&r, которые вы получите дроблением очищенных руд. На данный момент мы рекомендуем использовать его в первую очередь для &dНаквады&r. Если вам нужно больше &aНеодима&r, можно также перерабатывать &dБастнезит&r.", + "quests.ore_proc.electro_separator.task": "Любой Электромагнитный Сепаратор", + "quests.ore_proc.macerator_separator.title": "Измельчитель", + "quests.ore_proc.macerator_separator.subtitle": "(снова)", + "quests.ore_proc.macerator_separator.desc": "Измельчитель иногда может давать другие побочные продукты из очищенных руд, чем другие маршруты, но всё это остаётся привязанным к уровню &6HV&r, как и любые другие побочные продукты измельчения.", + "quests.ore_proc.macerator_separator.task": "Любой Измельчитель", + "quests.ore_proc.thermal_centrifuge.title": "Термальная центрифуга", + "quests.ore_proc.thermal_centrifuge.subtitle": "Лучший вариант для большинства очищенных руд", + "quests.ore_proc.thermal_centrifuge.desc": "Для всех остальных Очищенных руд, которые не требуют особой обработки, лучше всего пропустить их через &dТермальную центрифугу&r. Эта машина производит побочные продукты с хорошей стабильностью, используя только электричество. Однако она довольно медленная, поэтому мы рекомендуем сделать несколько таких машин.", + "quests.ore_proc.thermal_centrifuge.task": "Любая Термальная центрифуга", + "quests.ore_proc.sifter.title": "Просеиватель", + "quests.ore_proc.sifter.subtitle": "Симулятор скайблока", + "quests.ore_proc.sifter.desc": "&6Просеиватель&r должен использоваться для всех ваших &aСамоцветов&r. Он даёт значительно больше выхода с одной руды, чем любые другие методы, и это единственный способ получить Непревзойдённые и Безупречные самоцветы до лазерной гравировки на &6HV&r.", + "quests.ore_proc.sifter.task": "Любой Просеиватель", + "quests.ore_proc.centrifuge_sifter.title": "Центрифугирование пыли", + "quests.ore_proc.centrifuge_sifter.subtitle": "Побочные продукты от побочных продуктов", + "quests.ore_proc.centrifuge_sifter.desc": "&6Просеиватель&r может выдавать &6Очищенную пыль&r, которую можно отправить в центрифугу, чтобы получить ещё немного побочных продуктов.", + "quests.ore_proc.centrifuge_sifter.task": "Любая Центрифуга", + "quests.ore_proc.electrolyzer.title": "Дальнейшая переработка", + "quests.ore_proc.electrolyzer.subtitle": "Анкор для руды!", + "quests.ore_proc.electrolyzer.desc": "Некоторые &6Кучки Пыли&r не имеют прямого применения. Например, &2Танталит&r нужно обработать в &6Электролизёре&r, чтобы извлечь сырьевые элементы &dТантала&r и &dМарганца&r.\n\nБольшинство этих рецептов будет доступно только с &bMV Электролизёром&r, так что возвращайтесь к этому позже!", + "quests.ore_proc.electrolyzer.task": "Любой Электролизёр", + "quests.ore_proc.packer.title": "Упаковщик", + "quests.ore_proc.packer.subtitle": "Он реально быстрый", + "quests.ore_proc.packer.desc": "В старые времена GregTech этот маленький парень использовался очень активно — из переработки руды получалось много &6Малых&r и &6Крошечных Кучек Пыли&r.\n\nСейчас он в основном полезен для автоматической упаковки, например, &dРедкоземельных&r элементов в &6Центрифуге&r, возвращая множество &6Малых Кучек Пыли&r.\n\nНе забывайте: &eРоботизированный Манипулятор&r в режиме Supply Exact может быть полезен, чтобы не забивать входные слоты.", + "quests.ore_proc.packer.task": "Любой Упаковщик", + "quests.ore_proc.bauxite.title": "Линия Бокситов", + "quests.ore_proc.bauxite.subtitle": "Новинка для современных версий GregTech!", + "quests.ore_proc.bauxite.desc": "Вы &oможете&r просто электролизовать всю вашу Бокситовую пыль, чтобы получить жалкие 6 алюминия и 1 рутил с 15 бокситов... Или вы можете попробовать &6Линию Бокситов&r!\n\nЭта новая линия переработки даёт примерно в 2 раза больше &bАлюминия&r и в 3 раза больше &4Рутила&r с каждого боксита, а также бесплатно даёт немного Галлия, Железа, Неодима и Хрома!", + "quests.ore_proc.gem_slurry.title": "Дроблённые Руды (Самоцветы)", + "quests.ore_proc.gem_slurry.subtitle": "Мы... кристаллы...", + "quests.ore_proc.gem_slurry.desc": "&6Дроблённые Самоцветы&r — это опциональные, но короткие линии переработки для Рубинов, Сапфиров и Зелёных Сапфиров, чтобы выжать немного больше ресурсов из них. В сравнении с электролизом:\n\n- &cДробленный Рубин&r даёт почти в 3 раза больше Алюминия и Хрома\n\n- &9Дробленный Сапфир&r даёт в 2 раза больше Алюминия\n\n- &aДробленный Зелёный Сапфир&r даёт в 2 раза больше Алюминия и немного Бериллия\n\nИ вдобавок, все они имеют небольшой шанс дать немного Титана, Железа и Ванадия!", + "quests.ore_proc.gem_slurry.task": "Любой Дробленный Самоцвет", "quests.space_survival": "Советы - Космическое выживание", "quests.space_survival.subtitle": "Единственное место, которое не было испорчено капитализмом... Космос!", "quests.space_survival.preparations.title": "Pre-Launch Preparations", diff --git a/kubejs/assets/tfg/lang/zh_cn.json b/kubejs/assets/tfg/lang/zh_cn.json index 3658b1b1c..4cd8a8005 100644 --- a/kubejs/assets/tfg/lang/zh_cn.json +++ b/kubejs/assets/tfg/lang/zh_cn.json @@ -1040,7 +1040,7 @@ "item.tfg.etching_diamond_tip": "蚀刻钻石钻头", "item.tfg.spade_head_extruder_mold": "模头(锹头)", "item.tfg.mining_hammer_head_extruder_mold": "模头(采矿锤头)", - "item.tfg.sword_head_extruder_mold": "模头(剑头)", + "item.tfg.sword_head_extruder_mold": "模头(剑身)", "item.tfg.pickaxe_head_extruder_mold": "模头(镐头)", "item.tfg.shovel_head_extruder_mold": "模头(铲头)", "item.tfg.axe_head_extruder_mold": "模头(斧头)", @@ -1251,6 +1251,12 @@ "material.tfg.zirconium_bromide": "溴化锆(IV)", "material.tfg.zirconium_diboride": "二硼化锆", "material.tfg.boron_carbide": "碳化硼", + "material.tfg.syngas": "合成气", + "material.tfg.raw_aromatic_mix": "粗芳香混合物", + "material.tfg.aromatic_feedstock": "芳香原料", + "material.tfg.reformed_aromatic_feedstock": "重整芳香原料", + "material.tfg.reformate_gas": "重整气", + "material.tfg.cracker_off_gas": "裂化重整尾气", "ore_vein.tfg.deep_sheldonite": "硫铂矿, 斑铜矿", "ore_vein.tfg.deep_garnet_amethyst": "紫水晶, 石榴石", "ore_vein.tfg.deep_garnet_opal": "蛋白石, 石榴石", @@ -1293,7 +1299,7 @@ "ore_vein.tfg.normal_sphalerite": "闪锌矿, 黄铁矿", "ore_vein.tfg.normal_spodumene": "锂辉石, 锂云母", "ore_vein.tfg.normal_sulfur": "硫, 黄铁矿", - "ore_vein.tfg.normal_tarkianite": "塔基安石, 油砂", + "ore_vein.tfg.normal_tarkianite": "塔基安矿, 油砂", "ore_vein.tfg.normal_tetrahedrite": "黝铜矿 (普通)", "ore_vein.tfg.surface_bismuthinite": "辉铋矿 (地表)", "ore_vein.tfg.surface_cassiterite": "锡石矿 (地表)", @@ -4148,7 +4154,7 @@ "quests.tfg_tips.grappling_hook.desc": "将2个&a黄麻绳&r与1个&b锻铁镐头&r组合,便可制作出&d抓钩&r!它是翻越崇山峻岭、探索巨洞深渊、纵横天地四方的理想工具。抓钩内置&e升级系统&r,可让你随心所欲地自由搭配与改造你的&d抓钩&r。", "quests.tfg_tips.grapple_repair.title": "抓钩警告", "quests.tfg_tips.grapple_repair.subtitle": "请阅读本说明,否则你日后可能会后悔!", - "quests.tfg_tips.grapple_repair.desc": "&d抓钩&r的所有&a升级&r数据都储存在物品的NBT标签内。这意味着若尝试使用&c另一个&r抓钩进行修复,&l&c将会永久损毁所有升级数据!&r\n\n正确修复方式:将你的&d抓钩&r与一些&b锻铁粉&r放入&3工作台&r进行修复。\n\n另外,在主世界与幽冥世界之间穿梭时切勿使用抓钩,这是非常危险的。", + "quests.tfg_tips.grapple_repair.desc": "&d抓钩&r的所有&a升级&r数据都储存在物品的NBT标签内。这意味着若尝试使用&c另一个&r抓钩进行修复,&l&c将会永久损毁所有升级数据!&r\n\n正确修复方式:将你的&d抓钩&r与一些&b锻铁粉&r放入&3工作台&r进行修复。\n\n另外,在主世界与幽冥之地之间穿梭时切勿使用抓钩,这是非常危险的。", "quests.tfg_tips.grapple_upgrades.title": "升级你的抓钩", "quests.tfg_tips.grapple_upgrades.subtitle": "当然是围绕TFG平衡过了!", "quests.tfg_tips.grapple_upgrades.desc.1": "升级&d抓钩&r需要通过&3工作台&r为其添加或移除物品。\n\n若想查看&d抓钩&r所有的可升级内容,可按&2EMI&r的\"用途\"键。\n每个自定义配方都会附有文字,说明其所能带来的具体改变。", @@ -4305,8 +4311,8 @@ "quests.tfg_tips.glider.subtitle": "这不是荒野之息", "quests.tfg_tips.glider.desc": "&d悬挂式滑翔翼&r可用于空中滑翔。虽然你&c无法提升高度&r,但从高处跃下时,它将成为长途穿越的绝佳工具。\n与&b喷气背包&r是绝配!", "quests.tfg_tips.reinforced_glider.title": "强化滑翔翼", - "quests.tfg_tips.reinforced_glider.subtitle": "鞘翅用得值...?", - "quests.tfg_tips.reinforced_glider.desc": "将&6HV&r阶段制作的&a鞘翅&r与&a悬挂式滑翔翼&r结合,获得&d强化滑翔翼&r。耐久更高,速度上限更高。", + "quests.tfg_tips.reinforced_glider.subtitle": "轻如鸿毛!", + "quests.tfg_tips.reinforced_glider.desc": "&d强化悬挂滑翔翼&r是&a悬挂滑翔翼&r的改进版本。它采用了升级的&a铝&r制框架,以及由&a强化布料&r或&a轻质布料&r制成的翼面,现在你可以以&c双倍速度&r翱翔天际!\n它也比普通滑翔翼拥有&c更高的耐久度&r,并且可以在组装机中&c修复&r。\n\n&3专业提示:&r\n使用在&4幽冥之地&r维度获得的&a丝质布料&r或&a幻影丝&r,能在制作和修复时将布料消耗降低&e三分之二&r!\n当你进入&6HV&r阶段后,也可以使用&a聚己内酰胺布料&r作为其中一种布料,并享受消耗降低的效果。", "quests.tfg_tips.immersive_aircraft.title": "沉浸式飞机", "quests.tfg_tips.immersive_aircraft.subtitle": "翱翔天空,风格独具", "quests.tfg_tips.immersive_aircraft.desc": "&2沉浸式飞机&r模组专注于飞机,让你能够翱翔天空跨越长途。", From 706ec2f11b5641c022801e954da4f77684aa31ab Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 01:19:30 +0000 Subject: [PATCH 22/26] a little more tweakin --- .../quests/chapters/lv__low_voltage.snbt | 7 +++++++ .../quests/chapters/mv__medium_voltage.snbt | 18 ------------------ .../quests/chapters/questsmetallurgy.snbt | 2 +- .../ftbquests/quests/chapters/tips__tools.snbt | 14 ++++++++++++-- kubejs/assets/tfg/lang/en_us.json | 10 +++++----- 5 files changed, 25 insertions(+), 26 deletions(-) diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index f6a83f0d4..f7f68851e 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -36,6 +36,13 @@ x: -2.0d y: 12.5d } + { + id: "5A47760FCD164E74" + linked_quest: "61F58B402F1AE40B" + shape: "heart" + x: -7.5d + y: 4.5d + } ] quests: [ { diff --git a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt index ce8de1cd5..73613f8a4 100644 --- a/config/ftbquests/quests/chapters/mv__medium_voltage.snbt +++ b/config/ftbquests/quests/chapters/mv__medium_voltage.snbt @@ -776,24 +776,6 @@ x: -10.0d y: 10.0d } - { - dependencies: ["10FB27DD3C7BEC2F"] - description: ["{quests.medium_voltage.mv_tank.desc}"] - icon: "gtceu:lv_super_tank" - id: "6C53B01A05FFF1DC" - optional: true - shape: "heart" - size: 1.0d - subtitle: "{quests.medium_voltage.mv_tank.subtitle}" - tasks: [{ - id: "47EA273D728C158F" - item: "gtceu:lv_super_tank" - type: "item" - }] - title: "{quests.medium_voltage.mv_tank.title}" - x: -12.0d - y: 10.0d - } { dependencies: ["10FB27DD3C7BEC2F"] description: ["{quests.medium_voltage.mv_pvc.desc}"] diff --git a/config/ftbquests/quests/chapters/questsmetallurgy.snbt b/config/ftbquests/quests/chapters/questsmetallurgy.snbt index 8f0d107a4..210362d91 100644 --- a/config/ftbquests/quests/chapters/questsmetallurgy.snbt +++ b/config/ftbquests/quests/chapters/questsmetallurgy.snbt @@ -57,7 +57,7 @@ { id: "3249AB9EB552BB77" linked_quest: "4B79026C8D2DACC4" - x: 20.5d + x: 17.5d y: -28.0d } ] diff --git a/config/ftbquests/quests/chapters/tips__tools.snbt b/config/ftbquests/quests/chapters/tips__tools.snbt index d6eb2d162..33f0a8573 100644 --- a/config/ftbquests/quests/chapters/tips__tools.snbt +++ b/config/ftbquests/quests/chapters/tips__tools.snbt @@ -84,7 +84,7 @@ { dependencies: [ "125563A12EE5C296" - "5088768AAA28FCBA" + "56CA2EB7812529C5" ] description: ["{quests.tfg_tips.red_steel_backpack.desc}"] id: "4B79026C8D2DACC4" @@ -1170,6 +1170,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.olive_oil.desc}"] id: "13FC17F88DFEB8A8" + optional: true size: 1.5d subtitle: "{quests.tfg_tips.olive_oil.subtitle}" tasks: [{ @@ -1231,9 +1232,13 @@ y: 12.0d } { - dependencies: ["037CDA933FBE2CBE"] + dependencies: [ + "037CDA933FBE2CBE" + "5B2696206205CB2E" + ] description: ["{quests.tfg_tips.glowstone_lamp.desc}"] id: "61F58B402F1AE40B" + optional: true shape: "heart" size: 2.0d subtitle: "{quests.tfg_tips.glowstone_lamp.subtitle}" @@ -1256,6 +1261,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tallow.desc}"] id: "54E6994D5CC693A7" + optional: true size: 1.15d subtitle: "{quests.tfg_tips.tallow.subtitle}" tasks: [{ @@ -1278,6 +1284,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.creosote.desc}"] id: "72C1E430FF6D2DD8" + optional: true size: 1.0d subtitle: "{quests.tfg_tips.creosote.subtitle}" tasks: [{ @@ -1304,6 +1311,7 @@ description: ["{quests.tfg_tips.lava_lamp.desc}"] icon: "minecraft:lava_bucket" id: "4EBABACAB444244D" + optional: true shape: "square" size: 1.75d subtitle: "{quests.tfg_tips.lava_lamp.subtitle}" @@ -2447,6 +2455,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tools_tips.seed_oil.desc}"] id: "30B9137740247627" + optional: true size: 1.25d subtitle: "{quests.tfg_tips.tools_tips.seed_oil.subtitle}" tasks: [{ @@ -2469,6 +2478,7 @@ dependencies: ["037CDA933FBE2CBE"] description: ["{quests.tfg_tips.tools_tips.soybean_oil.desc}"] id: "6C0A087006DF8679" + optional: true size: 1.25d subtitle: "{quests.tfg_tips.tools_tips.soybean_oil.subtitle}" tasks: [{ diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index db0d40ce6..a285f22cf 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -3101,7 +3101,7 @@ "quests.metal_age.weak_steel.task3": "1 Part Black Bronze", "quests.metal_age.highcarb_black_steel.title": "Black Steel Ingredients", "quests.metal_age.highcarb_black_steel.subtitle": "Conservation of matter does not apply", - "quests.metal_age.highcarb_black_steel.desc": "The final two anvils are made out of complex alloys that will require a lot of metal to be created. Weak Steel and Pig Iron can be welded to create High Carbon Black Steel, which can then be worked on an anvil into Black Steel.", + "quests.metal_age.highcarb_black_steel.desc": "The final two anvils are made out of complex alloys that will require a lot of metal to be created. Weak Steel and Pig Iron can be welded to create High Carbon Black Steel, which can then be worked on an anvil into Black Steel.\n\nOnce you get a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.black_steel_anvil.title": "T5 Anvil: Black Steel", "quests.metal_age.black_steel_anvil.subtitle": "Steam power is within your grasp", "quests.metal_age.black_steel_anvil.desc": "With the Black Steel Anvil you'll now be able to work Black Steel Ingots into different items.\n\nYou've also now opened up a massive new section in the Early Automation chapter related to high pressure Steam Power!\n\nFrom here, you can either dive straight into industrialization or finish up the last tier of anvils if you'd like. You can't avoid colored steel forever, though!", @@ -3126,17 +3126,17 @@ "quests.metal_age.weak_blue_steel.sterling_silver": "1 Part Sterling Silver", "quests.metal_age.weak_blue_steel.bismuth_bronze": "1 Part Bismuth Bronze", "quests.metal_age.highcarb_red_steel.title": "Red Steel Ingredients", - "quests.metal_age.highcarb_red_steel.subtitle": "Could deleting matter like this power a nuclear bomb?", - "quests.metal_age.highcarb_red_steel.desc": "Red Steel first starts as High Carbon Red Steel, which is made by welding Weak Red Steel and Black Steel. It needs to be worked on the Anvil to turn it into Red Steel", + "quests.metal_age.highcarb_red_steel.subtitle": "Minecraft is not a physics simulator", + "quests.metal_age.highcarb_red_steel.desc": "Red Steel first starts as High Carbon Red Steel, which is made by welding Weak Red Steel and Black Steel. It needs to be worked on the Anvil to turn it into Red Steel.\n\nIf you have a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.highcarb_blu_steel.title": "Blue Steel Ingredients", "quests.metal_age.highcarb_blu_steel.subtitle": "Lavoisier is rolling in his grave", - "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, which is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel", + "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, which is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel.\n\nIf you have a Steam Alloy Smelter, use that instead to &6double your output&r.", "quests.metal_age.redblu_anvil.title": "T6 Anvil: Red or Blue Steel", "quests.metal_age.redblu_anvil.subtitle": "It's over", "quests.metal_age.redblu_anvil.desc": "The final tier of Anvil! With the Tier 6 Anvil you'll be able to work both Red and Blue Steel Ingots into different items.\n\nThis marks the end of TerraFirmaCraft's progression. Now it's time to finish the Industrial Age and create your very first Low Voltage circuitry.", "quests.metal_age.red_steel_flask.title": "Red Steel Flask", "quests.metal_age.red_steel_flask.subtitle": "This got nothing on the Iron Flask", - "quests.metal_age.red_steel_flask.desc": "The Red Steel Flask is the best Flask available. It may hold the same amount of liquid as an Iron Flask, but the Red Steel Flask never breaks.", + "quests.metal_age.red_steel_flask.desc": "The Red Steel Flask is the best Flask available. It may hold the same amount of liquid as an Iron Flask, but the Red Steel Flask never breaks.\n\nFor the Silk, Phantoms can be found all over the Beneath, but are more common in the bottom layer.", "quests.metal_age.redblu_buckets.title": "Bucket Components", "quests.metal_age.redblu_buckets.subtitle": "Bucket Fusion Reactor", "quests.metal_age.redblu_buckets.desc": "The final task in the Metallurgy Age is creating a Bucket. Unlike the wooden bucket and other fluid containers you've been using until now, the Bucket can be used to carry Lava and move around source blocks of other fluids.", From ae7bfba2be4e8ecdb16587c6bfd919cd7ddb61b3 Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 01:34:39 +0000 Subject: [PATCH 23/26] langs --- kubejs/assets/gtceu/lang/en_us.json | 1 + kubejs/client_scripts/example.js | 3 --- 2 files changed, 1 insertion(+), 3 deletions(-) delete mode 100644 kubejs/client_scripts/example.js diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index cf0d3534c..e7842f2ab 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -205,6 +205,7 @@ "gtceu.jei.bedrock_fluid.heavy_ammoniacal_water": "Martian Heavy Ammoniacal Water", "gtceu.jei.bedrock_fluid.liquid_ice": "Martian Ice", "gtceu.recipe.category.ingot_molding": "Material Molding", + "block.gtceu.wire_coil.tooltip_cracking": "§8Cracking Unit, Coal Liquefaction Tower,§r\n§8Moon and Ostrum Harvesters:§r", "tagprefix.sword_head": "%s Sword Head", "tagprefix.pickaxe_head": "%s Pickaxe Head", "tagprefix.shovel_head": "%s Shovel Head", diff --git a/kubejs/client_scripts/example.js b/kubejs/client_scripts/example.js deleted file mode 100644 index c283f7462..000000000 --- a/kubejs/client_scripts/example.js +++ /dev/null @@ -1,3 +0,0 @@ -// priority: 1 - -console.log('TerraFirmaGreg the best modpack in the world :)') \ No newline at end of file From 6782f5e8e60d5c12d9f6be3e49275e047181efae Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 01:53:43 +0000 Subject: [PATCH 24/26] tweak --- .../quests/chapters/space_survival.snbt | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/config/ftbquests/quests/chapters/space_survival.snbt b/config/ftbquests/quests/chapters/space_survival.snbt index 6732d30da..e5c942a16 100644 --- a/config/ftbquests/quests/chapters/space_survival.snbt +++ b/config/ftbquests/quests/chapters/space_survival.snbt @@ -822,6 +822,7 @@ ] dependency_requirement: "one_completed" description: ["{quests.space_survival.spice.desc}"] + icon: "tfg:spice" id: "0CA5B715B76E4A5B" shape: "hexagon" size: 1.5d @@ -1108,15 +1109,23 @@ Count: 1 ForgeCaps: { "tfc:food": { - creationDate: -9223372036854775808L + creationDate: -2L + foodData: { + dairy: 0.0f + decay: 0.0f + food: 0 + fruit: 0.0f + grain: 0.0f + meat: 0.0f + sat: 0.0f + veg: 0.0f + water: 0.0f + } + ingredients: [ ] traits: [ ] } - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } } - id: "betterend:cave_pumpkin_pie" + id: "tfg:food/cooked_dino_nugget" } id: "1AC201876984D248" optional: true From 9ae6b6ae50f331f493e34fa01b8ba67e2770aa61 Mon Sep 17 00:00:00 2001 From: Mqrius Date: Sat, 6 Dec 2025 02:55:52 +0100 Subject: [PATCH 25/26] Add Distant Horizons config file (#2331) Create DistantHorizons.toml so that players have the correct DH settings when they add DH to their install. Signed-off-by: Mqrius --- config/DistantHorizons.toml | 818 ++++++++++++++++++++++++++++++++++++ 1 file changed, 818 insertions(+) create mode 100644 config/DistantHorizons.toml diff --git a/config/DistantHorizons.toml b/config/DistantHorizons.toml new file mode 100644 index 000000000..a6f048e16 --- /dev/null +++ b/config/DistantHorizons.toml @@ -0,0 +1,818 @@ +_version = 3 + +[client] + # + # Should Distant Horizon's config button appear in Minecraft's options screen next to the fov slider? + showDhOptionsButtonInMinecraftUi = true + + [client.advanced] + + [client.advanced.graphics] + + [client.advanced.graphics.quality] + # + # The radius of the mod's render distance. (measured in chunks) + lodChunkRenderDistanceRadius = 256 + # + # This indicates how quickly LODs decrease in quality the further away they are. + # Higher settings will render higher quality fake chunks farther away, + # but will increase memory and GPU usage. + horizontalQuality = "MEDIUM" + # + # What is the maximum detail LODs should be drawn at? + # Higher settings will increase memory and GPU usage. + # + # CHUNK: render 1 LOD for each Chunk. + # HALF_CHUNK: render 4 LODs for each Chunk. + # FOUR_BLOCKS: render 16 LODs for each Chunk. + # TWO_BLOCKS: render 64 LODs for each Chunk. + # BLOCK: render 256 LODs for each Chunk (width of one block). + # + # Lowest Quality: CHUNK + # Highest Quality: BLOCK + maxHorizontalResolution = "BLOCK" + # + # This indicates how well LODs will represent + # overhangs, caves, floating islands, etc. + # Higher options will make the world more accurate, butwill increase memory and GPU usage. + # + # Lowest Quality: HEIGHT_MAP + # Highest Quality: EXTREME + verticalQuality = "MEDIUM" + # + # How should LOD transparency be handled. + # + # COMPLETE: LODs will render transparent. + # FAKE: LODs will be opaque, but shaded to match the blocks underneath. + # DISABLED: LODs will be opaque. + transparency = "COMPLETE" + # + # What blocks shouldn't be rendered as LODs? + # + # NONE: Represent all blocks in the LODs + # NON_COLLIDING: Only represent solid blocks in the LODs (tall grass, torches, etc. won't count for a LOD's height) + blocksToIgnore = "NON_COLLIDING" + # + # Should the blocks underneath avoided blocks gain the color of the avoided block? + # + # True: a red flower will tint the grass below it red. + # False: skipped blocks will not change color of surface below them. + tintWithAvoidedBlocks = true + # + # What the value should vanilla Minecraft's texture LodBias be? + # If set to 0 the mod wont overwrite vanilla's default (which so happens to also be 0) + lodBias = "0.0" + # + # How should LODs be shaded? + # + # AUTO: Uses the same side shading as vanilla Minecraft blocks. + # ENABLED: Simulates Minecraft's block shading for LODs. + # Can be used to force LOD shading when using some shaders. + # DISABLED: All LOD sides will be rendered with the same brightness. + lodShading = "AUTO" + # + # How should the sides and bottom of grass block LODs render? + # + # AS_GRASS: all sides of dirt LOD's render using the top (green) color. + # FADE_TO_DIRT: sides fade from grass to dirt. + # AS_DIRT: sides render entirely as dirt. + grassSideRendering = "FADE_TO_DIRT" + # + # If true LODs will fade away as you get closer to them. + # If false LODs will cut off abruptly at a set distance from the camera. + # This setting is affected by the vanilla overdraw prevention config. + ditherDhFade = true + # + # How should vanilla Minecraft fade into Distant Horizons LODs? + # + # NONE: Fastest, there will be a pronounced border between DH and MC rendering. + # SINGLE_PASS: Fades after MC's transparent pass, opaque blocks underwater won't be faded. + # DOUBLE_PASS: Slowest, fades after both MC's opaque and transparent passes, provides the smoothest transition. + vanillaFadeMode = "DOUBLE_PASS" + # + # How bright LOD colors are. + # + # 0 = black + # 1 = normal + # 2 = near white + brightnessMultiplier = "1.0" + # + # How saturated LOD colors are. + # + # 0 = black and white + # 1 = normal + # 2 = very saturated + saturationMultiplier = "1.0" + # + # This is the same as vanilla Biome Blending settings for Lod area. + # Note that anything other than '0' will greatly effect Lod building time. + # + # '0' equals to Vanilla Biome Blending of '1x1' or 'OFF', + # '1' equals to Vanilla Biome Blending of '3x3', + # '2' equals to Vanilla Biome Blending of '5x5'... + lodBiomeBlending = 3 + + [client.advanced.graphics.ssao] + # + # Enable Screen Space Ambient Occlusion + enableSsao = true + # + # Determines how many points in space are sampled for the occlusion test. + # Higher numbers will improve quality and reduce banding, but will increase GPU load. + sampleCount = 6 + # + # Determines the radius Screen Space Ambient Occlusion is applied, measured in blocks. + radius = "4.0" + # + # Determines how dark the Screen Space Ambient Occlusion effect will be. + strength = "0.2" + # + # Increasing the value can reduce banding at the cost of reducing the strength of the effect. + bias = "0.02" + # + # Determines how dark the occlusion shadows can be. + # 0 = totally black at the corners + # 1 = no shadow + minLight = "0.25" + # + # The radius, measured in pixels, that blurring is calculated for the SSAO. + # Higher numbers will reduce banding at the cost of GPU performance. + blurRadius = 2 + + [client.advanced.graphics.genericRendering] + # + # If true non terrain objects will be rendered in DH's terrain. + # This includes beacon beams and clouds. + enableGenericRendering = true + # + # If true LOD beacon beams will be rendered. + enableBeaconRendering = true + # + # Sets the maximum height at which beacons will render.This will only affect new beacons coming into LOD render distance.Beacons currently visible in LOD chunks will not be affected. + beaconRenderHeight = 6000 + # + # If true LOD clouds will be rendered. + enableCloudRendering = true + # + # Can be disabled to use much slower but more compatible direct rendering. + # Disabling this can be used to fix some crashes on Mac. + enableInstancedRendering = true + + [client.advanced.graphics.fog] + # + # Determines if fog is drawn on DH LODs. + enableDhFog = true + # + # What color should fog use? + # + # USE_WORLD_FOG_COLOR: Use the world's fog color. + # USE_SKY_COLOR: Use the sky's color. + colorMode = "USE_WORLD_FOG_COLOR" + # + # Should Minecraft's fog render? + # Note: Other mods may conflict with this setting. + enableVanillaFog = false + # + # At what distance should the far fog start? + # + # 0.0: Fog starts at the player's position. + # 1.0: Fog starts at the closest edge of the vanilla render distance. + # 1.414: Fog starts at the corner of the vanilla render distance. + farFogStart = "0.4" + # + # Where should the far fog end? + # + # 0.0: Fog ends at player's position. + # 1.0: Fog ends at the closest edge of the vanilla render distance. + # 1.414: Fog ends at the corner of the vanilla render distance. + farFogEnd = "1.0" + # + # What is the minimum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + farFogMin = "0.0" + # + # What is the maximum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + farFogMax = "1.0" + # + # How should the fog thickness should be calculated? + # + # LINEAR: Linear based on distance (will ignore 'density') + # EXPONENTIAL: 1/(e^(distance*density)) + # EXPONENTIAL_SQUARED: 1/(e^((distance*density)^2) + farFogFalloff = "EXPONENTIAL_SQUARED" + # + # Used in conjunction with the Fog Falloff. + farFogDensity = "2.5" + + [client.advanced.graphics.fog.heightFog] + # + # How should height effect the fog thickness? + # Note: height fog is combined with the other fog settings. + # + # SPHERICAL: Fog is calculated based on camera distance. + # CYLINDRICAL: Ignore height, fog is calculated based on horizontal distance. + # + # MAX: max(heightFog, farFog) + # ADDITION: heightFog + farFog + # MULTIPLY: heightFog * farFog + # INVERSE_MULTIPLY: 1 - (1-heightFog) * (1-farFog) + # LIMITED_ADDITION: farFog + max(farFog, heightFog) + # MULTIPLY_ADDITION: farFog + farFog * heightFog + # INVERSE_MULTIPLY_ADDITION: farFog + 1 - (1-heightFog) * (1-farFog) + # AVERAGE: farFog*0.5 + heightFog*0.5 + heightFogMixMode = "SPHERICAL" + # + # Where should the height fog start? + # + # ABOVE_CAMERA: Height fog starts at the camera and goes towards the sky + # BELOW_CAMERA: Height fog starts at the camera and goes towards the void + # ABOVE_AND_BELOW_CAMERA: Height fog starts from the camera to goes towards both the sky and void + # ABOVE_SET_HEIGHT: Height fog starts from a set height and goes towards the sky + # BELOW_SET_HEIGHT: Height fog starts from a set height and goes towards the void + # ABOVE_AND_BELOW_SET_HEIGHT: Height fog starts from a set height and goes towards both the sky and void + heightFogDirection = "BELOW_SET_HEIGHT" + # + # If the height fog is calculated around a set height, what is that height position? + heightFogBaseHeight = "80.0" + # + # Should the start of the height fog be offset? + # + # 0.0: Fog start with no offset. + # 1.0: Fog start with offset of the entire world's height. (Includes depth) + heightFogStart = "0.0" + # + # Should the end of the height fog be offset? + # + # 0.0: Fog end with no offset. + # 1.0: Fog end with offset of the entire world's height. (Include depth) + heightFogEnd = "0.6" + # + # What is the minimum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + heightFogMin = "0.0" + # + # What is the maximum fog thickness? + # + # 0.0: No fog. + # 1.0: Fully opaque fog. + heightFogMax = "1.0" + # + # How should the height fog thickness should be calculated? + # + # LINEAR: Linear based on height (will ignore 'density') + # EXPONENTIAL: 1/(e^(height*density)) + # EXPONENTIAL_SQUARED: 1/(e^((height*density)^2) + heightFogFalloff = "EXPONENTIAL_SQUARED" + # + # What is the height fog's density? + heightFogDensity = "20.0" + + [client.advanced.graphics.noiseTexture] + # + # Should a noise texture be applied to LODs? + # + # This is done to simulate textures and make the LODs appear more detailed. + enableNoiseTexture = true + # + # How many steps of noise should be applied to LODs? + noiseSteps = 4 + # + # How intense should the noise should be? + noiseIntensity = "5.0" + # + # Defines how far should the noise texture render before it fades away. (in blocks) + # Set to 0 to disable noise from fading away + noiseDropoff = 1024 + + [client.advanced.graphics.culling] + # + # Determines how far from the camera Distant Horizons will start rendering. + # Measured as a percentage of the vanilla render distance. + # + # 0 = auto, overdraw will change based on the vanilla render distance. + # + # Higher values will prevent LODs from rendering behind vanilla blocks at a higher distance, + # but may cause holes in the world. + # Holes are most likely to appear when flying through unloaded terrain. + # + # Increasing the vanilla render distance increases the effectiveness of this setting. + overdrawPrevention = "0.0" + # + # If enabled caves won't be rendered. + # + # Note: for some world types this can cause + # overhangs or walls for floating objects. + # Tweaking the caveCullingHeight, can resolve some + # of those issues. + enableCaveCulling = true + # + # At what Y value should cave culling start? + # Lower this value if you get walls for areas with 0 light. + caveCullingHeight = 60 + # + # If false all beacons near the camera won't be drawn to prevent vanilla overdraw. + # If true all beacons will be rendered. + # + # Generally this should be left as true. It's main purpose is for debugging + # beacon updating/rendering. + disableBeaconDistanceCulling = true + # + # If true LODs outside the player's camera + # aren't drawn, increasing GPU performance. + # + # If false all LODs are drawn, even those behind + # the player's camera, decreasing GPU performance. + # + # Disable this if you see LODs disappearing at the corners of your vision. + disableFrustumCulling = false + # + # Identical to the other frustum culling option + # only used when a shader mod is present using the DH API + # and the shadow pass is being rendered. + # + # Disable this if shadows render incorrectly. + disableShadowPassFrustumCulling = false + # + # A comma separated list of block resource locations that won't be rendered by DH. + # Air is always included in this list. + # Requires a restart to change. + ignoredRenderBlockCsv = "minecraft:barrier,minecraft:structure_void,minecraft:light,minecraft:tripwire,minecraft:brown_mushroom" + # + # A comma separated list of block resource locations that shouldn't be rendered + # if they are in a 0 sky light underground area. + # Air is always included in this list. + # Requires a restart to change. + ignoredRenderCaveBlockCsv = "minecraft:glow_lichen,minecraft:rail,minecraft:water,minecraft:lava,minecraft:bubble_column,minecraft:cave_vines_plant,minecraft:vine,minecraft:cave_vines,minecraft:short_grass,minecraft:tall_grass,minecraft:small_dripleaf,minecraft:big_dripleaf,minecraft:big_dripleaf_stem,minecraft:sculk_vein" + + [client.advanced.graphics.experimental] + # + # This is the earth size ratio when applying the curvature shader effect. + # Note: Enabling this feature may cause rendering bugs. + # + # 0 = flat/disabled + # 1 = 1 to 1 (6,371,000 blocks) + # 100 = 1 to 100 (63,710 blocks) + # 10000 = 1 to 10000 (637.1 blocks) + # + # Note: Due to current limitations, the min value is 50 + # and the max value is 5000. Any values outside this range + # will be set to 0 (disabled). + earthCurveRatio = 0 + + [client.advanced.multiplayer] + # + # How should multiplayer save folders should be named? + # + # NAME_ONLY: Example: "Minecraft Server" + # IP_ONLY: Example: "192.168.1.40" + # NAME_IP: Example: "Minecraft Server IP 192.168.1.40" + # NAME_IP_PORT: Example: "Minecraft Server IP 192.168.1.40:25565"NAME_IP_PORT_MC_VERSION: Example: "Minecraft Server IP 192.168.1.40:25565 GameVersion 1.16.5" + serverFolderNameMode = "NAME_ONLY" + + [client.advanced.autoUpdater] + # + # Automatically check for updates on game launch? + enableAutoUpdater = true + # + # Should Distant Horizons silently, automatically download and install new versions? + # This setting is force disabled on dedicated servers for stability reasons. + enableSilentUpdates = false + # + # If DH should use the nightly (provided by Gitlab), or stable (provided by Modrinth) build. + # If [AUTO] is selected DH will update to new stable releases if the current jar is a stable jar + # and will update to new nightly builds if the current jar is a nightly jar (IE the version number ends in '-dev'). + updateBranch = "AUTO" + + [client.advanced.debugging] + # + # What renderer is active? + # + # DEFAULT: Default lod renderer + # DEBUG: Debug testing renderer + # DISABLED: Disable rendering + rendererMode = "DEFAULT" + # + # Should specialized colors/rendering modes be used? + # + # OFF: LODs will be drawn with their normal colors. + # SHOW_DETAIL: LODs' color will be based on their detail level. + # SHOW_BLOCK_MATERIAL: LODs' color will be based on their material. + # SHOW_OVERLAPPING_QUADS: LODs will be drawn with total white, but overlapping quads will be drawn with red. + debugRendering = "OFF" + # + # If enabled this will disable (most) vanilla Minecraft rendering. + # + # NOTE: Do not report any issues when this mode is on! + # This setting is only for fun and debugging. + # Mod compatibility is not guaranteed. + lodOnlyMode = false + # + # If enabled the LODs will render as wireframe. + renderWireframe = false + # + # If true the F8 key can be used to cycle through the different debug modes. + # and the F6 key can be used to enable and disable LOD rendering. + enableDebugKeybindings = false + # + # Stops vertex colors from being passed. + # Useful for debugging shaders + enableWhiteWorld = false + # + # If true overlapping quads will be rendered as bright red for easy identification. + # If false the quads will be rendered normally. + showOverlappingQuadErrors = false + # + # If true OpenGL Buffer garbage collection will be logged + # this also includes the number of live buffers. + logBufferGarbageCollection = false + + [client.advanced.debugging.debugWireframe] + # + # If enabled, various wireframes for debugging internal functions will be drawn. + # + # NOTE: There WILL be performance hit! + # Additionally, only stuff that's loaded after you enable this + # will render their debug wireframes. + enableRendering = false + # + # Render queued world gen tasks? + showWorldGenQueue = false + # + # Render queued network sync on load tasks? + showNetworkSyncOnLoadQueue = false + # + # Render LOD section status? + showRenderSectionStatus = false + # + # A white box will be drawn when an LOD starts rendering + # and a purple box when an LOD stops rendering. + # + # This can be used to debug Quad Tree holes. + showRenderSectionToggling = false + # + # Render Quad Tree Rendering status? + showQuadTreeRenderStatus = false + # + # Render full data update/lock status? + showFullDataUpdateStatus = false + + [client.advanced.debugging.openGl] + # + # Defines how OpenGL errors are handled. + # Requires rebooting Minecraft to change. + # Will catch OpenGL errors thrown by other mods. + overrideVanillaGLLogger = true + # + # If true each Open GL error will only be logged once. + # Enabling this may cause some error logs to be missed. + # Does nothing if overrideVanillaGLLogger is set to false. + # + # Generally this can be kept as 'true' to prevent log spam. + # However, Please set this to 'false' if a developer needs your log to debug a GL issue. + onlyLogGlErrorsOnce = true + # + # Defines how OpenGL errors are handled. + # May incorrectly catch OpenGL errors thrown by other mods. + # + # IGNORE: Do nothing. + # LOG: write an error to the log. + # LOG_THROW: write to the log and throw an exception. + # Warning: this should only be enabled when debugging the LOD renderer + # as it may break Minecraft's renderer when an exception is thrown. + glErrorHandlingMode = "IGNORE" + # + # Massively reduces FPS. + # Should only be used if mysterious EXCEPTION_ACCESS_VIOLATION crashes are happening in DH's rendering code for troubleshooting. + validateBufferIdsBeforeRendering = false + + [client.advanced.debugging.f3Screen] + # + # Shows the player's LOD position. + showPlayerPos = true + # + # Defines what internal detail level the player position will be shown as. + # Internal detail level means: 6 = 1x1 block, 7 = 2x2 blocks, etc. + playerPosSectionDetailLevel = 6 + # + # Shows info about each thread pool. + showThreadPools = true + # + # Shows the combined memory use and array counts for all DH pooled objects. + showCombinedObjectPools = false + # + # Shows the memory use and array counts for each DH object pool. + showSeparatedObjectPools = false + # + # Shows how many chunks are queud for processing and the max count that can be queued. + showQueuedChunkUpdateCount = true + # + # Shows what levels are loaded and world gen/rendering info about those levels. + showLevelStatus = true + + [client.advanced.debugging.exampleConfigScreen] + boolTest = false + byteTest = "8" + intTest = 69420 + doubleTest = "420.69" + shortTest = "69" + longTest = "42069" + floatTest = "0.42069" + stringTest = "Test input box" + listTest = ["option 1", "option 2", "option 3"] + mapTest = "{}" + linkableTest = 420 + +[common] + + [common.worldGenerator] + # + # Should Distant Horizons slowly generate LODs + # outside the vanilla render distance? + # Depending on the generator mode, this will import existing chunks + # and/or generating missing chunks. + enableDistantGeneration = true + # + # How detailed should LODs be generated outside the vanilla render distance? + # + # PRE_EXISTING_ONLY + # Only create LOD data for already generated chunks. + # + # + # SURFACE + # Generate the world surface, + # this does NOT include trees, + # or structures. + # + # FEATURES + # Generate everything except structures. + # WARNING: This may cause world generator bugs or instability when paired with certain world generator mods. + # + # INTERNAL_SERVER + # Ask the local server to generate/load each chunk. + # This is the most compatible and will generate structures correctly, + # but may cause server/simulation lag. + # Note: unlike other modes this option DOES save generated chunks to + # Minecraft's region files. + distantGeneratorMode = "INTERNAL_SERVER" + # + # How should distant generator progress be displayed? + # + # OVERLAY: may be the same as CHAT for some Minecraft versions + # CHAT + # LOG + # DISABLED + showGenerationProgress = "DISABLED" + # + # How often should the distant generator progress be displayed? + generationProgressDisplayIntervalInSeconds = 2 + # + # For how many seconds should instructions for disabling the distant generator progress be displayed? + # Setting this to 0 hides the instructional message so the world gen progress is shown immediately when it starts. + generationProgressDisableMessageDisplayTimeInSeconds = 20 + # + # When logging generation progress also include the rate at which chunks + # are being generated. + # This can be useful for troubleshooting performance. + generationProgressIncludeChunksPerSecond = true + + [common.lodBuilding] + # + # Enabling this will drastically increase chunk processing time + # and you may need to increase your CPU load to handle it. + # + # Normally DH will attempt to skip creating LODs for chunks it's already seen + # and that haven't changed. + # + # However sometimes that logic incorrectly prevents LODs from being updated. + # Disabling this check may fix issues where LODs aren't updated after + # blocks have been changed. + disableUnchangedChunkCheck = false + # + # What algorithm should be used to compress new LOD data? + # This setting will only affect new or updated LOD data, + # any data already generated when this setting is changed will be + # unaffected until it needs to be re-written to the database. + # + # UNCOMPRESSED + # Should only be used for testing, is worse in every way vs [LZ4]. + # Expected Compression Ratio: 1.0 + # Estimated average DTO read speed: 6.09 milliseconds + # Estimated average DTO write speed: 6.01 milliseconds + # + # LZ4 + # A good option if you're CPU limited and have plenty of hard drive space. + # Expected Compression Ratio: 0.4513 + # Estimated average DTO read speed: 3.25 ms + # Estimated average DTO write speed: 5.99 ms + # + # Z_STD + # A good option if you're CPU limited and have plenty of hard drive space. + # Expected Compression Ratio: 0.2606 + # Estimated average DTO read speed: 9.31 ms + # Estimated average DTO write speed: 15.13 ms + # + # LZMA2 + # Slow but very good compression. + # Expected Compression Ratio: 0.2 + # Estimated average DTO read speed: 13.29 ms + # Estimated average DTO write speed: 70.95 ms + dataCompression = "Z_STD" + # + # How should block data be compressed when creating LOD data? + # This setting will only affect new or updated LOD data, + # any data already generated when this setting is changed will be + # unaffected until it is modified or re-loaded. + # + # MERGE_SAME_BLOCKS + # Every block/biome change is recorded in the database. + # This is what DH 2.0 and 2.0.1 all used by default and will store a lot of data. + # Expected Compression Ratio: 1.0 + # + # VISUALLY_EQUAL + # Only visible block/biome changes are recorded in the database. + # Hidden blocks (IE ores) are ignored. + # Expected Compression Ratio: 0.7 + worldCompression = "VISUALLY_EQUAL" + # + # True: Recalculate chunk height maps before chunks can be used by DH. + # This can fix problems with worlds created by World Painter or + # other external tools where the heightmap format may be incorrect. + # False: Assume any height maps handled by Minecraft are correct. + # + # Fastest: False + # Most Compatible: True + recalculateChunkHeightmaps = false + # + # If true LOD generation for pre-existing chunks will attempt to pull the lighting data + # saved in Minecraft's Region files. + # If false DH will pull in chunks without lighting and re-light them. + # + # Setting this to true will result in faster LOD generation + # for already generated worlds, but is broken by most lighting mods. + # + # Set this to false if LODs are black. + pullLightingForPregeneratedChunks = false + # + # When DH pulls in pre-existing chunks it will attempt to + # run any missing world generation steps; for example: + # if a chunk has the status SURFACE, DH will skip BIOMES + # and SURFACE, but will run FEATURES. + # + # However if for some reason the chunks are malformed + # or there's some other issue that causes the status + # to be incorrect that can either cause world gen + # lock-ups and/or crashes. + # If either of those happen try setting this to True. + assumePreExistingChunksAreFinished = false + + [common.lodBuilding.experimental] + # + # When active DH will attempt to fill missing LOD data + # with any data that is present in the tree, preventing holes when moving + # when a N-sized generator (or server) is active. + # + # This is only used when N-sized world generation is available + # and/or when on a server where [generateOnlyInHighestDetail] is false. + # + # Experimental: + # Enabling this option will increase CPU and harddrive use + # and may cause rendering bugs. + upsampleLowerDetailLodsToFillHoles = false + + [common.multiThreading] + # + # How many threads should be used by Distant Horizons? + numberOfThreads = 8 + # + # A value between 1.0 and 0.0 that represents the percentage + # of time each thread can run before going idle. + # + # This can be used to reduce CPU usage if the thread count + # is already set to 1 for the given option, or more finely + # tune CPU performance. + threadRunTimeRatio = "1.0" + + [common.logging] + # + # If enabled, the mod will log information about the world generation process. + # This can be useful for debugging. + logWorldGenEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log performance about the world generation process. + # This can be useful for debugging. + logWorldGenPerformance = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the world generation process. + # This can be useful for debugging. + logWorldGenLoadEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the renderer buffer process. + # This can be useful for debugging. + logRendererBufferEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about the renderer OpenGL process. + # This can be useful for debugging. + logRendererGLEvent = "LOG_ERROR_TO_CHAT_AND_INFO_TO_FILE" + # + # If enabled, the mod will log information about network operations. + # This can be useful for debugging. + logNetworkEvent = "LOG_ERROR_TO_CHAT_AND_WARNING_TO_FILE" + + [common.logging.warning] + # + # If enabled, a chat message will be displayed if Java doesn't have enough + # memory allocated to run DH well. + showLowMemoryWarningOnStartup = true + # + # If enabled, a chat message will be displayed if DH detects + # that any pooled objects have been garbage collected. + showPoolInsufficientMemoryWarning = true + # + # If enabled, a chat message will be displayed if vanilla MC's + # render distance is higher than the recommended amount. + showHighVanillaRenderDistanceWarning = true + # + # If enabled, a chat message will be displayed when a replay is started + # giving some basic information about how DH will function. + showReplayWarningOnStartup = true + # + # If enabled, a chat message will be displayed when DH has too many chunks + # queued for updating. + showUpdateQueueOverloadedChatWarning = false + # + # If enabled, a chat message will be displayed when a potentially problematic + # mod is installed alongside DH. + showModCompatibilityWarningsOnStartup = true + +[server] + # + # Makes the server send level keys for each world. + # Disable this if you use alternative ways to send level keys. + sendLevelKeys = true + # + # Prefix of the level keys sent to the clients. + # If the mod is running behind a proxy, each backend should use a unique value. + # If this value is empty, level key will be based on the server's seed hash. + levelKeyPrefix = "" + # + # How many LOD generation requests per second should a client send? + # Also limits the number of client requests allowed to stay in the server's queue. + generationRequestRateLimit = 20 + # + # Defines the distance allowed to generate around the player. + maxGenerationRequestDistance = 4096 + # + # Defines the X-coordinate of the central point for generation boundaries, in blocks. + generationBoundsX = 0 + # + # Defines the Z-coordinate of the central point for generation boundaries, in blocks. + generationBoundsZ = 0 + # + # Defines the radius around the central point within which generation is allowed, in blocks. + # If this value is set to 0, generation bounds are disabled. + generationBoundsRadius = 0 + # + # If true, clients will receive real-time LOD updates for chunks outside the client's render distance. + enableRealTimeUpdates = true + # + # Defines the distance the player will receive updates around. + realTimeUpdateDistanceRadiusInChunks = 256 + # + # If true, clients will receive updated LODs when joining or loading new LODs. + synchronizeOnLoad = true + # + # How many LOD sync requests per second should a client send? + # Also limits the amount of player's requests allowed to stay in the server's queue. + syncOnLoadRateLimit = 50 + # + # Defines the distance allowed to be synchronized around the player. + # Should be the same or larger than maxGenerationRequestDistance in most cases. + maxSyncOnLoadRequestDistance = 4096 + # + # Maximum per-player speed for uploading LODs to the clients, in KB/s. + # Value of 0 disables the limit. + playerBandwidthLimit = 500 + # + # Maximum global speed for uploading LODs to the clients, in KB/s. + # Value of 0 disables the limit. + globalBandwidthLimit = 0 + # + # Enables adaptive transfer speed based on client performance. + # If true, DH will automatically adjust transfer rate to minimize connection lag. + # If false, transfer speed will remain fixed. + enableAdaptiveTransferSpeed = false + + [server.experimental] + # + # When enabled on the client, this allows loading lower detail levels as needed to speed up terrain generation. + # This must also be enabled on the server; otherwise, it will have no effect. + # For better performance when switching LOD detail levels, enabling [upsampleLowerDetailLodsToFillHoles] is recommended. + enableNSizedGeneration = false + From 4fb964366d12813e2e2694e8612c6d0ce4757e1d Mon Sep 17 00:00:00 2001 From: Pyritie Date: Sat, 6 Dec 2025 01:56:50 +0000 Subject: [PATCH 26/26] pakku --- pakku-lock.json | 337 ++++++++++++++++++++++++------------------------ 1 file changed, 169 insertions(+), 168 deletions(-) diff --git a/pakku-lock.json b/pakku-lock.json index 73f9d56c5..4c6114bb4 100644 --- a/pakku-lock.json +++ b/pakku-lock.json @@ -1459,7 +1459,7 @@ }, { "type": "curseforge", - "file_name": "baguettelib-1.20.1-Forge-1.1.1.jar", + "file_name": "baguettelib-1.20.1-Forge-1.1.5.jar", "mc_versions": [ "1.20.1" ], @@ -1467,16 +1467,16 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7031/573/baguettelib-1.20.1-Forge-1.1.1.jar", - "id": "7031573", + "url": "https://edge.forgecdn.net/files/7287/505/baguettelib-1.20.1-Forge-1.1.5.jar", + "id": "7287505", "parent_id": "1264423", "hashes": { - "sha1": "eb060d8ed625c2ed9182db62e60154bb94c69046", - "md5": "558b2a3c6ed2caa44883e551580c0845" + "sha1": "7aaab6216e7fc72e1606b1e35f1f56a18f01153f", + "md5": "21c32e7a3fcd7501915bf2b91d76df9b" }, "required_dependencies": [], - "size": 30312, - "date_published": "2025-09-25T09:12:10.740Z" + "size": 31868, + "date_published": "2025-12-02T22:51:20.803Z" } ] }, @@ -4636,7 +4636,7 @@ "files": [ { "type": "modrinth", - "file_name": "diggerhelmet-1.20.1-1.0.0.24.jar", + "file_name": "diggerhelmet-1.20.1-1.0.0.25.jar", "mc_versions": [ "1.20.1" ], @@ -4645,46 +4645,46 @@ "neoforge" ], "release_type": "beta", - "url": "https://cdn.modrinth.com/data/8Aatj9Zy/versions/LOYb1iLX/diggerhelmet-1.20.1-1.0.0.24.jar", - "id": "LOYb1iLX", + "url": "https://cdn.modrinth.com/data/8Aatj9Zy/versions/T1mIzBuf/diggerhelmet-1.20.1-1.0.0.25.jar", + "id": "T1mIzBuf", "parent_id": "8Aatj9Zy", "hashes": { - "sha512": "042d2aaf48c2af72d401d1aaf961162545def9217b38e0fb52ff2d6879efd54af9320d499caa0cc1175ecc0442099486c1504d59337c10359feaed0960eb66c0", - "sha1": "3faf8dcea2520a247d983dcb16ad43ab1e495bf4" + "sha512": "471e84a1fa896565e65619645d78945ebafff246661fbc851ec84a18f2bb575a75a31cea381544125ce36530fc486570e07b47f813fb063f71339238964bf8d6", + "sha1": "8c49656e74daa66fd8e1c9170fab72493aaa21dd" }, "required_dependencies": [ + "JaCEZUhg", "vvuO3ImH", - "8BmcQJ2H", - "JaCEZUhg" + "8BmcQJ2H" ], - "size": 211958, - "date_published": "2025-10-16T10:59:42.921213Z" + "size": 232711, + "date_published": "2025-10-26T03:39:53.401428Z" }, { "type": "curseforge", - "file_name": "diggerhelmet-1.20.1-1.0.0.25.jar", + "file_name": "diggerhelmet-1.20.1-1.0.0.26.jar", "mc_versions": [ "1.20.1" ], "loaders": [ - "neoforge", - "forge" + "forge", + "neoforge" ], "release_type": "beta", - "url": "https://edge.forgecdn.net/files/7132/920/diggerhelmet-1.20.1-1.0.0.25.jar", - "id": "7132920", + "url": "https://edge.forgecdn.net/files/7290/228/diggerhelmet-1.20.1-1.0.0.26.jar", + "id": "7290228", "parent_id": "1243596", "hashes": { - "sha1": "8c49656e74daa66fd8e1c9170fab72493aaa21dd", - "md5": "7209f67f6e71313209e12d76313efc22" + "sha1": "3fe3d9911069db3c0d816bdbbed01193ba880087", + "md5": "cd1ea215f760b776c3bf48e93188de04" }, "required_dependencies": [ - "302973", "309927", - "388172" + "388172", + "302973" ], - "size": 232711, - "date_published": "2025-10-21T12:56:28.140Z" + "size": 233928, + "date_published": "2025-12-03T15:49:31.887Z" } ] }, @@ -5758,7 +5758,7 @@ "files": [ { "type": "curseforge", - "file_name": "ftb-library-forge-2001.2.10.jar", + "file_name": "ftb-library-forge-2001.2.12.jar", "mc_versions": [ "1.20.1" ], @@ -5766,18 +5766,18 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/6807/424/ftb-library-forge-2001.2.10.jar", - "id": "6807424", + "url": "https://edge.forgecdn.net/files/7296/748/ftb-library-forge-2001.2.12.jar", + "id": "7296748", "parent_id": "404465", "hashes": { - "sha1": "9472bb30d0e38cb774b9cc7852bdd8dbf845622b", - "md5": "ae5292127a5a0d85d793bbce8f1e24dd" + "sha1": "7f36ec4af42ad1d69872c58022e93a9d1b9c82b7", + "md5": "8bbd067159587d80f1c5286ea52e567b" }, "required_dependencies": [ "419699" ], - "size": 791875, - "date_published": "2025-07-24T16:54:08.133Z" + "size": 780523, + "date_published": "2025-12-05T12:02:22.023Z" } ] }, @@ -8167,35 +8167,9 @@ "modrinth": "ordsPcFz" }, "files": [ - { - "type": "curseforge", - "file_name": "kotlinforforge-4.11.0-all.jar", - "mc_versions": [ - "1.20.2", - "1.20.3", - "1.20.1", - "1.20", - "1.20.4" - ], - "loaders": [ - "neoforge", - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/5402/61/kotlinforforge-4.11.0-all.jar", - "id": "5402061", - "parent_id": "351264", - "hashes": { - "sha1": "1fd8acfd75a2be2dc3cdcc7e816482b2e427d6e5", - "md5": "417caa90d17dc86cf7d24b802c2a5c56" - }, - "required_dependencies": [], - "size": 7193768, - "date_published": "2024-06-05T23:45:43.380Z" - }, { "type": "modrinth", - "file_name": "kotlinforforge-4.11.0-all.jar", + "file_name": "kotlinforforge-4.12.0-all.jar", "mc_versions": [ "1.19.3", "1.19.4", @@ -8210,16 +8184,42 @@ "neoforge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/ordsPcFz/versions/hmeyC41q/kotlinforforge-4.11.0-all.jar", - "id": "hmeyC41q", + "url": "https://cdn.modrinth.com/data/ordsPcFz/versions/Zsh14XeQ/kotlinforforge-4.12.0-all.jar", + "id": "Zsh14XeQ", "parent_id": "ordsPcFz", "hashes": { - "sha512": "d72707078f0c4fde78981c638ca976722f22a64ce74bdb489258790fe9886d763a7b1e0dfbc5429ddd3105d8a65d177f06242dfb1457e219e56c70dd3e8cbf2c", - "sha1": "1fd8acfd75a2be2dc3cdcc7e816482b2e427d6e5" + "sha512": "767f40030ed4b370a3838fa65ae1b79974f31979342fff7cc834a0d5f39eb28612642519352ff2a1dd5226ce1f745f8b3156ee3625ffde01219137d064c1ee40", + "sha1": "962fdb760409d6d71cbf079235f1ca94e3863a22" }, "required_dependencies": [], - "size": 7193768, - "date_published": "2024-06-06T01:10:20.253226Z" + "size": 7442998, + "date_published": "2025-12-03T19:48:01.561702Z" + }, + { + "type": "curseforge", + "file_name": "kotlinforforge-4.12.0-all.jar", + "mc_versions": [ + "1.20.2", + "1.20.1", + "1.20", + "1.20.4", + "1.20.3" + ], + "loaders": [ + "forge", + "neoforge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7291/67/kotlinforforge-4.12.0-all.jar", + "id": "7291067", + "parent_id": "351264", + "hashes": { + "sha1": "962fdb760409d6d71cbf079235f1ca94e3863a22", + "md5": "d6a40dede74edbe646b34a1bafd53b4d" + }, + "required_dependencies": [], + "size": 7442998, + "date_published": "2025-12-03T19:47:08.457Z" } ] }, @@ -10822,7 +10822,7 @@ "files": [ { "type": "modrinth", - "file_name": "Primitive creatures 2.6.jar", + "file_name": "primitive_creatures_2.7forge1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -10830,20 +10830,20 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/GfUwaZEm/versions/eqfW2BOb/Primitive creatures 2.6.jar", - "id": "eqfW2BOb", + "url": "https://cdn.modrinth.com/data/GfUwaZEm/versions/y7oCH4pT/primitive_creatures_2.7forge1.20.1.jar", + "id": "y7oCH4pT", "parent_id": "GfUwaZEm", "hashes": { - "sha512": "9f72b7053820e30c2b932f1587417e5d023cc0f019f938e0870d6f4284925e58698e6c624cf999acf95757819294cb4398c6937bb373d7efbc355e7687a97dee", - "sha1": "9a6f9e9c75363c7b14ec8d71e5641bbfd377f137" + "sha512": "09ed9ac29baa8ccd0449d953747458254b2f17baa0a2526a9ed55f8199225d6ebd642813d53dc938c3b18b2cbb5dd112912cd02ea709d71c4da23ca83b5bbb59", + "sha1": "f2fb38516941ac4193282af35bc2182ca98b17f5" }, "required_dependencies": [], - "size": 529007, - "date_published": "2025-11-28T00:42:21.156775Z" + "size": 526919, + "date_published": "2025-12-02T21:13:23.239833Z" }, { "type": "curseforge", - "file_name": "Primitive creatures 2.6forge.jar", + "file_name": "primitive_creatures_2.7forge1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -10851,18 +10851,18 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7269/624/Primitive creatures 2.6forge.jar", - "id": "7269624", + "url": "https://edge.forgecdn.net/files/7287/434/primitive_creatures_2.7forge1.20.1.jar", + "id": "7287434", "parent_id": "1218288", "hashes": { - "sha1": "9a6f9e9c75363c7b14ec8d71e5641bbfd377f137", - "md5": "3db0bd5100d722b6d959b7b37b07c725" + "sha1": "f2fb38516941ac4193282af35bc2182ca98b17f5", + "md5": "5848f8db0bc1a95133c10ff6c7dc2513" }, "required_dependencies": [ "388172" ], - "size": 529007, - "date_published": "2025-11-28T00:43:45.163Z" + "size": 526919, + "date_published": "2025-12-02T22:23:27.723Z" } ] }, @@ -11475,7 +11475,7 @@ "files": [ { "type": "modrinth", - "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.0.jar", + "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.2.jar", "mc_versions": [ "1.20", "1.20.1" @@ -11484,20 +11484,20 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/kepjj2sy/versions/F0YaeEhe/ShoulderSurfing-Forge-1.20.1-4.16.0.jar", - "id": "F0YaeEhe", + "url": "https://cdn.modrinth.com/data/kepjj2sy/versions/wnRqDILe/ShoulderSurfing-Forge-1.20.1-4.16.2.jar", + "id": "wnRqDILe", "parent_id": "kepjj2sy", "hashes": { - "sha512": "3d0a7b71d93d180b3f5431f1580b5c6270727ea2186b1881cb3ff0b9cbf0eeaa6393b94c2d4b47223d5529aca025d7840ad9f97586ea5deb6b744b8e7d70a2a7", - "sha1": "845ce7b7a62749d8fef35afa8b01fa9bab2ace67" + "sha512": "1c00c98ebdf45aed5946b45a5c94b46ad191376112ee9f98464df25eb1562415fa6a77e5fde7fca3431b8a43efb4bb847abdd1522dcdbc031fdc586723e71b4c", + "sha1": "6e17da80a59372ef96ffe75ed15f2a71ff6fc722" }, "required_dependencies": [], - "size": 253861, - "date_published": "2025-11-22T13:58:12.266150Z" + "size": 255775, + "date_published": "2025-11-30T22:40:18.587608Z" }, { "type": "curseforge", - "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.0.jar", + "file_name": "ShoulderSurfing-Forge-1.20.1-4.16.2.jar", "mc_versions": [ "1.20.1", "1.20" @@ -11506,16 +11506,16 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7249/331/ShoulderSurfing-Forge-1.20.1-4.16.0.jar", - "id": "7249331", + "url": "https://edge.forgecdn.net/files/7279/952/ShoulderSurfing-Forge-1.20.1-4.16.2.jar", + "id": "7279952", "parent_id": "243190", "hashes": { - "sha1": "845ce7b7a62749d8fef35afa8b01fa9bab2ace67", - "md5": "e30a5b3ba918ccc723b3cecc6fcdb516" + "sha1": "6e17da80a59372ef96ffe75ed15f2a71ff6fc722", + "md5": "5f28f3ac688565db38d7b6bfe41e0ee9" }, "required_dependencies": [], - "size": 253861, - "date_published": "2025-11-22T13:58:10.293Z" + "size": 255775, + "date_published": "2025-11-30T22:40:16.337Z" } ] }, @@ -13664,33 +13664,9 @@ "modrinth": "pAcsgLW2" }, "files": [ - { - "type": "curseforge", - "file_name": "taczjs-forge-1.3.6-mc1.20.1.jar", - "mc_versions": [ - "1.20.1" - ], - "loaders": [ - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/6639/214/taczjs-forge-1.3.6-mc1.20.1.jar", - "id": "6639214", - "parent_id": "1130998", - "hashes": { - "sha1": "9a75526b23e2c851df20749ba1a5f3e11f90c603", - "md5": "203a8995aa6a69c6b6ec38136d8bd4b5" - }, - "required_dependencies": [ - "1028108", - "238086" - ], - "size": 90443, - "date_published": "2025-06-11T07:06:10.097Z" - }, { "type": "modrinth", - "file_name": "taczjs-forge-1.3.6-mc1.20.1.jar", + "file_name": "taczjs-forge-1.3.7-mc1.20.1.jar", "mc_versions": [ "1.20.1" ], @@ -13698,19 +13674,43 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/pAcsgLW2/versions/u3boO1Li/taczjs-forge-1.3.6-mc1.20.1.jar", - "id": "u3boO1Li", + "url": "https://cdn.modrinth.com/data/pAcsgLW2/versions/vV5GSjdw/taczjs-forge-1.3.7-mc1.20.1.jar", + "id": "vV5GSjdw", "parent_id": "pAcsgLW2", "hashes": { - "sha512": "02427d1396fc7eae8ebcd030739e90ab0e31aaefbaee5a4642e6ce0b3f1c51084066f74d88d988768741bd76e8b5dbcf3960250ca0f5ab901d48752531e953c9", - "sha1": "9a75526b23e2c851df20749ba1a5f3e11f90c603" + "sha512": "ef11ded5705b8eeb9d8f38800615e0c3ca05236cba6462cbf5d52dcd8dc8c6b0e3250fc021bb3475479097c9d47faf1a7466974c64006984bbeaff75b52a6c65", + "sha1": "8a97de20e31f7e863a968f82fd90e196f4b3a3b3" }, "required_dependencies": [ "umyGl7zF", "SzzJttH8" ], - "size": 90443, - "date_published": "2025-06-11T07:07:34.035734Z" + "size": 90442, + "date_published": "2025-12-02T00:14:24.346621Z" + }, + { + "type": "curseforge", + "file_name": "taczjs-forge-1.3.7-mc1.20.1.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7284/184/taczjs-forge-1.3.7-mc1.20.1.jar", + "id": "7284184", + "parent_id": "1130998", + "hashes": { + "sha1": "8a97de20e31f7e863a968f82fd90e196f4b3a3b3", + "md5": "acdef4ed6293254878749b7c8294370d" + }, + "required_dependencies": [ + "1028108", + "238086" + ], + "size": 90442, + "date_published": "2025-12-02T01:43:33.197Z" } ] }, @@ -13738,7 +13738,7 @@ "files": [ { "type": "modrinth", - "file_name": "tacz-tweaks-2.10.0-all.jar", + "file_name": "tacz-tweaks-2.11.2-all.jar", "mc_versions": [ "1.20", "1.20.1" @@ -13747,24 +13747,24 @@ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/H8peNuJG/versions/6u8Qmehi/tacz-tweaks-2.10.0-all.jar", - "id": "6u8Qmehi", + "url": "https://cdn.modrinth.com/data/H8peNuJG/versions/qD990J7Z/tacz-tweaks-2.11.2-all.jar", + "id": "qD990J7Z", "parent_id": "H8peNuJG", "hashes": { - "sha512": "9c5c35e3aa7d544f21af76e665894a8412c5252c81c0cc23736d6ec58749388af3baf6aa7aac292cf434ff974c8da4be0f7ee6beb40d6448ea9281859404cc32", - "sha1": "204a636d7e84ba8631c15f11f84be8c635e7ab4f" + "sha512": "67ab623a60951ce1d6bb9b5a9e0b7a8770b399d19c8de739a7bc7a4f3536126a232cb1292be4f7599b921c2075344dc360e6a80fabbfe6c73c775bcb77fae739", + "sha1": "889c0885b6388fc7966b956a5df4efbb1c758965" }, "required_dependencies": [ "ordsPcFz", "SzzJttH8", "1eAoo2KR" ], - "size": 1737843, - "date_published": "2025-11-05T13:18:31.842515Z" + "size": 1748066, + "date_published": "2025-12-04T12:41:22.415350Z" }, { "type": "curseforge", - "file_name": "tacz-tweaks-2.10.0-all.jar", + "file_name": "tacz-tweaks-2.11.2-all.jar", "mc_versions": [ "1.20.1", "1.20" @@ -13773,20 +13773,20 @@ "forge" ], "release_type": "release", - "url": "https://edge.forgecdn.net/files/7188/921/tacz-tweaks-2.10.0-all.jar", - "id": "7188921", + "url": "https://edge.forgecdn.net/files/7293/523/tacz-tweaks-2.11.2-all.jar", + "id": "7293523", "parent_id": "1193263", "hashes": { - "sha1": "204a636d7e84ba8631c15f11f84be8c635e7ab4f", - "md5": "5e30e520314ac6855883f2b7b164bb8c" + "sha1": "889c0885b6388fc7966b956a5df4efbb1c758965", + "md5": "0b11bd77a8d1e56bd8673cc9946023e1" }, "required_dependencies": [ "667299", "351264", "1028108" ], - "size": 1737843, - "date_published": "2025-11-05T13:18:30.730Z" + "size": 1748066, + "date_published": "2025-12-04T12:41:22.310Z" } ] }, @@ -14817,47 +14817,48 @@ "modrinth": "SzzJttH8" }, "files": [ - { - "type": "curseforge", - "file_name": "tacz-1.20.1-1.1.6-hotfix.jar", - "mc_versions": [ - "1.20.1" - ], - "loaders": [ - "forge" - ], - "release_type": "release", - "url": "https://edge.forgecdn.net/files/6654/541/tacz-1.20.1-1.1.6-hotfix.jar", - "id": "6654541", - "parent_id": "1028108", - "hashes": { - "sha1": "e951d81b5f452bcad47c20d5b491fd26f8de8ce2", - "md5": "51636447584a75f8d2db2fb930d110b1" - }, - "required_dependencies": [], - "size": 47826468, - "date_published": "2025-06-15T15:09:58.720Z" - }, { "type": "modrinth", - "file_name": "tacz-1.20.1-1.1.6-hotfix.jar", + "file_name": "tacz-1.20.1-1.1.7-release.jar", "mc_versions": [ + "1.20", "1.20.1" ], "loaders": [ "forge" ], "release_type": "release", - "url": "https://cdn.modrinth.com/data/SzzJttH8/versions/quyywMZF/tacz-1.20.1-1.1.6-hotfix.jar", - "id": "quyywMZF", + "url": "https://cdn.modrinth.com/data/SzzJttH8/versions/fErpFI0g/tacz-1.20.1-1.1.7-release.jar", + "id": "fErpFI0g", "parent_id": "SzzJttH8", "hashes": { - "sha512": "2db28186cc436b2e163db822dc0632fc32d5080adea3b3a0f891255cefe007ec029acd1e477f01adf5db8de7f79d14d4afa67c31a53b8c5ceaf00ce72b5de501", - "sha1": "e951d81b5f452bcad47c20d5b491fd26f8de8ce2" + "sha512": "3f4aa30d50e75b1e4e5291c4eee59107da60355c5e4b59fc3be0bc84e611d1acf0320aa8a7b905ab42d0c464d19765e58bac16e9ad6770860c19695e887ccc94", + "sha1": "869decffc818e6ccd7d6d0d734aecfaa265e908b" }, "required_dependencies": [], - "size": 47826468, - "date_published": "2025-06-15T15:12:58.577730Z" + "size": 52403127, + "date_published": "2025-12-01T04:26:59.653447Z" + }, + { + "type": "curseforge", + "file_name": "tacz-1.20.1-1.1.7-release.jar", + "mc_versions": [ + "1.20.1" + ], + "loaders": [ + "forge" + ], + "release_type": "release", + "url": "https://edge.forgecdn.net/files/7278/3/tacz-1.20.1-1.1.7-release.jar", + "id": "7278003", + "parent_id": "1028108", + "hashes": { + "sha1": "869decffc818e6ccd7d6d0d734aecfaa265e908b", + "md5": "27696ec987eefbec8e7ba6596e418b35" + }, + "required_dependencies": [], + "size": 52403127, + "date_published": "2025-11-30T12:53:47.060Z" } ] },