merge food branch into space branch
2
.github/workflows/build.yml
vendored
|
|
@ -407,7 +407,7 @@ jobs:
|
||||||
|
|
||||||
- name: 🚀 Create release
|
- name: 🚀 Create release
|
||||||
id: release
|
id: release
|
||||||
uses: softprops/action-gh-release@v2.2.2
|
uses: softprops/action-gh-release@v2.3.2
|
||||||
with:
|
with:
|
||||||
name: ${{ needs.info.outputs.project_version }}
|
name: ${{ needs.info.outputs.project_version }}
|
||||||
tag_name: ${{ needs.info.outputs.project_version }}
|
tag_name: ${{ needs.info.outputs.project_version }}
|
||||||
|
|
|
||||||
11
CHANGELOG.md
|
|
@ -1,6 +1,17 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
### New features
|
### New features
|
||||||
|
### Bug fixes
|
||||||
|
### Changes
|
||||||
|
- Changed pineapple yarn recipe from assembler to wiremill & coiling machine, like the other strings (#1162) @Pyritie
|
||||||
|
- Lowered durability of wooden tongs @Pyritie
|
||||||
|
- Streamlined the Metallurgy Age quest chapter a bit @Pyritie
|
||||||
|
- Mushroom blocks now drop way less mushroom @Pyritie
|
||||||
|
|
||||||
|
|
||||||
|
## [0.9.11] - 13.06.2025
|
||||||
|
### New features
|
||||||
- Added back the vanilla stonecutter @Pyritie
|
- Added back the vanilla stonecutter @Pyritie
|
||||||
- Added our own recipes for crafting GregTech facades - 3 cast iron plates for 8 facades, or 3 titanium plates for 32 facades (#1145) @BlueBoat29
|
- Added our own recipes for crafting GregTech facades - 3 cast iron plates for 8 facades, or 3 titanium plates for 32 facades (#1145) @BlueBoat29
|
||||||
- Added create conductor recipes (#1144) @JeanRdSz
|
- Added create conductor recipes (#1144) @JeanRdSz
|
||||||
|
|
|
||||||
|
|
@ -1401,7 +1401,7 @@
|
||||||
subtitle: "{quests.low_voltage.lv_greenhouse.subtitle}"
|
subtitle: "{quests.low_voltage.lv_greenhouse.subtitle}"
|
||||||
tasks: [{
|
tasks: [{
|
||||||
id: "3EB01235ED295080"
|
id: "3EB01235ED295080"
|
||||||
item: "gtceu:greenhouse"
|
item: "tfg:electric_greenhouse"
|
||||||
type: "item"
|
type: "item"
|
||||||
}]
|
}]
|
||||||
title: "{quests.low_voltage.lv_greenhouse.title}"
|
title: "{quests.low_voltage.lv_greenhouse.title}"
|
||||||
|
|
|
||||||
|
Before Width: | Height: | Size: 607 B After Width: | Height: | Size: 382 B |
|
After Width: | Height: | Size: 734 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 338 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 248 B |
|
After Width: | Height: | Size: 292 B |
|
After Width: | Height: | Size: 241 B |
|
After Width: | Height: | Size: 149 B |
|
After Width: | Height: | Size: 75 B |
|
After Width: | Height: | Size: 75 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime":1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 380 B |
|
After Width: | Height: | Size: 919 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 659 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 149 B |
|
After Width: | Height: | Size: 334 B |
|
After Width: | Height: | Size: 683 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 348 B |
|
After Width: | Height: | Size: 542 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 592 B |
|
After Width: | Height: | Size: 504 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 184 B |
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"animation":{
|
||||||
|
"frametime": 1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 785 B |
|
After Width: | Height: | Size: 4.6 KiB |
|
After Width: | Height: | Size: 75 B |
|
After Width: | Height: | Size: 350 B |
|
After Width: | Height: | Size: 364 B |
|
After Width: | Height: | Size: 361 B |
|
After Width: | Height: | Size: 250 B |
|
|
@ -27,10 +27,9 @@ const registerTooltips = (event) =>
|
||||||
event.addAdvanced(['create:blaze_burner'], (item, advanced, text) => {
|
event.addAdvanced(['create:blaze_burner'], (item, advanced, text) => {
|
||||||
text.add(1, text.of('§cSuperheat§r §7with Coke, Anthracite, or Flawless and Exquisite coal gems.'))
|
text.add(1, text.of('§cSuperheat§r §7with Coke, Anthracite, or Flawless and Exquisite coal gems.'))
|
||||||
})
|
})
|
||||||
event.addAdvanced(['gtceu:greenhouse'], (item, advanced, text) => {
|
event.addAdvanced(['tfg:electric_greenhouse'], (item, advanced, text) => {
|
||||||
text.add(1, text.of('§7This machine has a §2Perfect Overclock§r!')),
|
text.add(1, text.of('This machine has a §2Perfect Overclock§r!')),
|
||||||
text.add(2, text.of('§7Currently, due to a bug, sometimes outputs rotten food.'))
|
text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`))
|
||||||
text.add(3, text.of(`§7The interior is customizable! Check the multiblock preview in JEI.`))
|
|
||||||
})
|
})
|
||||||
event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => {
|
event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => {
|
||||||
text.add(1, text.of('§7Artificial enviroment to simulate the Nether.')),
|
text.add(1, text.of('§7Artificial enviroment to simulate the Nether.')),
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,16 @@
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
{
|
||||||
"type": "minecraft:item",
|
"type": "minecraft:item",
|
||||||
"name": "minecraft:brown_mushroom_block"
|
"name": "minecraft:brown_mushroom"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"conditions": [
|
"conditions": [
|
||||||
{
|
{
|
||||||
"condition": "minecraft:survives_explosion"
|
"condition": "minecraft:survives_explosion"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "minecraft:random_chance",
|
||||||
|
"chance": 0.25
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,12 +7,16 @@
|
||||||
"entries": [
|
"entries": [
|
||||||
{
|
{
|
||||||
"type": "minecraft:item",
|
"type": "minecraft:item",
|
||||||
"name": "minecraft:red_mushroom_block"
|
"name": "minecraft:red_mushroom"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"conditions": [
|
"conditions": [
|
||||||
{
|
{
|
||||||
"condition": "minecraft:survives_explosion"
|
"condition": "minecraft:survives_explosion"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"condition": "minecraft:random_chance",
|
||||||
|
"chance": 0.25
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -454,276 +454,6 @@ const registerFirmaLifeRecipes = (event) => {
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Рецепты муки
|
|
||||||
|
|
||||||
global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.recipes.gtceu.macerator(`tfg:${element.name}`)
|
|
||||||
.itemInputs(element.input)
|
|
||||||
.itemOutputs(element.output)
|
|
||||||
.duration(200)
|
|
||||||
.EUt(2)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Рецепты теста
|
|
||||||
|
|
||||||
global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.recipes.gtceu.mixer(element.name)
|
|
||||||
.itemInputs(element.input, '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:yeast_starter', 100))
|
|
||||||
.itemOutputs(element.output)
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
.circuit(2)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Рецепты плоского хлеба
|
|
||||||
|
|
||||||
global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.smelting(element.output, element.input)
|
|
||||||
.id(`tfg:smelting/${element.name}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Смешивание в миске
|
|
||||||
|
|
||||||
// Тесто для пиццы
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/pizza_dough_olive_oil')
|
|
||||||
.itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt')
|
|
||||||
.inputFluids(Fluid.of('tfc:olive_oil', 1000))
|
|
||||||
.itemOutputs('4x firmalife:food/pizza_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/pizza_dough_soybean_oil')
|
|
||||||
.itemInputs('firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt')
|
|
||||||
.inputFluids(Fluid.of('firmalife:soybean_oil', 1000))
|
|
||||||
.itemOutputs('4x firmalife:food/pizza_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Vanilla Ice Cream
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/vanilla_ice_cream')
|
|
||||||
.itemInputs('firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla')
|
|
||||||
.inputFluids(Fluid.of('firmalife:cream', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/vanilla_ice_cream')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Pumpkin Pie Dough
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/pumpkin_pie_dough')
|
|
||||||
.itemInputs('#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour')
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 1000))
|
|
||||||
.itemOutputs('firmalife:food/pumpkin_pie_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
.circuit(2)
|
|
||||||
|
|
||||||
// Butter
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/butter')
|
|
||||||
.itemInputs('tfc:powder/salt')
|
|
||||||
.inputFluids(Fluid.of('firmalife:cream', 1000))
|
|
||||||
.itemOutputs('firmalife:food/butter')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Pie Dough
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/pie_dough')
|
|
||||||
.itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour')
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 1000))
|
|
||||||
.itemOutputs('firmalife:food/pie_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
.circuit(2)
|
|
||||||
|
|
||||||
// Cookie Dough
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/cookie_dough')
|
|
||||||
.itemInputs('#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour', '#forge:eggs', 'firmalife:spice/vanilla')
|
|
||||||
.itemOutputs('4x firmalife:food/cookie_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Hardtack Dough
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/hardtack_dough')
|
|
||||||
.itemInputs('tfc:powder/salt', '#tfc:foods/flour')
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 1000))
|
|
||||||
.itemOutputs('4x firmalife:food/hardtack_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
.circuit(2)
|
|
||||||
|
|
||||||
// Yeast starter
|
|
||||||
event.recipes.gtceu.mixer('firmalife:yeast_starter')
|
|
||||||
.inputFluids(Fluid.of('firmalife:yeast_starter', 100))
|
|
||||||
.itemInputs('#tfc:foods/flour')
|
|
||||||
.outputFluids(Fluid.of('firmalife:yeast_starter', 600))
|
|
||||||
.duration(1200)
|
|
||||||
.EUt(8)
|
|
||||||
.circuit(1)
|
|
||||||
|
|
||||||
// Cocoa Powder
|
|
||||||
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');
|
|
||||||
|
|
||||||
// Chocolate Ice Cream
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/chocolate_ice_cream')
|
|
||||||
.itemInputs('firmalife:food/vanilla_ice_cream')
|
|
||||||
.inputFluids(Fluid.of('firmalife:chocolate', 1000))
|
|
||||||
.itemOutputs('firmalife:food/chocolate_ice_cream')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// White Chocolate Blend
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('minecraft:milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/white_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/yak_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:yak_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/white_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/goat_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:goat_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/white_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/white_chocolate_blend/coconut_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:coconut_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/white_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.smelting('firmalife:food/white_chocolate', 'firmalife:food/white_chocolate_blend')
|
|
||||||
|
|
||||||
// Dark Chocolate Blend
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('minecraft:milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/dark_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/yak_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:yak_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/dark_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/goat_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:goat_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/dark_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/dark_chocolate_blend/coconut_milk')
|
|
||||||
.itemInputs('2x firmalife:food/cocoa_powder', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:coconut_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/dark_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.smelting('firmalife:food/dark_chocolate', 'firmalife:food/dark_chocolate_blend')
|
|
||||||
|
|
||||||
// Milk Chocolate Blend
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/milk')
|
|
||||||
.itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('minecraft:milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/milk_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/yak_milk')
|
|
||||||
.itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:yak_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/milk_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/goat_milk')
|
|
||||||
.itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:goat_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/milk_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/milk_chocolate_blend/coconut_milk')
|
|
||||||
.itemInputs('firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener')
|
|
||||||
.inputFluids(Fluid.of('firmalife:coconut_milk', 1000))
|
|
||||||
.itemOutputs('2x firmalife:food/milk_chocolate_blend')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.smelting('firmalife:food/milk_chocolate', 'firmalife:food/milk_chocolate_blend')
|
|
||||||
|
|
||||||
// Strawberry Ice Cream
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/strawberry_ice_cream')
|
|
||||||
.itemInputs('firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry')
|
|
||||||
.itemOutputs('firmalife:food/strawberry_ice_cream')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Hardtack Dough
|
|
||||||
event.recipes.gtceu.mixer('firmalife:food/chocolate_chip_cookie_dough')
|
|
||||||
.itemInputs('4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends')
|
|
||||||
.itemOutputs('4x firmalife:food/chocolate_chip_cookie_dough')
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Обжарка некоторой еды
|
|
||||||
|
|
||||||
// Cooked Pizza
|
|
||||||
event.smelting('firmalife:food/cooked_pizza', 'firmalife:food/raw_pizza')
|
|
||||||
|
|
||||||
// Taco Shell
|
|
||||||
event.smelting('firmalife:food/taco_shell', 'firmalife:food/corn_tortilla')
|
|
||||||
|
|
||||||
// Sugar Cookie
|
|
||||||
event.smelting('firmalife:food/sugar_cookie', 'firmalife:food/cookie_dough')
|
|
||||||
|
|
||||||
// Chocolate Chip Cookie
|
|
||||||
event.smelting('firmalife:food/chocolate_chip_cookie', 'firmalife:food/chocolate_chip_cookie_dough')
|
|
||||||
|
|
||||||
// Hardtack
|
|
||||||
event.smelting('firmalife:food/hardtack', 'firmalife:food/hardtack_dough')
|
|
||||||
|
|
||||||
// Cooked Pie
|
|
||||||
event.smelting('firmalife:food/cooked_pie', 'firmalife:food/filled_pie')
|
|
||||||
|
|
||||||
// Roasted Cocoa Beans
|
|
||||||
event.smelting('firmalife:food/roasted_cocoa_beans', 'firmalife:food/cocoa_beans')
|
|
||||||
|
|
||||||
// Pumpkin Pie
|
|
||||||
event.smelting('minecraft:pumpkin_pie', 'firmalife:food/raw_pumpkin_pie')
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Sticky Resin by Vat
|
//#region Sticky Resin by Vat
|
||||||
|
|
||||||
event.recipes.firmalife.vat()
|
event.recipes.firmalife.vat()
|
||||||
|
|
@ -759,28 +489,6 @@ const registerFirmaLifeRecipes = (event) => {
|
||||||
|
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
// #region Smashed food
|
|
||||||
|
|
||||||
event.recipes.gtceu.forge_hammer('firmalife:soybean_paste')
|
|
||||||
.itemInputs('firmalife:food/dehydrated_soybeans')
|
|
||||||
.itemOutputs('firmalife:food/soybean_paste')
|
|
||||||
.duration(20)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.forge_hammer('firmalife:red_grapes')
|
|
||||||
.itemInputs('firmalife:food/red_grapes')
|
|
||||||
.itemOutputs('firmalife:food/smashed_red_grapes')
|
|
||||||
.duration(20)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.forge_hammer('firmalife:white_grapes')
|
|
||||||
.itemInputs('firmalife:food/white_grapes')
|
|
||||||
.itemOutputs('firmalife:food/smashed_white_grapes')
|
|
||||||
.duration(20)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
// #endregion
|
|
||||||
|
|
||||||
// #region Drying mat alternatives
|
// #region Drying mat alternatives
|
||||||
|
|
||||||
event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp')
|
event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp')
|
||||||
|
|
@ -795,13 +503,4 @@ const registerFirmaLifeRecipes = (event) => {
|
||||||
.circuit(5)
|
.circuit(5)
|
||||||
.EUt(GTValues.VA[GTValues.ULV])
|
.EUt(GTValues.VA[GTValues.ULV])
|
||||||
.duration(200)
|
.duration(200)
|
||||||
|
|
||||||
event.smelting('firmalife:food/dehydrated_soybeans', 'tfc:food/soybean')
|
|
||||||
|
|
||||||
event.recipes.gtceu.fermenter('soybean_oil')
|
|
||||||
.itemInputs('firmalife:food/soybean_paste')
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 100))
|
|
||||||
.outputFluids(Fluid.of('firmalife:soybean_oil', 250))
|
|
||||||
.EUt(GTValues.VA[GTValues.ULV])
|
|
||||||
.duration(600)
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -744,18 +744,6 @@ function registerGTCEuMachineRecipes(event) {
|
||||||
|
|
||||||
// #endregion
|
// #endregion
|
||||||
|
|
||||||
// Контроллер теплицы
|
|
||||||
event.shaped('gtceu:greenhouse', [
|
|
||||||
'ABA',
|
|
||||||
'CDC',
|
|
||||||
'BCB'
|
|
||||||
], {
|
|
||||||
A: '#gtceu:circuits/mv',
|
|
||||||
B: 'gtceu:copper_single_cable',
|
|
||||||
C: 'tfc:compost',
|
|
||||||
D: 'gtceu:solid_machine_casing'
|
|
||||||
}).id('tfg:shaped/greenhouse')
|
|
||||||
|
|
||||||
// Drums
|
// Drums
|
||||||
const DRUMS_AND_CRATES = [
|
const DRUMS_AND_CRATES = [
|
||||||
'bismuth_bronze',
|
'bismuth_bronze',
|
||||||
|
|
|
||||||
|
|
@ -997,6 +997,18 @@ const registerMinecraftRecipes = (event) => {
|
||||||
event.shapeless('4x minecraft:brown_mushroom', ['minecraft:brown_mushroom_block', '#forge:tools/knives'])
|
event.shapeless('4x minecraft:brown_mushroom', ['minecraft:brown_mushroom_block', '#forge:tools/knives'])
|
||||||
.id('tfg:shapeless/cut_brown_mushroom_block')
|
.id('tfg:shapeless/cut_brown_mushroom_block')
|
||||||
|
|
||||||
|
event.recipes.gtceu.compressor('tfg:red_mushroom')
|
||||||
|
.itemInputs('4x minecraft:red_mushroom')
|
||||||
|
.itemOutputs('minecraft:red_mushroom_block')
|
||||||
|
.duration(20)
|
||||||
|
.EUt(GTValues.VA[GTValues.ULV])
|
||||||
|
|
||||||
|
event.recipes.gtceu.compressor('tfg:brown_mushroom')
|
||||||
|
.itemInputs('4x minecraft:brown_mushroom')
|
||||||
|
.itemOutputs('minecraft:brown_mushroom_block')
|
||||||
|
.duration(20)
|
||||||
|
.EUt(GTValues.VA[GTValues.ULV])
|
||||||
|
|
||||||
event.recipes.gtceu.chemical_bath('tfg:red_mushroom_to_shroomlight')
|
event.recipes.gtceu.chemical_bath('tfg:red_mushroom_to_shroomlight')
|
||||||
.itemInputs('minecraft:red_mushroom_block')
|
.itemInputs('minecraft:red_mushroom_block')
|
||||||
.inputFluids(Fluid.of('gtceu:glowstone', 144))
|
.inputFluids(Fluid.of('gtceu:glowstone', 144))
|
||||||
|
|
|
||||||
|
|
@ -34,44 +34,6 @@ const registerTFCRecipes = (event) => {
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Рецепты зерен
|
|
||||||
|
|
||||||
global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
|
|
||||||
event.recipes.gtceu.macerator(`tfg:${element.name}`)
|
|
||||||
.itemInputs(element.input)
|
|
||||||
.itemOutputs(element.output)
|
|
||||||
.chancedOutput('tfc:straw', 7000, 500)
|
|
||||||
.duration(200)
|
|
||||||
.EUt(2)
|
|
||||||
|
|
||||||
event.recipes.tfc.quern(element.output, element.input)
|
|
||||||
.id(`tfg:quern/${element.name}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Рецепты муки
|
|
||||||
|
|
||||||
global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.recipes.gtceu.macerator(`tfg:${element.name}`)
|
|
||||||
.itemInputs(element.input)
|
|
||||||
.itemOutputs(element.output)
|
|
||||||
.duration(200)
|
|
||||||
.EUt(2)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Рецепты обжарки мяса
|
|
||||||
|
|
||||||
global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.smelting(element.output, element.input)
|
|
||||||
.id(`tfg:smelting/${element.name}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Рецепты обжарки форм
|
//#region Рецепты обжарки форм
|
||||||
|
|
||||||
global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => {
|
global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => {
|
||||||
|
|
@ -126,15 +88,6 @@ const registerTFCRecipes = (event) => {
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Рецепты хлеба
|
|
||||||
|
|
||||||
global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.smelting(element.output, element.input)
|
|
||||||
.id(`tfg:smelting/${element.name}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible')
|
event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible')
|
||||||
|
|
||||||
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings')
|
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings')
|
||||||
|
|
|
||||||
|
|
@ -117,20 +117,6 @@ function registerTFCMachineRecipes(event) {
|
||||||
.duration(3200)
|
.duration(3200)
|
||||||
.EUt(16)
|
.EUt(16)
|
||||||
|
|
||||||
//#region Рецепты плоского теста
|
|
||||||
|
|
||||||
global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(element => {
|
|
||||||
event.recipes.gtceu.mixer(element.name)
|
|
||||||
.itemInputs(element.input)
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 100))
|
|
||||||
.itemOutputs(element.output)
|
|
||||||
.duration(300)
|
|
||||||
.EUt(16)
|
|
||||||
.circuit(3)
|
|
||||||
})
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Молды в ассемблере
|
//#region Молды в ассемблере
|
||||||
|
|
||||||
for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
|
for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
|
||||||
|
|
@ -174,158 +160,9 @@ function registerTFCMachineRecipes(event) {
|
||||||
.duration(2400)
|
.duration(2400)
|
||||||
.EUt(16)
|
.EUt(16)
|
||||||
|
|
||||||
// Curdled milk
|
|
||||||
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)
|
|
||||||
|
|
||||||
//Curds
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/milk_curd')
|
|
||||||
.inputFluids(Fluid.of('tfc:curdled_milk', 1000))
|
|
||||||
.itemOutputs('firmalife:food/milk_curd')
|
|
||||||
.duration(1200)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/yak_curd')
|
|
||||||
.inputFluids(Fluid.of('firmalife:curdled_yak_milk', 1000))
|
|
||||||
.itemOutputs('firmalife:food/yak_curd')
|
|
||||||
.duration(1200)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/goat_curd')
|
|
||||||
.inputFluids(Fluid.of('firmalife:curdled_goat_milk', 1000))
|
|
||||||
.itemOutputs('firmalife:food/goat_curd')
|
|
||||||
.duration(1200)
|
|
||||||
.EUt(16)
|
|
||||||
|
|
||||||
// Cheese wheels
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/gouda_wheel')
|
|
||||||
.inputFluids(Fluid.of('tfc:salt_water', 750))
|
|
||||||
.itemInputs('3x firmalife:food/milk_curd')
|
|
||||||
.itemOutputs('firmalife:gouda_wheel')
|
|
||||||
.duration(12000)
|
|
||||||
.EUt(24)
|
|
||||||
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/shosha_wheel')
|
|
||||||
.inputFluids(Fluid.of('tfc:salt_water', 750))
|
|
||||||
.itemInputs('3x firmalife:food/yak_curd')
|
|
||||||
.itemOutputs('firmalife:shosha_wheel')
|
|
||||||
.duration(12000)
|
|
||||||
.EUt(24)
|
|
||||||
|
|
||||||
event.recipes.gtceu.fermenter('tfg:fermenter/feta_wheel')
|
|
||||||
.inputFluids(Fluid.of('tfc:salt_water', 750))
|
|
||||||
.itemInputs('3x firmalife:food/goat_curd')
|
|
||||||
.itemOutputs('firmalife:feta_wheel')
|
|
||||||
.duration(12000)
|
|
||||||
.EUt(24)
|
|
||||||
|
|
||||||
// Cutting
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/gouda')
|
|
||||||
.itemInputs('firmalife:gouda_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/gouda')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/shosha')
|
|
||||||
.itemInputs('firmalife:shosha_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/shosha')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/feta')
|
|
||||||
.itemInputs('firmalife:feta_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/feta')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/cheddar')
|
|
||||||
.itemInputs('firmalife:cheddar_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/cheddar')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/chevre')
|
|
||||||
.itemInputs('firmalife:chevre_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/chevre')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
event.recipes.gtceu.cutter('tfg:cutter/rajya_metok')
|
|
||||||
.itemInputs('firmalife:rajya_metok_wheel')
|
|
||||||
.itemOutputs('4x firmalife:food/rajya_metok')
|
|
||||||
.duration(40)
|
|
||||||
.EUt(7)
|
|
||||||
|
|
||||||
// Misc
|
|
||||||
global.TFC_MILKS.forEach(milk => {
|
|
||||||
event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milk.id.replace(':', '_')}`)
|
|
||||||
.inputFluids(Fluid.of(milk.id, 1000))
|
|
||||||
.outputFluids(Fluid.of('firmalife:cream'))
|
|
||||||
.circuit(6)
|
|
||||||
.duration(1200)
|
|
||||||
.EUt(24)
|
|
||||||
})
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('tfg:mixer/tomato_sauce')
|
|
||||||
.itemInputs('firmalife:food/tomato_sauce_mix')
|
|
||||||
.inputFluids(Fluid.of('minecraft:water', 200))
|
|
||||||
.itemOutputs('firmalife:food/tomato_sauce')
|
|
||||||
.duration(200)
|
|
||||||
.EUt(24)
|
|
||||||
|
|
||||||
//#endregion
|
//#endregion
|
||||||
|
|
||||||
//#region Оливки
|
// Brine
|
||||||
|
|
||||||
event.recipes.gtceu.macerator(`tfg:tfc/olive_paste`)
|
|
||||||
.itemInputs('tfc:food/olive')
|
|
||||||
.itemOutputs('2x tfc:olive_paste')
|
|
||||||
.duration(60)
|
|
||||||
.EUt(2)
|
|
||||||
|
|
||||||
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)
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
// Vinegar and Brine
|
|
||||||
|
|
||||||
global.TFC_ALCOHOL.forEach(alcohol => {
|
|
||||||
event.recipes.gtceu.fermenter(`tfg:tfc/vinegar/${alcohol.id.replace(':', '_')}`)
|
|
||||||
.itemInputs('#tfc:foods/fruits')
|
|
||||||
.inputFluids(Fluid.of(alcohol.id, 250))
|
|
||||||
.outputFluids(Fluid.of('tfc:vinegar', 250))
|
|
||||||
.duration(600)
|
|
||||||
.EUt(28)
|
|
||||||
})
|
|
||||||
|
|
||||||
event.recipes.gtceu.mixer('tfg:tfc/brine')
|
event.recipes.gtceu.mixer('tfg:tfc/brine')
|
||||||
.inputFluids(Fluid.of('tfc:salt_water', 900))
|
.inputFluids(Fluid.of('tfc:salt_water', 900))
|
||||||
|
|
|
||||||
650
kubejs/server_scripts/tfg/recipes.food.js
Normal file
|
|
@ -0,0 +1,650 @@
|
||||||
|
// priority: 0
|
||||||
|
/**
|
||||||
|
* @param {Internal.RecipesEventJS} event
|
||||||
|
*/
|
||||||
|
function registerTFGFoodRecipes(event) {
|
||||||
|
|
||||||
|
const $ISPRecipeLogic = Java.loadClass("su.terrafirmagreg.core.common.data.machines.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, 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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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 {string} input
|
||||||
|
* @param {string} out
|
||||||
|
* @param {Internal.FluidIngredient?} fluid
|
||||||
|
* @param {boolean?} isFirmaDynamic
|
||||||
|
*/
|
||||||
|
function cookingRecipe(id, input, out, fluid, isFirmaDynamic) {
|
||||||
|
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, {
|
||||||
|
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, {
|
||||||
|
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`],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
||||||
|
itemOutputProvider: TFC.isp.of(`2x tfc:food/${grain}_dough`).copyFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
// Firmalife dough
|
||||||
|
processorRecipe(`${grain}_dough`, 300, 16, {
|
||||||
|
itemInputs: [`tfc:food/${grain}_flour`, `#tfc:sweetener`],
|
||||||
|
itemOutputs: [`4x firmalife:food/${grain}_dough`],
|
||||||
|
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.
|
||||||
|
processorRecipe(`${grain}_${type[0]}_jam_sandwich`, 100, 16, {
|
||||||
|
circuit: 4,
|
||||||
|
itemInputs: [`2x ${type[1]}`, '#tfc:foods/preserves', '2x #tfc:foods/usable_in_jam_sandwich'],
|
||||||
|
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),
|
||||||
|
]),
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
//#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()
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
global.TFC_MILKS.forEach(milk => {
|
||||||
|
const milkID = milk.id.split(':')[1];
|
||||||
|
|
||||||
|
processorRecipe(`white_chocolate_blend_from_${milkID}`, 300, 16, {
|
||||||
|
circuit: 3,
|
||||||
|
itemInputs: ['2x firmalife:food/cocoa_butter', '#tfc:sweetener'],
|
||||||
|
itemOutputs: ['2x firmalife:food/white_chocolate_blend'],
|
||||||
|
fluidInputs: [Fluid.of(milk.id, 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/white_chocolate_blend').resetFood(),
|
||||||
|
})
|
||||||
|
|
||||||
|
processorRecipe(`dark_chocolate_blend_from_${milkID}`, 300, 16, {
|
||||||
|
circuit: 2,
|
||||||
|
itemInputs: ['2x firmalife:food/cocoa_powder', '#tfc:sweetener'],
|
||||||
|
itemOutputs: ['2x firmalife:food/dark_chocolate_blend'],
|
||||||
|
fluidInputs: [Fluid.of(milk.id, 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/dark_chocolate_blend').resetFood(),
|
||||||
|
})
|
||||||
|
|
||||||
|
processorRecipe(`milk_chocolate_blend_from_${milkID}`, 300, 16, {
|
||||||
|
circuit: 1,
|
||||||
|
itemInputs: ['firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener'],
|
||||||
|
itemOutputs: ['2x firmalife:food/milk_chocolate_blend'],
|
||||||
|
fluidInputs: [Fluid.of(milk.id, 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/milk_chocolate_blend').resetFood(),
|
||||||
|
})
|
||||||
|
|
||||||
|
processorRecipe(`egg_noodles_from_${milkID}`, 50, 8, {
|
||||||
|
circuit: 6,
|
||||||
|
itemInputs: ["#tfc:foods/flour", 'tfc:powder/salt', '#forge:eggs'],
|
||||||
|
itemOutputs: ['firmalife:food/raw_egg_noodles'],
|
||||||
|
fluidInputs: [Fluid.of(milk.id, 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of("firmalife:food/raw_egg_noodles").copyOldestFood(),
|
||||||
|
})
|
||||||
|
|
||||||
|
processorRecipe(`rice_noodles_from_${milkID}`, 50, 8, {
|
||||||
|
itemInputs: ["tfc:food/rice_flour", 'tfc:food/maize_flour', 'tfc:powder/salt'],
|
||||||
|
fluidInputs: [Fluid.of(milk.id, 1000)],
|
||||||
|
itemOutputs: ['2x firmalife:food/raw_rice_noodles'],
|
||||||
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/raw_rice_noodles').copyOldestFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
// No ISP needed here
|
||||||
|
event.recipes.gtceu.fermenter(`tfg:fermenter/cream_from_${milkID}`)
|
||||||
|
.inputFluids(Fluid.of(milk.id, 1000))
|
||||||
|
.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 => {
|
||||||
|
processorRecipe(`${item.replace(/:/g, "/")}/brining`, 200, 16, {
|
||||||
|
circuit: 5,
|
||||||
|
itemInputs: [item],
|
||||||
|
itemOutputs: [item],
|
||||||
|
fluidInputs: [Fluid.of("tfc:brine", 100)],
|
||||||
|
itemOutputProvider: TFC.isp.copyInput().addTrait('tfc:brined')
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
smoking_meats.forEach(item => {
|
||||||
|
processorRecipe(`${item.replace(/:/g, "/")}/smoking`, 200, 16, {
|
||||||
|
circuit: 6,
|
||||||
|
itemInputs: [item],
|
||||||
|
itemOutputs: [item],
|
||||||
|
fluidInputs: [Fluid.of('gtceu:wood_gas', 50)],
|
||||||
|
itemOutputProvider: TFC.isp.copyInput().addTrait("firmalife:smoked")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
drying_fruits.forEach(item => {
|
||||||
|
processorRecipe(`${item.replace(/:/g, "/")}/drying`, 200, 16, {
|
||||||
|
circuit: 6,
|
||||||
|
itemInputs: [item],
|
||||||
|
itemOutputs: [item],
|
||||||
|
fluidInputs: [Fluid.of('gtceu:nitrogen', 100)],
|
||||||
|
itemOutputProvider: TFC.isp.copyInput().addTrait("firmalife:dried")
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
drying_recipes.forEach(item => {
|
||||||
|
processorRecipe(`${item.input.replace(/:/g, "/")}/drying`, 200, 16, {
|
||||||
|
circuit: 6,
|
||||||
|
itemInputs: [item.input],
|
||||||
|
itemOutputs: [item.output],
|
||||||
|
fluidInputs: [Fluid.of('gtceu:nitrogen', 100)],
|
||||||
|
itemOutputProvider: TFC.isp.of(item.output).copyOldestFood()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
//#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}`],
|
||||||
|
fluidInputs: [Fluid.of("minecraft:water", 100)],
|
||||||
|
itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}`).copyFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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`],
|
||||||
|
fluidInputs: [Fluid.of("minecraft:water", 100)],
|
||||||
|
itemOutputProvider: TFC.isp.of(`4x tfc:jar/${name}_unsealed`).copyFood()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
cookingRecipe("pasta", "firmalife:food/raw_egg_noodles", "firmalife:food/cooked_pasta", Fluid.of("minecraft:water", 100))
|
||||||
|
cookingRecipe("corn_tortilla", "firmalife:food/masa", "firmalife:food/corn_tortilla")
|
||||||
|
cookingRecipe("boiled_egg", "#firmalife:foods/raw_eggs", "tfc:food/boiled_egg", Fluid.of("minecraft:water", 200))
|
||||||
|
cookingRecipe("cooked_rice", "tfc:food/rice_grain", "tfc:food/cooked_rice", Fluid.of("minecraft:water", 200))
|
||||||
|
|
||||||
|
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, {
|
||||||
|
itemInputs: ["firmalife:food/masa_flour"],
|
||||||
|
itemOutputs: ["2x firmalife:food/masa"],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
||||||
|
itemOutputProvider: TFC.isp.of("2x firmalife:food/masa").copyFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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'],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 200)],
|
||||||
|
itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(),
|
||||||
|
})
|
||||||
|
|
||||||
|
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(),
|
||||||
|
})
|
||||||
|
|
||||||
|
// Vinegar
|
||||||
|
global.TFC_ALCOHOL.forEach(alcohol => {
|
||||||
|
let name = `vinegar_${alcohol.id.replace(':', '_')}`;
|
||||||
|
|
||||||
|
processorRecipe(name, 600, 32, {
|
||||||
|
circuit: 5,
|
||||||
|
itemInputs: ['#tfc:foods/fruits'],
|
||||||
|
fluidInputs: [Fluid.of(alcohol.id, 250)],
|
||||||
|
fluidOutputs: [Fluid.of('tfc:vinegar', 250)],
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
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'],
|
||||||
|
fluidInputs: [Fluid.of('tfc:olive_oil', 1000)],
|
||||||
|
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'],
|
||||||
|
fluidInputs: [Fluid.of('firmalife:soybean_oil', 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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: [`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'],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('firmalife:food/pie_dough').copyOldestFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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'],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('firmalife:food/pumpkin_pie_dough').copyOldestFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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:chocolate_blends'],
|
||||||
|
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'],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
||||||
|
itemOutputProvider: TFC.isp.of('4x firmalife:food/hardtack_dough').copyOldestFood()
|
||||||
|
})
|
||||||
|
|
||||||
|
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,
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
||||||
|
fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)],
|
||||||
|
itemInputs: ['#tfc:foods/fruits'],
|
||||||
|
})
|
||||||
|
|
||||||
|
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"],
|
||||||
|
fluidInputs: [Fluid.of('minecraft:water', 50)],
|
||||||
|
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyOldestFood(),
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
|
// 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(Fluid.of('minecraft:water', 100))
|
||||||
|
.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
|
||||||
|
|
||||||
|
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')
|
||||||
|
}
|
||||||
|
|
@ -14,5 +14,6 @@ const registerTFGRecipes = (event) => {
|
||||||
registerTFGSupportRecipes(event)
|
registerTFGSupportRecipes(event)
|
||||||
registerTFGFishingNetsRecipes(event)
|
registerTFGFishingNetsRecipes(event)
|
||||||
registerTFGConvertingRecipes(event)
|
registerTFGConvertingRecipes(event)
|
||||||
|
registerTFGFoodRecipes(event)
|
||||||
registerTFGSpaceRecipes(event)
|
registerTFGSpaceRecipes(event)
|
||||||
}
|
}
|
||||||
|
|
@ -84,6 +84,13 @@ global.FIRMALIFE_ORE_MATERIALS = [
|
||||||
'chromite'
|
'chromite'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
global.FIRMALIFE_JAMS = [
|
||||||
|
"fig",
|
||||||
|
"pineapple",
|
||||||
|
"red_grapes",
|
||||||
|
"white_grapes"
|
||||||
|
]
|
||||||
|
|
||||||
global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [
|
global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [
|
||||||
{ input: 'firmalife:plant/cocoa_sapling', fluid_amount: 8000, output: '3x firmalife:food/cocoa_beans', name: 'cocoa_beans' },
|
{ input: 'firmalife:plant/cocoa_sapling', fluid_amount: 8000, output: '3x firmalife:food/cocoa_beans', name: 'cocoa_beans' },
|
||||||
{ input: 'firmalife:plant/fig_sapling', fluid_amount: 8000, output: '3x firmalife:food/fig', name: 'fig' },
|
{ input: 'firmalife:plant/fig_sapling', fluid_amount: 8000, output: '3x firmalife:food/fig', name: 'fig' },
|
||||||
|
|
@ -94,26 +101,20 @@ global.FIRMALIFE_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [
|
||||||
{ input: 'firmalife:plant/nightshade_bush', fluid_amount: 6000, output: '3x firmalife:food/nightshade_berry', name: 'nightshade' },
|
{ input: 'firmalife:plant/nightshade_bush', fluid_amount: 6000, output: '3x firmalife:food/nightshade_berry', name: 'nightshade' },
|
||||||
];
|
];
|
||||||
|
|
||||||
global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS = [
|
global.FIRMALIFE_COOKING_RECIPE_COMPONENTS = [
|
||||||
{ input: 'firmalife:food/nixtamal', output: '2x firmalife:food/masa_flour', name: 'masa_flour' },
|
{ input: 'firmalife:food/white_chocolate_blend', output: 'firmalife:food/white_chocolate', name: 'white_chocolate' },
|
||||||
];
|
{ input: 'firmalife:food/dark_chocolate_blend', output: 'firmalife:food/dark_chocolate', name: 'dark_chocolate' },
|
||||||
|
{ input: 'firmalife:food/milk_chocolate_blend', output: 'firmalife:food/milk_chocolate', name: 'milk_chocolate' },
|
||||||
global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [
|
{ input: 'firmalife:food/raw_pizza', output: 'firmalife:food/cooked_pizza', name: 'cooked_pizza' },
|
||||||
{ input: 'tfc:food/barley_flour', output: '4x firmalife:food/barley_dough', name: 'firmalife_barley_dough' },
|
{ input: 'firmalife:food/corn_tortilla', output: 'firmalife:food/taco_shell', name: 'taco_shell' },
|
||||||
{ input: 'tfc:food/maize_flour', output: '4x firmalife:food/maize_dough', name: 'firmalife_maize_dough' },
|
{ input: 'firmalife:food/cookie_dough', output: 'firmalife:food/sugar_cookie', name: 'sugar_cookie' },
|
||||||
{ input: 'tfc:food/oat_flour', output: '4x firmalife:food/oat_dough', name: 'firmalife_oat_dough' },
|
{ input: 'firmalife:food/chocolate_chip_cookie_dough', output: 'firmalife:food/chocolate_chip_cookie', name: 'chocolate_chip_cookie' },
|
||||||
{ input: 'tfc:food/rye_flour', output: '4x firmalife:food/rye_dough', name: 'firmalife_rye_dough' },
|
{ input: 'firmalife:food/hardtack_dough', output: 'firmalife:food/hardtack', name: 'hardtack' },
|
||||||
{ input: 'tfc:food/rice_flour', output: '4x firmalife:food/rice_dough', name: 'firmalife_rice_dough' },
|
{ input: 'firmalife:food/filled_pie', output: 'firmalife:food/cooked_pie', name: 'cooked_pie' },
|
||||||
{ input: 'tfc:food/wheat_flour', output: '4x firmalife:food/wheat_dough', name: 'firmalife_wheat_dough' },
|
{ input: 'firmalife:food/cocoa_beans', output: 'firmalife:food/roasted_cocoa_beans', name: 'roasted_cocoa_beans' },
|
||||||
{ input: 'firmalife:food/masa_flour', output: '2x firmalife:food/masa', name: 'firmalife_masa' },
|
{ input: 'firmalife:food/raw_pumpkin_pie', output: 'minecraft:pumpkin_pie', name: 'pumpkin_pie' },
|
||||||
];
|
{ input: 'tfc:food/soybean', output: 'firmalife:food/dehydrated_soybeans', name: 'dehydrated_soybeans' },
|
||||||
|
{ input: 'firmalife:food/raw_lasagna', output: 'firmalife:food/cooked_lasagna', name: 'cooked_lasagna' },
|
||||||
global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS = [
|
{ input: 'firmalife:food/bacon', output: 'firmalife:food/cooked_bacon', name: 'cooked_bacon' },
|
||||||
{ input: 'tfc:food/barley_dough', output: 'firmalife:food/barley_flatbread', name: 'barley_flatbread' },
|
{ input: '#firmalife:foods/slices', output: 'firmalife:food/toast', name: 'toast' }
|
||||||
{ input: 'tfc:food/maize_dough', output: 'firmalife:food/maize_flatbread', name: 'maize_flatbread' },
|
|
||||||
{ input: 'tfc:food/oat_dough', output: 'firmalife:food/oat_flatbread', name: 'oat_flatbread' },
|
|
||||||
{ input: 'tfc:food/rye_dough', output: 'firmalife:food/rye_flatbread', name: 'rye_flatbread' },
|
|
||||||
{ input: 'tfc:food/rice_dough', output: 'firmalife:food/rice_flatbread', name: 'rice_flatbread' },
|
|
||||||
{ input: 'tfc:food/wheat_dough', output: 'firmalife:food/wheat_flatbread', name: 'wheat_flatbread' },
|
|
||||||
{ input: 'firmalife:food/masa', output: 'firmalife:food/corn_tortilla', name: 'corn_tortilla' },
|
|
||||||
];
|
];
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
// priority: 0
|
// priority: 0
|
||||||
|
|
||||||
//#region Greenhouse
|
|
||||||
|
|
||||||
const registerGTCEuMachines = (event) => {
|
const registerGTCEuMachines = (event) => {
|
||||||
|
|
||||||
GTMachineUtils.registerCrate(GTMaterials.BismuthBronze, 54, "Bismuth Bronze Crate");
|
GTMachineUtils.registerCrate(GTMaterials.BismuthBronze, 54, "Bismuth Bronze Crate");
|
||||||
|
|
@ -12,66 +10,6 @@ const registerGTCEuMachines = (event) => {
|
||||||
const $SteamMulti = Java.loadClass('com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine');
|
const $SteamMulti = Java.loadClass('com.gregtechceu.gtceu.common.machine.multiblock.steam.SteamParallelMultiblockMachine');
|
||||||
const $Tags = Java.loadClass("dev.latvian.mods.kubejs.util.Tags")
|
const $Tags = Java.loadClass("dev.latvian.mods.kubejs.util.Tags")
|
||||||
|
|
||||||
event.create('greenhouse', 'multiblock')
|
|
||||||
.rotationState(RotationState.NON_Y_AXIS)
|
|
||||||
.recipeType('greenhouse')
|
|
||||||
.recipeModifiers([GTRecipeModifiers.OC_PERFECT])
|
|
||||||
.appearanceBlock(GTBlocks.CASING_STEEL_SOLID)
|
|
||||||
.pattern(definition => FactoryBlockPattern.start()
|
|
||||||
.aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "F#####F", "FFFFFFF")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CCCYCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ")
|
|
||||||
.where('X', Predicates.blocks('ae2:quartz_glass'))
|
|
||||||
.where('F', Predicates.frames('steel'))
|
|
||||||
.where('D', Predicates.blocks('tfc:grass/silt')
|
|
||||||
.or(Predicates.blocks('tfc:dirt/loam'))
|
|
||||||
.or(Predicates.blocks('tfc:dirt/sandy_loam'))
|
|
||||||
.or(Predicates.blocks('tfc:dirt/silty_loam'))
|
|
||||||
.or(Predicates.blocks('tfc:grass/silt'))
|
|
||||||
.or(Predicates.blocks('tfc:grass/loam'))
|
|
||||||
.or(Predicates.blocks('tfc:grass/sandy_loam'))
|
|
||||||
.or(Predicates.blocks('tfc:grass/silty_loam')))
|
|
||||||
.where('C', Predicates.blocks('gtceu:steel_machine_casing').or(Predicates.autoAbilities(definition.getRecipeTypes())))
|
|
||||||
.where('#', Predicates.air()
|
|
||||||
.or(Predicates.blockTag($Tags.block("minecraft:logs")))
|
|
||||||
.or(Predicates.blockTag($Tags.block("minecraft:leaves"))))
|
|
||||||
.where(' ', Predicates.any())
|
|
||||||
.where('Y', Predicates.controller(Predicates.blocks(definition.get())))
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.shapeInfo(controller => MultiblockShapeInfo.builder()
|
|
||||||
.aisle("CCCCCCC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "F##W##F", "F##W##F", "F##W##F", "F#LWL#F", "F#LWL#F", "F#LLL#F", "F#####F", "FFFFFFF")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X##L##X", "X#LLL#X", "X##L##X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CDDDDDC", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", "X#####X", " XXFXX ")
|
|
||||||
.aisle("CitYfeC", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", "XXXFXXX", " F ")
|
|
||||||
.where('Y', controller, Direction.SOUTH)
|
|
||||||
.where('C', GTBlocks.STEEL_HULL.get())
|
|
||||||
.where('D', Block.getBlock('tfc:grass/silt'))
|
|
||||||
.where('F', Block.getBlock('gtceu:steel_frame'))
|
|
||||||
.where('X', Block.getBlock('ae2:quartz_glass'))
|
|
||||||
.where('W', Block.getBlock('tfc:wood/log/oak'))
|
|
||||||
.where('L', Block.getBlock('tfc:wood/leaves/oak'))
|
|
||||||
.where(' ', Block.getBlock('minecraft:air'))
|
|
||||||
.where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.SOUTH)
|
|
||||||
.where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.SOUTH)
|
|
||||||
.where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.ULV], Direction.SOUTH)
|
|
||||||
.where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.LV], Direction.SOUTH)
|
|
||||||
.build()
|
|
||||||
)
|
|
||||||
.workableCasingRenderer(
|
|
||||||
'gtceu:block/casings/solid/machine_casing_solid_steel',
|
|
||||||
'gtceu:block/multiblock/implosion_compressor', false
|
|
||||||
)
|
|
||||||
|
|
||||||
//#endregion
|
|
||||||
|
|
||||||
//#region Nether Dome
|
//#region Nether Dome
|
||||||
|
|
||||||
event.create('nether_dome', 'multiblock')
|
event.create('nether_dome', 'multiblock')
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,6 @@
|
||||||
// priority: 0
|
// priority: 0
|
||||||
|
|
||||||
const registerGTCEuRecipeTypes = (event) => {
|
const registerGTCEuRecipeTypes = (event) => {
|
||||||
event.create('greenhouse')
|
|
||||||
.category('greenhouse')
|
|
||||||
.setEUIO('in')
|
|
||||||
.setMaxIOSize(3, 4, 1, 0)
|
|
||||||
.setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT)
|
|
||||||
.setSound(GTSoundEntries.BATH)
|
|
||||||
|
|
||||||
event.create('nether_dome')
|
event.create('nether_dome')
|
||||||
.category('nether_dome')
|
.category('nether_dome')
|
||||||
.setEUIO('in')
|
.setEUIO('in')
|
||||||
|
|
|
||||||
|
|
@ -852,7 +852,7 @@ global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS = [
|
||||||
{ input: 'tfc:volcanic_glass_batch', output: 'tfc:volcanic_glass_bottle', name: 'volcanic_glass_bottle' },
|
{ input: 'tfc:volcanic_glass_batch', output: 'tfc:volcanic_glass_bottle', name: 'volcanic_glass_bottle' },
|
||||||
];
|
];
|
||||||
|
|
||||||
global.TFC_FURNACE_MEAT_RECIPE_COMPONENTS = [
|
global.TFC_MEAT_RECIPE_COMPONENTS = [
|
||||||
{ input: 'tfc:food/horse_meat', output: 'tfc:food/cooked_horse_meat', name: 'cooked_horse_meat' },
|
{ input: 'tfc:food/horse_meat', output: 'tfc:food/cooked_horse_meat', name: 'cooked_horse_meat' },
|
||||||
{ input: 'tfc:food/bear', output: 'tfc:food/cooked_bear', name: 'cooked_bear' },
|
{ input: 'tfc:food/bear', output: 'tfc:food/cooked_bear', name: 'cooked_bear' },
|
||||||
{ input: 'tfc:food/mutton', output: 'tfc:food/cooked_mutton', name: 'cooked_mutton' },
|
{ input: 'tfc:food/mutton', output: 'tfc:food/cooked_mutton', name: 'cooked_mutton' },
|
||||||
|
|
@ -924,41 +924,39 @@ global.TFC_QUERN_POWDER_RECIPE_COMPONENTS = [
|
||||||
{ input: 'firmalife:ore/small_chromite', output: 'gtceu:small_chromite_dust', name: 'chromite' }
|
{ input: 'firmalife:ore/small_chromite', output: 'gtceu:small_chromite_dust', name: 'chromite' }
|
||||||
];
|
];
|
||||||
|
|
||||||
global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS = [
|
global.TFC_GRAINS = [
|
||||||
{ input: 'tfc:food/barley', output: 'tfc:food/barley_grain', name: 'barley_grain' },
|
"barley",
|
||||||
{ input: 'tfc:food/maize', output: 'tfc:food/maize_grain', name: 'maize_grain' },
|
"maize",
|
||||||
{ input: 'tfc:food/oat', output: 'tfc:food/oat_grain', name: 'oat_grain' },
|
"oat",
|
||||||
{ input: 'tfc:food/rye', output: 'tfc:food/rye_grain', name: 'rye_grain' },
|
"rye",
|
||||||
{ input: 'tfc:food/rice', output: 'tfc:food/rice_grain', name: 'rice_grain' },
|
"rice",
|
||||||
{ input: 'tfc:food/wheat', output: 'tfc:food/wheat_grain', name: 'wheat_grain' },
|
"wheat",
|
||||||
];
|
]
|
||||||
|
|
||||||
global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS = [
|
global.TFC_JAMS = [
|
||||||
{ input: 'tfc:food/barley_grain', output: '2x tfc:food/barley_flour', name: 'barley_flour' },
|
"blackberry",
|
||||||
{ input: 'tfc:food/maize_grain', output: '2x tfc:food/maize_flour', name: 'maize_flour' },
|
"blueberry",
|
||||||
{ input: 'tfc:food/oat_grain', output: '2x tfc:food/oat_flour', name: 'oat_flour' },
|
"bunchberry",
|
||||||
{ input: 'tfc:food/rye_grain', output: '2x tfc:food/rye_flour', name: 'rye_flour' },
|
"cloudberry",
|
||||||
{ input: 'tfc:food/rice_grain', output: '2x tfc:food/rice_flour', name: 'rice_flour' },
|
"cranberry",
|
||||||
{ input: 'tfc:food/wheat_grain', output: '2x tfc:food/wheat_flour', name: 'wheat_flour' },
|
"elderberry",
|
||||||
];
|
"gooseberry",
|
||||||
|
"raspberry",
|
||||||
global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [
|
"snowberry",
|
||||||
{ input: 'tfc:food/barley_flour', output: '2x tfc:food/barley_dough', name: 'tfc_barley_dough' },
|
"strawberry",
|
||||||
{ input: 'tfc:food/maize_flour', output: '2x tfc:food/maize_dough', name: 'tfc_maize_dough' },
|
"wintergreen_berry",
|
||||||
{ input: 'tfc:food/oat_flour', output: '2x tfc:food/oat_dough', name: 'tfc_oat_dough' },
|
"banana",
|
||||||
{ input: 'tfc:food/rye_flour', output: '2x tfc:food/rye_dough', name: 'tfc_rye_dough' },
|
"cherry",
|
||||||
{ input: 'tfc:food/rice_flour', output: '2x tfc:food/rice_dough', name: 'tfc_rice_dough' },
|
"green_apple",
|
||||||
{ input: 'tfc:food/wheat_flour', output: '2x tfc:food/wheat_dough', name: 'tfc_wheat_dough' },
|
"lemon",
|
||||||
];
|
"olive",
|
||||||
|
"orange",
|
||||||
global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS = [
|
"peach",
|
||||||
{ input: 'firmalife:food/barley_dough', output: 'tfc:food/barley_bread', name: 'barley_bread' },
|
"plum",
|
||||||
{ input: 'firmalife:food/maize_dough', output: 'tfc:food/maize_bread', name: 'maize_bread' },
|
"red_apple",
|
||||||
{ input: 'firmalife:food/oat_dough', output: 'tfc:food/oat_bread', name: 'oat_bread' },
|
"pumpkin_chunks",
|
||||||
{ input: 'firmalife:food/rye_dough', output: 'tfc:food/rye_bread', name: 'rye_bread' },
|
"melon_slice",
|
||||||
{ input: 'firmalife:food/rice_dough', output: 'tfc:food/rice_bread', name: 'rice_bread' },
|
]
|
||||||
{ input: 'firmalife:food/wheat_dough', output: 'tfc:food/wheat_bread', name: 'wheat_bread' },
|
|
||||||
];
|
|
||||||
|
|
||||||
global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [
|
global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [
|
||||||
{ input: 'tfc:plant/cherry_sapling', fluid_amount: 8000, output: '32x tfc:food/cherry', name: 'cherry' },
|
{ input: 'tfc:plant/cherry_sapling', fluid_amount: 8000, output: '32x tfc:food/cherry', name: 'cherry' },
|
||||||
|
|
@ -1016,7 +1014,14 @@ global.TFC_MILKS = [
|
||||||
{id: 'minecraft:milk'},
|
{id: 'minecraft:milk'},
|
||||||
{id: 'firmalife:yak_milk'},
|
{id: 'firmalife:yak_milk'},
|
||||||
{id: 'firmalife:goat_milk'},
|
{id: 'firmalife:goat_milk'},
|
||||||
{id: 'firmalife:coconut_milk'},
|
// Uncomment this if firmalife ever makes this obtainable
|
||||||
|
//{id: 'firmalife:coconut_milk'},
|
||||||
|
];
|
||||||
|
|
||||||
|
global.TFC_CURDS_AND_CHEESES = [
|
||||||
|
{ id: 'milk', input_fluid: 'tfc:curdled_milk', curd: 'firmalife:food/milk_curd', cheese1: 'gouda', cheese2: 'cheddar' },
|
||||||
|
{ id: 'yak', input_fluid: 'firmalife:curdled_yak_milk', curd: 'firmalife:food/yak_curd', cheese1: 'shosha', cheese2: 'rajya_metok' },
|
||||||
|
{ id: 'goat', input_fluid: 'firmalife:curdled_goat_milk', curd: 'firmalife:food/goat_curd', cheese1: 'feta', cheese2: 'chevre' },
|
||||||
];
|
];
|
||||||
|
|
||||||
global.TFC_ALCOHOL = [
|
global.TFC_ALCOHOL = [
|
||||||
|
|
|
||||||
|
|
@ -2738,7 +2738,7 @@
|
||||||
{
|
{
|
||||||
"pakku_id": "SG15bUHPcW2KqNGd",
|
"pakku_id": "SG15bUHPcW2KqNGd",
|
||||||
"type": "MOD",
|
"type": "MOD",
|
||||||
"side": "CLIENT",
|
"side": "BOTH",
|
||||||
"slug": {
|
"slug": {
|
||||||
"curseforge": "detected-setblock-be-gone"
|
"curseforge": "detected-setblock-be-gone"
|
||||||
},
|
},
|
||||||
|
|
@ -6836,6 +6836,7 @@
|
||||||
"id": {
|
"id": {
|
||||||
"curseforge": "585406"
|
"curseforge": "585406"
|
||||||
},
|
},
|
||||||
|
"export": false,
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"type": "curseforge",
|
"type": "curseforge",
|
||||||
|
|
@ -8112,7 +8113,7 @@
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"type": "curseforge",
|
"type": "curseforge",
|
||||||
"file_name": "tfclunchbox-1.20.1-1.0.0.10.jar",
|
"file_name": "tfclunchbox-1.20.1-1.0.0.14.jar",
|
||||||
"mc_versions": [
|
"mc_versions": [
|
||||||
"1.20.1"
|
"1.20.1"
|
||||||
],
|
],
|
||||||
|
|
@ -8121,18 +8122,16 @@
|
||||||
"forge"
|
"forge"
|
||||||
],
|
],
|
||||||
"release_type": "beta",
|
"release_type": "beta",
|
||||||
"url": "https://edge.forgecdn.net/files/6633/524/tfclunchbox-1.20.1-1.0.0.10.jar",
|
"url": "https://edge.forgecdn.net/files/6646/846/tfclunchbox-1.20.1-1.0.0.14.jar",
|
||||||
"id": "6633524",
|
"id": "6646846",
|
||||||
"parent_id": "1283445",
|
"parent_id": "1283445",
|
||||||
"hashes": {
|
"hashes": {
|
||||||
"sha1": "0b3dd4ed090848d136fc15586f5fb8212f1f19b0",
|
"sha1": "de4051c4345290b9d99f2d26090ad466f112b3ec",
|
||||||
"md5": "c8835a37c829f86448b87601ac58cf9b"
|
"md5": "ada6f65d0fc9785a34b9deb76c53e882"
|
||||||
},
|
},
|
||||||
"required_dependencies": [
|
"required_dependencies": [],
|
||||||
"302973"
|
"size": 95828,
|
||||||
],
|
"date_published": "2025-06-13T12:54:20.803Z"
|
||||||
"size": 93079,
|
|
||||||
"date_published": "2025-06-09T15:46:48.850Z"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
@ -8541,7 +8540,7 @@
|
||||||
"files": [
|
"files": [
|
||||||
{
|
{
|
||||||
"type": "curseforge",
|
"type": "curseforge",
|
||||||
"file_name": "TerraFirmaGreg-Core-Modern-0.6.7.jar",
|
"file_name": "TerraFirmaGreg-Core-Modern-0.6.8.jar",
|
||||||
"mc_versions": [
|
"mc_versions": [
|
||||||
"1.20.1"
|
"1.20.1"
|
||||||
],
|
],
|
||||||
|
|
@ -8550,19 +8549,19 @@
|
||||||
"forge"
|
"forge"
|
||||||
],
|
],
|
||||||
"release_type": "release",
|
"release_type": "release",
|
||||||
"url": "https://edge.forgecdn.net/files/6613/427/TerraFirmaGreg-Core-Modern-0.6.7.jar",
|
"url": "https://edge.forgecdn.net/files/6641/343/TerraFirmaGreg-Core-Modern-0.6.8.jar",
|
||||||
"id": "6613427",
|
"id": "6641343",
|
||||||
"parent_id": "513402",
|
"parent_id": "513402",
|
||||||
"hashes": {
|
"hashes": {
|
||||||
"sha1": "76662e65565207a7682cafd39ef068e4c0a98516",
|
"sha1": "989c76bb022dd8fdc0363c6ff9bdaa1665ff6571",
|
||||||
"md5": "7c41c1ca1a8a9edf0e9fb72bdf5ebf44"
|
"md5": "ada07963205a8b7089d6b9664c833286"
|
||||||
},
|
},
|
||||||
"required_dependencies": [
|
"required_dependencies": [
|
||||||
"302973",
|
"890405",
|
||||||
"890405"
|
"302973"
|
||||||
],
|
],
|
||||||
"size": 297697,
|
"size": 297767,
|
||||||
"date_published": "2025-06-04T11:47:57.083Z"
|
"date_published": "2025-06-11T20:08:19.890Z"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "TerraFirmaGreg-Modern",
|
"name": "TerraFirmaGreg-Modern",
|
||||||
"version": "0.9.10",
|
"version": "0.9.11",
|
||||||
"description": "An innovative modpack that contains GregTech and TerraFirmaCraft on 1.20.x.",
|
"description": "An innovative modpack that contains GregTech and TerraFirmaCraft on 1.20.x.",
|
||||||
"author": "Exception, Xikaro",
|
"author": "Exception, Xikaro",
|
||||||
"overrides": [
|
"overrides": [
|
||||||
|
|
|
||||||