Alpha release: 0.10 (#1285)

* added resource pack for the old create copper textures, reverted the new models of the greate pumps

* I can't remember why I added this

* added back ad astra oxygen loader JEI page, removed greate haunting + ae2 entropy

* corrected average temp in orbits, since spacesuits have ambiental compat now

* nerfed VI centrifuge times

* adjusted recipes of crushing wheels to need a machine hull now

* disabled orbits

* added rock duping recipes for vanilla basalt, added greenhouse recipe for spore blossom

* updated steam n rails, added entityjs

* fix typo on gas tanks

* cleanup

* started moon rabbit entity

* nerfed the steam age fire clay recipe because let's be real

* ah fuck it I'll be nice

* Steam N Rails loottable (#1220)

fix for the conductor

Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>

* merging langs

* idk entity stuff

* lang keys

* removed ae2-things

* I think that's a better tagline

Signed-off-by: Pyritie <pyritie@gmail.com>

* - Lots of ui updates. And a couple fixes. (#1221)

Co-authored-by: Pyritie <pyritie@gmail.com>

* Update README.md

* added pt_br ore field guide pages

* Changes the greg wood plank and treated wood plank recipes to follow a more realistic processing chain (#1223)

* adds MDF, reworks treated wood and normal wood plate crafting chains

* removes treated wood plank from the minecraft:planks tag

* changed a few create recipes to need bolts instead of screws

* adjusted the water wheel recipe again so it's not quite so evil

* quest tweaks

* fixed the lathe not making gem rods, also lens stuff

* removed the other ad astra material components (for now)

* fixed the vibrating table with rose quartz

* Some small stuff (#1225)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* updated kubejs-tfc

* Delete fabricDefaultResourcePacks.dat

* .gitignore

* .gitignore

* update: config

* Modern markings integration (#1228)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* hid the tfg icon from jei

* more fiddling with the moon rabbit houses. I'm just gonna disable them until I find out what's causing the boxes under them, they look too ugly otherwise

* added a bunch of plants from Better End, tags, recipes, license, credits (#1229)

* convert the nether mushrooms into the new plant block builder type too

* now only the recipes that use 8 inputs actually use 8 fertiliser

* don't need you

* fixed the lightblooms from spawning on top of each other

* I am stupid

* oh yeah, kubejs-tfc fixed this

* nerfed the steam age coke oven brick a little

* fixed ethane quest requiring plant ball route

* the moon and orbits are now silent

* disabled the correct planets

* added earth orbit space station

* unused

* fix ae2 certus quartz compressor recipe warning

* dunno how that happened

* some tidying

* disable steam/combustible/gas generators on other dims?

* updated entityjs, everycomp, moonlight, packetfixer, vintageimprovements

* added missing sand pile models

* comma

* dimension settings, planet renderer, etc

* removes any other integrated create recipes from greate machines

* removed forgiving world, added simply stacked dimensions, added configs (#1233)

* replaced all our water input fluids with a tag, so river water works too

* fixed missing recipes for create deco ladders

* langs

* cheese

* adding greenhouse tier bonuses + fixing the fertilised recipes chanced outputs consistency

* oxygenated climate stuff

* changing some other recipes to use bolts instead of nuggets

* Updated stromatolite textures + some new venus foliage (#1234)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* langs, closes #1231

* these are handled by the decorative plant block builder now

* sea and spring water now also freeze in space

* added recipe to smelt wrought iron ingots back into cast iron in case you need them in that state

* ukranian langs

* ukranian translations for the field guide ore veins

* blacklisting super chests from contraptions

* oops

* moon cheese tags

* Moved some items from tfg-core (#1242)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* ukranian field guide ore vein langs

* Updated textures for tier-1 rocket and food oven. (#1246)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* changed the moonbase flag to use the new icon

* langs

* 🐇

* Mechanical press (#1243)

* welcome back, mechanical press

* EMI category order

* langs

* quests

* emi categories

* quests

* greate stress settings for the mech press

* I got distracted so I guess these are on this branch now

* removed welding recipes from the pressurizer

* recipe additions and changes for the mech press!

* let's go gambling!

* added flux to the mech press "welding" recipes

* flag changes again

* stops a future version of greate from generating a bender-to-mech-press recipe for double ingots

* fixed the FE cables still being in the loot chests

* desh needs an EBF now

* Updated more textures for ad-astra stuff + new panorama (#1247)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* Crop stuff for biodiesel, works on my machine . (#1248)

* Added the crop stuff I made so far

* I think thiss should be fine?

* I litteraly have no idea what I am doing

* I hope this fixes everything

---------

Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>

* oops we had two fluix blocks

* langs

* sorry, no floor alcohol on the moon

* cleanup of #1248

Related Work Items: #12

* bottle labels can use any wax

* seed oil can be used in lamps now, added recipes to get it early

* missing uses for clean foil packs

* pakku updates, removed entityjs (for now), added ad-astra-3d

* added create factory logistics

* forgot some ore processing forge hammer recipes

* I think that's the ore processing chapter sorted

* ah screw it, orbits

* replace wood dust for carbon in biomass distillation

* langs n quests

* made solars worse on earth

* space food tag

* gave calorie paste a little nutrition

* made the space station quest optional

* changelog

* tweaks and balances after playtesting a bit

* let's give these more fruits

* made these a little more spread out

* some more tweaks

* langs

* Biodiesel Stuff (#1249)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* added bio fuel quests, more biodiesel recipes

* fixes #1240

Related Work Items: #12

* excluded ad astra and advanced peripherals books

* this stupid quest that I hate

* clean up this infinite resources entry

* fixed blockstates

* field guide

* got the oil crops all working!

* langs

* moon bedrock veins

* langs

* buffing air distributor again

* apparently 9 inputs is the maximum, so no flux allowed

* seed oil now lasts as long as soybean oil in a lamp

* oops, greate's update meant all our macerator removals stopped working

* fixes #1203 and some other incorrect/missing food recipes

* Quest changes (#1251)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* tweaks to default keybinds

* Hide wild crops and forgot to push some quest stuff (#1252)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

* - Hide wild crops from emi

* - Hide wild crops from emi

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* pakku update

* it's ok xikaro it's just adding a credit line

Signed-off-by: Pyritie <pyritie@gmail.com>

* Moon rabbit meat stuff (#1254)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

* - Hide wild crops from emi

* - Hide wild crops from emi

* - Moon rabbit meat

* - Moon rabbit meat

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* Feature/new molds (#1253)

* Update recipes.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update constants.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update recipes.molds.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update recipes.materials.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update recipes.materials.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
Co-authored-by: Pyritie <pyritie@gmail.com>

* delete chisel and bits

* this damn loot table

* removed cast iron tongs

* more unification for #898, also a workaround for #963 maybe?

* quests

* removed power tool recycling recipes because of duping, fixed crafting table spring recipes

* whoops

* changed the repeatable quest to a separate one, so new players still get the books on spawn

* fixed orbit structures

* renamed tfc grooming stations

* removed sunsets in all orbits, cleaned up the dim files

* firmalife update!

* no idea if this is fixed in GT7 or not, but the nano/quark armor has actual armor points now

* rename horse crank to animal crank

* changelog

* updated domum

* wire cutter mold and Hypertube compat (#1258)

* Update constants.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update recipes.molds.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Create hypertube.png

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Create recipes.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update main_server_script.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update recipes.js

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add recipe for Bamboo Hopper. Add quest for it too

* species update! also some biome spawn rates of limpets, and adding create hypertubes to pakku

* pakku again

* Machine casings for Tom and moon rabbit meat stuff I forgot to push (#1259)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

* - Hide wild crops from emi

* - Hide wild crops from emi

* - Moon rabbit meat

* - Moon rabbit meat

* - Moon rabbit meat textures and casings for tom

* - models

* - oops

* - rocket

* - ooops

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* argh

* whoops

* fiiiiiiine

* fixed unobtainable cobalt brass buzzsaw before mv

* quests

* firmalife quests

* added programmed circuit card

* 🍰🎂

* langs

* hide these species recipes

* unhide these new pearls

* remove ender eye, added vitrified ender pearl

* Added dry ice support for lunchboxes (#1262)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

* - Hide wild crops from emi

* - Hide wild crops from emi

* - Moon rabbit meat

* - Moon rabbit meat

* - Moon rabbit meat textures and casings for tom

* - models

* - oops

* - rocket

* - ooops

* - Added dry ice support for lunchboxes

* - Fixed soybean oil quest

* - Added dry ice block

* - Assets for dry ice block

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* fixed amounts in kaolinite chem reaction, added ruby version

* changed combustion recipes to be dimension-limited again

* changelog

* well actually it's not done yet

* create 6 configs

* langs

* fixed some damascus steel stuff still showing up

* fixed the wild rapeseed/sunflowers not dropping their products

* update pakku

* update pakku

* fixed extruder mold recipe

* fucking gregtech

* langs

* orbit dim markers

* Moon quest update (#1266)

* Changes for quests LV MV Energy Chapter

* Fix AE2 and Solar Panel

* Revert HV change

* Feature/hopper retexture (#1267)

* Create bamboo_hopper.png

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Create bamboo_hopper.bbmodel

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Add files via upload

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* langs

* Update hv__high_voltage.snbt (#1268)

Signed-off-by: TomPlop <tomdidome@gmail.com>

* quests, langs, slight change to the vitrified pearl recipe

* Adding Ad Astra block to gt facade (#1269)

Signed-off-by: TomPlop <tomdidome@gmail.com>

* Bronze variant Mortars (#1270)

* Removed infinite lava and fixed refrigerant recipes (#1271)

* - Lots of ui updates. And a couple fixes.

* - New button textures.
- Fixed campfire loot table.
- Made anvil rod recipes easier.
- Added assembler recipes for multiblock tank parts.

* - Added assembler recipes for multiblock tank parts.

* - Updated Changelog

* - Some more UI tweaks.
- Added modern-markings mod with integration.

* - Updated stromatolite textures
- Added some more WIP venus foliage

* - Moved some blocks over from tfg-core.

* - Updated textures for tier-1 rocket and food oven.

* - Updated textures for more ad-astra stuff + new panorama

* - Biodiesel stuff

* - Quests re-ordering and some new ones

* - Hide wild crops from emi

* - Hide wild crops from emi

* - Moon rabbit meat

* - Moon rabbit meat

* - Moon rabbit meat textures and casings for tom

* - models

* - oops

* - rocket

* - ooops

* - Added dry ice support for lunchboxes

* - Fixed soybean oil quest

* - Added dry ice block

* - Assets for dry ice block

* - Removed infinite lava

* - Added circuit to tetrafluoroethylene_from_chloroform recipe

* - Fixed my crack-head math

* - update Changelog

---------

Co-authored-by: Pyritie <pyritie@gmail.com>

* move: screenshots

* move: wiki

* started porting over the hv quest langs

* Adding the Large Solar Panel (#1275)

* Adding the Large Solar Panel

* Update config for Ad Astral Solar increase possible output

* fix conflict

* quarktech stuff works as a space suit, though you'll still need the chestplate (for now)

* langs

* update pakku

* move: title + icon modern

* revert: move sources

* revert: images

* rename: curseforge_gallery

* Adding the LSP Structure (#1276)

Oups

Signed-off-by: TomPlop <tomdidome@gmail.com>

* Adding recipe type for LSP (#1277)

Signed-off-by: TomPlop <tomdidome@gmail.com>

* langs, disabled unused casings

* fixed kaolinite steam machine consistency

* quest tweaks

* fixed naming of casing blocks

* added LSP to space survival chapter

* added HS crushing wheels to HV tab too

* gonna kill this page - lava is no longer infinite, stone dusts are nerfed to be not very good, and the terrariums will be going away in the future

* - Added update banners (#1278)

* Revert "- Added update banners (#1278)"

This reverts commit 5f01d3385c.

* changelog

* EMI categories

* langs

* haha how did that get in there!

* q

* Update README.md (#1282)

Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>

* Merging guns branch (#1283)

* Feature/ulv ev guns (#1280)

* update pakku mods

* mod config stuff

* Port over of current guns

* ae2 gun recipes

* nitrocellulose and other stuff

* more recipes

* gun packs

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* Update pakku-lock.json

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* LICENSE

* changed powderbarrel to use lumber instead of wood boards

* lang

* gunpowder unification

* emi categories

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
Co-authored-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* hid new sophisticated backpack upgrade

* pakku

* added programmed circuit card to ae2 quests

* dump

* Update forge-auto-install.txt

---------

Signed-off-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
Signed-off-by: Pyritie <pyritie@gmail.com>
Signed-off-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
Signed-off-by: TomPlop <tomdidome@gmail.com>
Signed-off-by: Redeix <59435925+Redeix@users.noreply.github.com>
Co-authored-by: Jean Roberto de Souza <81846511+JeanRdSz@users.noreply.github.com>
Co-authored-by: Gustavo <ofoxsmith@outlook.com>
Co-authored-by: Redeix <59435925+Redeix@users.noreply.github.com>
Co-authored-by: Xikaro <os.valerievich@ya.ru>
Co-authored-by: Kayla <66163851+kaylatheegg@users.noreply.github.com>
Co-authored-by: 34y34y34y34y34y34y34y34y34y <34y34y34y34y34y34y34y34y34y@gmail.com>
Co-authored-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
Co-authored-by: Nebby1999 <nebby131999@gmail.com>
Co-authored-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: Nebby <78170922+Nebby1999@users.noreply.github.com>
This commit is contained in:
Pyritie 2025-07-13 14:07:12 +01:00 committed by GitHub
parent 1bfb5a969b
commit 417fa894ae
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
1696 changed files with 277884 additions and 17219 deletions

View file

@ -0,0 +1,223 @@
// priority: 0
function registerTFCDataForTFG(event) {
registerTFGHeatData(event);
registerTFGItemSize(event);
registerTFGSupportData(event);
registerTFGFoodData(event);
registerTFGFauna(event);
registerTFGCropRanges(event);
registerTFGFLPlanters(event);
}
const registerTFGHeatData = (event) => {
event.itemHeat('tfg:latex_soaked_gloves', 1.0, null, null)
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.itemHeat(`tfg:decorative_vase/unfired/${color}`, 1.0, null, null)
})
event.itemHeat('tfg:decorative_vase/unfired', 1.0, null, null)
event.itemHeat('tfg:sunflower_product', 1.0, null, null)
event.itemHeat('tfg:roasted_sunflower_seeds', 1.0, null, null)
}
const registerTFGItemSize = (event) => {
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.itemSize(`tfg:decorative_vase/${color}`, 'normal', 'medium', `decorative_vase/${color}`)
event.itemSize(`tfg:decorative_vase/unfired/${color}`, 'normal', 'medium', `decorative_vase/unfired/${color}`)
})
event.itemSize('tfg:decorative_vase', 'normal', 'medium', 'decorative_vase')
event.itemSize('tfg:decorative_vase/unfired', 'normal', 'medium', 'decorative_vase/unfired')
event.itemSize('tfg:fishing_net/wood', 'large', 'medium', 'wood_fishing_net')
event.itemSize('tfg:fishing_net/brass', 'large', 'medium', 'brass_fishing_net')
event.itemSize('tfg:fishing_net/rose_gold', 'large', 'medium', 'rose_gold_fishing_net')
event.itemSize('tfg:fishing_net/sterling_silver', 'large', 'medium', 'sterling_silver_fishing_net')
event.itemSize('tfg:fishing_net/invar', 'large', 'medium', 'invar_fishing_net')
event.itemSize('tfg:fishing_net/cupronickel', 'large', 'medium', 'cupronickel_fishing_net')
event.itemSize('tfg:fishing_net/tin_alloy', 'large', 'medium', 'tin_alloy_fishing_net')
event.itemSize('tfg:fishing_net/magnalium', 'large', 'medium', 'magnalium_fishing_net')
}
//up, down, horizontal
const registerTFGSupportData = (event) => {
event.support('tfg:light_concrete_support_horizontal', 4, 4, 8, 'light_concrete_support')
event.support('tfg:dark_concrete_support_horizontal', 4, 4, 8, 'dark_concrete_support')
event.support('tfg:reinforced_light_concrete_support_horizontal', 6, 6, 16, 'reinforced_light_concrete_support')
event.support('tfg:reinforced_dark_concrete_support_horizontal', 6, 6, 16, 'reinforced_dark_concrete_support')
event.support('tfg:rebar_support_horizontal', 4, 4, 8, 'rebar_support')
event.support('tfg:steel_support_horizontal', 6, 6, 16, 'steel_support')
const other_stone = ['pyroxenite', 'migmatite', 'travertine']
const stone_types = global.TFC_STONE_TYPES.concat(other_stone)
stone_types.forEach(stone => {
event.support(`tfg:${stone}_support_horizontal`, 2, 2, 4, `${stone}_support`)
})
}
const registerTFGFoodData = (event) => {
// birt has the same stats as chicken
event.foodItem('tfg:food/raw_birt', food => {
food.hunger(4)
food.protein(1.5)
food.decayModifier(3)
})
event.foodItem('tfg:food/cooked_birt', food => {
food.hunger(4)
food.saturation(2)
food.protein(2.5)
food.decayModifier(2.25)
})
event.foodItem('tfg:food/raw_crawlermari', food => {
food.hunger(4)
food.water(5)
food.protein(1.1)
food.decayModifier(3)
})
event.foodItem('tfg:food/cooked_crawlermari', food => {
food.hunger(4)
food.saturation(2)
food.protein(2.2)
food.decayModifier(2.25)
})
event.foodItem('tfg:food/raw_limpet', food => {
food.hunger(4)
food.water(5)
food.protein(1.2)
food.decayModifier(3)
})
event.foodItem('tfg:food/cooked_limpet', food => {
food.hunger(5)
food.saturation(2)
food.protein(2.4)
food.decayModifier(2.25)
})
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')
})
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)
})
event.foodItem('tfg:food/raw_moon_rabbit', food => {
food.hunger(4)
food.protein(2.0)
food.decayModifier(3)
})
event.foodItem('tfg:food/cooked_moon_rabbit', food => {
food.hunger(6)
food.saturation(2.5)
food.protein(5)
food.decayModifier(2.25)
})
}
const registerTFGFauna = (event) => {
//event.fauna(climate => { }, fauna => { fauna.chance(0) }, 'tfg:moon_rabbit')
}
const registerTFGCropRanges = (event) => {
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')
}
const registerTFGFLPlanters = (event) => {
event.firmalifePlantable(
'tfg:sunflower_seeds',
'large',
10,
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',
10,
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
)
}

View file

@ -80,4 +80,12 @@ function registerTFGLoots(event) {
);
})
});
//#region Blocks
event.addBlockLootModifier('minecraft:campfire')
.removeLoot(Ingredient.all)
.addLoot('minecraft:campfire')
//#endregion
};

View file

@ -2,6 +2,7 @@
function registerTFGCollapseRecipes(event) {
// #region Nether
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', 'minecraft:deepslate')
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', 'tfg:rock/hardened_deepslate')
event.recipes.tfc.collapse('minecraft:blackstone', 'minecraft:blackstone')
@ -13,8 +14,44 @@ function registerTFGCollapseRecipes(event) {
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', '#forge:ores_in_ground/deepslate')
event.recipes.tfc.collapse('minecraft:blackstone', '#forge:ores_in_ground/pyroxenite')
event.recipes.tfc.collapse('minecraft:dripstone_block', '#forge:ores_in_ground/dripstone')
event.recipes.tfc.landslide('tfg:ash_pile', 'tfg:ash_pile')
event.recipes.tfc.landslide('minecraft:cobbled_deepslate', 'minecraft:cobbled_deepslate')
// #endregion Nether
// #region Space
event.recipes.tfc.collapse('ad_astra:moon_cobblestone', 'ad_astra:moon_stone')
event.recipes.tfc.collapse('ad_astra:moon_cobblestone', 'tfg:rock/hardened_moon_stone')
event.recipes.tfc.landslide('ad_astra:moon_cobblestone', 'ad_astra:moon_cobblestone')
event.recipes.tfc.collapse('ad_astra:moon_cobblestone', '#forge:ores_in_ground/moon_stone')
event.recipes.tfc.landslide('ad_astra:moon_sand', 'ad_astra:moon_sand')
event.recipes.tfc.collapse('ad_astra:moon_deepslate', 'ad_astra:moon_deepslate')
event.recipes.tfc.collapse('ad_astra:moon_deepslate', 'tfg:rock/hardened_moon_deepslate')
event.recipes.tfc.collapse('ad_astra:moon_deepslate', '#forge:ores_in_ground/moon_deepslate')
event.recipes.tfc.collapse('ad_astra:mars_cobblestone', 'ad_astra:mars_stone')
event.recipes.tfc.collapse('ad_astra:mars_cobblestone', 'tfg:rock/hardened_mars_stone')
event.recipes.tfc.landslide('ad_astra:mars_cobblestone', 'ad_astra:mars_cobblestone')
event.recipes.tfc.collapse('ad_astra:mars_cobblestone', '#forge:ores_in_ground/mars_stone')
event.recipes.tfc.landslide('ad_astra:mars_sand', 'ad_astra:mars_sand')
event.recipes.tfc.collapse('ad_astra:venus_cobblestone', 'ad_astra:venus_stone')
event.recipes.tfc.collapse('ad_astra:venus_cobblestone', 'tfg:rock/hardened_venus_stone')
event.recipes.tfc.landslide('ad_astra:venus_cobblestone', 'ad_astra:venus_cobblestone')
event.recipes.tfc.collapse('ad_astra:venus_cobblestone', '#forge:ores_in_ground/venus_stone')
event.recipes.tfc.landslide('ad_astra:venus_sand', 'ad_astra:venus_sand')
event.recipes.tfc.collapse('ad_astra:mercury_cobblestone', 'ad_astra:mercury_stone')
event.recipes.tfc.collapse('ad_astra:mercury_cobblestone', 'tfg:rock/hardened_mercury_stone')
event.recipes.tfc.landslide('ad_astra:mercury_cobblestone', 'ad_astra:mercury_cobblestone')
event.recipes.tfc.collapse('ad_astra:mercury_cobblestone', '#forge:ores_in_ground/mercury_stone')
event.recipes.tfc.landslide('ad_astra:mercury_sand', 'ad_astra:mercury_sand')
event.recipes.tfc.collapse('ad_astra:glacio_cobblestone', 'ad_astra:glacio_stone')
event.recipes.tfc.collapse('ad_astra:glacio_cobblestone', 'tfg:rock/hardened_glacio_stone')
event.recipes.tfc.landslide('ad_astra:glacio_cobblestone', 'ad_astra:glacio_cobblestone')
event.recipes.tfc.collapse('ad_astra:glacio_cobblestone', '#forge:ores_in_ground/glacio_stone')
event.recipes.tfc.landslide('ad_astra:glacio_sand', 'ad_astra:glacio_sand')
// #endregion
}

View file

@ -3,28 +3,19 @@
function registerTFGConvertingRecipes(event) {
event.shapeless("afc:tree_tap", "treetap:tap")
event.shapeless("tfg:mv_food_refrigerator", "tfcea:refrigerator")
event.shapeless('greate:steel_cogwheel', 'create:cogwheel')
event.shapeless('greate:large_steel_cogwheel', 'create:large_cogwheel')
event.shapeless('greate:steel_shaft', 'create:shaft')
event.shapeless('greate:steel_crushing_wheel', 'create:crushing_wheel')
event.shapeless('greate:steel_encased_fan', 'create:encased_fan')
event.shapeless('greate:steel_gearbox', 'create:gearbox')
event.shapeless('greate:steel_mechanical_mixer', 'create:mechanical_mixer')
event.shapeless('greate:steel_mechanical_saw', 'create:mechanical_saw')
event.shapeless('greate:steel_mechanical_pump', 'create:mechanical_pump')
event.shapeless('greate:rubber_belt_connector', 'create:belt_connector')
event.shapeless('greate:steel_vertical_gearbox', 'create:vertical_gearbox')
event.shapeless('greate:rubber_belt_connector', 'create:belt_connector')
event.shapeless('create:zinc_ingot', 'gtceu:zinc_ingot')
event.shapeless('create:brass_ingot', 'gtceu:brass_ingot')

View file

@ -0,0 +1,875 @@
// priority: 0
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGFoodRecipes(event) {
const $ISPRecipeLogic = Java.loadClass("su.terrafirmagreg.core.common.data.tfgt.machine.trait.ISPOutputRecipeLogic")
const $SizedIngredient = Java.loadClass("com.gregtechceu.gtceu.api.recipe.ingredient.SizedIngredient")
const Sized = (ing, amount) => $SizedIngredient.create(ing, amount)
/**
* @typedef {Object} FoodRecipeData
* @property {number?} circuit
* @property {Internal.GTRecipeComponents$FluidIngredientJS_[]?} fluidInputs
* @property {Internal.FluidStackJS[]?} fluidOutputs
* @property {(string | [string, Internal.Ingredient])[]?} itemInputs
* @property {string[]?} itemOutputs Ingredient outputs - first output is replaced with ISP output if defined
* @property {Internal.ItemStackProviderJS?} itemOutputProvider ItemStackProvider which provides the recipe output.
*
* **NOTE:** TFC Ingredients do not support item counts higher than 1. Do `Sized(TFCIngredient('item:item'), count)` instead of `TFCIngredient('[count]x item:item')`
*/
//#region Helper funcs
/**
* @param {"food_oven"|"food_processor"} type
* @param {string} id
* @param {string} duration
* @param {string} EUt
* @param {FoodRecipeData} data
*/
function registerFoodRecipe(type, id, duration, EUt, text, data) {
if (data.itemInputs === undefined) data.itemInputs = []
if (data.itemOutputs === undefined) data.itemOutputs = []
if (data.fluidInputs === undefined) data.fluidInputs = []
if (data.fluidOutputs === undefined) data.fluidOutputs = []
let gregInputs = [], inputs= []
let outputFirstIndex = (data.itemOutputProvider === undefined) ? 0 : 1
data.itemInputs.forEach(item => {
if (typeof item === "string") {
gregInputs.push(item)
const match = item.match(/^(\d+)\s*x\s*/i);
let count = 1
if (match) {
count = parseInt(match[1]);
item = item.slice(match[0].length);
}
inputs.push($SizedIngredient.create(item, count))
} else {
gregInputs.push(item[0])
inputs.push(item[1])
}
})
$ISPRecipeLogic.RegisterRecipeData(type + "/" + id, inputs, (data.itemOutputProvider === undefined) ? null : data.itemOutputProvider.asCanonClass(), data.itemOutputs.slice(outputFirstIndex).map(i => Item.of(i)))
let r = event.recipes.gtceu[type](id)
.duration(duration)
.EUt(EUt)
if (data.circuit) r.circuit(data.circuit)
if (data.itemOutputs.length > 0) r.itemOutputs(data.itemOutputs)
if (data.itemInputs.length > 0) r.itemInputs(data.itemInputs)
if (data.fluidInputs.length > 0) r.inputFluids(data.fluidInputs);
if (data.fluidOutputs.length > 0) r.outputFluids(data.fluidOutputs);
if (text != "") r.addDataString("action", text);
return r;
}
/**
* @param {string} id
* @param {number} duration
* @param {EUt} EUt
* @param {FoodRecipeData} data
*/
const processorRecipe = (id, duration, EUt, data) => registerFoodRecipe("food_processor", id, duration, EUt, "", data)
/**
* @param {string} id
* @param {number} duration
* @param {EUt} EUt
* @param {FoodRecipeData} data
* @param {string} text
*/
const processorRecipeText = (id, duration, EUt, text, data) => registerFoodRecipe("food_processor", id, duration, EUt, text, data)
/**
* @param {string} id
* @param {string} input
* @param {string} out
* @param {Internal.FluidIngredient?} fluid
* @param {boolean?} isFirmaDynamic
*/
function cookingRecipe(id, input, out, fluid, isFirmaDynamic) {
return registerFoodRecipe("food_oven", id, 300, 32, "", {
itemInputs: [input],
itemOutputs: [out],
fluidInputs: (fluid === undefined) ? [] : [fluid],
itemInputs: [input],
itemOutputProvider: (isFirmaDynamic) ? TFC.isp.of(out).firmaLifeCopyDynamicFood() : TFC.isp.of(out).copyFood().addTrait("firmalife:oven_baked")
})
}
//#endregion
//#region ================= Meat cooking =================
global.TFC_MEAT_RECIPE_COMPONENTS.forEach(item => {
cookingRecipe(item.name, item.input, item.output)
})
//#endregion
//#region ================= TFC Grains =================
global.TFC_GRAINS.forEach(grain => {
// Raw crop to grain
processorRecipe(`${grain}_grain`, 100, 8, {
circuit: 30,
itemInputs: [`tfc:food/${grain}`],
itemOutputs: [`tfc:food/${grain}_grain`],
itemOutputProvider: TFC.isp.of(`tfc:food/${grain}_grain`).copyOldestFood()
})
// Grain to flour
processorRecipe(`${grain}_flour`, 100, 8, {
circuit: 31,
itemInputs: [`tfc:food/${grain}_grain`],
itemOutputs: [`2x tfc:food/${grain}_flour`],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_flour`).copyOldestFood()
})
// Flatbread dough
processorRecipe(`${grain}_flatbread_dough`, 300, 8, {
itemInputs: [`tfc:food/${grain}_flour`],
itemOutputs: [`2x tfc:food/${grain}_dough`],
circuit: 1,
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_dough`).copyFood()
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
// Firmalife dough
processorRecipe(`${grain}_dough`, 300, 16, {
itemInputs: [`tfc:food/${grain}_flour`, `#tfc:sweetener`],
itemOutputs: [`4x firmalife:food/${grain}_dough`],
circuit: 1,
fluidInputs: [Fluid.of('firmalife:yeast_starter', 200)],
itemOutputProvider: TFC.isp.of(`4x firmalife:food/${grain}_dough`).copyFood()
})
// Bread baking
cookingRecipe(`${grain}_flatbread`, `tfc:food/${grain}_dough`, `firmalife:food/${grain}_flatbread`)
cookingRecipe(`${grain}_bread`, `firmalife:food/${grain}_dough`, `tfc:food/${grain}_bread`)
processorRecipe(`${grain}_bread_slice`, 10, 8, {
circuit: 1,
itemInputs: [`tfc:food/${grain}_bread`],
itemOutputs: [`2x firmalife:food/${grain}_slice`],
itemOutputProvider: TFC.isp.of(`2x firmalife:food/${grain}_slice`).copyOldestFood()
})
//Sandwich making
let breadTypes = [["bread", `tfc:food/${grain}_bread`], ["flatbread", `firmalife:food/${grain}_flatbread`], ["slice", `firmalife:food/${grain}_slice`]]
breadTypes.forEach((type) => {
processorRecipe(`${grain}_${type[0]}_sandwich`, 100, 16, {
circuit: 3,
itemInputs: [`2x ${type[1]}`, "3x #tfc:foods/usable_in_sandwich"],
itemOutputs: [`2x tfc:food/${grain}_bread_sandwich`],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
])
})
//Note: Jam needs to be first in the recipe code or else it will consider it as the usable_in_jam_sandwhich ingredients.
//1 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_1`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich_2'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, 'tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
//2 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_2`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '2x #tfc:foods/preserves', '1x #tfc:foods/usable_in_jam_sandwich_2'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, '2x tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
//3 Jam
processorRecipe(`${grain}_${type[0]}_jam_sandwich_3`, 100, 16, {
circuit: 4,
itemInputs: [`2x ${type[1]}`, '3x #tfc:foods/preserves'],
itemOutputs: [`2x tfc:food/${grain}_bread_jam_sandwich`, '3x tfc:empty_jar'],
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_bread_jam_sandwich`).meal(
(food => food.hunger(4).water(0.5).saturation(1).decayModifier(4.5)), [
(portion) => portion.ingredient(Ingredient.of('#tfc:sandwich_bread')).nutrientModifier(0.5).saturationModifier(0.5).waterModifier(0.5),
(portion) => portion.nutrientModifier(0.8).saturationModifier(0.8).waterModifier(0.8),
]),
})
})
})
//#endregion
//#region ================= Firmalife =================
global.FIRMALIFE_COOKING_RECIPE_COMPONENTS.forEach(item => {
cookingRecipe(item.name, item.input, item.output, undefined, true)
})
//#endregion
//#region ================= Dairy =================
global.TFC_CURDS_AND_CHEESES.forEach(item => {
processorRecipe(`${item.curd}_curd`, 1200, 16, {
itemOutputs: [item.curd],
fluidInputs: [Fluid.of(item.input_fluid, 1000)],
itemOutputProvider: TFC.isp.of(item.curd).resetFood()
})
processorRecipe(`${item.cheese1}_cheese_wheel_1`, 8000, 16, {
itemInputs: [`3x ${item.curd}`],
itemOutputs: [`firmalife:${item.cheese1}_wheel`],
fluidInputs: [Fluid.of('tfc:salt_water', 750)],
itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese1}_wheel`).copyOldestFood()
})
processorRecipe(`${item.cheese2}_cheese_wheel_2`, 1000, 16, {
circuit: 2,
itemInputs: [`3x ${item.curd}`, `6x tfc:powder/salt`],
itemOutputs: [`firmalife:${item.cheese2}_wheel`],
itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese2}_wheel`).copyOldestFood()
})
processorRecipe(`${item.cheese1}_cheese_cutting_1`, 100, 8, {
itemInputs: [`firmalife:${item.cheese1}_wheel`],
itemOutputs: [`4x firmalife:food/${item.cheese1}`],
itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese1}`).copyOldestFood()
})
processorRecipe(`${item.cheese2}_cheese_cutting_2`, 100, 8, {
itemInputs: [`firmalife:${item.cheese2}_wheel`],
itemOutputs: [`4x firmalife:food/${item.cheese2}`],
itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese2}`).copyOldestFood()
})
})
// Milks
processorRecipe(`white_chocolate_blend`, 300, 16, {
circuit: 3,
itemInputs: ['2x firmalife:food/cocoa_butter', '#tfc:sweetener'],
itemOutputs: ['2x firmalife:food/white_chocolate_blend'],
itemOutputProvider: TFC.isp.of('2x firmalife:food/white_chocolate_blend').resetFood(),
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
processorRecipe(`dark_chocolate_blend`, 300, 16, {
circuit: 2,
itemInputs: ['2x firmalife:food/cocoa_powder', '#tfc:sweetener'],
itemOutputs: ['2x firmalife:food/dark_chocolate_blend'],
itemOutputProvider: TFC.isp.of('2x firmalife:food/dark_chocolate_blend').resetFood(),
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
processorRecipe(`milk_chocolate_blend`, 300, 16, {
circuit: 1,
itemInputs: ['firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener'],
itemOutputs: ['2x firmalife:food/milk_chocolate_blend'],
itemOutputProvider: TFC.isp.of('2x firmalife:food/milk_chocolate_blend').resetFood(),
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
// TODO: this has nutrition dynamically set in the pot recipe, can we do that here?
processorRecipe(`egg_noodles`, 50, 8, {
circuit: 6,
itemInputs: ["#tfc:foods/flour", 'tfc:powder/salt', '#forge:eggs'],
itemOutputs: ['firmalife:food/raw_egg_noodles'],
itemOutputProvider: TFC.isp.of("firmalife:food/raw_egg_noodles").copyOldestFood(),
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
processorRecipe(`rice_noodles`, 50, 8, {
itemInputs: ["tfc:food/rice_flour", 'tfc:food/maize_flour', 'tfc:powder/salt'],
itemOutputs: ['2x firmalife:food/raw_rice_noodles'],
itemOutputProvider: TFC.isp.of('2x firmalife:food/raw_rice_noodles').copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
// No ISP needed here
event.recipes.gtceu.fermenter(`tfg:fermenter/cream`)
.inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
.outputFluids(Fluid.of('firmalife:cream'))
.circuit(6)
.duration(1200)
.EUt(24)
//#endregion
//#region ================= Food preservation =================
const smoking_meats = Ingredient.of('#tfc:foods/raw_meats').itemIds;
const brining_veg = Ingredient.of('#firmalife:foods/pizza_ingredients').itemIds;
const drying_fruits = Ingredient.of('#tfc:foods/fruits').itemIds;
const drying_recipes = [
{input: 'firmalife:food/soy_mixture', output: 'firmalife:food/tofu'},
{input: 'tfc:food/soybean', output: 'firmalife:food/dehydrated_soybeans'},
{input: 'firmalife:plant/vanilla', output: 'firmalife:spice/vanilla'},
{input: 'firmalife:cinnamon_bark', output: 'firmalife:spice/cinnamon'},
{input: 'firmalife:food/white_chocolate_blend', output: 'firmalife:food/white_chocolate'},
{input: 'firmalife:food/milk_chocolate_blend', output: 'firmalife:food/milk_chocolate'},
{input: 'firmalife:food/dark_chocolate_blend', output: 'firmalife:food/dark_chocolate'}
];
const brining_ingredients = smoking_meats.concat(brining_veg);
brining_ingredients.forEach(item => {
processorRecipeText(`${item.replace(/:/g, "/")}/brining`, 200, 16, "tfg.food_recipe.brining", {
circuit: 5,
itemInputs: [item],
itemOutputs: [item],
fluidInputs: [Fluid.of("tfc:brine", 100)],
itemOutputProvider: TFC.isp.copyInput().addTrait('tfc:brined')
})
})
smoking_meats.forEach(item => {
processorRecipeText(`${item.replace(/:/g, "/")}/smoking`, 200, 16, "tfg.food_recipe.smoking", {
circuit: 6,
itemInputs: [item],
itemOutputs: [item],
fluidInputs: [Fluid.of('gtceu:wood_gas', 50)],
itemOutputProvider: TFC.isp.copyInput().addTrait("firmalife:smoked")
})
})
drying_fruits.forEach(item => {
processorRecipeText(`${item.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", {
circuit: 6,
itemInputs: [item],
itemOutputs: [item],
fluidInputs: [Fluid.of('gtceu:nitrogen', 100)],
itemOutputProvider: TFC.isp.copyInput().addTrait("firmalife:dried")
})
})
drying_recipes.forEach(item => {
processorRecipeText(`${item.input.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", {
circuit: 6,
itemInputs: [item.input],
itemOutputs: [item.output],
fluidInputs: [Fluid.of('gtceu:nitrogen', 100)],
itemOutputProvider: TFC.isp.of(item.output).copyOldestFood()
})
})
global.FOOD_FRUIT.forEach(fruit => {
processorRecipeText(`${fruit.name}/drying`, 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 7,
itemInputs: [fruit.id, 'tfg:foil_pack', 'tfg:dry_ice'],
itemOutputs: [`tfg:food/freeze_dried/${fruit.name}`],
itemOutputProvider: TFC.isp.of(`tfg:food/freeze_dried/${fruit.name}`).copyOldestFood().removeTrait('firmalife:dried').addTrait('tfg:freeze_dried')
})
})
//#endregion
//#region Meal Bags
//1 Input
processorRecipeText('meal_bag/1', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 10,
itemInputs: ['1x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
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),
]).addTrait('tfg:freeze_dried')
})
//2 Input
processorRecipeText('meal_bag/2', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 11,
itemInputs: ['2x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
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),
]).addTrait('tfg:freeze_dried')
})
//3 Input
processorRecipeText('meal_bag/3', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 12,
itemInputs: ['3x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
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),
]).addTrait('tfg:freeze_dried')
})
//4 Input
processorRecipeText('meal_bag/4', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 13,
itemInputs: ['4x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
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),
]).addTrait('tfg:freeze_dried')
})
//5 Input
processorRecipeText('meal_bag/5', 100, 120, "tfg.food_recipe.freeze_drying", {
circuit: 14,
itemInputs: ['5x #tfg:foods/usable_in_meal_bag', '2x tfg:foil_pack', 'tfg:dry_ice'],
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),
]).addTrait('tfg:freeze_dried')
})
//#endregion
//#region ================= Misc =================
global.TFC_JAMS.forEach(name => {
processorRecipe(`${name}_jam`, 200, 8, {
circuit: 15,
itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "#tfc:empty_jar_with_lid"],
itemOutputs: [`4x tfc:jar/${name}`],
itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}`).copyFood()
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
processorRecipe(`${name}_jam_no_seal`, 200, 8, {
circuit: 16,
itemInputs: [`4x tfc:food/${name}`, "#tfg:sugars", "tfc:empty_jar"],
itemOutputs: [`4x tfc:jar/${name}_unsealed`],
itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}_unsealed`).copyFood()
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
})
cookingRecipe("pasta", "firmalife:food/raw_egg_noodles", "firmalife:food/cooked_pasta")
.inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
cookingRecipe("corn_tortilla", "firmalife:food/masa", "firmalife:food/corn_tortilla")
cookingRecipe("boiled_egg", "#firmalife:foods/raw_eggs", "tfc:food/boiled_egg")
.inputFluids(JsonIO.of({ amount: 200, value: { tag: "tfg:clean_water" }}))
cookingRecipe("cooked_rice", "tfc:food/rice_grain", "tfc:food/cooked_rice")
.inputFluids(JsonIO.of({ amount: 200, value: { tag: "tfg:clean_water" }}))
processorRecipe("pasta_tomato_sauce", 60, 8, {
itemInputs: ["firmalife:food/cooked_pasta", "firmalife:food/tomato_sauce"],
itemOutputs: ["firmalife:food/pasta_with_tomato_sauce"],
itemOutputProvider: TFC.isp.of('firmalife:food/pasta_with_tomato_sauce').copyFood()
})
processorRecipe('firmalife_masa', 300, 2, {
circuit: 3,
itemInputs: ["firmalife:food/masa_flour"],
itemOutputs: ["2x firmalife:food/masa"],
itemOutputProvider: TFC.isp.of("2x firmalife:food/masa").copyFood()
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
processorRecipe("tortilla_chips", 40, 16, {
itemInputs: ["firmalife:food/taco_shell", "tfc:powder/salt"],
itemOutputs: ["firmalife:food/tortilla_chips"],
itemOutputProvider: TFC.isp.of("firmalife:food/tortilla_chips").copyFood()
})
processorRecipe("tomato_sauce_mix", 600, 8, {
itemInputs: ['tfc:food/tomato', 'tfc:powder/salt', 'tfc:food/garlic'],
itemOutputs: ['5x firmalife:food/tomato_sauce_mix'],
itemOutputProvider: TFC.isp.of('5x firmalife:food/tomato_sauce_mix').copyOldestFood(),
})
processorRecipe("tomato_sauce_from_mix", 200, 8, {
itemInputs: ['firmalife:food/tomato_sauce_mix'],
itemOutputs: ['firmalife:food/tomato_sauce'],
itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(),
}).inputFluids(JsonIO.of({ amount: 200, value: { tag: "tfg:clean_water" }}))
processorRecipe("olive_paste", 60, 8, {
itemInputs: ['tfc:food/olive'],
itemOutputs: ['2x tfc:olive_paste'],
itemOutputProvider: TFC.isp.of('2x tfc:olive_paste'),
})
processorRecipe("soybean_paste", 60, 8, {
itemInputs: ['firmalife:food/dehydrated_soybeans'],
itemOutputs: ['firmalife:food/soybean_paste'],
itemOutputProvider: TFC.isp.of('firmalife:food/soybean_paste').copyOldestFood(),
})
processorRecipeText('calorie_paste', 100, 512, "tfg.food_recipe.freeze_drying", {
circuit: 8,
itemInputs: ['firmalife:food/soybean_paste', 'tfg:foil_pack', '2x gtceu:small_meat_dust', 'tfg:dry_ice'],
itemOutputs: ['tfg:food/calorie_paste'],
fluidInputs: [Fluid.of('gtceu:fermented_biomass', 40)],
itemOutputProvider: TFC.isp.of('tfg:food/calorie_paste').copyOldestFood().addTrait('tfg:freeze_dried'),
})
// Vinegar
processorRecipe('vinegar_alcohol', 600, 32, {
circuit: 5,
itemInputs: ['#tfc:foods/fruits'],
fluidOutputs: [Fluid.of('tfc:vinegar', 250)],
})
.inputFluids(JsonIO.of({
amount: 250,
value: {
tag: "tfc:alcohols"
}
}))
processorRecipe("pizza_no_extra", 600, 16, {
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese"],
itemOutputs: ["firmalife:food/raw_pizza"],
itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal(
(food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5),
[(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)]
)
})
processorRecipe("pizza_1_extra", 600, 16, {
circuit: 1,
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "#firmalife:foods/pizza_ingredients"],
itemOutputs: ["firmalife:food/raw_pizza"],
itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal(
(food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5),
[(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)]
)
})
processorRecipe("pizza_2_extra", 600, 16, {
circuit: 2,
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "2x #firmalife:foods/pizza_ingredients"],
itemOutputs: ["firmalife:food/raw_pizza"],
itemOutputProvider: TFC.isp.of("firmalife:food/raw_pizza").meal(
(food) => food.hunger(4).saturation(1).grain(1).dairy(0.25).decayModifier(4.5),
[(portion) => portion.nutrientModifier(0.8).waterModifier(0.8).saturationModifier(0.8)]
)
})
processorRecipe("pizza_dough_olive_oil", 300, 16, {
itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'],
itemOutputs: ['4x firmalife:food/pizza_dough'],
itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood()
})
processorRecipe("pizza_dough_soybean_oil", 300, 16, {
itemInputs: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'],
itemOutputs: ['4x firmalife:food/pizza_dough'],
itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "firmalife:oils" }}))
processorRecipe("vanilla_ice_cream", 300, 16, {
itemInputs: ['firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla'],
itemOutputs: ['2x firmalife:food/vanilla_ice_cream'],
fluidInputs: [Fluid.of('firmalife:cream', 1000)],
itemOutputProvider: TFC.isp.of("2x firmalife:food/vanilla_ice_cream").resetFood()
})
processorRecipe("chocolate_ice_cream", 300, 16, {
itemInputs: ['firmalife:food/vanilla_ice_cream'],
itemOutputs: ['firmalife:food/chocolate_ice_cream'],
fluidInputs: [Fluid.of('firmalife:chocolate', 1000)],
itemOutputProvider: TFC.isp.of("firmalife:food/chocolate_ice_cream").resetFood()
})
processorRecipe("strawberry_ice_cream", 300, 16, {
itemInputs: ['firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry'],
itemOutputs: ['firmalife:food/strawberry_ice_cream'],
itemOutputProvider: TFC.isp.of("firmalife:food/strawberry_ice_cream").resetFood()
})
processorRecipe("cookie_dough_ice_cream", 300, 16, {
itemInputs: [`firmalife:food/vanilla_ice_cream`, `firmalife:food/chocolate_chip_cookie_dough`],
itemOutputs: [`2x firmalife:food/cookie_dough_ice_cream`],
itemOutputProvider: TFC.isp.of("firmalife:food/cookie_dough_ice_cream").resetFood()
})
processorRecipe("butter", 300, 16, {
itemInputs: ["tfc:powder/salt"],
itemOutputs: ["firmalife:food/butter"],
fluidInputs: [Fluid.of('firmalife:cream', 1000)],
itemOutputProvider: TFC.isp.of('firmalife:food/butter').resetFood()
})
processorRecipe("pie_dough", 300, 16, {
circuit: 2,
itemInputs: ['#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour'],
itemOutputs: ['firmalife:food/pie_dough'],
itemOutputProvider: TFC.isp.of('firmalife:food/pie_dough').copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfg:clean_water" }}))
processorRecipe("pumpkin_pie_dough", 300, 16, {
circuit: 2,
itemInputs: ['#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour'],
itemOutputs: ['firmalife:food/pumpkin_pie_dough'],
itemOutputProvider: TFC.isp.of('firmalife:food/pumpkin_pie_dough').copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfg:clean_water" }}))
processorRecipe("raw_pumpkin_pie", 20, 8, {
itemInputs: ["firmalife:food/pumpkin_pie_dough", "firmalife:pie_pan"],
itemOutputs: ["firmalife:raw_pumpkin_pie"],
itemOutputProvider: TFC.isp.of("firmalife:food/raw_pumpkin_pie").copyFood()
})
processorRecipe("cookie_dough", 300, 16, {
itemInputs: ['#tfc:sweetener', '#forge:eggs', 'firmalife:food/butter', '#tfc:foods/flour', "firmalife:spice/vanilla"],
itemOutputs: ['4x firmalife:food/cookie_dough'],
itemOutputProvider: TFC.isp.of('4x firmalife:food/cookie_dough').copyOldestFood()
})
processorRecipe("chocolate_chip_cookie_dough", 300, 16, {
itemInputs: ['4x firmalife:food/cookie_dough', '#firmalife:foods/chocolate'],
itemOutputs: ['4x firmalife:food/chocolate_chip_cookie_dough'],
itemOutputProvider: TFC.isp.of('4x firmalife:food/chocolate_chip_cookie_dough').copyOldestFood()
})
processorRecipe("hardtack_dough", 300, 16, {
itemInputs: ['tfc:powder/salt', '#tfc:foods/flour'],
itemOutputs: ['4x firmalife:food/hardtack_dough'],
itemOutputProvider: TFC.isp.of('4x firmalife:food/hardtack_dough').copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfg:clean_water" }}))
processorRecipe("yeast_starter", 1200, 8, {
circuit: 1,
fluidInputs: [Fluid.of('firmalife:yeast_starter', 100)],
fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)],
itemInputs: ['#tfc:foods/flour'],
})
processorRecipe("yeast_starter_from_water", 7200, 8, {
circuit: 10,
fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)],
itemInputs: ['#tfc:foods/fruits'],
}).inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
processorRecipe("cocoa_dust", 100, 4, {
itemInputs: ["firmalife:food/roasted_cocoa_beans"],
itemOutputs: ["gtceu:cocoa_dust"],
itemOutputProvider: TFC.isp.of("gtceu:cocoa_dust")
})
processorRecipe("red_grapes", 50, 8, {
itemInputs: ["firmalife:food/red_grapes"],
itemOutputs: ["firmalife:food/smashed_red_grapes"],
itemOutputProvider: TFC.isp.of('firmalife:food/smashed_red_grapes').copyOldestFood()
})
processorRecipe("white_grapes", 50, 8, {
itemInputs: ["firmalife:food/white_grapes"],
itemOutputs: ["firmalife:food/smashed_white_grapes"],
itemOutputProvider: TFC.isp.of('firmalife:food/smashed_white_grapes').copyOldestFood()
})
processorRecipe("cured_maize", 300, 8, {
itemInputs: ["tfc:food/maize_grain"],
itemOutputs: ["firmalife:food/cured_maize"],
itemOutputProvider: TFC.isp.of('firmalife:food/cured_maize').copyOldestFood()
})
processorRecipe("soy_mixture", 300, 8, {
itemInputs: ["tfc:food/soybean", 'tfc:powder/salt'],
itemOutputs: ["firmalife:food/soy_mixture"],
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 50, value: { tag: "tfg:clean_water" }}))
// Cakes
processorRecipe("cake_base", 300, 8, {
circuit: 4,
itemInputs: ["#forge:eggs", "2x #tfg:sugars", "2x #tfc:foods/flour"],
itemOutputs: ["createaddition:cake_base"],
itemOutputProvider: TFC.isp.of("createaddition:cake_base").copyOldestFood()
}).inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:milks" }}))
cookingRecipe("baked_cake_base", "createaddition:cake_base", "createaddition:cake_base_baked")
processorRecipe("vanilla_cake", 300, 8, {
itemInputs: ['createaddition:cake_base_baked', '3x tfc:food/strawberry', 'firmalife:spice/vanilla'],
fluidInputs: [Fluid.of("tfcchannelcasting:white_chocolate", 400)],
itemOutputs: ["tfc:cake"]
})
processorRecipe("milk_chocolate_cake", 300, 8, {
itemInputs: ['createaddition:cake_base_baked', '3x tfc:food/cherry', 'firmalife:food/cocoa_powder'],
fluidInputs: [Fluid.of("tfcchannelcasting:milk_chocolate", 400)],
itemOutputs: ["createaddition:chocolate_cake"]
})
processorRecipe("dark_chocolate_cake", 300, 8, {
itemInputs: ['createaddition:cake_base_baked', '3x tfc:food/cherry', 'firmalife:food/cocoa_powder'],
fluidInputs: [Fluid.of("tfcchannelcasting:dark_chocolate", 400)],
itemOutputs: ["createaddition:chocolate_cake"]
})
processorRecipe("maple_honey_cake", 300, 8, {
itemInputs: ['createaddition:cake_base_baked', '4x firmalife:raw_honey'],
fluidInputs: [Fluid.of("afc:maple_syrup", 1000)],
itemOutputs: ["createaddition:honey_cake"]
})
processorRecipe("birch_honey_cake", 300, 8, {
itemInputs: ['createaddition:cake_base_baked', '4x firmalife:raw_honey'],
fluidInputs: [Fluid.of("afc:birch_syrup", 1000)],
itemOutputs: ["createaddition:honey_cake"]
})
processorRecipe("birtday_cake", 300, GTValues.VA[GTValues.HV], {
itemInputs: ['createaddition:cake_base', '4x species:birt_egg', '4x tfc:food/blueberry', '2x minecraft:chorus_fruit', 'gtceu:blue_alloy_single_wire'],
fluidInputs: [Fluid.of('gtceu:helium_3', 50)],
itemOutputs: ["species:birtday_cake"]
})
// These don't need the ISP handling, they're just here to keep all the food recipes together
event.recipes.gtceu.mixer('tfg:tfc/olive_oil_water')
.inputFluids(Fluid.of('water', 200))
.itemInputs('1x tfc:olive_paste')
.outputFluids(Fluid.of('tfc:olive_oil_water', 200))
.duration(200)
.EUt(28)
event.recipes.gtceu.distillery('tfg:tfc/olive_oil')
.inputFluids(Fluid.of('tfc:olive_oil_water', 250))
.outputFluids(Fluid.of('tfc:olive_oil', 50))
.duration(600)
.EUt(28)
event.recipes.gtceu.fermenter('soybean_oil')
.itemInputs('firmalife:food/soybean_paste')
.inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" }}))
.outputFluids(Fluid.of('firmalife:soybean_oil', 250))
.EUt(GTValues.VA[GTValues.ULV])
.duration(600)
event.recipes.gtceu.fermenter('tfg:fermenter/curdled_milk')
.inputFluids(Fluid.of('minecraft:milk', 2000))
.itemInputs('firmalife:rennet')
.outputFluids(Fluid.of('tfc:curdled_milk', 2000))
.duration(2400)
.EUt(16)
event.recipes.gtceu.fermenter('tfg:fermenter/curdled_yak_milk')
.inputFluids(Fluid.of('firmalife:yak_milk', 2000))
.itemInputs('firmalife:rennet')
.outputFluids(Fluid.of('firmalife:curdled_yak_milk', 2000))
.duration(2400)
.EUt(16)
event.recipes.gtceu.fermenter('tfg:fermenter/curdled_goat_milk')
.inputFluids(Fluid.of('firmalife:goat_milk', 2000))
.itemInputs('firmalife:rennet')
.outputFluids(Fluid.of('firmalife:curdled_goat_milk', 2000))
.duration(2400)
.EUt(16)
// GT cocoa dust compat
event.recipes.gtceu.macerator('firmalife:food/cocoa_powder')
.itemInputs('gtceu:cocoa_dust')
.itemOutputs('4x firmalife:food/cocoa_powder')
.duration(100)
.EUt(2)
event.recipes.tfc.quern('4x firmalife:food/cocoa_powder', 'gtceu:cocoa_dust')
.id(`tfg:quern/cocoa_powder`)
event.recipes.tfc.quern('gtceu:cocoa_dust', 'firmalife:food/roasted_cocoa_beans')
.id('tfg:quern/cocoa_dust');
//#endregion
//#region Heating recipes for new foods
event.recipes.tfc.heating('tfg:food/raw_birt', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_birt').copyFood())
event.recipes.tfc.heating('tfg:food/raw_crawlermari', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_crawlermari').copyFood())
event.recipes.tfc.heating('tfg:food/raw_limpet', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_limpet').copyFood())
event.recipes.tfc.heating('tfg:sunflower_product', 200)
.resultItem(TFC.isp.of('tfg:roasted_sunflower_seeds').copyFood())
event.recipes.tfc.heating('tfg:food/raw_moon_rabbit', 200)
.resultItem(TFC.isp.of('tfg:food/cooked_moon_rabbit').copyFood())
//#endregion
// Food processing 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.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)
.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)
.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:isobutane', 6000))
.itemOutputs('1x tfg:ev_food_refrigerator')
.duration(200)
.circuit(7)
.EUt(GTValues.VA[GTValues.LV])
// Tweaks to the machine crafts that are more annoying to do in java
event.replaceInput({id: 'gtceu:shaped/lv_food_processor'}, 'gtceu:lv_electric_piston', 'gtceu:steel_whisk')
event.replaceInput({id: 'gtceu:shaped/mv_food_processor'}, 'gtceu:mv_electric_piston', 'gtceu:aluminium_whisk')
event.replaceInput({id: 'gtceu:shaped/hv_food_processor'}, 'gtceu:hv_electric_piston', 'gtceu:stainless_steel_whisk')
event.replaceInput({id: 'gtceu:shaped/ev_food_processor'}, 'gtceu:ev_electric_piston', 'gtceu:titanium_whisk')
event.replaceInput({id: 'gtceu:shaped/lv_food_oven'}, 'gtceu:lv_electric_piston', '#tfg:metal_bars')
event.replaceInput({id: 'gtceu:shaped/mv_food_oven'}, 'gtceu:mv_electric_piston', '#tfg:metal_bars')
event.replaceInput({id: 'gtceu:shaped/hv_food_oven'}, 'gtceu:hv_electric_piston', '#tfg:metal_bars')
event.replaceInput({id: 'gtceu:shaped/ev_food_oven'}, 'gtceu:ev_electric_piston', '#tfg:metal_bars')
event.replaceInput({id: 'gtceu:shaped/mv_food_refrigerator'}, 'gtceu:mv_machine_hull', 'gtceu:mv_hermetic_casing')
event.replaceInput({id: 'gtceu:shaped/hv_food_refrigerator'}, 'gtceu:hv_machine_hull', 'gtceu:hv_hermetic_casing')
event.replaceInput({id: 'gtceu:shaped/ev_food_refrigerator'}, 'gtceu:ev_machine_hull', 'gtceu:ev_hermetic_casing')
}

View file

@ -14,4 +14,9 @@ const registerTFGRecipes = (event) => {
registerTFGSupportRecipes(event)
registerTFGFishingNetsRecipes(event)
registerTFGConvertingRecipes(event)
registerTFGFoodRecipes(event)
registerTFGSpaceRecipes(event)
registerTFGStoneDustRecipes(event)
registerTFGRecyclingRecipes(event)
}

View file

@ -124,7 +124,7 @@ function registerTFGMiscellaneousRecipes(event) {
.outputFluids(Fluid.of('firmalife:curdled_goat_milk', 1000))
.duration(300)
.EUt(GTValues.VA[GTValues.LV])
//Scaffolding Frame
event.shaped('tfg:scaffolding_frame',
[
@ -136,7 +136,7 @@ function registerTFGMiscellaneousRecipes(event) {
A: '#forge:rods/wood',
B: '#forge:cloth'
}).id('tfg:shaped/scaffolding_frame');
//Airship Hull
event.shaped('tfg:airship_hull', [
'A B',
@ -155,17 +155,15 @@ function registerTFGMiscellaneousRecipes(event) {
.EUt(GTValues.VA[GTValues.ULV]);
//Airship Balloon
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('tfg:airship_balloon', [
'ABA',
'BCB',
'ABA'
], {
A: '#forge:string',
B: 'immersive_aircraft:sail',
C: 'tfc:bone_needle'
})
).id('tfg:shaped/airship_balloon')
// TODO: Add the needle back here once #963 is fixed
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')
@ -254,7 +252,7 @@ function registerTFGMiscellaneousRecipes(event) {
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier('tfg:ice')
.inputFluids(Fluid.of('minecraft:water', 144))
.inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" } }))
.notConsumable('gtceu:block_casting_mold')
.itemOutputs('minecraft:ice')
.duration(200)
@ -262,7 +260,20 @@ function registerTFGMiscellaneousRecipes(event) {
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( JsonIO.of({ amount: 8000, value: { tag: "tfc:water" }}))
.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))
@ -381,68 +392,6 @@ function registerTFGMiscellaneousRecipes(event) {
).id(`universal_circuits_${tier}`);
});
// Air collector (move this to space stuff later)
event.recipes.gtceu.gas_collector('nether')
.circuit(2)
.outputFluids(Fluid.of('gtceu:air', 10000))
.dimension('minecraft:the_nether')
.duration(200)
.EUt(16)
event.recipes.gtceu.aqueous_accumulator('water_overworld')
.circuit(1)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.addDataString("fluidA", "minecraft:water")
.addDataString("fluidB", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('water_nether')
.circuit(2)
.dimension('minecraft:the_nether')
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.addDataString("fluidA", "minecraft:water")
.addDataString("fluidB", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_overworld')
.circuit(3)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
.addDataString("fluidA", "tfc:salt_water")
.addDataString("fluidB", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_nether')
.circuit(4)
.dimension('minecraft:the_nether')
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
.addDataString("fluidA", "tfc:salt_water")
.addDataString("fluidB", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_overworld')
.circuit(5)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VHA[GTValues.HV])
.addDataString("fluidA", "minecraft:lava")
.addDataString("fluidB", "minecraft:lava")
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_nether')
.circuit(6)
.dimension('minecraft:the_nether')
.duration(20)
.EUt(GTValues.VHA[GTValues.HV])
.addDataString("fluidA", "minecraft:lava")
.addDataString("fluidB", "minecraft:lava")
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.shapeless('1x tfg:armor_stand_arms', [
'minecraft:armor_stand'
@ -453,20 +402,20 @@ function registerTFGMiscellaneousRecipes(event) {
]).id(`tfg:shapeless/armor_stand`)
event.recipes.tfc.sewing(
'1x tfg:piglin_disguise',
[
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 1, 1, 0,
0, 1, 1, 1, 0, 1, 1, 1, 0,
0, 0, 1, 1, 0, 1, 1, 0, 0,
0, 0, 1, 1, 0, 1, 1, 0, 0
], [
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 0, 1, 0, 1,
1, -1, 0, 0, 0, 0, -1, 1,
1, -1, 0, 0, 0, 0, -1, 1
]
).id('tfg:sewing/piglin_disguise')
'1x tfg:piglin_disguise',
[
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 0, 0, 0, 1, 1, 0,
0, 1, 1, 1, 0, 1, 1, 1, 0,
0, 0, 1, 1, 0, 1, 1, 0, 0,
0, 0, 1, 1, 0, 1, 1, 0, 0
], [
1, 1, 1, 1, 1, 1, 1, 1,
1, 0, 1, 0, 0, 1, 0, 1,
1, -1, 0, 0, 0, 0, -1, 1,
1, -1, 0, 0, 0, 0, -1, 1
]
).id('tfg:sewing/piglin_disguise')
//trowel
event.shaped('tfg:trowel', [
@ -480,10 +429,320 @@ function registerTFGMiscellaneousRecipes(event) {
D: '#forge:tools/screwdrivers'
}).id('tfg:shaped/trowel')
event.recipes.gtceu.assembler('tfg:assembler/trowel')
.itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Invar, 2), '1x #forge:screws', '1x #tfc:lumber')
.itemOutputs('1x tfg:trowel')
.duration(40)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:assembler/trowel')
.itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Invar, 2), '1x #forge:screws', '1x #tfc:lumber')
.itemOutputs('1x tfg:trowel')
.duration(40)
.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.fluid_solidifier('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/dry_ice')
.inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000))
.notConsumable('gtceu:block_casting_mold')
.itemOutputs('10x tfg:dry_ice')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/decompress_dry_ice')
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 100))
.itemInputs('1x tfg:dry_ice')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.mixer('tfg:clean_foil_pack')
.itemInputs('1x tfg:used_foil_pack')
.inputFluids(JsonIO.of({ amount: 100, value: { tag: "tfg:clean_water" } }))
.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(JsonIO.of({ amount: 1000, value: { tag: "tfc:alcohols" } }))
.inputFluids(Fluid.of('gtceu:seed_oil', 6000))
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 30)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`)
.inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:alcohols" } }))
.inputFluids(Fluid.of('tfc:olive_oil', 4000))
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 30)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`)
.inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:alcohols" } }))
.inputFluids(Fluid.of('firmalife:soybean_oil', 4000))
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 30)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`)
.inputFluids(JsonIO.of({ amount: 1000, value: { tag: "tfc:alcohols" } }))
.inputFluids(Fluid.of('gtceu:fish_oil', 6000))
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 30)
.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 * 30)
.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 * 30)
.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 * 30)
.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 * 30)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.extractor(`rapeseed_oil`)
.itemInputs('tfg:rapeseed_product')
.outputFluids(Fluid.of('gtceu:seed_oil', 600))
.duration(20 * 30)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.extractor(`sunflower_oil`)
.itemInputs('tfg:sunflower_product')
.outputFluids(Fluid.of('gtceu:seed_oil', 350))
.duration(20 * 30)
.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('#forge:ender_pearls', '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])
// Have to redo all these because .replaceInput doesn't work for some reason!!
event.shaped('gtceu:mv_field_generator', [
'ABA',
'CDC',
'ABA'
], {
A: '#forge:quadruple_wires/magnesium_diboride',
B: '#forge:plates/aluminium',
C: '#gtceu:circuits/mv',
D: 'tfg:vitrified_pearl'
}).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)
event.shaped('gtceu:hv_emitter', [
'ABC',
'BDB',
'CBA'
], {
A: '#forge:single_cables/gold',
B: '#forge:rods/chromium',
C: '#gtceu:circuits/hv',
D: 'tfg:vitrified_pearl'
}).id('gtceu:shaped/emitter_hv')
event.recipes.gtceu.assembler('emitter_hv')
.itemInputs('tfg:vitrified_pearl', '4x #forge:rods/chromium', '2x #gtceu:circuits/hv', '2x #forge:single_cables/gold')
.itemOutputs('gtceu:hv_emitter')
.circuit(1)
.duration(100)
.EUt(30)
event.shaped('gtceu:hv_sensor', [
'A B',
'AC ',
'DAA'
], {
A: '#forge:plates/stainless_steel',
B: 'tfg:vitrified_pearl',
C: '#forge:rods/chromium',
D: '#gtceu:circuits/hv',
}).id('gtceu:shaped/sensor_hv')
event.recipes.gtceu.assembler('sensor_hv')
.itemInputs('tfg:vitrified_pearl', '#forge:rods/chromium', '#gtceu:circuits/hv', '4x #forge:plates/stainless_steel')
.itemOutputs('gtceu:hv_sensor')
.duration(100)
.EUt(30)
// Temporary
event.recipes.gtceu.chemical_bath('quantum_eye')
.itemInputs('tfg:vitrified_pearl')
.inputFluids(Fluid.of('gtceu:radon', 250))
.itemOutputs('gtceu:quantum_eye')
.duration(24 * 20)
.EUt(480)
}

View file

@ -222,6 +222,55 @@ function registerTFGMoldRecipes(event) {
h: '#forge:tools/hammers'
})
event.shaped('tfg:fish_hook_extruder_mold', [
'f ',
' S ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:whisk_extruder_mold', [
'f h',
' S ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:screwdriver_tip_extruder_mold', [
'f ',
' S ',
' h '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:wrench_tip_extruder_mold', [
'f ',
'hS ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:wire_cutter_head_extruder_mold', [
' ',
'hS ',
'f '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
let steelIngots = ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4);
let steelDusts = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4);
@ -291,4 +340,4 @@ function registerTFGMoldRecipes(event) {
// .id(`tfg:shapeless/vessel_cleaning/${vessel.replace(":", "/")}`);
// });
}
}

View file

@ -110,8 +110,9 @@ function registerTFGPapermakingRecipes(event) {
//Beat thermochemically treated hardwood dust into soaked unrefined paper
event.recipes.tfc.anvil('tfg:soaked_unrefined_paper', 'gtceu:thermochemically_treated_hardwood_dust', ['hit_last', 'hit_last', 'hit_last'])
.id('tfg:anvil/soaked_unrefined_paper')
event.recipes.createDeploying(Item.of('tfg:soaked_unrefined_paper').withChance(0.8), ['gtceu:thermochemically_treated_hardwood_dust', '#forge:tools/hammers'])
.id('tfg:pressing/soaked_unrefined_paper')
event.recipes.greate.pressing(Item.of('tfg:soaked_unrefined_paper'), 'gtceu:thermochemically_treated_hardwood_dust')
.recipeTier(0)
.id('greate:pressing/soaked_unrefined_paper')
event.custom({
type: "firmalife:stomping",
ingredient: {

View file

@ -0,0 +1,379 @@
// priority: 0
function registerTFGRecyclingRecipes(event) {
//MV Refrigerator
event.recipes.gtceu.macerator('tfg:macerator/recycling/mv_food_refrigerator')
.itemInputs('tfg:mv_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Bronze, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Cupronickel, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Polyethylene, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 5)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/mv_food_refrigerator')
.itemInputs('tfg:mv_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Bronze, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Cupronickel, 4),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 5)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//HV Refrigerator
event.recipes.gtceu.macerator('tfg:macerator/recycling/hv_food_refrigerator')
.itemInputs('tfg:hv_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 8),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 7),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Electrum, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Polytetrafluoroethylene, 4)
)
.duration(GTMaterials.StainlessSteel.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/hv_food_refrigerator')
.itemInputs('tfg:hv_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 8),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 7),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Electrum, 4),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 4)
)
.duration(GTMaterials.StainlessSteel.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//EV Refrigerator
event.recipes.gtceu.macerator('tfg:macerator/recycling/ev_food_refrigerator')
.itemInputs('tfg:ev_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Titanium, 8),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 10),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Kanthal, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 3)
)
.duration(GTMaterials.Titanium.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/ev_food_refrigerator')
.itemInputs('tfg:ev_food_refrigerator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Titanium, 8),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 10),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Kanthal, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 3)
)
.duration(GTMaterials.Titanium.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//LV Food Processor
event.recipes.gtceu.macerator('tfg:macerator/recycling/lv_food_processor')
.itemInputs('tfg:lv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 7),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Tin, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Bronze, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.WroughtIron, 2)
)
.duration(GTMaterials.Steel.getMass() * 7)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/lv_food_processor')
.itemInputs('tfg:lv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 7),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Tin, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Bronze, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.WroughtIron, 2)
)
.duration(GTMaterials.Steel.getMass() * 7)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//MV Food Processor
event.recipes.gtceu.macerator('tfg:macerator/recycling/mv_food_processor')
.itemInputs('tfg:mv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Cupronickel, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Copper, 3),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.SiliconeRubber, 3)
)
.duration(GTMaterials.Aluminium.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/mv_food_processor')
.itemInputs('tfg:mv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Cupronickel, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Copper, 3),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 3)
)
.duration(GTMaterials.Aluminium.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//HV Food Processor
event.recipes.gtceu.macerator('tfg:macerator/recycling/hv_food_processor')
.itemInputs('tfg:hv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 7),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Electrum, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.SiliconeRubber, 3)
)
.duration(GTMaterials.StainlessSteel.getMass() * 7)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/hv_food_processor')
.itemInputs('tfg:hv_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 7),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Electrum, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 6),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 3)
)
.duration(GTMaterials.StainlessSteel.getMass() * 7)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//EV Food Processor
event.recipes.gtceu.macerator('tfg:macerator/recycling/ev_food_processor')
.itemInputs('tfg:ev_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Titanium, 9),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Kanthal, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4)
)
.duration(GTMaterials.Titanium.getMass() * 9)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/ev_food_processor')
.itemInputs('tfg:ev_food_processor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Titanium, 9),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Kanthal, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4)
)
.duration(GTMaterials.Titanium.getMass() * 9)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//LV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/lv_food_oven')
.itemInputs('tfg:lv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 8),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Tin, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Iron, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Rubber, 7)
)
.duration(GTMaterials.Steel.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/lv_food_oven')
.itemInputs('tfg:lv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 8),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Tin, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Iron, 4),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 7)
)
.duration(GTMaterials.Steel.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//MV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/mv_food_oven')
.itemInputs('tfg:mv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 9),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Cupronickel, 8),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Copper, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 9)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/mv_food_oven')
.itemInputs('tfg:mv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 9),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Cupronickel, 8),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Copper, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 9)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//HV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/hv_food_oven')
.itemInputs('tfg:hv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 8),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Electrum, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Kanthal, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Silver, 3)
)
.duration(GTMaterials.StainlessSteel.getMass() * 8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/hv_food_oven')
.itemInputs('tfg:hv_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 8),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Electrum, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Kanthal, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Silver, 3)
)
.duration(GTMaterials.StainlessSteel.getMass() * 8)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//EV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/ev_food_oven')
.itemInputs('tfg:ev_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Titanium, 10),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Kanthal, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Nichrome, 2)
)
.duration(GTMaterials.Titanium.getMass() * 10)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/ev_food_oven')
.itemInputs('tfg:ev_food_oven')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Titanium, 10),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Kanthal, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Nichrome, 2)
)
.duration(GTMaterials.Titanium.getMass() * 10)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//LV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/lv_aqueous_accumulator')
.itemInputs('tfg:lv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Bronze, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Tin, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Rubber, 2)
)
.duration(GTMaterials.Steel.getMass() * 4)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/lv_aqueous_accumulator')
.itemInputs('tfg:lv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Bronze, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Tin, 6),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 2)
)
.duration(GTMaterials.Steel.getMass() * 4)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//MV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/mv_aqueous_accumulator')
.itemInputs('tfg:mv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Bronze, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Cupronickel, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 5)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/mv_aqueous_accumulator')
.itemInputs('tfg:mv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 5),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Bronze, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Cupronickel, 2)
)
.duration(GTMaterials.Aluminium.getMass() * 5)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//HV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/hv_aqueous_accumulator')
.itemInputs('tfg:hv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Electrum, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Gold, 1)
)
.duration(GTMaterials.StainlessSteel.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/hv_aqueous_accumulator')
.itemInputs('tfg:hv_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Electrum, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Gold, 1)
)
.duration(GTMaterials.StainlessSteel.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
//EV Food Oven
event.recipes.gtceu.macerator('tfg:macerator/recycling/ev_aqueous_accumulator')
.itemInputs('tfg:ev_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Titanium, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.StainlessSteel, 6),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Kanthal, 2),
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Aluminium, 1)
)
.duration(GTMaterials.Titanium.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/ev_aqueous_accumulator')
.itemInputs('tfg:ev_aqueous_accumulator')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Titanium, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.StainlessSteel, 6),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Kanthal, 2),
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Aluminium, 1)
)
.duration(GTMaterials.Titanium.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -10,7 +10,20 @@ function registerTFGRockRecipes(event) {
{ loose: 'tfg:loose/deepslate', block: 'minecraft:cobbled_deepslate' },
{ loose: 'beneath:blackstone_pebble', block: 'minecraft:blackstone' },
{ loose: 'tfg:brick/deepslate', block: '4x minecraft:deepslate_bricks' },
{ loose: 'tfg:loose/dripstone', block: 'minecraft:dripstone_block' }
{ loose: 'tfg:loose/dripstone', block: 'minecraft:dripstone_block' },
{ loose: 'tfg:loose/moon_stone', block: 'ad_astra:moon_cobblestone' },
{ loose: 'tfg:brick/moon_stone', block: '4x ad_astra:moon_stone_bricks' },
{ loose: 'tfg:loose/moon_deepslate', block: 'ad_astra:moon_deepslate' },
{ loose: 'tfg:loose/mars_stone', block: 'ad_astra:mars_cobblestone' },
{ loose: 'tfg:brick/mars_stone', block: '4x ad_astra:mars_stone_bricks' },
{ loose: 'tfg:loose/venus_stone', block: 'ad_astra:venus_cobblestone' },
{ loose: 'tfg:brick/venus_stone', block: '4x ad_astra:venus_stone_bricks' },
{ loose: 'tfg:loose/mercury_stone', block: 'ad_astra:mercury_cobblestone' },
{ loose: 'tfg:brick/mercury_stone', block: '4x ad_astra:mercury_stone_bricks' },
{ loose: 'tfg:loose/glacio_stone', block: 'ad_astra:glacio_cobblestone' },
{ loose: 'tfg:brick/glacio_stone', block: '4x ad_astra:glacio_stone_bricks' },
{ loose: 'tfg:brick/permafrost', block: '4x ad_astra:permafrost_bricks' },
{ loose: 'minecraft:popped_chorus_fruit', block: '4x minecraft:purpur_block' }
]
GLUEING_TOGETHER.forEach(x => {
@ -35,7 +48,13 @@ function registerTFGRockRecipes(event) {
// loose to bricks
const LOOSE_TO_BRICKS = [
{ loose: 'tfg:loose/deepslate', brick: 'tfg:brick/deepslate' }
{ loose: 'tfg:loose/deepslate', brick: 'tfg:brick/deepslate' },
{ loose: 'tfg:loose/moon_stone', brick: 'tfg:brick/moon_stone' },
{ loose: 'tfg:loose/mars_stone', brick: 'tfg:brick/mars_stone' },
{ loose: 'tfg:loose/venus_stone', brick: 'tfg:brick/venus_stone' },
{ loose: 'tfg:loose/mercury_stone', brick: 'tfg:brick/mercury_stone' },
{ loose: 'tfg:loose/glacio_stone', brick: 'tfg:brick/glacio_stone' },
{ loose: 'tfg:loose/permafrost', brick: 'tfg:brick/permafrost' }
]
LOOSE_TO_BRICKS.forEach(x => {
@ -59,7 +78,26 @@ function registerTFGRockRecipes(event) {
{ raw: 'minecraft:deepslate_tiles', polished: 'minecraft:chiseled_deepslate' },
{ raw: 'minecraft:polished_blackstone_bricks', polished: 'minecraft:chiseled_polished_blackstone' },
{ raw: 'minecraft:basalt', polished: 'minecraft:smooth_basalt' },
{ raw: 'minecraft:smooth_basalt', polished: 'minecraft:polished_basalt' }
{ raw: 'minecraft:smooth_basalt', polished: 'minecraft:polished_basalt' },
{ raw: 'ad_astra:moon_stone', polished: 'ad_astra:polished_moon_stone' },
{ raw: 'ad_astra:moon_stone_bricks', polished: 'ad_astra:chiseled_moon_stone_bricks' },
{ raw: 'ad_astra:mars_stone', polished: 'ad_astra:polished_mars_stone' },
{ raw: 'ad_astra:mars_stone_bricks', polished: 'ad_astra:chiseled_mars_stone_bricks' },
{ raw: 'ad_astra:venus_stone', polished: 'ad_astra:polished_venus_stone' },
{ raw: 'ad_astra:venus_stone_bricks', polished: 'ad_astra:chiseled_venus_stone_bricks' },
{ raw: 'ad_astra:venus_sandstone', polished: 'ad_astra:venus_sandstone_bricks' },
{ raw: 'ad_astra:mercury_stone', polished: 'ad_astra:polished_mercury_stone' },
{ raw: 'ad_astra:mercury_stone_bricks', polished: 'ad_astra:chiseled_mercury_stone_bricks' },
{ raw: 'ad_astra:glacio_stone', polished: 'ad_astra:polished_glacio_stone' },
{ raw: 'ad_astra:glacio_stone_bricks', polished: 'ad_astra:chiseled_glacio_stone_bricks' },
{ raw: 'ad_astra:conglomerate', polished: 'ad_astra:polished_conglomerate' },
{ raw: 'ad_astra:permafrost', polished: 'ad_astra:polished_permafrost' },
{ raw: 'ad_astra:permafrost_bricks', polished: 'ad_astra:chiseled_permafrost_bricks' },
{ raw: 'ad_astra:chiseled_permafrost_bricks', polished: 'ad_astra:permafrost_tiles' },
{ raw: 'ae2:sky_stone_block', polished: 'ae2:smooth_sky_stone_block' },
{ raw: 'ae2:smooth_sky_stone_block', polished: 'ae2:sky_stone_brick' },
{ raw: 'ae2:sky_stone_brick', polished: 'ae2:sky_stone_small_brick' },
{ raw: 'gtceu:certus_quartz_block', polished: 'ae2:cut_quartz_block' },
]
RAW_TO_POLISHED.forEach(x => {
@ -87,7 +125,14 @@ function registerTFGRockRecipes(event) {
const CRACKING = [
{ raw: 'minecraft:deepslate_bricks', cracked: 'minecraft:cracked_deepslate_bricks' },
{ raw: 'minecraft:deepslate_tiles', cracked: 'minecraft:cracked_deepslate_tiles' }
{ raw: 'minecraft:deepslate_tiles', cracked: 'minecraft:cracked_deepslate_tiles' },
{ raw: 'ad_astra:moon_stone_bricks', cracked: 'ad_astra:cracked_moon_stone_bricks' },
{ raw: 'ad_astra:mars_stone_bricks', cracked: 'ad_astra:cracked_mars_stone_bricks' },
{ raw: 'ad_astra:venus_stone_bricks', cracked: 'ad_astra:cracked_venus_stone_bricks' },
{ raw: 'ad_astra:venus_sandstone_bricks', cracked: 'ad_astra:cracked_venus_sandstone_bricks' },
{ raw: 'ad_astra:mercury_stone_bricks', cracked: 'ad_astra:cracked_mercury_stone_bricks' },
{ raw: 'ad_astra:glacio_stone_bricks', cracked: 'ad_astra:cracked_glacio_stone_bricks' },
{ raw: 'ad_astra:permafrost_bricks', cracked: 'ad_astra:cracked_permafrost_bricks' }
]
CRACKING.forEach(x => {
@ -100,6 +145,10 @@ function registerTFGRockRecipes(event) {
.itemOutputs(x.cracked)
.duration(12)
.EUt(8)
event.recipes.greate.pressing(x.cracked, x.raw)
.recipeTier(1)
.id(`greate:pressing/${x.raw}_to_${x.cracked}`.replace(/:/g, '_'))
})
// forge hammer
@ -109,7 +158,27 @@ function registerTFGRockRecipes(event) {
{ raw: 'minecraft:cobbled_deepslate', hammered: 'tfc:sand/black' },
{ raw: 'minecraft:blackstone', hammered: 'tfc:sand/black' },
{ raw: 'beneath:crackrack', hammered: 'tfc:sand/pink' },
{ raw: 'minecraft:dripstone_block', hammered: 'tfc:sand/brown' }
{ raw: 'minecraft:dripstone_block', hammered: 'tfc:sand/brown' },
{ raw: 'ad_astra:moon_stone', hammered: 'ad_astra:moon_cobblestone' },
{ raw: 'tfg:rock/hardened_moon_stone', hammered: 'ad_astra:moon_cobblestone' },
{ raw: 'ad_astra:moon_cobblestone', hammered: 'ad_astra:moon_sand' },
{ raw: 'ad_astra:moon_deepslate', hammered: 'ad_astra:moon_sand' },
{ raw: 'tfg:rock/hardened_moon_deepslate', hammered: 'ad_astra:moon_sand' },
{ raw: 'ad_astra:mars_stone', hammered: 'ad_astra:mars_cobblestone' },
{ raw: 'tfg:rock/hardened_mars_stone', hammered: 'ad_astra:mars_cobblestone' },
{ raw: 'ad_astra:mars_cobblestone', hammered: 'ad_astra:mars_sand' },
{ raw: 'ad_astra:venus_stone', hammered: 'ad_astra:venus_cobblestone' },
{ raw: 'tfg:rock/hardened_venus_stone', hammered: 'ad_astra:venus_cobblestone' },
{ raw: 'ad_astra:venus_cobblestone', hammered: 'ad_astra:venus_sand' },,
{ raw: 'ad_astra:mercury_stone', hammered: 'ad_astra:mercury_cobblestone' },
{ raw: 'tfg:rock/hardened_mercury_stone', hammered: 'ad_astra:mercury_cobblestone' },
{ raw: 'ad_astra:mercury_cobblestone', hammered: 'tfc:sand/red' },
{ raw: 'ad_astra:glacio_stone', hammered: 'ad_astra:glacio_cobblestone' },
{ raw: 'tfg:rock/hardened_glacio_stone', hammered: 'ad_astra:glacio_cobblestone' },
{ raw: 'ad_astra:glacio_cobblestone', hammered: 'tfc:sand/white' },
{ raw: 'ad_astra:conglomerate', hammered: 'tfc:rock/gravel/conglomerate' },
{ raw: 'ad_astra:permafrost', hammered: 'tfg:loose/permafrost' }
]
HAMMERING.forEach(x => {
@ -118,39 +187,48 @@ function registerTFGRockRecipes(event) {
.itemOutputs(x.hammered)
.duration(12)
.EUt(8)
event.recipes.greate.pressing(x.hammered, x.raw)
.recipeTier(1)
.id(`greate:pressing/${x.raw}_to_${x.hammered}`.replace(/:/g, '_'))
})
// slabs, stairs, walls
const CUTTER = [
// #region Nether
{
raw: 'minecraft:cobbled_deepslate',
stair: 'minecraft:cobbled_deepslate_stairs',
slab: 'minecraft:cobbled_deepslate_slab',
wall: 'minecraft:cobbled_deepslate_wall',
dust: 'gtceu:deepslate_dust',
loose: 'tfg:loose/deepslate'
loose: 'tfg:loose/deepslate',
stonecutting: false
},
{
raw: 'minecraft:polished_deepslate',
stair: 'minecraft:polished_deepslate_stairs',
slab: 'minecraft:polished_deepslate_slab',
wall: 'minecraft:polished_deepslate_wall',
dust: 'gtceu:deepslate_dust'
dust: 'gtceu:deepslate_dust',
stonecutting: false
},
{
raw: 'minecraft:deepslate_bricks',
stair: 'minecraft:deepslate_brick_stairs',
slab: 'minecraft:deepslate_brick_slab',
wall: 'minecraft:deepslate_brick_wall',
dust: 'gtceu:deepslate_dust'
dust: 'gtceu:deepslate_dust',
stonecutting: false
},
{
raw: 'minecraft:deepslate_tiles',
stair: 'minecraft:deepslate_tile_stairs',
slab: 'minecraft:deepslate_tile_slab',
wall: 'minecraft:deepslate_tile_wall',
dust: 'gtceu:deepslate_dust'
dust: 'gtceu:deepslate_dust',
stonecutting: false
},
{
raw: 'minecraft:blackstone',
@ -158,34 +236,307 @@ function registerTFGRockRecipes(event) {
slab: 'minecraft:blackstone_slab',
wall: 'minecraft:blackstone_wall',
dust: 'gtceu:blackstone_dust',
loose: 'beneath:blackstone_pebble'
loose: 'beneath:blackstone_pebble',
stonecutting: false
},
{
raw: 'minecraft:polished_blackstone',
stair: 'minecraft:polished_blackstone_stairs',
slab: 'minecraft:polished_blackstone_slab',
wall: 'minecraft:polished_blackstone_wall',
dust: 'gtceu:blackstone_dust'
dust: 'gtceu:blackstone_dust',
stonecutting: false
},
{
raw: 'minecraft:polished_blackstone_bricks',
stair: 'minecraft:polished_blackstone_brick_stairs',
slab: 'minecraft:polished_blackstone_brick_slab',
wall: 'minecraft:polished_blackstone_brick_wall',
dust: 'gtceu:blackstone_dust'
dust: 'gtceu:blackstone_dust',
stonecutting: false
},
// #endregion
// #region Space
{
raw: 'ad_astra:moon_cobblestone',
stair: 'ad_astra:moon_cobblestone_stairs',
slab: 'ad_astra:moon_cobblestone_slab',
dust: 'tfg:moon_stone_dust',
loose: 'tfg:loose/moon_stone',
stonecutting: true
},
{
raw: 'ad_astra:mars_cobblestone',
stair: 'ad_astra:mars_cobblestone_stairs',
slab: 'ad_astra:mars_cobblestone_slab',
dust: 'tfg:mars_stone_dust',
loose: 'tfg:loose/mars_stone',
stonecutting: true
},
{
raw: 'ad_astra:venus_cobblestone',
stair: 'ad_astra:venus_cobblestone_stairs',
slab: 'ad_astra:venus_cobblestone_slab',
dust: 'tfg:venus_stone_dust',
loose: 'tfg:loose/venus_stone',
stonecutting: true
},
{
raw: 'ad_astra:mercury_cobblestone',
stair: 'ad_astra:mercury_cobblestone_stairs',
slab: 'ad_astra:mercury_cobblestone_slab',
dust: 'tfg:mercury_stone_dust',
loose: 'tfg:loose/mercury_stone',
stonecutting: true
},
{
raw: 'ad_astra:glacio_cobblestone',
stair: 'ad_astra:glacio_cobblestone_stairs',
slab: 'ad_astra:glacio_cobblestone_slab',
dust: 'tfg:glacio_stone_dust',
loose: 'tfg:loose/glacio_stone',
stonecutting: true
},
{
raw: 'ad_astra:moon_stone',
stair: 'ad_astra:moon_stone_stairs',
slab: 'ad_astra:moon_stone_slab',
dust: 'tfg:moon_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:mars_stone',
stair: 'ad_astra:mars_stone_stairs',
slab: 'ad_astra:mars_stone_slab',
dust: 'tfg:mars_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:venus_stone',
stair: 'ad_astra:venus_stone_stairs',
slab: 'ad_astra:venus_stone_slab',
dust: 'tfg:venus_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:mercury_stone',
stair: 'ad_astra:mercury_stone_stairs',
slab: 'ad_astra:mercury_stone_slab',
dust: 'tfg:mercury_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:glacio_stone',
stair: 'ad_astra:glacio_stone_stairs',
slab: 'ad_astra:glacio_stone_slab',
dust: 'tfg:glacio_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:venus_sandstone_bricks',
stair: 'ad_astra:venus_sandstone_brick_stairs',
slab: 'ad_astra:venus_sandstone_brick_slab',
dust: '4x gtceu:venus_sand',
stonecutting: true
},
{
raw: 'ad_astra:moon_stone_bricks',
stair: 'ad_astra:moon_stone_brick_stairs',
slab: 'ad_astra:moon_stone_brick_slab',
wall: 'ad_astra:moon_stone_brick_wall',
dust: 'tfg:moon_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:mars_stone_bricks',
stair: 'ad_astra:mars_stone_brick_stairs',
slab: 'ad_astra:mars_stone_brick_slab',
wall: 'ad_astra:mars_stone_brick_wall',
dust: 'tfg:mars_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:venus_stone_bricks',
stair: 'ad_astra:venus_stone_brick_stairs',
slab: 'ad_astra:venus_stone_brick_slab',
wall: 'ad_astra:venus_stone_brick_wall',
dust: 'tfg:venus_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:mercury_stone_bricks',
stair: 'ad_astra:mercury_stone_brick_stairs',
slab: 'ad_astra:mercury_stone_brick_slab',
wall: 'ad_astra:mercury_stone_brick_wall',
dust: 'tfg:mercury_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:glacio_stone_bricks',
stair: 'ad_astra:glacio_stone_brick_stairs',
slab: 'ad_astra:glacio_stone_brick_slab',
wall: 'ad_astra:glacio_stone_brick_wall',
dust: 'tfg:glacio_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:permafrost_bricks',
stair: 'ad_astra:permafrost_brick_stairs',
slab: 'ad_astra:permafrost_brick_slab',
wall: 'ad_astra:permafrost_brick_wall',
dust: 'gtceu:ice_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_moon_stone_bricks',
stair: 'ad_astra:chiseled_moon_stone_stairs',
slab: 'ad_astra:chiseled_moon_stone_slab',
dust: 'tfg:moon_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_mars_stone_bricks',
stair: 'ad_astra:chiseled_mars_stone_stairs',
slab: 'ad_astra:chiseled_mars_stone_slab',
dust: 'tfg:mars_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_venus_stone_bricks',
stair: 'ad_astra:chiseled_venus_stone_stairs',
slab: 'ad_astra:chiseled_venus_stone_slab',
dust: 'tfg:venus_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_mercury_stone_bricks',
stair: 'ad_astra:chiseled_mercury_stone_stairs',
slab: 'ad_astra:chiseled_mercury_stone_slab',
dust: 'tfg:mercury_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_glacio_stone_bricks',
stair: 'ad_astra:chiseled_glacio_stone_stairs',
slab: 'ad_astra:chiseled_glacio_stone_slab',
dust: 'tfg:glacio_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:chiseled_permafrost_bricks',
stair: 'ad_astra:chiseled_permafrost_brick_stairs',
slab: 'ad_astra:chiseled_permafrost_brick_slab',
dust: 'gtceu:ice_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_moon_stone',
stair: 'ad_astra:polished_moon_stone_stairs',
slab: 'ad_astra:polished_moon_stone_slab',
dust: 'tfg:moon_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_mars_stone',
stair: 'ad_astra:polished_mars_stone_stairs',
slab: 'ad_astra:polished_mars_stone_slab',
dust: 'tfg:mars_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_venus_stone',
stair: 'ad_astra:polished_venus_stone_stairs',
slab: 'ad_astra:polished_venus_stone_slab',
dust: 'tfg:venus_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_mercury_stone',
stair: 'ad_astra:polished_mercury_stone_stairs',
slab: 'ad_astra:polished_mercury_stone_slab',
dust: 'tfg:mercury_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_glacio_stone',
stair: 'ad_astra:polished_glacio_stone_stairs',
slab: 'ad_astra:polished_glacio_stone_slab',
dust: 'tfg:glacio_stone_dust',
stonecutting: true
},
{
raw: 'ad_astra:polished_permafrost',
stair: 'ad_astra:polished_permafrost_stairs',
slab: 'ad_astra:polished_permafrost_slab',
dust: 'gtceu:ice_dust',
stonecutting: true
},
{
raw: 'ae2:sky_stone_block',
stair: 'ae2:sky_stone_stairs',
slab: 'ae2:sky_stone_slab',
wall: 'ae2:sky_stone_wall',
dust: 'ae2:sky_dust',
stonecutting: true
},
{
raw: 'ae2:smooth_sky_stone_block',
stair: 'ae2:smooth_sky_stone_stairs',
slab: 'ae2:smooth_sky_stone_slab',
wall: 'ae2:smooth_sky_stone_wall',
dust: 'ae2:sky_dust',
stonecutting: true
},
{
raw: 'ae2:sky_stone_brick',
stair: 'ae2:sky_stone_brick_stairs',
slab: 'ae2:sky_stone_brick_slab',
wall: 'ae2:sky_stone_brick_wall',
dust: 'ae2:sky_dust',
stonecutting: true
},
{
raw: 'ae2:sky_stone_small_brick',
stair: 'ae2:sky_stone_small_brick_stairs',
slab: 'ae2:sky_stone_small_brick_slab',
wall: 'ae2:sky_stone_small_brick_wall',
dust: 'ae2:sky_dust',
stonecutting: true
},
{
raw: 'ae2:fluix_block',
stair: 'ae2:fluix_stairs',
slab: 'ae2:fluix_slab',
wall: 'ae2:fluix_wall',
dust: 'ae2:fluix_dust',
stonecutting: true
},
{
raw: 'minecraft:purpur_block',
stair: 'minecraft:purpur_stairs',
slab: 'minecraft:purpur_slab',
dust: null,
stonecutting: true
}
// #endregion
]
CUTTER.forEach(x => {
if ("stair" in x) {
event.recipes.tfc.chisel(x.stair, x.raw, 'stair')
event.recipes.gtceu.macerator(`macerate_${x.stair}`.replace(/:/g, '_'))
.itemInputs(x.stair)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
if (x.stonecutting) {
event.stonecutting(x.stair, x.raw).id(`${x.raw}_to_${x.stair}`.replace(/:/g, '_'))
}
if (x.dust != null) {
event.recipes.gtceu.macerator(`macerate_${x.stair}`.replace(/:/g, '_'))
.itemInputs(x.stair)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
}
if ("loose" in x) {
event.shapeless(`3x ${x.loose}`, [x.stair])
@ -193,27 +544,39 @@ function registerTFGRockRecipes(event) {
}
if ("slab" in x) {
event.recipes.tfc.chisel(x.slab, x.raw, 'slab').extraDrop(x.slab)
if (x.stonecutting) {
event.stonecutting(`2x ${x.slab}`, x.raw).id(`${x.raw}_to_${x.slab}`.replace(/:/g, '_'))
}
event.recipes.gtceu.macerator(`macerate_${x.slab}`.replace(/:/g, '_'))
.itemInputs(`2x ${x.slab}`)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
if (x.dust != null) {
event.recipes.gtceu.macerator(`macerate_${x.slab}`.replace(/:/g, '_'))
.itemInputs(`2x ${x.slab}`)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
}
if ("loose" in x) {
event.shapeless(`2x ${x.loose}`, [x.slab])
}
}
if ("wall" in x) {
event.recipes.tfc.chisel(x.wall, x.slab, 'smooth')
event.recipes.tfc.chisel(x.wall, x.raw, 'smooth')
if (x.stonecutting) {
event.stonecutting(x.wall, x.raw).id(`${x.raw}_to_${x.wall}`.replace(/:/g, '_'))
}
event.recipes.gtceu.macerator(`macerate_${x.wall}`.replace(/:/g, '_'))
.itemInputs(x.wall)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
if (x.dust != null) {
event.recipes.gtceu.macerator(`macerate_${x.wall}`.replace(/:/g, '_'))
.itemInputs(x.wall)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
}
}
if ("loose" in x) {
@ -221,9 +584,42 @@ function registerTFGRockRecipes(event) {
}
})
// pillars
const PILLARS = [
{ raw: 'ad_astra:moon_stone_bricks', pillar: 'ad_astra:moon_pillar' },
{ raw: 'ad_astra:mars_stone_bricks', pillar: 'ad_astra:mars_pillar' },
{ raw: 'ad_astra:venus_stone_bricks', pillar: 'ad_astra:venus_pillar' },
{ raw: 'ad_astra:mercury_stone_bricks', pillar: 'ad_astra:mercury_pillar' },
{ raw: 'ad_astra:glacio_stone_bricks', pillar: 'ad_astra:glacio_pillar' },
{ raw: 'ad_astra:permafrost_bricks', pillar: 'ad_astra:permafrost_pillar' },
{ raw: 'minecraft:purpur_block', pillar: 'minecraft:purpur_pillar' }
]
PILLARS.forEach(x => {
event.shaped(`2x ${x.pillar}`, [
'A',
'A'
], {
A: x.raw
})
event.stonecutting(x.pillar, x.raw).id(`${x.raw}_to_${x.pillar}`.replace(/:/g, '_'))
})
// macerating
const MACERATOR = [
{ block: 'minecraft:deepslate', dust: 'gtceu:deepslate_dust' },
{ block: 'minecraft:dripstone_block', dust: 'tfg:dripstone_dust' }
{ block: 'minecraft:dripstone_block', dust: 'tfg:dripstone_dust' },
{ block: 'ad_astra:moon_stone', dust: 'tfg:moon_stone_dust' },
{ block: 'ad_astra:moon_deepslate', dust: 'tfg:moon_deepslate_dust' },
{ block: 'ad_astra:mars_stone', dust: 'tfg:mars_stone_dust' },
{ block: 'ad_astra:venus_stone', dust: 'tfg:venus_stone_dust' },
{ block: 'ad_astra:mercury_stone', dust: 'tfg:mercury_stone_dust' },
{ block: 'ad_astra:glacio_stone', dust: 'tfg:glacio_stone_dust' },
{ block: 'ad_astra:permafrost', dust: 'gtceu:ice_dust' },
{ block: 'ae2:sky_stone', dust: 'ae2:sky_dust' }
]
MACERATOR.forEach(x => {
@ -241,7 +637,8 @@ function registerTFGRockRecipes(event) {
'minecraft:deepslate',
'minecraft:cobbled_deepslate',
'minecraft:blackstone',
'minecraft:dripstone_block'
'minecraft:dripstone_block',
'minecraft:basalt'
]
ROCK_DUPING.forEach(x => {
@ -252,6 +649,63 @@ function registerTFGRockRecipes(event) {
.EUt(7)
})
event.recipes.gtceu.rock_breaker('tfg:moon_stone')
.notConsumable('ad_astra:moon_stone')
.itemOutputs('ad_astra:moon_stone')
.duration(16)
.EUt(7)
.dimension('ad_astra:moon')
event.recipes.gtceu.rock_breaker('tfg:moon_deepslate')
.notConsumable('ad_astra:moon_deepslate')
.itemOutputs('ad_astra:moon_deepslate')
.duration(16)
.EUt(7)
.dimension('ad_astra:moon')
event.recipes.gtceu.rock_breaker('tfg:glacio_stone')
.notConsumable('ad_astra:glacio_stone')
.itemOutputs('ad_astra:glacio_stone')
.duration(16)
.EUt(7)
.dimension('ad_astra:moon')
event.recipes.gtceu.rock_breaker('tfg:mars_stone')
.notConsumable('ad_astra:mars_stone')
.itemOutputs('ad_astra:mars_stone')
.duration(16)
.EUt(7)
.dimension('ad_astra:mars')
event.recipes.gtceu.rock_breaker('tfg:venus_stone')
.notConsumable('ad_astra:venus_stone')
.itemOutputs('ad_astra:venus_stone')
.duration(16)
.EUt(7)
.dimension('ad_astra:venus')
event.recipes.gtceu.rock_breaker('tfg:mercury_stone')
.notConsumable('ad_astra:mercury_stone')
.itemOutputs('ad_astra:mercury_stone')
.duration(16)
.EUt(7)
.dimension('ad_astra:mercury')
// #endregion
// #region sandstone
event.recipes.gtceu.compressor('tfg:venus_sandstone')
.itemInputs('4x ad_astra:venus_sand')
.itemOutputs('ad_astra:venus_sandstone')
.duration(40*20)
.EUt(2)
event.recipes.gtceu.compressor('tfg:permafrost')
.itemInputs('4x tfg:loose/permafrost')
.itemOutputs('ad_astra:permafrost')
.duration(40*20)
.EUt(2)
// #endregion
//#region Magma Blocks
@ -259,18 +713,18 @@ function registerTFGRockRecipes(event) {
event.remove({id: 'greate:splashing/obsidian'})
//magma block + stone group
const magma_blocks = [
{magma: 'minecraft:magma_block', rock: 'minecraft:blackstone'},
{magma: 'tfc:rock/magma/granite', rock: 'tfc:rock/raw/granite'},
{magma: 'tfc:rock/magma/diorite', rock: 'tfc:rock/raw/diorite'},
{magma: 'tfc:rock/magma/gabbro', rock: 'tfc:rock/raw/gabbro'},
{magma: 'tfc:rock/magma/rhyolite', rock: 'tfc:rock/raw/rhyolite'},
{magma: 'tfc:rock/magma/basalt', rock: 'tfc:rock/raw/basalt'},
{magma: 'tfc:rock/magma/andesite', rock: 'tfc:rock/raw/andesite'},
{magma: 'tfc:rock/magma/dacite', rock: 'tfc:rock/raw/dacite'}
const MAGMA_BLOCKS = [
{ magma: 'minecraft:magma_block', rock: 'minecraft:blackstone' },
{ magma: 'tfc:rock/magma/granite', rock: 'tfc:rock/raw/granite' },
{ magma: 'tfc:rock/magma/diorite', rock: 'tfc:rock/raw/diorite' },
{ magma: 'tfc:rock/magma/gabbro', rock: 'tfc:rock/raw/gabbro' },
{ magma: 'tfc:rock/magma/rhyolite', rock: 'tfc:rock/raw/rhyolite' },
{ magma: 'tfc:rock/magma/basalt', rock: 'tfc:rock/raw/basalt' },
{ magma: 'tfc:rock/magma/andesite', rock: 'tfc:rock/raw/andesite' },
{ magma: 'tfc:rock/magma/dacite', rock: 'tfc:rock/raw/dacite' }
];
magma_blocks.forEach(block => {
MAGMA_BLOCKS.forEach(block => {
event.recipes.gtceu.fluid_solidifier(`tfg:gtceu/fluid_solidifier/${block.magma}`.replace(/:/g, '/'))
.itemInputs(`1x ${block.rock}`)

View file

@ -0,0 +1,248 @@
// priority: 0
function registerTFGSpaceRecipes(event) {
// TODO: Change these to work on any dim as long as they're in an oxygenated area?
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('nether')
.circuit(2)
.outputFluids(Fluid.of('gtceu:air', 10000))
.dimension('minecraft:the_nether')
.duration(200)
.EUt(16)
event.recipes.gtceu.gas_collector('moon')
.circuit(3)
.outputFluids(Fluid.of('gtceu:argon', 1))
.dimension('ad_astra:moon')
.duration(20*60*30)
.EUt(16)
// Aqueous accumulator
let aaCircuit = 1;
event.recipes.gtceu.aqueous_accumulator('water_overworld')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.addDataString("fluidA", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_overworld')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
.addDataString("fluidA", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_overworld')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20*15)
.EUt(GTValues.VHA[GTValues.HV])
.addDataString("fluidA", "minecraft:lava")
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('water_nether')
.circuit(aaCircuit++)
.dimension('minecraft:the_nether')
.duration(20*2)
.EUt(GTValues.VHA[GTValues.LV])
.addDataString("fluidA", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_nether')
.circuit(aaCircuit++)
.dimension('minecraft:the_nether')
.duration(20*2)
.EUt(GTValues.VA[GTValues.LV])
.addDataString("fluidA", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_nether')
.circuit(aaCircuit++)
.dimension('minecraft:the_nether')
.duration(20)
.EUt(GTValues.VHA[GTValues.LV])
.addDataString("fluidA", "minecraft:lava")
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('water_moon')
.circuit(aaCircuit++)
.dimension('ad_astra:moon')
.duration(20*5)
.EUt(GTValues.VHA[GTValues.MV])
.addDataString("fluidA", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_moon')
.circuit(aaCircuit++)
.dimension('ad_astra:moon')
.duration(20*5)
.EUt(GTValues.VA[GTValues.MV])
.addDataString("fluidA", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('water_orbit')
.circuit(aaCircuit++)
.dimension('ad_astra:earth_orbit')
.dimension('ad_astra:moon_orbit')
.dimension('ad_astra:mars_orbit')
.dimension('ad_astra:venus_orbit')
.dimension('ad_astra:mercury_orbit')
.duration(20*5)
.EUt(GTValues.VHA[GTValues.MV])
.addDataString("fluidA", "minecraft:water")
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water_orbit')
.circuit(aaCircuit++)
.dimension('ad_astra:earth_orbit')
.dimension('ad_astra:moon_orbit')
.dimension('ad_astra:mars_orbit')
.dimension('ad_astra:venus_orbit')
.dimension('ad_astra:mercury_orbit')
.duration(20*5)
.EUt(GTValues.VA[GTValues.MV])
.addDataString("fluidA", "tfc:salt_water")
.outputFluids(Fluid.of("tfc:salt_water", 1000))
// Plants
// Chorus
event.recipes.gtceu.greenhouse('tfg:chorus')
.itemInputs('8x tfg:lunar_chorus_flower')
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 7500, 1000)
.chancedOutput('8x tfg:lunar_chorus_flower', 5000, 1000)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:chorus_helium')
.itemInputs('8x tfg:lunar_chorus_flower')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 8500, 1000)
.chancedOutput('8x tfg:lunar_chorus_flower', 6000, 1000)
.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, 100)
.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')
.itemInputs('8x minecraft:twisting_vines')
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 2500, 1000)
.chancedOutput('minecraft:verdant_froglight', 2500, 1000)
.chancedOutput('minecraft:ochre_froglight', 2500, 1000)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.LV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:lightbloom_helium')
.itemInputs('8x minecraft:twisting_vines')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 3500, 1000)
.chancedOutput('minecraft:verdant_froglight', 3500, 1000)
.chancedOutput('minecraft:ochre_froglight', 3500, 1000)
.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(JsonIO.of({ amount: 20, value: { tag: "tfg:clean_water" }}))
.outputFluids(Fluid.of('gtceu:biomass', 20))
.duration(50)
.EUt(3)
// Space suit gases
event.recipes.gtceu.compressor('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.compressor('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.compressor('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.compressor('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.compressor('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])
}

View file

@ -0,0 +1,267 @@
// priority: 0
function registerTFGStoneDustRecipes(event) {
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_blackstone' })
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__diorite')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Diorite, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Clay, 1), 4500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Mirabilite, 1), 2000, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__marble')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Marble, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcite, 1), 6000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Magnesium, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__andesite')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Andesite, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Asbestos, 1), 6000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Saltpeter, 1), 2000, 500)
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__basalt')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Basalt, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Flint, 1), 5000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Olivine, 1), 1500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcite, 1), 1500, 500)
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__granite')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Granite, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Redrock, 1), 2000, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__deepslate')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Deepslate, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Biotite, 1), 2000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Olivine, 1), 3500, 700)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
event.recipes.gtceu.centrifuge('blackstone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Blackstone, 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Graphite, 1), 3500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Magnesium, 1), 4500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Gold, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 16))
// TFC
event.recipes.gtceu.centrifuge('gabbro_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('gabbro'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Magnetite, 1), 2500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Rutile, 1), 1500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
event.recipes.gtceu.centrifuge('shale_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('shale'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Sodium, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 16))
event.recipes.gtceu.centrifuge('claystone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('claystone'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Clay, 1), 3000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Hematite, 1), 3500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Bauxite, 1), 2500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('limestone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('limestone'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcium, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 36))
event.recipes.gtceu.centrifuge('conglomerate_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('conglomerate'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Hematite, 1), 3500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.TricalciumPhosphate, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('dolomite_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('dolomite'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Magnesium, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcium, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 16))
event.recipes.gtceu.centrifuge('chert_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('chert'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Redrock, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 24))
event.recipes.gtceu.centrifuge('chalk_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('chalk'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcium, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Carbon, 1), 3500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
event.recipes.gtceu.centrifuge('rhyolite_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('rhyolite'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Tantalite, 1), 1500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
event.recipes.gtceu.centrifuge('dacite_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('dacite'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Sodium, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcium, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Kyanite, 1), 3500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
event.recipes.gtceu.centrifuge('slate_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('slate'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Sapphire, 1), 1500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 24))
event.recipes.gtceu.centrifuge('phyllite_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('phyllite'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Quartzite, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.CalciumChloride, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('schist_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('schist'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Mica, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Talc, 1), 5500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.MetalMixture, 1), 500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
event.recipes.gtceu.centrifuge('gneiss_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('gneiss'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Quartzite, 1), 6500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Biotite, 1), 3500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 5))
event.recipes.gtceu.centrifuge('dripstone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(480)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('dripstone'), 1))
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.CalciumCarbonate, 1), 8500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.CalciumHydroxide, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 12))
// Ad astra
event.recipes.gtceu.centrifuge('moon_stone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(10 * 20)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('moon_stone'), 1))
.chancedOutput('ae2:sky_dust', 5000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Ilmenite, 1), 1000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Magnetite, 1), 2000, 500)
.outputFluids(Fluid.of('gtceu:helium_3', 200))
event.recipes.gtceu.centrifuge('moon_deepslate_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(10 * 20)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('moon_deepslate'), 1))
.chancedOutput('ae2:sky_dust', 5000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Calcium, 1), 2000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Olivine, 1), 1500, 500)
.outputFluids(Fluid.of('gtceu:helium_3', 200))
event.recipes.gtceu.centrifuge('glacio_stone_dust_separation')
.EUt(GTValues.VA[GTValues.MV])
.duration(10 * 20)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('glacio_stone'), 1))
.chancedOutput('ae2:sky_dust', 3000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Sodium, 1), 4000, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Potassium, 1), 4000, 500)
.outputFluids(Fluid.of('gtceu:oxygen', 50), Fluid.of('gtceu:helium_3', 300))
// AE2
event.recipes.gtceu.centrifuge('sky_dust_separation')
.EUt(GTValues.VA[GTValues.LV])
.duration(100)
.itemInputs('ae2:sky_dust')
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.SiliconDioxide, 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.CertusQuartz, 1), 4500, 500)
// Create
event.recipes.gtceu.centrifuge('asurine_dust_separation')
.EUt(GTValues.VA[GTValues.LV])
.duration(100)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, TFGHelpers.getMaterial('asurine'), 1))
.chancedOutput(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.CertusQuartz, 1), 4500, 500)
.chancedOutput(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Zinc, 1), 3500, 500)
// Misc dust
event.recipes.gtceu.centrifuge('gtceu:quartz_sand_separation')
.EUt(30)
.duration(60)
.itemInputs('2x gtceu:quartz_sand_dust')
.itemOutputs('gtceu:quartzite_dust')
.chancedOutput('#forge:dust/nether_quartz', 2000, 200)
}

View file

@ -146,19 +146,6 @@ function registerTFGTerrariumRecipes(event) {
}).id('tfg:shaped/end_crystal')
// chorus fruit
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_uranium')
.itemInputs('#tfc:foods/fruits', 'gtceu:uranium_235_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:uranium_dust')
.duration(500)
.EUt(480)
.circuit(1)
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_plutonium')
.itemInputs('#tfc:foods/fruits', 'gtceu:plutonium_241_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:plutonium_dust')
.duration(200)
.EUt(480)
event.recipes.gtceu.large_chemical_reactor('tfg:kovarex')
.itemInputs('40x gtceu:uranium_235_dust', '5x gtceu:uranium_dust')
@ -193,7 +180,7 @@ function registerTFGTerrariumRecipes(event) {
'B',
'C'
], {
A: 'minecraft:ender_eye',
A: 'tfg:vitrified_pearl',
B: 'minecraft:cyan_carpet',
C: 'minecraft:end_stone'
}).id('tfg:shaped/artificial_end_portal_frame')

View file

@ -26,6 +26,14 @@ function registerFacadeWhitelistTags(event) {
'#simplylight:any_lamp_off',
'#minecraft:planks',
'#minecraft:logs',
'#tfg:ad_astra_iron_blocks',
'#tfg:ad_astra_steel_blocks',
'#tfg:ad_astra_desh_blocks',
'#tfg:ad_astra_ostrum_blocks',
'#tfg:ad_astra_calorite_blocks',
'#tfg:ad_astra_etrium_blocks',
//rnr shingles
'rnr:ceramic_roof',
'rnr:terracotta_roof',
@ -113,8 +121,10 @@ function registerFacadeWhitelistTags(event) {
'create:dark_oak_window',
'create:mangrove_window',
'create:ornate_iron_window',
'create_connected:cherry_window',
'create_connected:bamboo_window',
'create:industrial_iron_window',
'create:weathered_iron_window',
'create:cherry_window',
'create:bamboo_window',
'createdeco:andesite_window',
'createdeco:copper_window',
'createdeco:iron_window',
@ -134,108 +144,50 @@ function registerFacadeWhitelistTags(event) {
'createdeco:zinc_sheet_metal'
];
const mc_colors =
[
'white',
'orange',
'magenta',
'light_blue',
'yellow',
'lime',
'pink',
'gray',
'light_gray',
'cyan',
'purple',
'blue',
'brown',
'green',
'red',
'black'
]
const wood_types_tfc =
[
'acacia',
'ash',
'aspen',
'birch',
'blackwood',
'chestnut',
'douglas_fir',
'hickory',
'kapok',
'mangrove',
'maple',
'oak',
'palm',
'pine',
'rosewood',
'sequoia',
'spruce',
'sycamore',
'white_cedar',
'willow'
]
const wood_types_afc =
[
'baobao',
'eucalyptus',
'mahogany',
'heavea',
'tualang',
'teak',
'cypress',
'fig',
'ironwood',
'ipe'
]
const createdeco_bricks_fm =
[
'pearl_bricks',
'verdant_bricks',
'red_bricks',
'dean_bricks',
'umber_bricks',
'dusk_bricks',
'blue_bricks',
'scarlet_bricks'
'pearl_bricks',
'verdant_bricks',
'red_bricks',
'dean_bricks',
'umber_bricks',
'dusk_bricks',
'blue_bricks',
'scarlet_bricks'
]
const gtceu_stonelike_fm =
[
'light_concrete',
'dark_concrete',
'red_granite',
'marble'
'light_concrete',
'dark_concrete',
'red_granite',
'marble'
]
const create_copper_fm =
[
'copper',
'exposed_copper',
'weathered_copper',
'oxidized_copper'
'copper',
'exposed_copper',
'weathered_copper',
'oxidized_copper'
]
const create_rock_types_fm =
[
'granite',
'diorite',
'andesite',
'calcite',
'dripstone',
'deepslate',
'limestone'
//'ochrum',
//'scoria',
//'scorchia',
//'veridium'
//'tuff',
//'asurine',
//'crimsite',
'granite',
'diorite',
'andesite',
'calcite',
'dripstone',
'deepslate',
'limestone'
//'ochrum',
//'scoria',
//'scorchia',
//'veridium'
//'tuff',
//'asurine',
//'crimsite',
]
//misc blocks
@ -267,7 +219,7 @@ function registerFacadeWhitelistTags(event) {
});
//gtceu misc colored blocks
mc_colors.forEach(facade_material => {
global.MINECRAFT_DYE_NAMES.forEach(facade_material => {
event.add('tfg:whitelisted/facades', 'gtceu:' + facade_material + '_metal_sheet')
event.add('tfg:whitelisted/facades', 'gtceu:' + facade_material + '_large_metal_sheet')
event.add('tfg:whitelisted/facades', 'gtceu:' + facade_material + '_studs')
@ -296,7 +248,7 @@ function registerFacadeWhitelistTags(event) {
});
//rnr shingles
wood_types_tfc.concat(wood_types_afc).forEach(facade_material => {
global.TFC_WOOD_TYPES.concat(global.AFC_WOOD_TYPES).forEach(facade_material => {
event.add('tfg:whitelisted/facades', 'rnr:wood/shingles/' + facade_material)
});
@ -315,10 +267,10 @@ function registerFacadeWhitelistTags(event) {
});
//everycomp windows
wood_types_tfc.forEach(facade_material => {
global.TFC_WOOD_TYPES.forEach(facade_material => {
event.add('tfg:whitelisted/facades', 'everycomp:c/tfc/' + facade_material + '_window')
});
wood_types_afc.forEach(facade_material => {
global.AFC_WOOD_TYPES.forEach(facade_material => {
event.add('tfg:whitelisted/facades', 'everycomp:c/afc/' + facade_material + '_window')
});
}

View file

@ -2,7 +2,14 @@ const registerTFGItemTags = (event) => {
registerTFGTrimTags(event)
registerFacadeWhitelistTags(event)
//crop stuff
event.add('tfc:seeds', 'tfg:sunflower_seeds')
event.add('tfc:seeds', 'tfg:rapeseed_seeds')
event.add('tfc:foods', 'tfg:roasted_sunflower_seeds')
event.add('tfc:compost_greens_high', 'tfg:rapeseed_product')
event.add('tfc:compost_greens_high', 'tfg:sunflower_product')
event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product')
event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product')
//temporary hidden items
event.add('c:hidden_from_recipe_viewers', 'tfg:geyser_source_small')
event.add('c:hidden_from_recipe_viewers', 'tfg:geyser_source')
@ -38,7 +45,6 @@ const registerTFGItemTags = (event) => {
event.add('tfc:usable_on_tool_rack', 'tfg:trowel')
// #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.
@ -68,7 +74,6 @@ const registerTFGItemTags = (event) => {
//#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')
@ -131,28 +136,83 @@ const registerTFGItemTags = (event) => {
event.add('tfg:luck_ingredients', 'tfc:plant/heather')
// #endregion
//region Airplane Upgrades
// Airplane Upgrades
global.AIRCRAFT_UPGRADES.forEach(value => {
event.add('immersive_aircraft:upgrades', `tfg:${value}`);
})
// #endregion
// Universal Circuits
global.UNIVERSAL_CIRCUIT_TIERS.forEach(tier => { event.add(`gtceu:circuits/${tier}`, `tfg:${tier}_universal_circuit`); })
// #endregion
// Crafting components
event.add('tfg:aluminium_oxide', '#forge:dusts/bauxite')
event.add('tfg:aluminium_oxide', '#forge:dusts/sapphire')
event.add('tfg:aluminium_oxide', '#forge:dusts/green_sapphire')
// Use either cast or wrought iron
event.add('forge:double_iron_ingots', '#forge:double_ingots/iron')
event.add('forge:double_iron_ingots', '#forge:double_ingots/wrought_iron')
event.add('tfg:any_iron_double_ingot', '#forge:double_ingots/iron')
event.add('tfg:any_iron_double_ingot', '#forge:double_ingots/wrought_iron')
event.add('tfg:any_iron_plate', '#forge:double_plates/iron')
event.add('tfg:any_iron_plate', '#forge:double_plates/wrought_iron')
event.add('tfg:any_bronze_frame', '#forge:frames/bronze')
event.add('tfg:any_bronze_frame', '#forge:frames/bismuth_bronze')
event.add('tfg:any_bronze_frame', '#forge:frames/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)
})
//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);
});
//meal bags
event.add('tfg:foil_packs', 'tfg:foil_pack');
event.add('tfg:foil_packs', 'tfg:clean_foil_pack')
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/meats');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/grains');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/vegetables');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/fruits');
event.add('tfg:foods/usable_in_meal_bag', '#tfc:foods/dairy');
event.add('tfg:foods/usable_in_meal_bag', 'tfc:food/cooked_egg');
event.add('tfg:foods/usable_in_meal_bag', 'tfc:food/boiled_egg');
//#endregion
// #region Space blocks
event.add('tfg:moon_plants', 'tfg:lunar_roots')
event.add('tfg:moon_plants', 'tfg:lunar_sprouts')
// #endregion
// #region 0.7.19 -> 0.9 conversion
event.add('c:hidden_from_recipe_viewers', 'treetap:tap')
event.add('c:hidden_from_recipe_viewers', 'tfcea:refrigerator')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:brass_ingot')
@ -247,14 +307,18 @@ const registerTFGItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_silver')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_silver')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_silver')
//#endregion
}
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')
// #region Nether blocks
event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate')
@ -277,15 +341,6 @@ const registerTFGBlockTags = (event) => {
event.add('tfc:rock/hardened', 'tfg:rock/hardened_dripstone')
// #endregion
// #region Space blocks (TODO: undo these when merging space into dev!)
event.add('c:hidden_from_recipe_viewers', 'tfg:lunar_roots')
event.add('c:hidden_from_recipe_viewers', 'tfg:lunar_sprouts')
event.add('c:hidden_from_recipe_viewers', 'tfg:lunar_chorus_plant')
event.add('c:hidden_from_recipe_viewers', 'tfg:lunar_chorus_flower')
// #endregion
}
const registerTFGFluidTags = (event) => {
@ -307,6 +362,14 @@ const registerTFGFluidTags = (event) => {
event.add('tfc:usable_in_wooden_bucket', 'tfg:conifer_pitch')
event.add('tfc:usable_in_red_steel_bucket', 'tfg:conifer_pitch')
event.add('tfc:usable_in_blue_steel_bucket', 'tfg:conifer_pitch')
event.add('tfg:clean_water', 'minecraft:water')
event.add('tfg:clean_water', 'tfc:river_water')
event.add('tfg:clean_water', 'tfc:spring_water')
global.BREATHABLE_COMPRESSED_AIRS.forEach(x => {
event.add('tfg:breathable_compressed_air', x)
})
}
@ -365,8 +428,23 @@ const registerTFGBiomeTags = (event) => {
// #endregion
}
// 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);

View file

@ -20,7 +20,6 @@ const registerTFGOreVeinFeatures = (event) => {
event.add('tfc:in_biome/veins', 'tfg:earth/vein/deep_topaz')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_apatite')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_basaltic_sands')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_bauxite')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_beryllium')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_bismuthinite')
event.add('tfc:in_biome/veins', 'tfg:earth/vein/normal_cassiterite')
@ -64,16 +63,15 @@ const registerTFGOreVeinFeatures = (event) => {
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_bauxite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_beryllium')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_desh')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_diopside')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_enstatite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_fayalite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_garnierite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_graphite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_lubricant')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_magnetite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_manganese')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_mica')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_molybdenum')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_monazite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_olivine')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_plutonium')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_pyrolusite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_quartz')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_redstone')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_saltpeter')
@ -81,6 +79,8 @@ const registerTFGOreVeinFeatures = (event) => {
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_scheelite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_sheldonite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_silver')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_sphalerite')
event.add('tfg:moon_veins', 'tfg:moon/vein/moon_topaz')
// #endregion
@ -90,7 +90,6 @@ const registerTFGOreVeinFeatures = (event) => {
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_anthracite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_apatite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_basaltic_sands')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_bauxite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_beryllium')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_cassiterite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_copper')