diff --git a/CHANGELOG.md b/CHANGELOG.md index ebb94f903..ad564e5c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,7 +3,13 @@ ## [Unreleased] ### New features ### Bug fixes +- Fixed double ingots not having a temperature (#1165) @Pyritie +- Removed a few recipes that had unobtainable create-related materials @Pyritie +- Fixed the color of placed zinc ingots and plated blocks to match the material @Pyritie ### 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 ## [0.9.11] - 13.06.2025 ### New features diff --git a/config/ftbquests/quests/chapters/lv__low_voltage.snbt b/config/ftbquests/quests/chapters/lv__low_voltage.snbt index 425ba06f9..99169a273 100644 --- a/config/ftbquests/quests/chapters/lv__low_voltage.snbt +++ b/config/ftbquests/quests/chapters/lv__low_voltage.snbt @@ -1401,7 +1401,7 @@ subtitle: "{quests.low_voltage.lv_greenhouse.subtitle}" tasks: [{ id: "3EB01235ED295080" - item: "gtceu:greenhouse" + item: "tfg:electric_greenhouse" type: "item" }] title: "{quests.low_voltage.lv_greenhouse.title}" diff --git a/config/ftbquests/quests/chapters/ore_processing.snbt b/config/ftbquests/quests/chapters/ore_processing.snbt index 75f89f6bc..8beaa52b5 100644 --- a/config/ftbquests/quests/chapters/ore_processing.snbt +++ b/config/ftbquests/quests/chapters/ore_processing.snbt @@ -48,6 +48,16 @@ ] dependency_requirement: "one_completed" description: ["{quests.ore_proc.crushed_ores.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "gtceu:crushed_copper_ore" + } id: "28419A1010EEE93A" subtitle: "{quests.ore_proc.crushed_ores.subtitle}" tasks: [ @@ -223,6 +233,7 @@ description: ["{quests.ore_proc.mercury.desc}"] id: "68AC3E2C9093FCFE" optional: true + shape: "heart" subtitle: "{quests.ore_proc.mercury.subtitle}" tasks: [ { @@ -273,6 +284,7 @@ description: ["{quests.ore_proc.sodium_ores.desc}"] id: "0502E478E27D4B73" optional: true + shape: "heart" subtitle: "{quests.ore_proc.sodium_ores.subtitle}" tasks: [ { @@ -303,26 +315,29 @@ ] dependency_requirement: "one_completed" description: ["{quests.ore_proc.purified_ores.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "create:crushed_raw_copper" + } id: "544EA7FF98FDCFB7" subtitle: "{quests.ore_proc.purified_ores.subtitle}" - tasks: [ - { - id: "4C6F60AC9C803D7B" - item: { - Count: 1 - id: "ftbfiltersystem:smart_filter" - tag: { - "ftbfiltersystem:filter": "or(item_tag(forge:purified_ores))" - } + tasks: [{ + id: "4C6F60AC9C803D7B" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item_tag(forge:purified_ores))" } - optional_task: true - type: "item" } - { - id: "3C194AEB554DA4CA" - type: "checkmark" - } - ] + type: "item" + }] title: "{quests.ore_proc.purified_ores.title}" x: 0.5d y: -0.5d @@ -340,12 +355,6 @@ optional_task: true type: "item" } - { - id: "0373F4E380F2A0BC" - item: "gtceu:indium_concentrate_bucket" - optional_task: true - type: "item" - } { id: "246799A19B9A47B6" item: { @@ -368,8 +377,15 @@ type: "item" } { - id: "52FCA464BD827E37" - type: "checkmark" + id: "475C90F0EA16C2F9" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "only_one(item(gtceu:indium_concentrate_bucket)nbt(fuzzy:{fluid:{Amount:1000,FluidName:\"gtceu:indium_concentrate\"}}))" + } + } + type: "item" } ] title: "{quests.ore_proc.indium.title}" @@ -627,25 +643,30 @@ ] dependency_requirement: "one_completed" description: ["{quests.ore_proc.dust_processed.desc}"] - id: "22C1D541452D4AD4" - subtitle: "{quests.ore_proc.dust_processed.subtitle}" - tasks: [ - { - id: "3EA3BABECE52085B" - item: { - Count: 1 - id: "ftbfiltersystem:smart_filter" - tag: { - "ftbfiltersystem:filter": "or(item_tag(forge:dusts))" - } + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L } - type: "item" } - { - id: "1A1B2762EFD6C6B0" - type: "checkmark" + id: "gtceu:copper_dust" + } + id: "22C1D541452D4AD4" + size: 1.5d + subtitle: "{quests.ore_proc.dust_processed.subtitle}" + tasks: [{ + id: "3EA3BABECE52085B" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item_tag(forge:dusts))" + } } - ] + type: "item" + }] title: "{quests.ore_proc.dust_processed.title}" x: 0.5d y: 3.5d diff --git a/config/ftbquests/quests/chapters/questsmetallurgy.snbt b/config/ftbquests/quests/chapters/questsmetallurgy.snbt index 377b568d0..fa48fa874 100644 --- a/config/ftbquests/quests/chapters/questsmetallurgy.snbt +++ b/config/ftbquests/quests/chapters/questsmetallurgy.snbt @@ -31,10 +31,21 @@ y: -34.0d } { + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/lamp/blue_steel" + } id: "227B6C88FFE99435" linked_quest: "4EBABACAB444244D" + shape: "heart" x: 16.5d - y: -23.0d + y: -24.5d } { id: "19CF6D922179DFF9" @@ -58,7 +69,7 @@ }] title: "{quests.metal_age.this_is_a_bucket.title}" x: 13.5d - y: -24.5d + y: -26.0d } { dependencies: ["56CA2EB7812529C5"] @@ -82,7 +93,7 @@ ] title: "{quests.metal_age.redblu_buckets.title}" x: 16.5d - y: -24.5d + y: -26.0d } { dependencies: ["7E0239E9CC73F09F"] @@ -98,11 +109,11 @@ weak_nbt_match: true }] title: "{quests.metal_age.black_steel_anvil.title}" - x: 27.5d - y: -24.5d + x: 26.5d + y: -26.0d } { - dependencies: ["4310B619B57276ED"] + dependencies: ["5996A3A0D475B8A6"] description: ["{quests.metal_age.steel_anvil.desc}"] id: "04DE7C58F20B535A" shape: "octagon" @@ -115,11 +126,11 @@ weak_nbt_match: true }] title: "{quests.metal_age.steel_anvil.title}" - x: 27.5d + x: 26.5d y: -32.0d } { - dependencies: ["358571B6E692F198"] + dependencies: ["0A92F5C4BB6AF972"] description: ["{quests.metal_age.wrought_iron_anvil.desc}"] id: "174DA15847665CF8" shape: "octagon" @@ -263,29 +274,10 @@ y: -32.0d } { - dependencies: [ - "0A92F5C4BB6AF972" - "021D3DEEB15A3D17" - ] - dependency_requirement: "one_completed" - description: ["{quests.metal_age.weld_wrought_iron_ingots.desc}"] - id: "358571B6E692F198" - subtitle: "{quests.metal_age.weld_wrought_iron_ingots.subtitle}" - tasks: [{ - id: "05AD17F66DFE3C56" - item: "gtceu:wrought_iron_double_ingot" - type: "item" - weak_nbt_match: true - }] - title: "{quests.metal_age.weld_wrought_iron_ingots.title}" - x: 7.0d - y: -32.0d - } - { - dependencies: ["48A8E3210B2BAE1C"] description: ["{quests.metal_age.bellows.desc}"] hide_dependency_lines: true id: "021D3DEEB15A3D17" + shape: "rsquare" subtitle: "{quests.metal_age.bellows.subtitle}" tasks: [{ id: "588EB07E980386F9" @@ -297,31 +289,12 @@ y: -34.0d } { - dependencies: ["5996A3A0D475B8A6"] - dependency_requirement: "one_completed" - description: ["{quests.metal_age.weld_steel_ingots.desc}"] - id: "4310B619B57276ED" - subtitle: "{quests.metal_age.weld_steel_ingots.subtitle}" - tasks: [{ - id: "0EDB1D851E198274" - item: "gtceu:steel_double_ingot" - type: "item" - weak_nbt_match: true - }] - title: "{quests.metal_age.weld_steel_ingots.title}" - x: 25.5d - y: -32.0d - } - { - dependencies: [ - "061116CF508D54F6" - "68B7D07D57A103BE" - ] + dependencies: ["5A936E9BCF30AA3D"] dependency_requirement: "one_completed" description: ["{quests.metal_age.kaolin_clay.desc}"] id: "72F1C122FC26229C" shape: "octagon" - size: 3.0d + size: 2.0d subtitle: "{quests.metal_age.kaolin_clay.subtitle}" tasks: [{ id: "673D38EB62FFD65F" @@ -339,8 +312,8 @@ weak_nbt_match: true }] title: "{quests.metal_age.kaolin_clay.title}" - x: 13.5d - y: -36.0d + x: 14.0d + y: -33.0d } { dependencies: ["5A936E9BCF30AA3D"] @@ -349,25 +322,24 @@ icon: "tfc:ore/graphite/gabbro" id: "53E1383F12EC6765" optional: true + shape: "diamond" subtitle: "{quests.metal_age.overworld_graphite.subtitle}" tasks: [{ id: "25A552657AFA7BC2" type: "checkmark" }] title: "{quests.metal_age.overworld_graphite.title}" - x: 13.0d + x: 11.0d y: -30.5d } { - dependencies: [ - "53E1383F12EC6765" - "2DB82986FE176CD7" - ] + dependencies: ["5A936E9BCF30AA3D"] dependency_requirement: "one_completed" description: ["{quests.metal_age.graphite.desc}"] + icon: "tfc:powder/graphite" id: "31CE13462759950C" shape: "octagon" - size: 3.0d + size: 2.0d subtitle: "{quests.metal_age.graphite.subtitle}" tasks: [{ id: "6B0C9D862BFD27BC" @@ -382,14 +354,13 @@ type: "item" }] title: "{quests.metal_age.graphite.title}" - x: 13.5d - y: -28.5d + x: 14.0d + y: -31.0d } { dependencies: [ "72F1C122FC26229C" "31CE13462759950C" - "5A936E9BCF30AA3D" ] description: ["{quests.metal_age.fire_clay.desc}"] id: "2C76EE197C14B0DC" @@ -403,7 +374,7 @@ weak_nbt_match: true }] title: "{quests.metal_age.fire_clay.title}" - x: 17.5d + x: 17.0d y: -32.0d } { @@ -466,6 +437,7 @@ description: ["{quests.metal_age.beneath_kaolin.desc}"] id: "061116CF508D54F6" optional: true + shape: "diamond" subtitle: "{quests.metal_age.beneath_kaolin.subtitle}" tasks: [ { @@ -492,7 +464,7 @@ } ] title: "{quests.metal_age.beneath_kaolin.title}" - x: 14.0d + x: 12.0d y: -33.5d } { @@ -596,7 +568,7 @@ } ] title: "{quests.metal_age.fire_clay_products.title}" - x: 17.5d + x: 17.0d y: -34.0d } { @@ -666,12 +638,14 @@ }] title: "{quests.metal_age.red_blu.title}" x: 24.0d - y: -24.5d + y: -26.0d } { dependencies: ["56CA2EB7812529C5"] description: ["{quests.metal_age.red_steel_flask.desc}"] id: "30D49878F3CEB08A" + optional: true + shape: "heart" subtitle: "{quests.metal_age.red_steel_flask.subtitle}" tasks: [{ id: "7394672B4D19B0B2" @@ -680,7 +654,7 @@ }] title: "{quests.metal_age.red_steel_flask.title}" x: 16.5d - y: -26.0d + y: -27.5d } { dependencies: [ @@ -706,7 +680,7 @@ }] title: "{quests.metal_age.redblu_anvil.title}" x: 18.5d - y: -24.5d + y: -26.0d } { dependencies: ["3C173357029AB649"] @@ -750,13 +724,15 @@ type: "checkmark" }] title: "{quests.metal_age.fire_clay_ingredients.title}" - x: 13.5d + x: 11.5d y: -32.0d } { dependencies: ["5A936E9BCF30AA3D"] description: ["{quests.metal_age.beneath_graphite.desc}"] id: "2DB82986FE176CD7" + optional: true + shape: "diamond" subtitle: "{quests.metal_age.beneath_graphite.subtitle}" tasks: [ { @@ -776,7 +752,7 @@ } ] title: "{quests.metal_age.beneath_graphite.title}" - x: 14.0d + x: 12.0d y: -30.5d } { @@ -784,6 +760,8 @@ description: ["{quests.metal_age.overworld_kaolin.desc}"] icon: "tfc:plant/tree_fern" id: "68B7D07D57A103BE" + optional: true + shape: "diamond" subtitle: "{quests.metal_age.overworld_kaolin.subtitle}" tasks: [{ id: "14DF5B1544AB9BA9" @@ -791,7 +769,7 @@ type: "checkmark" }] title: "{quests.metal_age.overworld_kaolin.title}" - x: 13.0d + x: 11.0d y: -33.5d } { @@ -813,8 +791,8 @@ weak_nbt_match: true }] title: "{quests.metal_age.blast_furnace_fuel.title}" - x: 23.5d - y: -30.0d + x: 20.5d + y: -32.0d } { dependencies: ["04DE7C58F20B535A"] @@ -828,8 +806,8 @@ type: "checkmark" }] title: "{quests.metal_age.steel_goodies.title}" - x: 29.5d - y: -30.0d + x: 26.5d + y: -34.0d } { dependencies: ["52DAF93E2F3D688A"] @@ -845,8 +823,8 @@ type: "checkmark" }] title: "{quests.metal_age.black_steel_goodies.title}" - x: 25.5d - y: -22.5d + x: 26.5d + y: -23.5d } { dependencies: [ @@ -854,6 +832,16 @@ "04DE7C58F20B535A" ] description: ["{quests.metal_age.highcarb_black_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/black_steel" + } id: "7E0239E9CC73F09F" subtitle: "{quests.metal_age.highcarb_black_steel.subtitle}" tasks: [ @@ -887,12 +875,22 @@ } ] title: "{quests.metal_age.highcarb_black_steel.title}" - x: 27.5d + x: 26.5d y: -30.0d } { dependencies: ["5996A3A0D475B8A6"] description: ["{quests.metal_age.weak_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/weak_steel" + } id: "1CE0FF455668C145" subtitle: "{quests.metal_age.weak_steel.subtitle}" tasks: [ @@ -900,53 +898,60 @@ id: "543388DB123E7328" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:nickel_ingot)item(gtceu:nickel_dust))" } - id: "gtceu:nickel_ingot" } + title: "{quests.metal_age.weak_steel.task1}" type: "item" + weak_nbt_match: true } { count: 2L id: "7F829BA244BC77D5" item: { - Count: 2 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:steel_ingot)item(gtceu:steel_dust))" } - id: "gtceu:steel_ingot" } + title: "{quests.metal_age.weak_steel.task2}" type: "item" + weak_nbt_match: true } { id: "3271DD5653C52CAB" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:black_bronze_ingot)item(gtceu:black_bronze_dust))" } - id: "gtceu:black_bronze_ingot" } + title: "{quests.metal_age.weak_steel.task3}" type: "item" + weak_nbt_match: true } ] title: "{quests.metal_age.weak_steel.title}" - x: 25.5d + x: 23.5d y: -30.0d } { dependencies: ["27FF92982A24BC4E"] description: ["{quests.metal_age.highcarb_red_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/red_steel" + } id: "5088768AAA28FCBA" subtitle: "{quests.metal_age.highcarb_red_steel.subtitle}" tasks: [ @@ -981,11 +986,21 @@ ] title: "{quests.metal_age.highcarb_red_steel.title}" x: 20.5d - y: -25.5d + y: -27.0d } { dependencies: ["5792DDAA82895E67"] description: ["{quests.metal_age.weak_red_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/weak_red_steel" + } id: "27FF92982A24BC4E" subtitle: "{quests.metal_age.weak_red_steel.subtitle}" tasks: [ @@ -993,68 +1008,70 @@ id: "2A22B3EA8DC577CE" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(create:brass_ingot)item(gtceu:brass_dust))" } - id: "create:brass_ingot" } + title: "{quests.metal_age.weak_red_steel.brass}" type: "item" } { count: 2L id: "2F0648CE3D1723DF" item: { - Count: 2 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:steel_ingot)item(gtceu:steel_dust))" } - id: "gtceu:steel_ingot" } + title: "{quests.metal_age.weak_red_steel.steel}" type: "item" } { id: "47F346E1C0F41655" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:rose_gold_ingot)item(gtceu:rose_gold_dust))" } - id: "gtceu:rose_gold_ingot" } + title: "{quests.metal_age.weak_red_steel.rose_gold}" type: "item" } { count: 4L id: "21434FAAA69D5BE0" item: { - Count: 4 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(tfc:metal/ingot/black_steel)item(gtceu:black_steel_dust))" } - id: "tfc:metal/ingot/black_steel" } + title: "{quests.metal_age.weak_red_steel.black_steel}" type: "item" } ] title: "{quests.metal_age.weak_red_steel.title}" x: 22.0d - y: -25.5d + y: -27.0d } { dependencies: ["5792DDAA82895E67"] description: ["{quests.metal_age.weak_blu_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/weak_blue_steel" + } id: "64F8A358EC3FEF45" subtitle: "{quests.metal_age.weak_blu_steel.subtitle}" tasks: [ @@ -1062,68 +1079,70 @@ count: 2L id: "5331A323780B4B11" item: { - Count: 2 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:steel_ingot)item(gtceu:steel_dust))" } - id: "gtceu:steel_ingot" } + title: "{quests.metal_age.weak_blue_steel.steel}" type: "item" } { count: 4L id: "2809FD951B82C54F" item: { - Count: 4 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(tfc:metal/ingot/black_steel)item(gtceu:black_steel_dust))" } - id: "tfc:metal/ingot/black_steel" } + title: "{quests.metal_age.weak_blue_steel.black_steel}" type: "item" } { id: "401EC1A9FBC759B8" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:bismuth_bronze_ingot)item(gtceu:bismuth_bronze_dust))" } - id: "gtceu:bismuth_bronze_ingot" } + title: "{quests.metal_age.weak_blue_steel.bismuth_bronze}" type: "item" } { id: "7350ECE723ABE8F4" item: { Count: 1 - ForgeCaps: { - "tfc:item_heat": { - heat: 0.0f - ticks: 0L - } + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "or(item(gtceu:sterling_silver_ingot)item(gtceu:sterling_silver_dust))" } - id: "gtceu:sterling_silver_ingot" } + title: "{quests.metal_age.weak_blue_steel.sterling_silver}" type: "item" } ] title: "{quests.metal_age.weak_blu_steel.title}" x: 22.0d - y: -23.5d + y: -25.0d } { dependencies: ["64F8A358EC3FEF45"] description: ["{quests.metal_age.highcarb_blu_steel.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/ingot/blue_steel" + } id: "6D04BAC5B215F90F" subtitle: "{quests.metal_age.highcarb_blu_steel.subtitle}" tasks: [ @@ -1158,7 +1177,7 @@ ] title: "{quests.metal_age.highcarb_blu_steel.title}" x: 20.5d - y: -23.5d + y: -25.0d } { dependencies: ["3C173357029AB649"] diff --git a/config/ftbquests/quests/chapters/questsstoneage.snbt b/config/ftbquests/quests/chapters/questsstoneage.snbt index eee6df727..bc76b880a 100644 --- a/config/ftbquests/quests/chapters/questsstoneage.snbt +++ b/config/ftbquests/quests/chapters/questsstoneage.snbt @@ -684,6 +684,7 @@ tasks: [{ id: "5A6EF9EBF232601C" item: "gtceu:copper_double_ingot" + match_nbt: false type: "item" weak_nbt_match: true }] diff --git a/config/ftbquests/quests/chapters/queststfc_tips.snbt b/config/ftbquests/quests/chapters/queststfc_tips.snbt index a325d9661..2e0ca4253 100644 --- a/config/ftbquests/quests/chapters/queststfc_tips.snbt +++ b/config/ftbquests/quests/chapters/queststfc_tips.snbt @@ -1602,12 +1602,26 @@ ] dependency_requirement: "one_completed" description: ["{quests.tfg_tips.passive_preservation.desc}"] + disable_toast: true + icon: { + Count: 1 + ForgeCaps: { + Parent: { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:ceramic/vessel" + tag: { } + } id: "13F7066858E923FF" subtitle: "{quests.tfg_tips.passive_preservation.subtitle}" tasks: [{ - id: "54AAB9886964A160" - title: "{quests.tasktype.checkmark}" - type: "checkmark" + dimension: "minecraft:overworld" + icon: "gtceu:overworld_marker" + id: "5BAF5F5343C3E42A" + title: "{quests.stone_age.temperature.task}" + type: "dimension" }] title: "{quests.tfg_tips.passive_preservation.title}" x: 6.5d @@ -2236,10 +2250,7 @@ y: 9.5d } { - dependencies: [ - "2D959136A5FC5F46" - "56CA2EB7812529C5" - ] + dependencies: ["2D959136A5FC5F46"] description: ["{quests.tfg_tips.lamps.desc}"] id: "037CDA933FBE2CBE" subtitle: "{quests.tfg_tips.lamps.subtitle}" @@ -2277,8 +2288,8 @@ } ] title: "{quests.tfg_tips.lamps.title}" - x: -5.0d - y: 11.0d + x: -5.5d + y: 11.5d } { dependencies: [ @@ -2286,6 +2297,16 @@ "56CA2EB7812529C5" ] description: ["{quests.tfg_tips.lava_lamp.desc}"] + icon: { + Count: 1 + ForgeCaps: { + "tfc:item_heat": { + heat: 0.0f + ticks: 0L + } + } + id: "tfc:metal/lamp/blue_steel" + } id: "4EBABACAB444244D" optional: true shape: "heart" @@ -2312,8 +2333,8 @@ } ] title: "{quests.tfg_tips.lava_lamp.title}" - x: -5.0d - y: 12.5d + x: -5.5d + y: 13.0d } { dependencies: ["037CDA933FBE2CBE"] @@ -2333,8 +2354,8 @@ type: "item" }] title: "{quests.tfg_tips.creosote.title}" - x: -6.0d - y: 12.0d + x: -6.5d + y: 12.5d } { dependencies: ["037CDA933FBE2CBE"] @@ -2354,8 +2375,8 @@ type: "item" }] title: "{quests.tfg_tips.olive_oil.title}" - x: -4.0d - y: 12.0d + x: -4.5d + y: 12.5d } { dependencies: ["2D959136A5FC5F46"] @@ -3462,8 +3483,8 @@ type: "item" }] title: "{quests.tfg_tips.tallow.title}" - x: -6.5d - y: 11.0d + x: -7.0d + y: 11.5d } { dependencies: ["150B7C5CD152E1BA"] @@ -5376,6 +5397,26 @@ x: 7.5d y: -18.0d } + { + dependencies: ["037CDA933FBE2CBE"] + description: ["{quests.tfg_tips.glowstone_lamp.desc}"] + id: "61F58B402F1AE40B" + subtitle: "{quests.tfg_tips.glowstone_lamp.subtitle}" + tasks: [{ + id: "71D52011F8BE66F0" + item: { + Count: 1 + id: "ftbfiltersystem:smart_filter" + tag: { + "ftbfiltersystem:filter": "only_one(item(gtceu:glowstone_bucket)nbt(fuzzy:{fluid:{Amount:1000,FluidName:\"gtceu:glowstone\"}}))" + } + } + type: "item" + }] + title: "{quests.tfg_tips.glowstone_lamp.title}" + x: -6.5d + y: 10.5d + } ] subtitle: ["{quests.tfg_tips.subtitle}"] title: "{quests.tfg_tips}" diff --git a/config/tfchotornot-common.toml b/config/tfchotornot-common.toml index ed10d7c44..e6e95be29 100644 --- a/config/tfchotornot-common.toml +++ b/config/tfchotornot-common.toml @@ -31,7 +31,7 @@ itemDamageTimeInterval = 60 #Durability for wooden tongs. #Range: > 0 - woodenTongsDurability = 250 + woodenTongsDurability = 100 #Durability for potholders. #Range: > 0 potholderDurability = 600 diff --git a/kubejs/assets/gtceu/lang/en_us.json b/kubejs/assets/gtceu/lang/en_us.json index 111f851a5..7344697aa 100644 --- a/kubejs/assets/gtceu/lang/en_us.json +++ b/kubejs/assets/gtceu/lang/en_us.json @@ -15,6 +15,8 @@ "gtceu.end_dome": "Enderarium", "gtceu.greenhouse": "Electric Greenhouse", "gtceu.steam_bloomery": "Steam Bloomery", + "gtceu.food_oven": "Food Oven", + "gtceu.food_processor": "Food Processor", "item.gtceu.tiny_wood_dust": "Tiny Pile of Softwood Pulp", "item.gtceu.small_wood_dust": "Small Pile of Softwood Pulp", "item.gtceu.wood_dust": "Softwood Pulp", diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png new file mode 100644 index 000000000..de1abfe72 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png new file mode 100644 index 000000000..5b9e6ea67 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png new file mode 100644 index 000000000..4da155317 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png new file mode 100644 index 000000000..c20a1c981 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_oven/overlay_front_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta new file mode 100644 index 000000000..dfae8cae1 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_back_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime":1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png new file mode 100644 index 000000000..21458b6d2 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png new file mode 100644 index 000000000..db6c56605 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png new file mode 100644 index 000000000..97ab6af81 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png new file mode 100644 index 000000000..c20a1c981 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_front_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png new file mode 100644 index 000000000..678e1b9bb Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png new file mode 100644 index 000000000..f2b3c4212 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta new file mode 100644 index 000000000..f3da053bc --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_side_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 2 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png new file mode 100644 index 000000000..92bda3a2b Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png new file mode 100644 index 000000000..9b68d6c3e Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta new file mode 100644 index 000000000..f3da053bc --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_processor/overlay_top_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 2 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png new file mode 100644 index 000000000..3c21545d1 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png new file mode 100644 index 000000000..bcfd65feb Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png new file mode 100644 index 000000000..8e993ab98 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta new file mode 100644 index 000000000..92cc62352 --- /dev/null +++ b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation":{ + "frametime": 1 + } +} \ No newline at end of file diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif new file mode 100644 index 000000000..383a1c800 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_emissive_ref.gif differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif new file mode 100644 index 000000000..d766d3c18 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_back_active_ref.gif differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png new file mode 100644 index 000000000..f02154247 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_bottom.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png new file mode 100644 index 000000000..01360c35a Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png new file mode 100644 index 000000000..e10b0db21 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_front_active.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png new file mode 100644 index 000000000..1161e23a9 Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_side.png differ diff --git a/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png new file mode 100644 index 000000000..6dfbd1acc Binary files /dev/null and b/kubejs/assets/gtceu/textures/block/machines/food_refrigerator/overlay_top.png differ diff --git a/kubejs/assets/tfc/textures/block/metal/block/zinc.png b/kubejs/assets/tfc/textures/block/metal/block/zinc.png new file mode 100644 index 000000000..2cb121e5a Binary files /dev/null and b/kubejs/assets/tfc/textures/block/metal/block/zinc.png differ diff --git a/kubejs/assets/tfc/textures/block/metal/smooth/zinc.png b/kubejs/assets/tfc/textures/block/metal/smooth/zinc.png new file mode 100644 index 000000000..422b0e6b3 Binary files /dev/null and b/kubejs/assets/tfc/textures/block/metal/smooth/zinc.png differ diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index f0a59c999..91e60149a 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -167,6 +167,19 @@ "block.tfg.mv_aqueous_accumulator": "§bAdvanced Aqueous Accumulator§r", "block.tfg.hv_aqueous_accumulator": "§6Advanced Aqueous Accumulator II§r", "block.tfg.ev_aqueous_accumulator": "§5Advanced Aqueous Accumulator III§r", + "block.tfg.electric_greenhouse": "Electric Greenhouse", + "block.tfg.lv_food_processor": "Basic Food Processor", + "block.tfg.mv_food_processor": "§bAdvanced Food Processor§r", + "block.tfg.hv_food_processor": "§6Advanced Food Processor II§r", + "block.tfg.ev_food_processor": "§5Advanced Food Processor III§r", + "block.tfg.lv_food_oven": "Basic Electric Oven", + "block.tfg.mv_food_oven": "§bAdvanced Electric Oven§r", + "block.tfg.hv_food_oven": "§6Advanced Electric Oven II§r", + "block.tfg.ev_food_oven": "§5Advanced Electric Oven III§r", + "block.tfg.lv_food_refrigerator": "Basic Refrigerator", + "block.tfg.mv_food_refrigerator": "§bAdvanced Refrigerator", + "block.tfg.hv_food_refrigerator": "§6Advanced Refrigerator II§r", + "block.tfg.ev_food_refrigerator": "§5Advanced Refrigerator III§r", "item.tfg.antipoison_pill": "Antipoison Pill", "item.tfg.haste_pill": "Haste Pill", "item.tfg.night_vision_pill": "Night Vision Pill", @@ -287,6 +300,7 @@ "material.gtceu.thermochemically_treated_hardwood": "Thermochemically Treated Hardwood", "material.gtceu.hardwood": "Hardwood", "tfg.disabled_portal": "Portal magic seems to be blocked by an unknown force, try reaching another dimension by going down or up", + "tfg.tooltip.food_trait.refrigerating": "§9Refrigerating", "item.treetap.tap": "Deprecated Item, Craft to Upgrade", "item.gtceu.zinc_ingot": "Deprecated Item, Craft to Upgrade", "item.gtceu.brass_ingot": "Deprecated Item, Craft to Upgrade", @@ -1215,9 +1229,6 @@ "quests.metal_age.mining.title": "Mining in the Metallurgy Age", "quests.metal_age.mining.subtitle": "ROCK AND STONE!", "quests.metal_age.mining.desc": "Extracting valuable resources from the ground is a major part of this modpack, and the Metallurgy Age is no exception! You will consume a &llot&r of metal to progress, and one way to mine a lot of it at once is with a Mining Hammer! This is a tool that can mine blocks in a 3x3x1 area at the cost of a slower mining speed. You can also hold sneak to break single blocks at a time.", - "quests.metal_age.weld_wrought_iron_ingots.title": "Welding Wrought Iron", - "quests.metal_age.weld_wrought_iron_ingots.subtitle": "CLANG CLANG CLANG", - "quests.metal_age.weld_wrought_iron_ingots.desc": "Obtain at least 14 Ingots of Wrought Iron, then weld them together in a Bronze Anvil. Careful you don't melt your Wrought Iron, otherwise it will turn back into Cast Iron and you'll have to run it through the Bloomery again!", "quests.metal_age.bellows.title": "Bellows", "quests.metal_age.bellows.subtitle": "Higher temperatures can be reached, at a small price.", "quests.metal_age.bellows.desc": "The Bellows is a device that can force extra air into a fire or forge in front of it, allowing the heat produced by the fuel inside to reach higher temperatures than usual, at the cost of fuel duration.\n\nThese higher temperatures are required to fire pottery with charcoal or melt certain metals.\n\nCoal and Coke can also reach higher temperatures without it.", @@ -1276,9 +1287,6 @@ "quests.metal_age.blast_furnace.title": "Blast Furnace", "quests.metal_age.blast_furnace.subtitle": "Then I started Blastin'", "quests.metal_age.blast_furnace.desc": "The Blast Furnace is a multiblock structure that allows you to create Pig Iron. Placing a combination of Iron, Flux and fuel (see the adjacent quest) inside the Blast Furnace produces Pig Iron, which can be worked into Steel.\n\nIn order for the Blast Furnace to reach its required high temperatures, it will need its own Bellows, used to force air through a Tuyere which you place inside the blast furnace.\n\nThe Field Guide contains an entry on how the Blast Furnace works and how to build one.", - "quests.metal_age.weld_steel_ingots.title": "Welding Steel", - "quests.metal_age.weld_steel_ingots.subtitle": "Again?", - "quests.metal_age.weld_steel_ingots.desc": "You know the drill by this point. Create 14 Steel Ingots, then weld them to get 7 Double Steel Ingots. We'll stop reminding you about this now.\n\nDid you know that the Helve Hammer can also process your pig iron into steel?", "quests.metal_age.steel_anvil.title": "T4 Anvil: Steel", "quests.metal_age.steel_anvil.subtitle": "A huge leap from wrought iron", "quests.metal_age.steel_anvil.desc": "With the Steel Anvil, you'll be able to work Steel Ingots into different forms.\n\nSteel tools and equipment have a significant boost over their bronze and wrought iron counterparts, so they're worth making if your existing ones are about to break. You'll be needing to create a lot of alloys soon, so some new mining equipment would be a wise investment.", @@ -1288,6 +1296,9 @@ "quests.metal_age.weak_steel.title": "Weak Steel Ingredients", "quests.metal_age.weak_steel.subtitle": "Hope you like math", "quests.metal_age.weak_steel.desc": "Weak Steel is one part of the necessary metals to create Black Steel. You can alloy it with 2 parts Steel, 1 part Nickel and 1 part Black Bronze.\n\nYou can check the liquid weak steel's recipe for more precise alloying percentage rates.", + "quests.metal_age.weak_steel.task1": "1 Part Nickel", + "quests.metal_age.weak_steel.task2": "2 Parts Steel", + "quests.metal_age.weak_steel.task3": "1 Part Black Bronze", "quests.metal_age.highcarb_black_steel.title": "Black Steel Ingredients", "quests.metal_age.highcarb_black_steel.subtitle": "Conservation of matter does not apply", "quests.metal_age.highcarb_black_steel.desc": "The final two anvils are made out of complex alloys that will require a lot of metal to be created. Weak Steel and Pig Iron can be welded to create High Carbon Black Steel, which can then be worked on an anvil into Black Steel.", @@ -1303,15 +1314,23 @@ "quests.metal_age.weak_red_steel.title": "Weak Red Steel Ingredients", "quests.metal_age.weak_red_steel.subtitle": "This is getting a little ridiculous", "quests.metal_age.weak_red_steel.desc": "Like before, Weak Red Steel is the first step of Red Steel's creation. Its alloy is made from 4 parts Black Steel, 2 parts Steel, 1 part Brass, and 1 part Rose Gold.\n\nYou can check the liquid Weak Red Steel's recipe for more precise alloying percentage rates.", + "quests.metal_age.weak_red_steel.steel": "2 Parts Steel", + "quests.metal_age.weak_red_steel.black_steel": "4 Parts Black Steel", + "quests.metal_age.weak_red_steel.brass": "1 Part Brass", + "quests.metal_age.weak_red_steel.rose_gold": "1 Part Rose Gold", "quests.metal_age.weak_blu_steel.title": "Weak Blue Steel Ingredients", "quests.metal_age.weak_blu_steel.subtitle": "This is getting out of hand.", - "quests.metal_age.weak_blu_steel.desc": "Like before, Weak Blue Steel is the first step of Blue Steel's creation. Its alloy is made from 4 parts Black Steel, 2 parts Steel, 1 part Bismuth Bronze, and 1 part Sterling Silver.\n\bYou can check the liquid Weak Blue Steel's recipe for more precise alloying percentage rates.", + "quests.metal_age.weak_blu_steel.desc": "Like before, Weak Blue Steel is the first step of Blue Steel's creation. Its alloy is made from 4 parts Black Steel, 2 parts Steel, 1 part Bismuth Bronze, and 1 part Sterling Silver.\n\nYou can check the liquid Weak Blue Steel's recipe for more precise alloying percentage rates.", + "quests.metal_age.weak_blue_steel.steel": "2 Parts Steel", + "quests.metal_age.weak_blue_steel.black_steel": "4 Parts Black Steel", + "quests.metal_age.weak_blue_steel.sterling_silver": "1 Part Sterling Silver", + "quests.metal_age.weak_blue_steel.bismuth_bronze": "1 Part Bismuth Bronze", "quests.metal_age.highcarb_red_steel.title": "Red Steel Ingredients", "quests.metal_age.highcarb_red_steel.subtitle": "Could deleting matter like this power a nuclear bomb?", "quests.metal_age.highcarb_red_steel.desc": "Red Steel first starts as High Carbon Red Steel, which is made by welding Weak Red Steel and Black Steel. It needs to be worked on the Anvil to turn it into Red Steel", "quests.metal_age.highcarb_blu_steel.title": "Blue Steel Ingredients", "quests.metal_age.highcarb_blu_steel.subtitle": "Lavoisier is rolling in his grave", - "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, whcih is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel", + "quests.metal_age.highcarb_blu_steel.desc": "Blue Steel first starts as High Carbon Blue Steel, which is made by welding Weak Blue Steel and Black Steel. It needs to be worked on the Anvil to turn it into Blue Steel", "quests.metal_age.redblu_anvil.title": "T6 Anvil: Red or Blue Steel", "quests.metal_age.redblu_anvil.subtitle": "It's over", "quests.metal_age.redblu_anvil.desc": "The final tier of Anvil! With the Tier 6 Anvil you'll be able to work both Red and Blue Steel Ingots into different items.\n\nThis marks the end of TerraFirmaCraft's progression. Now it's time to finish the Industrial Age and create your very first Low Voltage circuitry.", @@ -1538,7 +1557,7 @@ "quests.steam_age.centrifuge.desc": "Ore processing will always be an important part of this modpack, and this machine is another (optional) part of that. By following a different route of ore processing steps (check the Ore Processing Diagram tab in JEI), you can use this centrifuge to get some bonus byproducts out of your ores! The next upgrade to your ores won't be until the LV Thermal Centrifuge, so whether or not this is a worthwhile investment is up to you.", "quests.steam_age.steam_engine.title": "Steam Engine", "quests.steam_age.steam_engine.subtitle": "Time for some real steam power", - "quests.steam_age.steam_engine.desc": "Water wheels and windmills not cutting it any more? It wouldn't be a steam age without a proper steam engine! Each steam engine can output a whole 512 SU, giving you much more power to play with.\n\nBlaze Burners can be crafted without leaving your house, and you can use a Mechanical Arm to automatically feed them solid fuel, or liquid fuel in a bucket. Coal Gems and Coke can also be used to superheat them.", + "quests.steam_age.steam_engine.desc": "Water wheels and windmills not cutting it any more? It wouldn't be a steam age without a proper steam engine! Each steam engine can output a whole 256 SU, giving you much more power to play with.\n\nBlaze Burners can be crafted without leaving your house, and you can use a Mechanical Arm to automatically feed them solid fuel, or liquid fuel in a bucket (such as creosote). Coal Gems, Anthracite, and Coke can also be used to superheat them.", "quests.steam_age.deployers.title": "Deployers", "quests.steam_age.deployers.subtitle": "Primitive Assembly Line", "quests.steam_age.deployers.desc": "While you could use a single deployer for the rest your time in this chapter, we &3really&r don't recommend it. Setting up a line of deployers along a belt will save heaps of time and sanity, and it's not like you'll be wasting materials either, because you can always reuse them to upgrade your tree farm later.\n\nThese will also make electron tubes significantly cheaper!", diff --git a/kubejs/client_scripts/tooltips.js b/kubejs/client_scripts/tooltips.js index 9cbfe6003..213334b1a 100644 --- a/kubejs/client_scripts/tooltips.js +++ b/kubejs/client_scripts/tooltips.js @@ -27,10 +27,9 @@ const registerTooltips = (event) => event.addAdvanced(['create:blaze_burner'], (item, advanced, text) => { text.add(1, text.of('§cSuperheat§r with 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('This machine has a §2Perfect Overclock§r!')), - text.add(2, text.of('Currently, due to a bug, sometimes outputs rotten food.')) - text.add(3, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) + text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`)) }) event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => { text.add(1, text.of('Artificial enviroment to simulate the Nether.')), diff --git a/kubejs/server_scripts/create/recipes.js b/kubejs/server_scripts/create/recipes.js index 684b6ff15..995c04cf4 100644 --- a/kubejs/server_scripts/create/recipes.js +++ b/kubejs/server_scripts/create/recipes.js @@ -42,6 +42,7 @@ const registerCreateRecipes = (event) => { }) event.remove({ type: 'minecraft:stonecutting', input: 'create:andesite_alloy' }) + event.remove({ type: 'minecraft:stonecutting', input: 'create:rose_quartz' }) // Train Station event.shapeless('2x create:track_station', [ diff --git a/kubejs/server_scripts/firmalife/recipes.js b/kubejs/server_scripts/firmalife/recipes.js index 90d2e64f0..a9adeb1a3 100644 --- a/kubejs/server_scripts/firmalife/recipes.js +++ b/kubejs/server_scripts/firmalife/recipes.js @@ -95,16 +95,8 @@ const registerFirmaLifeRecipes = (event) => { .duration(50) .EUt(2) - // Pineapple Fiber - event.recipes.gtceu.assembler(`tfg:firmalife/pineapple_fiber`) - .itemInputs('firmalife:food/pineapple') - .circuit(1) - .itemOutputs('firmalife:pineapple_fiber') - .duration(50) - .EUt(7) - // Pineapple Yarn - event.recipes.gtceu.assembler(`tfg:firmalife/pineapple_yarn`) + event.recipes.gtceu.wiremill(`tfg:firmalife/pineapple_yarn`) .itemInputs('firmalife:pineapple_fiber') .circuit(1) .itemOutputs('8x firmalife:pineapple_yarn') @@ -454,276 +446,6 @@ const registerFirmaLifeRecipes = (event) => { //#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 event.recipes.firmalife.vat() @@ -759,28 +481,6 @@ const registerFirmaLifeRecipes = (event) => { // #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 event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp') @@ -795,13 +495,4 @@ const registerFirmaLifeRecipes = (event) => { .circuit(5) .EUt(GTValues.VA[GTValues.ULV]) .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) } diff --git a/kubejs/server_scripts/greate/recipes.removes.js b/kubejs/server_scripts/greate/recipes.removes.js index 8771d171b..22b279f2b 100644 --- a/kubejs/server_scripts/greate/recipes.removes.js +++ b/kubejs/server_scripts/greate/recipes.removes.js @@ -27,6 +27,7 @@ function removeGreateRecipes(event) { event.remove({ id: 'greate:shaped/titanium_mechanical_saw' }) event.remove({ id: 'greate:splashing/dough' }) + event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' }) event.remove({ mod: 'greate', type: 'create:deploying' }); event.remove({ mod: 'greate', type: 'create:sequenced_assembly' }); diff --git a/kubejs/server_scripts/gregtech/recipes.machines.js b/kubejs/server_scripts/gregtech/recipes.machines.js index 83c352ad9..7e90107f4 100644 --- a/kubejs/server_scripts/gregtech/recipes.machines.js +++ b/kubejs/server_scripts/gregtech/recipes.machines.js @@ -744,18 +744,6 @@ function registerGTCEuMachineRecipes(event) { // #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 const DRUMS_AND_CRATES = [ 'bismuth_bronze', diff --git a/kubejs/server_scripts/gregtech/recipes.materials.js b/kubejs/server_scripts/gregtech/recipes.materials.js index f4ab5a5d1..52a6197e4 100644 --- a/kubejs/server_scripts/gregtech/recipes.materials.js +++ b/kubejs/server_scripts/gregtech/recipes.materials.js @@ -139,7 +139,7 @@ function registerGTCEUMetalRecipes(event) { let matAmount = TagPrefix.block.getMaterialAmount(material) / GTValues.M; - if (!plateStack.isEmpty()) { + if (!plateStack.isEmpty() && !ingotStack.hasTag('c:hidden_from_recipe_viewers')) { event.custom({ type: "createaddition:rolling", @@ -149,7 +149,6 @@ function registerGTCEUMetalRecipes(event) { }).id(`tfg:rolling/${material.getName()}_plate`) if (!blockStack.isEmpty() && GTMaterials.Stone != material) { - // 9х Слиток -> Блок event.recipes.createCompacting(blockStack, ingotStack.withCount(matAmount)) .heated() @@ -158,7 +157,6 @@ function registerGTCEUMetalRecipes(event) { } else { if (!blockStack.isEmpty()) { - // Блок из гемов -> 9 Пластин event.recipes.createCutting(plateStack.withCount(matAmount).withChance(0.65), blockStack) .id(`tfg:cutting/${material.getName()}_plate`) @@ -192,7 +190,7 @@ function registerGTCEUMetalRecipes(event) { const foilItem = ChemicalHelper.get(TagPrefix.foil, material, 4) const plateItem = ChemicalHelper.get(TagPrefix.plate, material, 1) - if (plateItem != null && foilItem != null) { + if (plateItem != null && foilItem != null && !plateItem.hasTag('c:hidden_from_recipe_viewers')) { event.custom({ type: "createaddition:rolling", input: plateItem, diff --git a/kubejs/server_scripts/minecraft/recipes.js b/kubejs/server_scripts/minecraft/recipes.js index 55a34243c..57cdf234f 100644 --- a/kubejs/server_scripts/minecraft/recipes.js +++ b/kubejs/server_scripts/minecraft/recipes.js @@ -1028,4 +1028,5 @@ const registerMinecraftRecipes = (event) => { }).id('tfg:shaped/stonecutter'); event.stonecutting('minecraft:smooth_quartz', 'minecraft:quartz_block') + event.stonecutting('create:cut_deepslate', 'minecraft:polished_deepslate') } diff --git a/kubejs/server_scripts/minecraft/tags.js b/kubejs/server_scripts/minecraft/tags.js index 6363b026b..fd12509f2 100644 --- a/kubejs/server_scripts/minecraft/tags.js +++ b/kubejs/server_scripts/minecraft/tags.js @@ -56,6 +56,7 @@ const registerMinecraftItemTags = (event) => { event.remove('forge:gems', 'minecraft:charcoal') event.remove('forge:gems', 'minecraft:coal') + event.remove('forge:gems', 'minecraft:flint') event.add('tfc:compost_greens_high', 'minecraft:red_mushroom_block') event.add('tfc:compost_greens_high', 'minecraft:brown_mushroom_block') diff --git a/kubejs/server_scripts/tfc/data.js b/kubejs/server_scripts/tfc/data.js index e49817b46..f0ba390a5 100644 --- a/kubejs/server_scripts/tfc/data.js +++ b/kubejs/server_scripts/tfc/data.js @@ -69,6 +69,7 @@ const registerTFCHeats = (event) => { makeItemHeatByTagPrefix(TagPrefix.rodLong, material, tfcProperty, 1.429) makeItemHeatByTagPrefix(TagPrefix.ingot, material, tfcProperty, 1.429) + makeItemHeatByTagPrefix(TFGTagPrefix.ingotDouble, material, tfcProperty, 2.875) makeItemHeatByTagPrefix(TagPrefix.rawOre, material, tfcProperty, 1.429) makeItemHeatByTagPrefix(TFGTagPrefix.richRawOre, material, tfcProperty, 1.429) diff --git a/kubejs/server_scripts/tfc/recipes.js b/kubejs/server_scripts/tfc/recipes.js index d23cb4aad..064774d05 100644 --- a/kubejs/server_scripts/tfc/recipes.js +++ b/kubejs/server_scripts/tfc/recipes.js @@ -34,44 +34,6 @@ const registerTFCRecipes = (event) => { //#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 Рецепты обжарки форм global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => { @@ -126,15 +88,6 @@ const registerTFCRecipes = (event) => { //#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('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings') diff --git a/kubejs/server_scripts/tfc/recipes.machines.js b/kubejs/server_scripts/tfc/recipes.machines.js index ac2370124..44df72c83 100644 --- a/kubejs/server_scripts/tfc/recipes.machines.js +++ b/kubejs/server_scripts/tfc/recipes.machines.js @@ -117,20 +117,6 @@ function registerTFCMachineRecipes(event) { .duration(3200) .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 Молды в ассемблере for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) { @@ -174,158 +160,9 @@ function registerTFCMachineRecipes(event) { .duration(2400) .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 - //#region Оливки - - 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) - }) + // Brine event.recipes.gtceu.mixer('tfg:tfc/brine') .inputFluids(Fluid.of('tfc:salt_water', 900)) diff --git a/kubejs/server_scripts/tfc/recipes.materials.js b/kubejs/server_scripts/tfc/recipes.materials.js index a105e1203..80f4d9112 100644 --- a/kubejs/server_scripts/tfc/recipes.materials.js +++ b/kubejs/server_scripts/tfc/recipes.materials.js @@ -1114,6 +1114,15 @@ function registerTFCMaterialsRecipes(event) { let tongPartStack = Item.of(`tfchotornot:tong_part/${material.getName()}`) if (!tongsStack.isEmpty() && !tongPartStack.isEmpty()) { + event.shaped(tongsStack, [ + 'AA', + 'BC' + ], { + A: tongPartStack, + B: '#forge:bolts', + C: '#forge:tools/hammers' + }).id(`tfchotornot:crafting/tongs/${material.getName()}`) + // Ручка щипцов event.recipes.tfc.heating(tongPartStack, tfcProperty.getMeltTemp()) .resultFluid(Fluid.of(outputMaterial.getFluid(), 144)) diff --git a/kubejs/server_scripts/tfclunchbox/recipes.js b/kubejs/server_scripts/tfclunchbox/recipes.js index 0654a12b2..badc96045 100644 --- a/kubejs/server_scripts/tfclunchbox/recipes.js +++ b/kubejs/server_scripts/tfclunchbox/recipes.js @@ -47,13 +47,13 @@ function registerTFCLunchBoxRecipes(event) { event.recipes.gtceu.canner('tfclunchbox:fill_capsule_with_ice') .itemInputs('tfclunchbox:universal_capsule') .inputFluids(Fluid.of('gtceu:ice', 45 * 144)) - .itemOutputs(Item.of('tfclunchbox:universal_capsule', '{Durability:500}').withName(Text.translate('item.tfclunchbox.universal_capsule.filled'))) + .itemOutputs(Item.of('tfclunchbox:universal_capsule', '{Durability:1000}').withName(Text.translate('item.tfclunchbox.universal_capsule.filled'))) .duration(100) .EUt(GTValues.VA[GTValues.LV]) event.recipes.gtceu.canner('tfclunchbox:fill_capsule_with_ice_solid') .itemInputs('tfclunchbox:universal_capsule', '5x minecraft:packed_ice') - .itemOutputs(Item.of('tfclunchbox:universal_capsule', '{Durability:500}').withName(Text.translate('item.tfclunchbox.universal_capsule.filled'))) + .itemOutputs(Item.of('tfclunchbox:universal_capsule', '{Durability:1000}').withName(Text.translate('item.tfclunchbox.universal_capsule.filled'))) .duration(100) .EUt(GTValues.VA[GTValues.LV]) } diff --git a/kubejs/server_scripts/tfg/recipes.food.js b/kubejs/server_scripts/tfg/recipes.food.js new file mode 100644 index 000000000..0a8fa9c76 --- /dev/null +++ b/kubejs/server_scripts/tfg/recipes.food.js @@ -0,0 +1,620 @@ +// 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 brining_ingredients = smoking_meats.concat(brining_veg); + + brining_ingredients.forEach(item => { + processorRecipe(`${item}/brining`, 200, 16, { + circuit: 5, + itemInputs: [item], + itemOutputs: [item], + fluidInputs: [Fluid.of("tfc:brine", 100)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait('tfc:brined') + }) + }) + + smoking_meats.forEach(item => { + processorRecipe(`${item}/smoking`, 200, 16, { + circuit: 6, + itemInputs: [[item, TFC.ingredient.lacksTrait(item, "firmalife:smoked")]], + itemOutputs: [item], + fluidInputs: [Fluid.of('gtceu:wood_gas', 50)], + itemOutputProvider: TFC.isp.of(item).copyOldestFood().addTrait("firmalife:smoked") + }) + }) + + //#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') +} \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.js b/kubejs/server_scripts/tfg/recipes.js index eec0f9d35..0f4bc7713 100644 --- a/kubejs/server_scripts/tfg/recipes.js +++ b/kubejs/server_scripts/tfg/recipes.js @@ -14,4 +14,5 @@ const registerTFGRecipes = (event) => { registerTFGSupportRecipes(event) registerTFGFishingNetsRecipes(event) registerTFGConvertingRecipes(event) + registerTFGFoodRecipes(event) } \ No newline at end of file diff --git a/kubejs/server_scripts/tfg/recipes.rocks.js b/kubejs/server_scripts/tfg/recipes.rocks.js index d8fce61c8..90a2eb47f 100644 --- a/kubejs/server_scripts/tfg/recipes.rocks.js +++ b/kubejs/server_scripts/tfg/recipes.rocks.js @@ -287,4 +287,4 @@ function registerTFGRockRecipes(event) { .EUt(GTValues.VA[GTValues.LV]) }) //#endregion -} \ No newline at end of file +} diff --git a/kubejs/server_scripts/vintage_improvements/recipes.js b/kubejs/server_scripts/vintage_improvements/recipes.js index 14ef74306..371ee10f7 100644 --- a/kubejs/server_scripts/vintage_improvements/recipes.js +++ b/kubejs/server_scripts/vintage_improvements/recipes.js @@ -293,6 +293,10 @@ function registerVintageImprovementsRecipes(event) { forEachMaterial(material => { + const ingotItem = ChemicalHelper.get(TagPrefix.ingot, material, 1); + if (ingotItem == null || ingotItem.hasTag('c:hidden_from_recipe_viewers')) + return; + // #region Coiling if (material.hasFlag(MaterialFlags.GENERATE_ROD) && material.hasFlag(MaterialFlags.GENERATE_SPRING_SMALL)) { @@ -627,6 +631,13 @@ function registerVintageImprovementsRecipes(event) { processingTime: 100 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER }).id(`tfg:vi/coiling/phantom_thread`) + event.custom({ + type: 'vintageimprovements:coiling', + ingredients: [{ item: 'firmalife:pineapple_fiber' }], + results: [{ item: 'firmalife:pineapple_yarn', count: 8 }], + processingTime: 100 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER + }).id(`tfg:vi/coiling/pineapple_yarn`) + event.custom({ type: 'vintageimprovements:coiling', ingredients: [ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1)], diff --git a/kubejs/startup_scripts/ae2/tag_prefixes.js b/kubejs/startup_scripts/ae2/tag_prefixes.js index 2c03f700b..31a6e4325 100644 --- a/kubejs/startup_scripts/ae2/tag_prefixes.js +++ b/kubejs/startup_scripts/ae2/tag_prefixes.js @@ -1,15 +1,15 @@ // priority: 0 const registerAE2TagPrefixes = (event) => { - const $AE_BLOCKS = Java.loadClass('appeng.core.definitions.AEBlocks'); const $AE_ITEMS = Java.loadClass('appeng.core.definitions.AEItems'); const Fluix = GTCEuAPI.materialManager.getMaterial('tfg:fluix') - TagPrefix.block.setIgnored(Fluix, $AE_BLOCKS.FLUIX_BLOCK); + // Blocks have to be handled in java because ae2 is weird + TagPrefix.dust.setIgnored(Fluix, $AE_ITEMS.FLUIX_DUST); TagPrefix.gem.setIgnored(Fluix, $AE_ITEMS.FLUIX_CRYSTAL); -; + TagPrefix.dust.setIgnored(GTMaterials.CertusQuartz, $AE_ITEMS.CERTUS_QUARTZ_DUST); TagPrefix.gem.setIgnored(GTMaterials.CertusQuartz, $AE_ITEMS.CERTUS_QUARTZ_CRYSTAL); diff --git a/kubejs/startup_scripts/create/constants.js b/kubejs/startup_scripts/create/constants.js index c78f93e53..b534cfb44 100644 --- a/kubejs/startup_scripts/create/constants.js +++ b/kubejs/startup_scripts/create/constants.js @@ -188,9 +188,6 @@ global.CREATE_DISABLED_ITEMS = [ // Blocks 'create:andesite_alloy_block', 'create:experience_block', - 'create:rose_quartz_block', - 'create:rose_quartz_tiles', - 'create:small_rose_quartz_tiles', // Other 'create:honey_bucket', @@ -205,7 +202,6 @@ global.CREATE_DISABLED_ITEMS = [ 'create:blaze_cake_base', 'create:sturdy_sheet', 'create:polished_rose_quartz', - 'create:rose_quartz', 'create:cinder_flour', 'create:dough', 'create:bar_of_chocolate', diff --git a/kubejs/startup_scripts/firmalife/constants.js b/kubejs/startup_scripts/firmalife/constants.js index e0e9b6220..6bc9a7428 100644 --- a/kubejs/startup_scripts/firmalife/constants.js +++ b/kubejs/startup_scripts/firmalife/constants.js @@ -84,6 +84,13 @@ global.FIRMALIFE_ORE_MATERIALS = [ 'chromite' ]; +global.FIRMALIFE_JAMS = [ + "fig", + "pineapple", + "red_grapes", + "white_grapes" +] + 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/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' }, ]; -global.FIRMALIFE_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/nixtamal', output: '2x firmalife:food/masa_flour', name: 'masa_flour' }, -]; - -global.FIRMALIFE_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '4x firmalife:food/barley_dough', name: 'firmalife_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '4x firmalife:food/maize_dough', name: 'firmalife_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '4x firmalife:food/oat_dough', name: 'firmalife_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '4x firmalife:food/rye_dough', name: 'firmalife_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '4x firmalife:food/rice_dough', name: 'firmalife_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '4x firmalife:food/wheat_dough', name: 'firmalife_wheat_dough' }, - { input: 'firmalife:food/masa_flour', output: '2x firmalife:food/masa', name: 'firmalife_masa' }, -]; - -global.FIRMALIFE_FURNACE_FLATBREAD_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_dough', output: 'firmalife:food/barley_flatbread', name: 'barley_flatbread' }, - { 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' }, -]; +global.FIRMALIFE_COOKING_RECIPE_COMPONENTS = [ + { 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' }, + { input: 'firmalife:food/raw_pizza', output: 'firmalife:food/cooked_pizza', name: 'cooked_pizza' }, + { input: 'firmalife:food/corn_tortilla', output: 'firmalife:food/taco_shell', name: 'taco_shell' }, + { input: 'firmalife:food/cookie_dough', output: 'firmalife:food/sugar_cookie', name: 'sugar_cookie' }, + { input: 'firmalife:food/chocolate_chip_cookie_dough', output: 'firmalife:food/chocolate_chip_cookie', name: 'chocolate_chip_cookie' }, + { input: 'firmalife:food/hardtack_dough', output: 'firmalife:food/hardtack', name: 'hardtack' }, + { input: 'firmalife:food/filled_pie', output: 'firmalife:food/cooked_pie', name: 'cooked_pie' }, + { input: 'firmalife:food/cocoa_beans', output: 'firmalife:food/roasted_cocoa_beans', name: 'roasted_cocoa_beans' }, + { 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' }, + { input: 'firmalife:food/bacon', output: 'firmalife:food/cooked_bacon', name: 'cooked_bacon' }, + { input: '#firmalife:foods/slices', output: 'firmalife:food/toast', name: 'toast' } +]; \ No newline at end of file diff --git a/kubejs/startup_scripts/gtceu/machines.js b/kubejs/startup_scripts/gtceu/machines.js index 936294408..21cb9ddfd 100644 --- a/kubejs/startup_scripts/gtceu/machines.js +++ b/kubejs/startup_scripts/gtceu/machines.js @@ -1,7 +1,5 @@ // priority: 0 -//#region Greenhouse - const registerGTCEuMachines = (event) => { 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 $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 event.create('nether_dome', 'multiblock') diff --git a/kubejs/startup_scripts/gtceu/materials.js b/kubejs/startup_scripts/gtceu/materials.js index 089d4e92f..08433c05d 100644 --- a/kubejs/startup_scripts/gtceu/materials.js +++ b/kubejs/startup_scripts/gtceu/materials.js @@ -280,7 +280,7 @@ const registerGTCEuMaterialModification = (event) => { GTMaterials.IronMagnetic.setMaterialARGB(0x503d32) GTMaterials.IronMagnetic.setMaterialSecondaryARGB(0x131212) GTMaterials.Zinc.setMaterialARGB(0xd6ffdc) - GTMaterials.Zinc.setMaterialSecondaryARGB(0x213b3f) + GTMaterials.Zinc.setMaterialSecondaryARGB(0xA3BE9E) GTMaterials.Graphite.setMaterialARGB(0x889BA8) GTMaterials.Graphite.setMaterialSecondaryARGB(0x30383E) GTMaterials.Amethyst.setMaterialARGB(0xCC9EF0) diff --git a/kubejs/startup_scripts/gtceu/recipe_types.js b/kubejs/startup_scripts/gtceu/recipe_types.js index 7ba54d0be..979ef3a46 100644 --- a/kubejs/startup_scripts/gtceu/recipe_types.js +++ b/kubejs/startup_scripts/gtceu/recipe_types.js @@ -1,13 +1,6 @@ // priority: 0 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') .category('nether_dome') .setEUIO('in') diff --git a/kubejs/startup_scripts/tfc/constants.js b/kubejs/startup_scripts/tfc/constants.js index ce425b1ff..d7f2c995e 100644 --- a/kubejs/startup_scripts/tfc/constants.js +++ b/kubejs/startup_scripts/tfc/constants.js @@ -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' }, ]; -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/bear', output: 'tfc:food/cooked_bear', name: 'cooked_bear' }, { 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' } ]; -global.TFC_QUERN_GRAIN_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley', output: 'tfc:food/barley_grain', name: 'barley_grain' }, - { input: 'tfc:food/maize', output: 'tfc:food/maize_grain', name: 'maize_grain' }, - { input: 'tfc:food/oat', output: 'tfc:food/oat_grain', name: 'oat_grain' }, - { input: 'tfc:food/rye', output: 'tfc:food/rye_grain', name: 'rye_grain' }, - { input: 'tfc:food/rice', output: 'tfc:food/rice_grain', name: 'rice_grain' }, - { input: 'tfc:food/wheat', output: 'tfc:food/wheat_grain', name: 'wheat_grain' }, -]; +global.TFC_GRAINS = [ + "barley", + "maize", + "oat", + "rye", + "rice", + "wheat", +] -global.TFC_QUERN_FLOUR_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_grain', output: '2x tfc:food/barley_flour', name: 'barley_flour' }, - { input: 'tfc:food/maize_grain', output: '2x tfc:food/maize_flour', name: 'maize_flour' }, - { input: 'tfc:food/oat_grain', output: '2x tfc:food/oat_flour', name: 'oat_flour' }, - { input: 'tfc:food/rye_grain', output: '2x tfc:food/rye_flour', name: 'rye_flour' }, - { input: 'tfc:food/rice_grain', output: '2x tfc:food/rice_flour', name: 'rice_flour' }, - { input: 'tfc:food/wheat_grain', output: '2x tfc:food/wheat_flour', name: 'wheat_flour' }, -]; - -global.TFC_MIXER_FLATBREAD_DOUGH_RECIPE_COMPONENTS = [ - { input: 'tfc:food/barley_flour', output: '2x tfc:food/barley_dough', name: 'tfc_barley_dough' }, - { input: 'tfc:food/maize_flour', output: '2x tfc:food/maize_dough', name: 'tfc_maize_dough' }, - { input: 'tfc:food/oat_flour', output: '2x tfc:food/oat_dough', name: 'tfc_oat_dough' }, - { input: 'tfc:food/rye_flour', output: '2x tfc:food/rye_dough', name: 'tfc_rye_dough' }, - { input: 'tfc:food/rice_flour', output: '2x tfc:food/rice_dough', name: 'tfc_rice_dough' }, - { input: 'tfc:food/wheat_flour', output: '2x tfc:food/wheat_dough', name: 'tfc_wheat_dough' }, -]; - -global.TFC_FURNACE_BREAD_RECIPE_COMPONENTS = [ - { input: 'firmalife:food/barley_dough', output: 'tfc:food/barley_bread', name: 'barley_bread' }, - { input: 'firmalife:food/maize_dough', output: 'tfc:food/maize_bread', name: 'maize_bread' }, - { input: 'firmalife:food/oat_dough', output: 'tfc:food/oat_bread', name: 'oat_bread' }, - { input: 'firmalife:food/rye_dough', output: 'tfc:food/rye_bread', name: 'rye_bread' }, - { 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_JAMS = [ + "blackberry", + "blueberry", + "bunchberry", + "cloudberry", + "cranberry", + "elderberry", + "gooseberry", + "raspberry", + "snowberry", + "strawberry", + "wintergreen_berry", + "banana", + "cherry", + "green_apple", + "lemon", + "olive", + "orange", + "peach", + "plum", + "red_apple", + "pumpkin_chunks", + "melon_slice", +] global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [ { 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: 'firmalife:yak_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 = [