* Change lv chem reactor quest to require any container with rubber instead of a rubber bucket Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> * Add placeholder assets for food machines (copied from gtceu) * remove greenhouse definition from kubejs * change greenhouse recipe * Rework recipes file --------- Signed-off-by: ofoxsmith <77560533+ofoxsmith@users.noreply.github.com> Signed-off-by: Pyritie <pyritie@gmail.com> Co-authored-by: Pyritie <pyritie@gmail.com>
633 lines
No EOL
23 KiB
JavaScript
633 lines
No EOL
23 KiB
JavaScript
// priority: 0
|
|
/**
|
|
*
|
|
* @param {Internal.RecipesEventJS} event
|
|
*/
|
|
|
|
|
|
function registerTFGFoodRecipes(event) {
|
|
|
|
/**
|
|
* @param {Internal.Ingredient} ingredient
|
|
*/
|
|
const NotRotten = (ingredient) => TFC.ingredient.notRotten(ingredient)
|
|
|
|
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 {number} duration
|
|
* @property {number} EUt
|
|
* @property {Internal.GTRecipeComponents$FluidIngredientJS_[]?} fluidInputs Fluid inputs behave normally
|
|
* @property {Internal.FluidStackJS[]?} fluidOutputs Fluid outputs behave normally
|
|
* @property {string[]?} itemInputHints Array of simple ingredients, used internally within gregtech. [NOT ACTUAL INPUTS]
|
|
* @property {string?} itemOutputHint Simple ingredient output, used internally within gregtech. [NOT ACTUAL OUTPUT]
|
|
* @property {Ingredient[]?} itemInputs Array of ingredients used when running a recipe.
|
|
* @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')`
|
|
*
|
|
* @param {"food_oven"|"food_processor"} type The recipe type
|
|
* @param {string} id The recipe id
|
|
* @param {FoodRecipeData} data Recipe data
|
|
*/
|
|
function registerFoodRecipe(type, id, data) {
|
|
if (data.fluidInputs === undefined) data.fluidInputs = []
|
|
if (data.fluidOutputs === undefined) data.fluidOutputs = []
|
|
if (data.itemInputHints === undefined) data.itemInputHints = []
|
|
if (data.itemInputs === undefined) data.itemInputs = []
|
|
|
|
if ((data.itemOutputProvider === undefined && data.itemOutputHint !== undefined) || (data.itemOutputHint === undefined && data.itemOutputProvider !== undefined)) {
|
|
return console.error(`Invalid recipe ${type}[${id}]: itemOutputProvider & itemOutputHint do not match`)
|
|
}
|
|
if (data.itemOutputHint === undefined && data.fluidOutputs.length === 0) return console.error(`Invalid recipe ${type}[${id}]: No outputs`)
|
|
if (data.itemInputHints.length === 0 && data.fluidInputs.length === 0) return console.error(`Invalid recipe ${type}[${id}]: No inputs`)
|
|
if (data.itemInputHints.length !== data.itemInputs.length) return console.error(`Invalid recipe ${type}[${id}]: itemInputHints.length !== itemInputs.length`)
|
|
|
|
for (let index = 0; index < data.itemInputs; index++) {
|
|
if (typeof data.itemInputs[index] === "string") data.itemInputs[index] = Ingredient.of(data.itemInputs[index]);
|
|
}
|
|
|
|
$ISPRecipeLogic.RegisterRecipeData(type + "/" + id, data.itemInputs, (data.itemOutputProvider === undefined) ? null : data.itemOutputProvider.asCanonClass())
|
|
|
|
let r = event.recipes.gtceu[type](id)
|
|
.duration(data.duration)
|
|
.EUt(data.EUt)
|
|
|
|
if (data.circuit) r.circuit(data.circuit)
|
|
if (data.itemOutputHint) r.itemOutputs(data.itemOutputHint)
|
|
if (data.itemInputHints.length > 0) r.itemInputs(data.itemInputHints)
|
|
if (data.fluidInputs.length > 0) r.inputFluids(data.fluidInputs);
|
|
if (data.fluidOutputs.length > 0) r.outputFluids(data.fluidOutputs);
|
|
}
|
|
|
|
//#region ================= Meat cooking =================
|
|
|
|
global.TFC_MEAT_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_oven", item.name, {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyFood().addTrait("firmalife:oven_baked")
|
|
})
|
|
})
|
|
|
|
//#endregion
|
|
//#region ================= Cutting grains =================
|
|
|
|
global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS.forEach(item => {
|
|
registerFoodRecipe("food_processor", item.name, {
|
|
duration: 100,
|
|
EUt: 2,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyOldestFood()
|
|
})
|
|
})
|
|
|
|
//#endregion
|
|
//#region ================= Grains to flour =================
|
|
|
|
global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(item => {
|
|
registerFoodRecipe("food_processor", item.name, {
|
|
duration: 100,
|
|
EUt: 2,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyOldestFood()
|
|
})
|
|
|
|
})
|
|
|
|
// global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
// registerTFCRecipeProperties("food_processor/" + item.name,
|
|
// [ NotRotten(item.input) ],
|
|
// TFC.isp.of(item.output).copyFood()
|
|
// )
|
|
|
|
// event.recipes.gtceu.food_processor(item.name)
|
|
// .itemInputs(item.input)
|
|
// .itemOutputs(item.output)
|
|
// .duration(100)
|
|
// .EUt(2)
|
|
// })
|
|
|
|
//#endregion
|
|
//#region ================= Dough =================
|
|
|
|
global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_processor", item.name, {
|
|
duration: 300,
|
|
EUt: 2,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyFood()
|
|
})
|
|
|
|
})
|
|
|
|
global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_processor", item.name, {
|
|
duration: 300,
|
|
EUt: 2,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyFood()
|
|
})
|
|
})
|
|
|
|
//#endregion
|
|
//#region ================= Baking bread =================
|
|
|
|
global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_oven", item.name, {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyFood().addTrait("firmalife:oven_baked")
|
|
})
|
|
|
|
})
|
|
|
|
global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_oven", item.name, {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).copyFood().addTrait("firmalife:oven_baked")
|
|
})
|
|
})
|
|
|
|
//#endregion
|
|
//#region ================= Firmalife =================
|
|
|
|
global.FIRMALIFE_COOKING_RECIPE_COMPONENTS.forEach(item => {
|
|
|
|
registerFoodRecipe("food_oven", item.name, {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: [item.input],
|
|
itemOutputHint: item.output,
|
|
itemInputs: [NotRotten(item.input)],
|
|
itemOutputProvider: TFC.isp.of(item.output).firmaLifeCopyDynamicFood()
|
|
})
|
|
})
|
|
|
|
//#endregion
|
|
//#region ================= Dairy =================
|
|
|
|
global.TFC_CURDS_AND_CHEESES.forEach(item => {
|
|
|
|
registerFoodRecipe("food_processor", `${item.curd}_curd`, {
|
|
duration: 1200,
|
|
EUt: 16,
|
|
itemOutputHint: item.curd,
|
|
fluidInputs: [Fluid.of(item.input_fluid, 1000)],
|
|
itemInputs: [],
|
|
itemOutputProvider: TFC.isp.of(item.curd).resetFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `${item.cheese1}_cheese_wheel_1`, {
|
|
duration: 8000,
|
|
EUt: 16,
|
|
itemInputHints: [`3x ${item.curd}`],
|
|
itemOutputHint: `firmalife:${item.cheese1}_wheel`,
|
|
fluidInputs: [Fluid.of('tfc:salt_water', 750)],
|
|
itemInputs: [ Sized(NotRotten(item.curd),3) ],
|
|
itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese1}_wheel`).copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `${item.cheese2}_cheese_wheel_2`, {
|
|
circuit: 2,
|
|
duration: 1000,
|
|
EUt: 16,
|
|
itemInputHints: [`6x ${item.curd}`, `3x tfc:powder/salt`],
|
|
itemOutputHint: `firmalife:${item.cheese2}_wheel`,
|
|
itemInputs: [ Sized(NotRotten(item.curd), 6), Sized(Ingredient.of("tfc:powder/salt"), 3) ],
|
|
itemOutputProvider: TFC.isp.of(`firmalife:${item.cheese2}_wheel`).copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `${item.cheese1}_cheese_cutting_1`, {
|
|
duration: 100,
|
|
EUt: 8,
|
|
itemInputHints: [`firmalife:${item.cheese1}_wheel`],
|
|
itemOutputHint: `4x firmalife:food/${item.cheese1}`,
|
|
itemInputs: [ NotRotten(`firmalife:${item.cheese1}_wheel`) ],
|
|
itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese1}`).copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `${item.cheese2}_cheese_cutting_2`, {
|
|
duration: 100,
|
|
EUt: 8,
|
|
itemInputHints: [`firmalife:${item.cheese2}_wheel`],
|
|
itemOutputHint: `4x firmalife:food/${item.cheese2}`,
|
|
itemInputs: [ NotRotten(`firmalife:${item.cheese2}_wheel`) ],
|
|
itemOutputProvider: TFC.isp.of(`4x firmalife:food/${item.cheese2}`).copyOldestFood()
|
|
})
|
|
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `white_chocolate_blend`, {
|
|
circuit: 1,
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['2x firmalife:food/cocoa_butter', '#tfc:sweetener'],
|
|
itemOutputHint: '2x firmalife:food/white_chocolate_blend',
|
|
fluidInputs: [Fluid.of('#tfc:milks', 1000)],
|
|
itemInputs: [ Sized(NotRotten("firmalife:food/cocoa_butter"), 2), "#tfc:sweetener"],
|
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/white_chocolate_blend').resetFood(),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `dark_chocolate_blend`, {
|
|
circuit: 1,
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['2x firmalife:food/cocoa_powder', '#tfc:sweetener'],
|
|
itemOutputHint: '2x firmalife:food/dark_chocolate_blend',
|
|
fluidInputs: [Fluid.of('#tfc:milks', 1000)],
|
|
itemInputs: [ Sized(NotRotten("firmalife:food/cocoa_powder"), 2), "#tfc:sweetener"],
|
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/dark_chocolate_blend').resetFood(),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", `milk_chocolate_blend`, {
|
|
circuit: 2,
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:food/cocoa_powder', 'firmalife:food/cocoa_butter', '#tfc:sweetener'],
|
|
itemOutputHint: '2x firmalife:food/milk_chocolate_blend',
|
|
fluidInputs: [Fluid.of('#tfc:milks', 1000)],
|
|
itemInputs: [ NotRotten("firmalife:food/cocoa_powder"), NotRotten('firmalife:food/cocoa_butter'), "#tfc:sweetener"],
|
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/milk_chocolate_blend').resetFood(),
|
|
})
|
|
|
|
//#endregion
|
|
|
|
//#region ================= Misc =================
|
|
|
|
registerFoodRecipe("food_processor", "food_salting", {
|
|
duration: 10,
|
|
EUt: 16,
|
|
itemInputHints: ["#tfc:foods/can_be_salted", "tfc:powder/salt"],
|
|
itemOutputHint: "#tfc:foods/can_be_salted",
|
|
itemInputs: [TFC.ingredient.lacksTrait(NotRotten("#tfc:foods/can_be_salted"), "tfc:salted"), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.copyInput().addTrait("tfc:salted")
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "tomato_sauce", {
|
|
duration: 2000,
|
|
EUt: 8,
|
|
itemInputHints: ['tfc:food/tomato', 'tfc:powder/salt', 'tfc:food/garlic'],
|
|
itemOutputHint: '5x firmalife:food/tomato_sauce',
|
|
fluidInputs: [Fluid.of('minecraft:water', 100)],
|
|
itemInputs: [NotRotten('tfc:food/tomato'), NotRotten('tfc:food/garlic'), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "tomato_sauce_from_mix", {
|
|
duration: 200,
|
|
EUt: 8,
|
|
itemInputHints: ['firmalife:food/tomato_sauce_mix'],
|
|
itemOutputHint: 'firmalife:food/tomato_sauce',
|
|
fluidInputs: [Fluid.of('minecraft:water', 200)],
|
|
itemInputs: [NotRotten("firmalife:food/tomato_sauce_mix")],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/tomato_sauce').copyOldestFood(),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "olive_paste", {
|
|
duration: 60,
|
|
EUt: 8,
|
|
itemInputHints: ['tfc:food/olive'],
|
|
itemOutputHint: '2x tfc:olive_paste',
|
|
itemInputs: [NotRotten('tfc:food/olive')],
|
|
itemOutputProvider: TFC.isp.of('2x tfc:olive_paste'),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "soybean_paste", {
|
|
duration: 60,
|
|
EUt: 8,
|
|
itemInputHints: ['tfc:food/soybean'],
|
|
itemOutputHint: '2x tfc:soybean_paste',
|
|
itemInputs: [NotRotten('tfc:food/soybean')],
|
|
itemOutputProvider: TFC.isp.of('2x tfc:soybean_paste'),
|
|
})
|
|
|
|
// Vinegar
|
|
global.TFC_ALCOHOL.forEach(alcohol => {
|
|
let name = `vinegar_${alcohol.id.replace(':', '_')}`;
|
|
|
|
registerFoodRecipe("food_processor", name, {
|
|
circuit: 5,
|
|
duration: 600,
|
|
EUt: 32,
|
|
itemInputHints: ['#tfc:foods/fruits'],
|
|
fluidInputs: [Fluid.of(alcohol.id, 250)],
|
|
fluidOutputs: [Fluid.of('tfc:vinegar', 250)],
|
|
})
|
|
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "pizza_dough_olive_oil", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'],
|
|
itemOutputHint: '4x firmalife:food/pizza_dough',
|
|
fluidInputs: [Fluid.of('tfc:olive_oil', 1000)],
|
|
itemInputs: ["firmalife:spice/basil_leaves", NotRotten("#tfc:foods/dough"), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "pizza_dough_soybean_oil", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:spice/basil_leaves', '#tfc:foods/dough', 'tfc:powder/salt'],
|
|
itemOutputHint: '4x firmalife:food/pizza_dough',
|
|
fluidInputs: [Fluid.of('firmalife:soybean_oil', 1000)],
|
|
itemInputs: ["firmalife:spice/basil_leaves", NotRotten("#tfc:foods/dough"), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of("4x firmalife:food/pizza_dough").copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "vanilla_ice_cream", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla'],
|
|
itemOutputHint: '2x firmalife:food/vanilla_ice_cream',
|
|
fluidInputs: [Fluid.of('firmalife:cream', 1000)],
|
|
itemInputs: ['firmalife:ice_shavings', '#tfc:sweetener', 'firmalife:spice/vanilla'],
|
|
itemOutputProvider: TFC.isp.of("2x firmalife:food/vanilla_ice_cream").resetFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "chocolate_ice_cream", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:food/vanilla_ice_cream'],
|
|
itemOutputHint: 'firmalife:food/chocolate_ice_cream',
|
|
fluidInputs: [Fluid.of('firmalife:chocolate', 1000)],
|
|
itemInputs: [NotRotten('firmalife:food/vanilla_ice_cream')],
|
|
itemOutputProvider: TFC.isp.of("firmalife:food/chocolate_ice_cream").resetFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "strawberry_ice_cream", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['firmalife:food/vanilla_ice_cream', 'firmalife:food/vanilla_ice_cream', '2x tfc:food/strawberry'],
|
|
itemOutputHint: 'firmalife:food/strawberry_ice_cream',
|
|
itemInputs: [NotRotten('firmalife:food/vanilla_ice_cream'), Sized(NotRotten("tfc:food/strawberry"), 2)],
|
|
itemOutputProvider: TFC.isp.of("firmalife:food/strawberry_ice_cream").resetFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "butter", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ["tfc:powder/salt"],
|
|
itemOutputHint: "firmalife:food/buffer",
|
|
fluidInputs: [Fluid.of('firmalife:cream', 1000)],
|
|
itemInputs: ["tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/butter').resetFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "pie_dough", {
|
|
circuit: 2,
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['#tfc:sweetener', 'firmalife:food/butter', '#tfc:foods/flour'],
|
|
itemOutputHint: 'firmalife:food/pie_dough',
|
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
|
itemInputs: [NotRotten('firmalife:food/butter'), NotRotten('#tfc:foods/flour'), "#tfc:sweetener"],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/pie_dough').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "pumpkin_pie_dough", {
|
|
circuit: 2,
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['#tfc:sweetener', '#forge:eggs', '2x tfc:food/pumpkin_chunks', '#tfc:foods/flour'],
|
|
itemOutputHint: 'firmalife:food/pumpkin_pie_dough',
|
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
|
itemInputs: ['#tfc:sweetener', NotRotten('#forge:eggs'), Sized(NotRotten('tfc:food/pumpkin_chunks'), 2), NotRotten('#tfc:foods/flour')],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/pumpkin_pie_dough').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "cookie_dough", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['#tfc:sweetener', '#forge:eggs', 'firmalife:food/butter', '#tfc:foods/flour', "firmalife:spice/vanilla"],
|
|
itemOutputHint: '4x firmalife:food/cookie_dough',
|
|
itemInputs: ['firmalife:spice/vanilla', '#tfc:sweetener', NotRotten('firmalife:food/butter'), NotRotten('#tfc:foods/flour'), NotRotten('#forge:eggs')],
|
|
itemOutputProvider: TFC.isp.of('4x firmalife:food/cookie_dough').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "chocolate_chip_cookie_dough", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['4x firmalife:food/cookie_dough', '#firmalife:chocolate_blends'],
|
|
itemOutputHint: '4x firmalife:food/chocolate_chip_cookie_dough',
|
|
itemInputs: [Sized(NotRotten('firmalife:food/cookie_dough'), 4), NotRotten('#firmalife:chocolate_blends')],
|
|
itemOutputProvider: TFC.isp.of('4x firmalife:food/chocolate_chip_cookie_dough').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "hardtack_dough", {
|
|
duration: 300,
|
|
EUt: 16,
|
|
itemInputHints: ['tfc:powder/salt', '#tfc:foods/flour'],
|
|
itemOutputHint: '4x firmalife:food/hardtack_dough',
|
|
fluidInputs: [Fluid.of('minecraft:water', 1000)],
|
|
itemInputs: [NotRotten('#tfc:foods/flour'), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of('4x firmalife:food/hardtack_dough').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "yeast_starter", {
|
|
duration: 1200,
|
|
EUt: 8,
|
|
circuit: 1,
|
|
fluidInputs: [Fluid.of('firmalife:yeast_starter', 100)],
|
|
fluidOutputs: [Fluid.of('firmalife:yeast_starter', 600)],
|
|
itemInputHints: ['#tfc:foods/flour'],
|
|
itemInputs: [NotRotten('#tfc:foods/flour')]
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "cocoa_dust", {
|
|
duration: 100,
|
|
EUt: 4,
|
|
itemInputHints: ["firmalife:food/roasted_cocoa_beans"],
|
|
itemOutputHint: "gtceu:cocoa_dust",
|
|
itemInputs: [NotRotten('firmalife:food/roasted_cocoa_beans')],
|
|
itemOutputProvider: TFC.isp.of("gtceu:cocoa_dust")
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "soybean_paste", {
|
|
duration: 50,
|
|
EUt: 8,
|
|
itemInputHints: ["firmalife:food/dehydrated_soybeans"],
|
|
itemOutputHint: "firmalife:food/soybean_paste",
|
|
itemInputs: [NotRotten('firmalife:food/dehydrated_soybeans')],
|
|
itemOutputProvider: TFC.isp.of("firmalife:food/soybean_paste")
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "red_grapes", {
|
|
duration: 50,
|
|
EUt: 8,
|
|
itemInputHints: ["firmalife:food/red_grapes"],
|
|
itemOutputHint: "firmalife:food/smashed_red_grapes",
|
|
itemInputs: [NotRotten('firmalife:food/red_grapes')],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/smashed_red_grapes').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "white_grapes", {
|
|
duration: 50,
|
|
EUt: 8,
|
|
itemInputHints: ["firmalife:food/white_grapes"],
|
|
itemOutputHint: "firmalife:food/smashed_white_grapes",
|
|
itemInputs: [NotRotten('firmalife:food/white_grapes')],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/smashed_white_grapes').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "egg_noodles", {
|
|
duration: 50,
|
|
EUt: 8,
|
|
itemInputHints: ["firmalife:foods/egg_noodle_flour", 'tfc:powder/salt', '#forge:eggs'],
|
|
itemOutputHint: 'firmalife:food/raw_egg_noodles',
|
|
itemInputs: [NotRotten("firmalife:foods/egg_noodle_flour"), NotRotten('#forge:eggs'), 'tfc:powder/salt'],
|
|
fluidInputs: [Fluid.of('#tfc:milks', 1000)],
|
|
itemOutputProvider: TFC.isp.of("firmalife:food/raw_egg_noodles").copyOldestFood(),
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "rice_noodles", {
|
|
duration: 50,
|
|
EUt: 8,
|
|
itemInputHints: ["tfc:food/rice_flour", 'tfc:food/maize_flour', 'tfc:powder/salt'],
|
|
fluidInputs: [Fluid.of('#tfc:milks', 1000)],
|
|
itemOutputHint: '2x firmalife:food/raw_rice_noodles',
|
|
itemInputs: [NotRotten("tfc:food/rice_flour"), NotRotten('tfc:food/maize_flour'), 'tfc:powder/salt'],
|
|
itemOutputProvider: TFC.isp.of('2x firmalife:food/raw_rice_noodles').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "cured_maize", {
|
|
duration: 300,
|
|
EUt: 8,
|
|
itemInputHints: ["tfc:food/maize_grain"],
|
|
itemOutputHint: "firmalife:food/cured_maize",
|
|
itemInputs: [NotRotten("tfc:food/maize_grain")],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/cured_maize').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_processor", "soy_mixture", {
|
|
duration: 300,
|
|
EUt: 8,
|
|
itemInputHints: ["tfc:food/soybean", 'tfc:powder/salt'],
|
|
itemOutputHint: "firmalife:food/soy_mixture",
|
|
fluidInputs: [Fluid.of('minecraft:water', 50)],
|
|
itemInputs: [NotRotten("tfc:food/soybean"), "tfc:powder/salt"],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyOldestFood(),
|
|
|
|
})
|
|
|
|
registerFoodRecipe("food_oven", "boiled_egg", {
|
|
duration: 200,
|
|
EUt: 8,
|
|
itemInputHints: ["#firmalife:foods/raw_eggs"],
|
|
itemOutputHint: "firmalife:food/boiled_egg",
|
|
fluidInputs: [Fluid.of('minecraft:water', 200)],
|
|
itemInputs: [NotRotten('#firmalife:foods/raw_eggs')],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/boiled_egg').copyOldestFood()
|
|
})
|
|
|
|
registerFoodRecipe("food_oven", "cooked_rice", {
|
|
duration: 200,
|
|
EUt: 8,
|
|
itemInputHints: ["tfc:food/rice_grain"],
|
|
itemOutputHint: "firmalife:food/cooked_rice",
|
|
fluidInputs: [Fluid.of('minecraft:water', 200)],
|
|
itemInputs: [NotRotten('tfc:food/rice_grain')],
|
|
itemOutputProvider: TFC.isp.of('firmalife:food/cooked_rice').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/cream_from_${name}`)
|
|
.inputFluids(Fluid.of('#tfc:milks', 1000))
|
|
.outputFluids(Fluid.of('firmalife:cream'))
|
|
.circuit(6)
|
|
.duration(1200)
|
|
.EUt(24)
|
|
|
|
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
|
|
} |