diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b7423bf8..a68bab162 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,7 @@ - Added recipes for smoke bombs, pet treats, and disguise kits, and added swapper pearls to the loot tables of various endermen @Pyritie - Added a little saltpeter to cassiterite veins @Pyritie - Removed the cleanroom requirement for level emitters since they were also craftable in a crafting grid (#2529) @Jeuvke -- Added recipes for developing film in sealed barrels @Pyritie +- Overhauled photographic film development @Pyritie ### Bug fixes - Fix for food stacking everywhere! @Mqrius - Fixed the grappling hook crashing and sending you to the void if you use it while travelling between dimensions (#2514) @Mqrius diff --git a/config/ftbquests/quests/chapters/queststfg.snbt b/config/ftbquests/quests/chapters/queststfg.snbt index 2862604f9..7de9b687a 100644 --- a/config/ftbquests/quests/chapters/queststfg.snbt +++ b/config/ftbquests/quests/chapters/queststfg.snbt @@ -5,6 +5,14 @@ group: "19428C6E7A36D463" icon: "tfg:terra_firma_greg" id: "5DD2C08324B24805" + images: [{ + height: 2.0d + image: "tfg:textures/gui/tfg_logo_title_4181x688_with_shadow.png" + rotation: 0.0d + width: 12.15406976744186d + x: 0.0d + y: -3.0d + }] order_index: 0 quest_links: [ ] quests: [ diff --git a/config/ftbquests/quests/chapters/tips__tools.snbt b/config/ftbquests/quests/chapters/tips__tools.snbt index f23ab8152..61c9792cd 100644 --- a/config/ftbquests/quests/chapters/tips__tools.snbt +++ b/config/ftbquests/quests/chapters/tips__tools.snbt @@ -1882,12 +1882,12 @@ id: "15AD11C9C5249AAF" subtitle: "{quests.tfg_tips.camera_attachments.subtitle}" tasks: [{ - id: "79F9084E031CFAF3" + id: "4DD87BA6E5997784" item: { Count: 1 id: "ftbfiltersystem:smart_filter" tag: { - "ftbfiltersystem:filter": "or(item(minecraft:redstone_lamp)item(minecraft:spyglass))" + "ftbfiltersystem:filter": "or(item(minecraft:spyglass)item_tag(exposure:flashes))" } } title: "{quests.tfg_tips.camera_attachments.task}" diff --git a/kubejs/assets/emi/recipe/filters/categories.json b/kubejs/assets/emi/recipe/filters/categories.json index 3efe1f4e2..8f4beb6a2 100644 --- a/kubejs/assets/emi/recipe/filters/categories.json +++ b/kubejs/assets/emi/recipe/filters/categories.json @@ -84,6 +84,9 @@ { "id": "toomanyrecipeviewers:/create/potions" }, + { + "id": "toomanyrecipeviewers:/exposure/sequenced_black_and_white_film_developing" + }, { "id": "toomanyrecipeviewers:/exposure/sequenced_color_film_developing" }, diff --git a/kubejs/assets/tfg/lang/en_us.json b/kubejs/assets/tfg/lang/en_us.json index f69caba0a..ba39c38f2 100644 --- a/kubejs/assets/tfg/lang/en_us.json +++ b/kubejs/assets/tfg/lang/en_us.json @@ -711,6 +711,8 @@ "fluid.tfg.sulfur_fumes": "Dense Sulfuric Fumes", "fluid.tfg.geyser_slurry": "Super Heated Slurry", "fluid.tfg.cryogenized_fluix": "Cryogenized Fluix", + "fluid.tfg.bw_photographic_developer": "Black and White Photographic Developer", + "fluid.tfg.color_photographic_developer": "Color Photographic Developer", "item.tfg.antipoison_pill": "Antipoison Pill", "item.tfg.haste_pill": "Haste Pill", "item.tfg.night_vision_pill": "Night Vision Pill", @@ -1097,6 +1099,7 @@ "material.tfg.vulcanized_latex": "Vulcanized Latex", "material.tfg.fluix": "Fluix", "material.tfg.conifer_pitch": "Conifer Pitch", + "material.tfg.pyrogallol": "Pyrogallol", "material.gtceu.lactose": "Lactose", "material.tfg.gabbro": "Gabbro", "material.tfg.shale": "Shale", diff --git a/kubejs/server_scripts/exposure/recipes.js b/kubejs/server_scripts/exposure/recipes.js index 5e326c624..3bb130821 100644 --- a/kubejs/server_scripts/exposure/recipes.js +++ b/kubejs/server_scripts/exposure/recipes.js @@ -3,8 +3,12 @@ const registerExposureRecipes = (event) => { + const $ISPRecipeLogic = Java.loadClass("su.terrafirmagreg.core.common.data.tfgt.machine.trait.ISPOutputRecipeLogic") + event.remove({ id: 'exposure:sequenced_color_film_developing' }) + event.replaceInput({ id: 'exposure:interplanar_projector' }, 'minecraft:ender_eye', '#forge:foils/silver') + // Lightroom event.shaped('exposure:lightroom', [ 'AB', @@ -23,11 +27,11 @@ const registerExposureRecipes = (event) => { 'FDF' ], { A: 'minecraft:lever', - B: 'gtceu:wrought_iron_gear', + B: '#forge:small_gears', C: '#minecraft:wooden_buttons', D: '#forge:plates/wrought_iron', E: 'tfc:lens', - F: '#forge:screws/wrought_iron' + F: '#forge:screws/any_bronze' }).id('exposure:camera') // Album @@ -35,11 +39,11 @@ const registerExposureRecipes = (event) => { 'minecraft:writable_book', 'minecraft:paper', 'minecraft:paper' ]).id('exposure:album') - // Black and White Film + // Film event.shaped('exposure:black_and_white_film', [ 'ABB', 'CDD', - 'CEE' + ' EE' ], { A: '#forge:rings/wrought_iron', B: '#forge:dyes/white', @@ -48,16 +52,10 @@ const registerExposureRecipes = (event) => { E: 'tfc:food/dried_kelp', }).id('exposure:black_and_white_film') - event.recipes.tfc.barrel_sealed(8000) - .inputs('exposure:black_and_white_film', Fluid.of('minecraft:water', 250)) - .outputItem(TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt')) - .id('tfg:develop_black_and_white_film') - - // Colored Film event.shaped('exposure:color_film', [ 'ABB', 'CDD', - 'CEE' + ' EE' ], { A: '#forge:rings/wrought_iron', B: '#forge:dyes/blue', @@ -66,64 +64,97 @@ const registerExposureRecipes = (event) => { E: 'tfc:food/dried_kelp', }).id('exposure:color_film') - event.recipes.tfc.barrel_sealed(8000) - .inputs('exposure:color_film', Fluid.of('tfc:spring_water', 250)) + // Creating the developer + + // Pyrogallol + event.recipes.tfc.pot(['tfc:powder/saltpeter'], Fluid.of('tfc:tannin', 500), 30 * 20, 750) + .itemOutput('tfg:pyrogallol_dust') + .id('tfg:pot/tannin_to_pyrogallol_saltpeter') + + event.recipes.tfc.pot(['tfc:powder/soda_ash'], Fluid.of('tfc:tannin', 500), 30 * 20, 750) + .itemOutput('tfg:pyrogallol_dust') + .id('tfg:pot/tannin_to_pyrogallol_soda_ash') + + event.recipes.firmalife.vat() + .inputs('tfc:powder/saltpeter', Fluid.of('tfc:tannin', 500)) + .length(30 * 20) + .temperature(750) + .outputItem('tfg:pyrogallol_dust') + .id('tfg:vat/tannin_to_pyrogallol_saltpeter') + + event.recipes.firmalife.vat() + .inputs('tfc:powder/soda_ash', Fluid.of('tfc:tannin', 500)) + .length(30 * 20) + .temperature(750) + .outputItem('tfg:pyrogallol_dust') + .id('tfg:vat/tannin_to_soda_ash') + + event.recipes.gtceu.chemical_reactor('tfg:tannin_to_pyrogallol_saltpeter') + .itemInputs('tfc:powder/saltpeter') + .inputFluids(Fluid.of('tfc:tannin', 500)) + .itemOutputs('tfg:pyrogallol_dust') + .duration(200) + .EUt(7) + + event.recipes.gtceu.chemical_reactor('tfg:tannin_to_pyrogallol_soda_ash') + .itemInputs('tfc:powder/soda_ash') + .inputFluids(Fluid.of('tfc:tannin', 500)) + .itemOutputs('tfg:pyrogallol_dust') + .duration(200) + .EUt(7) + + // Developer + event.recipes.tfc.pot(['#forge:dusts/pyrogallol', 'tfc:powder/soda_ash', 'tfc:powder/sulfur', '#exposure:black_printing_dyes'], Fluid.of('tfc:lye', 1000), 30 * 20, 750) + .fluidOutput(Fluid.of('tfg:bw_photographic_developer', 1000)) + .id('tfg:pot/bw_developer') + + event.recipes.gtceu.mixer('tfg:bw_developer') + .itemInputs('#forge:dusts/pyrogallol', 'tfc:powder/soda_ash', 'tfc:powder/sulfur', '#exposure:black_printing_dyes') + .inputFluids(Fluid.of('tfc:lye', 1000)) + .outputFluids(Fluid.of('tfg:bw_photographic_developer', 1000)) + .duration(200) + .EUt(7) + + event.recipes.gtceu.mixer('tfg:color_developer') + .itemInputs('#forge:dusts/pyrogallol', 'tfc:powder/soda_ash', 'tfc:powder/sulfur', '#exposure:cyan_printing_dyes', '#exposure:yellow_printing_dyes', '#exposure:magenta_printing_dyes') + .inputFluids(Fluid.of('tfc:lye', 1000)) + .outputFluids(Fluid.of('tfg:color_photographic_developer', 1000)) + .duration(200) + .EUt(7) + + // Developing film + event.recipes.tfc.barrel_sealed(4000) + .inputs('exposure:black_and_white_film', Fluid.of('tfg:bw_photographic_developer', 250)) + .outputItem(TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass()) + .id('tfg:barrel/develop_black_and_white_film') + + event.recipes.gtceu.food_processor('black_and_white_film') + .itemInputs('exposure:black_and_white_film') + .inputFluids(Fluid.of('tfg:bw_photographic_developer', 250)) + .itemOutputs('exposure:developed_black_and_white_film') + .duration(60 * 20) + .EUt(2) + + $ISPRecipeLogic.RegisterRecipeData('food_processor/black_and_white_film', + [Ingredient.of('exposure:black_and_white_film')], + TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass(), + []) + + // Developing color film + event.recipes.tfc.barrel_sealed(4000) + .inputs('exposure:color_film', Fluid.of('tfg:color_photographic_developer', 250)) .outputItem(TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt')) - .id('tfg:develop_color_film') + .id('tfg:barrel/develop_color_film') - // Developed Black and White Film - event.custom({ - type: "exposure:film_developing", - film: { - item: "exposure:black_and_white_film" - }, - ingredients: [ - { - type: "tfc:fluid_item", - fluid_ingredient: { - ingredient: "minecraft:water", - amount: 1000 - } - }, - ], - result: { - item: "exposure:developed_black_and_white_film" - } - }).id('exposure:developing_black_and_white_film') + event.recipes.gtceu.food_processor('color_film') + .itemInputs('exposure:color_film') + .inputFluids(Fluid.of('tfg:color_photographic_developer', 250)) + .itemOutputs('exposure:developed_color_film') + .duration(60 * 20) + .EUt(2) - // Developed Color Film - event.custom({ - type: "exposure:film_developing", - film: { - item: "exposure:color_film" - }, - ingredients: [ - { - type: "tfc:fluid_item", - fluid_ingredient: { - ingredient: "tfc:spring_water", - amount: 1000 - } - }, - { - type: "tfc:fluid_item", - fluid_ingredient: { - ingredient: "tfc:spring_water", - amount: 1000 - } - }, - { - type: "tfc:fluid_item", - fluid_ingredient: { - ingredient: "tfc:spring_water", - amount: 1000 - } - }, - ], - result: { - item: "exposure:developed_color_film" - } - }).id('exposure:developing_color_film') - - event.replaceInput({ id: 'exposure:interplanar_projector' }, 'minecraft:ender_eye', '#forge:foils/silver') + $ISPRecipeLogic.RegisterRecipeData('food_processor/color_film', + [Ingredient.of('exposure:color_film')], + TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt').asCanonClass(), + []) } \ No newline at end of file diff --git a/kubejs/server_scripts/exposure/tags.js b/kubejs/server_scripts/exposure/tags.js index 80690c1fb..5e4b04c34 100644 --- a/kubejs/server_scripts/exposure/tags.js +++ b/kubejs/server_scripts/exposure/tags.js @@ -11,4 +11,8 @@ const registerExposureItemTags = (evt) => { evt.add('exposure:magenta_printing_dyes', '#forge:dyes/magenta') evt.add('exposure:photo_agers', '#forge:dyes/brown') + + evt.add('exposure:flashes', 'simplylight:illuminant_block') + evt.add('exposure:flashes', 'create:rose_quartz_lamp') + evt.add('exposure:flashes', 'gtceu:white_lamp') } \ No newline at end of file diff --git a/kubejs/startup_scripts/tfg/fluids.js b/kubejs/startup_scripts/tfg/fluids.js index ddf04bc53..3f9cadb31 100644 --- a/kubejs/startup_scripts/tfg/fluids.js +++ b/kubejs/startup_scripts/tfg/fluids.js @@ -3,12 +3,22 @@ const registerTFGFluids = (event) => { + event.create('tfg:bw_photographic_developer') + .thinTexture(0xa84d11) + .bucketColor(0xa84d11) + .noBlock() + + event.create('tfg:color_photographic_developer') + .thinTexture(0xba6900) + .bucketColor(0xba6900) + .noBlock() + // Moon event.create('tfg:cryogenized_fluix') .thickTexture(0xde8cfb) .bucketColor(0xde8cfb) - .luminosity(14) .temperature(10) + .noBlock() // Mars event.create('tfg:heavy_ammoniacal_water') diff --git a/kubejs/startup_scripts/tfg/primitive/materials.primitive.js b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js index c5230e941..9edbd241e 100644 --- a/kubejs/startup_scripts/tfg/primitive/materials.primitive.js +++ b/kubejs/startup_scripts/tfg/primitive/materials.primitive.js @@ -88,4 +88,11 @@ function registerTFGPrimitiveMaterials(event) { .color(0xEEB9AD) .secondaryColor(0xF6A797) .formula("Al2Si2O5(OH)4") + + // Film developing + event.create('tfg:pyrogallol') + .dust() + .color(0xf0ccb4) + .formula("C6H3(OH)3") + .iconSet('rough') } \ No newline at end of file