big refactor of a lot of the recipe files!

This commit is contained in:
Pyritie 2025-12-02 19:12:36 +00:00
parent b09b3215a3
commit 1545f19ce6
103 changed files with 7701 additions and 7640 deletions

View file

@ -0,0 +1,93 @@
const fish = [
'cod',
'crappie',
'jellyfish',
'lake_trout',
'largemouth_bass',
'rainbow_trout',
'salmon',
'smallmouth_bass',
'tropical_fish',
'bluegill'
];
const shellfish = [
'lobster',
'isopod',
'crayfish'
];
//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier.
const tiers = [
'wood',
'brass',
'rose_gold',
'sterling_silver',
'invar',
'tin_alloy',
'cupronickel',
'magnalium'
];
//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item.
tiers.forEach(tier => {
fish.forEach(fish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== `tfc:${fish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give(`tfc:food/${fish}`)
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Shellfish Exception
shellfish.forEach(shellfish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== `tfc:${shellfish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('tfc:food/shellfish')
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Pufferfish Exception
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== 'tfc:pufferfish') return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('minecraft:pufferfish')
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})

View file

@ -0,0 +1,100 @@
//Pills & Tablets
const pill_event = [
'haste',
'luck',
'night_vision',
'poison',
'regeneration',
'slowness',
'speed',
'water_breathing',
'weakness',
];
pill_event.forEach(pill_event => {
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${pill_event}_pill`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${pill_event}_tablet`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:antipoison_pill`) return
item.count--
player.addItemCooldown(item, 50)
event.player.removeEffect('minecraft:poison')
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:antipoison_tablet`) return
item.count--
player.addItemCooldown(item, 50)
event.player.removeEffect('minecraft:poison')
event.player.removeEffect('minecraft:wither')
event.player.removeEffect('minecraft:weakness')
event.player.removeEffect('minecraft:slowness')
event.player.removeEffect('minecraft:mining_fatigue')
event.player.removeEffect('minecraft:nausea')
event.player.removeEffect('minecraft:blindness')
event.player.removeEffect('minecraft:hunger')
event.player.removeEffect('minecraft:bad_omen')
event.player.removeEffect('minecraft:darkness')
event.player.removeEffect('minecraft:unluck')
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
//salvos
const salvo_event = [
'fire_resistance',
'invisibility',
'luck',
'resistance',
];
salvo_event.forEach(salvo_event => {
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${salvo_event}_salvo`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:absorption_salvo`) return
item.count--
player.addItemCooldown(item, 200)
server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:instant_health_salvo`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});

View file

@ -0,0 +1,75 @@
"use strict";
function registerTFGArrowRecipes(event) {
// Arrow Parts
event.recipes.tfc.knapping(
'4x tfg:flint_arrow_head',
'tfg:flint',
[
' XXX',
' XXXX',
'XXXXX',
' XXX ',
' X '
]
).outsideSlotRequired(false)
.id('tfg:knapping/flint_arrow_head')
event.recipes.gtceu.assembler('tfg:assembler/flint_arrow_head')
.itemInputs('1x minecraft:flint')
.itemOutputs('4x tfg:flint_arrow_head')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('4x tfg:fletching', [
'minecraft:feather',
'#forge:tools/knives'
]).id('tfg:shapeless/fletching'))
event.recipes.gtceu.assembler('tfg:assembler/fletching')
.itemInputs('1x minecraft:feather')
.itemOutputs('4x tfg:fletching')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.shaped('4x minecraft:arrow', [
' A ',
' B ',
' C '
], {
A: 'tfg:flint_arrow_head',
B: '#forge:rods/wooden',
C: 'tfg:fletching'
}).id('tfg:shaped/arrow')
// Wraptor feathers
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('4x tfg:fletching', [
'tfg:wraptor_wool',
'#forge:tools/knives'
]).id('tfg:shapeless/wraptor_feather_fletching'))
event.recipes.gtceu.assembler('tfg:assembler/wraptor_feather_fletching')
.itemInputs('1x tfg:wraptor_wool')
.itemOutputs('4x tfg:fletching')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
// Glider feathers
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('4x tfg:fletching', [
'wan_ancient_beasts:glider_feather',
'#forge:tools/knives'
]).id('tfg:shapeless/glider_feather_fletching'))
event.recipes.gtceu.assembler('tfg:assembler/glider_feather_fletching')
.itemInputs('1x wan_ancient_beasts:glider_feather')
.itemOutputs('4x tfg:fletching')
.duration(20)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
}

View file

@ -0,0 +1,64 @@
"use strict";
function registerTFGBasketRecipes(event) {
event.shaped('tfg:harvest_basket', [
'BDB',
'ACA',
'AAA'
], {
A: 'tfg:soaked_hardwood_strip',
B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1),
C: 'tfc:glue',
D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
}).id('tfg:shaped/harvest_basket_from_wood')
event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_wood')
.itemInputs(
'5x tfg:soaked_hardwood_strip',
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2),
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
)
.inputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('tfg:harvest_basket')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.shaped('tfg:harvest_basket', [
'BDB',
'ACA',
'AAA'
], {
A: 'tfc:soaked_papyrus_strip',
B: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 1),
C: 'tfc:glue',
D: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
}).id('tfg:shaped/harvest_basket_from_papyrus')
event.recipes.gtceu.assembler('tfg:assembler/harvest_basket_from_papyrus')
.itemInputs(
'5x tfc:soaked_papyrus_strip',
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.SterlingSilver, 2),
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TreatedWood, 1)
)
.inputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('tfg:harvest_basket')
.circuit(2)
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:assembler/aluminium_harvest_basket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 3),
ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.rodLong,
GTMaterials.Aluminium, 1)
)
.inputFluids(Fluid.of('gtceu:cobalt_brass', 144))
.itemOutputs('tfg:aluminium_harvest_basket')
.duration(200)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true)
}

View file

@ -0,0 +1,144 @@
"use strict";
function registerTFGClayRecipes(event) {
event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible')
event.shaped('minecraft:clay', [
'AA',
'AA'
], {
A: 'minecraft:clay_ball'
}).id('tfg:shaped/clay_balls_to_block')
event.shapeless('4x minecraft:clay_ball', ['minecraft:clay'])
.id('tfg:shapeless/clay_block_to_balls')
global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => {
event.smelting(element.output, element.input)
.id(`tfg:smelting/${element.name}`)
})
global.MINECRAFT_DYE_NAMES.forEach(dye => {
event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`)
.id(`tfg:smelting/${dye}_glazed_vessel`)
event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`)
.id(`tfg:smelting/${dye}_large_vessel`)
})
for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i];
event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.circuit(i)
.itemOutputs(element.output)
.duration(450)
.EUt(2)
}
for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i];
event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.circuit(i)
.itemOutputs(element.output)
.duration(450)
.EUt(2)
}
event.recipes.gtceu.extruder('tfg:unfired_clay_brick')
.itemInputs('minecraft:clay_ball')
.notConsumable('gtceu:ingot_extruder_mold')
.itemOutputs('tfc:ceramic/unfired_brick')
.duration(20)
.EUt(2)
event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick')
.itemInputs('tfc:fire_clay')
.notConsumable('gtceu:ingot_extruder_mold')
.itemOutputs('tfc:ceramic/unfired_fire_brick')
.duration(20)
.EUt(2)
// Kaolinite Clay - regular smelting recipes can't have multiple inputs
event.recipes.gtceu.alloy_smelter('tfg:kaolinite')
.itemInputs('tfc:kaolin_clay')
.circuit(1)
.chancedOutput('tfc:powder/kaolinite', 2000, 0)
.duration(100)
.EUt(16)
// Fire Clay
event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay')
.itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay')
.itemOutputs('2x tfc:fire_clay')
.duration(600)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin')
.itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite')
.itemOutputs('tfc:kaolin_clay')
.duration(600)
.EUt(GTValues.VA[GTValues.ULV])
// Compressed Coke Clay
event.shaped('gtceu:compressed_coke_clay', [
'AAA',
'BCB',
'BBB'
], {
A: 'minecraft:clay_ball',
B: '#minecraft:sand',
C: 'gtceu:brick_wooden_form'
}).replaceIngredient('gtceu:brick_wooden_form', 'gtceu:brick_wooden_form').id('gtceu:shaped/compressed_coke_clay')
// Coke Oven Brick
event.recipes.tfc.heating('gtceu:compressed_coke_clay', 1399)
.resultItem('gtceu:coke_oven_brick')
.id('tfg:heating/coke_oven_bricks')
event.recipes.gtceu.alloy_smelter('gtceu:coke_oven_brick')
.itemInputs('3x #minecraft:sand', '2x minecraft:clay_ball')
.itemOutputs('gtceu:coke_oven_brick')
.duration(7.5 * 20)
.EUt(GTValues.VA[GTValues.ULV])
// Ceramic Recycling
event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust')
.itemInputs('firmalife:pottery_sherd')
.itemOutputs('#forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:ceramic_molds')
.itemInputs('#tfc:fired_molds')
.itemOutputs('2x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:large_vessels')
.itemInputs('#tfc:fired_large_vessels')
.itemOutputs('5x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:casting_channel')
.itemInputs('tfcchannelcasting:channel')
.itemOutputs('1x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:mold_table')
.itemInputs('tfcchannelcasting:mold_table')
.itemOutputs('5x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
}

View file

@ -0,0 +1,263 @@
"use strict";
function registerTFGClothRecipes(event) {
//Cloth & String
event.recipes.gtceu.wiremill('tfg:wiremill/phantom_thread')
.itemInputs('1x minecraft:phantom_membrane')
.itemOutputs('16x tfg:phantom_thread')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.wiremill('tfg:wiremill/polycaprolactam_string')
.itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Polycaprolactam, 1))
.itemOutputs('32x tfg:polycaprolactam_string')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:assembler/phantom_silk')
.itemInputs('16x tfg:phantom_thread')
.itemOutputs('1x tfg:phantom_silk')
.duration(100)
.circuit(3)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:assembler/polycaprolactam_fabric')
.itemInputs('16x tfg:polycaprolactam_string')
.itemOutputs('1x tfg:polycaprolactam_fabric')
.duration(100)
.circuit(3)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('tfg:chemical_bath/bleaching/polycaprolactam_string')
.itemInputs('tfg:polycaprolactam_string')
.inputFluids(Fluid.of('gtceu:chlorine', 16))
.itemOutputs('minecraft:string')
.duration(80)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.CHEM_DYES)
event.recipes.tfc.loom(
'1x tfg:phantom_silk',
'16x tfg:phantom_thread',
8,
'tfg:block/phantom_silk_block'
)
event.recipes.tfc.loom(
'1x tfg:polycaprolactam_fabric',
'16x tfg:polycaprolactam_string',
8,
'tfg:block/polycaprolactam_fabric_block'
)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('16x tfg:phantom_thread', [
'minecraft:phantom_membrane',
'tfc:spindle'
]).id('tfg:shapeless/phantom_thread'))
// Wool Yarn
event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn')
.itemInputs('tfc:wool')
.itemOutputs('8x tfc:wool_yarn')
.duration(100)
.EUt(4)
// Burlap Cloth
event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth')
.itemInputs('12x tfc:jute_fiber')
.circuit(0)
.itemOutputs('tfc:burlap_cloth')
.duration(100)
.EUt(4)
// Silk Cloth
event.recipes.gtceu.assembler('tfg:tfc/silk_cloth')
.itemInputs('24x minecraft:string')
.circuit(0)
.itemOutputs('tfc:silk_cloth')
.duration(100)
.EUt(4)
// Wool Cloth
event.recipes.gtceu.assembler('tfg:tfc/wool_cloth')
.itemInputs('16x tfc:wool_yarn')
.circuit(0)
.itemOutputs('tfc:wool_cloth')
.duration(100)
.EUt(4)
// Cloths to Wool
event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool')
.itemInputs('4x #tfc:sewing_light_cloth')
.itemOutputs('8x minecraft:white_wool')
.circuit(16)
.duration(100)
.EUt(4)
// Wool Yarn
event.recipes.gtceu.macerator('macerate_wool')
.itemInputs('#minecraft:wool')
.itemOutputs('tfc:wool_yarn')
.chancedOutput('tfc:wool_yarn', 9000, 0)
.chancedOutput('tfc:wool_yarn', 5000, 0)
.chancedOutput('tfc:wool_yarn', 2000, 0)
.duration(200)
.EUt(2)
// Jute Fiber
generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200",
'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber')
//#region flax stuff
event.shapeless('1x tfg:flax_bundle', ['9x tfg:flax_product'])
event.recipes.gtceu.packer('tfg:packer/flax_bundle')
.itemInputs('9x tfg:flax_product')
.itemOutputs('tfg:flax_bundle')
.duration('100')
.EUt(GTValues.VA[GTValues.ULV])
event.shapeless('1x tfg:bundled_scraped_flax', ['9x tfg:flax_waste'])
event.recipes.gtceu.packer('tfg:packer/bundled_scraped_flax')
.itemInputs('9x tfg:flax_waste')
.itemOutputs('tfg:bundled_scraped_flax')
.duration('100')
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.scraping(
'tfg:flax_waste',
'tfg:flax_product',
'tfg:item/flax_waste',
'tfg:item/flax_product',
'2x tfg:flax_line'
).id('tfg:scraping/flax_line')
event.recipes.tfc.scraping(
'tfg:bundled_scraped_flax',
'tfg:flax_bundle',
'tfg:item/bundled_scraped_flax',
'tfg:item/flax_bundle',
'18x tfg:flax_line'
).id('tfg:scraping/flax_line_from_bundle')
event.recipes.tfc.scraping(
'tfc:groundcover/humus',
'tfg:flax_waste',
'tfc:item/groundcover/humus',
'tfg:item/flax_waste',
'tfg:flax_tow'
).id('tfg:scraping/flax_tow')
event.recipes.tfc.scraping(
'9x tfc:groundcover/humus',
'tfg:bundled_scraped_flax',
'tfc:item/groundcover/humus',
'tfg:item/bundled_scraped_flax',
'9x tfg:flax_tow'
).id('tfg:scraping/flax_tow_from_pile')
event.recipes.gtceu.cutter('tfg:flax_line_in_cutter')
.itemInputs('tfg:flax_product')
.itemOutputs('2x tfg:flax_line', 'tfg:flax_waste')
.duration(60)
.EUt(2)
event.recipes.gtceu.cutter('tfg:flax_line_from_bundle_in_cutter')
.itemInputs('tfg:flax_bundle')
.itemOutputs('18x tfg:flax_line', 'tfg:bundled_scraped_flax')
.duration(540)
.EUt(2)
event.recipes.gtceu.cutter('tfg:flax_tow_in_cutter')
.itemInputs('tfg:flax_waste')
.itemOutputs('1x tfg:flax_tow', '1x tfc:groundcover/humus')
.duration(60)
.EUt(2)
event.recipes.gtceu.cutter('tfg:flax_tow_from_bundle_in_cutter')
.itemInputs('tfg:bundled_scraped_flax')
.itemOutputs('9x tfg:flax_tow', '9x tfc:groundcover/humus')
.duration(540)
.EUt(2)
event.recipes.gtceu.centrifuge('tfg:flax_product')
.itemInputs('tfg:flax_product')
.itemOutputs('2x tfg:flax_line', 'tfg:flax_tow', 'tfc:groundcover/humus')
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.centrifuge('tfg:flax_product_from_bundle')
.itemInputs('tfg:flax_bundle')
.itemOutputs('18x tfg:flax_line', '9x tfg:flax_tow', '9x tfc:groundcover/humus')
.duration(1800)
.EUt(GTValues.VA[GTValues.LV])
event.custom({
type: 'vintageimprovements:centrifugation',
ingredients: [{ item: 'tfg:flax_product' }],
results: [{ item: 'tfg:flax_line', count: 2 }, { item: 'tfg:flax_tow' }, { item: 'tfc:groundcover/humus' }],
processingTime: 40 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id('tfg:vi_seperate_flax')
event.custom({
type: 'vintageimprovements:centrifugation',
ingredients: [{ item: 'tfg:flax_bundle' }],
results: [{ item: 'tfg:flax_line', count: 18 }, { item: 'tfg:flax_tow', count: 9 }, { item: 'tfc:groundcover/humus', count: 9 }],
processingTime: 360 * 90 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id('tfg:vi_seperate_flax_from_bundle')
// #endregion
//#region flax line spinning
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('4x tfg:linen_thread', [
'tfg:flax_line',
'tfc:spindle'
]).id('tfg:shapeless/linen_thread')
)
event.custom({
type: 'vintageimprovements:coiling',
ingredients: [{ item: 'tfg:flax_line' }],
results: [{ item: 'tfg:linen_thread', count: 4 }],
processingTime: 2 * 10 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id('tfg:vi_spin_flax_line')
event.recipes.gtceu.wiremill('tfg:spin_flax_line')
.itemInputs('tfg:flax_line')
.itemOutputs('4x tfg:linen_thread')
.duration(80)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region flax looming
event.recipes.tfc.loom(
'1x tfg:linen_cloth',
'16x tfg:linen_thread',
8,
'tfc:block/burlap'
)
event.recipes.tfc.loom(
'1x tfc:burlap_cloth',
'16x tfg:flax_tow',
12,
'tfc:block/burlap'
)
event.recipes.gtceu.assembler('tfg:assembler/linen_cloth')
.itemInputs('16x tfg:linen_thread')
.circuit(10)
.itemOutputs('tfg:linen_cloth')
.duration(100)
.EUt(4)
event.recipes.gtceu.assembler('tfg:assembler/flax_burlap')
.itemInputs('16x tfg:flax_tow')
.circuit(10)
.itemOutputs('tfc:burlap_cloth')
.duration(100)
.EUt(4)
//#endregion
}

View file

@ -0,0 +1,194 @@
"use strict";
function registerTFGCompostRecipes(event) {
//#region Fertiliser
event.recipes.gtceu.mixer('tfg:fertilizer')
.itemInputs(
'#tfc:dirt',
'2x #tfg:wood_dusts',
'4x #forge:sand'
)
.circuit(1)
.inputFluids("#tfg:clean_water 1000")
.itemOutputs('4x gtceu:fertilizer')
.duration(300)
.EUt(30)
event.recipes.gtceu.mixer('tfg:fertilizer_2')
.itemInputs('tfc:compost')
.inputFluids('#tfg:clean_water 1000')
.itemOutputs('4x gtceu:fertilizer')
.duration(300)
.EUt(30)
event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers')
.itemInputs('1x gtceu:fertilizer')
.itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus')
.duration(340)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer')
.itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1))
.itemOutputs('1x gtceu:fertilizer')
.duration(160)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen')
.itemInputs('#forge:wax')
.inputFluids(Fluid.of('gtceu:nitrogen', 1000))
.itemOutputs('16x tfc:pure_nitrogen')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
// Humus and compost
event.recipes.gtceu.extractor('tfg:humus_from_leaves')
.itemInputs('#minecraft:leaves')
.itemOutputs('tfc:groundcover/humus')
.duration(600)
.EUt(2)
event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves')
.itemInputs('#tfc:fallen_leaves')
.itemOutputs('tfc:groundcover/humus')
.duration(600)
.EUt(2)
event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost')
.itemInputs('4x gtceu:fertilizer')
.itemOutputs('tfc:compost')
.duration(1200)
.EUt(2)
const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ];
const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ];
let i = 0;
BROWNS.forEach(brown => {
GREENS.forEach(green => {
event.recipes.gtceu.mixer(`tfg:compost_${i++}`)
.itemInputs(brown, green)
.itemOutputs('tfc:compost')
.duration(1200)
.EUt(2)
})
})
//Greens
// Lows via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_greens', 1), [
'AB'
], {
A: '#tfc:compost_greens_low',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_greens_from_low')
// Mediums via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_greens', 2), [
'AB'
], {
A: '#tfc:compost_greens',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_greens_from_medium')
// Highs via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_greens', 4), [
'AB'
], {
A: '#tfc:compost_greens_high',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_greens_from_high')
// Filters
const greens_low = Ingredient.of('#tfc:compost_greens_low')
const browns_low = Ingredient.of('#tfc:compost_browns_low').itemIds
const greens_medium = Ingredient.of('#tfc:compost_greens')
const browns_medium = Ingredient.of('#tfc:compost_browns').itemIds
const greens_high = Ingredient.of('#tfc:compost_greens_high')
const browns_high = Ingredient.of('#tfc:compost_browns_high').itemIds
let low_filtered = greens_low
let medium_filtered = greens_medium
let high_filtered = greens_high
browns_low.forEach(item => {
low_filtered = low_filtered.subtract(item)
low_filtered = low_filtered.subtract('tfg:universal_compost_greens')
})
browns_medium.forEach(item => {
medium_filtered = medium_filtered.subtract(item)
})
browns_high.forEach(item => {
high_filtered = high_filtered.subtract(item)
})
// Lows via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_low')
.itemInputs(low_filtered)
.itemOutputs('tfg:universal_compost_greens')
.duration(20)
.EUt(8)
// Mediums via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_medium')
.itemInputs(medium_filtered)
.itemOutputs(Item.of('tfg:universal_compost_greens', 2))
.duration(20)
.EUt(8)
// Highs via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_greens_high')
.itemInputs(high_filtered)
.itemOutputs(Item.of('tfg:universal_compost_greens', 4))
.duration(20)
.EUt(8)
//Browns
// Lows via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_browns', 1), [
'A',
'B'
], {
A: '#tfc:compost_browns_low',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_browns_from_low')
// Mediums via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_browns', 2), [
'A',
'B'
], {
A: '#tfc:compost_browns',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_browns_from_medium')
// Highs via crafting with mortar
event.shaped(Item.of('tfg:universal_compost_browns', 4), [
'A',
'B'
], {
A: '#tfc:compost_browns_high',
B: '#forge:tools/mortars'
}).id('tfg:shaped/universal_compost_browns_from_high')
// Lows via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_low')
.itemInputs('#tfc:compost_browns_low')
.itemOutputs('tfg:universal_compost_browns')
.duration(20)
.EUt(8)
// Mediums via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_medium')
.itemInputs('#tfc:compost_browns')
.itemOutputs(Item.of('tfg:universal_compost_browns', 2))
.duration(20)
.EUt(8)
// Highs via forge hammer
event.recipes.gtceu.forge_hammer('tfg:universal_compost_browns_high')
.itemInputs('#tfc:compost_browns_high')
.itemOutputs(Item.of('tfg:universal_compost_browns', 4))
.duration(20)
.EUt(8)
}

View file

@ -0,0 +1,240 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGFishingNetsRecipes(event) {
//wood
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/wood', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Wood, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
C: 'tfc:jute_net',
D: 'tfc:glue',
E: ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Wood, 1),
F: '#forge:tools/knives',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/wood'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/wood')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Wood, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
'1x tfc:glue',
ChemicalHelper.get(TagPrefix.bolt, GTMaterials.Wood, 1),
'1x tfc:jute_net'
)
.itemOutputs('tfg:fishing_net/wood')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
//Brass
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/brass', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Brass, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Brass, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.Brass, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.Brass, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/brass'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/brass')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Brass, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Brass, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.Brass, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.Brass, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/brass')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
//Rose Gold
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/rose_gold', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.RoseGold, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.RoseGold, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.RoseGold, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.RoseGold, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/rose_gold'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/rose_gold')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.RoseGold, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.RoseGold, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.RoseGold, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.RoseGold, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/rose_gold')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
//Sterling Silver
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/sterling_silver', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.SterlingSilver, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.SterlingSilver, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.SterlingSilver, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.SterlingSilver, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/sterling_silver'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/sterling_silver')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.SterlingSilver, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.SterlingSilver, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.SterlingSilver, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.SterlingSilver, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/sterling_silver')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
//Invar
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/invar', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Invar, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Invar, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.Invar, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.Invar, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/invar'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/invar')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Invar, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Invar, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.Invar, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.Invar, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/invar')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
//Cupronickel
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/cupronickel', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Cupronickel, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Cupronickel, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.Cupronickel, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.Cupronickel, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/cupronickel'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/cupronickel')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Cupronickel, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Cupronickel, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.Cupronickel, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.Cupronickel, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/cupronickel')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
//Tin Alloy
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/tin_alloy', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TinAlloy, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.TinAlloy, 1),
C: '#forge:cloth',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.TinAlloy, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.TinAlloy, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/tin_alloy'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/tin_alloy')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.TinAlloy, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.TinAlloy, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.TinAlloy, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.TinAlloy, 1),
'1x #forge:cloth'
)
.itemOutputs('tfg:fishing_net/tin_alloy')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
//Magnalium
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('1x tfg:fishing_net/magnalium', [
' DC',
'GBE',
'AF '
],{
A: ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Magnalium, 1),
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Magnalium, 1),
C: 'tfg:polycaprolactam_fabric',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.Magnalium, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.Magnalium, 1),
F: '#forge:tools/wire_cutters',
G: '#tfc:sewing_needles'
}).id('tfg:shaped/fishing_net/magnalium'))
event.recipes.gtceu.assembler('tfg:assembler/fishing_net/magnalium')
.itemInputs(
ChemicalHelper.get(TagPrefix.rodLong, GTMaterials.Magnalium, 1),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Magnalium, 1),
ChemicalHelper.get(TagPrefix.ring, GTMaterials.Magnalium, 1),
ChemicalHelper.get(TagPrefix.screw, GTMaterials.Magnalium, 1),
'1x tfg:polycaprolactam_fabric'
)
.itemOutputs('tfg:fishing_net/magnalium')
.duration(100)
.circuit(4)
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -0,0 +1,101 @@
"use strict";
function registerTFGChipboardRecipes(event) {
// Glue from resin
event.recipes.gtceu.extractor('tfg:glue_from_tfc_glue')
.itemInputs('tfc:glue')
.outputFluids(Fluid.of('gtceu:glue', 50))
.duration(20 * 10)
.EUt(5)
event.recipes.gtceu.extractor('tfg:glue_from_sticky_resin')
.itemInputs('gtceu:sticky_resin')
.outputFluids(Fluid.of('gtceu:glue', 100))
.duration(20 * 10)
.EUt(5)
event.recipes.gtceu.extractor('tfg:glue_from_conifer_resin')
.itemInputs('tfg:conifer_rosin')
.outputFluids(Fluid.of('gtceu:glue', 50))
.duration(20 * 10)
.EUt(5)
event.recipes.gtceu.mixer('tfg:glue_from_bone_meal')
.itemInputs('minecraft:bone_meal')
.inputFluids(Fluid.of('tfc:limewater', 500))
.outputFluids(Fluid.of('gtceu:glue', 50))
.duration(100)
.EUt(5)
// Chipboard
event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax')
.itemInputs('2x #tfg:wood_dusts',
'1x #forge:wax')
.itemOutputs('2x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin')
.itemInputs('4x #tfg:wood_dusts',
'1x gtceu:sticky_resin')
.itemOutputs('4x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue')
.itemInputs('2x #tfg:wood_dusts',
'1x tfc:glue')
.itemOutputs('2x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue')
.itemInputs('1x #tfg:wood_dusts')
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs('1x tfg:chipboard_composite')
.duration(10)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.compressor('gtceu:wood_mdf')
.itemInputs('1x tfg:chipboard_composite')
.itemOutputs('gtceu:wood_plate')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite')
.itemInputs('1x tfg:chipboard_composite')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('tfg:treated_chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard')
.itemInputs('1x gtceu:wood_plate')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('tfg:high_density_treated_fiberboard')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust')
.itemInputs('#tfg:wood_dusts')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('gtceu:treated_wood_dust')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite')
.itemInputs('tfg:treated_chipboard_composite')
.itemOutputs('tfg:high_density_treated_fiberboard')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:resin_circuit_assembler')
.itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin')
.itemOutputs('gtceu:resin_circuit_board')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.ULV])
event.replaceInput({ id: 'gtceu:assembler/phenolic_board' }, '#tfg:wood_dusts', 'tfg:high_density_treated_fiberboard')
}

View file

@ -0,0 +1,104 @@
"use strict";
function registerTFGIceRecipes(event) {
// Ice
event.remove({ id: 'gtceu:compressor/ice_from_dust' })
event.remove({ id: 'gtceu:compressor/ice_from_snow' })
event.shapeless('#forge:dusts/ice', ['#forge:tools/mortars', '4x firmalife:ice_shavings'])
.id('tfg:shaped/ice_shavings')
event.recipes.tfc.quern('#forge:small_dusts/ice', 'firmalife:ice_shavings')
.id('tfg:quern/ice_dust')
event.recipes.gtceu.macerator('tfg:macerating_ice_shavings')
.itemInputs('firmalife:ice_shavings')
.itemOutputs('#forge:small_dusts/ice')
.duration(10)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator('tfg:macerating_ice_shavings_reverse')
.itemInputs('#forge:dusts/ice')
.itemOutputs('4x firmalife:ice_shavings')
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_solidifier('tfg:ice')
.inputFluids("#tfg:clean_water 144")
.notConsumable('gtceu:block_casting_mold')
.itemOutputs('minecraft:ice')
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.shapeless('4x firmalife:ice_shavings', ['#forge:dusts/ice', '#forge:tools/hammers'])
event.recipes.gtceu.mixer('tfg:ice_slush_from_dry_ice')
.itemInputs('1x tfg:dry_ice')
.inputFluids("#tfc:water 8000")
.outputFluids(Fluid.of('gtceu:ice', 8000))
.duration(80)
.EUt(GTValues.VA[GTValues.ULV])
// Cooling water
event.recipes.tfc.barrel_sealed(250)
.inputItem('1x tfg:dry_ice')
.inputFluid(Fluid.of('minecraft:water', 5000))
.outputFluid(Fluid.of('gtceu:ice', 5000))
.id('tfg:barrel/cooling_water_0')
event.recipes.tfc.barrel_sealed(1000)
.inputItem('1x #forge:dusts/ice')
.inputFluid(Fluid.of('minecraft:water', 144))
.outputFluid(Fluid.of('gtceu:ice', 144))
.id('tfg:barrel/cooling_water_1')
event.recipes.tfc.barrel_sealed(1000)
.inputItem('16x minecraft:snowball')
.inputFluid(Fluid.of('minecraft:water', 144))
.outputFluid(Fluid.of('gtceu:ice', 144))
.id('tfg:barrel/cooling_water_2')
event.recipes.tfc.barrel_sealed(2000)
.inputItem('1x #forge:dusts/ice')
.inputFluid(Fluid.of('tfc:salt_water', 144))
.outputFluid(Fluid.of('gtceu:ice', 144))
.id('tfg:barrel/cooling_water_3')
event.recipes.tfc.barrel_sealed(2000)
.inputItem('16x minecraft:snowball')
.inputFluid(Fluid.of('tfc:salt_water', 144))
.outputFluid(Fluid.of('gtceu:ice', 144))
.id('tfg:barrel/cooling_water_4')
// Freezing it
event.recipes.tfc.barrel_sealed(3000)
.inputItem('9x #forge:dusts/ice')
.inputFluid(Fluid.of('gtceu:ice', 144))
.outputItem('minecraft:packed_ice')
.id('tfg:barrel/packed_ice')
// Heating it back up
event.recipes.tfc.pot([], Fluid.of('gtceu:ice', 144), 300, 100)
.fluidOutput(Fluid.of('minecraft:water', 144))
event.recipes.firmalife.vat()
.inputFluid(Fluid.of('gtceu:ice', 144))
.outputFluid(Fluid.of('minecraft:water', 144))
.length(300)
.temperature(100)
// Snow
event.recipes.firmalife.stomping('minecraft:snow', 'minecraft:snowball',
'minecraft:block/snow', 'minecraft:block/snow', 'minecraft:block.snow.place')
.id('tfg:stomping/snow_layer')
event.shapeless('minecraft:snow_block', ['8x minecraft:snow'])
.id('tfg:shapeless/snow_block')
event.shapeless('8x minecraft:snowball', ['minecraft:snow_block'])
.id('tfg:shapeless/snowball')
event.shapeless('8x minecraft:snow', ['minecraft:snow_block', '#forge:tools/saws'])
.id('tfg:shapeless/snow')
}

View file

@ -0,0 +1,232 @@
// priority: 0
"use strict";
function registerTFGKnappingRecipes(event) {
//#region Топор
// Инструмент
event.remove({ id: `tfc:crafting/stone/axe_igneous_extrusive` })
event.remove({ id: `tfc:crafting/stone/axe_igneous_intrusive` })
event.remove({ id: `tfc:crafting/stone/axe_metamorphic` })
event.remove({ id: `tfc:crafting/stone/axe_sedimentary` })
// Оголовья
event.remove({ id: `tfc:rock_knapping/axe_head_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/axe_head_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/axe_head_metamorphic` })
event.remove({ id: `tfc:rock_knapping/axe_head_sedimentary` })
event.recipes.tfc.knapping('gtceu:stone_axe_head', 'tfc:rock', [
" X ",
"XXXX ",
"XXXXX",
"XXXX ",
" X "
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_axe_head')
//#endregion
//#region Молот
// Инструмент
event.remove({ id: `tfc:crafting/stone/hammer_igneous_extrusive` })
event.remove({ id: `tfc:crafting/stone/hammer_igneous_intrusive` })
event.remove({ id: `tfc:crafting/stone/hammer_metamorphic` })
event.remove({ id: `tfc:crafting/stone/hammer_sedimentary` })
// Оголовья
event.remove({ id: `tfc:rock_knapping/hammer_head_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/hammer_head_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/hammer_head_metamorphic` })
event.remove({ id: `tfc:rock_knapping/hammer_head_sedimentary` })
event.recipes.tfc.knapping('gtceu:stone_hammer_head', 'tfc:rock', [
"XXXXX",
"XXXXX",
" X "
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_hammer_head')
//#endregion
//#region Мотыга
// Инструмент
event.remove({ id: `tfc:crafting/stone/hoe_igneous_extrusive` })
event.remove({ id: `tfc:crafting/stone/hoe_igneous_intrusive` })
event.remove({ id: `tfc:crafting/stone/hoe_metamorphic` })
event.remove({ id: `tfc:crafting/stone/hoe_sedimentary` })
// Оголовья
event.remove({ id: `tfc:rock_knapping/hoe_head_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_1_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_2_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_1_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_2_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/hoe_head_metamorphic` })
event.remove({ id: `tfc:rock_knapping/hoe_head_1_metamorphic` })
event.remove({ id: `tfc:rock_knapping/hoe_head_2_metamorphic` })
event.remove({ id: `tfc:rock_knapping/hoe_head_sedimentary` })
event.remove({ id: `tfc:rock_knapping/hoe_head_1_sedimentary` })
event.remove({ id: `tfc:rock_knapping/hoe_head_2_sedimentary` })
event.recipes.tfc.knapping('gtceu:stone_hoe_head', 'tfc:rock', [
"XXXXX",
" XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_hoe_head')
event.recipes.tfc.knapping('2x gtceu:stone_hoe_head', 'tfc:rock', [
"XXXXX",
"XX ",
" ",
"XXXXX",
"XX "
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_hoe_head_1')
event.recipes.tfc.knapping('2x gtceu:stone_hoe_head', 'tfc:rock', [
"XXXXX",
"XX ",
" ",
"XXXXX",
" XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_hoe_head_2')
//#endregion
//#region Нож
// Инструмент
event.remove({ id: `tfc:crafting/stone/knife_igneous_extrusive` })
event.remove({ id: `tfc:crafting/stone/knife_igneous_intrusive` })
event.remove({ id: `tfc:crafting/stone/knife_metamorphic` })
event.remove({ id: `tfc:crafting/stone/knife_sedimentary` })
// Оголовья
event.remove({ id: `tfc:rock_knapping/knife_head_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_1_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_2_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_3_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_1_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_2_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_3_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/knife_head_metamorphic` })
event.remove({ id: `tfc:rock_knapping/knife_head_1_metamorphic` })
event.remove({ id: `tfc:rock_knapping/knife_head_2_metamorphic` })
event.remove({ id: `tfc:rock_knapping/knife_head_3_metamorphic` })
event.remove({ id: `tfc:rock_knapping/knife_head_sedimentary` })
event.remove({ id: `tfc:rock_knapping/knife_head_1_sedimentary` })
event.remove({ id: `tfc:rock_knapping/knife_head_2_sedimentary` })
event.remove({ id: `tfc:rock_knapping/knife_head_3_sedimentary` })
event.recipes.tfc.knapping('gtceu:stone_knife_head', 'tfc:rock', [
"X ",
"XX",
"XX",
"XX",
"XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_knife_head')
event.recipes.tfc.knapping('2x gtceu:stone_knife_head', 'tfc:rock', [
"X X ",
"XX XX",
"XX XX",
"XX XX",
"XX XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_knife_head_1')
event.recipes.tfc.knapping('2x gtceu:stone_knife_head', 'tfc:rock', [
"X X",
"XX XX",
"XX XX",
"XX XX",
"XX XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_knife_head_2')
event.recipes.tfc.knapping('2x gtceu:stone_knife_head', 'tfc:rock', [
" X X ",
"XX XX",
"XX XX",
"XX XX",
"XX XX"
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_knife_head_3')
//#endregion
//#region Лопата
// Инструмент
event.remove({ id: `tfc:crafting/stone/shovel_igneous_extrusive` })
event.remove({ id: `tfc:crafting/stone/shovel_igneous_intrusive` })
event.remove({ id: `tfc:crafting/stone/shovel_metamorphic` })
event.remove({ id: `tfc:crafting/stone/shovel_sedimentary` })
// Оголовья
event.remove({ id: `tfc:rock_knapping/shovel_head_igneous_extrusive` })
event.remove({ id: `tfc:rock_knapping/shovel_head_igneous_intrusive` })
event.remove({ id: `tfc:rock_knapping/shovel_head_metamorphic` })
event.remove({ id: `tfc:rock_knapping/shovel_head_sedimentary` })
event.recipes.tfc.knapping('gtceu:stone_shovel_head', 'tfc:rock', [
"XXX",
"XXX",
"XXX",
"XXX",
" X "
])
.ingredient('#tfc:rock_knapping')
.outsideSlotRequired(false)
.id('tfg:rock_knapping/stone_shovel_head')
//#endregion
event.recipes.tfc.knapping('tfc:thatch', 'tfg:straw', [
"XXX",
"XXX",
"XXX"
])
.ingredient('tfc:straw')
.outsideSlotRequired(false)
.id('tfc:straw_knapping/thatch_block')
event.remove({ id: 'tfcambiental:crafting/straw_hat'})
event.recipes.tfc.knapping('tfcambiental:straw_hat', 'tfg:straw', [
" XXX ",
"XXXXX"
])
.ingredient('tfc:straw')
.outsideSlotRequired(false)
.id('sns:straw_knapping/straw_hat')
}

View file

@ -0,0 +1,212 @@
// priority: 0
"use strict";
function registerTFGLeatherRecipes(event) {
// Limewater
event.recipes.gtceu.mixer('tfg:limewater_from_lime')
.itemInputs('tfc:powder/lime')
.inputFluids(Fluid.of('water', 500))
.outputFluids(Fluid.of('tfc:limewater', 500))
.duration(20)
.EUt(16)
event.recipes.gtceu.mixer('tfg:limewater_from_flux')
.itemInputs('tfc:powder/flux')
.inputFluids(Fluid.of('water', 500))
.outputFluids(Fluid.of('tfc:limewater', 500))
.duration(20)
.EUt(16)
// Tannin
event.recipes.gtceu.chemical_bath('tfg:tannin')
.itemInputs('#tfc:makes_tannin')
.inputFluids(Fluid.of('water', 1000))
.outputFluids(Fluid.of('tfc:tannin', 1000))
.duration(2400)
.EUt(16)
// Soaked hides
event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide')
.itemInputs('tfc:small_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 300))
.itemOutputs('tfc:small_soaked_hide')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide')
.itemInputs('tfc:medium_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 400))
.itemOutputs('tfc:medium_soaked_hide')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide')
.itemInputs('tfc:large_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 500))
.itemOutputs('tfc:large_soaked_hide')
.duration(3200)
.EUt(16)
// Scraped Hides
event.recipes.gtceu.cutter('tfg:small_scraped_hide')
.itemInputs('tfc:small_soaked_hide')
.itemOutputs('tfc:small_scraped_hide')
.duration(100)
.EUt(7)
event.recipes.gtceu.cutter('tfg:medium_scraped_hide')
.itemInputs('tfc:medium_soaked_hide')
.itemOutputs('tfc:medium_scraped_hide')
.duration(100)
.EUt(7)
event.recipes.gtceu.cutter('tfg:large_scraped_hide')
.itemInputs('tfc:large_soaked_hide')
.itemOutputs('tfc:large_scraped_hide')
.duration(100)
.EUt(7)
// Prepared hides
event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide')
.itemInputs('tfc:small_soaked_hide')
.inputFluids(Fluid.of('water', 300))
.itemOutputs('tfc:small_prepared_hide')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide')
.itemInputs('tfc:medium_soaked_hide')
.inputFluids(Fluid.of('water', 400))
.itemOutputs('tfc:medium_prepared_hide')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide')
.itemInputs('tfc:large_soaked_hide')
.inputFluids(Fluid.of('water', 500))
.itemOutputs('tfc:large_prepared_hide')
.duration(3200)
.EUt(16)
// Leather
event.recipes.gtceu.chemical_bath('tfg:small_leather')
.itemInputs('tfc:small_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 300))
.itemOutputs('minecraft:leather')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_leather')
.itemInputs('tfc:medium_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 400))
.itemOutputs('2x minecraft:leather')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_leather')
.itemInputs('tfc:large_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 500))
.itemOutputs('3x minecraft:leather')
.duration(3200)
.EUt(16)
// 1x Small SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_1')
.itemInputs('tfc:small_sheepskin_hide')
.itemOutputs('tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
// 1x Medium SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_2')
.itemInputs('tfc:medium_sheepskin_hide')
.itemOutputs('2x tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
// 1x Large SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_3')
.itemInputs('tfc:large_sheepskin_hide')
.itemOutputs('3x tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
//Hide Sewing
const stages = [
'raw',
'soaked',
'scraped',
'prepared',
'sheepskin'
];
stages.forEach(stage => {
//Combining
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`1x tfc:medium_${stage}_hide`, [
`2x tfc:small_${stage}_hide`,
'#tfc:sewing_needles',
'#forge:string',
'tfc:glue'
]).id(`tfg:tfc/small_to_medium_${stage}_hide`)
)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`1x tfc:large_${stage}_hide`, [
`3x tfc:small_${stage}_hide`,
'#tfc:sewing_needles',
'#forge:string',
'tfc:glue'
]).id(`tfg:tfc/small_to_large_${stage}_hide`)
)
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`)
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs(`1x tfc:medium_${stage}_hide`)
.itemInputs(`2x tfc:small_${stage}_hide`)
.duration(60)
.circuit(7)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`)
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs(`1x tfc:large_${stage}_hide`)
.itemInputs(`3x tfc:small_${stage}_hide`)
.duration(60)
.circuit(9)
.EUt(GTValues.VA[GTValues.ULV])
//Cutting
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`2x tfc:small_${stage}_hide`, [
`1x tfc:medium_${stage}_hide`,
'#forge:shears'
]).id(`tfg:tfc/medium_to_small_${stage}_hide`)
)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`3x tfc:small_${stage}_hide`, [
`1x tfc:large_${stage}_hide`,
'#forge:shears'
]).id(`tfg:tfc/large_to_small_${stage}_hide`)
)
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`)
.itemOutputs(`2x tfc:small_${stage}_hide`)
.itemInputs(`1x tfc:medium_${stage}_hide`)
.duration(60)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`)
.itemOutputs(`3x tfc:small_${stage}_hide`)
.itemInputs(`1x tfc:large_${stage}_hide`)
.duration(60)
.circuit(6)
.EUt(GTValues.VA[GTValues.ULV])
});
}

View file

@ -0,0 +1,582 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGMedicineRecipes(event) {
//#region Antipoison
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:antipoison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:antipoison_pill')
.id(`tfg:mixing_bowl/pill_antipoison`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_antipoison`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:antipoison_pill')
.itemInputs('#forge:wax', '#tfg:antipoison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_antipoison`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:antipoison_pill')
.itemInputs('#forge:wax', '#tfg:antipoison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_antipoison`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:antipoison_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:antipoison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_antipoison`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:antipoison_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:antipoison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Poison
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:poison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:poison_pill')
.id(`tfg:mixing_bowl/pill_poison`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_poison`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:poison_pill')
.itemInputs('#forge:wax', '#tfg:poison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_poison`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:poison_pill')
.itemInputs('#forge:wax', '#tfg:poison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_poison`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:poison_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:poison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_poison`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:poison_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:poison_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:poison"}'),
['4x minecraft:arrow', 'tfg:poison_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/poison_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:poison"}'))
.itemInputs('16x minecraft:arrow', 'tfg:poison_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/poison_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_poison"}'))
.itemInputs('16x minecraft:arrow', 'tfg:poison_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Regeneration
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:regeneration_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:regeneration_pill')
.id(`tfg:mixing_bowl/pill_regeneration`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_regeneration`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:regeneration_pill')
.itemInputs('#forge:wax', '#tfg:regeneration_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_regeneration`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:regeneration_pill')
.itemInputs('#forge:wax', '#tfg:regeneration_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_regeneration`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:regeneration_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:regeneration_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_regeneration`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:regeneration_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:regeneration_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:regeneration"}'),
['4x minecraft:arrow', 'tfg:regeneration_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/regeneration_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:regeneration"}'))
.itemInputs('16x minecraft:arrow', 'tfg:regeneration_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/regeneration_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_regeneration"}'))
.itemInputs('16x minecraft:arrow', 'tfg:regeneration_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Speed
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:speed_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:speed_pill')
.id(`tfg:mixing_bowl/pill_speed`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_speed`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:speed_pill')
.itemInputs('#forge:wax', '#tfg:speed_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_speed`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:speed_pill')
.itemInputs('#forge:wax', '#tfg:speed_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_speed`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:speed_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:speed_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_speed`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:speed_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:speed_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:swiftness"}'),
['4x minecraft:arrow', 'tfg:speed_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/swiftness_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:swiftness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:speed_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/swiftness_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_swiftness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:speed_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Slowness
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:slowness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:slowness_pill')
.id(`tfg:mixing_bowl/pill_slowness`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_slowness`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:slowness_pill')
.itemInputs('#forge:wax', '#tfg:slowness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_slowness`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:slowness_pill')
.itemInputs('#forge:wax', '#tfg:slowness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_slowness`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:slowness_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:slowness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_slowness`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:slowness_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:slowness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:slowness"}'),
['4x minecraft:arrow', 'tfg:slowness_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/slowness_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:slowness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:slowness_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/slowness_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_slowness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:slowness_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Weakness
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:weakness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:weakness_pill')
.id(`tfg:mixing_bowl/pill_weakness`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_weakness`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:weakness_pill')
.itemInputs('#forge:wax', '#tfg:weakness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_weakness`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:weakness_pill')
.itemInputs('#forge:wax', '#tfg:weakness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_weakness`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:weakness_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:weakness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_weakness`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:weakness_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:weakness_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.Sulfur, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:weakness"}'),
['4x minecraft:arrow', 'tfg:weakness_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/weakness_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:weakness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:weakness_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/weakness_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_weakness"}'))
.itemInputs('16x minecraft:arrow', 'tfg:weakness_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Haste
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:haste_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:haste_pill')
.id(`tfg:mixing_bowl/pill_haste`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_haste`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:haste_pill')
.itemInputs('#forge:wax', '#tfg:haste_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_haste`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:haste_pill')
.itemInputs('#forge:wax', '#tfg:haste_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_haste`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:haste_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:haste_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_haste`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:haste_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:haste_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Water Breathing
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:water_breathing_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:water_breathing_pill')
.id(`tfg:mixing_bowl/pill_water_breathing`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_water_breathing`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:water_breathing_pill')
.itemInputs('#forge:wax', '#tfg:water_breathing_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_water_breathing`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:water_breathing_pill')
.itemInputs('#forge:wax', '#tfg:water_breathing_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_water_breathing`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:water_breathing_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:water_breathing_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_water_breathing`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:water_breathing_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:water_breathing_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:water_breathing"}'),
['4x minecraft:arrow', 'tfg:water_breathing_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/water_breathing_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:water_breathing"}'))
.itemInputs('16x minecraft:arrow', 'tfg:water_breathing_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/water_breathing_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_water_breathing"}'))
.itemInputs('16x minecraft:arrow', 'tfg:water_breathing_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Night Vision
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:night_vision_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1)], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:night_vision_pill')
.id(`tfg:mixing_bowl/pill_night_vision`)
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/pill_night_vision`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:night_vision_pill')
.itemInputs('#forge:wax', '#tfg:night_vision_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/pill_night_vision`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:night_vision_pill')
.itemInputs('#forge:wax', '#tfg:night_vision_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/spring_water/tablet_night_vision`)
.circuit(4)
.inputFluids(Fluid.of('tfc:spring_water', 250))
.itemOutputs('2x tfg:night_vision_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:night_vision_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/distilled_water/tablet_night_vision`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.itemOutputs('2x tfg:night_vision_tablet')
.notConsumable('gtceu:pill_casting_mold')
.itemInputs('gtceu:sodium_bicarbonate_dust', 'gtceu:lactose_dust', '#tfg:night_vision_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// Arrow
event.shapeless(Item.of('8x minecraft:tipped_arrow', '{Potion:"minecraft:night_vision"}'),
['4x minecraft:arrow', 'tfg:night_vision_pill', '4x minecraft:arrow'])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/night_vision_1`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:night_vision"}'))
.itemInputs('16x minecraft:arrow', 'tfg:night_vision_pill')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/arrow/night_vision_2`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:ethanol', 25))
.itemOutputs(Item.of('16x minecraft:tipped_arrow', '{Potion:"minecraft:long_night_vision"}'))
.itemInputs('16x minecraft:arrow', 'tfg:night_vision_tablet')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
//#endregion
//#region Invisibility
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_invisibility`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:invisibility_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:invisibility_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Fire Resistance
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_fire_resistance`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:fire_resistance_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:fire_resistance_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Resistance
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_resistance`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:resistance_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:resistance_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Instant Health
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_instant_health`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:instant_health_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:instant_health_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Absorption
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_absorption`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:absorption_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:absorption_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Luck
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_luck`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:phenol', 250))
.itemOutputs('1x tfg:luck_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:luck_ingredients', ChemicalHelper.get(TagPrefix.dust, GTMaterials.TricalciumPhosphate, 1))
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Paracetamol
event.recipes.firmalife.mixing_bowl()
.ingredients(['tfg:regeneration_pill', 'tfg:weakness_pill', 'tfg:antipoison_pill', 'tfg:slowness_pill'], Fluid.of('tfc:vinegar', 250))
.outputItem('4x gtceu:paracetamol_pill')
.id(`tfg:mixing_bowl/paracetamol`)
//#endregion
}

View file

@ -0,0 +1,195 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGPapermakingRecipes(event) {
event.recipes.gtceu.cutter('tfg:unrefined_paper')
.itemInputs('tfc:unrefined_paper')
.itemOutputs('minecraft:paper')
.duration(100)
.EUt(7)
event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled')
.itemInputs('tfc:papyrus')
.inputFluids(Fluid.of('gtceu:distilled_water', 100))
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.chemical_bath('paper_from_papyrus')
.itemInputs('tfc:papyrus')
.inputFluids("#tfg:clean_water 100")
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.assembler('papyrus_strips')
.itemInputs('4x tfc:soaked_papyrus_strip')
.itemOutputs('minecraft:paper')
.circuit(1)
.duration(100)
.EUt(7)
const generateVatRecipe = (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)
}
const generatePotRecipe = (id, maxAmountOfInputItems, inputItem, inputFluid, inputFluidAmount, outputItem, ticks, temperature) => {
for (let i = 0; i < maxAmountOfInputItems; i++) {
let iPlusOne = i + 1
let inputsArray = new Array(iPlusOne)
for (let j = 0; j < iPlusOne; j++) {
inputsArray[j] = inputItem
}
event.recipes.tfc.pot(inputsArray, Fluid.of(inputFluid, inputFluidAmount * iPlusOne), ticks, temperature)
.itemOutput(`${iPlusOne}x ${outputItem}`)
.id(`tfg:pot/${iPlusOne}x_${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.remove({ id: 'gtceu:lathe/lathe_logs' })
event.remove({ id: 'gtceu:lathe/lathe_stripped_bamboo_log' })
removeMaceratorRecipe(event, 'macerate_logs')
// Create macerator recipes for softwood
event.recipes.gtceu.macerator('macerate_softwood')
.itemInputs('#tfg:softwood')
.itemOutputs('6x gtceu:wood_dust')
.chancedOutput('gtceu:wood_dust', 8000, 680)
.duration(70)
.EUt(2)
event.recipes.tfc.quern('4x gtceu:wood_dust', '#tfg:softwood')
.id('tfg:quern/softwood_dust')
//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)
event.recipes.tfc.quern('4x gtceu:hardwood_dust', '#tfg:hardwood')
.id('tfg:quern/hardwood_dust')
//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:stripped_hardwood`, `8x tfg:hardwood_strip`, 50, 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')
event.recipes.gtceu.chemical_bath('tfg:chemical_bath/soak_hardwood_strips')
.inputFluids("#tfg:clean_water 100")
.itemInputs('tfg:hardwood_strip')
.itemOutputs('tfg:soaked_hardwood_strip')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
//Create Hardwood Dust using Quern and Millstone/Crushing Wheels
event.recipes.gtceu.macerator('tfg:macerator/macerate_hardwood_strips')
.itemInputs('tfg:soaked_hardwood_strip')
.itemOutputs('3x gtceu:small_hardwood_dust')
.chancedOutput('gtceu:small_hardwood_dust', 5000, 5000)
.duration(100)
.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
generateVatRecipe('tfg:vat/thermochemically_treat_hardwood_dust', 'gtceu:hardwood_dust', 'tfc:lye', 300, 'gtceu:thermochemically_treated_hardwood_dust')
generateVatRecipe('tfg:vat/thermochemically_treat_small_hardwood_dust', 'gtceu:small_hardwood_dust', 'tfc:lye', 75, 'gtceu:small_thermochemically_treated_hardwood_dust')
generateVatRecipe('tfg:vat/thermochemically_treat_tiny_hardwood_dust', 'gtceu:tiny_hardwood_dust', 'tfc:lye', 33, 'gtceu:tiny_thermochemically_treated_hardwood_dust')
generatePotRecipe('thermochemically_treat_hardwood_dust', 3, 'gtceu:hardwood_dust', 'tfc:lye', 300, 'gtceu:thermochemically_treated_hardwood_dust', 600, 300)
generatePotRecipe('thermochemically_treat_small_hardwood_dust', 5, 'gtceu:small_hardwood_dust', 'tfc:lye', 75, 'gtceu:small_thermochemically_treated_hardwood_dust', 600, 300)
generatePotRecipe('thermochemically_treat_tiny_hardwood_dust', 5, 'gtceu:tiny_hardwood_dust', 'tfc:lye', 33, 'gtceu:tiny_thermochemically_treated_hardwood_dust', 600, 300)
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_second_last', 'hit_third_last'])
.id('tfg:anvil/soaked_unrefined_paper')
event.recipes.greate.pressing(Item.of('tfg:soaked_unrefined_paper'), 'gtceu:thermochemically_treated_hardwood_dust')
.recipeTier(0)
.id('greate: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:block/thermochemically_treated_hardwood_dust',
output_texture: 'tfg:block/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,133 @@
"use strict";
function registerTFGRubberRecipes(event) {
// Sticky resin
event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300)
.itemOutput('gtceu:sticky_resin')
.id('tfg:pot/sticky_resin_from_latex')
event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300)
.itemOutput('gtceu:sticky_resin')
.id('tfg:pot/sticky_resin_from_conifer_pitch')
event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin')
.duration(12 * 20)
.EUt(30)
.itemInputs('tfc:powder/wood_ash')
.itemOutputs('gtceu:sticky_resin')
.inputFluids(Fluid.of('tfg:latex', 1000))
event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin')
.duration(12 * 20)
.EUt(30)
.itemInputs('tfc:powder/wood_ash')
.itemOutputs('gtceu:sticky_resin')
.inputFluids(Fluid.of('tfg:conifer_pitch', 1000))
// Rubber Processing Line
event.recipes.firmalife.vat()
.inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000))
.outputFluid(Fluid.of('tfg:vulcanized_latex', 1000))
.length(300)
.temperature(300)
.id('tfg:vat/vulcanized_latex')
event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300)
.fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000))
.id('tfg:pot/vulcanized_latex')
event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex')
.duration(100)
.EUt(20)
.itemInputs('tfc:powder/sulfur')
.inputFluids(Fluid.of('tfg:latex', 1000))
.outputFluids(Fluid.of('tfg:vulcanized_latex', 1000))
event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp')
.duration(100)
.EUt(20)
.inputFluids(Fluid.of('tfg:vulcanized_latex', 1000))
.itemOutputs('4x gtceu:raw_rubber_dust')
event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue')
.inputFluids(Fluid.of('gtceu:glue', 50))
.notConsumable('gtceu:ball_casting_mold')
.itemOutputs('tfc:glue')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin')
.itemInputs('tfg:conifer_rosin')
.outputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('2x #forge:dusts/carbon')
.chancedOutput('gtceu:plant_ball', 7500, 0)
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin')
.itemInputs('gtceu:sticky_resin')
.outputFluids(Fluid.of('gtceu:glue', 100))
.itemOutputs('3x #forge:dusts/carbon')
.chancedOutput('gtceu:plant_ball', 5000, 0)
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`)
.itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust')
.circuit(1)
.outputFluids(Fluid.of('tfg:latex', 1000))
.duration(200)
.EUt(20)
// #region Primitive protection
event.recipes.tfc.barrel_sealed(2000)
.outputItem('tfg:prepared_leather_gloves')
.inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000))
.id('tfg:sealed_barrel/prepared_leather_gloves')
event.recipes.firmalife.vat()
.outputItem('tfg:latex_soaked_gloves')
.inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000))
.length(300)
.temperature(200)
.id('tfg:vat/latex_soaked_gloves')
event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves')
.id('tfg:oven/rubber_gloves')
event.remove({ id: 'gtceu:shaped/rubber_gloves' })
event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter')
.itemInputs('2x #forge:plates/rubber')
.notConsumable('create:brass_hand')
.itemOutputs('gtceu:rubber_gloves')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('gtceu:face_mask', [
'ACA',
'ABA',
' D '
], {
A: '#forge:string',
B: '#forge:cloth',
C: 'minecraft:paper',
D: '#tfc:sewing_needles'
})
).id('gtceu:shaped/face_mask')
event.recipes.gtceu.assembler('assemble_face_mask')
.itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper')
.itemOutputs('gtceu:face_mask')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
.circuit(7)
// #endregion
}

View file

@ -0,0 +1,230 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGSupportRecipes(event) {
// Concrete Supports
event.recipes.gtceu.fluid_solidifier('tfg:gtceu/fluid_solidifier/reinforced_light_concrete_support')
.inputFluids(Fluid.of('gtceu:concrete', 96))
.itemOutputs('1x tfg:reinforced_light_concrete_support')
.itemInputs('1x tfg:rebar_support')
.duration(60)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:gtceu/assembler/reinforced_light_concrete_support')
.inputFluids(Fluid.of('gtceu:concrete', 96))
.itemOutputs('1x tfg:reinforced_light_concrete_support')
.itemInputs('1x tfg:rebar_support')
.duration(120)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator(`reinforced_light_concrete_support_to_dust`)
.itemInputs('tfg:reinforced_light_concrete_support')
.itemOutputs('gtceu:tiny_steel_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
event.recipes.gtceu.chemical_bath('tfg:gtceu/chemical_bath/reinforced_dark_concrete_support')
.inputFluids(Fluid.of('tfc:black_dye', 10))
.itemOutputs('1x tfg:reinforced_dark_concrete_support')
.itemInputs('1x tfg:reinforced_light_concrete_support')
.duration(60)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('tfg:gtceu/chemical_bath/dark_concrete_support')
.inputFluids(Fluid.of('tfc:black_dye', 10))
.itemOutputs('1x tfg:dark_concrete_support')
.itemInputs('1x tfg:light_concrete_support')
.duration(60)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator(`reinforced_dark_concrete_support_to_dust`)
.itemInputs('tfg:reinforced_dark_concrete_support')
.itemOutputs('gtceu:tiny_steel_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('8x tfg:light_concrete_support', [
'AB ',
'AC ',
'AC '
], {
A: 'gtceu:light_concrete',
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id('tfg:shaped/light_concrete_support'))
event.recipes.gtceu.assembler('tfg:gtceu/assembler/light_concrete_support')
.circuit(11)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs('8x tfg:light_concrete_support')
.itemInputs('3x gtceu:light_concrete')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('8x tfg:dark_concrete_support', [
'AB ',
'AC ',
'AC '
], {
A: 'gtceu:dark_concrete',
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id('tfg:shaped/dark_concrete_support'))
event.recipes.gtceu.assembler('tfg:gtceu/assembler/dark_concrete_support')
.circuit(11)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs('8x tfg:dark_concrete_support')
.itemInputs('3x gtceu:dark_concrete')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
// Stone Supports
global.TFC_STONE_TYPES.forEach(stone => {
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped(`8x tfg:${stone}_support`, [
'AB ',
'AC ',
'AC '
], {
A: `tfc:rock/loose/${stone}`,
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id(`tfg:shaped/${stone}_support`))
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped(`8x tfg:${stone}_support`, [
'AB ',
'AC ',
'AC '
], {
A: `tfc:rock/mossy_loose/${stone}`,
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id(`tfg:shaped/mossy/${stone}_support`))
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/${stone}_support`)
.circuit(11)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs(`8x tfg:${stone}_support`)
.itemInputs(`3x tfc:rock/loose/${stone}`)
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/mossy/${stone}_support`)
.circuit(11)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs(`8x tfg:${stone}_support`)
.itemInputs(`3x tfc:rock/mossy_loose/${stone}`)
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
})
// REDO w/ table and loop
const EXO_STONE_SUPPORTS = [
{ loose: 'tfg:loose/deepslate', support: 'tfg:migmatite_support', material: 'deepslate' },
{ loose: 'beneath:blackstone_pebble', support: 'tfg:pyroxenite_support', material: 'blackstone', },
{ loose: 'tfg:loose/dripstone', support: 'tfg:travertine_support', material: 'dripstone' },
{ loose: 'tfg:loose/crackrack', support: 'tfg:keratophyre_support', material: 'netherrack'},
{ loose: 'tfg:loose/moon_stone', support: 'tfg:anorthosite_support', material: 'moon_stone' },
{ loose: 'tfg:loose/moon_deepslate', support: 'tfg:norite_support', material: 'moon_deepslate' },
{ loose: 'tfg:loose/mars_stone', support: 'tfg:argillite_support', material: 'mars_stone' },
{ loose: 'tfg:loose/venus_stone', support: 'tfg:trachyte_support', material: 'venus_stone', },
{ loose: 'tfg:loose/mercury_stone', support: 'tfg:komatiite_support', material: 'mercury_stone' },
{ loose: 'tfg:loose/glacio_stone', support: 'tfg:phonolite_support', material: 'glacio_stone' },
{ loose: 'tfg:loose/permafrost', support: 'tfg:permafrost_support', material: 'ice' },
{ loose: 'tfg:loose/red_granite', support: 'tfg:red_granite_support', material: 'granite_red' },
{ loose: 'gtceu:stone_ingot', support: 'tfg:stone_support', material: 'stone' }
]
EXO_STONE_SUPPORTS.forEach(s => {
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped(`8x ${s.support}`, [
'AB ',
'AC ',
'AC '
], {
A: s.loose,
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id(`tfg:shaped/${s.support.split(':')[1]}`)
)
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/${s.support.split(':')[1]}`)
.circuit(11)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs(`8x ${s.support}`)
.itemInputs(`3x ${s.loose}`)
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
console.log(s.material);
let regexMatch = s.support.match(/tfg:(.*?)_support/);
let supportName = regexMatch[1];
let stoneMaterial = TFGHelpers.getMaterial(s.material);
let dustSmall = ChemicalHelper.get(TagPrefix.dustSmall, stoneMaterial, 1)
event.recipes.gtceu.macerator(`${supportName}_support_to_dust`)
.itemInputs(s.support)
.itemOutputs(dustSmall)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
})
// Metal Supports
event.shaped('8x tfg:rebar_support', [
'BA ',
'AC '
], {
A: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 1),
B: ChemicalHelper.get(TagPrefix.wireFine, GTMaterials.Steel, 1),
C: '#forge:tools/wire_cutters'
}).id('tfg:shaped/rebar_support')
event.recipes.gtceu.assembler('tfg:gtceu/assembler/rebar_support')
.circuit(11)
.itemOutputs('8x tfg:rebar_support')
.itemInputs(ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2), ChemicalHelper.get(TagPrefix.wireFine, GTMaterials.Steel, 1))
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator(`rebar_support_to_dust`)
.itemInputs(`tfg:rebar_support`)
.itemOutputs(`gtceu:tiny_steel_dust`)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
event.recipes.tfc.anvil(
'1x tfg:steel_support',
'#forge:double_ingots/steel',
[
'upset_last',
'shrink_any'
]
).tier(4).id('tfg:anvil/steel_support')
event.recipes.gtceu.assembler('tfg:gtceu/assembler/steel_support')
.circuit(11)
.itemOutputs('4x tfg:steel_support')
.itemInputs('2x #forge:double_ingots/steel')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
.addMaterialInfo(true)
event.recipes.gtceu.macerator("steel_support_to_dust")
.itemInputs('tfg:steel_support')
.itemOutputs('2x gtceu:steel_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
}

View file

@ -0,0 +1,59 @@
"use strict";
function registerTFGVaseRecipes(event) {
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/dyeing/decorative_vase/unfired/${color}`)
.itemInputs('#tfg:decorative_vases/unfired')
.inputFluids(Fluid.of(`tfc:${color}_dye`, 25))
.itemOutputs(`tfg:decorative_vase/unfired/${color}`)
.duration(80)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.CHEM_DYES)
event.recipes.tfc.heating(`tfg:decorative_vase/unfired/${color}`, 1399)
.resultItem(`tfg:decorative_vase/${color}`)
.id(`tfg:heating/decorative_vase/unfired/${color}`)
event.recipes.tfc.barrel_sealed(1000)
.outputItem(`tfg:decorative_vase/unfired/${color}`)
.inputItem(Ingredient.of('#tfg:decorative_vases/unfired').subtract(`tfg:decorative_vase/unfired/${color}`))
.inputFluid(Fluid.of(`tfc:${color}_dye`, 25))
.id(`tfg:barrel/dyeing/decorative_vase/${color}`)
event.smelting(
`1x tfg:decorative_vase/${color}`,
`tfg:decorative_vase/unfired/${color}`
).id(`tfg:smelting/decorative_vase/${color}`)
})
event.recipes.gtceu.chemical_bath(`tfg:chemical_bath/bleaching/decorative_vase/unfired`)
.itemInputs('#tfg:decorative_vases/unfired')
.inputFluids(Fluid.of('gtceu:chlorine', 72))
.itemOutputs('tfg:decorative_vase/unfired')
.duration(80)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.CHEM_DYES)
event.smelting(
'1x tfg:decorative_vase',
'tfg:decorative_vase/unfired'
).id('tfg:smelting/decorative_vase')
event.recipes.tfc.heating('tfg:decorative_vase/unfired', 1399)
.resultItem('tfg:decorative_vase')
.id('tfg:heating/decorative_vase/unfired')
event.recipes.tfc.knapping(
'tfg:decorative_vase/unfired',
'tfc:clay',
[
' X X ',
'XX XX',
'X X',
'X X',
'XXXXX'
]
).outsideSlotRequired(false)
.id('tfg:knapping/decorative_vase/unfired')
}

View file

@ -0,0 +1,64 @@
"use strict";
function registerTFGWaxRecipes(event) {
//forge:wax
event.replaceInput({}, 'firmalife:beeswax', '#forge:wax')
//paraffin
event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant')
.circuit(7)
.itemOutputs('6x tfg:paraffin_wax')
.outputFluids(Fluid.of('gtceu:oil_light', 25))
.inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25))
.duration(500)
.EUt(GTValues.VA[GTValues.LV])
// Rosin
event.recipes.firmalife.vat()
.inputs('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000))
.outputItem('tfg:conifer_rosin')
.id('tfg:vat/conifer_pitch_to_rosin');
event.recipes.tfc.pot('tfc:powder/charcoal', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300)
.itemOutput('tfg:conifer_rosin')
.id('tfg:pot/conifer_pitch_to_rosin')
event.recipes.gtceu.fluid_solidifier('tfg:pitch_to_rosin')
.inputFluids(Fluid.of('tfg:conifer_pitch', 1000))
.itemInputs('tfc:powder/charcoal')
.itemOutputs('tfg:conifer_rosin')
.duration(20 * 12)
.EUt(GTValues.VA[GTValues.LV])
//#region Wax Unification
// Recipe Removals
event.remove({ id: 'gtceu:extractor/extract_honeycomb_block' });
event.remove({ id: 'gtceu:extractor/extract_honeycomb' });
event.remove({ id: 'gtceu:extractor/extract_wax_dust' });
// Extractor Recipe
event.recipes.gtceu.extractor('tfg:wax_melting')
.itemInputs(Ingredient.of('#forge:wax'))
.outputFluids(Fluid.of('gtceu:wax', 144))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.EXTRACTOR_RECYCLING);
event.recipes.gtceu.extractor('tfg:tiny_wax_dust_melting')
.itemInputs(ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Wax, 1))
.outputFluids(Fluid.of('gtceu:wax', 16))
.duration(10)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.EXTRACTOR_RECYCLING);
event.recipes.gtceu.extractor('tfg:small_wax_dust_melting')
.itemInputs(ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Wax, 1))
.outputFluids(Fluid.of('gtceu:wax', 36))
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.EXTRACTOR_RECYCLING);
//#endregion
}

View file

@ -0,0 +1,236 @@
"use strict";
function registerTFGWoodRecipes(event) {
event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives')
event.replaceInput({ id: 'gtceu:shaped/powderbarrel' }, 'gtceu:wood_plate', '#tfc:lumber')
// Wood ash
event.smelting('4x tfc:powder/wood_ash', '1x #minecraft:logs_that_burn').id('tfg:wood_ash')
event.recipes.gtceu.chemical_reactor('tfg:wood_ash_to_wood_gas_air')
.itemInputs('8x tfc:powder/wood_ash')
.inputFluids(Fluid.of('gtceu:air', 100))
.outputFluids('gtceu:wood_gas 100')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch')
.id('tfg:splashing/wash_torch')
// Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [{ item: 'tfc:torch' }],
result: { item: 'tfc:powder/wood_ash' }
}).id(`tfg:ae_transform/torch_to_wood_ash`)
// Ladder
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#forge:rods/wooden'
}).id('gtceu:shaped/ladder')
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#tfc:lumber'
}).id('tfc:crafting/vanilla/ladder')
event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber')
event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' })
// Treated Wood
event.remove({ id: 'gtceu:shaped/treated_wood_planks' })
event.recipes.tfc.barrel_sealed(4000)
.outputItem('gtceu:treated_wood_planks')
.inputs('#minecraft:planks', TFC.fluidStackIngredient('#forge:creosote', 100))
.id('tfg:barrel/treated_wood_planks')
event.recipes.tfc.barrel_sealed(2000)
.outputItem('gtceu:treated_wood_dust')
.inputs('#tfg:wood_dusts', TFC.fluidStackIngredient('#forge:creosote', 50))
.id('tfg:barrel/treated_wood_dust')
event.shaped('2x gtceu:treated_wood_door', [
'AA ',
'AA ',
'AA '
], {
A: 'gtceu:treated_wood_plate'
}).id('tfg:shaped/treated_door')
event.shaped('3x gtceu:treated_wood_trapdoor', [
'AAA',
'AAA',
' '
], {
A: 'gtceu:treated_wood_plate'
}).id('tfg:shaped/treated_trapdoor')
event.shaped('gtceu:treated_wood_pressure_plate', [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: 'gtceu:treated_wood_slab',
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id('gtceu:shaped/treated_pressure_plate')
event.recipes.gtceu.assembler('gtceu:treated_pressure_plate')
.itemInputs('#forge:small_springs', '2x gtceu:treated_wood_slab')
.itemOutputs('gtceu:treated_wood_pressure_plate')
.circuit(3)
.duration(50)
.EUt(2)
event.replaceOutput({ id: 'gtceu:cutter/treated_button' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/treated_button_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/treated_button_distilled_water' }, 'gtceu:treated_wood_button', '6x gtceu:treated_wood_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
event.replaceOutput({ id: 'gtceu:cutter/bamboo_button_distilled_water' }, 'minecraft:bamboo_button', '6x minecraft:bamboo_button')
// Empty Wooden Form
event.shaped('gtceu:empty_wooden_form', [
' AA',
'BAA'
], {
A: '#minecraft:planks',
B: '#forge:tools/saws'
}).id('gtceu:shaped/plank_to_wooden_shape')
// Wood gears
event.shaped('gtceu:small_wood_gear', [
'AB ',
'BCB',
' B '
], {
A: '#forge:tools/saws',
B: '#forge:rods/wooden',
C: 'tfc:glue'
}).id('gtceu:shaped/small_gear_wood')
event.shaped('gtceu:wood_gear', [
'AB ',
'BCB',
' B '
], {
A: '#forge:tools/saws',
B: '#minecraft:planks',
C: 'tfc:glue'
}).id('gtceu:shaped/gear_wood')
// Sticks
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings')
event.recipes.gtceu.cutter('tfg:saplings_to_sticks')
.itemInputs('#minecraft:saplings')
.itemOutputs('2x minecraft:stick')
.duration(20)
.EUt(7)
event.recipes.gtceu.packer('tfg:stick_bunch')
.itemInputs('9x #forge:rods/wooden')
.circuit(5)
.itemOutputs('tfc:stick_bunch')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.packer('tfg:stick_bundle')
.itemInputs('18x #forge:rods/wooden')
.circuit(8)
.itemOutputs('tfc:stick_bundle')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
// Какие то рецепты дерева
global.TFC_WOOD_TYPES.forEach(wood => {
event.remove({ id: `tfc:crafting/wood/${wood}_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_clutch` })
event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` })
event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` })
// Бревна -> Пиломатериалы
generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`)
// Доски -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`)
// Ступень -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`)
// Плита -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`)
// ? -> Деревянная нажимная пластина
event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: `tfc:wood/planks/${wood}_slab`,
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id(`tfc:crafting/wood/${wood}_pressure_plate`)
event.recipes.gtceu.assembler(`${wood}_pressure_plate`)
.itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`)
.circuit(3)
.itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`)
.duration(50)
.EUt(2)
// ? -> Деревянная кнопка
event.remove({ id: `tfc:crafting/wood/${wood}_button` })
generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`)
// Stripped logs
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`tfc:wood/log/${wood}`)
.itemOutputs(`tfc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`tfc:wood/wood/${wood}`)
.itemOutputs(`tfc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: `tfc:wood/log/${wood}` }],
results: [{ item: `tfc:wood/stripped_log/${wood}` }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_${wood}_log`)
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: `tfc:wood/wood/${wood}` }],
results: [{ item: `tfc:wood/stripped_wood/${wood}` }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_${wood}_wood`)
})
}