Finished Implementation, added to Field Guide

This commit is contained in:
Nebby_G 2025-01-20 14:29:42 -03:00
parent 68b08cddc3
commit 382fa8c4c5
8 changed files with 313 additions and 30 deletions

View file

@ -0,0 +1,156 @@
{
"name": "Papermaking",
"category": "tfc:mechanics",
"icon": "tfc:unrefined_paper",
"pages": [
{
"type": "patchouli:text",
"text": "$(thing)Paper$() is either made from the processed stalk of the $(l:mechanics/crops#papyrus)Papyrus$() crop, from $(l:mechanics/papermaking#parchment)Animal Hides$(), or from a lengthy process using specific types of Wood. Paper is useful for written materials like $(thing)Books$() and $(thing)Maps$()."
},
{
"type": "patchouli:crafting",
"recipe": "tfc:crafting/papyrus_strips",
"text": "Papyrus must first be cut into strips with a $(thing)Knife$()"
},
{
"type": "tfc:sealed_barrel_recipe",
"recipe": "tfc:barrel/soaked_papyrus_strip",
"text": "Then, papyrus strips are soaked in a $(l:mechanics/barrels)Barrel$() of $(thing)Water$()."
},
{
"type": "tfc:loom_recipe",
"recipe": "tfc:loom/unrefined_paper",
"text": "Then, soaked papyrus strips are woven together in a loom to make $(thing)Unrefined Paper$(). Finally, it must be placed on a log and $(l:mechanics/leather_making#scraping)Scraped$() to make $(thing)Paper$()."
},
{
"type": "patchouli:crafting",
"recipe": "tfc:crafting/vanilla/map",
"recipe2": "tfc:crafting/vanilla/name_tag"
},
{
"type": "patchouli:crafting",
"recipe": "minecraft:writable_book",
"recipe2": "minecraft:book"
},
{
"type": "patchouli:crafting",
"recipe": "tfc:crafting/wood/pine_lectern",
"recipe2": "tfc:crafting/wood/kapok_bookshelf"
},
{
"type": "patchouli:text",
"text": "Flip to the next page for information on papermaking via the parchment process."
},
{
"type": "patchouli:text",
"anchor": "parchment",
"text": "$(thing)Parchment Paper$() starts with a scraped hide. Review the $(l:mechanics/leather_making)leather making chapter$() to learn how to make it. Parchment requires treatment with a few different items. First, $(thing)Pumice$() is needed. Pumice is found on the ground near $(l:the_world/geology)Volcanoes$(), or from $(l:mechanics/sluices)Sluicing$() or $(l:mechanics/panning)Panning$() ore deposits with Andesite, Rhyolite, or Dacite in them.",
"title": "Parchment"
},
{
"type": "patchouli:multiblock",
"multiblock": {
"pattern": [
[
"X"
],
[
"0"
]
],
"mapping": {
"X": "tfc:groundcover/pumice"
}
},
"name": "Pumice",
"text": "A Pumice rock placed on the ground.",
"enable_visualize": false
},
{
"type": "patchouli:crafting",
"recipe": "tfc:crafting/large_treated_hide",
"text": "Crafting pumice, a hammer, and scraped hide gives sections of $(thing)Treated Hide$()."
},
{
"type": "patchouli:crafting",
"recipe": "tfc:crafting/parchment",
"text": "Treated hide, $(l:mechanics/glassworking#lime)lime powder$(), flour, and a fresh egg will complete the treatment process and yield usable paper."
},
{
"type": "patchouli:text",
"text": "$(thing)Creating Paper from Wood$() is an ancient process that requires processing of sturdy types of wood into sheets, which are broken down into a pulp, and then pressed, dried and scraped to make paper.$(br2)Note that softer types of wood are not suitable for making paper",
"title": "Paper from Wood"
},
{
"type": "patchouli:text",
"text": "First you need to find Hardwood:$(br2)Acacia$(br)Ash$(br)Aspen$(br)Birch$(br)Blackwood$(br)Chestnut$(br)Hickory$(br)Maple$(br)Oak$(br)Rosewood$(br)Sycamore"
},
{
"type": "patchouli:spotlight",
"title": "Stripped Hardwood",
"item": {"tag": "tfg:stripped_hardwood"},
"text": "The process begins by stripping the $(thing)Hardwood$()'s bark off to expose the internal fibers of the log, You can strip the log by placing it down and right clicking it with an axe"
},
{
"type": "patchouli:crafting",
"title": "Hardwood Strip",
"recipe": "tfg:crafting/strip_hardwood",
"text": "Next, the stripped wood is shaven with an axe to obtain $(item)Hardwood Strips$(). This can be done using an Axe or more sophisticated methods"
},
{
"type": "tfc:sealed_barrel_recipe",
"title": "Soaked Hardwood Strip",
"recipe": "tfg:barrel/soak_hardwood_strip",
"text": "Then, the individual strips are soaked in a $(l:mechanics/barrels)Barrel$() of $(thing)Water$(). This $(thing)debilitates the structural integrity$() of the $(thing)wood$() so it can be $(thing)broken down further$()"
},
{
"type": "tfc:quern_recipe",
"recipe": "tfg:quern/soaked_hardwood_strip",
"title": "Hardwood Pulp",
"text": "Afterwards, utilize the $(l:mechanics/quern)Quern$() to break down the soaked strips into $(item)Hardwood Pulp$()"
},
{
"type": "patchouli:crafting",
"recipe": "gtceu:shaped/small_dust_assembling_hardwood",
"title": "Piling up the Pulp",
"text": "While the quern gives you small piles of pulp, you'll want to combine them together in a $(thing)Workbench. $(bold)More sophisticated methods of crushing the strips yield higher amounts of pulp$()"
},
{
"type": "patchouli:spotlight",
"item": "gtceu:thermochemically_treated_hardwood_dust",
"title": "Breaking down the Pulp",
"text": "Before the pulp can be processed further into paper, it needs to be broken down further by $(l:firmalife/oven_appliances#vat)Boiling it with Lye in a Vat$(). At least 200 Milibuckets of Lye must be present in the vat for the process to complete."
},
{
"type": "patchouli:empty"
},
{
"type": "patchouli:spotlight",
"item": "tfg:soaked_unrefined_paper",
"title": "Pressing the Pulp",
"text": "After broken down by boiling it with Lye, the $(item)Thermochemically Treated Hardwood Pulp$() can be pressed down into a sheet of $(item)Soaked Unrefined Paper$()"
},
{
"type": "tfc:anvil_recipe",
"recipe": "tfg:anvil/soaked_unrefined_paper",
"text": "You can utilize an $(l:mechanics/anvils)Anvil$() to beat down the pulp into a sheet"
},
{
"type": "patchouli:spotlight",
"title": "Stomping in Barrel",
"item": {"tag": "firmalife:stomping_barrels"},
"text": "Alternatively, you can stomp the Thermochemically Treated Hardwood Pulp in a $(l:firmalife/wine)Stomping Barrel$()"
},
{
"type": "tfc:drying_recipe",
"recipe": "tfg:drying/unrefined_paper",
"text": "The final step is $(l:firmalife/drying)Drying$() the $(item)Soaked Unrefined Paper$() into $(item)Unrefined Paper$(), Which then can be Scraped into $(item)Paper$() as shown before."
},
{
"type": "patchouli:text",
"title": "Cutting Steps...?",
"text": "Advancing in the Tech-Tree will allow you to create paper from wood with less overall steps, check $(thing)EMI$() for the different approaches you can take for making paper with wood."
}
],
"read_by_default": true
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 968 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

View file

@ -1,38 +1,12 @@
// priority: 0
const registerGTCEURecipes = (event) => {
//#region Hardwood Dust from Hardwood
//Lathe - Replace regular logs tag with softwood tag
event.replaceInput({id: 'gtceu:lathe/lathe_logs'}, '#minecraft:logs', '#tfg:softwood')
//Create identical lathe recipe for hardwood
event.recipes.gtceu.lathe('lathe_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('4x gtceu:long_wood_rod', '2x gtceu:hardwood_dust')
.duration(160)
.EUt(7)
//Replace any recipe that outputs wood dust to use hardwood dust if it's ID string contains the name of one of the hardwood types.
//This absolutely fuckin sucks but it works
event.forEachRecipe({output: 'gtceu:wood_dust'}, r =>{
global.TFC_HARDWOOD_TYPES.forEach(hardwoodType =>
{
if(r.id.toString().includes(hardwoodType))
{
r.replaceOutput('gtceu:wood_dust', 'gtceu:hardwood_dust')
r.replaceOutput('gtceu:small_wood_dust', 'gtceu:small_hardwood_dust')
r.replaceOutput('gtceu:tiny_wood_dust', 'gtceu_tiny_hardwood_dust')
return;
}
})
})
//#region Выход: Удобрение
// В обычном миксере
event.recipes.gtceu.mixer('fertilizer')
.itemInputs(
'#tfc:dirt',
'2x #forge:dusts/wood',
'2x #tfg:wood_dusts',
'4x #forge:sand'
)
.circuit(1)
@ -45,7 +19,7 @@ const registerGTCEURecipes = (event) => {
event.recipes.gtceu.create_mixer('fertilizer')
.itemInputs(
'#tfc:dirt',
'2x #forge:dusts/wood',
'2x #tfg:wood_dusts',
'4x #forge:sand'
)
.circuit(1)

View file

@ -26,6 +26,7 @@ ServerEvents.tags('item', event => {
registerSophisticatedBackpacksItemTags(event)
registerTFCAmbientalItemTags(event)
registerTFCItemTags(event)
registerTFGItemTags(event)
})
/**

View file

@ -2460,7 +2460,7 @@ const registerTFCRecipes = (event) => {
event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` })
// Бревна -> Пиломатериалы
generateCutterRecipe(event, `#tfc:${wood}_logs`, null, `16x tfc:wood/lumber/${wood}`, 400, 10, `${wood}_lumber_from_log`)
generateCutterRecipe(event, `#tfc:${wood}_logs`, 1, `16x tfc:wood/lumber/${wood}`, 400, 10, `${wood}_lumber_from_log`)
// Доски -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}`, null, `4x tfc:wood/lumber/${wood}`, 400, 10, `${wood}_lumber_from_planks`)
@ -3579,6 +3579,15 @@ const registerTFCRecipes = (event) => {
.duration(20)
.EUt(7)
}
//#endregion
//More accesible solar drier
event.replaceInput({id: 'firmalife:crafting/solar_drier'}, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod')
//Wood ash
event.blasting('tfc:powder/wood_ash', 'tfc:powder/charcoal')
.id('blast_charcoal_powder')
//Lye in mixer
generateMixerRecipe(event, 'tfc:powder/wood_ash', Fluid.of('minecraft:water', 200), [], null, Fluid.of('tfc:lye', 200), 100, 2, 64, 'lye_in_mixer')
}

View file

@ -1,4 +1,135 @@
const registerTFGRecipes = (event) =>
{
var registerVatRecipe = (id, inputItem, fluid, fluidAmount, output) =>
{
event.custom({
"type": "firmalife:vat",
"input_item": {
"ingredient": {
"item": inputItem
}
},
"input_fluid": {
"ingredient": fluid,
"amount": fluidAmount
},
"output_item": {
"item": output
}
}).id(id)
}
//remove chemical bath recipe
event.remove({id: 'gtceu:chemical_bath/paper_from_wood_dust'})
event.remove({id: 'gtceu:chemical_bath/paper_from_wood_dust_distilled'})
//Lathe - Replace regular logs tag with softwood tag
event.replaceInput({id: 'gtceu:lathe/lathe_logs'}, '#minecraft:logs', '#tfg:softwood')
//Create identical lathe recipe for hardwood
event.recipes.gtceu.lathe('lathe_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('4x gtceu:long_wood_rod', '2x gtceu:hardwood_dust')
.duration(160)
.EUt(7)
//Replace macerate logs into macerate softwood logs
event.replaceInput({id: 'gtceu:macerator/macerate_logs'}, '#minecraft:logs', '#tfg:softwood')
//Create identical macerator recipe for hardwood
event.recipes.gtceu.macerator('macerate_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('6x gtceu:hardwood_dust')
.chancedOutput('gtceu:hardwood_dust', 8000, 680)
.duration(70)
.EUt(2)
//Replace any recipe that outputs wood dust to use hardwood dust if it's ID string contains the name of one of the hardwood types.
//This absolutely fuckin sucks but it works
event.forEachRecipe({output: 'gtceu:wood_dust'}, r =>{
global.TFC_HARDWOOD_TYPES.forEach(hardwoodType =>
{
if(r.id.toString().includes(hardwoodType))
{
r.replaceOutput('gtceu:wood_dust', 'gtceu:hardwood_dust')
r.replaceOutput('gtceu:small_wood_dust', 'gtceu:small_hardwood_dust')
r.replaceOutput('gtceu:tiny_wood_dust', 'gtceu_tiny_hardwood_dust')
return;
}
})
})
//Replace any input that uses softwood dust to use our custom tag (we cant add it to the forge tag because it will literally fuck everything up by making softwood pulp obtainable using hardwood pulp)
event.replaceInput([
{not:{output: 'gtceu:small_wood_dust'}},
{not:{output: 'gtceu:tiny_wood_dust'}}
], 'gtceu:wood_dust', '#tfg:wood_dusts')
//Craft hardwood strips
event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless('4x tfg:hardwood_strip', ['#minecraft:axes', '#tfg:stripped_hardwood']))
.id('tfg:crafting/strip_hardwood')
generateCutterRecipe(event, `#tfg:hardwood`, 2, `8x tfg:hardwood_strip`, 200, 6, 'cutter/strip_hardwood')
//Soak hardwood strips
event.recipes.tfc.barrel_sealed('12000')
.inputs('tfg:hardwood_strip', TFC.fluidStackIngredient('#tfc:water', 100))
.outputItem('tfg:soaked_hardwood_strip')
.id('tfg:barrel/soak_hardwood_strip')
//Create Hardwood Dust using Quern and Millstone/Crushing Wheels
event.recipes.createMilling(['3x gtceu:small_hardwood_dust', Item.of('gtceu:small_hardwood_dust').withChance(0.5)], 'tfg:soaked_hardwood_strip')
.processingTime(100)
.id('tfg:mill/mill_soaked_hardwood_strip')
event.recipes.gtceu.macerator('tfg:macerator/macerate_hardwood_strips')
.itemInputs('#tfg:hardwood_strips')
.itemOutputs('gtceu:hardwood_dust')
.duration(50)
.EUt(2)
event.recipes.tfc.quern('2x gtceu:small_hardwood_dust', 'tfg:soaked_hardwood_strip')
.id('tfg:quern/soaked_hardwood_strip')
//Cook hardwood dust in lye
registerVatRecipe('tfg:vat/thermochemically_treat_hardwood_dust', 'gtceu:hardwood_dust', 'tfc:lye', 300, 'gtceu:thermochemically_treated_hardwood_dust')
registerVatRecipe('tfg:vat/thermochemically_treat_small_hardwood_dust', 'gtceu:small_hardwood_dust', 'tfc:lye', 75, 'gtceu:small_thermochemically_treated_hardwood_dust')
registerVatRecipe('tfg:vat/thermochemically_treat_tiny_hardwood_dust', 'gtceu:tiny_hardwood_dust', 'tfc:lye', 33, 'gtceu:tiny_thermochemically_treated_hardwood_dust')
generateMixerRecipe(event, 'gtceu:hardwood_dust', Fluid.of('tfc:lye', 150), 'gtceu:thermochemically_treated_hardwood_dust', null, [], 150, 4, 64, 'tfg:mixer/mix_hardwood_dust_with_lye')
generateMixerRecipe(event, 'gtceu:small_hardwood_dust', Fluid.of('tfc:lye', 37), 'gtceu:small_thermochemically_treated_hardwood_dust', null, [], 100, 3, 64, 'tfg:mixer/mix_small_hardwood_dust_with_lye')
generateMixerRecipe(event, 'gtceu:tiny_hardwood_dust', Fluid.of('tfc:lye', 16), 'gtceu:tiny_thermochemically_treated_hardwood_dust', null, [], 50, 2, 64, 'tfg:mixer/mix_tiny_hardwood_dust_with_lye')
//Beat thermochemically treated hardwood dust into soaked unrefined paper
event.recipes.tfc.anvil('tfg:soaked_unrefined_paper', 'gtceu:thermochemically_treated_hardwood_dust', ['hit_last', 'hit_last', 'hit_last'])
.id('tfg:anvil/soaked_unrefined_paper')
event.recipes.createPressing(Item.of('tfg:soaked_unrefined_paper').withChance(0.8), 'gtceu:thermochemically_treated_hardwood_dust')
.id('tfg:pressing/soaked_unrefined_paper')
event.custom({
type: "firmalife:stomping",
ingredient: {
item: "gtceu:thermochemically_treated_hardwood_dust"
},
result:{
item: 'tfg:soaked_unrefined_paper'
},
input_texture: 'tfg:blocks/thermochemically_treated_hardwood_dust',
output_texture: 'tfg:blocks/soaked_unrefined_paper',
sound: 'minecraft:entity.slime.squish'
}).id('tfg:stomping/soaked_unrefined_paper')
//Dry the soaked unrefined paper
event.recipes.firmalife.drying('tfc:unrefined_paper', 'tfg:soaked_unrefined_paper')
.id('tfg:drying/unrefined_paper')
//alternatively, just put the thermochemically treated hardwood dust inside a forge hamemr
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_thermochemically_treated_hardwood_dust')
.itemInputs('gtceu:thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(20)
.EUt(4)
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_small_thermochemically_treated_hardwood_dust')
.itemInputs('4x gtceu:small_thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(30)
.EUt(4)
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_tiny_thermochemically_treated_hardwood_dust')
.itemInputs('9x gtceu:tiny_thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(40)
.EUt(4)
}

View file

@ -0,0 +1,12 @@
const registerTFGItemTags = (event) =>
{
event.add('tfg:hardwood_strips', 'tfg:hardwood_strip')
event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip')
//Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok.
event.add('tfg:wood_dusts', 'gtceu:hardwood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust')
event.add('tfg:wood_dusts', 'gtceu:wood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust')
}