Consolidating Development: 0.9.x (#846)

Signed-off-by: Pyritie <pyritie@gmail.com>
Signed-off-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: Pyritie <Pyritie@gmail.com>
Co-authored-by: Redeix <brayden.j.m.ford@gmail.com>
Co-authored-by: TomPlop <tomdidome@gmail.com>
Co-authored-by: aidie8 <aidenvanzuilen@gmail.com>
Co-authored-by: Xikaro <os.valerievich@ya.ru>
Co-authored-by: Xikaro <55663835+Xikaro@users.noreply.github.com>
Co-authored-by: Zleub <debray.arnaud@gmail.com>
This commit is contained in:
Nebby 2025-04-14 14:00:08 -04:00 committed by GitHub
parent 528672e95b
commit d4c80a4b61
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2192 changed files with 104647 additions and 53190 deletions

View file

@ -0,0 +1,117 @@
//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,username}} = event
if (item.id != `tfg:${pill_event}_pill`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:${pill_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:${pill_event}_tablet`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:${pill_event} 1800 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${username} ${x} ${y} ${z} 10 1.5 1`)
});
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = 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 ${username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = 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 ${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,username}} = event
if (item.id != `tfg:${salvo_event}_salvo`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:${salvo_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:absorption_salvo`) return
item.count--
player.addItemCooldown(item, 200)
player.runCommandSilent(`effect give ${username} minecraft:absorption 480 4 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const {item,server,player,player:{x,y,z,username}} = event
if (item.id != `tfg:instant_health_salvo`) return
item.count--
player.addItemCooldown(item, 100)
player.runCommandSilent(`effect give ${username} minecraft:instant_health 1 1 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${username} ${x} ${y} ${z} 10 2 1`)
});
// Vase Sounds
global.MINECRAFT_DYE_NAMES.forEach(color => {
BlockEvents.rightClicked(event => {
const {block,server,player,player:{x,y,z,username}} = event
if (block.id != `tfg:decorative_vase/${color}`) {return}{
server.runCommandSilent(`playsound tfc:block.quern.drag block ${username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
}})
});
BlockEvents.rightClicked(event => {
const {block,server,player,player:{x,y,z,username}} = event
if (block.id != 'tfg:decorative_vase') {return}{
server.runCommandSilent(`playsound tfc:block.quern.drag block ${username} ${block.x} ${block.y} ${block.z} 0.3 2.0 0.1`)
}});

View file

@ -0,0 +1,84 @@
LootJS.modifiers((event) => {
//Generated Vases Loot
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.addBlockLootModifier(`tfg:decorative_vase/generated/${color}`)
.removeLoot(Ingredient.all)
//ore
.pool((pool) => {
pool.rolls([4, 6]);
pool.addAlternativesLoot(
LootEntry.of('tfc:ore/normal_bismuthinite').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_bismuthinite').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_native_copper').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_native_copper').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_sphalerite').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_sphalerite').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_cassiterite').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_cassiterite').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_native_gold').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_native_gold').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_native_silver').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_native_silver').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:ore/normal_hematite').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:ore/rich_hematite').when((c) => c.randomChance(0.2)),
LootEntry.of('gtceu:rich_raw_rock_salt').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:rich_raw_salt').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:rich_raw_saltpeter').when((c) => c.randomChance(0.1)),
);
})
//seeds
.pool((pool) => {
pool.rolls([2, 8]);
pool.addAlternativesLoot(
LootEntry.of('tfc:seeds/onion').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:seeds/cabbage').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:seeds/potato').when((c) => c.randomChance(0.2)),
LootEntry.of('tfc:seeds/jute').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:seeds/sugarcane').when((c) => c.randomChance(0.1)),
LootEntry.of('firmalife:plant/pineapple_bush').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:plant/peach_sapling').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:plant/red_apple_sapling').when((c) => c.randomChance(0.1)),
);
})
//loot
.pool((pool) => {
pool.rolls([0, 3]);
pool.addAlternativesLoot(
LootEntry.of('tfc:wool_yarn').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:blubber').when((c) => c.randomChance(0.1)),
LootEntry.of('minecraft:bone').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:kaolin_clay').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:glue').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:burlap_cloth').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:wool_cloth').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:mortar').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:leather').when((c) => c.randomChance(0.1)),
LootEntry.of('chalk:black_chalk').when((c) => c.randomChance(0.1)),
LootEntry.of('chalk:red_chalk').when((c) => c.randomChance(0.1)),
LootEntry.of('chalk:white_chalk').when((c) => c.randomChance(0.1)),
LootEntry.of('minecraft:goat_horn').when((c) => c.randomChance(0.1)),
LootEntry.of('tfg:regeneration_pill').when((c) => c.randomChance(0.1)),
LootEntry.of('tfg:water_breathing_pill').when((c) => c.randomChance(0.1)),
LootEntry.of('tfg:night_vision_pill').when((c) => c.randomChance(0.1)),
LootEntry.of('tfg:haste_pill').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:small_raw_hide').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:medium_raw_hide').when((c) => c.randomChance(0.1)),
LootEntry.of('tfc:large_raw_hide').when((c) => c.randomChance(0.1)),
LootEntry.of('firmalife:beeswax').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:bismuth_bronze_pickaxe_head').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:bismuth_bronze_axe_head').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:bismuth_bronze_shovel_head').when((c) => c.randomChance(0.1)),
LootEntry.of('gtceu:bismuth_bronze_knife_head').when((c) => c.randomChance(0.1)),
);
})
});
});

View file

@ -0,0 +1,20 @@
// priority: 0
function registerTFGCollapseRecipes(event) {
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', 'minecraft:deepslate')
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', 'tfg:rock/hardened_deepslate')
event.recipes.tfc.collapse('minecraft:blackstone', 'minecraft:blackstone')
event.recipes.tfc.collapse('minecraft:blackstone', 'tfg:rock/hardened_blackstone')
event.recipes.tfc.collapse('minecraft:dripstone_block', 'minecraft:dripstone_block')
event.recipes.tfc.collapse('minecraft:dripstone_block', 'tfg:rock/hardened_dripstone')
event.recipes.tfc.collapse('tfc:rock/cobble/basalt', 'minecraft:basalt')
event.recipes.tfc.collapse('minecraft:cobbled_deepslate', '#forge:ores_in_ground/deepslate')
event.recipes.tfc.collapse('minecraft:blackstone', '#forge:ores_in_ground/pyroxenite')
event.recipes.tfc.collapse('minecraft:dripstone_block', '#forge:ores_in_ground/dripstone')
event.recipes.tfc.landslide('tfg:ash_pile', 'tfg:ash_pile')
event.recipes.tfc.landslide('minecraft:cobbled_deepslate', 'minecraft:cobbled_deepslate')
}

View file

@ -0,0 +1,123 @@
// priority: 0
function registerTFGConvertingRecipes(event) {
event.shapeless("afc:tree_tap", "treetap:tap")
event.shapeless('greate:steel_cogwheel', 'create:cogwheel')
event.shapeless('greate:large_steel_cogwheel', 'create:large_cogwheel')
event.shapeless('greate:steel_shaft', 'create:shaft')
event.shapeless('greate:steel_crushing_wheel', 'create:crushing_wheel')
event.shapeless('greate:steel_encased_fan', 'create:encased_fan')
event.shapeless('greate:steel_gearbox', 'create:gearbox')
event.shapeless('greate:steel_mechanical_mixer', 'create:mechanical_mixer')
event.shapeless('greate:steel_mechanical_saw', 'create:mechanical_saw')
event.shapeless('greate:steel_mechanical_pump', 'create:mechanical_pump')
event.shapeless('greate:rubber_belt_connector', 'create:belt_connector')
event.shapeless('greate:steel_vertical_gearbox', 'create:vertical_gearbox')
event.shapeless('create:zinc_ingot', 'gtceu:zinc_ingot')
event.shapeless('create:brass_ingot', 'gtceu:brass_ingot')
event.shapeless('vintageimprovements:vanadium_ingot', 'gtceu:vanadium_ingot')
event.shapeless('tfc:metal/ingot/black_steel', 'gtceu:black_steel_ingot')
event.shapeless('tfc:metal/ingot/red_steel', 'gtceu:red_steel_ingot')
event.shapeless('tfc:metal/ingot/blue_steel', 'gtceu:blue_steel_ingot')
event.shapeless('tfc:metal/double_ingot/cast_iron', 'gtceu:iron_double_ingot')
event.shapeless('tfc:metal/double_ingot/black_steel', 'gtceu:black_steel_double_ingot')
event.shapeless('tfc:metal/double_ingot/red_steel', 'gtceu:red_steel_double_ingot')
event.shapeless('tfc:metal/double_ingot/blue_steel', 'gtceu:blue_steel_double_ingot')
event.shapeless('create:zinc_nugget', 'gtceu:zinc_nugget')
event.shapeless('create:brass_nugget', 'gtceu:brass_nugget')
event.shapeless('create:copper_nugget', 'gtceu:copper_nugget')
event.shapeless('vintageimprovements:vanadium_nugget', 'gtceu:vanadium_nugget')
event.shapeless('create:copper_sheet', 'gtceu:copper_plate')
event.shapeless('create:brass_sheet', 'gtceu:brass_plate')
event.shapeless('create:golden_sheet', 'gtceu:gold_plate')
event.shapeless('vintageimprovements:cast_iron_sheet', 'gtceu:iron_plate')
event.shapeless('vintageimprovements:cobalt_sheet', 'gtceu:cobalt_plate')
event.shapeless('vintageimprovements:rose_gold_sheet', 'gtceu:rose_gold_plate')
event.shapeless('vintageimprovements:aluminum_sheet', 'gtceu:aluminium_plate')
event.shapeless('vintageimprovements:invar_sheet', 'gtceu:invar_plate')
event.shapeless('vintageimprovements:lead_sheet', 'gtceu:lead_plate')
event.shapeless('vintageimprovements:nickel_sheet', 'gtceu:nickel_plate')
event.shapeless('vintageimprovements:osmium_sheet', 'gtceu:osmium_plate')
event.shapeless('vintageimprovements:palladium_sheet', 'gtceu:palladium_plate')
event.shapeless('vintageimprovements:platinum_sheet', 'gtceu:platinum_plate')
event.shapeless('vintageimprovements:rhodium_sheet', 'gtceu:rhodium_plate')
event.shapeless('vintageimprovements:silver_sheet', 'gtceu:silver_plate')
event.shapeless('vintageimprovements:vanadium_sheet', 'gtceu:vanadium_plate')
event.shapeless('vintageimprovements:zinc_sheet', 'gtceu:zinc_plate')
event.shapeless('vintageimprovements:vanadium_block', 'gtceu:vanadium_block')
event.shapeless('create:zinc_block', 'gtceu:zinc_block')
event.shapeless('create:brass_block', 'gtceu:brass_block')
event.shapeless('create:crushed_raw_gold', 'gtceu:gold_purified_ore')
event.shapeless('create:crushed_raw_copper', 'gtceu:copper_purified_ore')
event.shapeless('create:crushed_raw_zinc', 'gtceu:zinc_purified_ore')
event.shapeless('create:crushed_raw_silver', 'gtceu:silver_purified_ore')
event.shapeless('create:crushed_raw_tin', 'gtceu:tin_purified_ore')
event.shapeless('create:crushed_raw_lead', 'gtceu:lead_purified_ore')
event.shapeless('tfc:ore/rich_native_copper', 'gtceu:rich_raw_copper')
event.shapeless('tfc:ore/normal_native_copper', 'minecraft:raw_copper')
event.shapeless('tfc:ore/poor_native_copper', 'gtceu:poor_raw_copper')
event.shapeless('tfc:ore/rich_native_gold', 'gtceu:rich_raw_gold')
event.shapeless('tfc:ore/normal_native_gold', 'minecraft:raw_gold')
event.shapeless('tfc:ore/poor_native_gold', 'gtceu:poor_raw_gold')
event.shapeless('tfc:ore/rich_tetrahedrite', 'gtceu:rich_raw_tetrahedrite')
event.shapeless('tfc:ore/normal_tetrahedrite', 'gtceu:raw_tetrahedrite')
event.shapeless('tfc:ore/poor_tetrahedrite', 'gtceu:poor_raw_tetrahedrite')
event.shapeless('tfc:ore/rich_malachite', 'gtceu:rich_raw_malachite')
event.shapeless('tfc:ore/normal_malachite', 'gtceu:raw_malachite')
event.shapeless('tfc:ore/poor_malachite', 'gtceu:poor_raw_malachite')
event.shapeless('tfc:ore/rich_hematite', 'gtceu:rich_raw_hematite')
event.shapeless('tfc:ore/normal_hematite', 'gtceu:raw_hematite')
event.shapeless('tfc:ore/poor_hematite', 'gtceu:poor_raw_hematite')
event.shapeless('tfc:ore/rich_cassiterite', 'gtceu:rich_raw_cassiterite')
event.shapeless('tfc:ore/normal_cassiterite', 'gtceu:raw_cassiterite')
event.shapeless('tfc:ore/poor_cassiterite', 'gtceu:poor_raw_cassiterite')
event.shapeless('tfc:ore/rich_bismuthinite', 'gtceu:rich_raw_bismuth')
event.shapeless('tfc:ore/normal_bismuthinite', 'gtceu:raw_bismuth')
event.shapeless('tfc:ore/poor_bismuthinite', 'gtceu:poor_raw_bismuth')
event.shapeless('tfc:ore/rich_magnetite', 'gtceu:rich_raw_magnetite')
event.shapeless('tfc:ore/normal_magnetite', 'gtceu:raw_magnetite')
event.shapeless('tfc:ore/poor_magnetite', 'gtceu:poor_raw_magnetite')
event.shapeless('tfc:ore/rich_limonite', 'gtceu:rich_raw_yellow_limonite')
event.shapeless('tfc:ore/normal_limonite', 'gtceu:raw_yellow_limonite')
event.shapeless('tfc:ore/poor_limonite', 'gtceu:poor_raw_yellow_limonite')
event.shapeless('tfc:ore/rich_garnierite', 'gtceu:rich_raw_garnierite')
event.shapeless('tfc:ore/normal_garnierite', 'gtceu:raw_garnierite')
event.shapeless('tfc:ore/poor_garnierite', 'gtceu:poor_raw_garnierite')
event.shapeless('tfc:ore/rich_native_silver', 'gtceu:rich_raw_silver')
event.shapeless('tfc:ore/normal_native_silver', 'gtceu:raw_silver')
event.shapeless('tfc:ore/poor_native_silver', 'gtceu:poor_raw_silver')
event.shapeless('tfc:ore/rich_sphalerite', 'gtceu:rich_raw_sphalerite')
event.shapeless('tfc:ore/normal_sphalerite', 'gtceu:raw_sphalerite')
event.shapeless('tfc:ore/poor_sphalerite', 'gtceu:poor_raw_sphalerite')
}

View file

@ -1,155 +1,17 @@
/**
*
* @param {Internal.RecipesEventJS} event
*/
const registerTFGRecipes = (event) => {
registerTFGPapermakingRecipes(event)
registerTFGRockRecipes(event)
registerTFGCollapseRecipes(event)
registerTFGMoldRecipes(event)
registerTFGTerrariumRecipes(event)
registerTFGMedicineRecipes(event)
registerTFGMiscellaneousRecipes(event)
registerTFGSupportRecipes(event)
const registerTFGRecipes = (event) =>
{
var 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)
}
var generatePotRecipe = (id, maxAmountOfInputItems, inputItem, inputFluid, inputFluidAmount, outputItem, ticks, temperature) =>
{
for(let i = 0; i < maxAmountOfInputItems; i++)
{
var 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.replaceInput({id: 'gtceu:lathe/lathe_logs'}, '#minecraft:logs', '#tfg:softwood')
//Create identical lathe recipe for hardwood
event.recipes.gtceu.lathe('lathe_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('4x gtceu:long_wood_rod', '2x gtceu:hardwood_dust')
.duration(160)
.EUt(7)
//Replace macerate logs into macerate softwood logs
event.replaceInput({id: 'gtceu:macerator/macerate_logs'}, '#minecraft:logs', '#tfg:softwood')
//Create identical macerator recipe for hardwood
event.recipes.gtceu.macerator('macerate_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('6x gtceu:hardwood_dust')
.chancedOutput('gtceu:hardwood_dust', 8000, 680)
.duration(70)
.EUt(2)
//Replace any recipe that outputs wood dust to use hardwood dust if it's ID string contains the name of one of the hardwood types.
//This absolutely fuckin sucks but it works
event.forEachRecipe({output: 'gtceu:wood_dust'}, r =>{
global.TFC_HARDWOOD_TYPES.forEach(hardwoodType =>
{
if(r.id.toString().includes(hardwoodType))
{
r.replaceOutput('gtceu:wood_dust', 'gtceu:hardwood_dust')
r.replaceOutput('gtceu:small_wood_dust', 'gtceu:small_hardwood_dust')
r.replaceOutput('gtceu:tiny_wood_dust', 'gtceu_tiny_hardwood_dust')
return;
}
})
})
//Replace any input that uses softwood dust to use our custom tag (we cant add it to the forge tag because it will literally fuck everything up by making softwood pulp obtainable using hardwood pulp)
event.replaceInput([
{not:{output: 'gtceu:small_wood_dust'}},
{not:{output: 'gtceu:tiny_wood_dust'}}
], 'gtceu:wood_dust', '#tfg:wood_dusts')
//Craft hardwood strips
event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless('4x tfg:hardwood_strip', ['#minecraft:axes', '#tfg:stripped_hardwood']))
.id('tfg:crafting/strip_hardwood')
generateCutterRecipe(event, `#tfg:hardwood`, 2, `8x tfg:hardwood_strip`, 200, 6, 'cutter/strip_hardwood')
//Soak hardwood strips
event.recipes.tfc.barrel_sealed('12000')
.inputs('tfg:hardwood_strip', TFC.fluidStackIngredient('#tfc:water', 100))
.outputItem('tfg:soaked_hardwood_strip')
.id('tfg:barrel/soak_hardwood_strip')
//Create Hardwood Dust using Quern and Millstone/Crushing Wheels
event.recipes.createMilling(['3x gtceu:small_hardwood_dust', Item.of('gtceu:small_hardwood_dust').withChance(0.5)], 'tfg:soaked_hardwood_strip')
.processingTime(100)
.id('tfg:mill/mill_soaked_hardwood_strip')
event.recipes.gtceu.macerator('tfg:macerator/macerate_hardwood_strips')
.itemInputs('#tfg:hardwood_strips')
.itemOutputs('gtceu:hardwood_dust')
.duration(50)
.EUt(2)
event.recipes.tfc.quern('2x gtceu:small_hardwood_dust', 'tfg:soaked_hardwood_strip')
.id('tfg:quern/soaked_hardwood_strip')
//Cook hardwood dust in lye
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_last', 'hit_last'])
.id('tfg:anvil/soaked_unrefined_paper')
event.recipes.createPressing(Item.of('tfg:soaked_unrefined_paper').withChance(0.8), 'gtceu:thermochemically_treated_hardwood_dust')
.id('tfg:pressing/soaked_unrefined_paper')
event.custom({
type: "firmalife:stomping",
ingredient: {
item: "gtceu:thermochemically_treated_hardwood_dust"
},
result:{
item: 'tfg:soaked_unrefined_paper'
},
input_texture: 'tfg:blocks/thermochemically_treated_hardwood_dust',
output_texture: 'tfg:blocks/soaked_unrefined_paper',
sound: 'minecraft:entity.slime.squish'
}).id('tfg:stomping/soaked_unrefined_paper')
//Dry the soaked unrefined paper
event.recipes.firmalife.drying('tfc:unrefined_paper', 'tfg:soaked_unrefined_paper')
.id('tfg:drying/unrefined_paper')
//alternatively, just put the thermochemically treated hardwood dust inside a forge hamemr
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_thermochemically_treated_hardwood_dust')
.itemInputs('gtceu:thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(20)
.EUt(4)
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_small_thermochemically_treated_hardwood_dust')
.itemInputs('4x gtceu:small_thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(30)
.EUt(4)
event.recipes.gtceu.forge_hammer('tfg:forge_hammer/paper_from_tiny_thermochemically_treated_hardwood_dust')
.itemInputs('9x gtceu:tiny_thermochemically_treated_hardwood_dust')
.itemOutputs('minecraft:paper')
.duration(40)
.EUt(4)
registerTFGConvertingRecipes(event)
}

View file

@ -0,0 +1,518 @@
// priority: 0
function registerTFGMedicineRecipes(event) {
//#region Antipoison
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:antipoison_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:antipoison_pill')
.id(`tfg:mixing_bowl/pill_antipoison`)
event.recipes.create.mixing(
'1x tfg:antipoison_pill',
['#forge:wax', '#tfg:antipoison_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_antipoison`)
event.recipes.create.mixing(
'1x tfg:antipoison_pill',
['#forge:wax', '#tfg:antipoison_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Poison
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:poison_ingredients', 'tfc:powder/sulfur'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:poison_pill')
.id(`tfg:mixing_bowl/pill_poison`)
event.recipes.create.mixing(
'1x tfg:poison_pill',
['#forge:wax', '#tfg:poison_ingredients', 'tfc:powder/sulfur', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_poison`)
event.recipes.create.mixing(
'1x tfg:poison_pill',
['#forge:wax', '#tfg:poison_ingredients', 'tfc:powder/sulfur', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
//#endregion
//#region Regeneration
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:regeneration_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:regeneration_pill')
.id(`tfg:mixing_bowl/pill_regeneration`)
event.recipes.create.mixing(
'1x tfg:regeneration_pill',
['#forge:wax', '#tfg:regeneration_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_regeneration`)
event.recipes.create.mixing(
'1x tfg:regeneration_pill',
['#forge:wax', '#tfg:regeneration_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Speed
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:speed_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:speed_pill')
.id(`tfg:mixing_bowl/pill_speed`)
event.recipes.create.mixing(
'1x tfg:speed_pill',
['#forge:wax', '#tfg:speed_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_speed`)
event.recipes.create.mixing(
'1x tfg:speed_pill',
['#forge:wax', '#tfg:speed_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Slowness
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:slowness_ingredients', 'tfc:powder/sulfur'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:slowness_pill')
.id(`tfg:mixing_bowl/pill_slowness`)
event.recipes.create.mixing(
'1x tfg:slowness_pill',
['#forge:wax', '#tfg:slowness_ingredients', 'tfc:powder/sulfur', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_slowness`)
event.recipes.create.mixing(
'1x tfg:slowness_pill',
['#forge:wax', '#tfg:slowness_ingredients', 'tfc:powder/sulfur', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
//#endregion
//#region Weakness
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:weakness_ingredients', 'tfc:powder/sulfur'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:weakness_pill')
.id(`tfg:mixing_bowl/pill_weakness`)
event.recipes.create.mixing(
'1x tfg:weakness_pill',
['#forge:wax', '#tfg:weakness_ingredients', 'tfc:powder/sulfur', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_weakness`)
event.recipes.create.mixing(
'1x tfg:weakness_pill',
['#forge:wax', '#tfg:weakness_ingredients', 'tfc:powder/sulfur', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
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', 'tfc:powder/sulfur')
.duration(200)
.EUt(21)
//#endregion
//#region Haste
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:haste_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:haste_pill')
.id(`tfg:mixing_bowl/pill_haste`)
event.recipes.create.mixing(
'1x tfg:haste_pill',
['#forge:wax', '#tfg:haste_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_haste`)
event.recipes.create.mixing(
'1x tfg:haste_pill',
['#forge:wax', '#tfg:haste_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Water Breathing
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:water_breathing_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:water_breathing_pill')
.id(`tfg:mixing_bowl/pill_water_breathing`)
event.recipes.create.mixing(
'1x tfg:water_breathing_pill',
['#forge:wax', '#tfg:water_breathing_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_water_breathing`)
event.recipes.create.mixing(
'1x tfg:water_breathing_pill',
['#forge:wax', '#tfg:water_breathing_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Night Vision
event.recipes.firmalife.mixing_bowl()
.ingredients(['#forge:wax', '#tfg:night_vision_ingredients', 'gtceu:tricalcium_phosphate_dust'], Fluid.of('tfc:spring_water', 250))
.outputItem('1x tfg:night_vision_pill')
.id(`tfg:mixing_bowl/pill_night_vision`)
event.recipes.create.mixing(
'1x tfg:night_vision_pill',
['#forge:wax', '#tfg:night_vision_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('tfc:spring_water', 250)])
.id(`tfg:create/mixer/spring_water/pill_night_vision`)
event.recipes.create.mixing(
'1x tfg:night_vision_pill',
['#forge:wax', '#tfg:night_vision_ingredients', 'gtceu:tricalcium_phosphate_dust', Fluid.of('gtceu:distilled_water', 50)])
.id(`tfg:create/mixer/distilled_water/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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Invisibility
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_invisibility`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:aminophenol', 250))
.itemOutputs('1x tfg:invisibility_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:invisibility_ingredients', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Fire Resistance
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_fire_resistance`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:aminophenol', 250))
.itemOutputs('1x tfg:fire_resistance_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:fire_resistance_ingredients', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Resistance
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_resistance`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:aminophenol', 250))
.itemOutputs('1x tfg:resistance_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:resistance_ingredients', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Instant Health
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_instant_health`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:aminophenol', 250))
.itemOutputs('1x tfg:instant_health_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:instant_health_ingredients', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
//#region Absorption
event.recipes.gtceu.mixer(`tfg:gtceu/mixer/salvo_absorption`)
.circuit(4)
.inputFluids(Fluid.of('gtceu:aminophenol', 250))
.itemOutputs('1x tfg:absorption_salvo')
.itemInputs('gtceu:sticky_resin', '#tfg:absorption_ingredients', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#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', 'gtceu:tricalcium_phosphate_dust')
.duration(200)
.EUt(21)
//#endregion
}

View file

@ -0,0 +1,192 @@
// priority: 0
/**
*
* @param {Internal.RecipesEventJS_} event
*/
function registerTFGMiscellaneousRecipes(event) {
//tfc:moss
event.replaceInput({}, 'minecraft:vine', '#tfc:moss')
//forge:wax
event.replaceInput({}, 'firmalife:beeswax', '#forge:wax')
//Moss
event.shapeless('1x minecraft:moss_block', [
'#tfc:dirt',
'#tfc:moss'
]).id(`tfg:shapeless/moss_block`)
event.shaped('6x minecraft:moss_carpet', [
'AA'
], {
A: 'minecraft:moss_block'
}).id(`tfg:shaped/moss_carpet`)
//paraffin
event.recipes.gtceu.chemical_reactor('tfg:paraffin_wax_from_lubricant')
.circuit(7)
.itemOutputs('2x tfg:paraffin_wax')
.outputFluids(Fluid.of('gtceu:oil_light', 25))
.inputFluids(Fluid.of('gtceu:lubricant', 250), Fluid.of('gtceu:acetone', 25))
.duration(500)
.EUt(21)
// 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), 5000, 300)
.itemOutput('tfg:conifer_rosin')
.id('tfg:pot/conifer_pitch_to_rosin')
// Decorative Vases
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(20)
.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(20)
.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')
// lactose & curd
event.recipes.gtceu.mixer('lactose_milk_cow')
.circuit(1)
.inputFluids(Fluid.of('minecraft:milk', 1000), Fluid.of('gtceu:acetic_acid', 25))
.itemOutputs('1x gtceu:lactose_dust')
.outputFluids(Fluid.of('tfc:curdled_milk', 1000))
.duration(300)
.EUt(30)
event.recipes.gtceu.mixer('lactose_milk_yak')
.circuit(1)
.inputFluids(Fluid.of('firmalife:yak_milk', 1000), Fluid.of('gtceu:acetic_acid', 25))
.itemOutputs('1x gtceu:lactose_dust')
.outputFluids(Fluid.of('firmalife:curdled_yak_milk', 1000))
.duration(300)
.EUt(30)
event.recipes.gtceu.mixer('lactose_milk_goat')
.circuit(1)
.inputFluids(Fluid.of('firmalife:goat_milk', 1000), Fluid.of('gtceu:acetic_acid', 25))
.itemOutputs('1x gtceu:lactose_dust')
.outputFluids(Fluid.of('firmalife:curdled_goat_milk', 1000))
.duration(300)
.EUt(30)
//Scaffolding Frame
event.shaped('tfg:scaffolding_frame',
[
'AAA',
'ABA',
'AAA'
],
{
A: '#forge:rods/wood',
B: '#forge:cloth'
}).id('tfg:shaped/scaffolding_frame');
event.recipes.gtceu.assembler('tfg:assembler/scaffolding_frame')
.itemInputs('8x #forge:rods/wood', '#forge:cloth')
.itemOutputs('tfg:scaffolding_frame')
.duration(10)
.EUt(2);
//Airship Hull
event.shaped('tfg:airship_hull', [
'A B',
'C C',
'CCC'
], {
A: '#forge:tools/screwdrivers',
B: '#forge:tools/hammers',
C: 'immersive_aircraft:hull'
}).id('tfg:shaped/airship_hull');
event.recipes.gtceu.assembler('tfg:assembler/airship_hull')
.itemInputs('5x immersive_aircraft:hull')
.itemOutputs('tfg:airship_hull')
.duration(40)
.circuit(1)
.EUt(10);
//Airship Balloon
event.shaped('tfg:airship_balloon', [
'ABA',
'BCB',
'ABA'
], {
A: '#forge:string',
B: 'immersive_aircraft:sail',
C: 'tfc:bone_needle'
}).id('tfg:shaped/airship_balloon')
event.recipes.gtceu.assembler('tfg:assembler/airship_balloon')
.itemInputs('4x immersive_aircraft:sail', '4x #forge:string')
.itemOutputs('tfg:airship_balloon')
.duration(40)
.circuit(1)
.EUt(10)
// Steam bloomery
event.shaped('gtceu:steam_bloomery', [
'CEC',
'DAD',
'CBC'
], {
A: 'tfc:bloomery',
B: '#forge:frames/bronze',
C: '#forge:rods/black_steel',
D: '#forge:screws/wrought_iron',
E: '#forge:tools/wrenches'
})
}

View file

@ -0,0 +1,276 @@
// priority: 0
function registerTFGMoldRecipes(event) {
event.shaped('tfg:mining_hammer_head_extruder_mold', [
'Sfh',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:sword_head_extruder_mold', [
'Shf',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:pickaxe_head_extruder_mold', [
'S ',
'hf ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:axe_head_extruder_mold', [
'S ',
' fh',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:hoe_head_extruder_mold', [
'S ',
' hf',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:scythe_head_extruder_mold', [
'S ',
' ',
'fh '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:file_head_extruder_mold', [
'S ',
' ',
'hf '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:hammer_head_extruder_mold', [
'Sf ',
' h ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:saw_head_extruder_mold', [
'Sh ',
' f ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:knife_head_extruder_mold', [
'S f',
' ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:butchery_knife_head_extruder_mold', [
'S h',
' ',
' f'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:shovel_head_extruder_mold', [
'S ',
'f ',
'h '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:spade_head_extruder_mold', [
'S ',
'f ',
' h'
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
event.shaped('tfg:propick_head_extruder_mold', [
'Sxf',
' ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:javelin_head_extruder_mold', [
'S x',
'f ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:chisel_head_extruder_mold', [
'S ',
'xf ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:mace_head_extruder_mold', [
'S ',
' xf',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
x: '#forge:tools/wire_cutters'
})
event.shaped('tfg:lamp_casting_mold', [
'Sh ',
' ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:trapdoor_casting_mold', [
'S h',
' ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:chain_casting_mold', [
'S ',
'h ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:bell_casting_mold', [
'S ',
' h ',
' m'
], {
S: 'gtceu:empty_mold',
h: '#forge:tools/hammers',
m: '#forge:tools/mallets'
})
event.shaped('tfg:mattock_head_extruder_mold', [
' h',
'fS ',
' '
], {
S: 'gtceu:empty_mold',
f: '#forge:tools/files',
h: '#forge:tools/hammers'
})
let steelIngots = ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4);
let steelDusts = ChemicalHelper.get(TagPrefix.dust, GTMaterials.Steel, 4);
global.TFG_EXTRUDER_MOLDS.forEach(mold => {
event.recipes.gtceu.arc_furnace(`arc_${mold}`.replace("tfg:", ""))
.itemInputs(mold)
.itemOutputs(steelIngots)
.duration(224)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
event.recipes.gtceu.macerator(`macerate_${mold}`.replace("tfg:", ""))
.itemInputs(mold)
.itemOutputs(steelDusts)
.duration(224)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.MACERATOR_RECYCLING)
event.recipes.gtceu.forming_press(`copy_shape_${mold}`.replace("tfg:", ""))
.itemInputs('gtceu:empty_mold')
.notConsumable(mold)
.itemOutputs(mold)
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
})
global.TFG_CASTING_MOLDS.forEach(mold => {
event.recipes.gtceu.arc_furnace(`arc_${mold}`.replace("tfg:", ""))
.itemInputs(mold)
.itemOutputs(steelIngots)
.duration(224)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
event.recipes.gtceu.macerator(`macerate_${mold}`.replace("tfg:", ""))
.itemInputs(mold)
.itemOutputs(steelDusts)
.duration(224)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.MACERATOR_RECYCLING)
event.recipes.gtceu.forming_press(`copy_shape_${mold}`.replace("tfg:", ""))
.itemInputs('gtceu:empty_mold')
.notConsumable(mold)
.itemOutputs(mold)
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
})
}

View file

@ -0,0 +1,148 @@
// priority: 0
function registerTFGPapermakingRecipes(event) {
var 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)
}
var generatePotRecipe = (id, maxAmountOfInputItems, inputItem, inputFluid, inputFluidAmount, outputItem, ticks, temperature) => {
for (let i = 0; i < maxAmountOfInputItems; i++) {
var 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.replaceInput({ id: 'gtceu:lathe/lathe_logs' }, '#minecraft:logs', '#tfg:softwood')
//Create identical lathe recipe for hardwood
event.recipes.gtceu.lathe('lathe_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('4x gtceu:long_wood_rod', '2x gtceu:hardwood_dust')
.duration(160)
.EUt(7)
//Replace macerate logs into macerate softwood logs
event.replaceInput({ id: 'gtceu:macerator/macerate_logs' }, '#minecraft:logs', '#tfg:softwood')
//Create identical macerator recipe for hardwood
event.recipes.gtceu.macerator('macerate_hardwood')
.itemInputs('#tfg:hardwood')
.itemOutputs('6x gtceu:hardwood_dust')
.chancedOutput('gtceu:hardwood_dust', 8000, 680)
.duration(70)
.EUt(2)
//Replace any recipe that outputs wood dust to use hardwood dust if it's ID string contains the name of one of the hardwood types.
//This absolutely fuckin sucks but it works
event.forEachRecipe({ output: 'gtceu:wood_dust' }, r => {
global.TFC_HARDWOOD_TYPES.forEach(hardwoodType => {
if (r.id.toString().includes(hardwoodType)) {
r.replaceOutput('gtceu:wood_dust', 'gtceu:hardwood_dust')
r.replaceOutput('gtceu:small_wood_dust', 'gtceu:small_hardwood_dust')
r.replaceOutput('gtceu:tiny_wood_dust', 'gtceu_tiny_hardwood_dust')
return;
}
})
})
//Replace any input that uses softwood dust to use our custom tag (we cant add it to the forge tag because it will literally fuck everything up by making softwood pulp obtainable using hardwood pulp)
event.replaceInput([
{ not: { output: 'gtceu:small_wood_dust' } },
{ not: { output: 'gtceu:tiny_wood_dust' } }
], 'gtceu:wood_dust', '#tfg:wood_dusts')
//Craft hardwood strips
event.recipes.tfc.damage_inputs_shapeless_crafting(event.shapeless('4x tfg:hardwood_strip', ['#minecraft:axes', '#tfg:stripped_hardwood']))
.id('tfg:crafting/strip_hardwood')
generateCutterRecipe(event, `#tfg: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')
//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_last', 'hit_last'])
.id('tfg:anvil/soaked_unrefined_paper')
event.recipes.createDeploying(Item.of('tfg:soaked_unrefined_paper').withChance(0.8), ['gtceu:thermochemically_treated_hardwood_dust', '#forge:tools/hammers'])
.id('tfg:pressing/soaked_unrefined_paper')
event.custom({
type: "firmalife:stomping",
ingredient: {
item: "gtceu:thermochemically_treated_hardwood_dust"
},
result: {
item: 'tfg:soaked_unrefined_paper'
},
input_texture: 'tfg: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,260 @@
// priority: 0
function registerTFGRockRecipes(event) {
// #region Nether rock recipes
// loose rocks to cobble, bricks to brick blocks
const GLUEING_TOGETHER = [
{ loose: 'tfg:loose/deepslate', block: 'minecraft:cobbled_deepslate' },
{ loose: 'beneath:blackstone_pebble', block: 'minecraft:blackstone' },
{ loose: 'tfg:brick/deepslate', block: '4x minecraft:deepslate_bricks' },
{ loose: 'tfg:loose/dripstone', block: 'minecraft:dripstone_block' }
]
GLUEING_TOGETHER.forEach(x => {
event.shaped(x.block, [
'ABA',
'BAB',
'ABA'
], {
A: x.loose,
B: 'tfc:mortar'
})
event.recipes.gtceu.assembler(`${x.loose}_to_${x.block}`.replace(/[: ]/g, '_'))
.itemInputs(`5x ${x.loose}`)
.inputFluids(Fluid.of('gtceu:concrete', 72))
.itemOutputs(x.block)
.circuit(2)
.duration(50)
.EUt(2)
})
// loose to bricks
const LOOSE_TO_BRICKS = [
{ loose: 'tfg:loose/deepslate', brick: 'tfg:brick/deepslate' }
]
LOOSE_TO_BRICKS.forEach(x => {
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless(
x.brick, [x.loose, '#tfc:chisels']
))
event.recipes.gtceu.assembler(`${x.loose}_to_${x.brick}`.replace(/:/g, '_'))
.itemInputs(x.loose)
.itemOutputs(x.brick)
.circuit(1)
.duration(40)
.EUt(8)
})
// raw to polished
const RAW_TO_POLISHED = [
{ raw: 'minecraft:deepslate', polished: 'minecraft:polished_deepslate' },
{ raw: 'minecraft:blackstone', polished: 'minecraft:polished_blackstone' },
{ raw: 'minecraft:deepslate_bricks', polished: 'minecraft:deepslate_tiles' },
{ raw: 'minecraft:deepslate_tiles', polished: 'minecraft:chiseled_deepslate' },
{ raw: 'minecraft:polished_blackstone_bricks', polished: 'minecraft:chiseled_polished_blackstone' },
{ raw: 'minecraft:basalt', polished: 'minecraft:smooth_basalt' },
{ raw: 'minecraft:smooth_basalt', polished: 'minecraft:polished_basalt' }
]
RAW_TO_POLISHED.forEach(x => {
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless(
x.polished, [x.raw, '#tfc:chisels']
))
event.recipes.gtceu.laser_engraver(`${x.raw}_to_${x.polished}`.replace(/:/g, '_'))
.itemInputs(x.raw)
.itemOutputs(x.polished)
.notConsumable('tfc:lens')
.duration(30)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: 'vintageimprovements:laser_cutting',
ingredients: [{ item: x.raw }],
results: [{item: x.polished }],
energy: GTValues.VA[GTValues.ULV] * 30 * 4,
maxChargeRate: GTValues.VA[GTValues.ULV] * 4
}).id(`tfg:vi/laser/tfg/${x.raw.replace(/:/g, '_')}_to_${x.polished.replace(/:/g, '_')}`)
})
// cracked bricks
const CRACKING = [
{ raw: 'minecraft:deepslate_bricks', cracked: 'minecraft:cracked_deepslate_bricks' },
{ raw: 'minecraft:deepslate_tiles', cracked: 'minecraft:cracked_deepslate_tiles' }
]
CRACKING.forEach(x => {
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless(
x.cracked, [x.raw, '#tfc:hammers']
))
event.recipes.gtceu.forge_hammer(`${x.raw}_to_${x.cracked}`.replace(/:/g, '_'))
.itemInputs(x.raw)
.itemOutputs(x.cracked)
.duration(12)
.EUt(8)
})
// forge hammer
const HAMMERING = [
{ raw: 'minecraft:deepslate', hammered: 'minecraft:cobbled_deepslate' },
{ raw: 'minecraft:cobbled_deepslate', hammered: 'tfc:sand/black' },
{ raw: 'minecraft:blackstone', hammered: 'tfc:sand/black' },
{ raw: 'beneath:crackrack', hammered: 'tfc:sand/pink' },
{ raw: 'minecraft:dripstone_block', hammered: 'tfc:sand/brown' }
]
HAMMERING.forEach(x => {
event.recipes.gtceu.forge_hammer(`${x.raw}_to_${x.hammered}`.replace(/:/g, '_'))
.itemInputs(x.raw)
.itemOutputs(x.hammered)
.duration(12)
.EUt(8)
})
// slabs, stairs, walls
const CUTTER = [
{
raw: 'minecraft:cobbled_deepslate',
stair: 'minecraft:cobbled_deepslate_stairs',
slab: 'minecraft:cobbled_deepslate_slab',
wall: 'minecraft:cobbled_deepslate_wall',
dust: 'gtceu:deepslate_dust',
loose: 'tfg:loose/deepslate'
},
{
raw: 'minecraft:polished_deepslate',
stair: 'minecraft:polished_deepslate_stairs',
slab: 'minecraft:polished_deepslate_slab',
wall: 'minecraft:polished_deepslate_wall',
dust: 'gtceu:deepslate_dust'
},
{
raw: 'minecraft:deepslate_bricks',
stair: 'minecraft:deepslate_brick_stairs',
slab: 'minecraft:deepslate_brick_slab',
wall: 'minecraft:deepslate_brick_wall',
dust: 'gtceu:deepslate_dust'
},
{
raw: 'minecraft:deepslate_tiles',
stair: 'minecraft:deepslate_tile_stairs',
slab: 'minecraft:deepslate_tile_slab',
wall: 'minecraft:deepslate_tile_wall',
dust: 'gtceu:deepslate_dust'
},
{
raw: 'minecraft:blackstone',
stair: 'minecraft:blackstone_stairs',
slab: 'minecraft:blackstone_slab',
wall: 'minecraft:blackstone_wall',
dust: 'gtceu:blackstone_dust',
loose: 'beneath:blackstone_pebble'
},
{
raw: 'minecraft:polished_blackstone',
stair: 'minecraft:polished_blackstone_stairs',
slab: 'minecraft:polished_blackstone_slab',
wall: 'minecraft:polished_blackstone_wall',
dust: 'gtceu:blackstone_dust'
},
{
raw: 'minecraft:polished_blackstone_bricks',
stair: 'minecraft:polished_blackstone_brick_stairs',
slab: 'minecraft:polished_blackstone_brick_slab',
wall: 'minecraft:polished_blackstone_brick_wall',
dust: 'gtceu:blackstone_dust'
}
]
CUTTER.forEach(x => {
if ("stair" in x) {
event.recipes.tfc.chisel(x.stair, x.raw, 'stair')
//event.stonecutting(x.stair, x.raw).id(`${x.raw}_to_${x.stair}`.replace(/:/g, '_'))
event.recipes.gtceu.macerator(`macerate_${x.stair}`.replace(/:/g, '_'))
.itemInputs(x.stair)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
if ("loose" in x) {
event.shapeless(`3x ${x.loose}`, [x.stair])
}
}
if ("slab" in x) {
event.recipes.tfc.chisel(x.slab, x.raw, 'slab')
//event.stonecutting(`2x ${x.slab}`, x.raw).id(`${x.raw}_to_${x.slab}`.replace(/:/g, '_'))
event.recipes.gtceu.macerator(`macerate_${x.slab}`.replace(/:/g, '_'))
.itemInputs(`2x ${x.slab}`)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
if ("loose" in x) {
event.shapeless(`2x ${x.loose}`, [x.slab])
}
}
if ("wall" in x) {
event.recipes.tfc.chisel(x.slab, x.raw, 'smooth')
//event.stonecutting(x.wall, x.raw).id(`${x.raw}_to_${x.wall}`.replace(/:/g, '_'))
event.recipes.gtceu.macerator(`macerate_${x.wall}`.replace(/:/g, '_'))
.itemInputs(x.wall)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
}
if ("loose" in x) {
event.shapeless(`4x ${x.loose}`, [x.raw])
}
})
const MACERATOR = [
{ block: 'minecraft:deepslate', dust: 'gtceu:deepslate_dust' },
{ block: 'minecraft:dripstone_block', dust: 'tfg:dripstone_dust' }
]
MACERATOR.forEach(x => {
event.recipes.gtceu.macerator(`macerate_${x.block}`.replace(/:/g, '_'))
.itemInputs(x.block)
.itemOutputs(x.dust)
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
// rock breaker
const ROCK_DUPING = [
'minecraft:deepslate',
'minecraft:cobbled_deepslate',
'minecraft:blackstone',
'minecraft:dripstone_block'
]
ROCK_DUPING.forEach(x => {
event.recipes.gtceu.rock_breaker(x)
.notConsumable(x)
.itemOutputs(x)
.duration(16)
.EUt(7)
})
// #endregion
}

View file

@ -0,0 +1,229 @@
// priority: 0
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.chemical_bath('tfg:gtceu/chemical_bath/reinforced_dark_concrete_support')
.inputFluids(Fluid.of('minecraft:water', 100))
.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('minecraft:water', 100))
.itemOutputs('1x tfg:dark_concrete_support')
.itemInputs('1x tfg:light_concrete_support')
.duration(60)
.EUt(GTValues.VA[GTValues.ULV])
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(4)
.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(4)
.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(4)
.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(4)
.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])
})
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('8x tfg:travertine_support', [
'AB ',
'AC ',
'AC '
],{
A: 'tfg:loose/dripstone',
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id('tfg:shaped/travertine_support'))
event.recipes.gtceu.assembler('tfg:gtceu/assembler/travertine_support')
.circuit(4)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs('8x tfg:travertine_support')
.itemInputs('3x tfg:loose/dripstone')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('8x tfg:migmatite_support', [
'AB ',
'AC ',
'AC '
],{
A: 'tfg:loose/deepslate',
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id('tfg:shaped/migmatite_support'))
event.recipes.gtceu.assembler('tfg:gtceu/assembler/migmatite_support')
.circuit(4)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs('8x tfg:migmatite_support')
.itemInputs('3x tfg:loose/deepslate')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('8x tfg:pyroxenite_support', [
'AB ',
'AC ',
'AC '
],{
A: 'beneath:blackstone_pebble',
B: '#tfc:chisels',
C: 'tfc:mortar'
}).id('tfg:shaped/pyroxenite_support'))
event.recipes.gtceu.assembler('tfg:gtceu/assembler/pyroxenite_support')
.circuit(4)
.inputFluids(Fluid.of('gtceu:concrete', 36))
.itemOutputs('8x tfg:pyroxenite_support')
.itemInputs('3x beneath:blackstone_pebble')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
// Metal Supports
event.recipes.tfc.damage_inputs_shaped_crafting(
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(4)
.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.tfc.anvil(
'4x 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(4)
.itemOutputs('8x tfg:steel_support')
.itemInputs('2x #forge:double_ingots/steel')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator('tfg:macerator/recycling/steel_support')
.itemInputs('tfg:steel_support')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Steel, 1)
)
.duration(GTMaterials.Steel.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfg:arc_furnace/recycling/steel_support')
.itemInputs('tfg:steel_support')
.itemOutputs(
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Steel, 2)
)
.duration(GTMaterials.Steel.getMass() * 1)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.extractor('tfg:extractor/recycling/steel_support')
.itemInputs('tfg:steel_support')
.outputFluids(Fluid.of('gtceu:steel', 36))
.duration(GTMaterials.Steel.getMass() * 1)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}

View file

@ -1,218 +1,215 @@
ServerEvents.recipes(event => {
event.remove({ id: 'gtceu:gas_collector/nether_air' })
event.remove({ id: 'minecraft:netherite_upgrade_smithing_template' })
event.remove({ id: 'gtceu:gas_collector/ender_air' })
event.remove({ id: 'gtceu:macerator/macerate_end_stone' })
event.remove({ id: 'minecraft:ender_chest' })
event.remove({ id: 'gtceu:assembler/ender_chest' })
event.remove({ id: 'minecraft:end_crystal' })
event.remove({ id: 'gtceu:assembler/end_crystal' })
// nether slurry
event.recipes.gtceu.mixer('tfg:nether_slurry')
.itemInputs('gtceu:basalt_dust', 'minecraft:blaze_powder', 'minecraft:gold_nugget')
.inputFluids(Fluid.of('minecraft:lava', 1000))
.outputFluids(Fluid.of('tfg:nether_slurry', 1000))
.duration(200)
.EUt(512)
event.recipes.gtceu.mixer('tfg:enriched_nether_slurry')
.itemInputs('minecraft:quartz', 'minecraft:redstone')
.inputFluids(Fluid.of('tfg:nether_slurry', 2000))
.outputFluids(Fluid.of('tfg:enriched_nether_slurry', 2000))
.duration(200)
.EUt(512)
// nether air
event.recipes.gtceu.nether_dome('tfg:slurry_to_air')
.inputFluids(Fluid.of('tfg:nether_slurry', 100))
.outputFluids(Fluid.of('gtceu:nether_air', 32000))
.duration(200)
.EUt(256)
.circuit(1)
event.recipes.gtceu.nether_dome('tfg:enriched_slurry_to_air')
.inputFluids(Fluid.of('tfg:enriched_nether_slurry', 100))
.outputFluids(Fluid.of('gtceu:nether_air', 128000))
.duration(200)
.EUt(256)
.circuit(1)
event.recipes.gtceu.nether_dome('tfg:quartz')
.itemInputs('gtceu:quartzite_gem')
.inputFluids(Fluid.of('tfg:nether_slurry', 25))
.itemOutputs('minecraft:quartz')
.duration(200)
.EUt(512)
.circuit(2)
// netherarium
event.shaped('gtceu:nether_dome', [
'ADA',
'CEC',
'FBF'
], {
A: 'minecraft:quartz',
B: 'minecraft:gold_block',
C: 'minecraft:blaze_rod',
D: 'gtceu:hv_emitter',
E: 'gtceu:hv_gas_collector',
F: 'gtceu:dense_obsidian_plate'
}).id('tfg:shaped/nether_dome2')
// netherrack
event.recipes.gtceu.chemical_bath('tfg:netherrack')
.itemInputs('#forge:stone')
.inputFluids(Fluid.of('gtceu:blaze', 144))
.itemOutputs('minecraft:netherrack')
.duration(200)
.EUt(512)
event.recipes.gtceu.macerator('tfg:obsidian')
.itemInputs('minecraft:obsidian')
.itemOutputs('gtceu:obsidian_dust')
.duration(100)
.EUt(512)
// nether bricks
event.shaped('4x minecraft:nether_bricks', [
'ABA',
'BAB',
'ABA'
], {
A: 'minecraft:nether_brick',
B: 'tfc:mortar'
}).id('tfg:shaped/nether_bricks')
event.recipes.gtceu.assembler('tfg:nether_bricks')
.itemInputs('5x minecraft:nether_brick')
.itemOutputs('4x minecraft:nether_bricks')
.inputFluids(Fluid.of('gtceu:concrete', 72))
.duration(50)
.EUt(2)
// ender slurry
event.recipes.gtceu.mixer('tfg:ender_slurry')
.itemInputs('gtceu:obsidian_dust', 'minecraft:end_stone')
.inputFluids(Fluid.of('gtceu:helium', 200), Fluid.of('gtceu:radon', 50))
.outputFluids(Fluid.of('tfg:ender_slurry', 250))
.duration(200)
.EUt(2048)
event.recipes.gtceu.mixer('tfg:enriched_ender_slurry')
.itemInputs('minecraft:chorus_fruit', 'ae2:ender_dust')
.inputFluids(Fluid.of('tfg:ender_slurry', 500))
.outputFluids(Fluid.of('tfg:enriched_ender_slurry', 500))
.duration(200)
.EUt(2048)
// ender air
event.recipes.gtceu.end_dome('tfg:slurry_to_air')
.inputFluids(Fluid.of('tfg:ender_slurry', 25))
.outputFluids(Fluid.of('gtceu:ender_air', 32000))
.duration(200)
.EUt(1024)
.circuit(1)
event.recipes.gtceu.end_dome('tfg:enriched_slurry_to_air')
.inputFluids(Fluid.of('tfg:enriched_ender_slurry', 25))
.outputFluids(Fluid.of('gtceu:ender_air', 128000))
.duration(200)
.EUt(1024)
.circuit(1)
event.recipes.gtceu.end_dome('tfg:pearls')
.itemInputs('gtceu:quantum_eye')
.inputFluids(Fluid.of('tfg:ender_slurry', 10))
.itemOutputs('2x minecraft:ender_pearl')
.duration(200)
.EUt(2048)
.circuit(2)
// enderarium
event.shaped('gtceu:end_dome', [
'DAD',
'CEC',
'FBF'
], {
A: 'gtceu:ev_emitter',
B: 'minecraft:end_stone',
C: 'tfc:metal/bars/wrought_iron',
D: 'minecraft:end_crystal',
E: 'gtceu:ev_gas_collector',
F: 'gtceu:dense_obsidian_plate'
}).id('tfg:shaped/end_dome')
// parts for the ender dome
event.shaped('minecraft:end_crystal', [
'AAA',
'ABA',
'ACA'
], {
A: 'gtceu:tempered_glass',
B: 'gtceu:quantum_eye',
C: '#forge:exquisite_gems'
}).id('tfg:shaped/end_crystal')
// chorus fruit
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_uranium')
.itemInputs('#tfc:foods/fruits', 'gtceu:uranium_235_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:uranium_dust')
.duration(500)
.EUt(480)
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_plutonium')
.itemInputs('#tfc:foods/fruits', 'gtceu:plutonium_241_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:plutonium_dust')
.duration(200)
.EUt(480)
event.recipes.gtceu.centrifuge('tfg:kovarex')
.itemInputs('40x gtceu:uranium_235_dust', '5x gtceu:uranium_dust')
.itemOutputs('41x gtceu:uranium_235_dust', '2x gtceu:uranium_dust')
.duration(1000)
.EUt(512)
// end stone
event.recipes.gtceu.chemical_bath('tfg:end_stone')
.itemInputs('#forge:stone')
.inputFluids(Fluid.of('gtceu:argon', 100))
.itemOutputs('minecraft:end_stone')
.duration(100)
.EUt(2048)
// dragon egg
event.recipes.gtceu.chemical_bath('tfg:dragon_egg')
.itemInputs('#forge:eggs')
.inputFluids(Fluid.of('gtceu:thorium', 1296))
.itemOutputs('minecraft:dragon_egg')
.duration(2000)
.EUt(2048)
// end portal frame
event.shaped('tfg:artificial_end_portal_frame', [
'A',
'B',
'C'
], {
A: 'minecraft:ender_eye',
B: 'minecraft:cyan_carpet',
C: 'minecraft:end_stone'
}).id('tfg:shaped/artificial_end_portal_frame')
})
// priority: 0
function registerTFGTerrariumRecipes(event) {
event.remove({ id: 'gtceu:gas_collector/nether_air' })
event.remove({ id: 'gtceu:gas_collector/ender_air' })
// nether slurry
event.recipes.gtceu.mixer('tfg:nether_slurry')
.itemInputs('gtceu:basalt_dust', 'minecraft:blaze_powder', 'minecraft:gold_nugget')
.inputFluids(Fluid.of('minecraft:lava', 1000))
.outputFluids(Fluid.of('tfg:nether_slurry', 1000))
.duration(200)
.EUt(512)
event.recipes.gtceu.mixer('tfg:enriched_nether_slurry')
.itemInputs('minecraft:quartz', 'minecraft:redstone')
.inputFluids(Fluid.of('tfg:nether_slurry', 2000))
.outputFluids(Fluid.of('tfg:enriched_nether_slurry', 2000))
.duration(200)
.EUt(512)
// nether air
event.recipes.gtceu.nether_dome('tfg:slurry_to_air')
.inputFluids(Fluid.of('tfg:nether_slurry', 100))
.outputFluids(Fluid.of('gtceu:nether_air', 32000))
.duration(200)
.EUt(256)
.circuit(1)
event.recipes.gtceu.nether_dome('tfg:enriched_slurry_to_air')
.inputFluids(Fluid.of('tfg:enriched_nether_slurry', 100))
.outputFluids(Fluid.of('gtceu:nether_air', 128000))
.duration(200)
.EUt(256)
.circuit(1)
event.recipes.gtceu.nether_dome('tfg:quartz')
.itemInputs('gtceu:quartzite_gem')
.inputFluids(Fluid.of('tfg:nether_slurry', 25))
.itemOutputs('minecraft:quartz')
.duration(200)
.EUt(512)
.circuit(2)
// netherarium
event.shaped('gtceu:nether_dome', [
'ADA',
'CEC',
'FBF'
], {
A: 'minecraft:quartz',
B: 'minecraft:gold_block',
C: 'minecraft:blaze_rod',
D: 'gtceu:hv_emitter',
E: 'gtceu:hv_gas_collector',
F: 'gtceu:dense_obsidian_plate'
}).id('tfg:shaped/nether_dome2')
// netherrack
event.recipes.gtceu.chemical_bath('tfg:netherrack')
.itemInputs('#forge:stone')
.inputFluids(Fluid.of('gtceu:blaze', 144))
.itemOutputs('minecraft:netherrack')
.duration(200)
.EUt(512)
event.recipes.gtceu.macerator('tfg:obsidian')
.itemInputs('minecraft:obsidian')
.itemOutputs('gtceu:obsidian_dust')
.duration(100)
.EUt(512)
// nether bricks
event.shaped('4x minecraft:nether_bricks', [
'ABA',
'BAB',
'ABA'
], {
A: 'minecraft:nether_brick',
B: 'tfc:mortar'
}).id('tfg:shaped/nether_bricks')
event.recipes.gtceu.assembler('tfg:nether_bricks')
.itemInputs('5x minecraft:nether_brick')
.itemOutputs('4x minecraft:nether_bricks')
.inputFluids(Fluid.of('gtceu:concrete', 72))
.duration(50)
.EUt(2)
// ender slurry
event.recipes.gtceu.mixer('tfg:ender_slurry')
.itemInputs('gtceu:obsidian_dust', 'minecraft:end_stone')
.inputFluids(Fluid.of('gtceu:helium', 200), Fluid.of('gtceu:radon', 50))
.outputFluids(Fluid.of('tfg:ender_slurry', 250))
.duration(200)
.EUt(2048)
event.recipes.gtceu.mixer('tfg:enriched_ender_slurry')
.itemInputs('minecraft:chorus_fruit', 'ae2:ender_dust')
.inputFluids(Fluid.of('tfg:ender_slurry', 500))
.outputFluids(Fluid.of('tfg:enriched_ender_slurry', 500))
.duration(200)
.EUt(2048)
// ender air
event.recipes.gtceu.end_dome('tfg:slurry_to_air')
.inputFluids(Fluid.of('tfg:ender_slurry', 25))
.outputFluids(Fluid.of('gtceu:ender_air', 32000))
.duration(200)
.EUt(1024)
.circuit(1)
event.recipes.gtceu.end_dome('tfg:enriched_slurry_to_air')
.inputFluids(Fluid.of('tfg:enriched_ender_slurry', 25))
.outputFluids(Fluid.of('gtceu:ender_air', 128000))
.duration(200)
.EUt(1024)
.circuit(1)
event.recipes.gtceu.end_dome('tfg:pearls')
.itemInputs('gtceu:quantum_eye')
.inputFluids(Fluid.of('tfg:ender_slurry', 10))
.itemOutputs('2x minecraft:ender_pearl')
.duration(200)
.EUt(2048)
.circuit(2)
// enderarium
event.shaped('gtceu:end_dome', [
'DAD',
'CEC',
'FBF'
], {
A: 'gtceu:ev_emitter',
B: 'minecraft:end_stone',
C: 'tfc:metal/bars/wrought_iron',
D: 'minecraft:end_crystal',
E: 'gtceu:ev_gas_collector',
F: 'gtceu:dense_obsidian_plate'
}).id('tfg:shaped/end_dome')
// parts for the ender dome
event.shaped('minecraft:end_crystal', [
'AAA',
'ABA',
'ACA'
], {
A: 'gtceu:tempered_glass',
B: 'gtceu:quantum_eye',
C: '#forge:exquisite_gems'
}).id('tfg:shaped/end_crystal')
// chorus fruit
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_uranium')
.itemInputs('#tfc:foods/fruits', 'gtceu:uranium_235_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:uranium_dust')
.duration(500)
.EUt(480)
.circuit(1)
event.recipes.gtceu.large_chemical_reactor('tfg:chorus_fruit_plutonium')
.itemInputs('#tfc:foods/fruits', 'gtceu:plutonium_241_dust')
.itemOutputs('minecraft:chorus_fruit', 'gtceu:plutonium_dust')
.duration(200)
.EUt(480)
event.recipes.gtceu.large_chemical_reactor('tfg:kovarex')
.itemInputs('40x gtceu:uranium_235_dust', '5x gtceu:uranium_dust')
.itemOutputs('41x gtceu:uranium_235_dust', '2x gtceu:uranium_dust')
.duration(600)
.EUt(GTValues.VA[GTValues.LuV])
.circuit(2)
// end stone
event.recipes.gtceu.chemical_bath('tfg:end_stone')
.itemInputs('#forge:stone')
.inputFluids(Fluid.of('gtceu:argon', 100))
.itemOutputs('minecraft:end_stone')
.duration(100)
.EUt(2048)
// dragon egg
event.recipes.gtceu.chemical_bath('tfg:dragon_egg')
.itemInputs('#forge:eggs')
.inputFluids(Fluid.of('gtceu:thorium', 1296))
.itemOutputs('minecraft:dragon_egg')
.duration(2000)
.EUt(2048)
// end portal frame
event.shaped('tfg:artificial_end_portal_frame', [
'A',
'B',
'C'
], {
A: 'minecraft:ender_eye',
B: 'minecraft:cyan_carpet',
C: 'minecraft:end_stone'
}).id('tfg:shaped/artificial_end_portal_frame')
}

View file

@ -1,12 +1,346 @@
const registerTFGItemTags = (event) =>
{
event.add('tfg:hardwood_strips', 'tfg:hardwood_strip')
event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip')
//Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok.
event.add('tfg:wood_dusts', 'gtceu:hardwood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust')
event.add('tfg:wood_dusts', 'gtceu:wood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust')
const registerTFGItemTags = (event) => {
//Decorative Vases
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.add('c:hidden_from_recipe_viewers', `tfg:decorative_vase/generated/${color}`)
event.add('tfg:decorative_vases/generated', `tfg:decorative_vase/generated/${color}`)
event.add('tfg:decorative_vases', `tfg:decorative_vase/${color}`)
event.add('tfg:decorative_vases/unfired', `tfg:decorative_vase/unfired/${color}`)
})
event.add('tfg:decorative_vases', 'tfg:decorative_vase')
event.add('tfg:decorative_vases/unfired', 'tfg:decorative_vase/unfired')
// #region Paper from wood
event.add('tfg:hardwood_strips', 'tfg:hardwood_strip')
event.add('tfg:hardwood_strips', 'tfg:soaked_hardwood_strip')
//Adding any of these dusts to the forge dusts/wood tag will make it so you can craft softwood pulp using hardwood pulp. which is not ok.
event.add('tfg:wood_dusts', 'gtceu:hardwood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_hardwood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_hardwood_dust')
event.add('tfg:wood_dusts', 'gtceu:wood_dust')
event.add('tfg:tiny_wood_dusts', 'gtceu:tiny_wood_dust')
event.add('tfg:small_wood_dusts', 'gtceu:small_wood_dust')
event.add('forge:wax', 'tfg:paraffin_wax')
event.add('forge:wax', 'firmalife:beeswax')
event.add('forge:wax', 'tfg:conifer_rosin')
// #endregion
// #region Medicines
event.add('tfg:antipoison_ingredients', 'tfc:plant/blood_lily')
event.add('tfg:antipoison_ingredients', 'tfc:plant/pistia')
event.add('tfg:antipoison_ingredients', 'tfc:powder/bismuthinite')
event.add('tfg:antipoison_ingredients', 'gtceu:mica_dust')
event.add('tfg:antipoison_ingredients', 'gtceu:fullers_earth_dust')
event.add('tfg:poison_ingredients', 'tfc:plant/butterfly_milkweed')
event.add('tfg:poison_ingredients', 'tfc:plant/grape_hyacinth')
event.add('tfg:poison_ingredients', 'tfc:plant/lily_of_the_valley')
event.add('tfg:poison_ingredients', 'tfc:plant/pulsatilla')
event.add('tfg:poison_ingredients', 'firmalife:food/nightshade_berry')
event.add('tfg:poison_ingredients', 'minecraft:red_mushroom')
event.add('tfg:regeneration_ingredients', 'tfc:plant/lilac')
event.add('tfg:regeneration_ingredients', 'tfc:plant/field_horsetail')
event.add('tfg:regeneration_ingredients', 'tfc:plant/licorice_fern')
event.add('tfg:regeneration_ingredients', 'tfc:plant/sacred_datura')
event.add('tfg:speed_ingredients', 'tfc:plant/labrador_tea')
event.add('tfg:speed_ingredients', 'firmalife:raw_honey')
event.add('tfg:slowness_ingredients', 'tfc:plant/marigold')
event.add('tfg:weakness_ingredients', 'tfc:plant/laminaria')
event.add('tfg:haste_ingredients', 'minecraft:sugar')
event.add('tfg:haste_ingredients', 'afc:birch_sugar')
event.add('tfg:haste_ingredients', 'afc:maple_sugar')
event.add('tfg:water_breathing_ingredients', 'tfc:powder/saltpeter')
event.add('tfg:water_breathing_ingredients', 'tfc:powder/charcoal')
event.add('tfg:night_vision_ingredients', 'tfc:food/carrot')
event.add('tfg:invisibility_ingredients', 'tfc:plant/calendula')
event.add('tfg:fire_resistance_ingredients', 'tfc:plant/cattail')
event.add('tfg:fire_resistance_ingredients', 'tfc:plant/meads_milkweed')
event.add('tfg:fire_resistance_ingredients', 'firmalife:plant/bay_laurel')
event.add('tfg:resistance_ingredients', 'tfc:plant/hibiscus')
event.add('tfg:resistance_ingredients', 'gtceu:calcium_dust')
event.add('tfg:instant_health_ingredients', 'tfc:plant/foxglove')
event.add('tfg:instant_health_ingredients', 'tfc:plant/artists_conk')
event.add('tfg:absorption_ingredients', 'tfc:plant/poppy')
event.add('tfg:luck_ingredients', 'tfc:plant/goldenrod')
event.add('tfg:luck_ingredients', 'tfc:plant/heather')
// #endregion
//region Airplane Upgrades
global.AIRCRAFT_UPGRADES.forEach(value => {
event.add('immersive_aircraft:upgrades', `tfg:${value}`);
})
// #region 0.7.19 -> 0.9 conversion
event.add('c:hidden_from_recipe_viewers', 'treetap:tap')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:brass_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:vanadium_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:black_steel_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:red_steel_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:blue_steel_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:iron_double_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:black_steel_double_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:red_steel_double_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:blue_steel_double_ingot')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_nugget')
event.add('c:hidden_from_recipe_viewers', 'gtceu:brass_nugget')
event.add('c:hidden_from_recipe_viewers', 'gtceu:copper_nugget')
event.add('c:hidden_from_recipe_viewers', 'gtceu:vanadium_nugget')
event.add('c:hidden_from_recipe_viewers', 'gtceu:copper_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:brass_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:gold_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:iron_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:cobalt_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rose_gold_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:aluminium_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:invar_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:lead_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:nickel_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:osmium_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:palladium_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:platinum_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rhodium_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:silver_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:vanadium_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_plate')
event.add('c:hidden_from_recipe_viewers', 'gtceu:vanadium_block')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_block')
event.add('c:hidden_from_recipe_viewers', 'gtceu:brass_block')
event.add('c:hidden_from_recipe_viewers', 'gtceu:gold_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:copper_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:zinc_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:silver_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:tin_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:lead_purified_ore')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_copper')
event.add('c:hidden_from_recipe_viewers', 'minecraft:raw_copper')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_copper')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_gold')
event.add('c:hidden_from_recipe_viewers', 'minecraft:raw_gold')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_gold')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_tetrahedrite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_tetrahedrite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_tetrahedrite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_malachite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_malachite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_malachite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_hematite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_hematite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_hematite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_cassiterite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_cassiterite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_cassiterite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_bismuth')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_bismuth')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_bismuth')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_magnetite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_magnetite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_magnetite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_yellow_limonite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_yellow_limonite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_yellow_limonite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_sphalerite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_sphalerite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_sphalerite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_garnierite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_garnierite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_garnierite')
event.add('c:hidden_from_recipe_viewers', 'gtceu:rich_raw_silver')
event.add('c:hidden_from_recipe_viewers', 'gtceu:raw_silver')
event.add('c:hidden_from_recipe_viewers', 'gtceu:poor_raw_silver')
//#endregion
}
const registerTFGBlockTags = (event) => {
event.add('minecraft:mineable/shovel', 'tfg:ash_pile')
// #region Nether blocks
event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate')
event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_deepslate')
event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_deepslate')
event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_deepslate')
event.add('tfc:grass_plantable_on', 'tfg:rock/hardened_deepslate')
event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_deepslate')
event.add('tfc:rock/hardened', 'tfg:rock/hardened_deepslate')
event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_blackstone')
event.add('minecraft:moss_replaceable', 'tfg:rock/hardened_blackstone')
event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_blackstone')
event.add('beneath:nether_bush_plantable_on', 'tfg:rock/hardened_blackstone')
event.add('tfc:creeping_plantable_on', 'tfg:rock/hardened_blackstone')
event.add('tfc:rock/hardened', 'tfg:rock/hardened_blackstone')
event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_dripstone')
event.add('minecraft:base_stone_nether', 'tfg:rock/hardened_dripstone')
event.add('tfc:rock/hardened', 'tfg:rock/hardened_dripstone')
// #endregion
}
const registerTFGFluidTags = (event) => {
event.add('tfc:usable_in_pot', 'tfg:latex')
event.add('tfc:usable_in_barrel', 'tfg:latex')
event.add('tfc:usable_in_wooden_bucket', 'tfg:latex')
event.add('tfc:usable_in_pot', 'tfg:vulcanized_latex')
event.add('tfc:usable_in_barrel', 'tfg:vulcanized_latex')
event.add('tfc:usable_in_wooden_bucket', 'tfg:vulcanized_latex')
event.add('tfc:usable_in_pot', 'tfg:conifer_pitch')
event.add('tfc:usable_in_barrel', 'tfg:conifer_pitch')
event.add('tfc:usable_in_wooden_bucket', 'tfg:conifer_pitch')
}
const registerTFGBiomeTags = (event) => {
//#region TFG Structure Biomes
event.add('tfg:has_structure/plains_temperate_0', 'tfc:plains')
event.add('tfg:has_structure/plains_temperate_0', 'tfc:highlands')
event.add('tfg:has_structure/aqueduct', 'tfc:plains')
event.add('tfg:has_structure/aqueduct', 'tfc:highlands')
event.add('tfg:has_structure/aqueduct', 'tfc:lowlands')
event.add('tfg:has_structure/aqueduct', 'tfc:badlands')
event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_oceanic_mountains')
event.add('tfg:has_structure/ocean_moai_0', 'tfc:volcanic_mountains')
//#endregion
// #region Nether biomes
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/lush_hollow')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/lush_hollow')
event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/lush_hollow')
event.add('minecraft:spawns_cold_variant_frogs', 'tfg:nether/lush_hollow')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/decaying_caverns')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/decaying_caverns')
event.add('minecraft:allows_surface_slime_spawns', 'tfg:nether/decaying_caverns')
event.add('minecraft:spawns_warm_variant_frogs', 'tfg:nether/decaying_caverns')
event.add('minecraft:has_closer_water_fog', 'tfg:nether/decaying_caverns')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/basalt_deltas')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/ash_forest')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/ash_forest')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/lava_floes')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/lava_floes')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/webbed_lair')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/webbed_lair')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/gneiss_caves')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/gneiss_caves')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/diorite_caves')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/diorite_caves')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/gabbro_caves')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/gabbro_caves')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/granite_caves')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/granite_caves')
event.add('minecraft:has_structure/nether_fossil', 'tfg:nether/schist_caves')
event.add('minecraft:has_structure/bastion_remnant', 'tfg:nether/schist_caves')
// #endregion
}
const registerTFGPlacedFeatures = (event) => {
// #region Nether ores
event.add('tfg:nether_veins', 'beneath:vein/cursecoal')
event.add('tfg:nether_veins', 'beneath:vein/sylvite')
event.add('tfg:nether_veins', 'beneath:vein/crackrack_pipe')
// Lower only
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_naquadah')
// Full height
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_garnet')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_garnierite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_gold')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_graphite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_hematite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_limonite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_magnetite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_molybdenum')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_pitchblende')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_quartz')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_sapphire')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_scheelite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_sheldonite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_topaz')
// Upper only
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_apatite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_basaltic_sands')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_bauxite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_beryllium')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_cassiterite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_copper')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_garnet_tin')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_lapis')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_lubricant')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_manganese')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_monazite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_mica')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_olivine')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_redstone')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_saltpeter')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_silver')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_sphalerite')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_sulfur')
event.add('tfg:nether_veins', 'tfg:nether/vein/nether_tetrahedrite')
// #endregion
// #region Nether decorations
event.add('tfg:nether_underground_decoration', 'minecraft:spring_open')
event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob')
event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed')
// #endregion
}