merged from upstream

This commit is contained in:
illuc 2026-02-17 22:42:19 +02:00
commit d86b4816d7
1836 changed files with 67562 additions and 25471 deletions

View file

@ -410,6 +410,9 @@ const registerAdAstraRecipes = (event) => {
.EUt(2)
// Buttons
event.shapeless(`3x ad_astra:${x.type}_plating_button`, [`ad_astra:${x.type}_plating_pressure_plate`, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${x.type}_pressure_plate_to_button`)
generateCutterRecipe(event, `ad_astra:${x.type}_plating_pressure_plate`, `6x ad_astra:${x.type}_plating_button`, 50, 7, `ad_astra_${x.type}_button`)
// Doors
@ -450,7 +453,7 @@ const registerAdAstraRecipes = (event) => {
.itemOutputs('ad_astra:steel_door')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true, true)
TFGHelpers.registerMaterialInfo('ad_astra:steel_door', [GTMaterials.Steel, 2, GTMaterials.Glass, 3/4, GTMaterials.Polyethylene, 1/4])
event.recipes.gtceu.assembler(`tfg:ad_astra_steel_trapdoor`)
.itemInputs('tfc:metal/trapdoor/steel', '#forge:glass_panes')
@ -458,7 +461,7 @@ const registerAdAstraRecipes = (event) => {
.itemOutputs('ad_astra:steel_trapdoor')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true, true)
TFGHelpers.registerMaterialInfo('ad_astra:steel_trapdoor', [GTMaterials.Steel, 1, GTMaterials.Glass, 3/4, GTMaterials.Polyethylene, 1/4])
// Etrium only has factory block, encased block, plateblock, panel, and (storage) block

View file

@ -48,9 +48,13 @@ const registerAdAstraItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', item)
})
event.add('c:hidden_from_recipe_viewers', 'ad_astra:alphacene_mushroom')
event.add('c:hidden_from_recipe_viewers', 'ad_astra:aeronos_mushroom')
event.add('c:hidden_from_recipe_viewers', 'ad_astra:strophar_mushroom')
event.add('c:hidden_from_recipe_viewers', 'tfg:tier_3_double_rocket')
event.add('c:hidden_from_recipe_viewers', 'tfg:tier_4_double_rocket')
// Deco blocks
const DECO_BLOCKS = [ 'iron', 'steel', 'desh', 'calorite', 'ostrum' ];
DECO_BLOCKS.forEach(block => {
@ -68,6 +72,12 @@ const registerAdAstraItemTags = (event) => {
event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_plateblock')
event.add('tfg:ad_astra_etrium_blocks', 'ad_astra:etrium_panel')
event.add('ad_astra:held_over_head', 'tfg:tier_1_double_rocket')
event.add('ad_astra:held_over_head', 'tfg:tier_2_double_rocket')
event.add('ad_astra:held_over_head', 'tfg:tier_3_double_rocket')
event.add('ad_astra:held_over_head', 'tfg:tier_4_double_rocket')
global.AD_ASTRA_WOOD.forEach(wood => {
if (wood.log) {
@ -117,11 +127,11 @@ const registerAdAstraBlockTags = (event) => {
event.add(`tfg:ad_astra_${block}_block`, `ad_astra:encased_${block}_block`)
})
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_factory_block')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:encased_etrium_block')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_plateblock')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_panel')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_block')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_factory_block')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:encased_etrium_block')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_plateblock')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_panel')
event.add('tfg:ad_astra_etrium_block', 'ad_astra:etrium_block')
}
const registerAdAstraBiomeTags = (event) => {

View file

@ -25,7 +25,7 @@ const registerAE2Recipes = (event) => {
'BA ',
'CCB',
], {
A: '#forge:rods',
A: '#forge:rods/wooden',
B: '#forge:plates/steel',
C: '#forge:exquisite_gems/certus_quartz',
}).id('tfg:crafting/certus_quartz_cutting_knife')
@ -35,7 +35,7 @@ const registerAE2Recipes = (event) => {
'BA ',
'CCB',
], {
A: '#forge:rods',
A: '#forge:rods/wooden',
B: '#forge:plates/steel',
C: '#forge:exquisite_gems/nether_quartz',
}).id('tfg:crafting/nether_quartz_cutting_knife')
@ -59,7 +59,7 @@ const registerAE2Recipes = (event) => {
], {
A: 'ae2:wireless_receiver',
B: 'ae2:calculation_processor',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
}).addMaterialInfo().id('tfg:crafting/wireless_access_point')
// Wireless Receiver
@ -68,7 +68,7 @@ const registerAE2Recipes = (event) => {
'CDC',
'AEA'
], {
A: '#ae2:glass_cable',
A: '#ae2:smart_cable',
B: 'ae2:fluix_pearl',
C: 'gtceu:ev_sensor',
D: '#forge:rods/titanium',
@ -94,7 +94,7 @@ const registerAE2Recipes = (event) => {
' A '
], {
A: '#forge:plates/red_alloy',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: 'minecraft:lever'
}).addMaterialInfo().id('tfg:crafting/toggle_bus')
@ -297,7 +297,7 @@ const registerAE2Recipes = (event) => {
' A '
], {
A: '#forge:plates/steel',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: 'minecraft:redstone_torch',
D: 'ae2:calculation_processor',
}).addMaterialInfo().id('tfg:crafting/level_emitter')
@ -309,7 +309,7 @@ const registerAE2Recipes = (event) => {
' A '
], {
A: '#forge:plates/steel',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: 'minecraft:redstone_torch',
D: 'ae2:calculation_processor',
E: 'ae2:charged_certus_quartz_crystal'
@ -346,7 +346,7 @@ const registerAE2Recipes = (event) => {
], {
A: '#forge:plates/stainless_steel',
B: '#gtceu:circuits/mv',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: 'gtceu:aluminium_crate',
E: 'ae2:terminal'
}).addMaterialInfo().id('tfg:crafting/me_chest')
@ -359,7 +359,7 @@ const registerAE2Recipes = (event) => {
], {
A: '#forge:plates/steel',
B: 'ae2:engineering_processor',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: '#gtceu:circuits/mv',
E: '#forge:plates/titanium'
}).addMaterialInfo().id('tfg:crafting/drive')
@ -371,7 +371,7 @@ const registerAE2Recipes = (event) => {
], {
A: '#forge:plates/steel',
B: 'ae2:engineering_processor',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: '#gtceu:circuits/mv',
E: 'minecraft:shulker_shell'
}).id('tfg:crafting/drive_shulker')
@ -383,7 +383,7 @@ const registerAE2Recipes = (event) => {
'ABA'
], {
A: '#forge:plates/glass',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: '#forge:dusts/fluix',
D: '#forge:gems/fluix',
}).addMaterialInfo().id('tfg:crafting/spatial_pylon')
@ -396,7 +396,7 @@ const registerAE2Recipes = (event) => {
], {
A: '#forge:plates/glass',
B: 'ae2:drive',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: '#forge:plates/titanium',
E: 'ae2:engineering_processor'
}).addMaterialInfo().id('tfg:crafting/io_port')
@ -408,7 +408,7 @@ const registerAE2Recipes = (event) => {
], {
A: '#forge:plates/glass',
B: 'ae2:drive',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: 'minecraft:shulker_shell',
E: 'ae2:engineering_processor'
}).id('tfg:crafting/io_port_shulker')
@ -420,7 +420,7 @@ const registerAE2Recipes = (event) => {
'DED'
], {
A: '#forge:plates/glass',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: 'ae2:io_port',
D: '#forge:plates/titanium',
E: 'ae2:engineering_processor'
@ -432,7 +432,7 @@ const registerAE2Recipes = (event) => {
'DED'
], {
A: '#forge:plates/glass',
B: '#ae2:glass_cable',
B: '#ae2:smart_cable',
C: 'ae2:io_port',
D: 'minecraft:shulker_shell',
E: 'ae2:engineering_processor'
@ -739,6 +739,15 @@ const registerAE2Recipes = (event) => {
.circuit(2)
.duration(10)
.EUt(480)
event.recipes.gtceu.assembler('fluix_smart_cable_from_covered')
.itemInputs(
'4x ae2:fluix_covered_cable',
'#forge:dusts/redstone')
.itemOutputs('4x ae2:fluix_smart_cable')
.circuit(1)
.duration(10)
.EUt(480)
// Covered dense cable
@ -1146,7 +1155,7 @@ const registerAE2Recipes = (event) => {
event.recipes.gtceu.assembler('ae2:level_emitter')
.itemInputs(
'minecraft:redstone_torch',
'#ae2:glass_cable',
'#ae2:smart_cable',
'#forge:plates/steel',
'ae2:calculation_processor')
.itemOutputs('ae2:level_emitter')
@ -1160,7 +1169,7 @@ const registerAE2Recipes = (event) => {
.itemInputs(
'#ae2:interface',
'2x gtceu:mv_electric_piston',
'#ae2:glass_cable')
'#ae2:smart_cable')
.inputFluids(Fluid.of('tfg:fluix', 144))
.itemOutputs('ae2:storage_bus')
.circuit(1)
@ -1174,7 +1183,7 @@ const registerAE2Recipes = (event) => {
'#forge:plates/wrought_iron',
'ae2:annihilation_core',
'2x gtceu:mv_robot_arm',
'#ae2:glass_cable')
'#ae2:smart_cable')
.inputFluids(Fluid.of('tfg:fluix', 144))
.itemOutputs('ae2:import_bus')
.circuit(2)
@ -1188,7 +1197,7 @@ const registerAE2Recipes = (event) => {
'#forge:plates/wrought_iron',
'ae2:formation_core',
'2x gtceu:mv_robot_arm',
'#ae2:glass_cable')
'#ae2:smart_cable')
.inputFluids(Fluid.of('tfg:fluix', 144))
.itemOutputs('ae2:export_bus')
.circuit(3)
@ -1865,15 +1874,15 @@ const registerAE2Recipes = (event) => {
// Quartz Glass
event.recipes.gtceu.alloy_smelter('ae2:quartz_glass')
.itemInputs('5x #forge:dusts/certus_quartz', '4x #forge:glass')
.itemOutputs('4x ae2:quartz_glass')
.itemInputs('#forge:glass', '#forge:dusts/certus_quartz')
.itemOutputs('ae2:quartz_glass')
.duration(20)
.EUt(120)
.addMaterialInfo(true)
// Vibrant Quartz Glass
event.recipes.gtceu.alloy_smelter('ae2:quartz_vibrant_glass')
.itemInputs('ae2:quartz_glass', '8x #forge:dusts/glowstone')
.itemInputs('ae2:quartz_glass', '#forge:dusts/glowstone')
.itemOutputs('ae2:quartz_vibrant_glass')
.duration(20)
.EUt(480)
@ -2305,46 +2314,6 @@ const registerAE2Recipes = (event) => {
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
// Certus deco blocks
event.stonecutting('ae2:quartz_block', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:cut_quartz_block', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:smooth_quartz_block', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_bricks', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_pillar', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:chiseled_quartz_block', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:cut_quartz_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:smooth_quartz_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_brick_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:chiseled_quartz_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_pillar_stairs', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:cut_quartz_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:smooth_quartz_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_brick_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:chiseled_quartz_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('ae2:quartz_pillar_wall', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:quartz_slab', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:cut_quartz_slab', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:smooth_quartz_slab', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:quartz_brick_slab', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:chiseled_quartz_slab', '#tfg:certus_quartz_blocks')
event.stonecutting('2x ae2:quartz_pillar_slab', '#tfg:certus_quartz_blocks')
event.recipes.gtceu.macerator('tfg:macerate_certus_deco')
.itemInputs('#tfg:certus_quartz_blocks')
.itemOutputs('4x #forge:dusts/certus_quartz')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
event.recipes.gtceu.macerator('tfg:macerate_sky_stone')
.itemInputs('#tfg:sky_stone_blocks')
.itemOutputs('ae2:sky_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
// other deco

View file

@ -13,19 +13,6 @@ const registerAE2ItemTags = (event) => {
event.removeAll('ae2:p2p_attunements/fe_p2p_tunnel')
event.add('tfg:certus_quartz_blocks', 'gtceu:certus_quartz_block')
event.add('tfg:certus_quartz_blocks', 'ae2:quartz_block')
event.add('tfg:certus_quartz_blocks', 'ae2:cut_quartz_block')
event.add('tfg:certus_quartz_blocks', 'ae2:smooth_quartz_block')
event.add('tfg:certus_quartz_blocks', 'ae2:quartz_bricks')
event.add('tfg:certus_quartz_blocks', 'ae2:quartz_pillar')
event.add('tfg:certus_quartz_blocks', 'ae2:chiseled_quartz_block')
event.add('tfg:sky_stone_blocks', 'ae2:sky_stone_block')
event.add('tfg:sky_stone_blocks', 'ae2:smooth_sky_stone_block')
event.add('tfg:sky_stone_blocks', 'ae2:sky_stone_brick')
event.add('tfg:sky_stone_blocks', 'ae2:sky_stone_small_brick')
event.add('tfg:stone_dusts', 'ae2:sky_dust')
event.add('tfg:reactant_fluix_ruby', 'gtceu:ruby_gem')

View file

@ -71,6 +71,9 @@ const registerAFCRecipes = (event) => {
// ? -> Деревянная кнопка
event.remove({ id: `afc:crafting/wood/${wood}_button` })
event.shapeless(`3x afc:wood/planks/${wood}_button`, [`afc:wood/planks/${wood}_pressure_plate`, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${wood}_pressure_plate_to_button`)
generateCutterRecipe(event, `afc:wood/planks/${wood}_pressure_plate`, `6x afc:wood/planks/${wood}_button`, 50, 2, `${wood}_button`)
//Stomping Barrel
@ -86,7 +89,37 @@ const registerAFCRecipes = (event) => {
}).id(`afc:crafting/wood/${wood}_stomping_barrel`)
})
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`afc:wood/log/${wood}`)
.itemOutputs(`afc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`afc:wood/wood/${wood}`)
.itemOutputs(`afc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_log/${wood}`, `afc:wood/log/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_log`)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_wood/${wood}`, `afc:wood/wood/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_wood`)
});
global.AFC_SAPLINGS.forEach(wood => {
event.shaped(`4x afc:wood/fallen_leaves/${wood.sapling}`,[
'AA',
'AA'
], {
A: `afc:wood/leaves/${wood.sapling}`
}).id(`tfg:shaped/afc/${wood.sapling}_leaves_to_fallen_leaves`);
});
// #endregion
@ -234,33 +267,6 @@ const registerAFCRecipes = (event) => {
.outputItem('afc:birch_sugar')
.id('tfg:barrel/birch_syrup_to_sugar')
// Stripped logs
global.AFC_WOOD_TYPES.forEach(wood => {
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`afc:wood/log/${wood}`)
.itemOutputs(`afc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`afc:wood/wood/${wood}`)
.itemOutputs(`afc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_log/${wood}`, `afc:wood/log/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_log`)
event.recipes.vintageimprovements.polishing(`afc:wood/stripped_wood/${wood}`, `afc:wood/wood/${wood}`)
.speedLimits(0)
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${wood}_wood`)
})
const MORE_STRIPPING = [
{ wood: 'black_oak', stripped: 'oak', stripped_mod: 'tfc' },
{ wood: 'rainbow_eucalyptus', stripped: 'eucalyptus', stripped_mod: 'afc' },
@ -293,4 +299,45 @@ const registerAFCRecipes = (event) => {
.processingTime(50 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER)
.id(`tfg:vi/lathe/stripping_${x.wood}_wood`)
})
/**
* @property {Array} afcWoodRecyclingIndex - Wood recycling material index.
*/
const afcWoodRecyclingIndex = [
['afc:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['afc:wood/planks/{type}', ['{wood}', 8]],
['afc:wood/planks/{type}_door', ['{wood}', 6]],
['afc:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['afc:wood/planks/{type}_fence', ['{wood}', 4]],
['afc:wood/planks/{type}_log_fence', ['{wood}', 8]],
['afc:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['afc:wood/planks/{type}_slab', ['{wood}', 2]],
['afc:wood/planks/{type}_stairs', ['{wood}', 3]],
['afc:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['afc:wood/planks/{type}_button', ['{wood}', 1]],
['afc:wood/chest/{type}', ['{wood}', 16]],
['afc:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
global.AFC_HARDWOOD_TYPES.forEach(type => {
afcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
global.AFC_SOFTWOOD_TYPES.forEach(type => {
afcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
}

View file

@ -69,21 +69,21 @@ const registerAFCItemTags = (event) => {
event.add("tfg:rosin_logs", "#tfc:white_cedar_logs")
event.add("tfg:rosin_logs", "#tfc:douglas_fir_logs")
event.add("tfg:rosin_saplings", 'tfc:wood/leaves/aspen')
event.add("tfg:rosin_saplings", 'afc:wood/leaves/coast_spruce')
event.add("tfg:rosin_saplings", 'tfc:wood/leaves/spruce')
event.add("tfg:rosin_saplings", 'afc:wood/leaves/black_spruce')
event.add("tfg:rosin_saplings", 'afc:wood/leaves/sitka_spruce')
event.add("tfg:rosin_saplings", 'tfc:wood/leaves/douglas_fir')
event.add("tfg:rosin_saplings", 'tfc:wood/leaves/white_cedar')
event.add("tfg:rosin_leaves", 'tfc:wood/leaves/aspen')
event.add("tfg:rosin_leaves", 'afc:wood/leaves/coast_spruce')
event.add("tfg:rosin_leaves", 'tfc:wood/leaves/spruce')
event.add("tfg:rosin_leaves", 'afc:wood/leaves/black_spruce')
event.add("tfg:rosin_leaves", 'afc:wood/leaves/sitka_spruce')
event.add("tfg:rosin_leaves", 'tfc:wood/leaves/douglas_fir')
event.add("tfg:rosin_leaves", 'tfc:wood/leaves/white_cedar')
event.add("tfg:rosin_leaves", 'tfc:wood/sapling/aspen')
event.add("tfg:rosin_leaves", 'afc:wood/sapling/coast_spruce')
event.add("tfg:rosin_leaves", 'tfc:wood/sapling/spruce')
event.add("tfg:rosin_leaves", 'afc:wood/sapling/black_spruce')
event.add("tfg:rosin_leaves", 'afc:wood/sapling/sitka_spruce')
event.add("tfg:rosin_leaves", 'tfc:wood/sapling/douglas_fir')
event.add("tfg:rosin_leaves", 'tfc:wood/sapling/white_cedar')
event.add("tfg:rosin_saplings", 'tfc:wood/sapling/aspen')
event.add("tfg:rosin_saplings", 'afc:wood/sapling/coast_spruce')
event.add("tfg:rosin_saplings", 'tfc:wood/sapling/spruce')
event.add("tfg:rosin_saplings", 'afc:wood/sapling/black_spruce')
event.add("tfg:rosin_saplings", 'afc:wood/sapling/sitka_spruce')
event.add("tfg:rosin_saplings", 'tfc:wood/sapling/douglas_fir')
event.add("tfg:rosin_saplings", 'tfc:wood/sapling/white_cedar')
// Maple Syrup Tag

View file

@ -2,29 +2,23 @@
"use strict";
const registerAsticorCartsRecipes = (event) => {
event.remove({ id: 'astikorcarts:animal_cart' })
event.remove({ id: 'astikorcarts:supply_cart' })
event.remove({ id: 'astikorcarts:plow' })
event.remove({ id: 'astikorcarts:wheel' })
event.remove({ id: 'astikorcarts:animal_cart' });
event.remove({ id: 'astikorcarts:supply_cart' });
event.remove({ id: 'astikorcarts:plow' });
event.remove({ id: 'astikorcarts:wheel' });
event.recipes.gtceu.macerator(`tfg:recycle_astikor_animal_cart`)
.itemInputs('#tfcastikorcarts:animal_cart')
.itemOutputs('#forge:dusts/brass')
.duration(100)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
global.TFC_HARDWOOD_TYPES.forEach(type => {
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:wheel/${type}`, [GTMaterials.get('hardwood'), 2]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:supply_cart/${type}`, [GTMaterials.Brass, 1, GTMaterials.get('hardwood'), 8, GTMaterials.Wood, 12]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:plow/${type}`, [GTMaterials.Brass, 1, GTMaterials.get('hardwood'), 8]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:animal_cart/${type}`, [GTMaterials.Brass, 1, GTMaterials.get('hardwood'), 14]);
});
global.TFC_SOFTWOOD_TYPES.forEach(type => {
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:wheel/${type}`, [GTMaterials.Wood, 2]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:supply_cart/${type}`, [GTMaterials.Brass, 1, GTMaterials.Wood, 20]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:plow/${type}`, [GTMaterials.Brass, 1, GTMaterials.Wood, 8]);
TFGHelpers.registerMaterialInfo(`tfcastikorcarts:animal_cart/${type}`, [GTMaterials.Brass, 1, GTMaterials.Wood, 14]);
});
event.recipes.gtceu.macerator(`tfg:recycle_astikor_supply_cart`)
.itemInputs('#tfcastikorcarts:supply_cart')
.itemOutputs('#forge:dusts/brass')
.duration(100)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.macerator(`tfg:recycle_astikor_plow`)
.itemInputs('#tfcastikorcarts:plow')
.itemOutputs('#forge:dusts/brass')
.duration(100)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
}
event.replaceInput({ mod: 'tfcastikorcarts' }, '#forge:rods', '#mcw_tfc_aio:metal_rods');
};

View file

@ -0,0 +1,12 @@
// priority: 0
"use strict";
function registerBeneathLoots(event) {
event.addEntityLootModifier('beneath:red_elk')
.addLoot(LootEntry.of('waterflasks:bladder').when(c => c.randomChance(0.1)))
event.addEntityLootModifier('beneath:red_elk')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([2, 4], ['tfc:food/venison'])
.addWeightedLoot([1, 2], ['tfc:blubber'])
}

View file

@ -36,6 +36,7 @@ const registerBeneathRecipes = (event) => {
event.remove({ id: 'beneath:crafting/wood/warped_lumber_log' })
event.remove({ id: 'beneath:crafting/wood/warped_lumber_planks' })
event.remove({ id: 'beneath:crafting/wood/warped_slab_undo' })
event.remove({ id: 'beneath:crafting/ancient_altar' })
event.shaped('beneath:unposter', [
'ABA',
@ -48,14 +49,14 @@ const registerBeneathRecipes = (event) => {
}).id('beneath:crafting/unposter')
event.shapeless('beneath:hellbricks', [
'#forge:stone_bricks',
'minecraft:nether_bricks',
'minecraft:magma_cream',
'tfc:powder/sulfur',
'tfc:soot'
]).id('tfg:shapeless/hellbricks_from_soot')
event.shapeless('beneath:hellbricks', [
'#forge:stone_bricks',
'minecraft:nether_bricks',
'minecraft:magma_cream',
'tfc:powder/sulfur',
'tfc:powder/wood_ash'
@ -63,15 +64,6 @@ const registerBeneathRecipes = (event) => {
event.recipes.tfc.landslide('beneath:soul_clay', 'beneath:soul_clay')
Ingredient.of('#beneath:mushrooms').stacks.forEach(element => {
const itemId = element.id;
const recipeId = `greenhouse_${itemId.replace(':', '_')}`;
generateGreenHouseRecipe(event, element.withCount(4), '#tfc:any_fresh_water', 8000, element.withCount(24),
recipeId, 'minecraft:the_nether', 8, element.withCount(4), GTValues.VH[GTValues.LV]);
});
event.shaped('beneath:wood/sewing_table/crimson', [
' AB',
'CCC',
@ -93,4 +85,57 @@ const registerBeneathRecipes = (event) => {
C: 'beneath:wood/planks/warped',
D: 'beneath:wood/log/warped'
}).id('tfg:shaped/warped_sewing_table')
event.shaped(`4x beneath:wood/fallen_leaves/crimson`,[
'AA',
'AA'
], {
A: `beneath:wood/leaves/crimson`
}).id(`tfg:shaped/beneath/crimson_leaves_to_fallen_leaves`);
event.shaped(`4x beneath:wood/fallen_leaves/warped`,[
'AA',
'AA'
], {
A: `beneath:wood/leaves/warped`
}).id(`tfg:shaped/beneath/warped_leaves_to_fallen_leaves`);
/**
* @property {Array} beneathWoodRecyclingIndex - Wood recycling material index.
*/
const beneathWoodRecyclingIndex = [
['beneath:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['beneath:wood/planks/{type}', ['{wood}', 8]],
['beneath:wood/planks/{type}_door', ['{wood}', 6]],
['beneath:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['beneath:wood/planks/{type}_fence', ['{wood}', 4]],
['beneath:wood/planks/{type}_log_fence', ['{wood}', 8]],
['beneath:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['beneath:wood/planks/{type}_slab', ['{wood}', 2]],
['beneath:wood/planks/{type}_stairs', ['{wood}', 3]],
['beneath:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['beneath:wood/planks/{type}_button', ['{wood}', 1]],
['beneath:wood/chest/{type}', ['{wood}', 16]],
['beneath:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
beneathWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', 'crimson');
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
beneathWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', 'warped');
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
}

View file

@ -1,32 +1,5 @@
"use strict";
const registerBeneathBlockTags = (event) => {
global.BENEATH_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
event.add('forge:ores', 'beneath:ore/nether_cursecoal')
event.add('forge:ores', 'beneath:ore/blackstone_sylvite')
event.add('beneath:mushrooms', 'minecraft:red_mushroom')
event.add('beneath:mushrooms', 'minecraft:brown_mushroom')
event.add('beneath:poisonous_mushrooms', 'minecraft:red_mushroom')
event.add('tfc:can_landslide', 'beneath:soul_clay')
event.remove('beneath:sparks_on_sulfur')
event.add('beneath:blackstone_decor', 'minecraft:blackstone');
event.remove('beneath:blackstone')
event.remove('minecraft:leaves', 'beneath:wood/leaves/crimson')
event.remove('minecraft:leaves', 'beneath:wood/leaves/warped')
event.add('tfg:do_not_destroy_in_space', 'beneath:wood/leaves/crimson')
event.add('tfg:do_not_destroy_in_space', 'beneath:wood/leaves/warped')
}
const registerBeneathItemTags = (event) => {
global.BENEATH_DISABLED_ITEMS.forEach(item => {
@ -35,9 +8,7 @@ const registerBeneathItemTags = (event) => {
})
event.add("forge:raw_materials/cursecoal", "beneath:cursecoal")
event.add("forge:raw_materials/sylvite", "tfc:ores/sylvite")
event.add('forge:ores', 'beneath:ore/nether_cursecoal')
event.add('forge:ores', 'beneath:ore/blackstone_sylvite')
event.add('forge:mushrooms', '#beneath:mushrooms')
@ -54,4 +25,47 @@ const registerBeneathItemTags = (event) => {
event.add('tfg:do_not_destroy_in_space', 'beneath:wood/leaves/warped')
event.add('tfc:sewing_tables', 'beneath:wood/sewing_table/crimson')
event.add('tfc:sewing_tables', 'beneath:wood/sewing_table/warped')
}
event.add('tfg:softwood', 'beneath:wood/log/crimson')
event.add('tfg:softwood', 'beneath:wood/wood/crimson')
event.add('tfg:softwood', 'beneath:wood/stripped_log/crimson')
event.add('tfg:softwood', 'beneath:wood/stripped_wood/crimson')
event.add('tfg:stripped_softwood', 'beneath:wood/stripped_log/crimson')
event.add('tfg:stripped_softwood', 'beneath:wood/stripped_wood/crimson')
event.add('tfg:hardwood', 'beneath:wood/log/warped')
event.add('tfg:hardwood', 'beneath:wood/wood/warped')
event.add('tfg:hardwood', 'beneath:wood/stripped_log/warped')
event.add('tfg:hardwood', 'beneath:wood/stripped_wood/warped')
event.add('tfg:stripped_hardwood', 'beneath:wood/stripped_log/warped')
event.add('tfg:stripped_hardwood', 'beneath:wood/stripped_wood/warped')
event.add("tfg:rubber_plants", "beneath:gleamflower")
event.add("tfg:rubber_plants", "beneath:burpflower")
event.add("tfg:rubber_plants", "beneath:food/fools_funnel")
}
const registerBeneathBlockTags = (event) => {
global.BENEATH_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
event.add('forge:ores', 'beneath:ore/nether_cursecoal')
event.add('beneath:mushrooms', 'minecraft:red_mushroom')
event.add('beneath:mushrooms', 'minecraft:brown_mushroom')
event.add('beneath:poisonous_mushrooms', 'minecraft:red_mushroom')
event.add('tfc:can_landslide', 'beneath:soul_clay')
event.remove('beneath:sparks_on_sulfur')
event.add('beneath:blackstone_decor', 'minecraft:blackstone');
event.remove('beneath:blackstone')
event.remove('minecraft:leaves', 'beneath:wood/leaves/crimson')
event.remove('minecraft:leaves', 'beneath:wood/leaves/warped')
event.add('tfg:do_not_destroy_in_space', 'beneath:wood/leaves/crimson')
event.add('tfg:do_not_destroy_in_space', 'beneath:wood/leaves/warped')
}

View file

@ -0,0 +1,16 @@
// priority: 0
"use strict";
function registerBlockRunnerBlockTags(event) {
// BlockRunner is only included as a dependency for Roads n Roofs, so things like jetpacks
// and planes don't go supersonic when just above a road. We don't actually care about
// BlockRunner's own boost effects
event.removeAll('blockrunner:slow_blocks')
event.removeAll('blockrunner:very_slow_blocks')
event.removeAll('blockrunner:quick_blocks')
event.removeAll('blockrunner:very_quick_blocks')
event.removeAll('blockrunner:slightly_slow_blocks')
event.removeAll('blockrunner:slightly_quick_blocks')
}

View file

@ -29,11 +29,11 @@ const registerBuildingGadgetsRecipes = (event) => {
// Copy Paste Gadget
event.recipes.gtceu.assembler('buildinggadgets2:/assembler/gadget_copy_paste')
.itemInputs('1x gtceu:iv_emitter','2x gtceu:iv_fluid_regulator','6x #forge:plates/tungsten_steel', '2x gtceu:iv_robot_arm', '1x gtceu:computer_monitor_cover', '1x gtceu:lapotron_crystal', '1x ae2:spatial_storage_cell_2')
.itemInputs('1x gtceu:ev_emitter','2x gtceu:ev_fluid_regulator','6x #forge:plates/titanium', '2x gtceu:ev_robot_arm', '1x gtceu:computer_monitor_cover', '1x #gtceu:batteries/ev', '1x ae2:spatial_storage_cell_2', '3x #forge:double_plates/ostrum')
.circuit(4)
.itemOutputs('buildinggadgets2:gadget_copy_paste')
.duration(160)
.EUt(8100)
.EUt(1925)
.addMaterialInfo(true)
// Dustruction Gadget
@ -47,11 +47,19 @@ const registerBuildingGadgetsRecipes = (event) => {
// Cut Paste Gadget
event.recipes.gtceu.assembler('buildinggadgets2:/assembler/gadget_cut_paste')
.itemInputs('1x gtceu:iv_sensor','2x gtceu:iv_fluid_regulator','6x #forge:plates/tungsten_steel', '2x gtceu:iv_robot_arm', '1x gtceu:computer_monitor_cover', '1x gtceu:energy_crystal', '1x ae2:inverter_card')
.itemInputs('1x gtceu:ev_sensor','2x gtceu:ev_fluid_regulator','6x #forge:plates/titanium', '2x gtceu:ev_robot_arm', '1x gtceu:computer_monitor_cover', '1x #gtceu:batteries/ev', '1x ae2:inverter_card', '1x species:kinetic_core')
.circuit(4)
.itemOutputs('buildinggadgets2:gadget_cut_paste')
.duration(160)
.EUt(8100)
.EUt(1925)
.addMaterialInfo(true)
event.recipes.gtceu.assembler('buildinggadgets2:/assembler/gadget_cut_paste_iv_circuits')
.itemInputs('1x gtceu:ev_sensor','2x gtceu:ev_fluid_regulator','6x #forge:plates/titanium', '2x gtceu:ev_robot_arm', '1x gtceu:computer_monitor_cover', '1x #gtceu:batteries/ev', '1x ae2:inverter_card', '2x #gtceu:circuits/iv')
.circuit(4)
.itemOutputs('buildinggadgets2:gadget_cut_paste')
.duration(160)
.EUt(1925)
.addMaterialInfo(true)
// Template Manager

View file

@ -8,4 +8,6 @@ const registerTFCDataForChalk = (evt) => {
global.MINECRAFT_DYE_NAMES.forEach(dyeName => {
evt.itemHeat(`tfg:wet_${dyeName}_chalk`, 1, null, null, `tfg:heating/wet_${dyeName}_chalk`)
})
}
evt.itemHeat('tfg:unfired_chalk', 1, null, null, 'tfg:heating/unfired_chalk')
}

View file

@ -2,90 +2,82 @@
/**
*
* @param {Internal.RecipesEventJS} evt
* @param {Internal.RecipesEventJS} event
*/
const registerChalkRecipes = (evt) => {
evt.remove({ output: "#chalk:chalks" })
const registerChalkRecipes = (event) => {
event.remove({ output: "#chalk:chalks" })
evt.shaped('chalk:chalk_box', [
'ABA',
event.shaped('chalk:chalk_box', [
'ABA',
' A '
], {
A: 'paper',
B: ['tfc:glue']
}).id('chalk:chalk_box')
A: 'paper',
B: ['tfc:glue']
}).id('chalk:chalk_box')
// only 1/4 durability remaining
evt.recipes.tfc.knapping(
Item.of('chalk:white_chalk', '{Damage:48}'),
'tfc:rock',
[
' X ',
' X ',
' X ',
' X ',
' X '
]
).ingredient('tfc:rock/loose/chalk')
.id('tfg:knapping/chalk')
evt.recipes.tfc.knapping(
Item.of('chalk:light_gray_chalk', '{Damage:48}'),
'tfc:rock',
[
' X ',
' X ',
' X ',
' X ',
' X '
]
).ingredient('tfc:rock/loose/limestone')
.id('tfg:knapping/limestone_chalk')
const CHALK_KNAPPING = [
{ rock: 'tfc:rock/loose/chalk', color: 'white' },
{ rock: 'tfc:rock/loose/limestone', color: 'light_gray' },
{ rock: 'tfc:rock/loose/conglomerate', color: 'light_gray' },
{ rock: 'tfc:rock/loose/dolomite', color: 'black' },
{ rock: 'tfc:rock/loose/shale', color: 'gray' },
{ rock: 'tfg:loose/dripstone', color: 'brown' },
{ rock: 'tfc:rock/loose/claystone', color: 'orange' },
{ rock: 'tfg:loose/mars_stone', color: 'orange' },
{ rock: 'tfc:rock/loose/chert', color: 'red' }
]
evt.recipes.tfc.knapping(
Item.of('chalk:brown_chalk', '{Damage:48}'),
'tfc:rock',
[
' X ',
' X ',
' X ',
' X ',
' X '
]
).ingredient('tfg:loose/dripstone')
.id('tfg:knapping/travertine_chalk')
CHALK_KNAPPING.forEach(x => {
evt.recipes.tfc.knapping(
Item.of('chalk:orange_chalk', '{Damage:48}'),
'tfc:rock',
[
' X ',
' X ',
' X ',
' X ',
' X '
]
).ingredient('tfc:rock/loose/claystone')
.id('tfg:knapping/claystone_chalk')
// only 1/2 durability remaining
event.recipes.tfc.knapping(
Item.of(`chalk:${x.color}_chalk`, '{Damage:32}'),
'tfc:rock',
[
'X',
'X',
'X',
'X',
'X'
]
).ingredient(x.rock)
.outsideSlotRequired(false)
.id(`tfg:knapping/${linuxUnfucker(x.rock)}_chalk`)
event.recipes.gtceu.extruder(`tfg:${linuxUnfucker(x.rock)}_chalk`)
.itemInputs(x.rock)
.notConsumable('gtceu:rod_extruder_mold')
.itemOutputs(Item.of(`chalk:${x.color}_chalk`, '{Damage:32}'))
.duration(50)
.EUt(2)
event.recipes.vintageimprovements.curving(Item.of(`chalk:${x.color}_chalk`, '{Damage:32}'), x.rock)
.head('gtceu:rod_extruder_mold')
.id(`tfg:vi/curving/${linuxUnfucker(x.rock)}_chalk`)
})
//Mix dusts for chalk sticks with clay to make an unfired chalk stick. Greggy or Create lets you use tiny dusts if needed
evt.recipes.firmalife.mixing_bowl()
.itemIngredients(["minecraft:clay_ball", "#chalk:dusts_for_chalks"])
event.recipes.firmalife.mixing_bowl()
.itemIngredients(["minecraft:clay_ball", "tfg:sedimentary_carbonate_dust"])
.outputItem("tfg:unfired_chalk")
.id(`chalk:mixing_bowl/unfired_chalk_stick_from_dust`)
event.recipes.tfc.heating(`tfg:unfired_chalk`, 700)
.resultItem(`chalk:white_chalk`)
.id(`chalk:heating/undyed_chalk`)
global.MINECRAFT_DYE_NAMES.forEach(dyeName => {
evt.recipes.tfc.barrel_sealed(1000)
.inputItem('chalk:white_chalk')
.inputFluid(Fluid.of(`tfc:${dyeName}_dye`, 25))
.outputItem(`chalk:${dyeName}_chalk`)
event.recipes.tfc.barrel_sealed(1000)
.inputItem('#chalk:chalks')
.inputFluid(Fluid.of(`tfc:${dyeName}_dye`, 25))
.outputItem(`chalk:${dyeName}_chalk`)
.id(`chalk:barrel/dye/${dyeName}_chalk`)
//gt mixer works as is
evt.recipes.gtceu.chemical_bath(`chalk:gt_mixer/${dyeName}_chalk_from_dust`)
.itemInputs(["minecraft:clay_ball", `#chalk:dusts_for_chalks`])
event.recipes.gtceu.chemical_bath(`chalk:gt_mixer/${dyeName}_chalk_from_dust`)
.itemInputs(["minecraft:clay_ball", `tfg:sedimentary_carbonate_dust`])
.inputFluids([Fluid.of(`tfc:${dyeName}_dye`, 36)])
.itemOutputs([`chalk:${dyeName}_chalk`])
.duration(600)
@ -93,26 +85,26 @@ const registerChalkRecipes = (evt) => {
.category(GTRecipeCategories.CHEM_DYES);
//create mixer creates the unfired colored stick, unless heated.
let createIngredients = ["minecraft:clay_ball", `#chalk:dusts_for_chalks`, Fluid.of(`tfc:${dyeName}_dye`, 36)]
evt.recipes.create.mixing(`tfg:wet_${dyeName}_chalk`, createIngredients)
let createIngredients = ["minecraft:clay_ball", `tfg:sedimentary_carbonate_dust`, Fluid.of(`tfc:${dyeName}_dye`, 36)]
event.recipes.create.mixing(`tfg:wet_${dyeName}_chalk`, createIngredients)
.id(`chalk:create_mixer/wet_${dyeName}_chalk_from_dust`);
evt.recipes.create.mixing(`chalk:${dyeName}_chalk`, createIngredients)
event.recipes.create.mixing(`chalk:${dyeName}_chalk`, createIngredients)
.heated()
.id(`chalk:create_mixer/${dyeName}_chalk_from_dust`);
//Unfired chalk sticks need to be placed in a barrel full of dye to colorize. Then heated until cured.
evt.recipes.tfc.barrel_instant()
event.recipes.tfc.barrel_instant()
.inputs(`tfg:unfired_chalk`, TFC.fluidStackIngredient(`tfc:${dyeName}_dye`, 36))
.outputItem(`tfg:wet_${dyeName}_chalk`)
.id(`chalk:barrel/dye/wet_${dyeName}_chalk`);
evt.recipes.tfc.heating(`tfg:wet_${dyeName}_chalk`, 700)
event.recipes.tfc.heating(`tfg:wet_${dyeName}_chalk`, 700)
.resultItem(`chalk:${dyeName}_chalk`)
.id(`chalk:heating/${dyeName}_chalk`)
evt.smelting(
event.smelting(
`chalk:${dyeName}_chalk`,
`tfg:wet_${dyeName}_chalk`
).id(`chalk:smelting/${dyeName}_chalk`)

View file

@ -5,8 +5,4 @@
* @param {TagEvent.Item} evt
*/
const registerChalkItemTags = (evt) => {
evt.add(`chalk:dusts_for_chalks`, `tfg:chalk_dust`)
evt.add(`chalk:dusts_for_chalks`, `tfg:limestone_dust`)
evt.add(`chalk:dusts_for_chalks`, `tfg:dripstone_dust`)
evt.add(`chalk:dusts_for_chalks`, `tfg:claystone_dust`)
}

View file

@ -0,0 +1,17 @@
"use strict";
/**
*
* @param {Internal.TFCDataEventJS} evt
*/
const registerTFCDataForChimes = (evt) => {
if (Platform.isLoaded("chimes")) {
evt.itemSize('chimes:bamboo_chimes', 'large', 'heavy');
evt.itemSize('chimes:carved_bamboo_chimes', 'large', 'heavy');
evt.itemSize('chimes:copper_chimes', 'large', 'heavy');
evt.itemSize('chimes:iron_chimes', 'large', 'heavy');
evt.itemSize('chimes:amethyst_chimes', 'large', 'heavy');
evt.itemSize('chimes:glass_bells', 'normal', 'medium');
}
}

View file

@ -0,0 +1,96 @@
"use strict";
/**
*
* @param {Internal.RecipesEventJS} event
*/
const registerChimesRecipes = (event) => {
if (Platform.isLoaded("chimes")) {
event.remove({ input: 'string', mod: 'chimes' })
//TODO: dye recipes in barrel for glass chimes (if possible)
//bamboo chimes
event.shaped(
Item.of('chimes:bamboo_chimes'),
[
" A ",
"CBC",
"C C"
], {
A: "#minecraft:wooden_slabs",
B: "#forge:string",
C: "minecraft:bamboo"
})
//copper chimes
event.shaped(
Item.of('chimes:copper_chimes'),
[
" A ",
"CBC",
"C C"
], {
A: "#minecraft:wooden_slabs",
B: "#forge:chains",
C: "#forge:rods/copper"
})
//iron chimes
event.shaped(
Item.of('chimes:iron_chimes'),
[
" A ",
"CBC",
"C C"
], {
A: "#minecraft:wooden_slabs",
B: "#forge:chains",
C: "#forge:rods/iron"
})
//carved bamboo chimes
event.shapeless(
Item.of('chimes:carved_bamboo_chimes'),
[
'chimes:bamboo_chimes',
'#forge:tools/knives'
]
)
//carved bamboo chimes direct
event.shaped(
Item.of('chimes:carved_bamboo_chimes'),
[
" A ",
"CBC",
"CDC"
], {
A: "#minecraft:wooden_slabs",
B: "#forge:string",
C: "minecraft:bamboo",
D: "#forge:tools/knives"
})
//amethyst_chime
event.shaped(
Item.of('chimes:amethyst_chimes'),
[
" A ",
"CBC",
"C C"
], {
A: "#forge:plates/cast_iron",
B: "#forge:chains",
C: "#forge:rods/amethyst"
})
//glass_wind_bell
event.shaped(
Item.of('chimes:glass_bells'),
[
"A",
"B",
"C"
], {
A: "#tfc:glass_bottles",
B: "#forge:string",
C: "#forge:paper"
})
}
}

View file

@ -58,7 +58,10 @@ const registerCreateRecipes = (event) => {
// Remove Table Cloth recipes
global.MINECRAFT_DYE_NAMES.forEach(dye => {
event.remove([{ id: `create:crafting/logistics/${dye}_table_cloth` }, { id: `create:crafting/logistics/${dye}_table_cloth_from_other_table_cloth` }])
event.remove([
{ id: `create:crafting/logistics/${dye}_table_cloth` },
{ id: `create:crafting/logistics/${dye}_table_cloth_from_other_table_cloth` }
])
})
event.remove({ type: 'minecraft:stonecutting', input: 'create:andesite_alloy' })
@ -205,6 +208,14 @@ const registerCreateRecipes = (event) => {
B: '#forge:plates/wrought_iron'
}).addMaterialInfo().id('tfg:create/shaped/metal_bracket')
event.recipes.gtceu.shaped('4x create:wooden_bracket', [
'AAA',
'BBB'
], {
A: '#forge:bolts/wrought_iron',
B: '#tfc:lumber'
}).addMaterialInfo().id('tfg:create/shaped/wooden_bracket')
// Жидкостная труба
event.shaped('create:fluid_pipe', [
'BAB'
@ -288,7 +299,7 @@ const registerCreateRecipes = (event) => {
.circuit(1)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:hose_pulley', { 'copper': 3 });
TFGHelpers.registerMaterialInfo('create:hose_pulley', [GTMaterials.Copper, 3, GTMaterials.Rubber, 1/4]);
// Слив из предметов
event.shaped('create:item_drain', [
@ -302,6 +313,7 @@ const registerCreateRecipes = (event) => {
// Жидкостный наполнитель
event.shaped('create:spout', [
'CBD',
' A ',
' A '
], {
A: '#forge:foils/rubber',
@ -311,7 +323,7 @@ const registerCreateRecipes = (event) => {
}).id('tfg:create/shaped/spout')
event.recipes.gtceu.assembler('create:spout')
.itemInputs('create:fluid_tank', '#forge:foils/rubber')
.itemInputs('create:fluid_tank', '2x #forge:foils/rubber')
.itemOutputs('create:spout')
.duration(50)
.circuit(2)
@ -416,7 +428,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(22)
TFGHelpers.registerMaterialInfo('create:rope_pulley', { 'wood': 1, 'wrought_iron': 2 });
TFGHelpers.registerMaterialInfo('create:rope_pulley', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 2]);
// Шкиф подъемника
event.shaped('create:elevator_pulley', [
@ -438,7 +450,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:elevator_pulley', { 'wood': 1, 'brass': 1, 'steel': 1 });
TFGHelpers.registerMaterialInfo('create:elevator_pulley', [GTMaterials.Wood, 1, GTMaterials.Brass, 1, GTMaterials.Steel, 1]);
// Сборщик вагонеток
event.shaped('create:cart_assembler', [
@ -528,7 +540,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(19)
TFGHelpers.registerMaterialInfo('create:mechanical_drill', { 'wood': 1, 'steel': 4, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:mechanical_drill', [GTMaterials.Wood, 1, GTMaterials.Steel, 4, GTMaterials.WroughtIron, 3]);
event.shaped('create:mechanical_roller', [
'GBG',
@ -551,7 +563,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(20)
TFGHelpers.registerMaterialInfo('create:mechanical_roller', { 'wood': 1,'wrought_iron': 4 });
TFGHelpers.registerMaterialInfo('create:mechanical_roller', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 4]);
// Редстоуновый контакт
event.shaped('2x create:redstone_contact', [
@ -595,7 +607,7 @@ const registerCreateRecipes = (event) => {
.duration(200)
.EUt(20)
TFGHelpers.registerMaterialInfo('create:mechanical_harvester', { 'wood': 1, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:mechanical_harvester', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 3]);
// Механический плуг
event.shaped('create:mechanical_plough', [
@ -618,7 +630,7 @@ const registerCreateRecipes = (event) => {
.duration(200)
.EUt(20)
TFGHelpers.registerMaterialInfo('create:mechanical_plough', { 'wood': 1, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:mechanical_plough', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 3]);
// Create sail creation using custom sail items.
@ -828,7 +840,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:andesite_funnel', { 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('create:andesite_funnel', [GTMaterials.WroughtIron, 1]);
// Умный раздатчик/приемник из латуни
event.shaped('2x create:brass_funnel', [
@ -869,7 +881,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:brass_funnel', { 'brass': 1 });
TFGHelpers.registerMaterialInfo('create:brass_funnel', [GTMaterials.Brass, 1]);
// Тунель из железа
event.shaped('create:andesite_tunnel', [
@ -906,7 +918,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:andesite_tunnel', { 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('create:andesite_tunnel', [GTMaterials.WroughtIron, 1]);
// Тунель из латуни
event.shaped('create:brass_tunnel', [
@ -945,7 +957,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:brass_tunnel', { 'brass': 1 });
TFGHelpers.registerMaterialInfo('create:brass_tunnel', [GTMaterials.Brass, 1]);
// Дисплей столешница (чзх)
event.shaped('create:display_board', [
@ -1002,7 +1014,7 @@ const registerCreateRecipes = (event) => {
' CE'
], {
A: '#forge:cogwheels',
B: 'gtceu:ulv_machine_casing',
B: 'create:shadow_steel_casing',
C: 'create:brass_hand',
D: '#forge:tools/wrenches',
E: '#forge:tools/screwdrivers',
@ -1010,12 +1022,12 @@ const registerCreateRecipes = (event) => {
}).id('tfg:create/shaped/deployer')
event.recipes.gtceu.assembler('create:deployer')
.itemInputs('#forge:cogwheels', 'gtceu:ulv_machine_casing', 'create:brass_hand', 'create:electron_tube')
.itemInputs('#forge:cogwheels', 'create:shadow_steel_casing', 'create:brass_hand', 'create:electron_tube')
.itemOutputs('create:deployer')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:deployer', { 'brass': 12/9, 'wrought_iron': 8 });
TFGHelpers.registerMaterialInfo('create:deployer', [GTMaterials.Brass, 12/9, GTMaterials.BlackSteel, 1, GTMaterials.Wood, 1]);
// Соединятор вагонеток
event.shapeless('create:minecart_coupling', [
@ -1242,7 +1254,7 @@ const registerCreateRecipes = (event) => {
A: '#forge:rods/tin_alloy'
}).id('tfg:create/shaped/andesite_ladder')
TFGHelpers.registerMaterialInfo('create:andesite_ladder', { 'tin_alloy': 0.5 })
TFGHelpers.registerMaterialInfo('create:andesite_ladder', [GTMaterials.TinAlloy, 0.5])
// Лестница из латуни
event.shaped('7x create:brass_ladder', [
@ -1253,7 +1265,7 @@ const registerCreateRecipes = (event) => {
A: '#forge:rods/brass'
}).id('tfg:create/shaped/brass_ladder')
TFGHelpers.registerMaterialInfo('create:brass_ladder', { 'brass': 0.5 })
TFGHelpers.registerMaterialInfo('create:brass_ladder', [GTMaterials.Brass, 0.5])
// Лестница из железа
event.shaped('7x create:copper_ladder', [
@ -1264,7 +1276,7 @@ const registerCreateRecipes = (event) => {
A: '#forge:rods/copper'
}).id('tfg:create/shaped/copper_ladder')
TFGHelpers.registerMaterialInfo('create:copper_ladder', { 'copper': 0.5 })
TFGHelpers.registerMaterialInfo('create:copper_ladder', [GTMaterials.Copper, 0.5])
// Леса из железа
event.shaped('4x create:andesite_scaffolding', [
@ -1412,17 +1424,21 @@ const registerCreateRecipes = (event) => {
event.remove({ id: `create:create.toolbox.color.block.create.${dye}_toolbox` })
event.recipes.tfc.barrel_sealed(1000)
.inputs('create:brown_toolbox', Fluid.of(`tfc:${dye}_dye`, 288))
.outputItem(`create:${dye}_toolbox`)
.inputs('#create:toolboxes', Fluid.of(`tfc:${dye}_dye`, 288))
.outputItem(TFC.isp.of(`create:${dye}_toolbox`).simpleModifier('tfg:copy_nbt').asCanonClass())
.id(`barrel/create/${dye}_toolbox`)
event.recipes.gtceu.chemical_bath(`create/${dye}_toolbox`)
.itemInputs('create:brown_toolbox')
event.recipes.gtceu.food_processor(`create/${dye}_toolbox`)
.itemInputs('#create:toolboxes')
.inputFluids(Fluid.of(`tfc:${dye}_dye`, 288))
.itemOutputs(`create:${dye}_toolbox`)
.duration(200)
.EUt(4)
.category(GTRecipeCategories.CHEM_DYES)
$ISPRecipeLogic.RegisterRecipeData(`food_processor/create/${dye}_toolbox`,
[Ingredient.of('#create:toolboxes')],
TFC.isp.of(`create:${dye}_toolbox`).simpleModifier('tfg:copy_nbt').asCanonClass(),
[])
}
})
@ -1563,7 +1579,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(1)
TFGHelpers.registerMaterialInfo('create:windmill_bearing', { 'wood': 1.5, 'brass': 1, 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('create:windmill_bearing', [GTMaterials.Wood, 1.5, GTMaterials.Brass, 1, GTMaterials.WroughtIron, 1]);
// #endregion
@ -2085,7 +2101,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(17)
TFGHelpers.registerMaterialInfo('create:redstone_link', { 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:redstone_link', [GTMaterials.WroughtIron, 3]);
event.shaped('create:display_link', [
'FED',
@ -2127,6 +2143,8 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:rotation_speed_controller', [GTMaterials.Wood, 1, GTMaterials.Brass, 3, GTMaterials.RedAlloy, 1]);
event.shaped('create:pulse_timer', [
'E E',
'ABC',
@ -2167,7 +2185,7 @@ const registerCreateRecipes = (event) => {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('create:sequenced_gearshift', { 'wood': 1, 'steel': 4, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:sequenced_gearshift', [GTMaterials.Wood, 1, GTMaterials.Steel, 4, GTMaterials.WroughtIron, 3]);
event.shaped('create:mechanical_bearing', [
'CBE',
@ -2189,7 +2207,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(15)
TFGHelpers.registerMaterialInfo('create:mechanical_bearing', { 'wood': 1, 'wrought_iron': 2 });
TFGHelpers.registerMaterialInfo('create:mechanical_bearing', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 2]);
event.shaped('create:gantry_carriage', [
'DCE',
@ -2211,7 +2229,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.circuit(2)
TFGHelpers.registerMaterialInfo('create:gantry_carriage', { 'wood': 1.5, 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('create:gantry_carriage', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1]);
event.shaped('create:weighted_ejector', [
' B ',
@ -2233,7 +2251,7 @@ const registerCreateRecipes = (event) => {
.circuit(16)
.addMaterialInfo(true)
TFGHelpers.registerMaterialInfo('create:gantry_carriage', { 'wood': 1, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('create:gantry_carriage', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 3]);
event.shaped('create:turntable', [
'DA ',
@ -2271,7 +2289,7 @@ const registerCreateRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.addMaterialInfo(true)
TFGHelpers.registerMaterialInfo('create:gearshift', { 'wood': 1, 'wrought_iron': 1, 'redstone': 1 });
TFGHelpers.registerMaterialInfo('create:gearshift', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Redstone, 1]);
event.shaped('create:clutch', [
' C ',
@ -2295,7 +2313,6 @@ const registerCreateRecipes = (event) => {
event.stonecutting('2x create:andesite_table_cloth', '#forge:ingots/tin_alloy')
event.stonecutting('2x create:andesite_scaffolding', '#forge:ingots/tin_alloy')
event.stonecutting('2x create:andesite_ladder', '#forge:ingots/tin_alloy')
event.stonecutting('2x create:andesite_bars', '#forge:ingots/tin_alloy')
// Industrial Iron stuff
@ -2377,24 +2394,25 @@ const registerCreateRecipes = (event) => {
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
// Bars
//Bars
event.stonecutting('4x create:andesite_bars', '#forge:ingots/tin_alloy')
event.stonecutting('4x create:brass_bars', '#forge:ingots/brass')
event.stonecutting('4x create:copper_bars', '#forge:ingots/copper')
event.recipes.tfc.anvil(`4x create:andesite_bars`, `#forge:ingots/tin_alloy`, ['shrink_last', 'punch_second_last', 'punch_third_last'])
.tier(3).id(`tfg:anvil/create_andesite_bars`)
const create_metals = [
{ metal: 'andesite', material: 'tin_alloy', tier: 3 },
{ metal: 'brass', material: 'brass', tier: 2 },
{ metal: 'copper', material: 'copper', tier: 1 },
];
event.recipes.tfc.anvil(`4x create:brass_bars`, `#forge:ingots/brass`, ['shrink_last', 'punch_second_last', 'punch_third_last'])
.tier(2).id(`tfg:anvil/create_brass_bars`)
create_metals.forEach(bar => {
event.recipes.tfc.anvil(`4x create:${bar.metal}_bars`, `#forge:ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/create_${bar.metal}_bars`)
event.recipes.tfc.anvil(`4x create:copper_bars`, `#forge:ingots/copper`, ['shrink_last', 'punch_second_last', 'punch_third_last'])
.tier(1).id(`tfg:anvil/create_copper_bars`)
TFGHelpers.registerMaterialInfo(`create:${bar.metal}_bars`, [GTMaterials.get(bar.material), 0.25])
TFGHelpers.registerMaterialInfo('create:andesite_bars', { 'tin_alloy': 0.25 })
TFGHelpers.registerMaterialInfo('create:brass_bars', { 'brass': 0.25 })
TFGHelpers.registerMaterialInfo('create:copper_bars', { 'copper': 0.25 })
event.recipes.tfc.anvil(`8x create:${bar.metal}_bars`, `#forge:double_ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/create_${bar.metal}_bars_double`)
})
// Doors

View file

@ -9,6 +9,10 @@ const registerCreateItemTags = (event) => {
event.add('c:hidden_from_recipe_viewers', item)
})
// Face curio slot for goggles
event.remove("curios:head", "create:goggles")
event.add("curios:face", "create:goggles")
// This is greate's fault
event.remove('c:hidden_from_recipe_viewers', 'create:copper_sheet')
event.remove('c:hidden_from_recipe_viewers', 'create:brass_sheet')

View file

@ -9,11 +9,11 @@ const registerCreateAdditionsRecipes = (event) => {
// Прокатный стан
event.recipes.gtceu.shaped('createaddition:rolling_mill', [
'ABA',
'CBC',
'DED'
'CEC',
'DBD'
], {
A: 'create:precision_mechanism',
B: 'greate:steel_shaft',
B: '#forge:rods/long/blue_steel',
C: '#forge:double_plates/black_steel',
D: '#gtceu:circuits/ulv',
E: 'gtceu:ulv_machine_hull'

View file

@ -23,5 +23,7 @@ const registerCreateAdditionsFluidTags = (event) => {
// Добавляем тег для скрытия в EMI
event.add('c:hidden_from_recipe_viewers', 'createaddition:seed_oil')
event.removeAllTagsFrom('createaddition:seed_oil')
event.add('c:hidden_from_recipe_viewers', 'createaddition:bioethanol')
event.removeAllTagsFrom('createaddition:bioethanol')
}

View file

@ -71,4 +71,16 @@ const registerCreateConnectedRecipes = (event) => {
}).id('create_connected:crafting/kinetics/sequenced_pulse_generator')
event.replaceInput({ id: 'create_connected:crafting/kinetics/redstone_link_wildcard' }, 'create:transmitter', 'minecraft:redstone_torch')
event.shaped('create_connected:kinetic_bridge', [
'BCB',
'AEA',
'DCD'
], {
A: 'create:brass_casing',
B: '#forge:plates/magnetic_iron',
C: '#forge:rods/magnetic_iron',
D: '#forge:small_gears/red_alloy',
E: '#forge:shafts'
}).id('create_connected:crafting/kinetics/kinetic_bridge')
}

View file

@ -6,6 +6,7 @@ function registerCreateHypertubeRecipes(event) {
event.recipes.gtceu.assembler('create_hypertube:hypertube')
.itemInputs('2x #forge:plates/stainless_steel', '4x ae2:quartz_glass')
.itemOutputs('8x create_hypertube:hypertube')
.circuit(1)
.EUt(GTValues.VA[GTValues.HV])
.duration(50)
.addMaterialInfo(true)

View file

@ -0,0 +1,6 @@
// priority: 0
"use strict";
function registerCreateHypertubeItemTags(event) {
event.add('c:hidden_from_recipe_viewers', 'create_hypertube:tube_scanner_unfinished');
}

View file

@ -0,0 +1,192 @@
// priority: 0
"use strict";
function registerCreateSoundOfSteamRecipes(event) {
if (Platform.isLoaded("pipeorgans")) {
event.remove({ mod: 'pipeorgans' })
//Piccolo
event.shaped('pipeorgans:piccolo', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: '#tfg:hardwood',
C: '#forge:tools/hammers',
D: 'gtceu:wrought_iron_ingot',
E: 'pipeorgans:base'
}).id('pipeorgans:piccolo')
//Diapason
event.remove({ id: 'pipeorgans:diapason' })
event.shaped('pipeorgans:diapason', [
'ABC',
' B ',
' D '
], {
A: '#forge:tools/saws',
B: 'create:zinc_ingot',
C: '#forge:tools/hammers',
D: 'pipeorgans:base'
}).id('pipeorgans:diapason')
//Trompette
event.shaped('pipeorgans:trompette', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: 'create:brass_sheet',
C: '#forge:tools/hammers',
D: 'pipeorgans:brass_boot',
E: 'pipeorgans:base'
}).id('pipeorgans:trompette')
//Gedeckt
event.shaped('pipeorgans:gedeckt', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: '#tfc:lumber',
C: '#forge:tools/hammers',
D: '#minecraft:wooden_slabs',
E: 'pipeorgans:base'
}).id('pipeorgans:gedeckt')
//Gamba
event.shaped('pipeorgans:gamba', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: 'gtceu:wrought_iron_ingot',
C: '#forge:tools/hammers',
D: 'gtceu:wrought_iron_plate',
E: 'pipeorgans:base'
}).id('pipeorgans:gamba')
//Nasard
event.shaped('pipeorgans:nasard', [
'ABC',
' B ',
' D '
], {
A: '#forge:tools/saws',
B: 'minecraft:copper_ingot',
C: '#forge:tools/hammers',
D: 'pipeorgans:base'
}).id('pipeorgans:nasard')
//Subbass
event.shaped('pipeorgans:subbass', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: '#minecraft:planks',
C: '#forge:tools/hammers',
D: '#minecraft:wooden_slabs',
E: 'pipeorgans:base'
}).id('pipeorgans:subbass')
//Posaune FIX
event.shaped('pipeorgans:posaune', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: 'create:brass_sheet',
C: '#forge:tools/hammers',
D: 'pipeorgans:dark_oak_boot',
E: 'pipeorgans:base'
}).id('pipeorgans:posaune')
//Humana
event.shaped('pipeorgans:vox_humana', [
'ABC',
' D ',
' E '
], {
A: '#forge:tools/saws',
B: 'create:brass_sheet',
C: '#forge:tools/hammers',
D: 'pipeorgans:copper_boot',
E: 'pipeorgans:base'
}).id('pipeorgans:vox_humana')
//Pipe Base
event.recipes.tfc.welding('pipeorgans:base', 'create:fluid_pipe', 'gtceu:double_copper_plate', 1)
//Windchest Controller
event.shaped('pipeorgans:windchest_master', [
'ABC',
'DEC',
'FBC'
], {
A: '#forge:tools/saws',
B: '#minecraft:planks',
C: 'create:zinc_ingot',
D: '#minecraft:wooden_slabs',
E: 'minecraft:redstone',
F: '#forge:tools/hammers'
}).id('pipeorgans:windchest_master')
//Windchest
event.shaped('6x pipeorgans:windchest', [
'AB ',
'CD ',
'EF '
], {
A: '#forge:tools/saws',
B: 'create:fluid_pipe',
C: '#minecraft:wooden_slabs',
D: 'minecraft:redstone',
E: '#forge:tools/hammers',
F: '#minecraft:planks'
}).id('pipeorgans:windchest')
//Brass Boot
event.recipes.tfc.anvil('pipeorgans:brass_boot', 'gtceu:double_brass_plate', ['bend_last', 'shrink_second_last', 'shrink_third_last'])
.tier(3)
.id('tfc:anvil/brass_boot')
//Dark Oak Boot
event.shaped('pipeorgans:dark_oak_boot', [
'ABA',
'ACA',
'AAA'
], {
A: '#minecraft:planks',
B: '#forge:tools/saws',
C: '#forge:tools/hammers'
}).id('pipeorgans:dark_oak_boot')
//Copper Boot
event.recipes.tfc.anvil('pipeorgans:copper_boot', 'gtceu:double_copper_plate', ['bend_last', 'shrink_second_last', 'shrink_third_last'])
.tier(3)
.id('tfc:anvil/copper_boot')
//Keyboard Relay
event.shaped('pipeorgans:keyboard_relay', [
'ABC',
'DEC',
'FGC'
], {
A: 'create:transmitter',
B: 'minecraft:redstone',
C: '#minecraft:buttons',
D: 'gtceu:wrought_iron_ingot',
E: 'create:precision_mechanism',
F: '#forge:tools/screwdrivers',
G: 'create:brass_casing'
}).id('pipeorgans:keyboard_relay')
}
}

View file

@ -0,0 +1,17 @@
//"use strict";
//function registerCreateStockBridgeRecipes(event) {
// event.remove({ id: 'createstockbridge:ae_bridge' })
// event.shaped('createstockbridge:ae_bridge', [
// 'ACF',
// 'DBD'
// ], {
// A: 'ae2:fluix_pearl',
// B: 'ae2:interface',
// C: 'create:stock_link',
// D: 'ae2:engineering_processor',
// F: '#forge:exquisite_gems/rose_quartz'
// })
//}

View file

@ -138,42 +138,52 @@ const registerCreatedecoRecipes = (event) => {
//#endregion
//#region Brick Recipes
const brickTypes = ['blue', 'verdant', 'pearl', 'dean', 'dusk', 'scarlet', 'umber']
const powderTypes = ['lapis_lazuli', 'malachite', 'soda_ash', 'limonite', 'charcoal', 'hematite', 'cassiterite']
event.recipes.gtceu.assembler(`assembler_bricks`)
.itemInputs('5x minecraft:brick')
.inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs(`4x minecraft:bricks`)
.duration(50)
.circuit(2)
.EUt(7)
brickTypes.forEach(type => {
const dyeTypes = ['black', 'red', 'gray', 'green', 'blue', 'white', 'brown']
global.CREATE_DECO_BRICK_TYPES.forEach((type, index) => {
event.remove({ output: `createdeco:${type}_bricks` });
});
event.remove({ output: `createdeco:${type}_brick_stairs` });
event.remove({ output: `createdeco:short_${type}_brick_stairs` });
event.remove({ output: `createdeco:tiled_${type}_brick_stairs` });
event.remove({ output: `createdeco:long_${type}_brick_stairs` });
event.remove({ output: `createdeco:corner_${type}_brick_stairs` });
event.remove({ output: `createdeco:cracked_${type}_brick_stairs` });
event.remove({ output: `createdeco:mossy_${type}_brick_stairs` });
event.remove({ output: `createdeco:${type}_brick_slab` });
event.remove({ output: `createdeco:short_${type}_brick_slab` });
event.remove({ output: `createdeco:tiled_${type}_brick_slab` });
event.remove({ output: `createdeco:long_${type}_brick_slab` });
event.remove({ output: `createdeco:corner_${type}_brick_slab` });
event.remove({ output: `createdeco:cracked_${type}_brick_slab` });
event.remove({ output: `createdeco:mossy_${type}_brick_slab` });
event.remove({ output: `createdeco:${type}_brick_wall` });
event.remove({ output: `createdeco:short_${type}_brick_wall` });
event.remove({ output: `createdeco:tiled_${type}_brick_wall` });
event.remove({ output: `createdeco:long_${type}_brick_wall` });
event.remove({ output: `createdeco:corner_${type}_brick_wall` });
event.remove({ output: `createdeco:cracked_${type}_brick_wall` });
event.remove({ output: `createdeco:mossy_${type}_brick_wall` });
brickTypes.forEach((type, index) => {
const powder = `tfc:powder/${powderTypes[index]}`;
event.shaped(Item.of(`createdeco:${type}_bricks`, 4),
[
if (type !== "red") {
const dye = `#forge:dyes/${dyeTypes[index]}`;
event.shaped(`4x createdeco:${type}_bricks`, [
'BDB',
'MBM',
'BMB'
],
{
], {
B: `minecraft:brick`,
D: powder,
D: dye,
M: `tfc:mortar`
});
event.recipes.gtceu.assembler(`createdeco:${type}_bricks`)
.itemInputs('5x minecraft:brick', powder)
.inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs(`4x createdeco:${type}_bricks`)
.circuit(3)
.duration(50)
.EUt(7)
event.recipes.gtceu.assembler(`createdeco:${type}_bricks`)
.itemInputs('5x minecraft:brick', dye)
.inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs(`4x createdeco:${type}_bricks`)
.circuit(3)
.duration(50)
.EUt(7)
}
});
//#endregion
@ -240,19 +250,20 @@ const registerCreatedecoRecipes = (event) => {
event.remove({ id: `createdeco:${bar.metal}_trapdoor` })
event.remove({ id: `createdeco:${bar.metal}_door` })
let quarterMap = {};
quarterMap[bar.material] = 0.25;
if (bar.metal !== 'iron') {
// Bars
event.remove({ type: 'minecraft:stonecutting', output: `createdeco:${bar.metal}_bars` })
event.recipes.tfc.anvil(`4x createdeco:${bar.metal}_bars`, `#forge:ingots/${bar.material}`, ['shrink_last', 'punch_second_last', 'punch_third_last'])
event.recipes.tfc.anvil(`4x createdeco:${bar.metal}_bars`, `#forge:ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/createdeco_${bar.metal}_bars`)
event.stonecutting(`4x createdeco:${bar.metal}_bars`, `#forge:ingots/${bar.material}`)
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_bars`, quarterMap)
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_bars`, [GTMaterials.get(bar.material), 0.25])
event.recipes.tfc.anvil(`8x createdeco:${bar.metal}_bars`, `#forge:double_ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/createdeco_${bar.metal}_bars_double`)
// Door
event.recipes.tfc.anvil(`createdeco:${bar.metal}_door`, `#forge:double_plates/${bar.material}`, ['draw_last', 'draw_second_last', 'punch_third_last'])
@ -264,20 +275,21 @@ const registerCreatedecoRecipes = (event) => {
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
let twoMap = {};
twoMap[bar.material] = 2;
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_door`, twoMap)
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_door`, [GTMaterials.get(bar.material), 2])
}
// Overlay bars
event.remove({ type: 'minecraft:stonecutting', output: `createdeco:${bar.metal}_bars_overlay` })
event.recipes.tfc.anvil(`4x createdeco:${bar.metal}_bars_overlay`, `#forge:ingots/${bar.material}`, ['draw_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/createdeco_${bar.metal}_bars_overlay`)
event.recipes.tfc.anvil(`4x createdeco:${bar.metal}_bars_overlay`, `#forge:ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/createdeco_${bar.metal}_bars_overlay`)
event.stonecutting(`4x createdeco:${bar.metal}_bars_overlay`, `#forge:ingots/${bar.material}`)
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_bars_overlay`, quarterMap)
event.recipes.tfc.anvil(`8x createdeco:${bar.metal}_bars_overlay`, `#forge:double_ingots/${bar.material}`, ['upset_last', 'punch_second_last', 'punch_third_last'])
.tier(bar.tier).id(`tfg:anvil/createdeco_${bar.metal}_bars_overlay_double`)
TFGHelpers.registerMaterialInfo(`createdeco:${bar.metal}_bars_overlay`, [GTMaterials.get(bar.material), 0.25])
// Facade
event.shaped(`4x createdeco:${bar.metal}_facade`, [
@ -296,11 +308,11 @@ const registerCreatedecoRecipes = (event) => {
event.shapeless(`createdeco:copper_trapdoor`, `tfc:metal/trapdoor/copper`)
event.shapeless(`tfc:metal/trapdoor/copper`, `createdeco:copper_trapdoor`)
TFGHelpers.registerMaterialInfo('createdeco:copper_trapdoor', { 'copper': 1 })
TFGHelpers.registerMaterialInfo('createdeco:copper_trapdoor', [GTMaterials.Copper, 1])
event.shapeless(`createdeco:industrial_iron_trapdoor`, `tfc:metal/trapdoor/steel`)
event.shapeless(`tfc:metal/trapdoor/steel`, `createdeco:industrial_iron_trapdoor`)
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_trapdoor', { 'steel': 1 })
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_trapdoor', [GTMaterials.Steel, 1])
// TODO: move these two into the tag prefixes in tfg-core, then remove these recipes
@ -322,7 +334,7 @@ const registerCreatedecoRecipes = (event) => {
.duration(GTMaterials.Brass.getMass())
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('createdeco:brass_trapdoor', { 'brass': 1 })
TFGHelpers.registerMaterialInfo('createdeco:brass_trapdoor', [GTMaterials.Brass, 1])
event.recipes.tfc.anvil(`createdeco:zinc_trapdoor`, `#forge:ingots/zinc`, ['shrink_last', 'draw_second_last', 'draw_third_last'])
.tier(1).id(`createdeco:anvil/zinc_trapdoor`)
@ -342,7 +354,7 @@ const registerCreatedecoRecipes = (event) => {
.duration(GTMaterials.Zinc.getMass())
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('createdeco:zinc_trapdoor', { 'zinc': 1 })
TFGHelpers.registerMaterialInfo('createdeco:zinc_trapdoor', [GTMaterials.Zinc, 1])
event.recipes.tfc.anvil(`createdeco:andesite_trapdoor`, `#forge:ingots/tin_alloy`, ['shrink_last', 'draw_second_last', 'draw_third_last'])
.tier(3).id(`createdeco:anvil/andesite_trapdoor`)
@ -362,7 +374,7 @@ const registerCreatedecoRecipes = (event) => {
.duration(GTMaterials.TinAlloy.getMass())
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('createdeco:andesite_trapdoor', { 'tin_alloy': 1 })
TFGHelpers.registerMaterialInfo('createdeco:andesite_trapdoor', [GTMaterials.TinAlloy, 1])
// #endregion
@ -469,7 +481,7 @@ const registerCreatedecoRecipes = (event) => {
event.stonecutting('2x createdeco:iron_ladder', '#forge:ingots/wrought_iron')
TFGHelpers.registerMaterialInfo('createdeco:iron_ladder', { 'wrought_iron': 0.5 })
TFGHelpers.registerMaterialInfo('createdeco:iron_ladder', [GTMaterials.WroughtIron, 0.5])
event.shaped('7x createdeco:zinc_ladder', [
'A A',
@ -479,7 +491,7 @@ const registerCreatedecoRecipes = (event) => {
A: '#forge:rods/zinc'
}).id('tfg:createdeco/shaped/zinc_ladder')
TFGHelpers.registerMaterialInfo('createdeco:zinc_ladder', { 'zinc': 0.5 })
TFGHelpers.registerMaterialInfo('createdeco:zinc_ladder', [GTMaterials.Zinc, 0.5])
event.shaped('7x createdeco:industrial_iron_ladder', [
'A A',
@ -489,7 +501,7 @@ const registerCreatedecoRecipes = (event) => {
A: '#forge:rods/steel'
}).id('tfg:createdeco/shaped/industrial_iron_ladder')
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_ladder', { 'steel': 0.5 })
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_ladder', [GTMaterials.Steel, 0.5])
// #endregion
@ -528,17 +540,17 @@ const registerCreatedecoRecipes = (event) => {
// #region Sheet Metal
event.stonecutting('4x createdeco:andesite_sheet_metal', '#forge:plates/tin_alloy')
TFGHelpers.registerMaterialInfo('createdeco:andesite_sheet_metal', { 'tin_alloy': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:andesite_sheet_metal', [GTMaterials.TinAlloy, 0.25])
event.stonecutting('4x createdeco:brass_sheet_metal', '#forge:plates/brass')
TFGHelpers.registerMaterialInfo('createdeco:brass_sheet_metal', { 'brass': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:brass_sheet_metal', [GTMaterials.Brass, 0.25])
event.stonecutting('4x createdeco:iron_sheet_metal', '#forge:plates/wrought_iron')
TFGHelpers.registerMaterialInfo('createdeco:iron_sheet_metal', { 'wrought_iron': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:iron_sheet_metal', [GTMaterials.WroughtIron, 0.25])
event.stonecutting('4x createdeco:copper_sheet_metal', '#forge:plates/copper')
TFGHelpers.registerMaterialInfo('createdeco:copper_sheet_metal', { 'copper': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:copper_sheet_metal', [GTMaterials.Copper, 0.25])
event.stonecutting('4x createdeco:industrial_iron_sheet_metal', '#forge:plates/steel')
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_sheet_metal', { 'steel': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:industrial_iron_sheet_metal', [GTMaterials.Steel, 0.25])
event.stonecutting('4x createdeco:zinc_sheet_metal', '#forge:plates/zinc')
TFGHelpers.registerMaterialInfo('createdeco:zinc_sheet_metal', { 'zinc': 0.25 })
TFGHelpers.registerMaterialInfo('createdeco:zinc_sheet_metal', [GTMaterials.Zinc, 0.25])
// #endregion
};

View file

@ -46,11 +46,19 @@ function registerDiggerHelmetRecipes(event) {
C: '#forge:foils/rubber'
}).id('tfg:shaped/auto_drink_modifier_rubber')
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('diggerhelmet:silk_lining', ['tfcambiental:silk_cowl', '#forge:string', '#tfc:sewing_needles'])
).id('tfg:shapeless/diggerhelmet/silk_lining')
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('diggerhelmet:wool_lining', ['tfcambiental:wool_hat', '#forge:string', '#tfc:sewing_needles'])
).id('tfg:shapeless/diggerhelmet/wool_lining')
event.shapeless('diggerhelmet:silk_lining', [
'tfcambiental:silk_cowl',
'#forge:string',
'#tfc:sewing_needles'
])
.damageIngredient('#tfc:sewing_needles', 1)
.id('tfg:shapeless/diggerhelmet/silk_lining');
event.shapeless('diggerhelmet:wool_lining', [
'tfcambiental:wool_hat',
'#forge:string',
'#tfc:sewing_needles'
])
.damageIngredient('#tfc:sewing_needles', 1)
.id('tfg:shapeless/diggerhelmet/wool_lining');
}

View file

@ -23,7 +23,7 @@ const registerDomumOrnamentumRecipes = (event) => {
'B B'
],
{
B: '#forge:cobblestone'
B: 'minecraft:cobblestone'
}).id('domum_ornamentum:cobblestone_extra');
event.shaped(Item.of('domum_ornamentum:blue_cobblestone_extra', 8),
@ -90,7 +90,7 @@ const registerDomumOrnamentumRecipes = (event) => {
A: '#forge:plates/wrought_iron',
B: '#tfc:lumber',
C: '#forge:plates/brass',
D: '#forge:small_gears',
D: '#forge:small_gears/brass',
E: '#forge:buzz_saw_heads'
}).id('domum_ornamentum:architectscutter');
@ -145,126 +145,126 @@ const registerDomumOrnamentumRecipes = (event) => {
//Brown Bricks
event.shaped(Item.of('domum_ornamentum:brown_bricks', 4),
[
'BAB',
'CBC',
'BAB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/chert',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `minecraft:brick`,
D: '#forge:dyes/brown',
M: `tfc:mortar`
}).id('domum_ornamentum:brown_bricks');
event.shaped(Item.of('domum_ornamentum:brown_stone_bricks', 4),
[
'BCB',
'ABA',
'BCB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/chert',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `#tfg:stone_brick`,
D: '#forge:dyes/brown',
M: `tfc:mortar`
}).id('domum_ornamentum:brown_stone_bricks');
//Beige Bricks
event.shaped(Item.of('domum_ornamentum:beige_bricks', 4),
[
'BAB',
'CBC',
'BAB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/conglomerate',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `minecraft:brick`,
D: '#forge:dyes/light_gray',
M: `tfc:mortar`
}).id('domum_ornamentum:beige_bricks');
event.shaped(Item.of('domum_ornamentum:beige_stone_bricks', 4),
[
'BCB',
'ABA',
'BCB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/conglomerate',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `#tfg:stone_brick`,
D: '#forge:dyes/light_gray',
M: `tfc:mortar`
}).id('domum_ornamentum:beige_stone_bricks');
//Cream Bricks
event.shaped(Item.of('domum_ornamentum:cream_bricks', 4),
[
'BAB',
'CBC',
'BAB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/gneiss',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `minecraft:brick`,
D: '#forge:dyes/orange',
M: `tfc:mortar`
}).id('domum_ornamentum:cream_bricks');
event.shaped(Item.of('domum_ornamentum:cream_stone_bricks', 4),
[
'BCB',
'ABA',
'BCB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/gneiss',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `#tfg:stone_brick`,
D: '#forge:dyes/orange',
M: `tfc:mortar`
}).id('domum_ornamentum:cream_stone_bricks');
//Roan Bricks
event.shaped(Item.of('domum_ornamentum:roan_bricks', 4),
[
'BAB',
'CBC',
'BAB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/claystone',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `minecraft:brick`,
D: '#forge:dyes/red',
M: `tfc:mortar`
}).id('domum_ornamentum:roan_bricks');
event.shaped(Item.of('domum_ornamentum:roan_stone_bricks', 4),
[
'BCB',
'ABA',
'BCB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/claystone',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `#tfg:stone_brick`,
D: '#forge:dyes/red',
M: `tfc:mortar`
}).id('domum_ornamentum:roan_stone_bricks');
//Sand Bricks
event.shaped(Item.of('domum_ornamentum:sand_bricks', 4),
[
'BAB',
'CBC',
'BAB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/limestone',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `minecraft:brick`,
D: '#forge:dyes/yellow',
M: `tfc:mortar`
}).id('domum_ornamentum:sand_bricks');
event.shaped(Item.of('domum_ornamentum:sand_stone_bricks', 4),
[
'BCB',
'ABA',
'BCB'
'BMB',
'MBM',
'BDB'
],
{
A: 'tfc:brick/limestone',
B: 'tfc:mortar',
C: 'minecraft:brick',
B: `#tfg:stone_brick`,
D: '#forge:dyes/yellow',
M: `tfc:mortar`
}).id('domum_ornamentum:sand_stone_bricks');
//#endregion
};

View file

@ -29,6 +29,7 @@ function registerDomumOrnamentumBlockTags(event) {
"#tfc:colored_polished_alabaster",
"#tfc:mud_bricks",
"#forge:sandstone",
"#railways:locometal",
//rnr shingles
"rnr:wood/shingles/teak",
"rnr:wood/shingles/cypress",
@ -159,6 +160,26 @@ function registerDomumOrnamentumBlockTags(event) {
"#tfg:ad_astra_desh_block",
"#tfg:ad_astra_ostrum_block",
"#tfg:ad_astra_calorite_block",
// Create blocks
"#create:stone_types/diorite",
"#create:stone_types/andesite",
"#create:stone_types/limestone",
"#create:stone_types/granite",
"#create:stone_types/deepslate",
"#create:stone_types/dripstone",
"#tfg:stone_types/keratophyre",
"#create:stone_types/calcite",
"#create:stone_types/tuff",
"#tfg:stone_types/suevite",
"#tfg:stone_types/certus",
"#tfg:stone_types/thermal_vent_deposit",
"#tfg:stone_types/reconstituted_stone",
"#create:stone_types/asurine",
"#create:stone_types/ochrum",
"#create:stone_types/crimsite",
"#create:stone_types/veridium",
"#create:stone_types/scoria",
"#create:stone_types/scorchia",
];
materials.forEach((material) => {

View file

@ -18,7 +18,7 @@ const registerEndermanOverhaulItemTags = (event) => {
const registerEndermanOverhaulBlockTags = (event) => {
event.add('endermanoverhaul:cave_enderman_holdable', 'forge:ores')
event.add('endermanoverhaul:cave_enderman_holdable', 'minecraft:base_stone_nether')
event.add('endermanoverhaul:cave_enderman_holdable', '#forge:ores')
event.add('endermanoverhaul:cave_enderman_holdable', '#minecraft:base_stone_nether')
}

View file

@ -72,4 +72,6 @@ const registerEtchedRecipes = (event) => {
event.shapeless('create_connected:music_disc_elevator', ['etched:blank_music_disc', 'create:elevator_pulley'])
//dear god why
event.shapeless('gtceu:sus_record', ['etched:blank_music_disc', '#tfc:knives', 'tfc:food/green_bean']).id('tfg:sus_record');
TFGHelpers.registerMaterialInfo('etched:jukebox_minecart', [GTMaterials.WroughtIron, 5, GTMaterials.Wood, 16, GTMaterials.Diamond, 1]);
}

View file

@ -39,6 +39,17 @@ const registerExposureRecipes = (event) => {
'minecraft:writable_book', 'minecraft:paper', 'minecraft:paper'
]).id('exposure:album')
// Camera stand
event.shaped('exposure:camera_stand', [
' A ',
'BBB',
'C C'
], {
A: '#forge:rings',
B: '#tfc:lumber',
C: '#forge:smooth_stone_slab'
}).id('exposure:camera_stand')
// Film
event.shaped('exposure:black_and_white_film', [
'ABB',
@ -52,6 +63,19 @@ const registerExposureRecipes = (event) => {
E: 'tfc:food/dried_kelp',
}).id('exposure:black_and_white_film')
event.shaped('exposure:high_sensitivity_black_and_white_film', [
'ABB',
'CDD',
'FEE'
], {
A: '#forge:rings/wrought_iron',
B: '#forge:dyes/white',
C: '#forge:foils/wrought_iron',
D: '#forge:dusts/gunpowder',
E: 'tfc:food/dried_kelp',
F: '#forge:dusts/glowstone'
}).id('exposure:high_sensitivity_black_and_white_film')
event.shaped('exposure:color_film', [
'ABB',
'CDD',
@ -64,28 +88,41 @@ const registerExposureRecipes = (event) => {
E: 'tfc:food/dried_kelp',
}).id('exposure:color_film')
event.shaped('exposure:high_sensitivity_color_film', [
'ABB',
'CDD',
'FEE'
], {
A: '#forge:rings/wrought_iron',
B: '#forge:dyes/blue',
C: '#forge:foils/wrought_iron',
D: '#forge:foils/gold',
E: 'tfc:food/dried_kelp',
F: '#forge:dusts/glowstone'
}).id('exposure:high_sensitivity_color_film')
// Creating the developer
// Pyrogallol
event.recipes.tfc.pot(['tfc:powder/saltpeter'], Fluid.of('tfc:tannin', 500), 30 * 20, 750)
event.recipes.tfc.pot(['tfc:powder/saltpeter'], Fluid.of('tfc:tannin', 500), 30 * 20, 650)
.itemOutput('tfg:pyrogallol_dust')
.id('tfg:pot/tannin_to_pyrogallol_saltpeter')
event.recipes.tfc.pot(['tfc:powder/soda_ash'], Fluid.of('tfc:tannin', 500), 30 * 20, 750)
event.recipes.tfc.pot(['tfc:powder/soda_ash'], Fluid.of('tfc:tannin', 500), 30 * 20, 650)
.itemOutput('tfg:pyrogallol_dust')
.id('tfg:pot/tannin_to_pyrogallol_soda_ash')
event.recipes.firmalife.vat()
.inputs('tfc:powder/saltpeter', Fluid.of('tfc:tannin', 500))
.length(30 * 20)
.temperature(750)
.temperature(650)
.outputItem('tfg:pyrogallol_dust')
.id('tfg:vat/tannin_to_pyrogallol_saltpeter')
event.recipes.firmalife.vat()
.inputs('tfc:powder/soda_ash', Fluid.of('tfc:tannin', 500))
.length(30 * 20)
.temperature(750)
.temperature(650)
.outputItem('tfg:pyrogallol_dust')
.id('tfg:vat/tannin_to_soda_ash')
@ -104,7 +141,7 @@ const registerExposureRecipes = (event) => {
.EUt(7)
// Developer
event.recipes.tfc.pot(['#forge:dusts/pyrogallol', 'tfc:powder/soda_ash', 'tfc:powder/sulfur', '#exposure:black_printing_dyes'], Fluid.of('tfc:lye', 1000), 30 * 20, 750)
event.recipes.tfc.pot(['#forge:dusts/pyrogallol', 'tfc:powder/soda_ash', 'tfc:powder/sulfur', '#exposure:black_printing_dyes'], Fluid.of('tfc:lye', 1000), 30 * 20, 550)
.fluidOutput(Fluid.of('tfg:bw_photographic_developer', 1000))
.id('tfg:pot/bw_developer')
@ -128,6 +165,11 @@ const registerExposureRecipes = (event) => {
.outputItem(TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass())
.id('tfg:barrel/develop_black_and_white_film')
event.recipes.tfc.barrel_sealed(4000)
.inputs('exposure:high_sensitivity_black_and_white_film', Fluid.of('tfg:bw_photographic_developer', 250))
.outputItem(TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass())
.id('tfg:barrel/develop_high_sensitivity_black_and_white_film')
event.recipes.gtceu.food_processor('black_and_white_film')
.itemInputs('exposure:black_and_white_film')
.inputFluids(Fluid.of('tfg:bw_photographic_developer', 250))
@ -140,12 +182,29 @@ const registerExposureRecipes = (event) => {
TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass(),
[])
event.recipes.gtceu.food_processor('high_sensitivity_black_and_white_film')
.itemInputs('exposure:high_sensitivity_black_and_white_film')
.inputFluids(Fluid.of('tfg:bw_photographic_developer', 250))
.itemOutputs('exposure:developed_black_and_white_film')
.duration(60 * 20)
.EUt(2)
$ISPRecipeLogic.RegisterRecipeData('food_processor/high_sensitivity_black_and_white_film',
[Ingredient.of('exposure:high_sensitivity_black_and_white_film')],
TFC.isp.of('exposure:developed_black_and_white_film').simpleModifier('tfg:copy_nbt').asCanonClass(),
[])
// Developing color film
event.recipes.tfc.barrel_sealed(4000)
.inputs('exposure:color_film', Fluid.of('tfg:color_photographic_developer', 250))
.outputItem(TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt'))
.id('tfg:barrel/develop_color_film')
event.recipes.tfc.barrel_sealed(4000)
.inputs('exposure:high_sensitivity_color_film', Fluid.of('tfg:color_photographic_developer', 250))
.outputItem(TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt'))
.id('tfg:barrel/develop_high_sensitivity_color_film')
event.recipes.gtceu.food_processor('color_film')
.itemInputs('exposure:color_film')
.inputFluids(Fluid.of('tfg:color_photographic_developer', 250))
@ -157,4 +216,16 @@ const registerExposureRecipes = (event) => {
[Ingredient.of('exposure:color_film')],
TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt').asCanonClass(),
[])
event.recipes.gtceu.food_processor('high_sensitivity_color_film')
.itemInputs('exposure:high_sensitivity_color_film')
.inputFluids(Fluid.of('tfg:color_photographic_developer', 250))
.itemOutputs('exposure:developed_color_film')
.duration(60 * 20)
.EUt(2)
$ISPRecipeLogic.RegisterRecipeData('food_processor/high_sensitivity_color_film',
[Ingredient.of('exposure:high_sensitivity_color_film')],
TFC.isp.of('exposure:developed_color_film').simpleModifier('tfg:copy_nbt').asCanonClass(),
[])
}

View file

@ -561,7 +561,7 @@ const registerExtendedAE2Recipes = (event) => {
event.recipes.gtceu.assembler('expatternprovider:ex_pattern_access_part')
.itemInputs(
'ae2:pattern_access_terminal',
'4x ae2:logic_processor',
Item.of('ae2:engineering_processor', 4),
'2x megacells:accumulation_processor')
.itemOutputs('expatternprovider:ex_pattern_access_part')
.duration(100)
@ -569,7 +569,7 @@ const registerExtendedAE2Recipes = (event) => {
event.recipes.gtceu.assembler('expatternprovider:pattern_terminal_upgrade')
.itemInputs(
'4x ae2:logic_processor',
'4x ae2:calculation_processor',
'2x megacells:accumulation_processor')
.itemOutputs('expatternprovider:pattern_terminal_upgrade')
.duration(100)

View file

@ -44,7 +44,9 @@ const registerFirmaLifeRecipes = (event) => {
event.remove({ id: 'firmalife:heating/metal/stainless_steel_block_slab' })
event.remove({ id: 'firmalife:heating/metal/stainless_steel_block_stairs' })
event.remove({ id: /^firmalife:crafting\/.*_dough/ })
global.TFC_DOUGHS.forEach(dough => {
event.remove({ id: `firmalife:crafting/${dough}_dough` })
})
event.remove({ id: 'firmalife:pot/chocolate' })
@ -56,7 +58,7 @@ const registerFirmaLifeRecipes = (event) => {
// Декрафт Jag Lid
event.recipes.tfc.heating('tfc:jar_lid', 230)
.resultFluid(Fluid.of('gtceu:tin', 9))
.resultFluid(Fluid.of('gtceu:tin', 6))
.id(`tfc:heating/jar_lid`)
// Pie Pan
@ -84,15 +86,24 @@ const registerFirmaLifeRecipes = (event) => {
// Jar Lid
event.recipes.gtceu.fluid_solidifier(`tfg:firmalife/jar_lid`)
.inputFluids(Fluid.of('gtceu:tin', 9))
.inputFluids(Fluid.of('gtceu:tin', 6))
.notConsumable('gtceu:cylinder_casting_mold')
.itemOutputs('tfc:jar_lid')
.duration(50)
.EUt(7)
event.recipes.gtceu.alloy_smelter('tfg:firmalife/jar_lid')
.itemInputs('1x #forge:ingots/tin')
.notConsumable('gtceu:cylinder_casting_mold')
.itemOutputs('24x tfc:jar_lid')
.duration(75)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(4)
.addMaterialInfo(true)
event.recipes.gtceu.extractor('tfc:jar_lid_extraction')
.itemInputs('tfc:jar_lid')
.outputFluids(Fluid.of('gtceu:tin', 9))
.outputFluids(Fluid.of('gtceu:tin', 6))
.duration(50)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(2)
@ -103,6 +114,15 @@ const registerFirmaLifeRecipes = (event) => {
.itemOutputs('firmalife:stainless_steel_jar_lid')
.duration(50)
.EUt(7)
event.recipes.gtceu.alloy_smelter('tfg:firmalife/stainless_steel_jar_lid')
.itemInputs('1x #forge:ingots/stainless_steel')
.notConsumable('gtceu:cylinder_casting_mold')
.itemOutputs('48x firmalife:stainless_steel_jar_lid')
.duration(75)
.category(GTRecipeCategories.INGOT_MOLDING)
.EUt(4)
.addMaterialInfo(true)
event.recipes.gtceu.extractor('firmalife:stainless_steel_jar_extraction')
.itemInputs('firmalife:stainless_steel_jar_lid')
@ -160,7 +180,7 @@ const registerFirmaLifeRecipes = (event) => {
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.gtceu.assembler('firmalife:cork')
event.recipes.gtceu.chemical_bath('firmalife:cork')
.itemInputs('firmalife:treated_lumber')
.inputFluids(Fluid.of('tfc:limewater', 1000))
.itemOutputs('8x firmalife:cork')
@ -182,23 +202,13 @@ const registerFirmaLifeRecipes = (event) => {
.category(GTRecipeCategories.INGOT_MOLDING)
event.replaceInput({ id: 'firmalife:crafting/bottle_label' }, 'firmalife:beeswax', '#forge:wax')
event.shapeless('firmalife:fruit_leaf', ['#tfc:fruit_tree_leaves']).id('tfg:shapeless/firmalife/fruit_leaf_from_fruit_leaves');
//#endregion
//#region Рецепты теплиц / Greenhouse
//#region Treated Wood
event.shapeless('firmalife:treated_wood_greenhouse_port', [
'firmalife:treated_wood_greenhouse_wall',
'#forge:tiny_fluid_pipes/copper'
])
.id('firmalife:crafting/greenhouse/treated_wood_greenhouse_port')
//#endregion Treated Wood
//#region Медная / Copper
event.recipes.gtceu.extruder('tfg:firmalife/sprinkler_electric_only')
.itemInputs('#forge:plates/copper')
.notConsumable('tfg:small_casing_extruder_mold')
@ -207,233 +217,95 @@ const registerFirmaLifeRecipes = (event) => {
.EUt(8)
.addMaterialInfo(true)
// Стена
event.recipes.gtceu.shaped('8x firmalife:copper_greenhouse_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/copper',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_wall')
/**
* @type {string[]} - Tier names of greenhouse casings.
*/
const greenhouse_tiers = [
{tier: 'treated_wood', material: 'firmalife:treated_lumber'},
{tier: 'copper', material: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Copper, 1)},
{tier: 'iron', material: ChemicalHelper.get(TagPrefix.rod, GTMaterials.WroughtIron, 1)},
{tier: 'stainless_steel', material: ChemicalHelper.get(TagPrefix.rod, GTMaterials.StainlessSteel, 1)}
];
// Панель
event.recipes.gtceu.shaped('8x firmalife:copper_greenhouse_panel_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/copper',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_panel_wall')
//Firmalife namespace is left so we dont have to change patchouli entries.
greenhouse_tiers.forEach(tier => {
// Панельная Крыша
event.recipes.gtceu.shaped('4x firmalife:copper_greenhouse_panel_roof', [
'A ',
'BA ',
'BBA'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/copper'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_panel_roof')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_wall`})
event.recipes.gtceu.shaped(`16x firmalife:${tier.tier}_greenhouse_wall`, [
'ABA',
'BBB',
'ABA'
], {
A: tier.material,
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_wall`)
// Крыша
event.recipes.gtceu.shaped('4x firmalife:copper_greenhouse_roof', [
'A ',
'BA ',
'BBA'
], {
A: '#forge:rods/copper',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_roof')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_panel_wall`})
event.recipes.gtceu.shaped(`16x firmalife:${tier.tier}_greenhouse_panel_wall`, [
'ABA',
'ABA',
'ABA'
], {
A: tier.material,
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_panel_wall`)
// Верхушка крыши
event.recipes.gtceu.shaped('8x firmalife:copper_greenhouse_roof_top', [
'ABA',
'BAB'
], {
A: '#forge:rods/copper',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_roof_top')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_panel_roof`})
event.recipes.gtceu.shaped(`8x firmalife:${tier.tier}_greenhouse_panel_roof`, [
'A ',
'BA ',
'BBA'
], {
A: 'firmalife:reinforced_glass',
B: tier.material
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_panel_roof`)
// Люк
event.recipes.gtceu.shaped('8x firmalife:copper_greenhouse_trapdoor', [
'ABA',
'BAB'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/copper'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_trapdoor')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_roof`})
event.recipes.gtceu.shaped(`8x firmalife:${tier.tier}_greenhouse_roof`, [
'A ',
'BA ',
'BBA'
], {
A: tier.material,
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_roof`)
// Дверь
event.recipes.gtceu.shaped('2x firmalife:copper_greenhouse_door', [
'AB',
'AB',
'AB'
], {
A: '#forge:rods/copper',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/copper_greenhouse_door')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_roof_top`})
event.recipes.gtceu.shaped(`8x firmalife:${tier.tier}_greenhouse_roof_top`, [
'ABA',
'BAB'
], {
A: tier.material,
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_roof_top`)
event.shapeless('firmalife:copper_greenhouse_port', [
'firmalife:copper_greenhouse_wall',
'#forge:tiny_fluid_pipes/copper'
])
.id('firmalife:crafting/greenhouse/copper_greenhouse_port')
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_trapdoor`})
event.recipes.gtceu.shaped(`8x firmalife:${tier.tier}_greenhouse_trapdoor`, [
'ABA',
'BAB'
], {
A: 'firmalife:reinforced_glass',
B: tier.material
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_trapdoor`)
//#endregion
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_door`})
event.recipes.gtceu.shaped(`2x firmalife:${tier.tier}_greenhouse_door`, [
'AB',
'AB',
'AB'
], {
A: tier.material,
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_door`)
//#region Железная / Iron
// Стена
event.recipes.gtceu.shaped('8x firmalife:iron_greenhouse_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/wrought_iron',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_wall')
// Панель
event.recipes.gtceu.shaped('8x firmalife:iron_greenhouse_panel_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/wrought_iron',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_panel_wall')
// Панельная Крыша
event.recipes.gtceu.shaped('4x firmalife:iron_greenhouse_panel_roof', [
'A ',
'BA ',
'BBA'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/wrought_iron'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_panel_roof')
// Крыша
event.recipes.gtceu.shaped('4x firmalife:iron_greenhouse_roof', [
'A ',
'BA ',
'BBA'
], {
A: '#forge:rods/wrought_iron',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_roof')
// Верхушка крыши
event.recipes.gtceu.shaped('8x firmalife:iron_greenhouse_roof_top', [
'ABA',
'BAB'
], {
A: '#forge:rods/wrought_iron',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_roof_top')
// Люк
event.recipes.gtceu.shaped('8x firmalife:iron_greenhouse_trapdoor', [
'ABA',
'BAB'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/wrought_iron'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_trapdoor')
// Дверь
event.recipes.gtceu.shaped('2x firmalife:iron_greenhouse_door', [
'AB',
'AB',
'AB'
], {
A: '#forge:rods/wrought_iron',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/iron_greenhouse_door')
event.shapeless('firmalife:iron_greenhouse_port', [
'firmalife:iron_greenhouse_wall',
'#forge:tiny_fluid_pipes/copper'
])
.id('firmalife:crafting/greenhouse/iron_greenhouse_port')
//#endregion
//#region Нержавеющая теплица / Stainless Steel
event.recipes.gtceu.shaped('8x firmalife:stainless_steel_greenhouse_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/stainless_steel',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_wall')
event.recipes.gtceu.shaped('8x firmalife:stainless_steel_greenhouse_panel_wall', [
'ABA',
'ABA',
'ABA'
], {
A: '#forge:rods/stainless_steel',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_panel_wall')
event.recipes.gtceu.shaped('4x firmalife:stainless_steel_greenhouse_panel_roof', [
'A ',
'BA ',
'BBA'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/stainless_steel'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_panel_roof')
event.recipes.gtceu.shaped('4x firmalife:stainless_steel_greenhouse_roof', [
'A ',
'BA ',
'BBA'
], {
A: '#forge:rods/stainless_steel',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_roof')
// Верхушка крыши
event.recipes.gtceu.shaped('8x firmalife:stainless_steel_greenhouse_roof_top', [
'ABA',
'BAB'
], {
A: '#forge:rods/stainless_steel',
B: 'firmalife:reinforced_glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_roof_top')
// Люк
event.recipes.gtceu.shaped('8x firmalife:stainless_steel_greenhouse_trapdoor', [
'ABA',
'BAB'
], {
A: 'firmalife:reinforced_glass',
B: '#forge:rods/stainless_steel'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_trapdoor')
// Дверь
event.recipes.gtceu.shaped('2x firmalife:stainless_steel_greenhouse_door', [
'AB',
'AB',
'AB'
], {
A: '#forge:rods/stainless_steel',
B: 'minecraft:glass'
}).addMaterialInfo().id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_door')
event.shapeless('firmalife:stainless_steel_greenhouse_port', [
'firmalife:stainless_steel_greenhouse_wall',
'#forge:tiny_fluid_pipes/copper'
])
.id('firmalife:crafting/greenhouse/stainless_steel_greenhouse_port')
//#endregion
event.remove({ id: `firmalife:crafting/greenhouse/${tier.tier}_greenhouse_port`})
event.recipes.gtceu.shaped(`firmalife:${tier.tier}_greenhouse_port`, [
'AB'
], {
A: `#tfg:${tier.tier}_greenhouse_casings`,
B: ChemicalHelper.get(TagPrefix.pipeTinyFluid, GTMaterials.Copper, 1)
}).addMaterialInfo().id(`firmalife:crafting/greenhouse/${tier.tier}_greenhouse_port`)
});
event.recipes.gtceu.shaped('firmalife:sweeper', [
'ABD',
@ -459,48 +331,25 @@ const registerFirmaLifeRecipes = (event) => {
//#endregion
//#region Укрепленное стекло
//#region Reinforced Glass
event.shaped('firmalife:reinforced_glass', [
event.shaped('9x firmalife:reinforced_glass', [
'AB'
], {
A: '#tfc:saws',
B: 'gtceu:tempered_glass'
}).id('tfg:shaped/reinforced_glass')
}).id('tfg:shaped/reinforced_glass');
generateCutterRecipe(event, '3x gtceu:tempered_glass', '8x firmalife:reinforced_glass', 100, 7, 'reinforced_glass')
generateCutterRecipe(event, '1x gtceu:tempered_glass', '9x firmalife:reinforced_glass', 100, 7, 'reinforced_glass');
//#endregion
//#region Рецепты электрической теплицы
// Дерево
// Семена фруктов
global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS.forEach(element => {
generateGreenHouseRecipe(event, element.input, '#tfc:any_fresh_water', element.fluid_amount, element.output,
element.name, 'minecraft:overworld', 8, null, GTValues.VA[GTValues.LV])
})
// Семена ягод
global.FIRMALIFE_GREENHOUSE_BERRY_RECIPE_COMPONENTS.forEach(element => {
generateGreenHouseRecipe(event, element.input, '#tfc:any_fresh_water', element.fluid_amount, element.output,
element.name, null, 8, null, GTValues.VA[GTValues.LV])
})
//#endregion
//#region Sticky Resin by Vat
event.recipes.firmalife.vat()
.inputs('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000))
.outputItem('gtceu:sticky_resin')
.id('tfg:vat/latex_to_sticky_resin');
event.recipes.firmalife.vat()
.inputs('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000))
.outputItem('gtceu:sticky_resin')
.id('tfg:vat/conifer_pitch_to_sticky_resin');
event.recipes.gtceu.macerator('tfg:recycling/reinforced_glass')
.itemInputs('firmalife:reinforced_glass')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Glass, 1)
)
.duration(GTMaterials.Glass.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV]);
//#endregion
@ -536,17 +385,11 @@ const registerFirmaLifeRecipes = (event) => {
//#endregion
//#region Plated blocks
generatePlatedBlockRecipe(event, GTMaterials.Chromium);
generatePlatedBlockRecipe(event, GTMaterials.StainlessSteel);
// #endregion
// #region Drying mat alternatives
event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/leafy_kelp' }).id('tfg:shaped/drying_mat_leafy_kelp')
event.shaped('firmalife:drying_mat', ['AAA'], { A: 'tfc:plant/winged_kelp' }).id('tfg:shaped/drying_mat_winged_kelp')
event.shaped('firmalife:drying_mat', ['AAA'], { A: '#tfg:charnia' }).id('tfg:shaped/drying_mat_charnia')
// #endregion
@ -1024,7 +867,7 @@ const registerFirmaLifeRecipes = (event) => {
event.recipes.tfc.barrel_sealed(72000)
.inputFluid(Fluid.of('minecraft:water', 100))
.inputItem(TFC.ingredient.hasTrait(Ingredient.of('#tfg:dried_fruit'), "firmalife:dried"))
.inputItem(TFC.ingredient.hasTrait('#tfg:dried_fruit', "firmalife:dried"))
.outputFluid(Fluid.of('firmalife:yeast_starter', 100))
.id('firmalife:barrel/yeast_starter')
}

View file

@ -18,12 +18,17 @@ const registerFirmaLifeItemTags = (event) => {
event.removeAllTagsFrom("/tfc:ore/[^*]+/[^*]+/")
// Make our own "dried fruit" tag so we can display something in EMI - used for yeast starter
const fruitArray = Ingredient.of('#tfc:foods/fruits').itemIds.toArray().map(String)
fruitArray.forEach(fruit => {
if (fruit !== 'betterend:shadow_berry_cooked' && fruit !== 'minecraft:popped_chorus_fruit') {
event.add('tfg:dried_fruit', fruit)
}
})
global.FOOD_FRUIT
.map(fruit => fruit.id)
.filter(fruit => fruit !== 'betterend:shadow_berry_cooked' && fruit !== 'minecraft:popped_chorus_fruit')
.forEach(fruit => event.add('tfg:dried_fruit', fruit))
event.add('tfc:fruit_tree_leaves', 'firmalife:plant/cocoa_leaves')
event.add('tfc:fruit_tree_leaves', 'firmalife:plant/fig_leaves')
event.add('minecraft:leaves', 'firmalife:plant/cocoa_leaves')
event.add('minecraft:leaves', 'firmalife:plant/fig_leaves')
event.add('tfc:clay_recycle_5', '#firmalife:clay_recycle_5')
}
const registerFirmaLifeBlockTags = (event) => {

View file

@ -7,6 +7,8 @@ const registerFramedBlocksRecipes = (event) => {
event.remove({ id: 'framedblocks:framing_saw/framed_torch' })
event.remove({ id: 'framedblocks:framed_soul_torch' })
event.remove({ id: 'framedblocks:framing_saw/framed_soul_torch' })
event.remove({ id: 'framedblocks:framed_obsidian_pressure_plate' })
event.remove({ id: 'framedblocks:framing_saw/framed_obsidian_pressure_plate' })
//#region Framed Iron Door
event.shaped('framedblocks:framed_iron_door', [
@ -385,6 +387,13 @@ const registerFramedBlocksRecipes = (event) => {
A: '#minecraft:planks',
B: '#forge:rods/wooden'
}).id('framedblocks:framed_cube')
event.recipes.gtceu.assembler('tfg:assembler/framedblocks/framed_cube')
.itemInputs('4x #minecraft:planks', '4x #forge:rods/wooden')
.circuit(8)
.itemOutputs('framedblocks:framed_cube')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
// Framed Fence
event.shaped('3x framedblocks:framed_fence', [
@ -405,7 +414,7 @@ const registerFramedBlocksRecipes = (event) => {
}).id('framedblocks:framed_fence_gate')
// Framed Ladder
event.shaped('3x framedblocks:framed_ladder', [
event.shaped('8x framedblocks:framed_ladder', [
'A A',
'ABA',
'A A'
@ -416,24 +425,26 @@ const registerFramedBlocksRecipes = (event) => {
// Framing Saw
event.shaped('framedblocks:framing_saw', [
' B ',
'AAA',
' E ',
'CAC',
'BDB'
], {
A: 'framedblocks:framed_cube',
B: 'gtceu:wrought_iron_buzz_saw_blade'
}).id('framedblocks:framing_saw')
A: '#forge:plates/wrought_iron',
B: 'framedblocks:framed_cube',
C: '#forge:plates/brass',
D: '#forge:small_gears/brass',
E: '#forge:buzz_saw_heads'
}).id('framedblocks:framing_saw');
// Powered Framing Saw
event.shaped('framedblocks:powered_framing_saw', [
'ABA',
'CAD',
'EEE'
'A',
'B',
'C'
], {
A: '#forge:glass',
B: 'gtceu:wrought_iron_buzz_saw_blade',
C: 'gtceu:lv_electric_motor',
D: 'gtceu:lv_electric_motor',
E: 'framedblocks:framed_cube'
B: 'framedblocks:framing_saw',
C: 'gtceu:lv_electric_motor'
}).id('framedblocks:powered_framing_saw')
// Framed Chest

View file

@ -88,29 +88,7 @@ function registerGreateRecipes(event) {
// #region Gearboxes
global.AVAILABLE_GREATE_MATERIAL_TIERS.forEach(tier => {
event.shaped(`greate:${tier}_gearbox`, [
' A ',
'ABA',
'CA '
], {
A: `greate:${tier}_shaft`,
B: 'create:andesite_casing',
C: '#forge:tools/wrenches'
}).id(`tfg:shaped/${tier}_gearbox`)
event.shaped(`greate:${tier}_vertical_gearbox`, [
'A A',
' B ',
'ACA'
], {
A: `greate:${tier}_shaft`,
B: 'create:andesite_casing',
C: '#forge:tools/wrenches'
}).id(`tfg:shaped/${tier}_vertical_gearbox`)
event.shapeless(`greate:${tier}_gearbox`, [`greate:${tier}_vertical_gearbox`])
event.shapeless(`greate:${tier}_vertical_gearbox`, [`greate:${tier}_gearbox`])
event.recipes.gtceu.assembler(`greate:${tier}_gearbox`)
.itemInputs('create:andesite_casing', `4x greate:${tier}_shaft`)
@ -121,20 +99,20 @@ function registerGreateRecipes(event) {
})
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_gearbox', { 'wood': 1, 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_vertical_gearbox', { 'wood': 1, 'wrought_iron': 1 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1]);
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_vertical_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1]);
TFGHelpers.registerMaterialInfo('greate:steel_gearbox', { 'wood': 1, 'wrought_iron': 1, 'steel': 4/9 });
TFGHelpers.registerMaterialInfo('greate:steel_vertical_gearbox', { 'wood': 1, 'wrought_iron': 1, 'steel': 4/9 });
TFGHelpers.registerMaterialInfo('greate:steel_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Steel, 4/9]);
TFGHelpers.registerMaterialInfo('greate:steel_vertical_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Steel, 4/9]);
TFGHelpers.registerMaterialInfo('greate:aluminium_gearbox', { 'wood': 1, 'wrought_iron': 1, 'aluminium': 4/9 });
TFGHelpers.registerMaterialInfo('greate:aluminium_vertical_gearbox', { 'wood': 1, 'wrought_iron': 1, 'aluminium': 4/9 });
TFGHelpers.registerMaterialInfo('greate:aluminium_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Aluminium, 4/9]);
TFGHelpers.registerMaterialInfo('greate:aluminium_vertical_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Aluminium, 4/9]);
TFGHelpers.registerMaterialInfo('greate:stainless_steel_gearbox', { 'wood': 1, 'wrought_iron': 1, 'stainless_steel': 4/9 });
TFGHelpers.registerMaterialInfo('greate:stainless_steel_vertical_gearbox', { 'wood': 1, 'wrought_iron': 1, 'stainless_steel': 4/9 });
TFGHelpers.registerMaterialInfo('greate:stainless_steel_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.StainlessSteel, 4/9]);
TFGHelpers.registerMaterialInfo('greate:stainless_steel_vertical_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.StainlessSteel, 4/9]);
TFGHelpers.registerMaterialInfo('greate:titanium_gearbox', { 'wood': 1, 'wrought_iron': 1, 'titanium': 4/9 });
TFGHelpers.registerMaterialInfo('greate:titanium_vertical_gearbox', { 'wood': 1, 'wrought_iron': 1, 'titanium': 4/9 });
TFGHelpers.registerMaterialInfo('greate:titanium_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Titanium, 4/9]);
TFGHelpers.registerMaterialInfo('greate:titanium_vertical_gearbox', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 1, GTMaterials.Titanium, 4/9]);
// #endregion
@ -147,8 +125,8 @@ function registerGreateRecipes(event) {
event.shapeless('greate:large_andesite_alloy_cogwheel', ['greate:andesite_alloy_cogwheel', '#forge:small_gears/wood'])
.id('tfg:shapeless/large_andesite_alloy_cogwheel_upgrade');
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_cogwheel', { 'wood': 1 });
TFGHelpers.registerMaterialInfo('greate:large_andesite_alloy_cogwheel', { 'wood': 2 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_cogwheel', [GTMaterials.Wood, 1]);
TFGHelpers.registerMaterialInfo('greate:large_andesite_alloy_cogwheel', [GTMaterials.Wood, 2]);
event.shapeless('greate:steel_cogwheel', ['greate:steel_shaft', '#forge:small_gears/wrought_iron'])
.id('tfg:shapeless/steel_cogwheel')
@ -157,8 +135,8 @@ function registerGreateRecipes(event) {
event.shapeless('greate:large_steel_cogwheel', ['greate:steel_cogwheel', '#forge:small_gears/wrought_iron'])
.id('tfg:shapeless/large_steel_cogwheel_upgrade');
TFGHelpers.registerMaterialInfo('greate:steel_cogwheel', { 'wrought_iron': 1, 'steel': 1/9 });
TFGHelpers.registerMaterialInfo('greate:large_steel_cogwheel', { 'wrought_iron': 2, 'steel': 1/9 });
TFGHelpers.registerMaterialInfo('greate:steel_cogwheel', [GTMaterials.WroughtIron, 1, GTMaterials.Steel, 1/9]);
TFGHelpers.registerMaterialInfo('greate:large_steel_cogwheel', [GTMaterials.WroughtIron, 2, GTMaterials.Steel, 1/9]);
event.shapeless('greate:aluminium_cogwheel', ['greate:aluminium_shaft', '#forge:small_gears/steel'])
.id('tfg:shapeless/aluminium_cogwheel')
@ -167,8 +145,8 @@ function registerGreateRecipes(event) {
event.shapeless('greate:large_aluminium_cogwheel', ['greate:aluminium_cogwheel', '#forge:small_gears/steel'])
.id('tfg:shapeless/large_aluminium_cogwheel_upgrade');
TFGHelpers.registerMaterialInfo('greate:aluminium_cogwheel', { 'steel': 1, 'aluminium': 1/9 });
TFGHelpers.registerMaterialInfo('greate:large_aluminium_cogwheel', { 'steel': 2, 'aluminium': 1/9 });
TFGHelpers.registerMaterialInfo('greate:aluminium_cogwheel', [GTMaterials.Steel, 1, GTMaterials.Aluminium, 1/9]);
TFGHelpers.registerMaterialInfo('greate:large_aluminium_cogwheel', [GTMaterials.Steel, 2, GTMaterials.Aluminium, 1/9]);
event.shapeless('greate:stainless_steel_cogwheel', ['greate:stainless_steel_shaft', '#forge:small_gears/aluminium'])
.id('tfg:shapeless/stainless_steel_cogwheel')
@ -177,8 +155,8 @@ function registerGreateRecipes(event) {
event.shapeless('greate:large_stainless_steel_cogwheel', ['greate:stainless_steel_cogwheel', '#forge:small_gears/aluminium'])
.id('tfg:shapeless/large_stainless_steel_cogwheel_upgrade');
TFGHelpers.registerMaterialInfo('greate:stainless_steel_cogwheel', { 'aluminium': 1, 'stainless_steel': 1/9 });
TFGHelpers.registerMaterialInfo('greate:large_stainless_steel_cogwheel', { 'aluminium': 2, 'stainless_steel': 1/9 });
TFGHelpers.registerMaterialInfo('greate:stainless_steel_cogwheel', [GTMaterials.Aluminium, 1, GTMaterials.StainlessSteel, 1/9]);
TFGHelpers.registerMaterialInfo('greate:large_stainless_steel_cogwheel', [GTMaterials.Aluminium, 2, GTMaterials.StainlessSteel, 1/9]);
event.shapeless('greate:titanium_cogwheel', ['greate:titanium_shaft', '#forge:small_gears/stainless_steel'])
.id('tfg:shapeless/titanium_cogwheel')
@ -187,8 +165,8 @@ function registerGreateRecipes(event) {
event.shapeless('greate:large_titanium_cogwheel', ['greate:titanium_cogwheel', '#forge:small_gears/stainless_steel'])
.id('tfg:shapeless/large_titanium_cogwheel_upgrade');
TFGHelpers.registerMaterialInfo('greate:titanium_cogwheel', { 'stainless_steel': 1, 'titanium': 1/9 });
TFGHelpers.registerMaterialInfo('greate:large_titanium_cogwheel', { 'stainless_steel': 2, 'titanium': 1/9 });
TFGHelpers.registerMaterialInfo('greate:titanium_cogwheel', [GTMaterials.StainlessSteel, 1, GTMaterials.Titanium, 1/9]);
TFGHelpers.registerMaterialInfo('greate:large_titanium_cogwheel', [GTMaterials.StainlessSteel, 2, GTMaterials.Titanium, 1/9]);
// #endregion
@ -230,7 +208,7 @@ function registerGreateRecipes(event) {
E: '#forge:tools/saws'
}).id('greate:shaped/andesite_alloy_millstone3')
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_millstone', { 'stone': 9 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_millstone', [GTMaterials.Stone, 9]);
event.shaped('greate:steel_millstone', [
'FBF',
@ -327,7 +305,7 @@ function registerGreateRecipes(event) {
D: '#forge:gems/diamond'
}).id('greate:steel_crushing_wheel')
TFGHelpers.registerMaterialInfo('greate:steel_crushing_wheel', { 'wrought_iron': 14, 'tin_alloy': 8, 'steel': 4, 'diamond': 4 });
TFGHelpers.registerMaterialInfo('greate:steel_crushing_wheel', [GTMaterials.WroughtIron, 14, GTMaterials.TinAlloy, 8, GTMaterials.Steel, 4, GTMaterials.Diamond, 4]);
event.recipes.createMechanicalCrafting('2x greate:aluminium_crushing_wheel', [
' AAA ',
@ -342,7 +320,7 @@ function registerGreateRecipes(event) {
D: '#forge:gems/diamond'
}).id('greate:aluminium_crushing_wheel')
TFGHelpers.registerMaterialInfo('greate:aluminium_crushing_wheel', { 'steel': 14, 'vanadium_steel': 8, 'aluminium': 4, 'diamond': 4 });
TFGHelpers.registerMaterialInfo('greate:aluminium_crushing_wheel', [GTMaterials.Steel, 14, GTMaterials.VanadiumSteel, 8, GTMaterials.Aluminium, 4, GTMaterials.Diamond, 4]);
event.recipes.createMechanicalCrafting('2x greate:stainless_steel_crushing_wheel', [
' AAA ',
@ -357,7 +335,7 @@ function registerGreateRecipes(event) {
D: 'gtceu:diamond_grinding_head'
}).id('greate:stainless_steel_crushing_wheel')
TFGHelpers.registerMaterialInfo('greate:stainless_steel_crushing_wheel', { 'aluminium': 14, 'blue_alloy': 8, 'stainless_steel': 4, 'steel': 32, 'diamond': 20 });
TFGHelpers.registerMaterialInfo('greate:stainless_steel_crushing_wheel', [GTMaterials.Aluminium, 4, GTMaterials.BlueAlloy, 8, GTMaterials.StainlessSteel, 4, GTMaterials.Steel, 32, GTMaterials.Diamond, 20]);
event.recipes.createMechanicalCrafting('2x greate:titanium_crushing_wheel', [
' AAA ',
@ -372,7 +350,7 @@ function registerGreateRecipes(event) {
D: 'gtceu:diamond_grinding_head'
}).id('greate:titanium_crushing_wheel')
TFGHelpers.registerMaterialInfo('greate:titanium_crushing_wheel', { 'stainless_steel': 14, 'ultimet': 8, 'titanium': 4, 'steel': 32, 'diamond': 20 });
TFGHelpers.registerMaterialInfo('greate:titanium_crushing_wheel', [GTMaterials.StainlessSteel, 14, GTMaterials.Ultimet, 8, GTMaterials.Titanium, 4, GTMaterials.Steel, 32, GTMaterials.Diamond, 20]);
// #endregion
@ -481,7 +459,7 @@ function registerGreateRecipes(event) {
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_mechanical_saw', { 'wood': 1, 'wrought_iron': 3 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_mechanical_saw', [GTMaterials.Wood, 1, GTMaterials.WroughtIron, 3]);
event.shaped('greate:steel_mechanical_saw', [
'ABA',
@ -651,7 +629,7 @@ function registerGreateRecipes(event) {
event.remove({ id: 'gtceu:extractor/extract_andesite_alloy_belt_connector' })
event.remove({ id: 'gtceu:arc_furnace/arc_andesite_alloy_belt_connector' })
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_belt_connector', { 'wood': 1 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_belt_connector', [GTMaterials.Wood, 1]);
// Leather
event.recipes.tfc.damage_inputs_shaped_crafting(
@ -674,7 +652,7 @@ function registerGreateRecipes(event) {
removeMaceratorRecipe(event, 'macerate_stone_belt_connector')
event.remove({ id: 'greate:shaped/stone_belt_connector' })
TFGHelpers.registerMaterialInfo('greate:stone_belt_connector', { 'air': 1 });
TFGHelpers.clearMaterialInfo('greate:stone_belt_connector');
// Rubber
event.shaped('greate:rubber_belt_connector', [
@ -698,7 +676,7 @@ function registerGreateRecipes(event) {
removeMaceratorRecipe(event, 'macerate_rubber_belt_connector')
event.remove({ id: 'gtceu:extractor/extract_rubber_belt_connector' })
TFGHelpers.registerMaterialInfo('greate:rubber_belt_connector', { 'rubber': 3 });
TFGHelpers.registerMaterialInfo('greate:rubber_belt_connector', [GTMaterials.Rubber, 3]);
// Silicone rubber
event.shaped('greate:silicone_rubber_belt_connector', [
@ -722,7 +700,7 @@ function registerGreateRecipes(event) {
removeMaceratorRecipe(event, 'macerate_silicone_rubber_belt_connector')
event.remove({ id: 'gtceu:extractor/extract_silicone_rubber_belt_connector' })
TFGHelpers.registerMaterialInfo('greate:silicone_rubber_belt_connector', { 'silicone_rubber': 3 });
TFGHelpers.registerMaterialInfo('greate:silicone_rubber_belt_connector', [GTMaterials.SiliconeRubber, 3]);
// SBR rubber
event.shaped('greate:styrene_butadiene_rubber_belt_connector', [
@ -746,7 +724,7 @@ function registerGreateRecipes(event) {
removeMaceratorRecipe(event, 'macerate_styrene_butadiene_rubber_belt_connector')
event.remove({ id: 'gtceu:extractor/extract_styrene_butadiene_rubber_belt_connector' })
TFGHelpers.registerMaterialInfo('greate:styrene_butadiene_rubber_belt_connector', { 'styrene_butadiene_rubber': 3 });
TFGHelpers.registerMaterialInfo('greate:styrene_butadiene_rubber_belt_connector', [GTMaterials.StyreneButadieneRubber, 3]);
// #endregion
// #region Mixer
@ -757,7 +735,7 @@ function registerGreateRecipes(event) {
'FEG'
], {
A: '#gtceu:circuits/ulv',
B: 'greate:steel_shaft',
B: '#forge:small_gears/blue_steel',
C: 'gtceu:ulv_machine_hull',
D: '#forge:plates/black_steel',
E: 'gtceu:steel_whisk',
@ -766,7 +744,7 @@ function registerGreateRecipes(event) {
}).id('greate:shaped/steel_mechanical_mixer')
event.recipes.gtceu.assembler('greate:steel_mechanical_mixer')
.itemInputs('greate:steel_shaft', '2x #gtceu:circuits/ulv', 'gtceu:ulv_machine_hull', 'gtceu:steel_whisk', '2x #forge:plates/black_steel')
.itemInputs('#forge:small_gears/blue_steel', '2x #gtceu:circuits/ulv', 'gtceu:ulv_machine_hull', 'gtceu:steel_whisk', '2x #forge:plates/black_steel')
.itemOutputs('greate:steel_mechanical_mixer')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
@ -1035,7 +1013,7 @@ function registerGreateRecipes(event) {
F: 'greate:andesite_alloy_shaft'
}).id('greate:shaped/andesite_alloy_mechanical_press')
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_mechanical_press', { 'iron': 2 });
TFGHelpers.registerMaterialInfo('greate:andesite_alloy_mechanical_press', [GTMaterials.Iron, 2]);
event.shaped('greate:steel_mechanical_press', [
' AD',
@ -1122,14 +1100,9 @@ function registerGreateRecipes(event) {
// #endregion
event.recipes.gtceu.shaped('greate:wire_coating_factory', [
'ABA',
'CDC',
'ABA'
], {
A: 'gtceu:watertight_casing',
B: '#gtceu:circuits/iv',
C: 'gtceu:iv_electric_pump',
D: 'create:spout'
}).addMaterialInfo().id('tfg:shaped/toms_favourite_block')
event.recipes.gtceu.cutter(`tfg:greate/greate:treated_wood_window_pane`)
.itemInputs(`3x greate:treated_wood_window`)
.itemOutputs(`8x greate:treated_wood_window_pane`)
.duration(40)
.EUt(7)
}

View file

@ -9,6 +9,7 @@ function removeGreateRecipes(event) {
global.GREATE_DISABLED_ITEMS.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
TFGHelpers.clearMaterialInfo(item);
})
global.GREATE_DISABLED_FLUIDS.forEach(fluid => {
@ -41,6 +42,7 @@ function removeGreateRecipes(event) {
event.remove({ id: `gtceu:extractor/extract_${tier}` })
event.remove({ id: `gtceu:extractor/extract_${tier}_shaft` })
event.remove({ id: `gtceu:extractor/extract_${tier}_cogwheel` })
event.remove({ id: `gtceu:extractor/extract_large_${tier}_cogwheel` })
event.remove({ id: `gtceu:extractor/extract_${tier}_alloy` })
event.remove({ id: `gtceu:extractor/extract_${tier}_gearbox` })
event.remove({ id: `gtceu:extractor/extract_${tier}_vertical_gearbox` })
@ -53,17 +55,11 @@ function removeGreateRecipes(event) {
event.remove({ id: 'gtceu:shaped/andesite_alloy_shaft' })
event.remove({ id: 'gtceu:extractor/extract_andesite_alloy' })
event.remove({ id: /^greate:mixing\/integration\/create\/.*/ })
event.remove({ id: /^greate:sawing\/integration\/create\/.*/ })
event.remove({ id: /^greate:splashing\/integration\/create\/.*/ })
event.remove({ id: /^greate:crushing\/integration\/create\/.*/ })
event.remove({ id: /^greate:milling\/integration\/create\/.*/ })
event.remove({ id: /^greate:compacting\/integration\/.*/ })
event.remove({ id: /^greate:pressing\/integration\/.*/ })
event.remove({ id: /^greate:shaped\/.*/ })
event.remove({ id: /^greate:shapeless\/.*/ })
event.remove({ id: /^greate:(mixing|sawing|splashing|crushing|milling)\/integration\/(create|createaddition|vintageimprovements)\/.*/ })
event.remove({ id: /^greate:(compacting|pressing)\/integration\/.*/ })
event.remove({ mod: 'greate', type: 'minecraft:crafting_shapeless' })
event.remove({ mod: 'greate', type: 'create:deploying' });
event.remove({ mod: 'greate', type: 'create:sequenced_assembly' });
event.remove({ mod: 'greate', type: 'gtceu:assembler' });
@ -77,8 +73,56 @@ function removeGreateRecipes(event) {
event.remove({ id: 'greate:cutting/integration/create/cutting/runtime_generated/compat/minecraft/bamboo_planks_to_bamboo_button' })
event.remove({ id: 'greate:mixing/integration/gtceu/mixer/fire_charge' })
event.remove({ id: 'toomanyrecipeviewers:/greate/milling/integration/gtceu/macerator/macerate_cocoa' })
event.remove({ id: 'greate:milling/integration/gtceu/macerator/macerate_cocoa' })
event.remove({ id: 'greate:milling/integration/gtceu/macerator/macerate_honeycomb' })
event.remove({ id: 'greate:milling/integration/gtceu/macerator/macerate_honeycomb_block'})
event.remove({ id: 'greate:milling/integration/gtceu/macerator/quartz_sand_from_sand' })
event.remove({ id: 'greate:mixing/brass_ingot' })
event.remove({ id: 'greate:shaped/copper_diving_helmet' })
event.remove({ id: 'greate:shaped/copper_backtank' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_phosphorus_boule' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_phosphorus_boule_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_phosphorus_boule_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_naquadah_boule' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_naquadah_boule_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_naquadah_boule_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_neutronium_boule' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_neutronium_boule_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_neutronium_boule_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nano_cpu' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nano_cpu_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nano_cpu_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_qbit_cpu' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_qbit_cpu_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_qbit_cpu_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_soc' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_soc_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_soc_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_asoc' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_asoc_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_asoc_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hasoc' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hasoc_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hasoc_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nand' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nand_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nand_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nor' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nor_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_nor_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_lpic_wafer' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_lpic_wafer_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_lpic_wafer_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_pic_wafer' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_pic_wafer_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_pic_wafer_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hpic' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hpic_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_hpic_distilled_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_uhpic' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_uhpic_water' })
event.remove({ id: 'greate:cutting/integration/gtceu/cutter/cut_uhpic_distilled_water' })
}

View file

@ -45,6 +45,7 @@ const registerGTCEUHeats = (event) => {
makeItemHeatByTagPrefix(TagPrefix.plateDouble, material, tfcProperty, 5.75)
makeItemHeatByTagPrefix(TagPrefix.springSmall, material, tfcProperty, 0.567)
makeItemHeatByTagPrefix(TagPrefix.spring, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TagPrefix.ring, material, tfcProperty, 0.567)
makeItemHeatByTagPrefix(TagPrefix.ingot, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.ingotDouble, material, tfcProperty, 2.875)
@ -59,7 +60,11 @@ const registerGTCEUHeats = (event) => {
makeItemHeatByTagPrefix(TagPrefix.crushed, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TagPrefix.crushedPurified, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TagPrefix.crushedRefined, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TagPrefix.toolHeadWrench, material, tfcProperty, 2.875)
makeItemHeatByTagPrefix(TagPrefix.toolHeadBuzzSaw, material, tfcProperty, 2.875)
makeItemHeatByTagPrefix(TagPrefix.toolHeadScrewdriver, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TagPrefix.toolHeadWireCutter, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadSword, material, tfcProperty, 2.875)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadShovel, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadScythe, material, tfcProperty, 1.429)
@ -70,7 +75,7 @@ const registerGTCEUHeats = (event) => {
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadHammer, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadAxe, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadFile, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadButcheryKnife, material, tfcProperty, 2.875)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadButcheryKnife, material, tfcProperty, 1.429)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadMiningHammer, material, tfcProperty, 2.875)
makeItemHeatByTagPrefix(TFGTagPrefix.toolHeadSpade, material, tfcProperty, 2.875)

View file

@ -7,7 +7,6 @@
*/
const registerGTCEURecipes = (event) => {
registerGTCEUMetalRecipes(event)
registerGTCEURecyclingRecipes(event)
registerGTCEuMachineRecipes(event)
@ -80,7 +79,9 @@ const registerGTCEURecipes = (event) => {
//#endregion
// #region Move MV superconductor to mid-late MV instead of post-vac freezer
// #region Superconductor
// Move MV superconductor to mid-late MV instead of post-vac freezer
event.remove({ id: 'gtceu:shaped/mv_chemical_bath' })
event.shaped('gtceu:mv_chemical_bath', [
@ -112,6 +113,32 @@ const registerGTCEURecipes = (event) => {
.duration(400)
.EUt(GTValues.VA[GTValues.MV])
// Move EV to after Uranium Reactor
event.remove({ id: 'gtceu:mixer/uranium_triplatinum' })
event.recipes.gtceu.mixer('tfg:uranium_triplatinum')
.itemInputs(Item.of('gtceu:uranium_dust', 1), Item.of('gtceu:platinum_dust', 3))
.inputFluids(Fluid.of('gtceu:radon', 10))
.itemOutputs(Item.of('gtceu:uranium_triplatinum_dust', 4))
.duration(20*10)
.EUt(GTValues.VA[GTValues.EV])
.circuit(4)
// Move Superconductor to EV and make them cheap
event.remove({ id: 'gtceu:assembler/laser_cable' })
event.recipes.gtceu.assembler('tfg:laser_cable')
.itemInputs(Item.of('gtceu:laminated_glass', 1), Item.of('2x #forge:foils/ostrum_iodide', 2))
.itemOutputs(Item.of('gtceu:normal_laser_pipe', 16))
.inputFluids(Fluid.of('gtceu:polytetrafluoroethylene', 144))
.duration(20*5)
.EUt(GTValues.VA[GTValues.EV])
.cleanroom(CleanroomType.CLEANROOM)
TFGHelpers.registerMaterialInfo('gtceu:normal_laser_pipe', [GTMaterials.Air, 1])
event.remove({ id: 'gtceu:arc_furnace/arc_normal_laser_pipe' })
removeMaceratorRecipe(event, 'macerate_normal_laser_pipe')
// #endregion
//#region Voiding covers
@ -368,8 +395,6 @@ const registerGTCEURecipes = (event) => {
event.replaceInput({ output: 'gtceu:nano_saber' }, 'gtceu:ruridit_plate', '#forge:plates/ostrum_iodide')
event.replaceOutput({ id: 'gtceu:canner/pack_paracetamol' }, 'gtceu:paracetamol_pill', 'tfg:paracetamol_pill')
event.replaceOutput({ id: 'gtceu:canner/pack_rad_away' }, 'gtceu:rad_away_pill', 'tfg:rad_away_pill')
// Intentionally long to encourage reuse instead of mindlessly creating and distilling
event.recipes.gtceu.mixer('tfg:diluted_hcl_acid')
@ -385,12 +410,48 @@ const registerGTCEURecipes = (event) => {
.EUt(GTValues.VA[GTValues.LV])
// Ladder consistency
const nonAdAstraLumber = Ingredient.of('#tfc:lumber').subtract('tfg:wood/lumber/aeronos').subtract('tfg:wood/lumber/strophar');
event.replaceOutput({ id: 'gtceu:assembler/ladder' }, 'minecraft:ladder', '8x minecraft:ladder')
event.replaceInput({ id: 'tfc:crafting/vanilla/ladder' }, '#tfc:lumber', nonAdAstraLumber)
event.recipes.gtceu.assembler('tfg:ladder_from_lumber')
.itemInputs('#tfc:lumber')
.itemInputs(nonAdAstraLumber.withCount(7))
.itemOutputs('8x minecraft:ladder')
.circuit(7)
.duration(40)
.EUt(4)
// Pills
event.remove({ id: 'gtceu:canner/pack_paracetamol' })
event.remove({ id: 'gtceu:canner/pack_rad_away' })
event.recipes.gtceu.forming_press('tfg:pack_rad_away')
.itemInputs('16x #forge:dusts/rad_away')
.notConsumable('gtceu:pill_casting_mold')
.itemOutputs('tfg:rad_away_pill')
.duration(3 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.forming_press('gtceu:pack_paracetamol')
.itemInputs('16x #forge:dusts/paracetamol')
.notConsumable('gtceu:pill_casting_mold')
.itemOutputs('tfg:paracetamol_pill')
.duration(3 * 20)
.EUt(GTValues.VA[GTValues.LV])
// Glass lens
event.recipes.gtceu.lathe('tfg:gt_glass_lens')
.itemInputs('#forge:plates/glass')
.itemOutputs('#forge:lenses/glass', '#forge:small_dusts/glass')
.duration(60 * 20)
.EUt(GTValues.VA[GTValues.MV])
// Magnetic iron
event.shapeless('gtceu:magnetic_iron_ingot', ['#forge:ingots/iron', '8x minecraft:redstone'])
event.shapeless('gtceu:magnetic_iron_plate', ['#forge:plates/iron', '8x minecraft:redstone'])
event.shapeless('gtceu:magnetic_iron_bolt', ['#forge:bolts/iron', '2x minecraft:redstone'])
}

View file

@ -5,7 +5,7 @@
* @param {Internal.RecipesEventJS} event
*/
function registerGTCEuMachineRecipes(event) {
//#region Выход: Filter Casing
// Filter Casing
event.shaped('gtceu:filter_casing', [
'AAA',
@ -19,9 +19,7 @@ function registerGTCEuMachineRecipes(event) {
E: '#forge:rotors/steel'
}).id('gtceu:shaped/filter_casing')
//#endregion
//#region Выход: Assembly Line Grating
// Assembly Line Grating
event.shaped('2x gtceu:assembly_line_grating', [
'ABA',
@ -34,9 +32,7 @@ function registerGTCEuMachineRecipes(event) {
D: 'gtceu:mv_electric_motor'
}).id('gtceu:shaped/casing_grate_casing')
//#endregion
//#region Gas Collectors
// #region Gas Collectors
event.shaped('gtceu:lv_gas_collector', [
'ABA',
@ -133,10 +129,9 @@ function registerGTCEuMachineRecipes(event) {
D: '#gtceu:circuits/uv',
E: 'gtceu:uv_machine_hull'
}).id('gtceu:shaped/uv_gas_collector')
// #endregion
//#endregion
//#region Forge Hammers
// #region Forge Hammers
event.shaped('gtceu:lv_forge_hammer', [
'ABA',
@ -233,12 +228,29 @@ function registerGTCEuMachineRecipes(event) {
D: 'gtceu:uv_machine_hull',
E: '#tfc:red_or_blue_anvil',
}).id('gtceu:shaped/uv_forge_hammer')
// #endregion
//#endregion
// #region Coke Oven
//#region CokeOven
event.remove({ id: 'gtceu:shaped/casing_coke_bricks' })
event.remove({ id: 'gtceu:compressor/coke_bricks' })
event.shaped('gtceu:coke_oven_bricks', [
'ABA',
'BAB',
'ABA'
], {
A: 'tfc:mortar',
B: 'gtceu:coke_oven_brick'
}).id('tfg:shaped/coke_oven_bricks')
event.recipes.gtceu.assembler('tfg:coke_oven_bricks')
.itemInputs('4x gtceu:coke_oven_brick')
.inputFluids(Fluid.of('gtceu:concrete 90'))
.itemOutputs('gtceu:coke_oven_bricks')
.duration(50)
.EUt(2);
// Coke Oven
removeMaceratorRecipe(event, 'macerate_coke_oven')
event.recipes.gtceu.shaped('gtceu:coke_oven', [
'ABA',
@ -268,15 +280,12 @@ function registerGTCEuMachineRecipes(event) {
A: 'gtceu:coke_oven_bricks',
B: '#forge:chests/wooden'
}).addMaterialInfo().id('gtceu:shaped/coke_oven_hatch')
//#endregion
//#region Выход: Стальные машины
// HP Steam Boilers
removeMaceratorRecipe(event, 'macerate_hp_steam_solid_boiler')
event.recipes.gtceu.shaped('gtceu:hp_steam_solid_boiler', [
'AEA',
'FEF',
'ADA',
'BCB'
], {
@ -284,12 +293,13 @@ function registerGTCEuMachineRecipes(event) {
B: ChemicalHelper.get(TagPrefix.pipeSmallFluid, GTMaterials.TinAlloy, 1),
C: 'gtceu:steel_brick_casing',
D: 'tfc:crucible',
E: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1)
E: ChemicalHelper.get(TagPrefix.plate, GTMaterials.BlackSteel, 1),
F: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_boiler_coal_steel')
removeMaceratorRecipe(event, 'macerate_hp_steam_liquid_boiler')
event.recipes.gtceu.shaped('gtceu:hp_steam_liquid_boiler', [
'AEA',
'FEF',
'ADA',
'BCB'
], {
@ -297,7 +307,8 @@ function registerGTCEuMachineRecipes(event) {
B: ChemicalHelper.get(TagPrefix.pipeSmallFluid, GTMaterials.TinAlloy, 1),
C: 'gtceu:steel_brick_casing',
D: '#forge:glass',
E: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1)
E: ChemicalHelper.get(TagPrefix.plate, GTMaterials.BlackSteel, 1),
F: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_boiler_lava_steel')
removeMaceratorRecipe(event, 'macerate_hp_steam_solar_boiler')
@ -308,12 +319,13 @@ function registerGTCEuMachineRecipes(event) {
], {
A: '#forge:glass_panes',
B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Silver, 1),
C: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1),
C: ChemicalHelper.get(TagPrefix.plate, GTMaterials.BlackSteel, 1),
D: 'gtceu:steel_brick_casing',
E: ChemicalHelper.get(TagPrefix.pipeSmallFluid, GTMaterials.TinAlloy, 1),
}).addMaterialInfo().id('gtceu:shaped/steam_boiler_solar_steel')
// Экстрактор
// #region Other steam machines
removeMaceratorRecipe(event, 'macerate_hp_steam_extractor')
event.recipes.gtceu.shaped('gtceu:hp_steam_extractor', [
'BEB',
@ -328,7 +340,6 @@ function registerGTCEuMachineRecipes(event) {
F: ChemicalHelper.get(TagPrefix.ring, GTMaterials.BlackSteel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_extractor_steel')
// Дробитель
removeMaceratorRecipe(event, 'macerate_hp_steam_macerator')
event.recipes.gtceu.shaped('gtceu:hp_steam_macerator', [
'BFB',
@ -343,7 +354,6 @@ function registerGTCEuMachineRecipes(event) {
F: '#forge:raw_materials/diamond'
}).addMaterialInfo().id('gtceu:shaped/steam_macerator_steel')
// Компрессор
removeMaceratorRecipe(event, 'macerate_hp_steam_compressor')
event.recipes.gtceu.shaped('gtceu:hp_steam_compressor', [
'BCB',
@ -355,10 +365,9 @@ function registerGTCEuMachineRecipes(event) {
C: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 1),
D: ChemicalHelper.get(TagPrefix.plate, GTMaterials.WroughtIron, 1),
E: 'minecraft:piston',
F: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1)
F: ChemicalHelper.get(TagPrefix.ingot, GTMaterials.BlackSteel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_compressor_steel')
// Молот
removeMaceratorRecipe(event, 'macerate_hp_steam_forge_hammer')
event.recipes.gtceu.shaped('gtceu:hp_steam_forge_hammer', [
'DFD',
@ -373,7 +382,6 @@ function registerGTCEuMachineRecipes(event) {
F: 'minecraft:piston'
}).addMaterialInfo().id('gtceu:shaped/steam_hammer_steel')
// Печь
removeMaceratorRecipe(event, 'macerate_hp_steam_furnace')
event.recipes.gtceu.shaped('gtceu:hp_steam_furnace', [
'BCB',
@ -387,7 +395,6 @@ function registerGTCEuMachineRecipes(event) {
F: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_furnace_steel')
// Сплавщик
removeMaceratorRecipe(event, 'macerate_hp_steam_alloy_smelter')
event.recipes.gtceu.shaped('gtceu:hp_steam_alloy_smelter', [
'FCF',
@ -401,7 +408,6 @@ function registerGTCEuMachineRecipes(event) {
F: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_alloy_smelter_steel')
// Блоко-ломатель
removeMaceratorRecipe(event, 'macerate_hp_steam_rock_crusher')
event.recipes.gtceu.shaped('gtceu:hp_steam_rock_crusher', [
'ECE',
@ -413,9 +419,9 @@ function registerGTCEuMachineRecipes(event) {
C: '#forge:drill_heads',
D: ChemicalHelper.get(TagPrefix.rod, GTMaterials.WroughtIron, 1),
E: ChemicalHelper.get(TagPrefix.screw, GTMaterials.WroughtIron, 1)
}).addMaterialInfo().id('gtceu:shaped/steam_rock_breaker_steel')
}).id('gtceu:shaped/steam_rock_breaker_steel')
TFGHelpers.registerMaterialInfo('gtceu:hp_steam_rock_crusher', [GTMaterials.WroughtIron, 6.5, GTMaterials.TinAlloy, 2])
// Miner
removeMaceratorRecipe(event, 'macerate_hp_steam_miner')
event.recipes.gtceu.shaped('gtceu:hp_steam_miner', [
'EFE',
@ -428,11 +434,12 @@ function registerGTCEuMachineRecipes(event) {
D: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 1),
E: ChemicalHelper.get(TagPrefix.plate, GTMaterials.WroughtIron, 1),
F: '#gtceu:circuits/ulv'
}).addMaterialInfo().id('gtceu:shaped/steam_miner_steel')
}).id('gtceu:shaped/steam_miner_steel')
TFGHelpers.registerMaterialInfo('gtceu:hp_steam_miner', [GTMaterials.WroughtIron, 7, GTMaterials.Steel, 1, GTMaterials.TinAlloy, 2])
//#endregion
//#region passthrough hatches
//#region Passthrough hatches
event.recipes.gtceu.shaped('gtceu:lv_item_passthrough_hatch', [
' A ',
'BCB',
@ -604,6 +611,8 @@ function registerGTCEuMachineRecipes(event) {
//#region ULV Hatches
event.replaceInput({ id: 'gtceu:shaped/ulv_machine_hull' }, '#forge:plates/wood', '#forge:plates/lead')
event.recipes.gtceu.shaped('gtceu:ulv_input_bus', [
'CAC',
'CBC',
@ -895,4 +904,54 @@ function registerGTCEuMachineRecipes(event) {
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
// Steam generators
event.remove({ id: 'gtceu:shaped/steam_turbine_lv' })
removeMaceratorRecipe(event, 'macerate_lv_steam_turbine')
event.recipes.gtceu.shaped('gtceu:lv_steam_turbine', [
'BAB',
'CDC',
'EFE'
], {
A: '#gtceu:circuits/lv',
B: '#forge:huge_fluid_pipes/steel',
C: '#forge:rotors/cobalt_brass',
D: 'gtceu:lv_machine_hull',
E: 'gtceu:lv_electric_motor',
F: '#forge:single_cables/tin'
}).addMaterialInfo().id('tfg:shaped/steam_turbine_lv')
event.remove({ id: 'gtceu:shaped/steam_turbine_mv' })
removeMaceratorRecipe(event, 'macerate_mv_steam_turbine')
event.recipes.gtceu.shaped('gtceu:mv_steam_turbine', [
'BAB',
'CDC',
'EFE'
], {
A: '#gtceu:circuits/mv',
B: '#forge:huge_fluid_pipes/aluminium',
C: '#forge:rotors/magnalium',
D: 'gtceu:mv_machine_hull',
E: 'gtceu:mv_electric_motor',
F: '#forge:single_cables/copper'
}).addMaterialInfo().id('tfg:shaped/steam_turbine_mv')
event.remove({ id: 'gtceu:shaped/steam_turbine_hv' })
removeMaceratorRecipe(event, 'macerate_hv_steam_turbine')
event.recipes.gtceu.shaped('gtceu:hv_steam_turbine', [
'BAB',
'CDC',
'EFE'
], {
A: '#gtceu:circuits/hv',
B: '#forge:huge_fluid_pipes/stainless_steel',
C: '#forge:rotors/vanadium_steel',
D: 'gtceu:hv_machine_hull',
E: 'gtceu:hv_electric_motor',
F: '#forge:single_cables/gold'
}).addMaterialInfo().id('tfg:shaped/steam_turbine_hv')
}

File diff suppressed because it is too large Load diff

View file

@ -6,213 +6,60 @@
*/
function registerGTCEURecyclingRecipes(event) {
// Tantalum Capacitor
event.recipes.gtceu.macerator('gtceu:macerator/recycling/tantulum_capacitor')
.itemInputs('gtceu:tantalum_capacitor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Tantalum, 1),
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Polyethylene, 1)
)
.duration(GTMaterials.Tantalum.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/tantulum_capacitor')
.itemInputs('gtceu:tantalum_capacitor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Tantalum, 1),
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Ash, 1)
)
.duration(GTMaterials.Tantalum.getMass() * 1)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Capacitor
event.recipes.gtceu.macerator('gtceu:macerator/recycling/capacitor')
.itemInputs('gtceu:capacitor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Polyethylene, 1)
)
.duration(GTMaterials.Polyethylene.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/capacitor')
.itemInputs('gtceu:capacitor')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustTiny, GTMaterials.Ash, 1)
)
.duration(GTMaterials.Ash.getMass() * 1)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Empty Tier I Capacitor
event.recipes.gtceu.macerator('gtceu:macerator/recycling/empty_tier_i_battery')
.itemInputs('gtceu:empty_tier_i_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Ultimet, 6)
)
.duration(GTMaterials.Ultimet.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/empty_tier_i_battery')
.itemInputs('gtceu:empty_tier_i_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Ultimet, 6)
)
.duration(GTMaterials.Ultimet.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.extractor('gtceu:extractor/recycling/empty_tier_i_battery')
.itemInputs('gtceu:empty_tier_i_battery')
.outputFluids(Fluid.of('gtceu:ultimet', 864))
.duration(GTMaterials.Ultimet.getMass() * 6)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Empty Tier II Capacitor
event.recipes.gtceu.macerator('gtceu:macerator/recycling/empty_tier_ii_battery')
.itemInputs('gtceu:empty_tier_ii_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Ruridit, 6)
)
.duration(GTMaterials.Ruridit.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/empty_tier_ii_battery')
.itemInputs('gtceu:empty_tier_ii_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Ruridit, 6)
)
.duration(GTMaterials.Ruridit.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.extractor('gtceu:extractor/recycling/empty_tier_ii_battery')
.itemInputs('gtceu:empty_tier_ii_battery')
.outputFluids(Fluid.of('gtceu:ruridit', 864))
.duration(GTMaterials.Ruridit.getMass() * 6)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Empty Tier III Capacitor
event.recipes.gtceu.macerator('gtceu:macerator/recycling/empty_tier_iii_battery')
.itemInputs('gtceu:empty_tier_iii_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dust, GTMaterials.Neutronium, 6)
)
.duration(GTMaterials.Neutronium.getMass() * 6)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/empty_tier_iii_battery')
.itemInputs('gtceu:empty_tier_iii_battery')
.itemOutputs(
ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Neutronium, 6)
)
.duration(GTMaterials.Neutronium.getMass() * 6)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.extractor('gtceu:extractor/recycling/empty_tier_iii_battery')
.itemInputs('gtceu:empty_tier_iii_battery')
.outputFluids(Fluid.of('gtceu:neutronium', 864))
.duration(GTMaterials.Neutronium.getMass() * 6)
.category(GTRecipeCategories.EXTRACTOR_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// Capacitors
TFGHelpers.registerMaterialInfo('gtceu:tantalum_capacitor', [GTMaterials.Tantalum, 1/9, GTMaterials.Polyethylene, 1/9])
TFGHelpers.registerMaterialInfo('gtceu:capacitor', [GTMaterials.Polyethylene, 1/9])
// Empty batteries
TFGHelpers.registerMaterialInfo('gtceu:empty_tier_i_battery', [GTMaterials.Ultimet, 6])
TFGHelpers.registerMaterialInfo('gtceu:empty_tier_ii_battery', [GTMaterials.Ruridit, 6])
TFGHelpers.registerMaterialInfo('gtceu:empty_tier_iii_battery', [GTMaterials.Neutronium, 6])
// Iron Door
TFGHelpers.registerMaterialInfo('minecraft:iron_door', [GTMaterials.Iron, 2])
TFGHelpers.registerMaterialInfo('minecraft:iron_door', { 'iron': 2 })
removeMaceratorRecipe(event, 'macerate_maintenance_hatch')
TFGHelpers.registerMaterialInfo('gtceu:maintenance_hatch', [GTMaterials.Steel, 8, GTMaterials.Rubber, 2, GTMaterials.Tin, 1])
// #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace
// #region Hanging Signs
global.TFC_EQUIPMENT_METALS.forEach(metal => {
// Recycling Hardwood
// Arc Recycling Hardwood
event.recipes.gtceu.arc_furnace(`tfg:arc_recycling/${metal}/hardwood`)
.itemInputs(`#tfg:hanging_sign/${metal}/hardwood`)
.itemOutputs('gtceu:tiny_ash_dust')
.chancedOutput(`#forge:nuggets/${metal}`, 3750, 0)
.duration(12)
.EUt(30)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
// Macerating Hardwood
event.recipes.gtceu.macerator(`tfg:macerating/hanging_sign/'${metal}/hardwood`)
.itemInputs(`#tfg:hanging_sign/${metal}/hardwood`)
.itemOutputs('gtceu:hardwood_dust')
.chancedOutput(`#forge:tiny_dusts/${metal}`, 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
const SIGN_METALS = [
GTMaterials.Copper,
GTMaterials.Bronze,
GTMaterials.BlackBronze,
GTMaterials.BismuthBronze,
GTMaterials.WroughtIron,
GTMaterials.Steel,
GTMaterials.BlackSteel,
GTMaterials.RedSteel,
GTMaterials.BlueSteel
];
SIGN_METALS.forEach(metal => {
// Arc furnace
global.TFC_WOOD_TYPES.forEach(wood => {
event.remove(`gtceu:arc_furnace/arc_wood/hanging_sign/${metal.getName()}/${wood}`)
event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:tiny_ash_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0)
.inputFluids(Fluid.of('gtceu:oxygen', 12))
.duration(12)
.EUt(30)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
})
global.AFC_WOOD_TYPES.forEach(wood => {
event.recipes.gtceu.arc_furnace(`gtceu:arc_furnace/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:tiny_ash_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.nugget, metal, 1), 3750, 0)
.inputFluids(Fluid.of('gtceu:oxygen', 12))
.duration(12)
.EUt(30)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
})
// Macerator
global.TFC_HARDWOOD_TYPES.forEach(wood => {
removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:hardwood_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
global.TFC_SOFTWOOD_TYPES.forEach(wood => {
removeMaceratorRecipe(event, `macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`tfc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:wood_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
global.AFC_HARDWOOD_TYPES.forEach(wood => {
event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:hardwood_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
global.AFC_SOFTWOOD_TYPES.forEach(wood => {
event.recipes.gtceu.macerator(`gtceu:macerator/macerate_wood/hanging_sign/${metal.getName()}/${wood}`)
.itemInputs(`afc:wood/hanging_sign/${metal.getName()}/${wood}`)
.itemOutputs('gtceu:wood_dust')
.chancedOutput(ChemicalHelper.get(TagPrefix.dustTiny, metal, 1), 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
// Recycling Softwood
// Arc Recycling Softwood
event.recipes.gtceu.arc_furnace(`tfg:arc_recycling/${metal}/softwood`)
.itemInputs(`#tfg:hanging_sign/${metal}/softwood`)
.itemOutputs('gtceu:tiny_ash_dust')
.chancedOutput(`#forge:nuggets/${metal}`, 3750, 0)
.duration(12)
.EUt(30)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
// Macerating Softwood
event.recipes.gtceu.macerator(`tfg:macerating/hanging_sign/'${metal}/softwood`)
.itemInputs(`#tfg:hanging_sign/${metal}/softwood`)
.itemOutputs('gtceu:wood_dust')
.chancedOutput(`#forge:tiny_dusts/${metal}`, 3750, 0)
.duration(108)
.EUt(8)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
})
// #endregion
//#region support recycling
//#region Supports
event.recipes.gtceu.macerator(`hardwood_support_to_dust`)
.itemInputs('#tfg:hardwood_supports')
.itemOutputs('gtceu:hardwood_dust')

View file

@ -12,6 +12,7 @@ function removeGTCEURecipes(event) {
global.GTCEU_DISABLED_ITEMS.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
TFGHelpers.clearMaterialInfo(item);
})
//#region Выход: Крошечная кучка камня
@ -30,10 +31,8 @@ function removeGTCEURecipes(event) {
removeMaceratorRecipe(event, 'macerate_sandstone_slab')
removeMaceratorRecipe(event, 'macerate_red_sandstone_stairs')
removeMaceratorRecipe(event, 'macerate_red_sandstone_slab')
removeMaceratorRecipe(event, 'macerate_granite')
removeMaceratorRecipe(event, 'macerate_diorite')
removeMaceratorRecipe(event, 'macerate_cobblestone_slab')
removeMaceratorRecipe(event, 'macerate_andesite')
event.remove({ id: 'gtceu:shaped/stone_hammer' })
event.remove({ id: 'gtceu:mixer/mossy_cobblestone_from_moss_block' })
event.remove({ id: 'greate:mixing/integration/gtceu/mixer/mossy_cobblestone_from_moss_block' })
@ -113,8 +112,18 @@ function removeGTCEURecipes(event) {
removeCutterRecipe(event, 'cut_deepslate_tile_into_slab_water')
removeCutterRecipe(event, 'cut_deepslate_tile_into_slab_distilled_water')
removeMaceratorRecipe(event, 'macerate_deepslate')
event.remove({ id: 'gtceu:rock_breaker/deepslate' })
TFGHelpers.clearMaterialInfo('minecraft:deepslate')
TFGHelpers.clearMaterialInfo('minecraft:deepslate_wall');
TFGHelpers.clearMaterialInfo('minecraft:polished_deepslate');
TFGHelpers.clearMaterialInfo('minecraft:cobbled_deepslate');
TFGHelpers.clearMaterialInfo('minecraft:cobbled_deepslate_wall');
TFGHelpers.clearMaterialInfo('minecraft:chiseled_deepslate');
TFGHelpers.clearMaterialInfo('minecraft:polished_deepslate_wall');
TFGHelpers.clearMaterialInfo('minecraft:deepslate_bricks');
TFGHelpers.clearMaterialInfo('minecraft:deepslate_brick_wall');
TFGHelpers.clearMaterialInfo('minecraft:deepslate_tiles');
TFGHelpers.clearMaterialInfo('minecraft:deepslate_tile_wall');
// #endregion
@ -159,6 +168,14 @@ function removeGTCEURecipes(event) {
removeCutterRecipe(event, 'cut_polished_blackstone_brick_into_slab_distilled_water')
event.remove({ id: 'gtceu:rock_breaker/blackstone' })
TFGHelpers.clearMaterialInfo('minecraft:blackstone');
TFGHelpers.clearMaterialInfo('minecraft:polished_blackstone');
TFGHelpers.clearMaterialInfo('minecraft:polished_blackstone_bricks');
TFGHelpers.clearMaterialInfo('minecraft:polished_blackstone_brick_wall');
TFGHelpers.clearMaterialInfo('minecraft:chiseled_polished_blackstone');
TFGHelpers.clearMaterialInfo('minecraft:blackstone_wall');
TFGHelpers.clearMaterialInfo('minecraft:polished_blackstone_wall');
TFGHelpers.clearMaterialInfo('minecraft:blackstone_brick_wall');
// #endregion
@ -391,6 +408,8 @@ function removeGTCEURecipes(event) {
//#region Выход: Бумажная пыль
event.remove({ id: 'gtceu:shaped/paper_dust' })
event.remove({ id: 'gtceu:shaped_fluid_container/paper' })
event.remove({ id: 'gtceu:macerator/macerate_enchanting_table' })
//#endregion
@ -470,13 +489,15 @@ function removeGTCEURecipes(event) {
//#region Выход: Пыль базальта
removeMaceratorRecipe(event, 'macerate_basalt')
TFGHelpers.clearMaterialInfo('minecraft:basalt')
TFGHelpers.clearMaterialInfo('minecraft:polished_basalt');
//#endregion
//#region Выход: Слиток камня
//#region Выход: Слиток камня
event.remove({ id: 'gtceu:alloy_smelter/alloy_smelt_stone_to_ingot' })
event.remove({ id: 'gtceu:alloy_smelter/tinted_glass' })
//#endregion
@ -723,7 +744,7 @@ function removeGTCEURecipes(event) {
removeMaceratorRecipe(event, 'macerate_marble')
removeMaceratorRecipe(event, 'macerate_red_granite')
removeMaceratorRecipe(event, 'macerate_calcite')
removeMaceratorRecipe(event, 'macerate_wool')
removeMaceratorRecipe(event, 'macerate_enchanting_table')
@ -747,6 +768,7 @@ function removeGTCEURecipes(event) {
event.remove({ id: 'gtceu:wiremill/string_from_polycaprolactam' })
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_granite_red' })
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_echo_shard' })
event.remove({ id: 'gtceu:chemical_bath/black_steel_cool_down' })
event.remove({ id: 'gtceu:chemical_bath/black_steel_cool_down_distilled_water' })
@ -778,6 +800,7 @@ function removeGTCEURecipes(event) {
event.remove({ id: 'greate:mixing/integration/gtceu/mixer/mossy_red_granite_cobblestone_from_vine' })
event.remove({ id: 'gtceu:lathe/stone_rod_from_cobblestone' })
event.remove({ id: 'gtceu:extractor/extract_sodium_hydroxide_dust' })
// who the hell is grinding metal ingots with their bare hands?
event.remove({ id: 'gtceu:shaped/mortar_grind_antimony' })
@ -800,9 +823,14 @@ function removeGTCEURecipes(event) {
// Replace by the Heat Exchanger recipe for Mars
event.remove({ id: 'gtceu:fluid_heater/formamide' })
// Remove lava bucket from boilers
// Remove from boilers
event.remove({ id: 'gtceu:steam_boiler/minecraft_lava_bucket' })
event.remove({ id: 'gtceu:large_boiler/minecraft_lava_bucket' })
event.remove({ id: 'gtceu:steam_boiler/create_blaze_cake' })
event.remove({ id: 'gtceu:large_boiler/create_blaze_cake' })
event.remove({ id: 'gtceu:steam_boiler/create_creative_blaze_cake' })
event.remove({ id: 'gtceu:large_boiler/create_creative_blaze_cake' })
// Snow Stuffs
@ -825,6 +853,26 @@ function removeGTCEURecipes(event) {
event.remove({ id: 'gtceu:compressor/compress_plate_dust_wood' })
// Remove Netherrack dust centrifuging
event.remove({ id: 'gtceu:centrifuge/netherrack_separation' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__granite' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__diorite' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__andesite' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__marble' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__redrock' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__deepslate' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__blackstone' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__endstone' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__red_granite' })
event.remove({ id: 'gtceu:centrifuge/decomposition_centrifuging__basalt' })
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_tuff' })
removeMaceratorRecipe(event, 'macerate_end_stone');
removeMaceratorRecipe(event, 'macerate_end_stone_bricks');
removeMaceratorRecipe(event, 'macerate_end_stone_brick_wall');
// Remove Default Pressure Plate Recipes
const MC_PRESSURE_PLATES = [
'bamboo',
@ -879,6 +927,10 @@ function removeGTCEURecipes(event) {
event.remove({ id: 'gtceu:macerator/macerate_smooth_sandstone' })
event.remove({ id: 'gtceu:macerator/macerate_sandstone' })
event.remove({ id: 'gtceu:macerator/macerate_cut_sandstone' })
event.remove({ id: 'gtceu:rock_breaker/obsidian' })
event.remove({ id: 'gtceu:alloy_smelter/alloy_smelt_magnesia_refractory_brick_to_nugget' })
}
function removeMaceratorRecipe(event, id) {

View file

@ -13,6 +13,10 @@ function registerGTCEUItemTags(event) {
event.add("c:hidden_from_recipe_viewers", item);
});
// Face curio slot for mask
event.remove("curios:head", "gtceu:face_mask")
event.add("curios:face", "gtceu:face_mask")
// Добавление тега EMI для скрытия всех руд
event.add("c:hidden_from_recipe_viewers", "#forge:ores");
@ -33,6 +37,18 @@ function registerGTCEUItemTags(event) {
event.add("tfc:saws", "#forge:tools/buzzsaws");
event.add("tfc:saws", "#forge:tools/chainsaws");
const saws = event.get('forge:tools/saws').getObjectIds().concat(event.get('forge:tools/chainsaws').getObjectIds());
saws.forEach(sawId =>
{
const id = sawId.getNamespace() + ":" + sawId.getPath();
if(global.ICE_SAW_BLACKLIST.includes(id) || Item.of(sawId).hasTag('forge:tools/buzzsaws'))
{
return;
}
event.add("tfg:silk_harvest_ice", id);
});
global.GTCEU_CASTING_MOLDS.concat(global.TFG_CASTING_MOLDS).forEach((mold) => {
event.add("gtceu:casting_molds", mold);
});
@ -44,6 +60,15 @@ function registerGTCEUItemTags(event) {
// @ts-expect-error According to KJS docs adding tags to tags is supported.
event.add("gtceu:molds", "#gtceu:casting_molds", "#gtceu:extruder_molds", "gtceu:empty_mold");
// Groups up concrete blocks into tags.
Object.entries(global.GTCEU_CONCRETE_BLOCKS).forEach(([type, ids]) => {
event.add(`tfg:gtceu_concrete_blocks/${type}`, ids);
event.add('tfg:gtceu_concrete_blocks', ids);
});
//greens
event.add('tfc:compost_greens', 'gtceu:bio_chaff');
event.add('tfc:compost_greens', 'gtceu:plant_ball');
}
/** @param {TagEvent.Block} event */
@ -82,6 +107,13 @@ function registerGTCEUBlockTags(event) {
event.add("gtceu:cleanroom_doors", "ad_astra:desh_sliding_door");
event.add("gtceu:cleanroom_doors", "ad_astra:ostrum_sliding_door");
event.add("gtceu:cleanroom_doors", "ad_astra:calorite_sliding_door");
event.add("gtceu:cleanroom_doors", "ad_astra:airlock");
// Groups up concrete blocks into tags.
Object.entries(global.GTCEU_CONCRETE_BLOCKS).forEach(([type, ids]) => {
event.add(`tfg:gtceu_concrete_blocks/${type}`, ids);
event.add('tfg:gtceu_concrete_blocks', ids);
});
}
/** @param {TagEvent.Fluid} event */
@ -93,8 +125,18 @@ function registerGTCEUFluidTags(event) {
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_blue_steel");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_black_bronze");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_bismuth_bronze");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_rose_gold");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_sterling_silver");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_stainless_steel");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_manganese_phosphide");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_vanadium_steel");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_gallium_arsenide");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_hsla_steel");
event.add("c:hidden_from_recipe_viewers", "gtceu:molten_rocket_alloy_t2");
event.add("c:hidden_from_recipe_viewers", "gtceu:damascus_steel");
event.add("c:hidden_from_recipe_viewers", "gtceu:blaze");
event.add("c:hidden_from_recipe_viewers", "gtceu:thorium");
}
event.add("c:hidden_from_recipe_viewers", "tfg:molten_weak_red_steel");
event.add("c:hidden_from_recipe_viewers", "tfg:molten_weak_blue_steel");
}

View file

@ -66,193 +66,6 @@ const generateCutterRecipe = (event, input, output, duration, EUt, id) => {
//#endregion
//#region Green House
/**
* Function for generating greenhouse recipes.
*
* @param {*} event
* @param {string} input -Item (Not consumed)
* @param {string} fluid -Fluid ID or tag
* @param {number} fluid_amount -Fluid amount, in mB
* @param {string} output -Item (Chanced output uses input item)
* @param {string} id -Recipe ID
* @param {string} dimension -Dimension ID
* @param {number} fertiliser_count
* @param {string|null} output_seconday -Item (Optional, if there should be a third output)
* @param {number} EUt
*/
function generateGreenHouseRecipe(event, input, fluid, fluid_amount, output, id, dimension, fertiliser_count, output_secondary, EUt) {
if (EUt === undefined || output_secondary === undefined || fertiliser_count === undefined || dimension === undefined) {
throw new TypeError(`Call to generateGreenHouseRecipe for id ${id} is missing args`);
}
let r = event.recipes.gtceu.greenhouse(id)
.notConsumable(input)
.circuit(1)
.inputFluids(`${fluid} ${fluid_amount}`)
.itemOutputs(output)
.chancedOutput(input, 750, 0)
.chancedOutput(input, 500, 0)
.duration(36000) // 30 mins
.EUt(EUt)
if (dimension !== null) {
r.dimension(dimension)
}
if (output_secondary !== null) {
r.chancedOutput(output_secondary, 750, 0)
}
// С удобрением (With fertilizer)
r = event.recipes.gtceu.greenhouse(`${id}_fertilized`)
.notConsumable(input)
.itemInputs(Item.of('gtceu:fertilizer', fertiliser_count))
.circuit(2)
.inputFluids(`${fluid} ${fluid_amount}`)
.itemOutputs(output)
.chancedOutput(input, 4000, 0)
.chancedOutput(input, 3000, 0)
.duration(12000) // 10 mins
.EUt(EUt)
if (dimension !== null) {
r.dimension(dimension)
}
if (output_secondary !== null) {
r.chancedOutput(output_secondary, 4000, 0)
}
}
//#endregion
//#region Filling NBT
/**
* Function to get fluid filling NBT.
*
* @param {string} material -Fluid
* @param {number} amount -mB
* @returns {{ tank: { FluidName: string; Amount: number; }; }}
*/
const getFillingNBT = (material, amount) => {
return {
tank: {
FluidName: Fluid.of(material.getFluid()).getId(),
Amount: amount
}
}
}
//#endregion
//#region Plated Blocks
/**
* Function for generating plated block recipes.
*
* @param {*} event
* @param {GTMaterial} material
*/
function generatePlatedBlockRecipe(event, material) {
// firmaciv plated blocks don't have this property
const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY)
const outputMaterial = (tfcProperty === null || tfcProperty.getOutputMaterial() === null) ? material : tfcProperty.getOutputMaterial()
const plateItem = ChemicalHelper.get(TagPrefix.plate, material, 1);
const platedBlock = ChemicalHelper.get(TFGTagPrefix.blockPlated, material, 1);
const platedSlab = ChemicalHelper.get(TFGTagPrefix.slabPlated, material, 1);
const platedStair = ChemicalHelper.get(TFGTagPrefix.stairPlated, material, 1);
if (platedBlock === null) return;
let tfcMetalName = material.getName();
if (tfcMetalName === "iron") {
tfcMetalName = "cast_iron";
}
event.shapeless(platedBlock, ['#forge:stone_bricks', plateItem, '#forge:tools/hammers'])
.id(`tfg:shapeless/${material.getName()}_plated_block`)
event.recipes.gtceu.assembler(`tfg:${material.getName()}_plated_block`)
.itemInputs('#forge:stone_bricks', plateItem)
.itemOutputs(platedBlock)
.circuit(10)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
if (tfcProperty !== null) {
event.recipes.tfc.heating(platedBlock, tfcProperty.getMeltTemp())
.resultFluid(Fluid.of(outputMaterial.getFluid(), 144))
.id(`tfc:heating/metal/${tfcMetalName}_block`)
}
event.recipes.gtceu.macerator(`tfg:${material.getName()}_plated_block`)
.itemInputs(platedBlock)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
.duration(material.getMass())
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace(`tfg:${material.getName()}_plated_block`)
.itemInputs(platedBlock)
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 1))
.duration(material.getMass())
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.shapeless(platedSlab.withCount(2), ['2x #tfg:brick_slabs', plateItem, '#forge:tools/hammers'])
.id(`tfg:item_application/${material.getName()}_plated_slab`)
event.recipes.gtceu.assembler(`tfg:${material.getName()}_plated_slab`)
.itemInputs('2x #tfg:brick_slabs', plateItem)
.itemOutputs(platedSlab.withCount(2))
.circuit(10)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
if (tfcProperty !== null) {
// Slabs are lossy because it's possible to plate a double slab block with one metal plate
event.recipes.tfc.heating(platedSlab, tfcProperty.getMeltTemp())
.resultFluid(Fluid.of(outputMaterial.getFluid(), 72))
.id(`tfc:heating/metal/${tfcMetalName}_block_slab`)
}
event.recipes.gtceu.macerator(`tfg:${material.getName()}_plated_slab`)
.itemInputs(platedSlab)
.itemOutputs(ChemicalHelper.get(TagPrefix.dustSmall, material, 2))
.duration(material.getMass())
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace(`tfg:${material.getName()}_plated_slab`)
.itemInputs(platedSlab)
.itemOutputs(ChemicalHelper.get(TagPrefix.nugget, material, 4))
.duration(material.getMass())
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
event.shapeless(platedStair, ['#tfg:brick_stairs', plateItem, '#forge:tools/hammers'])
.id(`tfg:item_application/${material.getName()}_plated_stair`)
event.recipes.gtceu.assembler(`tfg:${material.getName()}_plated_stair`)
.itemInputs('#tfg:brick_stairs', plateItem)
.itemOutputs(platedStair)
.circuit(10)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
if (tfcProperty !== null) {
event.recipes.tfc.heating(platedStair, tfcProperty.getMeltTemp())
.resultFluid(Fluid.of(outputMaterial.getFluid(), 144))
.id(`tfc:heating/metal/${tfcMetalName}_block_stairs`)
}
event.recipes.gtceu.macerator(`tfg:${material.getName()}_plated_stair`)
.itemInputs(platedStair)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, material, 1))
.duration(material.getMass())
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace(`tfg:${material.getName()}_plated_stair`)
.itemInputs(platedStair)
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, material, 1))
.duration(material.getMass())
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
}
//#endregion
//#region forEachMaterial
/**
* Function for iterating through registered materials
@ -321,7 +134,7 @@ function addCircuitToRecipe(event, recipeId, circuitNumber) {
let hasCircuit = false;
for (let i = 0; i < itemArray.size(); i++) {
const el = itemArray.get(i);
if (!el.isJsonObject()) {continue;}
if (!el.isJsonObject()) { continue; }
const obj = el.getAsJsonObject();
const content = obj.get("content");
if (content && content.isJsonObject()) {
@ -518,6 +331,9 @@ function woodBuilder(event, name, lumber, logs, log, stripped_log, plank, stair,
.itemOutputs(`6x ${button}`)
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.shapeless(`3x ${button}`, [pressure_plate, '#forge:tools/saws'])
.id(`tfg:shapeless/saw_${name}_pressure_plate_to_button`)
}
}
//#endregion
@ -535,21 +351,21 @@ function woodBuilder(event, name, lumber, logs, log, stripped_log, plank, stair,
* @throws {TypeError} Throws an error if input, output, or multiplier is invalid.
*/
function sterilizeItem(event, input, output, multiplier, cleanroom) {
// Collect errors.
const errors = [];
// Collect errors.
const errors = [];
if (input === undefined || (Array.isArray(input) && input.length !== 1) || output === undefined || (Array.isArray(output) && output.length !== 1)) {
errors.push("input or output is undefined or not equal to one item");
};
if (multiplier <= 0) {
errors.push(`invalid multiplier (${multiplier})`);
};
if (multiplier <= 0) {
errors.push(`invalid multiplier (${multiplier})`);
};
// If there are any errors, log them all and throw once.
if (errors.length > 0) {
const message = `sterilizeItem errors:\n - ${ errors.join("\n - ")}`;
throw new TypeError(message);
};
// If there are any errors, log them all and throw once.
if (errors.length > 0) {
const message = `sterilizeItem errors:\n - ${errors.join("\n - ")}`;
throw new TypeError(message);
};
// Set default multiplier.
let recipe_multiplier = 1;
@ -558,34 +374,34 @@ function sterilizeItem(event, input, output, multiplier, cleanroom) {
}
// Create recipes.
const ethanol_recipe = event.recipes.gtceu.chemical_bath(`tfg:ethanol_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`)
const ethanol_recipe = event.recipes.gtceu.chemical_bath(`tfg:ethanol_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`)
.itemInputs(input)
.inputFluids(Fluid.of('gtceu:ethanol', 500*recipe_multiplier))
.inputFluids(Fluid.of('gtceu:ethanol', 500 * recipe_multiplier))
.itemOutputs(output)
.duration(10*20*recipe_multiplier)
.duration(10 * 20 * recipe_multiplier)
.EUt(GTValues.VA[GTValues.MV]);
const hydrogen_peroxide_recipe = event.recipes.gtceu.chemical_bath(`tfg:hydrogen_peroxide_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`)
const hydrogen_peroxide_recipe = event.recipes.gtceu.chemical_bath(`tfg:hydrogen_peroxide_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`)
.itemInputs(input)
.inputFluids(Fluid.of('gtceu:hydrogen_peroxide', 200*recipe_multiplier))
.inputFluids(Fluid.of('gtceu:hydrogen_peroxide', 200 * recipe_multiplier))
.itemOutputs(output)
.duration(10*20*recipe_multiplier)
.duration(10 * 20 * recipe_multiplier)
.EUt(GTValues.VA[GTValues.MV]);
const sodium_dodecyl_sulfate_recipe = event.recipes.gtceu.chemical_bath(`tfg:sodium_dodecyl_sulfate_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`)
const sodium_dodecyl_sulfate_recipe = event.recipes.gtceu.chemical_bath(`tfg:sodium_dodecyl_sulfate_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`)
.itemInputs(input)
.inputFluids(Fluid.of('tfg:sodium_dodecyl_sulfate', 50*recipe_multiplier))
.inputFluids(Fluid.of('tfg:sodium_dodecyl_sulfate', 50 * recipe_multiplier))
.itemOutputs(output)
.duration(10*20*recipe_multiplier)
.duration(10 * 20 * recipe_multiplier)
.EUt(GTValues.VA[GTValues.MV]);
const autoclave_recipe = event.recipes.gtceu.autoclave(`tfg:autoclave_cleaning/${input.replace(':', '_')}_to_${output.replace(':', '_')}`)
const autoclave_recipe = event.recipes.gtceu.autoclave(`tfg:autoclave_cleaning/${linuxUnfucker(input)}_to_${linuxUnfucker(output)}`)
.itemInputs(input)
.perTick(true)
.inputFluids(Fluid.of('gtceu:steam', 100*recipe_multiplier))
.inputFluids(Fluid.of('gtceu:steam', 100 * recipe_multiplier))
.perTick(false)
.itemOutputs(output)
.duration(240*20*recipe_multiplier)
.duration(240 * 20 * recipe_multiplier)
.EUt(GTValues.VA[GTValues.MV]);
if (cleanroom) {

View file

@ -0,0 +1,51 @@
// priority: 0
"use strict";
function registerGTCEUTerminalRecipes(event) {
// Gregtech CEu Terminals Integration
//event.remove({ id : 'gtceuterminal:dismantler' })
event.shaped('1x gtceuterminal:dismantler', [
'ABA',
'CDC',
'FEF'
], {
A: 'gtceu:mv_sensor',
B: 'gtceu:mv_emitter',
C: '#gtceu:circuits/mv',
D: 'gtceu:computer_monitor_cover',
E: 'gtceu:mv_voltage_coil',
F: '#forge:plates/aluminium'
}).id(`tfg:shaped/dismantler`)
event.remove({ id : 'gtceuterminal:multi_structure_manager' })
event.shaped('1x gtceuterminal:multi_structure_manager', [
'ABA',
'CDC',
'FEF'
], {
A: 'gtceu:hv_sensor',
B: 'gtceu:hv_emitter',
C: '#gtceu:circuits/hv',
D: 'gtceu:terminal',
E: '#gtceu:batteries/hv',
F: '#forge:plates/stainless_steel'
}).id(`tfg:shaped/multi_structure_manager`)
event.remove({ id : 'gtceuterminal:schematic_interface' })
event.shaped('1x gtceuterminal:schematic_interface', [
'ABA',
'CDC',
'FEF'
], {
A: 'gtceu:iv_sensor',
B: 'gtceu:iv_emitter',
C: '#gtceu:circuits/iv',
D: 'gtceu:terminal',
E: '#gtceu:batteries/iv',
F: '#forge:plates/tungsten_steel'
}).id(`tfg:shaped/schematic_interface`)
}

View file

@ -251,13 +251,12 @@ function registerImmersiveAircraftRecipes(event) {
createRecyclingRecipeArgs('tfg:black_steel_plated_airplane_propeller', [GTMaterials.BlackSteel], [createMaterialsToResults(TagPrefix.dust, TagPrefix.ingot, 3)]))
event.shaped('tfg:redblu_steel_plated_airplane_propeller', [
'ABC',
'AB ',
'DED',
'CBF'
' BF'
], {
A: '#forge:tools/hammers',
B: 'gtceu:red_steel_plate',
C: 'gtceu:red_alloy_dust',
D: 'gtceu:blue_steel_plate',
E: '#forge:rotors',
F: '#forge:tools/wrenches'
@ -266,10 +265,8 @@ function registerImmersiveAircraftRecipes(event) {
generateRecyclingRecipe('tfg:recycling/redblu_steel_plated_airplane_propeller',
createRecyclingRecipeArgs('tfg:redblu_steel_plated_airplane_propeller', [
GTMaterials.RedSteel,
GTMaterials.BlueSteel,
GTMaterials.RedAlloy
GTMaterials.BlueSteel
], [
createMaterialsToResults(TagPrefix.dust, TagPrefix.ingot, 1),
createMaterialsToResults(TagPrefix.dust, TagPrefix.ingot, 1),
createMaterialsToResults(TagPrefix.dust, TagPrefix.ingot, 1)
])

View file

@ -23,4 +23,12 @@ function registerMacawsForTFCRecipes(event) {
C: `tfc:wood/log/${wood}`
}).id(`tfg:shaped/${wood}_wired_fence`)
})
}
event.shaped(`4x mcw_tfc_aio:fences/other_fences/hedge`, [
'BAB',
'BAB'
], {
A: '#forge:rods/wooden',
B: '#minecraft:leaves'
}).id(`tfg:shaped/mcw_tfc/hedge_fence_from_leaves`);
};

View file

@ -0,0 +1,8 @@
// priority: 0
"use strict";
function registerMacawsForTFCItemTags(event) {
global.MINECRAFT_DYE_NAMES.forEach(color => {
event.remove(`mcw_tfc_aio:${color}_roofs`, `mcw_tfc_aio:roofs/${color}_roofs/${color}_roof_slab`);
})
}

View file

@ -22,6 +22,7 @@ ServerEvents.tags('item', event => {
registerCreateConnectedItemTags(event)
registerCreateDecoItemTags(event)
registerCreateFactoryLogisticsItemTags(event)
registerCreateHypertubeItemTags(event)
registerDeaFissionItemTags(event)
registerDomumOrnamentumItemTags(event)
registerDiggerHelmetItemTags(event)
@ -37,6 +38,7 @@ ServerEvents.tags('item', event => {
registerGreateItemTags(event)
registerGTCEUItemTags(event)
registerImmersiveAircraftItemTags(event)
registerMacawsForTFCItemTags(event)
registerMegaCellsItemTags(event)
registerMinecraftItemTags(event)
registerModernMarkingsItemTags(event)
@ -53,7 +55,7 @@ ServerEvents.tags('item', event => {
registerTFCItemTags(event)
registerTFCTextileItemTags(event)
registerTFGItemTags(event)
registerTFGItemTagsNuclear(event)
registerTFGNuclearItemTags(event)
registerTFCLunchboxItemTags(event)
registerVintageImprovementsItemTags(event)
registerWABItemTags(event)
@ -68,6 +70,7 @@ ServerEvents.tags('block', event => {
registerAFCBlockTags(event)
registerAsticorCartsBlockTags(event)
registerBeneathBlockTags(event)
registerBlockRunnerBlockTags(event)
registerComputerCraftBlockTags(event)
registerCreateBlockTags(event)
registerCreateAdditionsBlockTags(event)
@ -86,6 +89,7 @@ ServerEvents.tags('block', event => {
registerMoreRedBlockTags(event)
registerHotOrNotBlockTags(event)
registerRailWaysBlockTags(event)
registerRnrBlockTags(event)
registerSophisticatedBackpacksBlockTags(event)
registerSpeciesBlockTags(event)
registerTACZBlockTags(event)
@ -132,6 +136,7 @@ ServerEvents.tags('worldgen/biome', event => {
registerAdAstraBiomeTags(event)
registerCreatePickyWheelsBiomeTags(event)
registerTFGBiomeTags(event)
registerWansAncientBeastsBiomeTags(event)
})
ServerEvents.tags('entity_type', event => {
@ -155,6 +160,7 @@ TFCEvents.data(event => {
registerTFCDataForAdAstra(event);
registerTFCDataForArborFirmaCraft(event)
registerTFCDataForChalk(event);
registerTFCDataForChimes(event);
registerTFCDataForCreateAddition(event);
registerTFCDataForFirmalife(event)
registerTFCDataForGTCEU(event)
@ -177,6 +183,8 @@ TFCEvents.data(event => {
*/
LootJS.modifiers((event) => {
registerAdAstraLoots(event)
registerBeneathLoots(event)
registerTFGRockLoots(event)
registerTFGOreLoots(event)
registerLootrLoots(event)
registerPrimitiveCreaturesLoots(event)
@ -198,6 +206,13 @@ GTCEuServerEvents.fluidVeins(event => {
registerGTCEUBedrockFluidVeins(event)
})
/** Correct recipe IDs to replace invalid characters */
function linuxUnfucker(value) {
const str = (value === undefined || value === null) ? "" : value.toString();
return str.replace(/[/:\s]/g, "_");
};
/**
* Событие регистрации рецептов.
* Срабатывает после инициализации датапаков и тегов.
@ -216,6 +231,7 @@ ServerEvents.recipes(event => {
registerBeneathRecipes(event)
registerBuildingGadgetsRecipes(event)
registerChalkRecipes(event);
registerChimesRecipes(event);
registerComfortsRecipes(event);
registerComputerCraftRecipes(event)
//registerCccBridgeRecipes(event)
@ -227,6 +243,8 @@ ServerEvents.recipes(event => {
registerCreateFactoryLogisticsRecipes(event)
registerCreateHorsePowerBlockRecipes(event)
registerCreateHypertubeRecipes(event)
registerCreateSoundOfSteamRecipes(event)
//registerCreateStockBridgeRecipes(event)
registerDeaFissionRecipes(event)
registerDiggerHelmetRecipes(event)
registerDomumOrnamentumRecipes(event)
@ -242,6 +260,7 @@ ServerEvents.recipes(event => {
registerGrapplingHookRecipes(event);
registerGreateRecipes(event)
registerGTCEURecipes(event);
registerGTCEUTerminalRecipes(event)
registerHandGliderRecipes(event)
registerHotOrNotRecipes(event)
registerImmersiveAircraftRecipes(event)
@ -266,11 +285,11 @@ ServerEvents.recipes(event => {
registerTFCAmbientalRecipes(event)
registerTFCBetterBFRecipes(event)
registerTFCLunchBoxRecipes(event)
registerTFCScrapingRecipes(event)
registerTFCGroomingStationRecipes(event)
registerTFCGurmanRecipes(event)
registerTFGRecipes(event)
registerTFCTextileRecipes(event)
registerTFCScrapingKnivesRecipes(event)
registerToolBeltRecipes(event)
registerVintageImprovementsRecipes(event)
registerWaterFlasksRecipes(event)

View file

@ -113,7 +113,7 @@ const registerMegaCellsRecipes = (event) => {
], {
A: '#forge:plates/steel',
B: 'ae2:engineering_processor',
C: '#ae2:glass_cable',
C: '#ae2:smart_cable',
D: '#gtceu:circuits/lv',
}).addMaterialInfo().id('tfg:crafting/megacells_cell_dock')

View file

@ -186,7 +186,7 @@ const registerMinecraftRecipes = (event) => {
//#region Выход: Тонированное стекло, tinted glass
event.recipes.gtceu.alloy_smelter('tfg:minecraft/tinted_glass')
.itemInputs('minecraft:glass', 'tfc:powder/amethyst')
.itemInputs('#forge:glass', '4x tfc:powder/amethyst')
.itemOutputs('minecraft:tinted_glass')
.duration(260)
.EUt(16)
@ -479,7 +479,7 @@ const registerMinecraftRecipes = (event) => {
//#region Выход: Ведро, buckets
event.recipes.tfc.welding('minecraft:bucket', 'tfc:metal/bucket/red_steel', 'tfc:metal/bucket/blue_steel', 6)
event.recipes.tfc.welding(TFC.isp.of('minecraft:bucket').copyForgingBonus(), 'tfc:metal/bucket/red_steel', 'tfc:metal/bucket/blue_steel', 6)
.id('tfg:anvil/vanilla_bucket')
event.recipes.greate.compacting('minecraft:bucket', ['tfc:metal/bucket/red_steel', 'tfc:metal/bucket/blue_steel', 'tfc:powder/flux'])
@ -533,7 +533,7 @@ const registerMinecraftRecipes = (event) => {
A: '#forge:plates/wrought_iron',
B: '#forge:chests/wooden',
D: '#forge:tools/wrenches',
E: '#forge:tools/hammers',
E: '#forge:tools/hammers'
}).id('gtceu:shaped/hopper')
event.recipes.gtceu.assembler('hopper_wrought_iron')
@ -756,6 +756,22 @@ const registerMinecraftRecipes = (event) => {
B: 'minecraft:brick'
}).id('tfc:crafting/bricks')
event.recipes.gtceu.assembler(`assembler_bricks`)
.itemInputs('5x minecraft:brick')
.inputFluids(Fluid.of('gtceu:concrete', 144))
.itemOutputs(`4x minecraft:bricks`)
.duration(50)
.circuit(2)
.EUt(7)
event.recipes.gtceu.alloy_smelter('tfg:brick_dust_to_brick')
.itemInputs('#forge:dusts/brick')
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('minecraft:brick')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.INGOT_MOLDING)
//#endregion
//#region Выход: Элитра, elytra
@ -896,7 +912,7 @@ const registerMinecraftRecipes = (event) => {
A: '#forge:rods/black_steel',
B: 'minecraft:lava_bucket',
C: '#minecraft:logs',
D: '#forge:storage_blocks/charcoal',
D: '#forge:storage_blocks/charcoal'
}).id('tfg:campfire_charcoal')
event.shaped('minecraft:campfire', [
@ -907,7 +923,7 @@ const registerMinecraftRecipes = (event) => {
A: '#forge:rods/black_steel',
B: 'minecraft:lava_bucket',
C: '#minecraft:logs',
D: '#forge:storage_blocks/coal',
D: '#forge:storage_blocks/coal'
}).id('tfg:campfire_coal')
//#endregion
@ -963,40 +979,29 @@ const registerMinecraftRecipes = (event) => {
//#region Stonecutter
event.shaped('minecraft:stonecutter',
[
' E ',
'CAC',
'BDB'
],
{
A: '#forge:plates/wrought_iron',
B: '#tfc:lumber',
C: '#forge:plates/brass',
D: '#forge:small_gears',
E: '#forge:buzz_saw_heads'
}).id('tfg:shaped/stonecutter');
event.shaped('minecraft:stonecutter', [
' E ',
'CAC',
'BDB'
], {
A: '#forge:plates/wrought_iron',
B: '#tfc:lumber',
C: '#forge:plates/brass',
D: '#forge:small_gears/brass',
E: '#forge:buzz_saw_heads'
}).id('tfg:shaped/stonecutter');
event.stonecutting('minecraft:smooth_quartz', 'minecraft:quartz_block')
event.stonecutting('create:cut_deepslate', 'minecraft:polished_deepslate')
//#endregion
//#region Glowing Ink Sacs
event.recipes.gtceu.chemical_bath('minecraft:glow_inc_sac4')
.itemInputs("gtceu:thorium_dust")
.inputFluids(Fluid.of('gtceu:glowstone', 512))
.itemOutputs('16x minecraft:glow_ink_sac')
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_bath('minecraft:glow_inc_sac1')
.itemInputs("#forge:dyes/black")
.inputFluids(Fluid.of('gtceu:glowstone', 144))
event.recipes.gtceu.fluid_solidifier('tfg:glow_ink_sac')
.inputFluids('gtceu:glowstone 36')
.notConsumable('gtceu:ball_casting_mold')
.itemOutputs('minecraft:glow_ink_sac')
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
//#region Gunpowder
@ -1051,30 +1056,20 @@ const registerMinecraftRecipes = (event) => {
.EUt(2)
})
// #endregion
//#region Greenhouse
generateGreenHouseRecipe(event, '8x minecraft:bamboo', '#tfc:any_fresh_water', 4000,
'64x minecraft:bamboo', 'bamboo', 'minecraft:overworld', 8,
'8x minecraft:bamboo', GTValues.VA[GTValues.LV])
generateGreenHouseRecipe(event, '4x minecraft:red_mushroom', '#tfc:any_fresh_water', 4000,
'24x minecraft:red_mushroom', 'red_mushroom', 'minecraft:the_nether', 8,
'4x minecraft:red_mushroom', GTValues.VA[GTValues.LV])
generateGreenHouseRecipe(event, '4x minecraft:brown_mushroom', '#tfc:any_fresh_water', 4000,
'24x minecraft:brown_mushroom', 'brown_mushroom', 'minecraft:the_nether', 8,
'4x minecraft:brown_mushroom', GTValues.VA[GTValues.LV])
event.shapeless('3x minecraft:polished_blackstone_button', ['minecraft:polished_blackstone_pressure_plate', '#forge:tools/saws'])
.id(`tfg:shapeless/saw_blackstone_pressure_plate_to_button`)
event.shapeless('3x minecraft:bamboo_button', ['minecraft:bamboo_pressure_plate', '#forge:tools/saws'])
.id(`tfg:shapeless/saw_bamboo_pressure_plate_to_button`)
// #endregion
// Minecart w/ Furnace
event.shapeless('minecraft:furnace_minecart', ['minecraft:water_bucket', 'gtceu:hp_steam_solid_boiler', 'minecraft:minecart']);
// Minecart w/ Furnace
event.shapeless('minecraft:furnace_minecart', ['minecraft:water_bucket', 'gtceu:hp_steam_solid_boiler', 'minecraft:minecart']);
event.recipes.gtceu.assembler('minecraft:furnace_minecart')
.itemInputs('minecraft:water_bucket', 'gtceu:hp_steam_solid_boiler', 'minecraft:minecart')
.itemOutputs('minecraft:furnace_minecart')
.duration(100)
.EUt(4)
event.recipes.gtceu.assembler('minecraft:furnace_minecart')
.itemInputs('minecraft:water_bucket', 'gtceu:hp_steam_solid_boiler', 'minecraft:minecart')
.itemOutputs('minecraft:furnace_minecart')
.duration(100)
.EUt(4)
}

View file

@ -6,6 +6,7 @@ function removeMinecraftRecipes(event) {
global.MINECRAFT_DISABLED_ITEMS.forEach(item => {
event.remove({ input: item })
event.remove({ output: item })
TFGHelpers.clearMaterialInfo(item);
})
//#region Выход: Камень
@ -1157,7 +1158,8 @@ function removeMinecraftRecipes(event) {
//#endregion
//#region Выход: Кнопка из черного камня
event.remove({ id: 'gtceu:shaped/stone_button' })
event.remove({ id: 'minecraft:polished_blackstone_button' })
//#endregion

View file

@ -6,55 +6,81 @@
* @param {TagEvent.Item} event
*/
const registerMinecraftItemTags = (event) => {
global.MINECRAFT_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
global.MINECRAFT_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
global.MINECRAFT_HIDED_ITEMS.forEach(item => {
event.add('c:hidden_from_recipe_viewers', item)
})
global.MINECRAFT_HIDED_ITEMS.forEach(item => {
event.add('c:hidden_from_recipe_viewers', item)
})
// Hide potions
event.add('c:hidden_from_recipe_viewers', /minecraft.*potion.*/)
// Hide potions
event.add('c:hidden_from_recipe_viewers', /minecraft.*potion.*/)
// Теперь обсидиан сторадж блок
event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian')
// Теперь обсидиан сторадж блок
event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian')
// Бамбуковые полублоки
event.add('tfg:bamboo_slabs', 'minecraft:bamboo_slab')
event.add('tfg:bamboo_slabs', 'minecraft:bamboo_mosaic_slab')
// Бамбуковые полублоки
event.add('tfg:bamboo_slabs', 'minecraft:bamboo_slab')
event.add('tfg:bamboo_slabs', 'minecraft:bamboo_mosaic_slab')
event.remove('minecraft:creeper_drop_music_discs', ['minecraft:music_disc_11'])
event.remove('minecraft:creeper_drop_music_discs', ['minecraft:music_disc_11'])
event.remove('forge:gems', 'minecraft:charcoal')
event.remove('forge:gems', 'minecraft:coal')
event.remove('forge:gems', 'minecraft:flint')
event.remove('forge:gems', 'minecraft:charcoal')
event.remove('forge:gems', 'minecraft:coal')
event.remove('forge:gems', 'minecraft:flint')
event.add('tfc:colored_terracotta', 'minecraft:white_terracotta')
event.add('tfc:colored_terracotta', 'minecraft:white_terracotta')
event.add('tfc:bells', 'minecraft:bell')
event.add('tfc:bells', 'minecraft:bell')
event.add('tfc:hematitic_sand', 'minecraft:red_sand')
event.add('tfc:makes_black_dye', 'minecraft:ink_sac')
event.add('tfc:makes_white_dye', 'minecraft:bone_meal')
event.add('tfc:makes_black_dye', 'minecraft:ink_sac')
event.add('tfc:makes_white_dye', 'minecraft:bone_meal')
event.add('create:blaze_burner_fuel/regular', 'minecraft:coal')
event.add('create:blaze_burner_fuel/regular', 'minecraft:charcoal')
event.add("tfg:rubber_plants", "minecraft:spore_blossom")
event.add('tfg:stonecutting/crackrack', 'minecraft:nether_brick_fence')
}
const registerMinecraftBlockTags = (event) => {
global.MINECRAFT_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
})
global.MINECRAFT_DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
})
// Stops saws from being able to pick up ice
event.remove('minecraft:ice', 'minecraft:ice')
event.remove('minecraft:ice', 'tfc:sea_ice')
// Stops saws from being able to pick up ice
event.remove('minecraft:ice', 'minecraft:ice')
event.remove('minecraft:ice', 'tfc:sea_ice')
// Теперь обсидиан сторадж блок
event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian')
// Теперь обсидиан сторадж блок
event.add('forge:storage_blocks/obsidian', 'minecraft:obsidian')
event.add('minecraft:mineable/pickaxe', 'minecraft:glowstone')
// Things endermen can pick up and move around
event.removeAll('minecraft:enderman_holdable');
event.add('minecraft:enderman_holdable', '#tfc:dirt')
event.add('minecraft:enderman_holdable', '#tfc:mud')
event.add('minecraft:enderman_holdable', '#tfc:loose_rocks')
event.add('minecraft:enderman_holdable', '#forge:gravel')
event.add('minecraft:enderman_holdable', '#forge:sand')
event.add('minecraft:enderman_holdable', '#forge:cobblestone')
event.add('minecraft:enderman_holdable', '#tfc:plants')
event.add('minecraft:enderman_holdable', '#tfg:plants/beneath')
event.add('minecraft:enderman_holdable', '#tfg:moon_plants')
event.add('minecraft:enderman_holdable', '#tfg:mars_plants')
event.add('minecraft:enderman_holdable', '#tfg:venus_plants')
event.add('minecraft:enderman_holdable', '#tfg:mercury_plants')
event.add('minecraft:enderman_holdable', '#tfg:europa_plants')
event.add('minecraft:enderman_holdable', 'tfc:pumpkin')
event.add('minecraft:enderman_holdable', 'tfc:melon')
event.add('minecraft:enderman_holdable', 'betterend:cave_pumpkin')
event.add('minecraft:enderman_holdable', '#minecraft:leaves')
event.add('minecraft:enderman_holdable', 'beneath:wood/leaves/crimson')
event.add('minecraft:enderman_holdable', 'beneath:wood/leaves/warped')
event.add('minecraft:enderman_holdable', 'tfg:glacian_leaves')
event.add('minecraft:enderman_holdable', '#tfg:solid_leaves')
}

View file

@ -27,9 +27,9 @@ const registerModernMarkingRecipes = (event) => {
markings.forEach(item => {
event.stonecutting(item,
Ingredient.of('#ags_modernmarkings:markings').subtract(item)
).id(`tfg:stonecutter/${item.replace(/:/g, "/")}`)
).id(`tfg:stonecutter/${linuxUnfucker(item)}`)
event.stonecutting(item, 'ags_modernmarkings:wall_marking_hazard_diamond')
.id(`tfg:stonecutter/${item.replace(/:/g, "/")}_from_diamond`)
.id(`tfg:stonecutter/${linuxUnfucker(item)}_from_diamond`)
})
};

View file

@ -319,7 +319,7 @@ const registerRailWaysRecipes = (event) => {
}).id('tfg:railways/shaped/smokestack_oilburner')
event.recipes.gtceu.assembler('tfg:railways/smokestack_oilburner')
.itemInputs('#forge:storage_blocks/charcoal', '6x #forge:plates/iron')
.itemInputs('#forge:storage_blocks/charcoal', '4x #forge:plates/iron')
.circuit(7)
.itemOutputs('railways:smokestack_oilburner')
.duration(200)

View file

@ -1,46 +1,45 @@
"use strict";
const registerRnrRecipes = (event) => {
event.remove({input: 'rnr:concrete_powder'})
event.remove({id: 'rnr:crafting/concrete_powder'})
event.remove({ input: 'rnr:concrete_powder' })
event.remove({ id: 'rnr:crafting/concrete_powder' })
//#region Recipes
event.recipes.gtceu.assembler('rnr:assembler/base_course')
event.recipes.gtceu.assembler('rnr:assembler/base_course')
.itemInputs('1x rnr:crushed_base_course', '1x #tfc:dirt')
.itemOutputs('2x rnr:base_course')
.circuit(7)
.circuit(7)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('rnr:assembler/crushed_base_course')
event.recipes.gtceu.assembler('rnr:assembler/crushed_base_course')
.itemInputs('1x #forge:gravel', '1x #rnr:loose_rock_items')
.itemOutputs('8x rnr:crushed_base_course')
.circuit(7)
.circuit(7)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
global.TFC_STONE_TYPES.forEach(stone => {
event.recipes.gtceu.cutter(`rnr:assembler/flagstone/${stone}`)
.itemInputs(`tfc:brick/${stone}`)
.itemOutputs(`2x rnr:flagstone/${stone}`)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
global.TFC_STONE_TYPES.forEach(stone => {
event.recipes.gtceu.cutter(`rnr:assembler/flagstone/${stone}`)
.itemInputs(`tfc:brick/${stone}`)
.itemOutputs(`2x rnr:flagstone/${stone}`)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.cutter(`rnr:assembler/flagstone/mossy_${stone}`)
.itemInputs(`tfc:rock/mossy_loose/${stone}`)
.itemOutputs(`2x rnr:flagstone/${stone}`)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
});
event.recipes.gtceu.cutter(`rnr:assembler/flagstone/mossy_${stone}`)
.itemInputs(`tfc:rock/mossy_loose/${stone}`)
.itemOutputs(`2x rnr:flagstone/${stone}`)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
});
global.SAND_COLORS.forEach(sand => {
event.recipes.gtceu.assembler(`rnr:assembler/flagstone/${sand}_sandstone`)
.itemInputs(`tfc:raw_sandstone/${sand}`)
.itemOutputs(`8x rnr:flagstone/${sand}_sandstone`)
.circuit(7)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
});
global.SAND_COLORS.forEach(sand => {
event.recipes.gtceu.assembler(`rnr:assembler/flagstone/${sand}_sandstone`)
.itemInputs(`tfc:raw_sandstone/${sand}`)
.itemOutputs(`8x rnr:flagstone/${sand}_sandstone`)
.circuit(7)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
});
event.smelting(
'1x rnr:terracotta_roof_tile',
@ -51,10 +50,10 @@ const registerRnrRecipes = (event) => {
'1x rnr:ceramic_roof_tile',
'rnr:unfired_roof_tile'
).id('rnr:smelting/unfired_roof_tile')
event.remove({id: 'rnr:clay_knapping/roof_tile_a'})
event.remove({id: 'rnr:clay_knapping/roof_tile_b'})
event.remove({id: 'rnr:clay_knapping/roof_tile_c'})
event.remove({ id: 'rnr:clay_knapping/roof_tile_a' })
event.remove({ id: 'rnr:clay_knapping/roof_tile_b' })
event.remove({ id: 'rnr:clay_knapping/roof_tile_c' })
event.recipes.tfc.knapping('10x rnr:unfired_roof_tile', 'tfc:clay', [
'XXXXX',
@ -84,7 +83,7 @@ const registerRnrRecipes = (event) => {
event.recipes.gtceu.mixer('rnr:mixer/wet_concrete_mix')
.inputFluids('gtceu:concrete 200', "#tfg:clean_water 800")
.outputFluids('rnr:concrete 1000')
.circuit(7)
.circuit(7)
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
};

View file

@ -6,4 +6,31 @@ const registerRnrItemTags = (event) => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
});
};
};
function registerRnrBlockTags(event) {
global.TFC_WOOD_TYPES.forEach(wood => {
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}`)
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}_stairs`)
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}_slab`)
});
global.AFC_WOOD_TYPES.forEach(wood => {
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}`)
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}_stairs`)
event.add('minecraft:mineable/axe', `rnr:wood/shingles/${wood}_slab`)
});
event.add('minecraft:mineable/hoe', `rnr:thatch_roof`)
event.add('minecraft:mineable/hoe', `rnr:thatch_roof_stairs`)
event.add('minecraft:mineable/hoe', `rnr:thatch_roof_slab`)
event.add('minecraft:mineable/pickaxe', `rnr:terracotta_roof`)
event.add('minecraft:mineable/pickaxe', `rnr:terracotta_roof_stairs`)
event.add('minecraft:mineable/pickaxe', `rnr:terracotta_roof_slab`)
event.add('minecraft:mineable/pickaxe', `rnr:ceramic_roof`)
event.add('minecraft:mineable/pickaxe', `rnr:ceramic_roof_stairs`)
event.add('minecraft:mineable/pickaxe', `rnr:ceramic_roof_slab`)
}

View file

@ -247,23 +247,46 @@ const registerSNSRecipes = (event) => {
.circuit(4)
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
event.custom({
type: "createaddition:rolling",
input: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 1),
result: { item: 'sns:metal/horseshoe/steel' }
}).id(`tfg:rolling/steel_horseshoe`)
event.recipes.gtceu.bender('sns:horseshoe_black_steel_electric_only')
.itemInputs('#forge:rods/black_steel')
.itemOutputs('sns:metal/horseshoe/black_steel')
.circuit(4)
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
event.custom({
type: "createaddition:rolling",
input: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlackSteel, 1),
result: { item: 'sns:metal/horseshoe/black_steel' }
}).id(`tfg:rolling/black_steel_horseshoe`)
event.recipes.gtceu.bender('sns:horseshoe_blue_steel_electric_only')
.itemInputs('#forge:rods/blue_steel')
.itemOutputs('sns:metal/horseshoe/blue_steel')
.circuit(4)
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
event.custom({
type: "createaddition:rolling",
input: ChemicalHelper.get(TagPrefix.rod, GTMaterials.BlueSteel, 1),
result: { item: 'sns:metal/horseshoe/blue_steel' }
}).id(`tfg:rolling/blue_steel_horseshoe`)
event.recipes.gtceu.bender('sns:horseshoe_red_steel_electric_only')
.itemInputs('#forge:rods/red_steel')
.itemOutputs('sns:metal/horseshoe/red_steel')
.circuit(4)
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
event.custom({
type: "createaddition:rolling",
input: ChemicalHelper.get(TagPrefix.rod, GTMaterials.RedSteel, 1),
result: { item: 'sns:metal/horseshoe/red_steel' }
}).id(`tfg:rolling/red_steel_horseshoe`)
}

View file

@ -45,4 +45,6 @@ function registerSNSItemTags(event) {
// Remove this tag to avoid confusion with the other lunchbox
event.removeAll('sns:lunchbox_food')
event.add('curios:belt', 'sns:quiver');
}

View file

@ -251,8 +251,8 @@ const registerSophisticatedBackpacksRecipes = (event) => {
'CDE',
'FGF'
], {
A: '#forge:screws/steel',
B: 'gtceu:item_detector_cover',
A: '#forge:screws/wrought_iron',
B: '#forge:small_gears/red_alloy',
C: '#forge:tools/screwdrivers',
D: 'sophisticatedbackpacks:upgrade_base',
E: '#forge:tools/wrenches',
@ -262,7 +262,7 @@ const registerSophisticatedBackpacksRecipes = (event) => {
event.shapeless('sophisticatedbackpacks:advanced_void_upgrade', [
'sophisticatedbackpacks:void_upgrade',
'#gtceu:circuits/mv'
'#gtceu:circuits/ulv'
]).id('tfg:sophisticated_backpacks/shapeless/advanced_void_upgrade')
event.shaped('sophisticatedbackpacks:deposit_upgrade', [

View file

@ -18,7 +18,7 @@ const registerSoulboundRecipes = (event) => {
}
result.nbt.put('soulbindingSoulboundItems', true)
return result;
}).id(`tfg:soulbind_${x.equipment}`.replace(/[: ]/g, '_'));
}).id(`tfg:soulbind_${linuxUnfucker(x.equipment)}`);
})

View file

@ -26,38 +26,6 @@ function registerTACZMiscRecipes(event) {
['tacz:target', 'minecraft:minecart']
).id('tfg_tacz:target_minecart');
//Molds
event.shaped('tfg:small_casing_extruder_mold',[
' A ',
'B ',
' C'
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:small_casing_extruder_mold');
event.shaped('tfg:large_casing_extruder_mold',[
' ',
'AB ',
' C'
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:large_casing_extruder_mold');
event.shaped('tfg:shell_casing_extruder_mold',[
' C',
'AB ',
' '
],{
A: '#forge:tools/wire_cutters',
B: 'gtceu:empty_mold',
C: '#forge:tools/files'
}).id('tfg:shell_casing_extruder_mold');
//Mechanisms
event.shaped('tfg:flintlock_mechanism', [
'ABC',
@ -106,4 +74,6 @@ function registerTACZMiscRecipes(event) {
.itemOutputs('tfg:certus_mechanism')
.EUt(GTValues.VA[GTValues.EV])
.duration(80)
TFGHelpers.registerMaterialInfo('tacz:target_minecart', [GTMaterials.WroughtIron, 5, GTMaterials.Steel, 1, GTMaterials.Wood, 1]);
}

View file

@ -109,6 +109,10 @@ const registerTFCFertilizers = (event) => {
event.fertilizer('gtceu:tiny_ammonium_chloride_dust', 0.03, null, null)
event.fertilizer('gtceu:small_ammonium_chloride_dust', 0.075, null, null)
event.fertilizer('gtceu:ammonium_chloride_dust', 0.3, null, null)
event.fertilizer('tfc:pure_nitrogen', 1, null, null)
event.fertilizer('tfc:pure_phosphorus', null, 1, null)
event.fertilizer('tfc:pure_potassium', null, null, 1)
}
@ -117,4 +121,4 @@ const registerTFCFertilizers = (event) => {
const registerTFCKnappingTypes = (event) => {
event.knappingType('minecraft:flint', 1, 1, 'tfc:item.knapping.stone', true, false, true, 'minecraft:flint', 'tfg:flint')
event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw')
}
}

View file

@ -1,6 +1,9 @@
// priority: 0
"use strict";
/**
*
* @param {Internal.LootModificationEventJS} event
*/
function registerTFCLoots(event) {
// Hostile animals
@ -13,6 +16,15 @@ function registerTFCLoots(event) {
.addWeightedLoot([4, 6], ['tfc:food/bear'])
event.addEntityLootModifier('tfc:panda')
.addWeightedLoot([8, 12], ['tfc:food/bear'])
.addWeightedLoot([1, 2], ['tfc:blubber'])
event.addEntityLootModifier('tfc:panda')
.matchMainHand('#forge:tools/butchery_knives')
.addWeightedLoot([4, 6], ['tfc:food/bear'])
event.addEntityLootModifier('tfc:grizzly_bear')
.addWeightedLoot([10, 16], ['tfc:food/bear'])
.addWeightedLoot([1, 2], ['tfc:blubber'])
@ -343,8 +355,15 @@ function registerTFCLoots(event) {
event.addBlockLootModifier('minecraft:ice')
.removeLoot(ItemFilter.ALWAYS_TRUE)
event.addBlockLootModifier('minecraft:ice')
.not(n => n.matchMainHand("#tfg:silk_harvest_ice"))
.addLoot('firmalife:ice_shavings')
event.addBlockLootModifier('minecraft:ice')
.matchMainHand("#tfg:silk_harvest_ice")
.addLoot('minecraft:ice');
event.addBlockLootModifier('minecraft:packed_ice')
.not(n => n.matchMainHand("#forge:tools/saws"))
.addWeightedLoot([4, 6], ['firmalife:ice_shavings'])

View file

@ -156,4 +156,62 @@ function registerTFCDyeRecipes(event) {
})
//#endregion
//#region Dye mixing
const dyeMixes = [
// input 1
[
'black', 'white', 'white',
'white', 'blue', 'blue',
'purple', 'white', 'red',
'orange', 'yellow'
],
// input 2
[
'white', 'gray', 'green',
'blue', 'green', 'red',
'pink', 'red', 'yellow',
'black', 'blue'
],
// output
[
'gray', 'light_gray', 'light_green',
'light_blue', 'cyan', 'purple',
'magenta', 'pink', 'orange',
'brown', 'green'
]
]
for (let i = 0; i < dyeMixes[2].length; i++) {
if (!Fluid.exists(`tfc:${dyeMixes[0][i]}_dye`) ||
!Fluid.exists(`tfc:${dyeMixes[1][i]}_dye`) ||
!Fluid.exists(`tfc:${dyeMixes[2][i]}_dye`)
) continue
// GT mixer recipe
event.recipes.gtceu.mixer(`mixer_dye_${dyeMixes[2][i]}`)
.inputFluids(
Fluid.of(`tfc:${dyeMixes[0][i]}_dye`, 144),
Fluid.of(`tfc:${dyeMixes[1][i]}_dye`, 144)
)
.outputFluids(
Fluid.of(`tfc:${dyeMixes[2][i]}_dye`, 288)
)
.duration(20)
.EUt(8)
// TFC barrel recipes (2x because 2! = 2)
event.recipes.tfc.barrel_instant_fluid(
Fluid.of(`tfc:${dyeMixes[2][i]}_dye`, 2),
TFC.fluidStackIngredient(Fluid.of(`tfc:${dyeMixes[0][i]}_dye`, 1)),
TFC.fluidStackIngredient(Fluid.of(`tfc:${dyeMixes[1][i]}_dye`, 1)),
)
event.recipes.tfc.barrel_instant_fluid(
Fluid.of(`tfc:${dyeMixes[2][i]}_dye`, 2),
TFC.fluidStackIngredient(Fluid.of(`tfc:${dyeMixes[1][i]}_dye`, 1)),
TFC.fluidStackIngredient(Fluid.of(`tfc:${dyeMixes[0][i]}_dye`, 1)),
)
}
//#endregion
}

View file

@ -8,97 +8,10 @@
const registerTFCRecipes = (event) => {
removeTFCRecipes(event)
registerTFCMaterialsRecipes(event)
registerTFCMetalsRecipes(event)
registerTFCDyeRecipes(event)
// Добавление рецептов
const TFC_QUERN_POWDER_RECIPE_COMPONENTS = /** @type {const} */ ([
{ input: "#forge:dusts/coke", output: "4x tfc:powder/coke", name: "coke_powder" },
{ input: "#forge:dusts/amethyst", output: "4x tfc:powder/amethyst", name: "amethyst_powder" },
{ input: "#forge:dusts/diamond", output: "4x tfc:powder/diamond", name: "diamond_powder" },
{ input: "#forge:dusts/emerald", output: "4x tfc:powder/emerald", name: "emerald_powder" },
{ input: "#forge:dusts/lapis", output: "4x tfc:powder/lapis_lazuli", name: "lapis_powder" },
{ input: "#forge:dusts/opal", output: "4x tfc:powder/opal", name: "opal_powder" },
{ input: "#forge:dusts/pyrite", output: "4x tfc:powder/pyrite", name: "pyrite_powder" },
{ input: "#forge:dusts/ruby", output: "4x tfc:powder/ruby", name: "ruby_powder" },
{ input: "#forge:dusts/sapphire", output: "4x tfc:powder/sapphire", name: "sapphire_powder" },
{ input: "#forge:dusts/topaz", output: "4x tfc:powder/topaz", name: "topaz_powder" },
{ input: "#forge:dusts/gold", output: "4x tfc:powder/native_gold", name: "gold_powder" },
{ input: "#forge:dusts/silver", output: "4x tfc:powder/native_silver", name: "silver_powder" },
{ input: "#forge:dusts/copper", output: "4x tfc:powder/native_copper", name: "copper_powder" },
{ input: "#forge:dusts/cassiterite", output: "4x tfc:powder/cassiterite", name: "cassiterite_powder" },
{ input: "#forge:dusts/bismuth", output: "4x tfc:powder/bismuthinite", name: "bismuth_powder" },
{ input: "#forge:dusts/garnierite", output: "4x tfc:powder/garnierite", name: "garnierite_powder" },
{ input: "#forge:dusts/sphalerite", output: "4x tfc:powder/sphalerite", name: "sphalerite_powder" },
{ input: "#forge:dusts/magnetite", output: "4x tfc:powder/magnetite", name: "magnetite_powder" },
{ input: "#forge:dusts/tetrahedrite", output: "4x tfc:powder/tetrahedrite", name: "tetrahedrite_powder" },
{ input: "#forge:dusts/malachite", output: "4x tfc:powder/malachite", name: "malachite_powder" },
{ input: "#forge:dusts/yellow_limonite", output: "4x tfc:powder/limonite", name: "limonite_powder" },
{ input: "#forge:dusts/hematite", output: "4x tfc:powder/hematite", name: "hematite_powder" },
{ input: "#forge:dusts/sulfur", output: "4x tfc:powder/sulfur", name: "sulfur_powder" },
{ input: "#forge:dusts/saltpeter", output: "4x tfc:powder/saltpeter", name: "saltpeter_powder" },
{ input: "#forge:dusts/salt", output: "4x tfc:powder/salt", name: "salt_powder" },
{ input: "#forge:dusts/graphite", output: "4x tfc:powder/graphite", name: "graphite_powder" },
{ input: "#forge:dusts/borax", output: "4x tfc:powder/flux", name: "flux_powder" },
{ input: "#forge:dusts/soda_ash", output: "4x tfc:powder/soda_ash", name: "soda_ash" },
{ input: "gtceu:charcoal_dust", output: "4x tfc:powder/charcoal", name: "charcoal" },
{ input: "tfc:ore/sylvite", output: "4x tfc:powder/sylvite", name: "sylvite" }
]);
TFC_QUERN_POWDER_RECIPE_COMPONENTS.forEach(element => {
event.recipes.gtceu.macerator(`tfg:${element.name}`)
.itemInputs(element.input)
.itemOutputs(element.output)
.duration(60)
.EUt(2)
event.recipes.tfc.quern(element.output, element.input)
.id(`tfg:quern/${element.name}`)
})
//#region Рецепты электрической теплицы
// Дерево
global.TFC_WOOD_TYPES.forEach(wood => {
generateGreenHouseRecipe(event, `8x tfc:wood/sapling/${wood}`, '#tfc:any_fresh_water', 16000, `64x tfc:wood/log/${wood}`,
`tfg:greenhouse/${wood}`, 'minecraft:overworld', 16, `32x tfc:wood/sapling/${wood}`, GTValues.VH[GTValues.LV])
})
global.AFC_SAPLINGS.forEach(x => {
generateGreenHouseRecipe(event, `8x afc:wood/sapling/${x.sapling}`, '#tfc:any_fresh_water', 16000, `64x ${x.log}`,
`tfg:greenhouse/${x.sapling}`, 'minecraft:overworld', 16, `32x afc:wood/sapling/${x.sapling}`, GTValues.VH[GTValues.LV])
})
// Семена фруктов
global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS.forEach(element => {
generateGreenHouseRecipe(event, element.input, '#tfc:any_fresh_water', element.fluid_amount, element.output,
element.name, 'minecraft:overworld', 8, element.input, GTValues.VH[GTValues.LV])
})
// Семена овощей
global.TFC_GREENHOUSE_VEGETABLE_RECIPE_COMPONENTS.forEach(element => {
generateGreenHouseRecipe(event, element.input, '#tfc:any_fresh_water', element.fluid_amount, element.output,
element.name, null, 8, element.input, GTValues.VH[GTValues.LV])
})
// Семена ягод
global.TFC_GREENHOUSE_BERRY_RECIPE_COMPONENTS.forEach(element => {
generateGreenHouseRecipe(event, element.input, '#tfc:any_fresh_water', element.fluid_amount, element.output,
element.name, null, 8, element.input, GTValues.VH[GTValues.LV])
})
// Растения
Ingredient.of('#tfc:plants').subtract('#tfc:wild_fruits').stacks.forEach(element => {
const itemId = element.id;
const recipeId = `greenhouse_${itemId.replace(':', '_')}`;
generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`,
recipeId, null, 8, itemId, GTValues.VH[GTValues.LV]);
});
//#endregion
event.remove({ mod: 'tfc', type: 'tfc:casting' });
// Доменная печь
event.recipes.gtceu.shaped('tfc:blast_furnace', [
@ -108,7 +21,7 @@ const registerTFCRecipes = (event) => {
], {
A: '#forge:double_plates/wrought_iron',
B: 'tfc:crucible'
}).addMaterialInfo().id('tfc:crafting/blast_furnace')
}).id('tfc:crafting/blast_furnace')
// Тыква -> Кусочки тыквы
event.recipes.tfc.advanced_shapeless_crafting(
@ -194,6 +107,11 @@ const registerTFCRecipes = (event) => {
// Soda Ash
event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_seaweed').id('tfg:smelting/dried_seaweed_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:food/dried_kelp').id('tfg:smelting/dried_kelp_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:food/fresh_seaweed').id('tfg:smelting/fresh_seaweed_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:groundcover/seaweed').id('tfg:smelting/seaweed_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:plant/winged_kelp').id('tfg:smelting/winged_kelp_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:plant/leafy_kelp').id('tfg:smelting/leafy_kelp_to_soda')
event.smelting('3x tfc:powder/soda_ash', 'tfc:plant/giant_kelp_flower').id('tfg:smelting/giant_kelp_to_soda')
//More accesible solar drier
event.replaceInput({ id: 'firmalife:crafting/solar_drier' }, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod')
@ -327,4 +245,95 @@ const registerTFCRecipes = (event) => {
.inputs('#tfc:foods/fruits', TFC.fluidStackIngredient('#tfg:alcohols', 250))
.outputFluid(Fluid.of('tfc:vinegar', 250))
.id('tfc:barrel/vinegar')
// Clay dust to balls
event.recipes.tfc.barrel_sealed(8000)
.inputs('gtceu:clay_dust',TFC.fluidStackIngredient('minecraft:water', 250))
.outputItem('1x minecraft:clay_ball')
.id('tfc:barrel/clay_ball')
// Borax to flux
event.recipes.tfc.quern('4x tfc:powder/flux', 'gtceu:borax_dust')
.id(`tfg:quern/borax`)
event.recipes.gtceu.macerator('borax_to_flux')
.itemInputs("#forge:dusts/borax")
.itemOutputs("4x tfc:powder/flux")
.duration(50)
.EUt(2);
event.shapeless('4x tfc:fire_clay', ['tfc:fire_clay_block'])
event.shapeless('4x tfc:kaolin_clay', ['tfc:white_kaolin_clay'])
event.shapeless('4x tfc:kaolin_clay', ['tfc:pink_kaolin_clay'])
event.shapeless('4x tfc:kaolin_clay', ['tfc:red_kaolin_clay'])
global.TFC_WOOD_TYPES.forEach(element => {
event.shaped(`4x tfc:wood/fallen_leaves/${element}`,[
'AA',
'AA'
], {
A: `tfc:wood/leaves/${element}`
}).id(`tfg:shaped/tfc/${element}_leaves_to_fallen_leaves`);
});
/**
* @property {string[]} krummholz_types - List of krummholz wood types.
*/
const krummholz_types = [
'aspen',
'douglas_fir',
'pine',
'spruce',
'white_cedar'
];
krummholz_types.forEach(type => {
event.shaped(`1x tfc:plant/${type}_krummholz`,[
'A',
'A'
], {
A: `tfc:wood/sapling/${type}`
}).id(`tfg:shaped/tfc/${type}_krummholz`);
});
/**
* @property {Array} tfcWoodRecyclingIndex - Wood recycling material index.
*/
const tfcWoodRecyclingIndex = [
['tfc:wood/chest_minecart/{type}', ['{wood}', 4, GTMaterials.WroughtIron, 5]],
['tfc:wood/planks/{type}', ['{wood}', 8]],
['tfc:wood/planks/{type}_door', ['{wood}', 6]],
['tfc:wood/planks/{type}_trapdoor', ['{wood}', 4]],
['tfc:wood/planks/{type}_fence', ['{wood}', 4]],
['tfc:wood/planks/{type}_log_fence', ['{wood}', 8]],
['tfc:wood/planks/{type}_fence_gate', ['{wood}', 8]],
['tfc:wood/planks/{type}_slab', ['{wood}', 2]],
['tfc:wood/planks/{type}_stairs', ['{wood}', 3]],
['tfc:wood/planks/{type}_pressure_plate', ['{wood}', 4]],
['tfc:wood/planks/{type}_button', ['{wood}', 1]],
['tfc:wood/chest/{type}', ['{wood}', 16]],
['tfc:wood/trapped_chest/{type}', ['{wood}', 16, GTMaterials.WroughtIron, 4/9, GTMaterials.Wood, 1]]
];
/**
* @param {Array} materials
* @param {string} woodMaterial
* @return {Array}
*/
function resolveArgs(materials, woodMaterial) {
return materials.map(materials => materials === '{wood}' ? woodMaterial : materials);
};
global.TFC_HARDWOOD_TYPES.forEach(type => {
tfcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.get('hardwood'));
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
global.TFC_SOFTWOOD_TYPES.forEach(type => {
tfcWoodRecyclingIndex.forEach(([template, args]) => {
const item = template.replace('{type}', type);
const resolvedArgs = resolveArgs(args, GTMaterials.Wood);
TFGHelpers.registerMaterialInfo(item, resolvedArgs);
});
});
}

File diff suppressed because it is too large Load diff

View file

@ -30,8 +30,8 @@ function registerTFCMetalsRecipes(event) {
]).id('tfg:alloy/tin_alloy')
event.recipes.tfc.alloy('tfg:invar', [
TFC.alloyPart('tfc:nickel', 0.60, 0.70),
TFC.alloyPart('tfc:cast_iron', 0.30, 0.40)
TFC.alloyPart('tfc:nickel', 0.30, 0.40),
TFC.alloyPart('tfc:cast_iron', 0.60, 0.70)
]).id('tfg:alloy/invar')
event.recipes.tfc.alloy('tfg:potin', [
@ -48,68 +48,6 @@ function registerTFCMetalsRecipes(event) {
//#endregion
//#region Фикс рецептов колоколов
//#region Из золота
event.recipes.tfc.casting(`minecraft:bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:gold', 144), 1)
.id(`tfc:casting/gold_bell`)
event.recipes.tfc.heating(`minecraft:bell`, 1060)
.resultFluid(Fluid.of('gtceu:gold', 144))
.id(`tfc:heating/gold_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Gold, 144)),
[
Fluid.of(GTMaterials.Gold.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Gold.getName()}_bell_mold`)
//#endregion
//#region Из латуни
event.recipes.tfc.casting(`tfc:brass_bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:brass', 144), 1)
.id(`tfc:casting/brass_bell`)
event.recipes.tfc.heating(`tfc:brass_bell`, 930)
.resultFluid(Fluid.of('gtceu:brass', 144))
.id(`tfc:heating/brass_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Brass, 144)),
[
Fluid.of(GTMaterials.Brass.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Brass.getName()}_bell_mold`)
//#endregion
//#region Из бронзы
event.recipes.tfc.casting(`tfc:bronze_bell`, 'tfc:ceramic/bell_mold', Fluid.of('gtceu:bronze', 144), 1)
.id(`tfc:casting/bronze_bell`)
event.recipes.tfc.heating(`tfc:bronze_bell`, 930)
.resultFluid(Fluid.of('gtceu:bronze', 144))
.id(`tfc:heating/bronze_bell`)
event.recipes.create.filling(
Item.of('tfc:ceramic/bell_mold', getFillingNBT(GTMaterials.Bronze, 144)),
[
Fluid.of(GTMaterials.Bronze.getFluid(), 144),
Item.of('tfc:ceramic/bell_mold').strongNBT()
]
).id(`tfg:tfc/filling/${GTMaterials.Bronze.getName()}_bell_mold`)
//#endregion
//#endregion
//#region Рецепты ковки TFC слитков в GT машинах
// Сырая крица -> Укрепленная крица
@ -162,6 +100,8 @@ function registerTFCMetalsRecipes(event) {
.EUt(4)
// Слабая сталь + Чугун -> Высокоуглеродная черная сталь
event.recipes.tfc.welding(TFC.isp.of('tfc:metal/ingot/high_carbon_black_steel').copyHeat(), 'tfc:metal/ingot/weak_steel', 'tfc:metal/ingot/pig_iron', 4)
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_black_steel',
['tfc:metal/ingot/weak_steel', 'tfc:metal/ingot/pig_iron', 'tfc:powder/flux'])
.heated()
@ -175,6 +115,8 @@ function registerTFCMetalsRecipes(event) {
.EUt(4)
// Слабая синяя сталь + Черная сталь -> Высокоуглеродная синяя сталь
event.recipes.tfc.welding(TFC.isp.of('tfc:metal/ingot/high_carbon_blue_steel').copyHeat(), 'tfc:metal/ingot/weak_blue_steel', 'tfc:metal/ingot/black_steel', 5)
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_blue_steel',
['tfc:metal/ingot/weak_blue_steel', 'tfc:metal/ingot/black_steel', 'tfc:powder/flux'])
.heated()
@ -188,6 +130,8 @@ function registerTFCMetalsRecipes(event) {
.EUt(4)
// Слабая красная сталь + Черная сталь -> Высокоуглеродная красная сталь
event.recipes.tfc.welding(TFC.isp.of('tfc:metal/ingot/high_carbon_red_steel').copyHeat(), 'tfc:metal/ingot/weak_red_steel', 'tfc:metal/ingot/black_steel', 5)
event.recipes.greate.compacting('tfc:metal/ingot/high_carbon_red_steel',
['tfc:metal/ingot/weak_red_steel', 'tfc:metal/ingot/black_steel', 'tfc:powder/flux'])
.heated()
@ -260,7 +204,7 @@ function registerTFCMetalsRecipes(event) {
//#region Фикс рецептов металлических предметов
// Рецепт Jacks
event.recipes.tfc.welding('tfc:jacks', '#forge:rods/brass', '#forge:plates/brass', 2)
event.recipes.tfc.welding(TFC.isp.of('tfc:jacks').copyHeat().copyForgingBonus(), '#forge:rods/brass', '#forge:plates/brass', 2)
.id(`tfc:welding/jacks`)
event.recipes.greate.compacting('tfc:jacks', ['#forge:rods/brass', '#forge:plates/brass', 'tfc:powder/flux'])
@ -329,7 +273,7 @@ function registerTFCMetalsRecipes(event) {
.id('tfc:anvil/blue_steel_ingot')
// Cast iron -> Raw Iron Bloom
event.recipes.tfc.bloomery('tfc:raw_iron_bloom', 'minecraft:charcoal', Fluid.of('gtceu:iron', 144), 15000)
event.recipes.tfc.bloomery('tfc:raw_iron_bloom', '#tfg:bloomery_basic_fuels', Fluid.of('gtceu:iron', 144), 15000)
.id('tfc:bloomery/raw_iron_bloom')
// Cast Iron -> Pig Iron
@ -354,49 +298,27 @@ function registerTFCMetalsRecipes(event) {
.inputFluids("#tfg:clean_water 100")
.circuit(4)
.itemOutputs(`1x tfc:ore/normal_${ore}`)
.duration(400)
.EUt(GTValues.VA[GTValues.LV])
.duration(40)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.ore_washer(`tfc:ore_washer/distilled_water/deposit/${ore}/${stone}`)
.itemInputs(`1x tfc:deposit/${ore}/${stone}`)
.inputFluids(Fluid.of('gtceu:distilled_water', 50))
.circuit(4)
.itemOutputs(`1x tfc:ore/normal_${ore}`)
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
.duration(20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.greate.splashing(
[`tfc:ore/normal_${ore}`],
[`1x tfc:deposit/${ore}/${stone}`, Fluid.of('minecraft:water', 100)]
)
.recipeTier(1)
.id(`tfg:splashing/${ore}/${stone}_deposit`)
})
})
//#endregion
event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron')
.id('tfg:revert_wrought_iron_ingot')
// Melting powders
const METAL_POWDERS = [
{ powder: 'tfc:powder/native_copper', material: GTMaterials.Copper },
{ powder: 'tfc:powder/native_gold', material: GTMaterials.Gold },
{ powder: 'tfc:powder/hematite', material: GTMaterials.Hematite },
{ powder: 'tfc:powder/native_silver', material: GTMaterials.Silver },
{ powder: 'tfc:powder/cassiterite', material: GTMaterials.Cassiterite },
{ powder: 'tfc:powder/bismuthinite', material: GTMaterials.Bismuth },
{ powder: 'tfc:powder/garnierite', material: GTMaterials.Garnierite },
{ powder: 'tfc:powder/malachite', material: GTMaterials.Malachite },
{ powder: 'tfc:powder/magnetite', material: GTMaterials.Magnetite },
{ powder: 'tfc:powder/limonite', material: GTMaterials.YellowLimonite },
{ powder: 'tfc:powder/sphalerite', material: GTMaterials.Sphalerite },
{ powder: 'tfc:powder/tetrahedrite', material: GTMaterials.Tetrahedrite },
{ powder: 'tfc:powder/pyrite', material: GTMaterials.Pyrite }
]
METAL_POWDERS.forEach(x => {
const tfcProperty = x.material.getProperty(TFGPropertyKey.TFC_PROPERTY)
let outputMaterial = (tfcProperty.getOutputMaterial() === null) ? x.material : tfcProperty.getOutputMaterial()
event.recipes.tfc.heating(x.powder, tfcProperty.getMeltTemp())
.resultFluid(Fluid.of(outputMaterial.getFluid(), global.calcAmountOfMetalProcessed(36, tfcProperty.getPercentOfMaterial())))
.id(`tfg:heating/powder/${x.material.getName()}`)
})
}

View file

@ -3,60 +3,19 @@
function removeTFCRecipes(event) {
// Удаление рецептов руд TFC
event.remove({ id: /tfc:heating\/ore\/poor_*/ })
event.remove({ id: /tfc:heating\/ore\/normal_*/ })
event.remove({ id: /tfc:heating\/ore\/rich_*/ })
global.TFC_DISABLED_ITEMS.forEach(item => {
event.remove({ output: item })
})
// Удаление рецептов блоков
event.remove({ id: /tfc:crafting\/metal\/block\/*/ })
event.remove({ id: /tfc:heating\/metal\/*_block/ })
// Удаление рецептов ступеней
event.remove({ id: /tfc:crafting\/metal\/block\/*_stairs/ })
event.remove({ id: /tfc:heating\/metal\/*_block_stairs/ })
// Удалание рецептов полублоков
event.remove({ id: /tfc:crafting\/metal\/block\/*_slab/ })
event.remove({ id: /tfc:heating\/metal\/*_block_slab/ })
//#region Удаление рецептов для предметов из Cast Iron
// Блок
event.remove({ id: `tfc:crafting/metal/block/cast_iron` })
event.remove({ id: `tfc:heating/metal/cast_iron_block` })
// Ступень
event.remove({ id: `tfc:crafting/metal/block/cast_iron_stairs` })
event.remove({ id: `tfc:heating/metal/cast_iron_block_stairs` })
// Полублок
event.remove({ id: `tfc:crafting/metal/block/cast_iron_slab` })
event.remove({ id: `tfc:heating/metal/cast_iron_block_slab` })
// Слиток
event.remove({ id: `tfc:casting/cast_iron_ingot` })
event.remove({ id: `tfc:casting/cast_iron_fire_ingot` })
event.remove({ id: `tfc:heating/metal/cast_iron_ingot` })
event.remove({ id: `tfc:welding/cast_iron_double_ingot` })
event.remove({ id: `tfc:anvil/cast_iron_rod` })
// Двойной слиток
event.remove({ id: `tfc:heating/metal/cast_iron_double_ingot` })
event.remove({ id: `tfc:anvil/cast_iron_sheet` })
// Пластина
event.remove({ id: `tfc:heating/metal/cast_iron_sheet` })
event.remove({ id: `tfc:welding/cast_iron_double_sheet` })
// Двойная пластина
event.remove({ id: `tfc:heating/metal/cast_iron_double_sheet` })
// Стержень
event.remove({ id: `tfc:heating/metal/cast_iron_rod` })
//#endregion
event.remove({ mod: 'tfc', type: 'tfc:welding' })
event.remove({ id: /tfc:heating\/metal\/*/ })
event.remove({ id: /tfc:heating\/ore\/*/ })
global.TFC_METALS.forEach(metal => {
event.remove({ id: `tfc:crafting/metal/block/${metal}` })
event.remove({ id: `tfc:crafting/metal/block/${metal}_stairs` })
event.remove({ id: `tfc:crafting/metal/block/${metal}_slab` })
})
// #region Удаление рецептов
event.remove({ id: 'tfc:quern/amethyst' })
@ -73,6 +32,18 @@ function removeTFCRecipes(event) {
event.remove({ id: 'tfc:quern/graphite' })
event.remove({ id: 'tfc:quern/lapis_lazuli' })
event.remove({ id: 'tfc:quern/lapis_lazuli_cut' })
event.remove({ id: 'tfc:quern/small_bismuthinite' })
event.remove({ id: 'tfc:quern/small_cassiterite' })
event.remove({ id: 'tfc:quern/small_garnierite' })
event.remove({ id: 'tfc:quern/small_hematite' })
event.remove({ id: 'tfc:quern/small_limonite' })
event.remove({ id: 'tfc:quern/small_magnetite' })
event.remove({ id: 'tfc:quern/small_malachite' })
event.remove({ id: 'tfc:quern/small_native_copper' })
event.remove({ id: 'tfc:quern/small_native_gold' })
event.remove({ id: 'tfc:quern/small_native_silver' })
event.remove({ id: 'tfc:quern/small_sphalerite' })
event.remove({ id: 'tfc:quern/small_tetrahedrite' })
event.remove({ id: 'tfc:quern/normal_bismuthinite' })
event.remove({ id: 'tfc:quern/normal_cassiterite' })
event.remove({ id: 'tfc:quern/normal_garnierite' })
@ -145,14 +116,18 @@ function removeTFCRecipes(event) {
event.remove({ id: `tfc:crafting/crankshaft` })
event.remove({ id: 'tfc:crafting/sandpaper' })
event.remove({ id: 'tfc:crafting/vanilla/redstone/observer' })
event.remove({ id: 'tfc:crafting/vanilla/brick_stairs' })
event.remove({ id: 'tfc:crafting/vanilla/redstone/steel_minecart' })
event.remove({ id: 'tfc:crafting/vanilla/redstone/minecart' })
event.remove({ id: 'tfc:crafting/cake' })
event.remove({ id: 'tfc:crafting/pumpkin_chunks' })
event.remove({ id: 'tfc:crafting/alabaster_brick' })
event.remove({ id: /^tfc:crafting\/dough\/.*/ })
global.TFC_DOUGHS.forEach(dough => {
for (let i = 1; i <= 8; i++) {
event.remove({ id: `tfc:crafting/dough/${dough}_dough_${i}` })
}
})
event.remove({ id: 'tfc:heating/destroy_bread' })
event.remove({ id: 'tfc:crafting/gunpowder_graphite' })
@ -161,4 +136,11 @@ function removeTFCRecipes(event) {
event.remove({ output: 'tfc:rustic_windmill_blade'})
event.remove({ output: 'tfc:lattice_windmill_blade'})
event.remove({ id: 'tfchotornot:heating/insulating_items'})
event.remove({ id: 'tfc:heating/metal/weak_blue_steel_ingot' })
event.remove({ id: 'tfc:casting/weak_blue_steel_ingot' })
event.remove({ id: 'tfc:casting/weak_blue_steel_fire_ingot' })
event.remove({ id: 'tfc:heating/metal/weak_red_steel_ingot' })
event.remove({ id: 'tfc:casting/weak_red_steel_ingot' })
event.remove({ id: 'tfc:casting/weak_red_steel_fire_ingot' })
}

View file

@ -1,6 +1,8 @@
// priority: 0
"use strict";
const ForgeRegistries = Java.loadClass('net.minecraftforge.registries.ForgeRegistries');
/** @param {TagEvent.Item} event */
function registerTFCItemTags(event) {
// Теги для соответствия инструментов TFC и GT
@ -90,9 +92,9 @@ function registerTFCItemTags(event) {
event.add("tfc:nonplaceable", "minecraft:milk_bucket")
event.add("tfc:nonplaceable", "firmalife:bucket/yak_milk")
event.add("tfc:nonplaceable", "firmalife:bucket/goat_milk")
event.add("tfc:nonplaceable", "tfc_gurman:ox_milk_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:sheep_milk_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:alpaca_milk_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:ox_milk_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:sheep_milk_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:alpaca_milk_bucket")
event.add("tfc:nonplaceable", "tfc:bucket/beer")
event.add("tfc:nonplaceable", "tfc:bucket/cider")
event.add("tfc:nonplaceable", "tfc:bucket/rum")
@ -110,16 +112,16 @@ function registerTFCItemTags(event) {
event.add("tfc:nonplaceable", "tfcagedalcohol:bucket/aged_corn_whiskey")
event.add("tfc:nonplaceable", "tfcagedalcohol:bucket/aged_rye_whiskey")
event.add("tfc:nonplaceable", "tfcagedalcohol:bucket/aged_mead")
event.add("tfc:nonplaceable", "tfc_gurman:nalivka_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:coffee_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:tea_mint_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:tea_chamomile_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:tea_rosehip_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:tea_nettle_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:cocoa_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:compote_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:kvass_bucket")
event.add("tfc:nonplaceable", "tfc_gurman:lemonade_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:nalivka_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:coffee_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:tea_mint_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:tea_chamomile_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:tea_rosehip_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:tea_nettle_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:cocoa_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:compote_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:kvass_bucket")
event.add("tfc:nonplaceable", "tfc_gourmet:lemonade_bucket")
event.add("tfc:nonplaceable", "firmalife:bucket/mead")
event.add("tfc:nonplaceable", "firmalife:bucket/red_wine")
event.add("tfc:nonplaceable", "firmalife:bucket/white_wine")
@ -135,6 +137,21 @@ function registerTFCItemTags(event) {
//Plants
event.add("tfc:plants", "#tfc:wild_fruits");
/**
* @property {string[]} krummholz_types - List of krummholz wood types.
*/
const krummholz_types = [
'aspen',
'douglas_fir',
'pine',
'spruce',
'white_cedar'
];
krummholz_types.forEach(type => {
event.add('tfc:plants', `tfc:plant/${type}_krummholz`);
event.add('tfc:krummholz', `tfc:plant/${type}_krummholz`);
});
// Для складывания
event.add("tfc:pileable_ingots", "#forge:ingots");
event.add("tfc:pileable_sheets", "#forge:plates");
@ -155,6 +172,14 @@ function registerTFCItemTags(event) {
event.add("minecraft:fishes", "tfc:food/rainbow_trout");
event.add("minecraft:fishes", "tfc:food/smallmouth_bass");
event.add("tfc:foods/grains", "tfc:food/cooked_rice");
event.add("tfc:foods/grains", "tfc:food/cattail_root");
event.add("tfc:foods/grains", "tfc:food/taro_root");
event.add("tfc:foods/grains", "firmalife:food/tortilla_chips");
event.add("tfc:foods/grains", "firmalife:food/cooked_rice_noodles");
event.add("tfc:foods/grains", "firmalife:food/cooked_pasta");
event.add("tfc:foods/grains", "firmalife:food/toast");
// Чтобы жарились бревна из TFC в пиролиз. печке
// Почему нельзя просто добавить тег в тег? (допустим minecraft:logs), потому что из-за этого ломаются все рецепты minecraft:logs, магия...
global.TFC_WOOD_TYPES.forEach((woodType) => {
@ -261,6 +286,12 @@ function registerTFCItemTags(event) {
event.add("tfc:green_gravel", "tfc:rock/gravel/schist");
// Розовый
event.add("tfc:pink_gravel", "tfc:rock/gravel/granite");
// Glassworking sands
event.add('tfc:hematitic_sand', 'minecraft:red_sand');
event.add('tfc:hematitic_sand', 'ad_astra:mars_sand');
event.add('tfc:hematitic_sand', 'ad_astra:venus_sand');
event.add('tfc:olivine_sand', 'ad_astra:moon_sand');
// Теги для объединения наковален
event.add("tfc:red_or_blue_anvil", "tfc:metal/anvil/blue_steel");
@ -390,7 +421,6 @@ function registerTFCItemTags(event) {
event.add("tfc:forge_invisible_whitelist", "greate:titanium_mechanical_pump");
event.add("forge:mushrooms", "tfc:plant/artists_conk");
event.add("forge:raw_materials/sylvite", "tfc:ore/sylvite");
event.add("tfc:any_knapping", "#tfc:pit_kiln_straw");
event.add("tfg:burlap_fiber", "tfc:jute_fiber");
@ -407,6 +437,59 @@ function registerTFCItemTags(event) {
event.add('tfc:knives', 'tfc:stone/knife/metamorphic')
event.add('tfc:knives', 'tfc:stone/knife/igneous_intrusive')
event.add('tfc:knives', 'tfc:stone/knife/igneous_extrusive')
//greens and browns
event.remove('tfc:compost_browns_low', '#tfc:fallen_leaves')
event.add('tfc:compost_greens_low', '#tfc:fallen_leaves')
event.add('tfc:compost_greens_low', '#minecraft:leaves')
// Powder dyes
event.add('forge:dyes/blue', 'tfc:powder/lapis_lazuli')
event.add('forge:dyes/blue', 'tfc:powder/graphite')
event.add('forge:dyes/black', 'tfc:powder/charcoal')
event.add('forge:dyes/black', 'tfc:powder/coke')
event.add('forge:dyes/pink', 'tfc:powder/kaolinite')
event.add('forge:dyes/blue', 'tfc:powder/lapis_lazuli')
event.add('forge:dyes/orange', 'tfc:powder/sylvite')
event.add('forge:dyes/orange', 'tfc:powder/copper')
event.add('forge:dyes/blue', 'tfc:powder/lapis_lazuli')
event.add('forge:dyes/light_gray', 'tfc:powder/silver')
event.add('forge:dyes/gray', 'tfc:powder/cassiterite')
event.add('forge:dyes/gray', 'tfc:powder/magnetite')
event.add('forge:dyes/gray', 'tfc:powder/sphalerite')
event.add('forge:dyes/gray', 'tfc:powder/tetrahedrite')
event.add('forge:dyes/green', 'tfc:powder/bismuthinite')
event.add('forge:dyes/green', 'tfc:powder/malachite')
event.add('forge:dyes/brown', 'tfc:powder/garnierite')
event.add('forge:dyes/yellow', 'tfc:powder/limonite')
//Hanging Signs Soft & Hard Wood
global.TFC_EQUIPMENT_METALS.forEach(metal => {
event.add(`tfg:hanging_sign/${metal}/hardwood`, global.TFC_HARDWOOD_TYPES.map(wood => `tfc:wood/hanging_sign/${metal}/${wood}`))
event.add(`tfg:hanging_sign/${metal}/softwood`, global.TFC_SOFTWOOD_TYPES.map(wood => `tfc:wood/hanging_sign/${metal}/${wood}`))
event.add(`tfg:hanging_sign/${metal}/hardwood`, global.AFC_HARDWOOD_TYPES.map(wood => `afc:wood/hanging_sign/${metal}/${wood}`))
event.add(`tfg:hanging_sign/${metal}/softwood`, global.AFC_SOFTWOOD_TYPES.map(wood => `afc:wood/hanging_sign/${metal}/${wood}`))
event.add(`tfg:hanging_sign/${metal}/hardwood`, `beneath:wood/hanging_sign/${metal}/warped`)
event.add(`tfg:hanging_sign/${metal}/softwood`, `beneath:wood/hanging_sign/${metal}/crimson`)
})
event.add('tfc:fluxstone', 'tfg:loose/dripstone')
event.add('tfc:food/bell_peppers', 'tfc:food/green_bell_pepper');
event.add('tfc:food/bell_peppers', 'tfc:food/yellow_bell_pepper');
event.add('tfc:food/bell_peppers', 'tfc:food/red_bell_pepper');
// More offhand things for piglin brutes
event.add('tfc:mob_offhand_weapons', 'tfchotornot:tongs/gold');
event.add('tfc:mob_offhand_weapons', 'tfchotornot:tongs/rose_gold');
event.add('tfc:mob_offhand_weapons', 'gtceu:black_bronze_knife');
event.add('tfc:mob_offhand_weapons', 'tfc:metal/javelin/black_bronze');
event.add('tfc:mob_offhand_weapons', 'tfc:metal/mace/black_bronze');
event.add('tfc:starts_fires_with_items', 'gtceu:matches');
event.add('tfc:starts_fires_with_durability', 'gtceu:matchbox');
event.add('tfc:starts_fires_with_durability', 'gtceu:invar_lighter');
event.add('tfc:starts_fires_with_durability', 'gtceu:platinum_lighter');
}
/** @param {TagEvent.Block} event */
@ -447,14 +530,7 @@ function registerTFCBlockTags(event) {
event.add("tfc:can_start_collapse", "#tfc:rock/smooth");
event.add("tfc:can_trigger_collapse", "#tfc:rock/smooth");
// Возможность обрушения руды
event.add("tfc:can_collapse", "#forge:ores");
event.add("tfc:can_start_collapse", "#forge:ores");
event.add("tfc:can_trigger_collapse", "#forge:ores");
event.add("tfc:monster_spawns_on", "#forge:ores");
event.add("tfc:prospectable", "#forge:ores");
// Glassworking blocks
event.add("tfc:glass_basin_blocks", "create:brass_block");
event.add("tfc:glass_pouring_table", "create:brass_block");
@ -486,11 +562,21 @@ function registerTFCBlockTags(event) {
event.add("tfc:forge_invisible_whitelist", "greate:stainless_steel_mechanical_pump");
event.add("tfc:forge_invisible_whitelist", "greate:titanium_mechanical_pump");
//Allows any block with the word "brick" in its id to be used as bloomery and forge insulation.
//Add blacklisted words to the const with | between.
const brick_blacklist = "drying|slab|stairs|wall|additionalplacements";
event.add("tfc:bloomery_insulation", `/^(?=.*brick)(?!.*(${brick_blacklist})).*/`);
event.add("tfc:forge_insulation", `/^(?=.*brick)(?!.*(${brick_blacklist})).*/`);
// Allows any block with the word "brick" in its id to be used as bloomery and forge insulation.
// Optimized to compute matching blocks once instead of regex scanning per tag like before.
// Blacklist removes blocks that are unwanted.
const blacklist = ["drying", "slab", "stairs", "wall", "additionalplacements", "fence", "roof", "bridge"];
const matches = [];
ForgeRegistries.BLOCKS.getValues().forEach(block => {
const id = String(ForgeRegistries.BLOCKS.getKey(block));
if (id.includes("brick") && !blacklist.some(no_no_word => id.includes(no_no_word))) {
matches.push(id);
};
});
["tfc:bloomery_insulation", "tfc:forge_insulation"].forEach(tag => {
matches.forEach(id => event.add(tag, id));
});
event.add("tfc:forge_insulation", 'create:depot');
global.TFC_STONE_TYPES.forEach((stone) => {
@ -751,7 +837,7 @@ function registerTFCFluidTags(event) {
event.add("tfg:alcohols", "tfcagedalcohol:aged_corn_whiskey");
event.add("tfg:alcohols", "tfcagedalcohol:aged_rye_whiskey");
event.add("tfg:alcohols", "tfcagedalcohol:aged_mead");
event.add("tfg:alcohols", "tfc_gurman:nalivka");
event.add("tfg:alcohols", "tfc_gourmet:nalivka");
// Добавляем тег для скрытия в EMI
event.add("c:hidden_from_recipe_viewers", "tfc:metal/bismuth");

View file

@ -3,15 +3,19 @@
const registerTFCGroomingStationRecipes = (event) => {
global.TFC_EQUIPMENT_METALS.forEach(material => {
event.recipes.gtceu.shaped(`tfcgroomer:${material}_grooming_station`, [
global.TFC_EQUIPMENT_METALS.forEach(materialName => {
const trough = `tfcgroomer:${materialName}_grooming_station`;
event.recipes.gtceu.shaped(trough, [
'ABA',
'AAA',
'C C'
], {
A: `#forge:plates/${material}`,
A: `#forge:plates/${materialName}`,
B: '#forge:tools/hammers',
C: 'tfc:wattle'
}).addMaterialInfo().id(`tfcgroomer:${material}_grooming_station`)
}).addMaterialInfo().id(`tfcgroomer:${materialName}_grooming_station`)
addMaterialRecyclingNoTagPrefix(event, trough, GTMaterials.get(materialName), 'grooming_station', 5);
})
}

View file

@ -2,84 +2,98 @@
"use strict";
function registerTFCGurmanRecipes(event) {
let deprecated = Ingredient.of('#tfc_gourmet:deprecated_foods').itemIds.toArray();
deprecated.forEach(oldID => {
let newID = `${oldID}`.replace(/tfc_gurman:/g, 'tfc_gourmet:');
event.shapeless(newID, oldID);
})
//#region Food Oven Recipes
global.cookingRecipe(event, 'margarita_pizza', 'tfc_gurman:raw_margarita_pizza', 'tfc_gurman:margarita_pizza');
global.cookingRecipe(event, 'pepperoni_pizza', 'tfc_gurman:raw_pepperoni_pizza', 'tfc_gurman:pepperoni_pizza');
global.cookingRecipe(event, 'hawaiian_pizza', 'tfc_gurman:raw_hawaiian_pizza', 'tfc_gurman:hawaiian_pizza');
global.cookingRecipe(event, 'four_cheeses_pizza', 'tfc_gurman:raw_four_cheeses_pizza', 'tfc_gurman:four_cheeses_pizza');
global.cookingRecipe(event, 'four_meats_pizza', 'tfc_gurman:raw_four_meats_pizza', 'tfc_gurman:four_meats_pizza');
global.cookingRecipe(event, 'neapolitano_pizza', 'tfc_gurman:raw_neapolitano_pizza', 'tfc_gurman:neapolitano_pizza');
global.cookingRecipe(event, 'croissants', 'tfc_gurman:raw_croissants', 'tfc_gurman:croissants');
global.cookingRecipe(event, 'kiev_cutlets', 'tfc_gurman:raw_kiev_cutlets', 'tfc_gurman:kiev_cutlets');
global.cookingRecipe(event, 'quiche', 'tfc_gurman:raw_quiche', 'tfc_gurman:quiche');
global.cookingRecipe(event, 'tandoori_chicken', 'tfc_gurman:raw_tandoori_chicken', 'tfc_gurman:tandoori_chicken');
global.cookingRecipe(event, 'placinda', 'tfc_gurman:raw_placinda', 'tfc_gurman:placinda');
global.cookingRecipe(event, 'tonkatsu', 'tfc_gurman:raw_tonkatsu', 'tfc_gurman:tonkatsu');
global.cookingRecipe(event, 'takoyaki', 'tfc_gurman:raw_takoyaki', 'tfc_gurman:takoyaki');
global.cookingRecipe(event, 'bulgogi', 'tfc_gurman:raw_bulgogi', 'tfc_gurman:bulgogi');
global.cookingRecipe(event, 'bratwurst', 'tfc_gurman:raw_bratwurst', 'tfc_gurman:bratwurst');
global.cookingRecipe(event, 'margarita_pizza', 'tfc_gourmet:raw_margarita_pizza', 'tfc_gourmet:margarita_pizza');
global.cookingRecipe(event, 'crepes', 'tfc_gurman:raw_crepes', 'tfc_gurman:crepes');
global.cookingRecipe(event, 'pepperoni_pizza', 'tfc_gourmet:raw_pepperoni_pizza', 'tfc_gourmet:pepperoni_pizza');
global.cookingRecipe(event, 'chebureki', 'tfc_gurman:raw_chebureki', 'tfc_gurman:chebureki');
global.cookingRecipe(event, 'hawaiian_pizza', 'tfc_gourmet:raw_hawaiian_pizza', 'tfc_gourmet:hawaiian_pizza');
global.cookingRecipe(event, 'four_cheeses_pizza', 'tfc_gourmet:raw_four_cheeses_pizza', 'tfc_gourmet:four_cheeses_pizza');
global.cookingRecipe(event, 'four_meats_pizza', 'tfc_gourmet:raw_four_meats_pizza', 'tfc_gourmet:four_meats_pizza');
global.cookingRecipe(event, 'neapolitano_pizza', 'tfc_gourmet:raw_neapolitano_pizza', 'tfc_gourmet:neapolitano_pizza');
global.cookingRecipe(event, 'croissants', 'tfc_gourmet:raw_croissants', 'tfc_gourmet:croissants');
global.cookingRecipe(event, 'kiev_cutlets', 'tfc_gourmet:raw_kiev_cutlets', 'tfc_gourmet:kiev_cutlets');
global.cookingRecipe(event, 'quiche', 'tfc_gourmet:raw_quiche', 'tfc_gourmet:quiche');
global.cookingRecipe(event, 'khachapuri', 'tfc_gurman:raw_khachapuri', 'tfc_gurman:khachapuri');
global.cookingRecipe(event, 'tandoori_chicken', 'tfc_gourmet:raw_tandoori_chicken', 'tfc_gourmet:tandoori_chicken');
global.cookingRecipe(event, 'lavash_wrap', 'tfc_gurman:raw_lavash_wrap', 'tfc_gurman:lavash_wrap');
global.cookingRecipe(event, 'placinda', 'tfc_gourmet:raw_placinda', 'tfc_gourmet:placinda');
global.cookingRecipe(event, 'syrniki', 'tfc_gurman:raw_syrniki', 'tfc_gurman:syrniki');
global.cookingRecipe(event, 'tonkatsu', 'tfc_gourmet:raw_tonkatsu', 'tfc_gourmet:tonkatsu');
global.cookingRecipe(event, 'takoyaki', 'tfc_gourmet:raw_takoyaki', 'tfc_gourmet:takoyaki');
global.cookingRecipe(event, 'bulgogi', 'tfc_gourmet:raw_bulgogi', 'tfc_gourmet:bulgogi');
global.cookingRecipe(event, 'bratwurst', 'tfc_gourmet:raw_bratwurst', 'tfc_gourmet:bratwurst');
global.cookingRecipe(event, 'crepes', 'tfc_gourmet:raw_crepes', 'tfc_gourmet:crepes');
global.cookingRecipe(event, 'chebureki', 'tfc_gourmet:raw_chebureki', 'tfc_gourmet:chebureki');
global.cookingRecipe(event, 'khachapuri', 'tfc_gourmet:raw_khachapuri', 'tfc_gourmet:khachapuri');
global.cookingRecipe(event, 'lavash_wrap', 'tfc_gourmet:raw_lavash_wrap', 'tfc_gourmet:lavash_wrap');
global.cookingRecipe(event, 'syrniki', 'tfc_gourmet:raw_syrniki', 'tfc_gourmet:syrniki');
global.cookingRecipe(event, 'oladyi', 'tfc_gurman:raw_oladyi', 'tfc_gurman:oladyi');
global.cookingRecipe(event, 'oladyi', 'tfc_gourmet:raw_oladyi', 'tfc_gourmet:oladyi');
// Falafel - from soybean (no raw version)
global.cookingRecipe(event, 'falafel', 'tfc:food/soybean', 'tfc_gurman:falafel');
global.cookingRecipe(event, 'falafel', 'tfc_gourmet:raw_falafel', 'tfc_gourmet:falafel');
global.cookingRecipe(event, 'pelmeni', 'tfc_gurman:raw_pelmeni', 'tfc_gurman:pelmeni', '#tfg:clean_water 500');
global.cookingRecipe(event, 'pelmeni', 'tfc_gourmet:raw_pelmeni', 'tfc_gourmet:pelmeni', '#tfg:clean_water 500');
global.cookingRecipe(event, 'vareniki', 'tfc_gurman:raw_vareniki', 'tfc_gurman:vareniki', '#tfg:clean_water 500');
global.cookingRecipe(event, 'vareniki', 'tfc_gourmet:raw_vareniki', 'tfc_gourmet:vareniki', '#tfg:clean_water 500');
//#endregion
//#region Food Processor Recipes
// Borscht
global.processorRecipe(event, 'sliced_cabbage', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/cabbage'],
itemOutputs: ['2x tfc_gourmet:sliced_cabbage'],
circuit: 1,
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:sliced_cabbage').copyOldestFood()
});
global.processorRecipe(event, 'borscht', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/beet', 'tfc:food/cabbage', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/tomato', '3x #tfc:bowls'],
itemInputs: ['tfc:food/beet', 'tfc_gourmet:sliced_cabbage', 'tfc:food/carrot', 'tfc:food/onion', '#tfc:foods/cooked_meats', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:borscht'],
itemOutputs: ['3x tfc_gourmet:borscht'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:borscht').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:borscht').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Schi
global.processorRecipe(event, 'schi', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/cabbage', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/tomato', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:schi'],
itemOutputs: ['3x tfc_gourmet:schi'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:schi').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:schi').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Coffee
global.processorRecipe(event, 'coffee', 1000, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x firmalife:food/roasted_cocoa_beans'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:coffee 1000'],
fluidOutputs: ['tfc_gourmet:coffee 1000'],
circuit: 2
});
@ -87,23 +101,23 @@ function registerTFCGurmanRecipes(event) {
global.processorRecipe(event, 'cocoa', 1000, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x firmalife:food/cocoa_powder'],
fluidInputs: ['#tfc:milks 1000'],
fluidOutputs: ['tfc_gurman:cocoa 1000'],
fluidOutputs: ['tfc_gourmet:cocoa 1000'],
circuit: 1
});
// Compote
global.processorRecipe(event, 'compote', 1000, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x #tfc:foods/fruits'],
itemInputs: ['2x #tfc_gourmet:compote_fruits'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:compote 1000'],
circuit: 2
fluidOutputs: ['tfc_gourmet:compote 1000'],
circuit: 6
});
// Lemonade
global.processorRecipe(event, 'lemonade', 1500, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x tfc:food/lemon', '#tfc:sweetener'],
itemInputs: ['2x tfc:food/lemon'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:lemonade 1000'],
fluidOutputs: ['tfc_gourmet:lemonade 1000'],
circuit: 2
});
@ -111,39 +125,39 @@ function registerTFCGurmanRecipes(event) {
global.processorRecipe(event, 'kvass', 2400, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x #tfc:foods/grains'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:kvass 1000'],
fluidOutputs: ['tfc_gourmet:kvass 1000'],
circuit: 2
});
// Tea Mint
global.processorRecipe(event, 'tea_mint', 200, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x tfc_gurman:dried_mint_leaves'],
itemInputs: ['2x tfc_gourmet:dried_mint_leaves'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:tea_mint 1000'],
fluidOutputs: ['tfc_gourmet:tea_mint 1000'],
circuit: 2
});
// Tea Chamomile
global.processorRecipe(event, 'tea_chamomile', 200, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x tfc_gurman:dried_chamomile_leaves'],
itemInputs: ['2x tfc_gourmet:dried_chamomile_leaves'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:tea_chamomile 1000'],
fluidOutputs: ['tfc_gourmet:tea_chamomile 1000'],
circuit: 2
});
// Tea Rosehip
global.processorRecipe(event, 'tea_rosehip', 200, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x tfc_gurman:dried_rosehip_leaves'],
itemInputs: ['2x tfc_gourmet:dried_rosehip_leaves'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:tea_rosehip 1000'],
fluidOutputs: ['tfc_gourmet:tea_rosehip 1000'],
circuit: 2
});
// Tea Nettle
global.processorRecipe(event, 'tea_nettle', 200, GTValues.VHA[GTValues.LV], {
itemInputs: ['2x tfc_gurman:dried_nettle_leaves'],
itemInputs: ['2x tfc_gourmet:dried_nettle_leaves'],
fluidInputs: ['minecraft:water 1000'],
fluidOutputs: ['tfc_gurman:tea_nettle 1000'],
fluidOutputs: ['tfc_gourmet:tea_nettle 1000'],
circuit: 2
});
@ -151,198 +165,338 @@ function registerTFCGurmanRecipes(event) {
global.processorRecipe(event, 'solyanka', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/meats', 'tfc:food/cabbage', 'tfc:food/onion', 'tfc:food/tomato', 'tfc:food/olive', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:solyanka'],
itemOutputs: ['3x tfc_gourmet:solyanka'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:solyanka').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:solyanka').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Okroshka
global.processorRecipe(event, 'okroshka', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/cabbage', 'tfc:food/tomato', 'tfc:food/potato', 'tfc:food/onion', '#firmalife:foods/raw_eggs', '3x #tfc:bowls'],
fluidInputs: ['tfc_gurman:kvass 1000'],
itemOutputs: ['3x tfc_gurman:okroshka'],
fluidInputs: ['tfc_gourmet:kvass 1000'],
itemOutputs: ['3x tfc_gourmet:okroshka'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:okroshka').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:okroshka').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Zama
global.processorRecipe(event, 'zama', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/chicken', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:powder/salt', 'tfc:food/garlic', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:zama'],
itemOutputs: ['3x tfc_gourmet:zama'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:zama').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:zama').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Curry
global.processorRecipe(event, 'curry', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/cooked_meats', '#tfc:foods/vegetables', 'tfc:powder/salt', 'tfc:food/cooked_rice', '3x #tfc:bowls'],
fluidInputs: ['#tfc:milks 1000'],
itemOutputs: ['3x tfc_gurman:curry'],
itemOutputs: ['3x tfc_gourmet:curry'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:curry').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:curry').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Goulash
global.processorRecipe(event, 'goulash', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/raw_meats', 'tfc:food/onion', 'tfc:food/potato', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 100'],
itemOutputs: ['3x tfc_gurman:goulash'],
itemOutputs: ['3x tfc_gourmet:goulash'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:goulash').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:goulash').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Pho
global.processorRecipe(event, 'pho', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/cooked_pasta', '#tfc:foods/cooked_meats', 'tfc:food/garlic', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 100'],
itemOutputs: ['3x tfc_gurman:pho'],
itemOutputs: ['3x tfc_gourmet:pho'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:pho').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:pho').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Bouillabaisse
global.processorRecipe(event, 'bouillabaisse', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#firmalife:foods/raw_fish', 'tfc:food/tomato', 'tfc:food/onion', 'tfc:food/garlic', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:bouillabaisse'],
itemOutputs: ['3x tfc_gourmet:bouillabaisse'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:bouillabaisse').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:bouillabaisse').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Ramen with Beef
global.processorRecipe(event, 'ramen_beef', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/raw_egg_noodles', '#firmalife:foods/raw_eggs', 'tfc:food/beef', 'tfc:food/onion', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gurman:ramen_with_beef'],
itemOutputs: ['2x tfc_gourmet:ramen_with_beef'],
circuit: 21,
itemOutputProvider: TFC.isp.of('2x tfc_gurman:ramen_with_beef').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:ramen_with_beef').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Ramen with Camelidae
global.processorRecipe(event, 'ramen_camelidae', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/raw_egg_noodles', '#firmalife:foods/raw_eggs', 'tfc:food/camelidae', 'tfc:food/onion', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gurman:ramen_with_camelidae'],
itemOutputs: ['2x tfc_gourmet:ramen_with_camelidae'],
circuit: 21,
itemOutputProvider: TFC.isp.of('2x tfc_gurman:ramen_with_camelidae').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:ramen_with_camelidae').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Ramen with Chevon
global.processorRecipe(event, 'ramen_chevon', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/raw_egg_noodles', '#firmalife:foods/raw_eggs', 'tfc:food/chevon', 'tfc:food/onion', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gurman:ramen_with_chevon'],
itemOutputs: ['2x tfc_gourmet:ramen_with_chevon'],
circuit: 21,
itemOutputProvider: TFC.isp.of('2x tfc_gurman:ramen_with_chevon').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:ramen_with_chevon').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Ramen with Bacon
global.processorRecipe(event, 'ramen_bacon', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/raw_egg_noodles', '#firmalife:foods/raw_eggs', 'firmalife:food/bacon', 'tfc:food/onion', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gurman:ramen_with_bacon'],
itemOutputs: ['2x tfc_gourmet:ramen_with_bacon'],
circuit: 21,
itemOutputProvider: TFC.isp.of('2x tfc_gurman:ramen_with_bacon').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:ramen_with_bacon').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Biryani
global.processorRecipe(event, 'biryani', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/rice_grain', '#tfc:foods/meats', 'tfc:food/onion', 'tfc:food/carrot', 'tfc:food/tomato', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:biryani'],
itemOutputs: ['3x tfc_gourmet:biryani'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:biryani').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:biryani').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Fried Rice
global.processorRecipe(event, 'fried_rice', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/cooked_rice', '#forge:eggs', '#tfc:foods/vegetables', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 100'],
itemOutputs: ['3x tfc_gurman:fried_rice'],
itemOutputs: ['3x tfc_gourmet:fried_rice'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:fried_rice').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:fried_rice').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Kimchi
global.processorRecipe(event, 'kimchi', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/cabbage', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/garlic', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gurman:kimchi'],
itemOutputs: ['3x tfc_gourmet:kimchi'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:kimchi').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:kimchi').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Dolma
global.processorRecipe(event, 'dolma', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/meats', 'tfc:food/rice_grain', 'tfc:powder/salt', '2x #tfc:bowls'],
itemInputs: ['#tfc:foods/meats', 'tfc:food/rice_grain', 'tfc:powder/salt', 'firmalife:fruit_leaf', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gurman:dolma'],
itemOutputs: ['2x tfc_gourmet:dolma'],
circuit: 16,
itemOutputProvider: TFC.isp.of('2x tfc_gurman:dolma').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:dolma').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Spaghetti Bolognese
global.processorRecipe(event, 'spaghetti_bolognese', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/cooked_pasta', '#tfc:foods/cooked_meats', 'tfc:food/tomato', 'tfc:food/onion', 'tfc:food/garlic', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 500'],
itemOutputs: ['3x tfc_gurman:spaghetti_bolognese'],
itemOutputs: ['3x tfc_gourmet:spaghetti_bolognese'],
circuit: 18,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:spaghetti_bolognese').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:spaghetti_bolognese').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Pasta Carbonara
global.processorRecipe(event, 'pasta_carbonara', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/cooked_pasta', 'firmalife:food/bacon', '#firmalife:foods/raw_eggs', 'firmalife:food/shredded_cheese', 'tfc:powder/salt', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 500'],
itemOutputs: ['3x tfc_gurman:pasta_carbonara'],
itemOutputs: ['3x tfc_gourmet:pasta_carbonara'],
circuit: 18,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:pasta_carbonara').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:pasta_carbonara').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Ratatouille
global.processorRecipe(event, 'ratatouille', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/tomato', 'tfc:food/pumpkin_chunks', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/garlic', '3x #tfc:bowls'],
fluidInputs: ['minecraft:water 500'],
itemOutputs: ['3x tfc_gurman:ratatouille'],
itemOutputs: ['3x tfc_gourmet:ratatouille'],
circuit: 18,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:ratatouille').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:ratatouille').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Risotto
global.processorRecipe(event, 'risotto', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/rice_grain', '#firmalife:foods/cheeses', '#tfc:foods/vegetables', '2x #tfc:bowls'],
fluidInputs: ['minecraft:water 100'],
itemOutputs: ['3x tfc_gurman:risotto'],
itemOutputs: ['3x tfc_gourmet:risotto'],
circuit: 18,
itemOutputProvider: TFC.isp.of('3x tfc_gurman:risotto').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:risotto').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Porridge
global.processorRecipe(event, 'porridge', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/grains', 'tfc:powder/salt', '#tfc:bowls'],
fluidInputs: ['minecraft:water 250'],
itemOutputs: ['tfc_gurman:porridge'],
itemOutputs: ['tfc_gourmet:porridge'],
circuit: 18,
itemOutputProvider: TFC.isp.of('tfc_gurman:porridge').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('tfc_gourmet:porridge').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Mamaliga
global.processorRecipe(event, 'mamaliga', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/maize_grain', 'tfc:powder/salt', '#tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['tfc_gurman:mamaliga'],
itemOutputs: ['tfc_gourmet:mamaliga'],
circuit: 16,
itemOutputProvider: TFC.isp.of('tfc_gurman:mamaliga').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('tfc_gourmet:mamaliga').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Adjika
global.processorRecipe(event, 'adjika', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/green_bell_pepper', 'tfc:food/red_bell_pepper', 'tfc:powder/salt', 'tfc:food/garlic', 'firmalife:plant/cilantro', '5x #tfc:bowls'],
itemInputs: ['#tfc:food/bell_peppers', '#tfc:food/bell_peppers', 'tfc:powder/salt', 'tfc:food/garlic', "tfg:spice/cilantro_leaves", '5x #tfc:bowls'],
fluidInputs: ['minecraft:water 500'],
itemOutputs: ['5x tfc_gurman:adjika'],
itemOutputs: ['5x tfc_gourmet:adjika'],
circuit: 8,
itemOutputProvider: TFC.isp.of('5x tfc_gurman:adjika').simpleModifier('tfg:force_add_bowl').copyOldestFood()
itemOutputProvider: TFC.isp.of('5x tfc_gourmet:adjika').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Onion soup with bread
global.processorRecipe(event, 'onion_soup_with_bread', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/onion', '#firmalife:foods/flatbreads', '#firmalife:foods/cheeses', 'tfc:powder/salt', '#tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:fresh_onion_soup_bread'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:fresh_onion_soup_bread').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Lentil soup
global.processorRecipe(event, 'lentil_soup', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/soybean', 'tfc:food/onion', 'tfc:food/garlic', 'tfc:powder/salt', '#tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:lent_soup'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:lent_soup').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Gazpacho
global.processorRecipe(event, 'gazpacho', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/tomato', '#tfc:food/bell_peppers', '#firmalife:foods/flatbreads', 'tfc:food/garlic', '#tfc:bowls'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:gazpacho'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:gazpacho').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Kharcho
global.processorRecipe(event, 'kharcho', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc_gourmet:plant_mix', 'tfc:food/garlic', 'tfc:food/onion', 'tfc:food/rice_grain', 'tfc:food/cooked_beef'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:kharcho'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:kharcho').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Kholodnik
global.processorRecipe(event, 'kholodnik', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/potato', '2x tfc:food/beet', '#forge:eggs', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:kholodnik'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:kholodnik').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Shurpa
global.processorRecipe(event, 'shurpa', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:food/bell_peppers', 'tfc:food/onion', 'tfc:food/potato', 'tfc:food/cooked_mutton', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:shurpa'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:shurpa').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
global.processorRecipe(event, 'shurpa2', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:food/bell_peppers', 'tfc:food/onion', 'tfc:food/potato', 'tfc:food/cooked_beef', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:shurpa'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:shurpa').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Fish tomato soup
global.processorRecipe(event, 'fish_tomato_soup', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#firmalife:foods/raw_fish', 'tfc:food/tomato', 'tfc:food/onion', 'tfc:food/garlic', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:fish_soup_tomato'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:fish_soup_tomato').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Pea soup
global.processorRecipe(event, 'pea_soup', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/green_bean', 'tfc:food/onion', '#tfc:foods/cooked_meats', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:pea_soup'],
circuit: 16,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:pea_soup').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Minestrone
global.processorRecipe(event, 'minestrone', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['tfc:food/rice_grain', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/garlic', '#tfc:foods/cooked_meats'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:minestrone'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:minestrone').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
global.processorRecipe(event, 'minestrone2', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/raw_egg_noodles', 'tfc:food/carrot', 'tfc:food/onion', 'tfc:food/garlic', '#tfc:foods/cooked_meats'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:minestrone'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:minestrone').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Fish soup
global.processorRecipe(event, 'fish_soup', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#firmalife:foods/raw_fish', 'tfc:food/onion', 'tfc:food/potato', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:fish_soup'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:fish_soup').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// French onion soup with toast
global.processorRecipe(event, 'french_onion_soup', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x tfc:food/onion', '#firmalife:foods/slices', '#firmalife:foods/cheeses', 'tfc:powder/salt'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['3x tfc_gourmet:fresh_onion_soup'],
circuit: 20,
itemOutputProvider: TFC.isp.of('3x tfc_gourmet:fresh_onion_soup').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// Raw Croissants
global.processorRecipe(event, 'raw_croissants', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/flour', 'firmalife:food/butter', '#forge:eggs'],
fluidInputs: ['minecraft:water 1000'],
itemOutputs: ['2x tfc_gourmet:raw_croissants'],
circuit: 20,
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:raw_croissants').copyOldestFood()
});
// Raw crepes
global.processorRecipe(event, 'raw_crepes', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['#tfc:foods/flour', 'firmalife:food/butter', '#forge:eggs'],
fluidInputs: ['#tfc:milks 500'],
itemOutputs: ['2x tfc_gourmet:raw_crepes'],
circuit: 20,
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:raw_crepes').copyOldestFood()
});
// Oladyi
global.processorRecipe(event, 'raw_oladyi', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['2x #tfc:foods/dough'],
fluidInputs: ['#tfc:milks 500'],
itemOutputs: ['2x tfc_gourmet:raw_oladyi'],
circuit: 20,
itemOutputProvider: TFC.isp.of('2x tfc_gourmet:raw_oladyi').copyOldestFood()
});
//#endregion
@ -351,54 +505,93 @@ function registerTFCGurmanRecipes(event) {
global.processorRecipeText(event, 'dried_mint', 200, GTValues.VA[GTValues.LV], "tfg.food_recipe.drying", {
itemInputs: ["tfc:plant/foxglove"],
fluidInputs: ['gtceu:nitrogen 100'],
itemOutputs: ["tfc_gurman:dried_mint_leaves"],
itemOutputs: ["tfc_gourmet:dried_mint_leaves"],
circuit: 6
});
global.processorRecipeText(event, 'dried_chamomile', 200, GTValues.VA[GTValues.LV], "tfg.food_recipe.drying", {
itemInputs: ["tfc:plant/lilac"],
fluidInputs: ['gtceu:nitrogen 100'],
itemOutputs: ["tfc_gurman:dried_chamomile_leaves"],
itemOutputs: ["tfc_gourmet:dried_chamomile_leaves"],
circuit: 6
});
global.processorRecipeText(event, 'dried_rosehip', 200, GTValues.VA[GTValues.LV], "tfg.food_recipe.drying", {
itemInputs: ["tfc:plant/rose"],
fluidInputs: ['gtceu:nitrogen 100'],
itemOutputs: ["tfc_gurman:dried_rosehip_leaves"],
itemOutputs: ["tfc_gourmet:dried_rosehip_leaves"],
circuit: 6
});
global.processorRecipeText(event, 'dried_nettle', 200, GTValues.VA[GTValues.LV], "tfg.food_recipe.drying", {
itemInputs: ["tfc:plant/trillium"],
fluidInputs: ['gtceu:nitrogen 100'],
itemOutputs: ["tfc_gurman:dried_nettle_leaves"],
itemOutputs: ["tfc_gourmet:dried_nettle_leaves"],
circuit: 6
});
// #endregion Drying
// #region Crafting table foods
// TODO: unfinished
global.processorRecipe(event, 'margarita_pizza', 300, GTValues.VA[GTValues.LV], {
itemInputs: ['firmalife:food/pizza_dough', 'firmalife:food/shredded_cheese', 'tfc:food/tomato', 'tfc:food/red_bell_pepper', 'tfc_gurman:plant_mix', 'firmalife:food/tomato_sauce'],
itemOutputs: ['tfc_gurman:raw_margarita_pizza'],
circuit: 4,
itemOutputProvider: TFC.isp.of('tfc_gurman:raw_margarita_pizza').simpleModifier('tfg:force_add_bowl').copyOldestFood()
});
// #endregion
// #region Replacements
event.replaceInput({ id: "tfc_gurman:crafting/tiramisu" }, "minecraft:sugar", "#tfg:sugars");
event.replaceInput({ id: "tfc_gourmet:crafting/tiramisu" }, "minecraft:sugar", "#tfg:sugars");
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of('4x tfc_gurman:raw_takoyaki').copyOldestFood(), [
event.shapeless('2x tfc_gourmet:plant_mix', [
"2x firmalife:spice/basil_leaves",
"tfg:spice/oregano_leaves",
"tfg:spice/cilantro_leaves",
]).id("tfc_gourmet:crafting/plant_mix")
event.replaceInput({ id: "tfc_gourmet:pot/adjika_bowl" }, "firmalife:plant/cilantro", "tfg:spice/cilantro_leaves");
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of('4x tfc_gourmet:raw_takoyaki').copyOldestFood(), [
TFC.ingredient.notRotten('tfg:food/raw_crawlermari'),
TFC.ingredient.notRotten('#tfc:foods/flour'),
TFC.ingredient.notRotten('#forge:eggs'),
'tfc:powder/salt'
]).id('tfg:shapeless/takoyaki_from_crawlermari');
event.remove({ id: "tfc_gourmet:crafting/raw_pelmeni" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`2x tfc_gourmet:raw_pelmeni`).copyFood(), [
TFC.ingredient.notRotten(`#tfc:foods/dough`),
TFC.ingredient.notRotten(`#tfc:foods/raw_meats`),
TFC.ingredient.notRotten(`#tfc:foods/dough`)
]).id(`tfg:shapeless/raw_pelmeni`)
event.remove({ id: "tfc_gourmet:crafting/raw_vareniki" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`tfc_gourmet:raw_vareniki`).copyFood(), [
TFC.ingredient.notRotten(`#tfc:foods/dough`),
TFC.ingredient.notRotten(`#tfc:foods/vegetables`)
]).id(`tfg:shapeless/raw_vareniki`)
event.remove({ id: "tfc_gourmet:crafting/raw_oladyi" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`2x tfc_gourmet:raw_oladyi`).copyFood(), [
TFC.ingredient.notRotten(`#tfc:foods/dough`),
TFC.ingredient.notRotten(`#tfc:foods/dough`),
TFC.ingredient.fluid(TFC.fluidStackIngredient('#tfc:milks', 500))
]).id(`tfg:shapeless/raw_oladyi`)
event.remove({ id: "tfc_gourmet:crafting/raw_syrniki" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`2x tfc_gourmet:raw_syrniki`).copyFood(), [
TFC.ingredient.notRotten(`#tfg:foods/cheeses`),
TFC.ingredient.notRotten(`#forge:eggs`),
TFC.ingredient.notRotten(`#tfc:foods/flour`)
]).id(`tfg:shapeless/raw_syrniki`)
event.remove({ id: "tfc_gourmet:crafting/raw_croissants" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`2x tfc_gourmet:raw_croissants`).copyFood(), [
TFC.ingredient.notRotten(`#tfc:foods/flour`),
TFC.ingredient.notRotten(`firmalife:food/butter`),
TFC.ingredient.notRotten(`#forge:eggs`),
TFC.ingredient.fluid(TFC.fluidStackIngredient('minecraft:water', 1000))
]).id(`tfg:shapeless/raw_croissants`)
event.remove({ id: "tfc_gourmet:crafting/raw_crepes" });
event.recipes.tfc.advanced_shapeless_crafting(TFC.isp.of(`2x tfc_gourmet:raw_crepes`).copyFood(), [
TFC.ingredient.notRotten(`#tfc:foods/flour`),
TFC.ingredient.notRotten(`firmalife:food/butter`),
TFC.ingredient.notRotten(`#forge:eggs`),
TFC.ingredient.fluid(TFC.fluidStackIngredient('#tfc:milks', 500))
]).id(`tfg:shapeless/raw_crepes`)
// #endregion
}

View file

@ -0,0 +1,10 @@
// priority: 0
"use strict";
function registerTFCScrapingKnivesRecipes(event) {
event.remove({ mod: 'tfcscraping', type: 'tfc:anvil' });
event.remove({ mod: 'tfcscraping', type: 'tfc:heating', not: [
{ id: "tfcscraping:heating/scraping_knife_blade_mold" }
]});
event.remove({ mod: 'tfcscraping', type: 'tfc:casting' });
}

View file

@ -4,28 +4,24 @@
*
* @param {Internal.RecipesEventJS} event
*/
const registerTFCBetterBFRecipes = (event) => {
event.remove("tfcbetterbf:heating/metal/insulation")
event.recipes.tfc.heating('tfcbetterbf:insulation', 1535)
.resultFluid(Fluid.of('gtceu:iron', 432))
.id(`tfcbetterbf:heating/insulation`)
const registerTFCBetterBFRecipes = (event) => {
event.remove("tfcbetterbf:heating/metal/insulation")
event.recipes.tfc.heating('tfcbetterbf:insulated_fire_bricks', 1535)
.resultFluid(Fluid.of('gtceu:iron', 432))
.id(`tfcbetterbf:heating/insulated_fire_bricks`)
event.recipes.tfc.heating('tfcbetterbf:insulation', 1535)
.resultFluid(Fluid.of('gtceu:iron', 432))
.id(`tfcbetterbf:heating/insulation`)
event.recipes.gtceu.macerator('tfcbetterbf:insulated_fire_bricks')
TFGHelpers.registerMaterialInfo('tfcbetterbf:insulation', [GTMaterials.WroughtIron, 3])
event.recipes.tfc.heating('tfcbetterbf:insulated_fire_bricks', 1535)
.resultFluid(Fluid.of('gtceu:iron', 432))
.id(`tfcbetterbf:heating/insulated_fire_bricks`)
TFGHelpers.registerMaterialInfo('tfcbetterbf:insulated_fire_bricks', [GTMaterials.get('tfg:refractory_clay'), 5, GTMaterials.WroughtIron, 3])
event.recipes.gtceu.packer('tfcbetterbf:insulated_fire_bricks')
.itemInputs('tfcbetterbf:insulated_fire_bricks')
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.WroughtIron, 3))
.duration(GTMaterials.WroughtIron.getMass() * 3)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('tfcbetterbf:insulated_fire_bricks')
.itemInputs('tfcbetterbf:insulated_fire_bricks')
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.WroughtIron, 3))
.duration(GTMaterials.Steel.getMass() * 3)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
.itemOutputs('tfc:fire_bricks', '3x tfcbetterbf:insulation')
.duration(20)
.EUt(2)
}

View file

@ -2,8 +2,4 @@
"use strict";
function registerTFCLunchBoxRecipes(event) {
// Убираем оригинальные рецепты капсул
// Remove original capsule recipes
event.remove({ id: 'tfclunchbox:universal_capsule' })
event.remove({ id: 'tfclunchbox:fill_capsule_with_ice' })
}

View file

@ -3,14 +3,5 @@
function registerTFCLunchboxItemTags(event) {
const DISABLED_ITEMS = [
'tfclunchbox:universal_capsule',
]
DISABLED_ITEMS.forEach(item => {
event.removeAllTagsFrom(item)
event.add('c:hidden_from_recipe_viewers', item)
})
event.add('tfclunchbox:ice', 'tfg:dry_ice')
}

View file

@ -1,16 +0,0 @@
// priority: 0
"use strict";
/**
*
* @param {Internal.RecipesEventJS} event
*/
const registerTFCScrapingRecipes = (event) => {
event.remove({ input: 'tfcscraping:ceramic/scraping_knife_blade_mold'})
event.recipes.tfc.casting('tfcscraping:metal/scraping_knife_blade/bismuth_bronze', 'tfcscraping:ceramic/scraping_knife_blade_mold', TFC.fluidStackIngredient('gtceu:bismuth_bronze', 288), 0.1)
event.recipes.tfc.casting('tfcscraping:metal/scraping_knife_blade/black_bronze', 'tfcscraping:ceramic/scraping_knife_blade_mold', TFC.fluidStackIngredient('gtceu:black_bronze', 288), 0.1)
event.recipes.tfc.casting('tfcscraping:metal/scraping_knife_blade/bronze', 'tfcscraping:ceramic/scraping_knife_blade_mold', TFC.fluidStackIngredient('gtceu:bronze', 288), 0.1)
event.recipes.tfc.casting('tfcscraping:metal/scraping_knife_blade/copper', 'tfcscraping:ceramic/scraping_knife_blade_mold', TFC.fluidStackIngredient('gtceu:copper', 288), 0.1)
}

View file

@ -0,0 +1,15 @@
"use strict";
/** @param {Internal.TFCDataEventJS} event */
function registerTFGAquaponicsData(event) {
event.fuel('tfg:flora_pellets', 1415, 1900, 0.95);
event.foodItem('tfg:fish_roe', (food) => {
food.hunger(4);
food.decayModifier(2);
food.protein(2.5);
food.saturation(2);
});
}

View file

@ -0,0 +1,594 @@
// priority: 1
"use strict";
///////////////////////////////////////////////////////////////////////////////////////////////////////
//#region Balancing Values
/** Base duration of recipes in ticks. */
const greenhouse_base_duration = 10 * 60 * 20;
/** Duration multiplier for fertilized recipes. */
const greenhouse_duration_multiplier_fertilized = 0.75;
/** Duration multiplier for aquaponic recipes. */
const greenhouse_duration_multiplier_aquaponics = 0.5;
/** Hydroponic facility chance multiplier. */
const hydroponics_facility_chance_multiplier = 1.25;
/** Base percent chance for chanced outputs (out of 100). */
const greenhouse_chanced_output_base = 7.5;
/** Fertilized percent chance for chanced outputs (out of 100). */
const greenhouse_chanced_output_fertilized = 40;
/** Aquaponics percent chance for chanced outputs (out of 100). */
const greenhouse_chanced_output_aquaponics = 80;
/**
* Dimension setting index provides recipe modifications based on the dimension assigned.
*
* @typedef {Object} DimensionIndex
* @property {Internal.Dimension} id - Dimension ID.
* @property {Internal.FluidStackIngredient_} fluid - Fluid ID or tag.
* @property {number} fluid_chance - Chance for fluid consumption per tick out of 100.
* @property {Internal.ItemStack|null} fertilizer - Fertilizer item ID or null if fertilizer is not needed on that dimension.
* @property {GTValues.EUt} eut - EUt value for that dimension.
* @property {boolean|null} oxygenated - Whether the recipe requires an oxygenated environment.
*/
/** @param {...DimensionIndex[]} - Dimension settings array */
const greenhouse_dimension_index = [
// Overworld settings are also used as the default when no dimension is specified.
{id: 'minecraft:overworld', fluid: '#tfg:clean_water', fluid_tier2: 'tfg:nitrate_rich_water', fluid_chance: 10, fertilizer: 'gtceu:fertilizer', eut: GTValues.VHA[GTValues.LV], oxygenated: true},
{id: 'minecraft:the_nether', fluid: '#tfg:clean_water', fluid_tier2: 'tfg:nitrate_rich_water', fluid_chance: 10, fertilizer: 'gtceu:fertilizer', eut: GTValues.VHA[GTValues.LV], oxygenated: true},
{id: 'ad_astra:moon', fluid: 'gtceu:helium_3', fluid_tier2: null, fluid_chance: 2, fertilizer: null, eut: GTValues.VHA[GTValues.MV], oxygenated: null},
{id: 'ad_astra:mars', fluid: 'tfg:semiheavy_ammoniacal_water', fluid_tier2: 'tfg:nitrate_rich_semiheavy_ammoniacal_water', fluid_chance: 10, fertilizer: 'gtceu:fertilizer', eut: GTValues.VHA[GTValues.HV], oxygenated: null}
];
//#endregion
///////////////////////////////////////////////////////////////////////////////////////////////////////
//#region Utility Script
/**
* Function for generating greenhouse recipes.
*
* @param {*} event
* @param {Internal.Dimension|null} dimension -Dimension ID
* @param {Internal.ItemStack} input -Input Item (seeds, saplings, etc.)
* @param {Internal.ItemStack|Internal.ItemStack[]} output -Output Items. If array, first item is guaranteed while rest use chanced output. Last item in array is used for the rest of the chance outputs.
* @param {number|null} chance_multiplier -Multiplies output chances by this value. Defaults to 1.
* @param {number|null} circuit - Circuit number. 1-32. Or null.
*/
function generateGreenHouseRecipe(event, dimension, input, output, chance_multiplier, circuit) {
// Resolve dimension based modifier defaults by comparing to the `greenhouse_dimension_index` array.
/** @type {DimensionIndex|null} */
const dimMods = dimension ? greenhouse_dimension_index.find(d => d.id === dimension) : null;
/** @type {Internal.FluidStackIngredient_} - Resolved fluid ID or tag. Defaults to `#tfg:clean_water` */
const resolvedFluid = dimMods?.fluid ?? '#tfg:clean_water';
/** @type {Internal.FluidStackIngredient_} - Resolved aquaponic loop fluid ID or tag. Defaults to `tfg:nitrate_rich_water` */
const resolvedFluidTier2 = dimMods?.fluid_tier2 ?? 'tfg:nitrate_rich_water';
/** @type {Internal.ItemStack|null} - Resolved fertilizer item ID. Defaults to `gtceu:fertilizer` */
const resolvedFertilizer = dimMods ? dimMods.fertilizer : 'gtceu:fertilizer';
/** @type {boolean} - Whether fertilization is possible for this dimension. */
const canFertilize = resolvedFertilizer !== null;
/** @type {GTValues.EUt} - Resolved EUt value. Defaults to LV */
const resolvedEUt = dimMods ? dimMods.eut : GTValues.VHA[GTValues.LV];
/** @type {number} - Resolved fluid chance multiplied by 100. Defaults to 1000. */
const resolvedChance = dimMods ? (dimMods.fluid_chance * 100) : 1000;
/** @type {boolean|null} - Whether the recipe requires an oxygenated environment. Defaults to true. */
const requiresOxygen = dimMods ? dimMods.oxygenated : true;
/** @type {string} - Circuit number for the recipe id. Defaults to an empty string if not provided. */
const idCircuit = (circuit === null || circuit === undefined) ? "" : `/${circuit}`;
/////////////////////////////////////////////////////////////////////////////////////////////////////
/** Collect errors. */
const errors = [];
if (input === undefined || input === null || Array.isArray(input) || (typeof input === 'string' && input.trim() === '')) {
errors.push(`input is invalid: ${JSON.stringify(input)}`);
};
if (output !== undefined && !Array.isArray(output)) {
output = [output];
};
if (output === undefined || output === null || output.length === 0 || output.length > 4) {
errors.push(`output is invalid: ${JSON.stringify(output)}`);
} else {
output.forEach((o, idx) => {
if (o === undefined || o === null) {
errors.push(`output[${idx}] is null or undefined`);
};
});
};
// If there are any errors, log them all and throw once.
if (errors.length > 0) {
console.error(`Greenhouse recipe error details:\n input: ${JSON.stringify(input)}\n output: ${JSON.stringify(output)}\n dimension: ${JSON.stringify(dimension)}\n circuit: ${JSON.stringify(circuit)}\n chance_multiplier: ${JSON.stringify(chance_multiplier)}`);
throw new TypeError(`Greenhouse recipe errors for recipe ID ${`tfg:greenhouse/${linuxUnfucker(input)}${idCircuit}`}\n - ${errors.join("\n - ")}`);
};
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Normalize outputs to an array of 4 items.
// index 0 is guaranteed output, indexes 1-3 are chanced outputs.
// Last item in output array is used for any missing chanced outputs.
let outputs_array = [];
const guaranteed_output = output[0];
const last_output = output[output.length - 1];
for (let i = 0; i < 4; i++) {
if (i === 0) outputs_array[i] = guaranteed_output;
else outputs_array[i] = (output[i] !== undefined) ? output[i] : last_output;
};
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Math Section :D
/**
* Function to keep calculated duration values above 0 (minimum 1 tick).
*
* @param {number} value - Number to validate.
* @returns {number} - Validated Number.
*/
function validate_duration(value) {
return Math.max(1, Math.round(value));
};
const fertilizer_duration = validate_duration(greenhouse_base_duration * greenhouse_duration_multiplier_fertilized);
const aquaponic_duration = validate_duration(greenhouse_base_duration * greenhouse_duration_multiplier_aquaponics);
/**
* Function to keep percent values within valid range (1 to 10000).
*
* @param {number} value - Number to validate.
* @returns {number} - Validated Number.
*/
function validate_percent(value) {
return Math.min(10000, Math.max(1, Math.round(value)));
};
chance_multiplier = chance_multiplier ?? 1;
chance_multiplier = chance_multiplier * 100;
const base_chance = validate_percent(greenhouse_chanced_output_base * chance_multiplier);
const fertilizer_chance = validate_percent(greenhouse_chanced_output_fertilized * chance_multiplier);
const aquaponic_chance = validate_percent(greenhouse_chanced_output_aquaponics * chance_multiplier);
const hydroponics_base_chance = validate_percent(greenhouse_chanced_output_base * chance_multiplier);
const hydroponics_fertilizer_chance = validate_percent(greenhouse_chanced_output_fertilized * chance_multiplier * hydroponics_facility_chance_multiplier);
const hydroponics_aquaponic_chance = validate_percent(greenhouse_chanced_output_aquaponics * chance_multiplier * hydroponics_facility_chance_multiplier);
////////////////////////////////////////////////////////////////////////////////////////////////////////
// Recipe Scripts.
if (canFertilize) {
//======================== Greenhouse Recipes ========================
// Base recipe.
let a = event.recipes.gtceu.greenhouse(`tfg:${linuxUnfucker(input)}${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(greenhouse_base_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
a.dimension(dimension)
};
if (requiresOxygen !== null) {
TFGRecipeSchemaBindings.isOxygenated(a, requiresOxygen)
};
if (outputs_array[1] !== null) {
a.chancedOutput(outputs_array[1], base_chance, 0)
a.chancedOutput(outputs_array[2], base_chance, 0)
a.chancedOutput(outputs_array[3], base_chance, 0)
};
if (circuit !== null) {
a.circuit(circuit)
};
// Fertilized Recipe.
let b = event.recipes.gtceu.greenhouse(`tfg:${linuxUnfucker(input)}_fertilized${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(fertilizer_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
b.dimension(dimension)
};
if (requiresOxygen !== null) {
TFGRecipeSchemaBindings.isOxygenated(b, requiresOxygen)
};
if (outputs_array[1] !== null) {
b.chancedOutput(outputs_array[1], fertilizer_chance, 0)
b.chancedOutput(outputs_array[2], fertilizer_chance, 0)
b.chancedOutput(outputs_array[3], fertilizer_chance, 0)
b.itemInputs(Item.of(resolvedFertilizer, 8))
};
if (circuit !== null) {
b.circuit(circuit + 1)
};
// Aquaponics Recipe.
let c = event.recipes.gtceu.greenhouse(`tfg:${linuxUnfucker(input)}_aquaponic${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluidTier2} 1`, resolvedChance, 0)
.perTick(false)
.duration(aquaponic_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
c.dimension(dimension)
};
if (requiresOxygen !== null) {
TFGRecipeSchemaBindings.isOxygenated(c, requiresOxygen)
};
if (outputs_array[1] !== null) {
c.chancedOutput(outputs_array[1], aquaponic_chance, 0)
c.chancedOutput(outputs_array[2], aquaponic_chance, 0)
c.chancedOutput(outputs_array[3], aquaponic_chance, 0)
};
if (circuit !== null) {
c.circuit(circuit + 2)
};
c.itemOutputs('tfg:flora_pellets');
//======================== Hydroponic Facility Recipes ========================
// Base recipe.
let d = event.recipes.gtceu.hydroponics_facility(`tfg:${linuxUnfucker(input)}${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(greenhouse_base_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
d.dimension(dimension)
};
if (outputs_array[1] !== null) {
d.chancedOutput(outputs_array[1], hydroponics_base_chance, 0)
d.chancedOutput(outputs_array[2], hydroponics_base_chance, 0)
d.chancedOutput(outputs_array[3], hydroponics_base_chance, 0)
};
if (circuit !== null) {
d.circuit(circuit)
};
// Fertilized Recipe.
let e = event.recipes.gtceu.hydroponics_facility(`tfg:${linuxUnfucker(input)}_fertilized${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(fertilizer_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
e.dimension(dimension)
};
if (outputs_array[1] !== null) {
e.chancedOutput(outputs_array[1], hydroponics_fertilizer_chance, 0)
e.chancedOutput(outputs_array[2], hydroponics_fertilizer_chance, 0)
e.chancedOutput(outputs_array[3], hydroponics_fertilizer_chance, 0)
e.itemInputs(Item.of(resolvedFertilizer, 8))
};
if (circuit !== null) {
e.circuit(circuit + 1)
};
// Aquaponics Recipe.
let f = event.recipes.gtceu.hydroponics_facility(`tfg:${linuxUnfucker(input)}_aquaponic${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluidTier2} 1`, resolvedChance, 0)
.perTick(false)
.duration(aquaponic_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
f.dimension(dimension)
};
if (outputs_array[1] !== null) {
f.chancedOutput(outputs_array[1], hydroponics_aquaponic_chance, 0)
f.chancedOutput(outputs_array[2], hydroponics_aquaponic_chance, 0)
f.chancedOutput(outputs_array[3], hydroponics_aquaponic_chance, 0)
};
if (circuit !== null) {
f.circuit(circuit + 2)
};
f.itemOutputs('tfg:flora_pellets');
} else {
// Base recipe boosted if no fertilization needed.
//======================== Greenhouse Recipes ========================
let a = event.recipes.gtceu.greenhouse(`tfg:${linuxUnfucker(input)}${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(fertilizer_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
a.dimension(dimension)
};
if (requiresOxygen !== null) {
TFGRecipeSchemaBindings.isOxygenated(a, requiresOxygen)
};
if (outputs_array[1] !== null) {
a.chancedOutput(outputs_array[1], fertilizer_chance, 0)
a.chancedOutput(outputs_array[2], fertilizer_chance, 0)
a.chancedOutput(outputs_array[3], fertilizer_chance, 0)
};
if (circuit !== null) {
a.circuit(circuit)
};
//======================== Hydroponics Facility Recipes ========================
let b = event.recipes.gtceu.hydroponics_facility(`tfg:${linuxUnfucker(input)}${idCircuit}`)
.notConsumable(input)
.itemOutputs(outputs_array[0])
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 1`, resolvedChance, 0)
.perTick(false)
.duration(fertilizer_duration)
.EUt(resolvedEUt)
if (dimension !== null) {
b.dimension(dimension)
};
if (outputs_array[1] !== null) {
b.chancedOutput(outputs_array[1], hydroponics_fertilizer_chance, 0)
b.chancedOutput(outputs_array[2], hydroponics_fertilizer_chance, 0)
b.chancedOutput(outputs_array[3], hydroponics_fertilizer_chance, 0)
};
if (circuit !== null) {
b.circuit(circuit)
};
};
};
/**
* Function for generating standard crop greenhouse recipes.
* Uses the following defaults:
* - 4x seed inputs
* - 20x crop output
* - 1x seed chanced output
* - 4x crop chanced output
*
* @param {Internal.RecipesEventJS} event
* @param {Internal.Dimension|null} dimension -Dimension ID
* @param {Internal.Ingredient} input -Input Item. (seed, bush, etc.)
* @param {Internal.ItemStack} output -Output Item. (vegetable, fruit, etc.)
* @param {Internal.ItemStack|null} leaves - Leaf block. Generates extra recipes with leaf outputs if provided.
* @param {number|null} chance_multiplier -Multiplies output chances by this value. Defaults to 1.
*/
function generateCropGreenHouseRecipe(event, dimension, input, output, leaves, chance_multiplier) {
generateGreenHouseRecipe(event, dimension, `4x ${input}`, [Item.of(output, 20), Item.of(input, 1), Item.of(output, 4)], chance_multiplier, 1);
generateGreenHouseRecipe(event, dimension, `4x ${input}`, [Item.of(output, 20), Item.of(input, 8), Item.of(input, 4)], chance_multiplier, 5);
if (leaves !== null && leaves !== undefined) {
generateGreenHouseRecipe(event, dimension, `4x ${input}`, [Item.of(output, 20), Item.of(leaves, 16), Item.of(leaves, 8)], chance_multiplier, 10);
};
};
/**
* Function for generating standard tree greenhouse recipes.
* Uses the following defaults:
* - 8x sapling inputs
* - 64x wood output
* - 4x sapling chanced output
* - 16x wood chanced output
*
* @param {Internal.RecipesEventJS} event
* @param {Internal.Dimension|null} dimension -Dimension ID
* @param {Internal.Ingredient} input -Input Item. (sapling)
* @param {Internal.ItemStack} output -Output Item. (wood)
* @param {Internal.ItemStack|null} leaves - Leaf block. Generates extra recipes with leaf outputs if provided.
* @param {number|null} chance_multiplier -Multiplies output chances by this value. Defaults to 1.
*/
function generateTreeGreenHouseRecipe(event, dimension, input, output, leaves, chance_multiplier) {
generateGreenHouseRecipe(event, dimension, `8x ${input}`, [Item.of(output, 64), Item.of(input, 4), Item.of(output, 16)], chance_multiplier, 1);
generateGreenHouseRecipe(event, dimension, `8x ${input}`, [Item.of(output, 64), Item.of(input, 16), Item.of(input, 8)], chance_multiplier, 5);
if (leaves !== null && leaves !== undefined) {
generateGreenHouseRecipe(event, dimension, `8x ${input}`, [Item.of(output, 64), Item.of(leaves, 32), Item.of(leaves, 16)], chance_multiplier, 10);
};
};
//#endregion
// Recipes
/**
* @param {Internal.RecipesEventJS} event
*/
const registerTFGGreenhouseRecipes = (event) => {
//#region Multiblock Parts
/** @type {string[]} - Tier names of greenhouse casings. */
const greenhouse_tiers = ['treated_wood', 'copper', 'iron', 'stainless_steel'];
greenhouse_tiers.forEach(tier => {
const tier_tag = Ingredient.of(`#tfg:${tier}_greenhouse_casings`).itemIds.toArray().map(String);
tier_tag.forEach(item => {
event.stonecutting(item,
Ingredient.of(`#tfg:${tier}_greenhouse_casings`).subtract(item)
).id(`tfg:stonecutter/${linuxUnfucker(item)}`)
});
});
// Cultivation Monitor
event.recipes.gtceu.shaped('tfg:cultivation_monitor', [
'CEC',
'DBD',
'CAC'
], {
A: 'gtceu:ev_scanner',
B: 'gtceu:computer_monitor_cover',
C: ChemicalHelper.get(TagPrefix.plateDense, GTMaterials.TungstenSteel, 1),
D: '#gtceu:circuits/luv',
E: '#forge:lenses/emerald'
}).addMaterialInfo().id('tfg:shaped/cultivation_monitor');
// Hydroponics Facility Controller
event.recipes.gtceu.shaped('tfg:hydroponics_facility', [
'FBF',
'EAE',
'CDC'
], {
A: 'gtceu:iv_machine_hull',
B: 'tfg:cultivation_monitor',
C: '#gtceu:circuits/iv',
D: 'gtceu:platinum_single_cable',
E: 'gtceu:iv_electric_pump',
F: 'tfg:grow_light'
}).addMaterialInfo().id('tfg:shaped/hydroponics_facility');
// Grow Lights
event.recipes.gtceu.shaped('2x tfg:grow_light', [
'ABA',
'CDC'
], {
A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.TinAlloy, 1),
B: 'gtceu:annealed_copper_single_cable',
C: 'minecraft:glowstone',
D: 'gtceu:tin_alloy_small_fluid_pipe'
}).addMaterialInfo().id('tfg:shaped/grow_light');
// Horticulture Planters
event.recipes.gtceu.shaped('tfg:egh_planter', [
'BAB',
'BDB',
'CCC'
], {
A: 'firmalife:hydroponic_planter',
B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.TungstenSteel, 1),
C: 'tfg:grow_light',
D: 'gtceu:iv_hermetic_casing'
}).addMaterialInfo().id('tfg:shaped/egh_planter');
// Horticulture Casings
// TODO: Venus; swap the frame to calorite.
event.recipes.gtceu.assembler('tfg:casings/machine_casing_egh')
.itemInputs('gtceu:plascrete', '#forge:frames/ostrum')
.inputFluids(Fluid.of('tfg:chloroplasts', 100))
.itemOutputs('2x tfg:casings/machine_casing_egh')
.duration(8*20)
.circuit(6)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true);
//#endregion
//#region Recipes
// Mushrooms
Ingredient.of('#tfg:plants/beneath').stacks.forEach(element => {
generateGreenHouseRecipe(event, 'minecraft:the_nether', `8x ${element.id}`, [element.withCount(24), element.withCount(8)], 1, 1);
});
generateGreenHouseRecipe(event, 'minecraft:the_nether', '8x minecraft:red_mushroom', ['24x minecraft:red_mushroom', '8x minecraft:red_mushroom'], 1, 1);
generateGreenHouseRecipe(event, 'minecraft:the_nether', '8x minecraft:brown_mushroom', ['24x minecraft:brown_mushroom', '8x minecraft:brown_mushroom'], 1, 1);
// Crops
global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS.forEach(element => {
generateCropGreenHouseRecipe(event, null, element.input, element.output, element.leaves, 1);
});
global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS.forEach(element => {
generateCropGreenHouseRecipe(event, null, element.input, element.output, element.leaves, 1);
});
global.TFC_GREENHOUSE_VEGETABLE_RECIPE_COMPONENTS.forEach(element => {
generateCropGreenHouseRecipe(event, null, element.input, element.output, null, 1);
});
global.TFC_GREENHOUSE_BERRY_RECIPE_COMPONENTS.forEach(element => {
generateCropGreenHouseRecipe(event, null, element.input, element.output, null, 1);
});
// Wood
global.TFC_WOOD_TYPES.forEach(element => {
generateTreeGreenHouseRecipe(event, null, `tfc:wood/sapling/${element}`, `tfc:wood/log/${element}`, `tfc:wood/leaves/${element}`, 1);
});
global.AFC_SAPLINGS.forEach(element => {
generateTreeGreenHouseRecipe(event, null, `afc:wood/sapling/${element.sapling}`, element.log, `afc:wood/leaves/${element.sapling}`, 1);
});
// Plants
Ingredient.of('#tfc:plants').subtract('#tfc:wild_fruits').stacks.forEach(element => {
generateGreenHouseRecipe(event, null, `8x ${element.id}`, [element.withCount(24), element.withCount(8)], 1, 1);
});
Ingredient.of('#forge:corals').stacks.forEach(element => {
generateGreenHouseRecipe(event, null, `8x ${element.id}`, [element.withCount(24), element.withCount(8)], 1, 1);
});
Ingredient.of('#forge:coral_blocks').stacks.forEach(element => {
generateGreenHouseRecipe(event, null, `8x ${element.id}`, [element.withCount(12), element.withCount(4)], 1, 1);
});
generateGreenHouseRecipe(event, null, '8x minecraft:bamboo', ['64x minecraft:bamboo', '8x minecraft:bamboo'], 1, 1);
generateGreenHouseRecipe(event, null, '8x tfc:tree_roots', ['64x tfc:tree_roots', '8x tfc:tree_roots'], 1, 1);
generateGreenHouseRecipe(event, null, '8x tfc:food/fresh_seaweed', ['24x tfc:food/fresh_seaweed', '8x tfc:food/fresh_seaweed'], 1, 1);
generateGreenHouseRecipe(event, 'minecraft:the_nether', '4x minecraft:glow_berries', ['20x minecraft:glow_berries', '4x minecraft:glow_berries'], 1, 1);
// Mars Wood
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/strophar`, `ad_astra:strophar_stem`, `ad_astra:strophar_cap`, 1);
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/aeronos`, `ad_astra:aeronos_stem`, `ad_astra:aeronos_cap`, 1);
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/glacian`, `ad_astra:glacian_log`, `species:alphacene_moss_block`, 1);
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/alphacene`, `species:alphacene_mushroom_block`, `minecraft:mushroom_stem`, 1);
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/warped`, `beneath:wood/log/warped`, `minecraft:warped_wart_block`, 1);
generateTreeGreenHouseRecipe(event, 'ad_astra:mars', `tfg:saplings/crimson`, `beneath:wood/log/crimson`, `minecraft:nether_wart_block`, 1);
// Mars Plants
Ingredient.of('#tfg:mars_plants').stacks.forEach(element => {
generateGreenHouseRecipe(event, 'ad_astra:mars', `8x ${element.id}`, [element.withCount(24), element.withCount(8)], 1, 1);
});
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:amber_root_seeds', 'betterend:amber_root_product', null, 1);
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:blossom_berry_seeds', 'betterend:blossom_berry_product', null, 1);
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:bolux_mushroom_seeds', 'betterend:bolux_mushroom_product', null, 1);
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:cave_pumpkin_plant_seeds', 'betterend:cave_pumpkin', null, 1);
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:chorus_mushroom_seeds', 'betterend:chorus_mushroom_product', null, 1);
generateCropGreenHouseRecipe(event, 'ad_astra:mars', 'betterend:shadow_berry_seeds', 'betterend:shadow_berry_product', null, 1);
// Moon Plants
generateGreenHouseRecipe(event, 'ad_astra:moon', '16x tfg:lunar_chorus_flower', [
'64x minecraft:chorus_fruit', '8x minecraft:chorus_fruit', '4x tfg:lunar_chorus_flower', '4x tfg:lunar_chorus_flower'
], 1, 1);
generateGreenHouseRecipe(event, 'ad_astra:moon', '8x minecraft:twisting_vines', [
'16x minecraft:twisting_vines', '8x minecraft:pearlescent_froglight', '8x minecraft:verdant_froglight', '8x minecraft:ochre_froglight'
], 1, 1);
Ingredient.of('#tfg:moon_plants').stacks.forEach(element => {
generateGreenHouseRecipe(event, 'ad_astra:moon', `8x ${element.id}`, [element.withCount(24), element.withCount(8)], 1, 1);
});
//#endregion
};

View file

@ -0,0 +1,253 @@
// priority: 0
"use strict";
///////////////////////////////////////////////////////////////////////////////////////////////////////
//#region Balancing Values
/**
* Base duration of recipes in ticks.
* * Should match the Greenhouse base duration * aquaponics multiplier.
*/
const pisciculture_base_duration = Math.max(1, greenhouse_base_duration * greenhouse_duration_multiplier_aquaponics);
/**
* Dimension setting index provides recipe modifications based on the dimension assigned.
*
* @typedef {Object} DimensionIndex
* @property {Internal.Dimension} id - Dimension ID.
* @property {Internal.FluidStackIngredient_} fluid - Fluid ID or tag.
* @property {number} fluid_chance - Chance for fluid consumption per tick out of 100.
* @property {Internal.FluidStackIngredient_} fluid_out - Output fluid ID.
* @property {GTValues.EUt} eut - EUt value for that dimension.
* @property {boolean|null} oxygenated - Whether the recipe requires an oxygenated environment.
*/
/** @type {DimensionIndex[]} - Dimension settings array */
const pisciculture_dimension_index = [
// Overworld settings are also used as the default when no dimension is specified.
{id: 'minecraft:overworld', fluid: '#tfg:clean_water', fluid_chance: 10, fluid_out: 'tfg:nitrate_rich_water', eut: GTValues.VHA[GTValues.LV], oxygenated: true},
{id: 'minecraft:the_nether', fluid: '#tfg:clean_water', fluid_chance: 10, fluid_out: 'tfg:nitrate_rich_water', eut: GTValues.VHA[GTValues.LV], oxygenated: true},
// The moon has no fish yet :(
{id: 'ad_astra:mars', fluid: 'tfg:semiheavy_ammoniacal_water', fluid_chance: 10, fluid_out: 'tfg:nitrate_rich_semiheavy_ammoniacal_water', eut: GTValues.VHA[GTValues.HV], oxygenated: null}
];
//#endregion
///////////////////////////////////////////////////////////////////////////////////////////////////////
//#region Utility Script
/**
* Function for generating pisciculture recipes.
*
* @param {*} event
* @param {Internal.Dimension|null} dimension -Dimension ID.
* @param {Internal.ItemStack|Internal.ItemStack[]} input -Input Item (roe, fish food, etc).
* @param {Internal.ItemStack|Internal.ItemStack[]} output -Output Items.
* @param {string} id -Recipe ID.
*/
function generatePiscicultureRecipe(event, dimension, input, output, id) {
// Resolve dimension based modifier defaults by comparing to the `pisciculture_dimension_index` array.
/** @type {DimensionIndex|null} */
const dimMods = dimension ? pisciculture_dimension_index.find(d => d.id === dimension) : null;
/** @type {Internal.FluidStackIngredient_} - Resolved fluid ID or tag. Defaults to `#tfg:clean_water` */
const resolvedFluid = dimMods?.fluid ?? '#tfg:clean_water';
/** @type {Internal.FluidStackIngredient_} - Resolved aquaponic loop fluid ID or tag. Defaults to `tfg:nitrate_rich_water` */
const resolvedFluidOut = dimMods?.fluid_out ?? 'tfg:nitrate_rich_water';
/** @type {GTValues.EUt} - Resolved EUt value. Defaults to LV EUt. */
const resolvedEUt = dimMods ? dimMods.eut : GTValues.VHA[GTValues.LV];
/** @type {number} - Resolved fluid chance multiplied by 100. Defaults to 1000. */
const resolvedChance = dimMods ? (dimMods.fluid_chance * 100) : 1000;
/** @type {boolean|null} - Whether the recipe requires an oxygenated environment. Defaults to true. */
const requiresOxygen = dimMods ? dimMods.oxygenated : true;
// Collect errors.
const errors = [];
if (input === undefined) {
errors.push("input is undefined");
};
if (output !== undefined && !Array.isArray(output)) {
output = [output];
}
if (output === undefined || output.length === 0 || output.length > 4) {
errors.push("output is undefined or has invalid length");
};
// If there are any errors, log them all and throw once.
if (errors.length > 0) {
throw new TypeError(`Pisciculture Fishery recipe errors for recipe ID ${`tfg:pisciculture_fishery/${id}`}\n - ${errors.join("\n - ")}`);
};
let a = event.recipes.gtceu.pisciculture_fishery(`tfg:${id}`)
.itemInputs(input)
.perTick(true)
.chancedFluidInput(`${resolvedFluid} 8`, resolvedChance, 0)
.chancedFluidOutput(`${resolvedFluidOut} 8`, resolvedChance, 0)
.perTick(false)
.itemOutputs(output)
.duration(pisciculture_base_duration)
.EUt(resolvedEUt);
if (dimension !== null) {
a.dimension(dimension)
};
if (requiresOxygen !== null) {
TFGRecipeSchemaBindings.isOxygenated(a, requiresOxygen)
};
};
//#endregion
/**
* @param {Internal.RecipesEventJS} event
*/
const registerTFGPiscicultureRecipes = (event) => {
//#region Multiblock Parts
// Pisciculture Fishery Controller
event.recipes.gtceu.shaped('tfg:pisciculture_fishery', [
'FBF',
'EAE',
'CDC'
], {
A: 'gtceu:hv_machine_hull',
B: 'tfg:machine_casing_aluminium_plated_steel',
C: '#gtceu:circuits/ev',
D: 'gtceu:stainless_steel_small_fluid_pipe',
E: 'gtceu:hv_electric_pump',
F: 'gtceu:fluid_filter'
}).addMaterialInfo().id('tfg:shaped/pisciculture_fishery');
// Pisciculture Core
event.recipes.gtceu.shaped('tfg:pisciculture_core', [
'CBC',
'DBD',
'CAC'
], {
A: 'gtceu:hv_rotor_holder',
B: 'gtceu:stainless_steel_rotor',
C: 'gtceu:inert_machine_casing',
D: ChemicalHelper.get(TagPrefix.ring, GTMaterials.PolyvinylChloride, 1)
}).addMaterialInfo().id('tfg:shaped/pisciculture_core');
//#endregion
//#region Recipes
global.FISH_INDEX.forEach(fish => {
// Bucket to Roe.
if (fish.parent !== null && fish.parent.includes('bucket')) {
generatePiscicultureRecipe(event,
fish.dimension, [
fish.parent,
fish.parent,
'6x #tfc:small_fishing_bait'
], [
`6x ${fish.item}`,
Item.of(`3x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
'2x minecraft:bucket'
],
`${linuxUnfucker(fish.id)}/basic_food/bucket_to_roe`
);
generatePiscicultureRecipe(event,
fish.dimension, [
fish.parent,
fish.parent,
'2x #tfg:advanced_fish_food'
], [
`12x ${fish.item}`,
Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
'2x minecraft:bucket'
],
`${linuxUnfucker(fish.id)}/advanced_food/bucket_to_roe`
);
} else {
generatePiscicultureRecipe(event,
fish.dimension, [
fish.parent,
fish.parent,
'6x #tfc:small_fishing_bait'
], [
`6x ${fish.item}`,
Item.of(`3x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT()
],
`${linuxUnfucker(fish.id)}/basic_food/parent_to_roe`
);
generatePiscicultureRecipe(event,
fish.dimension, [
fish.parent,
fish.parent,
'2x #tfg:advanced_fish_food'
], [
`12x ${fish.item}`,
Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT()
],
`${linuxUnfucker(fish.id)}/advanced_food/parent_to_roe`
);
};
// Roe to Roe.
generatePiscicultureRecipe(event,
fish.dimension, [
Item.of(`tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
Item.of(`tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
'6x #tfc:small_fishing_bait'
], [
`10x ${fish.item}`,
Item.of(`4x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT()
],
`${linuxUnfucker(fish.id)}/basic_food/roe_to_roe`
);
generatePiscicultureRecipe(event,
fish.dimension, [
Item.of(`tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
Item.of(`tfg:fish_roe`, {"mob_type": fish.id}).strongNBT(),
'2x #tfg:advanced_fish_food'
], [
`24x ${fish.item}`,
Item.of(`5x tfg:fish_roe`, {"mob_type": fish.id}).strongNBT()
],
`${linuxUnfucker(fish.id)}/advanced_food/roe_to_roe`
);
});
//#endregion
//#region Related Recipes
// Nitrate Rich Water Filtering
event.recipes.gtceu.electrolyzer('tfg:nitrate_rich_water_filtering')
.inputFluids(Fluid.of('tfg:nitrate_rich_water', 10000))
.outputFluids(
Fluid.of('minecraft:water', 8000),
Fluid.of('gtceu:ammonia', 1000)
)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Saltpeter, 1))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.HV]);
// Nitrate Rich Semiheavy Ammoniacal Water Filtering
event.recipes.gtceu.electrolyzer('tfg:nitrate_rich_semiheavy_ammoniacal_water_filtering')
.inputFluids(Fluid.of('tfg:nitrate_rich_semiheavy_ammoniacal_water', 10000))
.outputFluids(
Fluid.of('tfg:semiheavy_ammoniacal_water', 8000),
Fluid.of('gtceu:ammonia', 1000)
)
.itemOutputs(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Saltpeter, 1))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.HV]);
//#endregion
};

View file

@ -0,0 +1,56 @@
"use strict";
/**
* @param {Internal.TagEventJS} event
*/
const registerTFGAquaponicsItemTags = (event) => {
event.add('tfg:treated_wood_greenhouse_casings', 'firmalife:treated_wood_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:treated_wood_greenhouse_wall');
event.add('tfg:copper_greenhouse_casings', 'firmalife:copper_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:copper_greenhouse_wall');
event.add('tfg:iron_greenhouse_casings', 'firmalife:iron_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:iron_greenhouse_wall');
event.add('tfg:stainless_steel_greenhouse_casings', 'firmalife:stainless_steel_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:stainless_steel_greenhouse_wall');
event.add('tfc:foods/usable_in_salad', 'tfg:fish_roe');
event.add('tfc:foods/usable_in_jam_sandwich', 'tfg:fish_roe');
event.add('tfc:foods/usable_in_sandwich', 'tfg:fish_roe');
event.add('tfc:foods/can_be_salted', 'tfg:fish_roe');
event.add('tfc:foods', 'tfg:fish_roe');
event.add('firmalife:foods/raw_fish', 'tfg:fish_roe');
event.add('minecraft:fishes', 'tfg:fish_roe');
event.add('tfg:advanced_fish_food', 'tfg:flora_pellets');
event.add('create:blaze_burner_fuel/regular', "tfg:flora_pellets");
};
/**
* @param {Internal.TagEventJS} event
*/
const registerTFGAquaponicsBlockTags = (event) => {
event.add('tfg:treated_wood_greenhouse_casings', 'firmalife:treated_wood_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:treated_wood_greenhouse_wall');
event.add('tfg:copper_greenhouse_casings', 'firmalife:copper_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:copper_greenhouse_wall');
event.add('tfg:iron_greenhouse_casings', 'firmalife:iron_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:iron_greenhouse_wall');
event.add('tfg:stainless_steel_greenhouse_casings', 'firmalife:stainless_steel_greenhouse_wall');
event.add('tfg:all_greenhouse_casings', 'firmalife:stainless_steel_greenhouse_wall');
};
/**
* @param {Internal.TagEventJS} event
*/
const registerTFGAquaponicsFluidTags = (event) => {
event.add('tfg:pisciculture_fishery_fluids', 'minecraft:water')
event.add('tfg:pisciculture_fishery_fluids', 'tfc:salt_water')
event.add('tfg:pisciculture_fishery_fluids', 'tfg:semiheavy_ammoniacal_water')
};

View file

@ -1,5 +1,19 @@
"use strict";
/**
* @property {string[]} beneath_plants - List of Beneath plants to be added to the `tfg:plants/beneath` tag.
*/
const beneath_plants = [
'beneath:gleamflower',
'beneath:burpflower',
'minecraft:big_dripleaf',
'minecraft:small_dripleaf',
'minecraft:glow_lichen',
'minecraft:hanging_roots',
'minecraft:spore_blossom',
'#beneath:mushrooms'
];
function registerTFGBeneathItemTags(event) {
event.add("minecraft:piglin_loved", "gtceu:tiny_pyrite_dust");
@ -12,9 +26,12 @@ function registerTFGBeneathItemTags(event) {
event.add("minecraft:piglin_loved", "tfc:ore/rich_native_gold");
event.add('minecraft:piglin_loved', 'tfg:piglin_disguise')
event.add('tfc:plants', 'minecraft:spore_blossom')
event.remove('createaddition:plants', 'minecraft:moss_carpet')
beneath_plants.forEach(plant =>
event.add('tfg:plants/beneath', plant)
);
event.add('tfc:compost_greens', 'minecraft:red_mushroom_block')
event.add('tfc:compost_greens', 'minecraft:brown_mushroom_block')
event.add('tfc:compost_greens', 'minecraft:mushroom_stem')
@ -27,6 +44,13 @@ function registerTFGBeneathItemTags(event) {
function registerTFGBeneathBlockTags(event) {
event.add('tfg:lush_ground_replaceable', 'minecraft:deepslate')
event.add('tfg:lush_ground_replaceable', 'minecraft:blackstone')
event.remove('tfc:plants', 'beneath:gleamflower')
event.remove('tfc:plants', 'beneath:burpflower')
beneath_plants.forEach(plant =>
event.add('tfg:plants/beneath', plant)
);
event.add('minecraft:lush_ground_replaceable', 'minecraft:blackstone')
event.add('beneath:nether_bush_plantable_on', 'minecraft:blackstone')
@ -136,4 +160,4 @@ function registerTFGBeneathPlacedFeatures(event) {
event.add('tfg:nether_underground_decoration', 'minecraft:spring_open')
event.add('tfg:nether_underground_decoration', 'minecraft:spring_closed')
event.add('tfg:nether_underground_decoration', 'tfg:nether/terrain/magma_blob')
}
}

View file

@ -11,6 +11,7 @@ function registerTFCDataForTFG(event) {
registerTFGFLPlanters(event);
registerTFGFauna(event);
registerTFGEquipmentData(event);
registerTFGAquaponicsData(event);
}
//#region Heat Data
@ -54,6 +55,13 @@ function registerTFGHeatData(event) {
event.itemHeat('tfg:unfired_rod_mold', 1.0, null, null);
event.itemHeat('tfg:unfired_small_gear_mold', 1.0, null, null);
event.itemHeat('tfg:unfired_nugget_mold', 1.0, null, null);
event.itemHeat('betterend:charnia_orange', 0.25, null, null)
event.itemHeat('betterend:charnia_cyan', 0.25, null, null)
event.itemHeat('betterend:charnia_green', 0.25, null, null)
event.itemHeat('betterend:charnia_light_blue', 0.25, null, null)
event.itemHeat('betterend:charnia_purple', 0.25, null, null)
event.itemHeat('betterend:charnia_red', 0.25, null, null)
}
//#endregion
@ -330,6 +338,10 @@ function registerTFGItemSize(event) {
"medium",
"Molds"
)
//Universal Compost Bags
event.itemSize("tfg:universal_compost_browns_bag", "tiny", "medium")
event.itemSize("tfg:universal_compost_greens_bag", "tiny", "medium")
}
//#endregion

View file

@ -69,6 +69,12 @@ function registerTFGEquipmentData(event) {
13,
13,
15
)
event.itemDamageResistance(
'minecraft:netherite_boots',
13,
13,
15
)
event.itemDamageResistance(
'create:netherite_diving_boots',

View file

@ -49,4 +49,18 @@ function registerTFGEquipmentItemTags(event) {
event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_leggings')
event.add('ad_astra:heat_resistant_armor', 'gtceu:quarktech_boots')
event.add('tfc:deals_crushing_damage', '#forge:tools/mining_hammers')
event.add('tfc:deals_crushing_damage', '#minecraft:shovels')
event.add('tfc:deals_crushing_damage', '#forge:tools/spades')
event.add('tfc:deals_crushing_damage', '#forge:tools/wrenches')
event.add('tfc:deals_slashing_damage', '#forge:tools/chainsaws')
event.add('tfc:deals_slashing_damage', '#forge:tools/saws')
event.add('tfc:deals_slashing_damage', '#forge:tools/butchery_knives')
event.add('tfc:deals_slashing_damage', '#forge:tools/files')
event.add('tfc:deals_piercing_damage', '#minecraft:pickaxes')
event.add('tfc:deals_piercing_damage', '#forge:tools/drills')
event.add('tfc:deals_piercing_damage', '#forge:tools/screwdrivers')
event.add('tfc:deals_piercing_damage', '#minecraft:hoes')
event.add('tfc:deals_piercing_damage', '#forge:tools/crowbars')
event.add('tfc:deals_piercing_damage', '#forge:tools/wire_cutters')
}

View file

@ -1,254 +1,3 @@
/**
* @typedef {Object} BrickVariant
* @property {string} brick_type - The name of the brick variant.
* @property {string|null} brick - Main brick block ID.
* @property {string|null} brick_stairs - Brick stairs block ID.
* @property {string|null} brick_slab - Brick slab block ID.
* @property {string|null} brick_wall - Brick wall block ID.
* @property {string|null} cracked_brick - Cracked brick block ID.
* @property {string|null} cracked_stairs - Cracked brick stairs block ID.
* @property {string|null} cracked_slab - Cracked brick slab block ID.
* @property {string|null} cracked_wall - Cracked brick wall block ID.
* @property {string|null} mossy_brick - Mossy brick block ID.
* @property {string|null} mossy_stairs - Mossy brick stairs block ID.
* @property {string|null} mossy_slab - Mossy brick slab block ID.
* @property {string|null} mossy_wall - Mossy brick wall block ID.
* @property {string|null} smooth_brick - Smooth brick block ID.
* @property {string|null} smooth_stairs - Smooth brick stairs block ID.
* @property {string|null} smooth_slab - Smooth brick slab block ID.
* @property {string|null} smooth_wall - Smooth brick wall block ID.
* @property {string|null} chiseled_brick - Chiseled brick block ID.
*/
const AA_REGULAR_STONES = ['moon', 'mars', 'venus', 'mercury', 'glacio']
// #region BRICK_INDEX
/** @type {BrickVariant[]} */
global.BRICK_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({
brick_type: tfc_stone,
brick: `tfc:rock/bricks/${tfc_stone}`, brick_stairs: `tfc:rock/bricks/${tfc_stone}_stairs`, brick_slab: `tfc:rock/bricks/${tfc_stone}_slab`, brick_wall: `tfc:rock/bricks/${tfc_stone}_wall`,
cracked_brick: `tfc:rock/cracked_bricks/${tfc_stone}`, cracked_stairs: `tfc:rock/cracked_bricks/${tfc_stone}_stairs`, cracked_slab: `tfc:rock/cracked_bricks/${tfc_stone}_slab`, cracked_wall: `tfc:rock/cracked_bricks/${tfc_stone}_wall`,
mossy_brick: `tfc:rock/mossy_bricks/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_bricks/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_bricks/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_bricks/${tfc_stone}_wall`,
smooth_brick: `tfc:rock/smooth/${tfc_stone}`, smooth_stairs: `tfc:rock/smooth/${tfc_stone}_stairs`, smooth_slab: `tfc:rock/smooth/${tfc_stone}_slab`, smooth_wall: `tfc:rock/smooth/${tfc_stone}_wall`,
chiseled_brick: `tfc:rock/chiseled/${tfc_stone}`
}));
(global.CREATE_DECO_BRICK_TYPES ? global.CREATE_DECO_BRICK_TYPES : []).slice(0, -1).forEach(create_brick => {
global.BRICK_INDEX.push({
brick_type: create_brick,
brick: `createdeco:${create_brick}_bricks`, brick_stairs: `createdeco:${create_brick}_brick_stairs`, brick_slab: `createdeco:${create_brick}_brick_slab`, brick_wall: `createdeco:${create_brick}_brick_wall`,
cracked_brick: `createdeco:cracked_${create_brick}_bricks`, cracked_stairs: `createdeco:cracked_${create_brick}_brick_stairs`, cracked_slab: `createdeco:cracked_${create_brick}_brick_slab`, cracked_wall: `createdeco:cracked_${create_brick}_brick_wall`,
mossy_brick: `createdeco:mossy_${create_brick}_bricks`, mossy_stairs: `createdeco:mossy_${create_brick}_brick_stairs`, mossy_slab: `createdeco:mossy_${create_brick}_brick_slab`, mossy_wall: `createdeco:mossy_${create_brick}_brick_wall`,
smooth_brick: `createdeco:corner_${create_brick}_bricks`, smooth_stairs: `createdeco:corner_${create_brick}_brick_stairs`, smooth_slab: `createdeco:corner_${create_brick}_brick_slab`, smooth_wall: `createdeco:corner_${create_brick}_brick_wall`,
chiseled_brick: `createdeco:tiled_${create_brick}_bricks`
})
});
global.BRICK_INDEX = global.BRICK_INDEX.concat([
// { brick_type: '',
// brick: '', brick_stairs: '', brick_slab: '', brick_wall: '',
// cracked_brick: '', cracked_stairs: '', cracked_slab: '', cracked_wall: '',
// mossy_brick: '', mossy_stairs: '', mossy_slab: '', mossy_wallL: '',
// smooth_brick: '', smooth_stairs: '', smooth_slab: '', smooth_wall: '',
// chiseled_brick: '' },
{
brick_type: 'red',
brick: 'minecraft:bricks', brick_stairs: 'minecraft:brick_stairs', brick_slab: 'minecraft:brick_slab', brick_wall: 'minecraft:brick_wall',
cracked_brick: 'createdeco:cracked_red_bricks', cracked_stairs: 'createdeco:cracked_red_brick_stairs', cracked_slab: 'createdeco:cracked_red_brick_slab', cracked_wall: 'createdeco:cracked_red_brick_wall',
mossy_brick: 'createdeco:mossy_red_bricks', mossy_stairs: 'createdeco:mossy_red_brick_stairs', mossy_slab: 'createdeco:mossy_red_brick_slab', mossy_wall: 'createdeco:mossy_red_brick_wall',
smooth_brick: 'createdeco:corner_red_bricks', smooth_stairs: 'createdeco:corner_red_brick_stairs', smooth_slab: 'createdeco:corner_red_brick_slab', smooth_wall: 'createdeco:corner_red_brick_wall',
chiseled_brick: 'createdeco:tiled_red_bricks'
},
{
brick_type: 'light_concrete',
brick: 'gtceu:light_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null,
cracked_brick: 'gtceu:cracked_light_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null,
mossy_brick: 'gtceu:mossy_light_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null,
smooth_brick: 'gtceu:polished_light_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null,
chiseled_brick: 'gtceu:chiseled_light_concrete'
},
{
brick_type: 'dark_concrete',
brick: 'gtceu:dark_concrete_bricks', brick_stairs: null, brick_slab: null, brick_wall: null,
cracked_brick: 'gtceu:cracked_dark_concrete_bricks', cracked_stairs: null, cracked_slab: null, cracked_wall: null,
mossy_brick: 'gtceu:mossy_dark_concrete_bricks', mossy_stairs: null, mossy_slab: null, mossy_wall: null,
smooth_brick: 'gtceu:polished_dark_concrete', smooth_stairs: null, smooth_slab: null, smooth_wall: null,
chiseled_brick: 'gtceu:chiseled_dark_concrete'
},
{
brick_type: 'deepslate',
brick: 'minecraft:deepslate_bricks', brick_stairs: 'minecraft:deepslate_brick_stairs', brick_slab: 'minecraft:deepslate_brick_slab', brick_wall: 'minecraft:deepslate_brick_wall',
cracked_brick: 'minecraft:cracked_deepslate_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_deepslate_slab', cracked_wall: 'tfg:rock/cracked_bricks_deepslate_wall',
mossy_brick: 'tfg:rock/mossy_bricks_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_deepslate_slab', mossy_wall: 'tfg:rock/mossy_bricks_deepslate_wall',
smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall',
chiseled_brick: 'minecraft:chiseled_deepslate'
},
{
brick_type: 'deepslate_tiles',
brick: 'minecraft:deepslate_tiles', brick_stairs: 'minecraft:deepslate_tile_stairs', brick_slab: 'minecraft:deepslate_tile_slab', brick_wall: 'minecraft:deepslate_tile_wall',
cracked_brick: 'minecraft:cracked_deepslate_tiles', cracked_stairs: 'tfg:rock/cracked_tiles_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_tiles_deepslate_slab', cracked_wall: 'tfg:rock/cracked_tiles_deepslate_wall',
mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null,
smooth_brick: 'minecraft:polished_deepslate', smooth_stairs: 'minecraft:polished_deepslate_stairs', smooth_slab: 'minecraft:polished_deepslate_slab', smooth_wall: 'minecraft:polished_deepslate_wall',
chiseled_brick: 'minecraft:chiseled_deepslate'
},
{
brick_type: 'blackstone',
brick: 'minecraft:polished_blackstone_bricks', brick_stairs: 'minecraft:polished_blackstone_brick_stairs', brick_slab: 'minecraft:polished_blackstone_brick_slab', brick_wall: 'minecraft:polished_blackstone_brick_wall',
cracked_brick: 'minecraft:cracked_polished_blackstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_blackstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_blackstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_blackstone_wall',
mossy_brick: 'tfg:rock/mossy_bricks_blackstone', mossy_stairs: 'tfg:rock/mossy_bricks_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_blackstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_blackstone_wall',
smooth_brick: 'minecraft:polished_blackstone', smooth_stairs: 'minecraft:polished_blackstone_stairs', smooth_slab: 'minecraft:polished_blackstone_slab', smooth_wall: 'minecraft:polished_blackstone_wall',
chiseled_brick: 'minecraft:chiseled_polished_blackstone'
},
{
brick_type: 'dripstone',
brick: 'create:cut_dripstone_bricks', brick_stairs: 'create:cut_dripstone_brick_stairs', brick_slab: 'create:cut_dripstone_brick_slab', brick_wall: 'create:cut_dripstone_brick_wall',
cracked_brick: 'tfg:rock/cracked_bricks_dripstone', cracked_stairs: 'tfg:rock/cracked_bricks_dripstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_dripstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_dripstone_wall',
mossy_brick: 'tfg:rock/mossy_bricks_dripstone', mossy_stairs: 'tfg:rock/mossy_bricks_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_bricks_dripstone_slab', mossy_wall: 'tfg:rock/mossy_bricks_dripstone_wall',
smooth_brick: 'create:polished_cut_dripstone', smooth_stairs: 'create:polished_cut_dripstone_stairs', smooth_slab: 'create:polished_cut_dripstone_slab', smooth_wall: 'create:polished_cut_dripstone_wall',
chiseled_brick: 'create:small_dripstone_bricks'
},
{
brick_type: 'crackrack',
brick: 'minecraft:nether_bricks', brick_stairs: 'minecraft:nether_bricks_stairs', brick_slab: 'minecraft:nether_bricks_slab', brick_wall: 'minecraft:nether_bricks_wall',
cracked_brick: 'minecraft:cracked_nether_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_nether_stairs', cracked_slab: 'tfg:rock/cracked_bricks_nether_slab', cracked_wall: 'tfg:rock/cracked_bricks_nether_wall',
mossy_brick: 'tfg:rock/mossy_bricks_nether', mossy_stairs: 'tfg:rock/mossy_bricks_nether_stairs', mossy_slab: 'tfg:rock/mossy_bricks_nether_slab', mossy_wall: 'tfg:rock/mossy_bricks_nether_wall',
smooth_brick: 'tfg:rock/polished_crackrack', smooth_stairs: 'tfg:rock/polished_crackrack_stairs', smooth_slab: 'tfg:rock/polished_crackrack_slab', smooth_wall: 'tfg:rock/polished_crackrack_wall',
chiseled_brick: 'minecraft:chiseled_nether_bricks'
},
{
brick_type: 'moon_deepslate',
brick: 'tfg:rock/bricks_moon_deepslate', brick_stairs: 'tfg:rock/bricks_moon_deepslate_stairs', brick_slab: 'tfg:rock/bricks_moon_deepslate_slab', brick_wall: 'tfg:rock/bricks_moon_deepslate_wall',
cracked_brick: 'tfg:rock/cracked_bricks_moon_deepslate', cracked_stairs: 'tfg:rock/cracked_bricks_moon_deepslate_stairs', cracked_slab: 'tfg:rock/cracked_bricks_moon_slab', cracked_wall: 'tfg:rock/cracked_bricks_moon_wall',
mossy_brick: 'tfg:rock/mossy_bricks_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_bricks_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_bricks_moon_slab', mossy_wall: 'tfg:rock/mossy_bricks_moon_deepslate_wall',
smooth_brick: 'tfg:rock/polished_moon_deepslate', smooth_stairs: 'tfg:rock/polished_moon_deepslate_stairs', smooth_slab: 'ad_astra:polished_moon_stone_slab', smooth_wall: 'tfg:rock/polished_moon_deepslate_wall',
chiseled_brick: 'tfg:rock/chiseled_bricks_moon_deepslate'
},
{
brick_type: 'permafrost',
brick: 'ad_astra:permafrost_bricks', brick_stairs: 'ad_astra:permafrost_brick_stairs', brick_slab: 'ad_astra:permafrost_brick_slab', brick_wall: 'ad_astra:permafrost_brick_wall',
cracked_brick: 'ad_astra:cracked_permafrost_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_permafrost_stairs', cracked_slab: 'tfg:rock/cracked_bricks_permafrost_slab', cracked_wall: 'tfg:rock/cracked_bricks_permafrost_wall',
mossy_brick: 'tfg:rock/mossy_bricks_permafrost', mossy_stairs: 'tfg:rock/mossy_bricks_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_bricks_permafrost_slab', mossy_wall: 'tfg:rock/mossy_bricks_permafrost_wall',
smooth_brick: 'ad_astra:polished_permafrost', smooth_stairs: 'ad_astra:polished_permafrost_stairs', smooth_slab: 'ad_astra:polished_permafrost_slab', smooth_wall: 'tfg:rock/polished_permafrost_wall',
chiseled_brick: 'ad_astra:chiseled_permafrost_bricks'
},
{
brick_type: 'red_granite',
brick: 'gtceu:red_granite_bricks', brick_stairs: 'tfg:rock/bricks_red_granite_stairs', brick_slab: 'tfg:rock/bricks_red_granite_slab', brick_wall: 'tfg:rock/bricks_red_granite_wall',
cracked_brick: 'gtceu:cracked_red_granite_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_red_granite_stairs', cracked_slab: 'tfg:rock/cracked_bricks_red_granite_slab', cracked_wall: 'tfg:rock/cracked_bricks_red_granite_wall',
mossy_brick: 'gtceu:mossy_red_granite_bricks', mossy_stairs: 'tfg:rock/mossy_bricks_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_bricks_red_granite_slab', mossy_wall: 'tfg:rock/mossy_bricks_red_granite_wall',
smooth_brick: 'gtceu:polished_red_granite', smooth_stairs: 'tfg:rock/polished_red_granite_stairs', smooth_slab: 'tfg:rock/polished_red_granite_slab', smooth_wall: 'tfg:rock/polished_red_granite_wall',
chiseled_brick: 'gtceu:chiseled_red_granite'
},
{
brick_type: 'venus_sandstone',
brick: 'ad_astra:venus_sandstone_bricks', brick_stairs: 'ad_astra:venus_sandstone_brick_stairs', brick_slab: 'ad_astra:venus_sandstone_brick_slab', brick_wall: 'tfg:rock/bricks_venus_sandstone_wall',
cracked_brick: 'ad_astra:cracked_venus_sandstone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_venus_sandstone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_venus_sandstone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall',
mossy_brick: null, mossy_stairs: null, mossy_slab: null, mossy_wall: null,
smooth_brick: null, smooth_stairs: null, smooth_slab: null, smooth_wall: null,
chiseled_brick: null
},
{
brick_type: 'stone',
brick: 'minecraft:stone_bricks', brick_stairs: 'minecraft:stone_brick_stairs', brick_slab: 'minecraft:stone_brick_slab', brick_wall: 'minecraft:stone_brick_wall',
cracked_brick: 'minecraft:cracked_stone_bricks', cracked_stairs: 'tfg:rock/cracked_bricks_stone_stairs', cracked_slab: 'tfg:rock/cracked_bricks_stone_slab', cracked_wall: 'tfg:rock/cracked_bricks_stone_wall',
mossy_brick: 'minecraft:mossy_stone_bricks', mossy_stairs: 'minecraft:mossy_stone_brick_stairs', mossy_slab: 'minecraft:mossy_stone_brick_slab', mossy_wall: 'minecraft:mossy_stone_brick_wall',
smooth_brick: 'minecraft:smooth_stone', smooth_stairs: 'tfg:rock/smooth_stone_stairs', smooth_slab: 'minecraft:smooth_stone_slab', smooth_wall: 'tfg:rock/smooth_stone_wall',
chiseled_brick: 'minecraft:chiseled_stone_bricks'
}
]);
global.BRICK_INDEX = global.BRICK_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => (
{
brick_type: stone,
brick: `ad_astra:${stone}_stone_bricks`, brick_stairs: `ad_astra:${stone}_stone_brick_stairs`, brick_slab: `ad_astra:${stone}_stone_brick_slab`, brick_wall: `ad_astra:${stone}_stone_brick_wall`,
cracked_brick: `ad_astra:cracked_${stone}_stone_bricks`, cracked_stairs: `tfg:rock/cracked_bricks_${stone}_stairs`, cracked_slab: `tfg:rock/cracked_bricks_${stone}_slab`, cracked_wall: `tfg:rock/cracked_bricks_${stone}_wall`,
mossy_brick: `tfg:rock/mossy_bricks_${stone}`, mossy_stairs: `tfg:rock/mossy_bricks_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_bricks_${stone}_slab`, mossy_wall: `tfg:rock/mossy_bricks_${stone}_wall`,
smooth_brick: `ad_astra:polished_${stone}_stone`, smooth_stairs: `ad_astra:polished_${stone}_stone_stairs`, smooth_slab: `ad_astra:polished_${stone}_stone_slab`, smooth_wall: `tfg:rock/polished_${stone}_wall`,
chiseled_brick: `ad_astra:chiseled_${stone}_stone_bricks`
}
)))
// #endregion BRICK_INDEX
// #region COBBLE_INDEX
global.COBBLE_INDEX = (global.TFC_STONE_TYPES ? global.TFC_STONE_TYPES : []).map(tfc_stone => ({
cobble_type: tfc_stone,
block: `tfc:rock/cobble/${tfc_stone}`, stairs: `tfc:rock/cobble/${tfc_stone}_stairs`, slab: `tfc:rock/cobble/${tfc_stone}_slab`, wall: `tfc:rock/cobble/${tfc_stone}_wall`,
mossy_block: `tfc:rock/mossy_cobble/${tfc_stone}`, mossy_stairs: `tfc:rock/mossy_cobble/${tfc_stone}_stairs`, mossy_slab: `tfc:rock/mossy_cobble/${tfc_stone}_slab`, mossy_wall: `tfc:rock/mossy_cobble/${tfc_stone}_wall`
}));
global.COBBLE_INDEX = global.COBBLE_INDEX.concat([
{
cobble_type: 'deepslate',
block: 'minecraft:cobbled_deepslate', stairs: 'minecraft:cobbled_deepslate_stairs', slab: 'minecraft:cobbled_deepslate_slab', wall: 'minecraft:cobbled_deepslate_wall',
mossy_block: 'tfg:rock/mossy_cobble_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_deepslate_wall'
},
{
cobble_type: 'blackstone',
block: 'tfg:rock/cobble_blackstone', stairs: 'tfg:rock/cobble_blackstone_stairs', slab: 'tfg:rock/cobble_blackstone_slab', wall: 'tfg:rock/cobble_blackstone_wall',
mossy_block: 'tfg:rock/mossy_cobble_blackstone', mossy_stairs: 'tfg:rock/mossy_cobble_blackstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_blackstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_blackstone_wall'
},
{
cobble_type: 'dripstone',
block: 'tfg:rock/cobble_dripstone', stairs: 'tfg:rock/cobble_dripstone_stairs', slab: 'tfg:rock/cobble_dripstone_slab', wall: 'tfg:rock/cobble_dripstone_wall',
mossy_block: 'tfg:rock/mossy_cobble_dripstone', mossy_stairs: 'tfg:rock/mossy_cobble_dripstone_stairs', mossy_slab: 'tfg:rock/mossy_cobble_dripstone_slab', mossy_wall: 'tfg:rock/mossy_cobble_dripstone_wall'
},
{
cobble_type: 'crackrack',
block: 'tfg:rock/cobble_crackrack', stairs: 'tfg:rock/cobble_crackrack_stairs', slab: 'tfg:rock/cobble_crackrack_slab', wall: 'tfg:rock/cobble_crackrack_wall',
mossy_block: 'tfg:rock/mossy_cobble_crackrack', mossy_stairs: 'tfg:rock/mossy_cobble_crackrack_stairs', mossy_slab: 'tfg:rock/mossy_cobble_crackrack_slab', mossy_wall: 'tfg:rock/mossy_cobble_crackrack_wall'
},
{
cobble_type: 'moon_deepslate',
block: 'tfg:rock/cobble_moon_deepslate', stairs: 'tfg:rock/cobble_moon_deepslate_stairs', slab: 'tfg:rock/cobble_moon_deepslate_slab', wall: 'tfg:rock/cobble_moon_deepslate_wall',
mossy_block: 'tfg:rock/mossy_cobble_moon_deepslate', mossy_stairs: 'tfg:rock/mossy_cobble_moon_deepslate_stairs', mossy_slab: 'tfg:rock/mossy_cobble_moon_deepslate_slab', mossy_wall: 'tfg:rock/mossy_cobble_moon_deepslate_wall'
},
{
cobble_type: 'permafrost',
block: 'tfg:rock/cobble_permafrost', stairs: 'tfg:rock/cobble_permafrost_stairs', slab: 'tfg:rock/cobble_permafrost_slab', wall: 'tfg:rock/cobble_permafrost_wall',
mossy_block: 'tfg:rock/mossy_cobble_permafrost', mossy_stairs: 'tfg:rock/mossy_cobble_permafrost_stairs', mossy_slab: 'tfg:rock/mossy_cobble_permafrost_slab', mossy_wall: 'tfg:rock/mossy_cobble_permafrost_wall'
},
{
cobble_type: 'red_granite',
block: 'gtceu:red_granite_cobblestone', stairs: 'tfg:rock/cobble_red_granite_stairs', slab: 'tfg:rock/cobble_red_granite_slab', wall: 'tfg:rock/cobble_red_granite_wall',
mossy_block: 'gtceu:mossy_red_granite_cobblestone', mossy_stairs: 'tfg:rock/mossy_cobble_red_granite_stairs', mossy_slab: 'tfg:rock/mossy_cobble_red_granite_slab', mossy_wall: 'tfg:rock/mossy_cobble_red_granite_wall'
},
{
cobble_type: 'stone',
block: 'minecraft:cobblestone', stairs: 'minecraft:cobblestone_stairs', slab: 'minecraft:cobblestone_slab', wall: 'minecraft:cobblestone_wall',
mossy_block: 'minecraft:mossy_cobblestone', mossy_stairs: 'minecraft:mossy_cobblestone_stairs', mossy_slab: 'minecraft:mossy_cobblestone_slab', mossy_wall: 'minecraft:mossy_cobblestone_wall'
}
]);
global.COBBLE_INDEX = global.COBBLE_INDEX.concat((AA_REGULAR_STONES ? AA_REGULAR_STONES : []).map(stone => (
{
cobble_type: stone,
block: `ad_astra:${stone}_cobblestone`, stairs: `ad_astra:${stone}_cobblestone_stairs`, slab: `ad_astra:${stone}_cobblestone_slab`, wall: `tfg:rock/cobble_${stone}_wall`,
mossy_block: `tfg:rock/mossy_cobble_${stone}`, mossy_stairs: `tfg:rock/mossy_cobble_${stone}_stairs`, mossy_slab: `tfg:rock/mossy_cobble_${stone}_slab`, mossy_wall: `tfg:rock/mossy_cobble_${stone}_wall`
}
)))
// #endregion COBBLE_INDEX
/**
* Function for replacing a block with another block by crouch-right-clicking with a tool.
*
@ -408,85 +157,84 @@ function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeI
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`)
};
// ================================================
// Looking to add a recipe to JEI? It's in TFG-Core
// ================================================
// Declare Events
BlockEvents.rightClicked(event => {
//Brick index events
for (const b of global.BRICK_INDEX) {
//brick -> cracked
transformBlockWithTool(event, b.brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.brick_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.brick_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.brick_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
//brick -> mossy
transformBlockWithItem(event, b.brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.brick_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//cracked -> mossy
transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_stairs, b.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_slab, b.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.cracked_wall, b.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//mossy -> cracked
transformBlockWithTool(event, b.mossy_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.mossy_stairs, b.cracked_stairs, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.mossy_slab, b.cracked_slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, b.mossy_wall, b.cracked_wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
//mossy -> brick
transformBlockWithTool(event, b.mossy_brick, b.brick, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.mossy_brick, b.brick, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, b.mossy_stairs, b.brick_stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.mossy_stairs, b.brick_stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, b.mossy_slab, b.brick_slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.mossy_slab, b.brick_slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, b.mossy_wall, b.brick_wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.mossy_wall, b.brick_wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
//cracked -> brick
transformBlockWithItem(event, b.cracked_brick, b.brick, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, b.cracked_stairs, b.brick_stairs, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, b.cracked_slab, b.brick_slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, b.cracked_wall, b.brick_wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
// brick -> smooth
transformBlockWithTool(event, b.brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
transformBlockWithTool(event, b.mossy_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
transformBlockWithTool(event, b.cracked_brick, b.smooth_brick, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
// smooth -> brick
transformBlockWithTool(event, b.smooth_brick, b.cracked_brick, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, b.smooth_brick, b.mossy_brick, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithTool(event, b.smooth_brick, b.brick, '#forge:tools/files', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
for (let [rockId, rock] of Object.entries(global.BIG_ROCK_TABLE)) {
if (rock.bricks != null) {
if (rock.bricks.cracked != null) {
//brick -> cracked
transformBlockWithTool(event, rock.bricks.block, rock.bricks.cracked.block, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.stair, rock.bricks.cracked.stair, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.slab, rock.bricks.cracked.slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.wall, rock.bricks.cracked.wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
//cracked -> brick
transformBlockWithItem(event, rock.bricks.cracked.block, rock.bricks.block, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, rock.bricks.cracked.stair, rock.bricks.stair, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, rock.bricks.cracked.slab, rock.bricks.slab, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
transformBlockWithItem(event, rock.bricks.cracked.wall, rock.bricks.wall, 'tfc:mortar', true, 1, 'minecraft:item.ink_sac.use', 'minecraft:effect', true);
}
if (rock.bricks.mossy != null) {
//brick -> mossy
transformBlockWithItem(event, rock.bricks.block, rock.bricks.mossy.block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.stair, rock.bricks.mossy.stair, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.slab, rock.bricks.mossy.slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.wall, rock.bricks.mossy.wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//mossy -> brick
transformBlockWithTool(event, rock.bricks.mossy.block, rock.bricks.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.mossy.block, rock.bricks.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.bricks.mossy.stair, rock.bricks.stair, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.mossy.stair, rock.bricks.stair, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.bricks.mossy.slab, rock.bricks.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.mossy.slab, rock.bricks.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.bricks.mossy.wall, rock.bricks.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.mossy.wall, rock.bricks.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
}
if (rock.bricks.cracked != null && rock.bricks.mossy != null) {
//cracked -> mossy
transformBlockWithItem(event, rock.bricks.cracked.block, rock.bricks.mossy.block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.cracked.stair, rock.bricks.mossy.stair, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.cracked.slab, rock.bricks.mossy.slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.bricks.cracked.wall, rock.bricks.mossy.wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//mossy -> cracked
transformBlockWithTool(event, rock.bricks.mossy.block, rock.bricks.cracked.block, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.mossy.stair, rock.bricks.cracked.stair, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.mossy.slab, rock.bricks.cracked.slab, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
transformBlockWithTool(event, rock.bricks.mossy.wall, rock.bricks.cracked.wall, '#forge:tools/hammers', true, 'minecraft:block.copper.hit', 'minecraft:crit', true);
}
if (rock.polished != null) {
// brick -> smooth
transformBlockWithTool(event, rock.bricks.block, rock.polished.block, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
if (rock.bricks.mossy != null) {
transformBlockWithTool(event, rock.bricks.mossy.block, rock.polished.block, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
}
if (rock.bricks.cracked != null) {
transformBlockWithTool(event, rock.bricks.cracked.block, rock.polished.block, '#create:sandpaper', true, 'create:sanding_short', 'minecraft:crit', true);
}
}
}
if (rock.cobble != null && rock.cobble.mossy) {
//cobble -> mossy
transformBlockWithItem(event, rock.cobble.block, rock.cobble.mossy.block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.stair, rock.cobble.mossy.stair, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.slab, rock.cobble.mossy.slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.wall, rock.cobble.mossy.wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//mossy -> cobble
transformBlockWithTool(event, rock.cobble.mossy.block, rock.cobble.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.mossy.block, rock.cobble.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.cobble.mossy.stair, rock.cobble.stair, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.mossy.stair, rock.cobble.stair, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.cobble.mossy.slab, rock.cobble.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.mossy.slab, rock.cobble.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, rock.cobble.mossy.wall, rock.cobble.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, rock.cobble.mossy.wall, rock.cobble.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
}
}
//Cobble index events
for (const c of global.COBBLE_INDEX) {
//cobble -> mossy
transformBlockWithItem(event, c.block, c.mossy_block, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.block, c.mossy_block, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.stairs, c.mossy_stairs, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.stairs, c.mossy_stairs, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.slab, c.mossy_slab, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.slab, c.mossy_slab, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.wall, c.mossy_wall, '#tfc:compost_greens_low', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.wall, c.mossy_wall, 'gtceu:plant_ball', true, 1, 'minecraft:block.moss.hit', 'minecraft:item_slime', true);
//mossy -> cobble
transformBlockWithTool(event, c.mossy_block, c.block, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.mossy_block, c.block, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, c.mossy_stairs, c.stairs, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.mossy_stairs, c.stairs, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, c.mossy_slab, c.slab, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.mossy_slab, c.slab, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithTool(event, c.mossy_wall, c.wall, '#forge:tools/knives', true, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
transformBlockWithItem(event, c.mossy_wall, c.wall, 'tfc:groundcover/pumice', true, 1, 'minecraft:item.axe.wax_off', 'minecraft:item_slime', true);
}
//Misc Events
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool_frame', 'tfg:glacian_wool', true, 2, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:glacian_wool_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:glacian_wool', 2,'#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
@ -500,6 +248,12 @@ BlockEvents.rightClicked(event => {
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:impure_moderate_core_frame', 'tfg:impure_graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:impure_moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:impure_graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:copper_sandy_frame', 'tfg:copper_sandy', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:copper_sandy_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:copper_sandy', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:beryllium_sandy_frame', 'tfg:beryllium_sandy', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:beryllium_sandy_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:beryllium_sandy', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
});
// Makes scythes, hoes, and knives take damage when cutting grass

View file

@ -1,14 +1,15 @@
"use strict";
// TODO
TFGServerEvents.dimensionalPowerConsumption(event => {
event["add(java.lang.String,double)"]("minecraft:overworld", 10000);
event["add(java.lang.String,double)"]("minecraft:the_nether", 20000);
event["add(java.lang.String,double)"]("ad_astra:earth_orbit", 20000);
event["add(java.lang.String,double)"]("ad_astra:moon", 50000);
event["add(java.lang.String,double)"]("ad_astra:moon_orbit", 50000);
event["add(java.lang.String,double)"]("ad_astra:mars", 100000);
event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000);
event.add("minecraft:overworld", 10000);
event.add("minecraft:the_nether", 20000);
event.add("ad_astra:earth_orbit", 20000);
event.add("ad_astra:moon", 50000);
event.add("ad_astra:moon_orbit", 50000);
event.add("ad_astra:mars", 100000);
event.add("ad_astra:mars_orbit", 100000);
event.add("ad_astra:venus", 200000);
event.add("ad_astra:venus_orbit", 200000);
});
// Vase Sounds

View file

@ -159,7 +159,7 @@ function registerTFGFoodData(event) {
});
event.foodItem("tfg:food/cooked_long_pig_filet", (food) => {
food.hunger(2);
food.hunger(4);
food.saturation(2);
food.protein(2);
food.decayModifier(2.25);

View file

@ -3,6 +3,8 @@
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFLPlanters(event) {
const $FarmlandBlockEntity = Java.loadClass("net.dries007.tfc.common.blockentities.FarmlandBlockEntity")
event.firmalifePlantable(
"tfg:sunflower_seeds",
"large",
@ -11,7 +13,7 @@ function registerTFGFLPlanters(event) {
0.15,
"tfg:sunflower_seeds",
"tfg:sunflower_product",
"nitrogen",
$FarmlandBlockEntity.NutrientType.NITROGEN,
[
"tfg:block/crop/sunflower_greenhouse_0",
"tfg:block/crop/sunflower_greenhouse_1",
@ -29,7 +31,7 @@ function registerTFGFLPlanters(event) {
0.15,
"tfg:rapeseed_seeds",
"tfg:rapeseed_product",
"phosphorous",
$FarmlandBlockEntity.NutrientType.PHOSPHOROUS,
[
"tfg:block/crop/rapeseed_greenhouse_0",
"tfg:block/crop/rapeseed_greenhouse_1",
@ -47,7 +49,7 @@ function registerTFGFLPlanters(event) {
0.2,
"tfg:flax_seeds",
"tfg:flax_product",
"nitrogen",
$FarmlandBlockEntity.NutrientType.NITROGEN,
[
"tfg:block/crop/flax_age_0",
"tfg:block/crop/flax_age_1",
@ -65,7 +67,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:amber_root_seeds",
"betterend:amber_root_product",
"phosphorous",
$FarmlandBlockEntity.NutrientType.PHOSPHOROUS,
[
"betterend:block/amber_root_0",
"betterend:block/amber_root_1",
@ -83,7 +85,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:blossom_berry_seeds",
"betterend:blossom_berry_product",
"potassium",
$FarmlandBlockEntity.NutrientType.POTASSIUM,
[
"betterend:block/blossom_berry_seed_0",
"betterend:block/blossom_berry_seed_1",
@ -101,7 +103,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:bolux_mushroom_seeds",
"betterend:bolux_mushroom_product",
"phosphorous",
$FarmlandBlockEntity.NutrientType.PHOSPHOROUS,
[
"betterend:block/bolux_mushroom_greenhouse_0",
"betterend:block/bolux_mushroom_greenhouse_1",
@ -119,7 +121,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:chorus_mushroom_seeds",
"betterend:chorus_mushroom_product",
"phosphorous",
$FarmlandBlockEntity.NutrientType.PHOSPHOROUS,
[
"betterend:block/chorus_mushroom_0",
"betterend:block/chorus_mushroom_1",
@ -137,7 +139,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:cave_pumpkin_plant_seeds",
"betterend:cave_pumpkin",
"phosphorous",
$FarmlandBlockEntity.NutrientType.PHOSPHOROUS,
[
"betterend:block/cave_pumpkin_greenhouse_0",
"betterend:block/cave_pumpkin_greenhouse_1",
@ -155,7 +157,7 @@ function registerTFGFLPlanters(event) {
0.15,
"betterend:shadow_berry_seeds",
"betterend:shadow_berry_product",
"potassium",
$FarmlandBlockEntity.NutrientType.POTASSIUM,
[
"betterend:block/shadow_berry_greenhouse_0",
"betterend:block/shadow_berry_greenhouse_1",

View file

@ -179,4 +179,4 @@ function registerTFGBiomassRecipes(event) {
.itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust')
.duration(100)
.EUt(2)
}
}

View file

@ -276,6 +276,14 @@ function registerTFGFoodRecipes(event) {
.duration(300)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer(`lactose_milk_vinegar_${item.id}`)
.circuit(1)
.inputFluids(Fluid.of(item.milk, 1000), Fluid.of('tfc:vinegar', 100))
.chancedOutput('gtceu:lactose_dust', 1000, 0)
.outputFluids(Fluid.of(item.curdled_fluid, 1000))
.duration(300)
.EUt(GTValues.VA[GTValues.LV])
global.processorRecipe(event, `${item.id}_curd`, 1200, 16, {
itemOutputs: [item.curd],
fluidInputs: [Fluid.of(item.curdled_fluid, 1000)],
@ -295,8 +303,7 @@ function registerTFGFoodRecipes(event) {
itemOutputProvider: TFC.isp.of(`4x ${item.unsalted_cheese}`).copyOldestFood()
})
if (item.salted_wheel === null || item.salted_cheese === null)
return;
if (item.salted_wheel === null || item.salted_cheese === null) return;
global.processorRecipe(event, `${item.id}_salted_cheese_wheel`, 1000, 16, {
circuit: 2,
@ -373,8 +380,8 @@ function registerTFGFoodRecipes(event) {
for (const cshape of chocolateShape) {
global.processorRecipe(event, `${ctype}_${cshape}_melting`, 100, 16, {
circuit: 1,
itemInputs:[cshape == "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`],
fluidOutputs:[cshape == "" ? Fluid.of(`tfcchannelcasting:${ctype}`, 144) : Fluid.of(`tfcchannelcasting:${ctype}`, 100)],
itemInputs:[cshape === "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`],
fluidOutputs:[cshape === "" ? Fluid.of(`tfcchannelcasting:${ctype}`, 144) : Fluid.of(`tfcchannelcasting:${ctype}`, 100)]
})
}
}
@ -382,9 +389,9 @@ function registerTFGFoodRecipes(event) {
for (const ctype of chocolateType) {
for (const cshape of chocolateShape) {
global.processorRecipe(event, `${ctype}_${cshape}_casting`, 100, 16, {
fluidInputs: [cshape == "" ? Fluid.of(`tfcchannelcasting:${ctype}`, 144) : Fluid.of(`tfcchannelcasting:${ctype}`, 100)],
itemOutputs: [cshape == "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`],
itemOutputProvider: TFC.isp.of(cshape == "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`).resetFood(),
fluidInputs: [cshape === "" ? Fluid.of(`tfcchannelcasting:${ctype}`, 144) : Fluid.of(`tfcchannelcasting:${ctype}`, 100)],
itemOutputs: [cshape === "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`],
itemOutputProvider: TFC.isp.of(cshape === "" ? `firmalife:food/${ctype}` : `tfcchannelcasting:food/${ctype}${cshape}`).resetFood(),
notConsumable: [chocolatemolds[chocolateShape.indexOf(cshape)]]
})
}
@ -411,7 +418,7 @@ function registerTFGFoodRecipes(event) {
const brining_ingredients = smoking_meats.concat(brining_veg);
brining_ingredients.forEach(item => {
global.processorRecipeText(event, `${item.replace(/:/g, "/")}/brining`, 200, 16, "tfg.food_recipe.brining", {
global.processorRecipeText(event, `${linuxUnfucker(item)}/brining`, 200, 16, "tfg.food_recipe.brining", {
circuit: 5,
itemInputs: [item],
itemOutputs: [item],
@ -421,7 +428,7 @@ function registerTFGFoodRecipes(event) {
})
smoking_meats.forEach(item => {
global.processorRecipeText(event, `${item.replace(/:/g, "/")}/smoking`, 200, 16, "tfg.food_recipe.smoking", {
global.processorRecipeText(event, `${linuxUnfucker(item)}/smoking`, 200, 16, "tfg.food_recipe.smoking", {
circuit: 6,
itemInputs: [item],
itemOutputs: [item],
@ -431,7 +438,7 @@ function registerTFGFoodRecipes(event) {
})
smoking_cheese.forEach(item => {
global.processorRecipeText(event, `${item.replace(/:/g, "/")}/smoking`, 200, 16, "tfg.food_recipe.smoking", {
global.processorRecipeText(event, `${linuxUnfucker(item)}/smoking`, 200, 16, "tfg.food_recipe.smoking", {
circuit: 6,
itemInputs: [item],
itemOutputs: [item],
@ -441,7 +448,7 @@ function registerTFGFoodRecipes(event) {
})
drying_fruits.forEach(item => {
global.processorRecipeText(event, `${item.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", {
global.processorRecipeText(event, `${linuxUnfucker(item)}/drying`, 200, 16, "tfg.food_recipe.drying", {
circuit: 6,
itemInputs: [item],
itemOutputs: [item],
@ -451,7 +458,7 @@ function registerTFGFoodRecipes(event) {
})
drying_recipes.forEach(item => {
global.processorRecipeText(event, `${item.input.replace(/:/g, "/")}/drying`, 200, 16, "tfg.food_recipe.drying", {
global.processorRecipeText(event, `${linuxUnfucker(item.input)}/drying`, 200, 16, "tfg.food_recipe.drying", {
circuit: 6,
itemInputs: [item.input],
itemOutputs: [item.output],
@ -693,7 +700,7 @@ function registerTFGFoodRecipes(event) {
//#region Pizza
global.processorRecipe(event, "pizza_no_extra", 600, 16, {
global.processorRecipe(event, "pizza_no_extra", 600, GTValues.VHA[GTValues.LV], {
circuit: 3,
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese"],
itemOutputs: ["firmalife:food/raw_pizza"],
@ -703,7 +710,7 @@ function registerTFGFoodRecipes(event) {
)
})
global.processorRecipe(event, "pizza_1_extra", 600, GTValues.VHA[GTValues.MV], {
global.processorRecipe(event, "pizza_1_extra", 600, GTValues.VHA[GTValues.LV], {
circuit: 1,
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "#firmalife:foods/pizza_ingredients"],
itemOutputs: ["firmalife:food/raw_pizza"],
@ -713,7 +720,7 @@ function registerTFGFoodRecipes(event) {
)
})
global.processorRecipe(event, "pizza_2_extra", 600, GTValues.VHA[GTValues.MV], {
global.processorRecipe(event, "pizza_2_extra", 600, GTValues.VHA[GTValues.LV], {
circuit: 2,
itemInputs: ["firmalife:food/pizza_dough", "firmalife:food/tomato_sauce", "firmalife:food/shredded_cheese", "2x #firmalife:foods/pizza_ingredients"],
itemOutputs: ["firmalife:food/raw_pizza"],
@ -887,6 +894,22 @@ function registerTFGFoodRecipes(event) {
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyFood()
})
global.processorRecipe(event, 'soy_mixture_sea_water', 300, 8, {
circuit: 1,
itemInputs: ['tfc:food/soybean'],
fluidInputs: ['tfc:salt_water 50'],
itemOutputs: ['firmalife:food/soy_mixture'],
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyFood()
})
global.processorRecipe(event, 'soy_mixture_salt_water', 300, 8, {
circuit: 1,
itemInputs: ['tfc:food/soybean'],
fluidInputs: ['gtceu:salt_water 25'],
itemOutputs: ['firmalife:food/soy_mixture'],
itemOutputProvider: TFC.isp.of('firmalife:food/soy_mixture').copyFood()
})
global.processorRecipe(event, "brown_mushroom", 100, 8, {
circuit: 30,
itemInputs: ["minecraft:brown_mushroom_block"],
@ -951,7 +974,7 @@ function registerTFGFoodRecipes(event) {
//#region Alcohols
global.TFC_ALCOHOL.forEach(alcohol => {
global.processorRecipe(event, alcohol.id.replace(/:/g, "_"), 2400, 1, {
global.processorRecipe(event, linuxUnfucker(alcohol.id), 2400, 1, {
itemInputs: [alcohol.ingredient],
fluidInputs: ['#tfg:clean_water 500', 'firmalife:yeast_starter 10'],
fluidOutputs: [Fluid.of(alcohol.id, 500)],
@ -1173,7 +1196,7 @@ function registerTFGFoodRecipes(event) {
.duration(60)
.EUt(16)
event.shaped('4x tfc:powder/salt', ['A', 'B'], {A: '#forge:dusts/salt', B: '#forge:tools/mortars'})
event.shapeless('4x tfc:powder/salt', ['#forge:dusts/salt', '#forge:tools/mortars'])
.id(`tfg:mortar/salt`)
//#endregion
@ -1417,7 +1440,7 @@ function registerTFGFoodRecipes(event) {
*/
const beer = ['tfc:beer', 'tfcagedalcohol:aged_beer'];
beer.forEach(beerType => {
global.processorRecipe(event, `raw_beer_battered_cheese_curds/${beerType.replace(':', '_')}`, 20*5, GTValues.VA[GTValues.ULV], {
global.processorRecipe(event, `raw_beer_battered_cheese_curds/${linuxUnfucker(beerType)}`, 20*5, GTValues.VA[GTValues.ULV], {
itemInputs: ['4x #tfg:foods/cheese_curds', '#tfc:foods/flour', 'tfc:powder/salt', '#forge:eggs'],
fluidInputs: [`${beerType} 100`],
itemOutputs: ['4x tfg:food/raw_beer_battered_cheese_curds'],
@ -1707,9 +1730,9 @@ function registerTFGFoodRecipes(event) {
spice.plant,
'#forge:tools/knives'
]
).id(`tfg:crafting/${spice.product.replace(':', '_')}`);
).id(`tfg:crafting/${linuxUnfucker(spice.product)}`);
event.recipes.gtceu.food_processor(`tfg:${spice.product.replace(':', '_')}`)
event.recipes.gtceu.food_processor(`tfg:${linuxUnfucker(spice.product)}`)
.itemInputs(spice.plant)
.itemOutputs(Item.of(spice.product).withCount(2))
.duration(10)

View file

@ -53,7 +53,7 @@ function registerTFGMealBagRecipes(event) {
.itemInputs('1x tfg:used_foil_pack')
.inputFluids(Fluid.of('gtceu:distilled_water', 10))
.itemOutputs('1x tfg:clean_foil_pack')
.duration(200)
.duration(50)
.circuit(2)
.EUt(GTValues.VA[GTValues.ULV])
@ -68,7 +68,8 @@ function registerTFGMealBagRecipes(event) {
result: { item: 'tfg:clean_foil_pack' }
}).id('tfg:ae_transform/clean_foil_pack')
event.recipes.greate.splashing(['tfg:clean_foil_pack'], 'tfg:used_foil_pack')
event.recipes.greate.splashing(['tfg:clean_foil_pack'], ['tfg:used_foil_pack', Fluid.of('minecraft:water', 100)])
.recipeTier(0)
.id('tfg:splashing/clean_foil_pack')
event.shapeless('1x tfg:used_foil_pack', [
@ -85,24 +86,5 @@ function registerTFGMealBagRecipes(event) {
]).id(`tfg:shapeless/emptying/freeze_dried/${fruit.name}`)
})
// Recycling
event.recipes.gtceu.macerator('gtceu:macerator/recycling/clean_foil_pack')
.itemInputs('tfg:clean_foil_pack')
.itemOutputs(
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Aluminium, 1),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Polyethylene, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 1)
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.arc_furnace('gtceu:arc_furnace/recycling/clean_foil_pack')
.itemInputs('tfg:clean_foil_pack')
.itemOutputs(
ChemicalHelper.get(TagPrefix.nugget, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Ash, 1)
)
.duration(GTMaterials.Aluminium.getMass() * 1)
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
TFGHelpers.registerMaterialInfo('tfg:clean_foil_pack', [GTMaterials.Aluminium, 0.25, GTMaterials.Polyethylene, 0.25])
}

View file

@ -66,6 +66,7 @@ function registerTFGFoodItemTags(event) {
event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_cruncher_ribs')
event.add('tfg:raw_dinosaur_meat', 'tfg:food/raw_surfer_steak')
event.add('tfg:raw_dinosaur_meat', 'wan_ancient_beasts:raw_ancient_meat')
// TODO add meat for charger, raider, snatcher
/**
* List of items that can make light stock.
@ -148,9 +149,9 @@ function registerTFGFoodItemTags(event) {
'firmalife:food/yak_curd',
'firmalife:food/goat_curd',
'firmalife:food/milk_curd',
'tfc_gurman:ox_curd',
'tfc_gurman:sheep_curd',
'tfc_gurman:alpaca_curd'
'tfc_gourmet:ox_curd',
'tfc_gourmet:sheep_curd',
'tfc_gourmet:alpaca_curd'
];
cheeseCurds.forEach(item => {
event.add('tfg:foods/cheese_curds', item);
@ -176,7 +177,7 @@ function registerTFGFoodItemTags(event) {
'#firmalife:foods/cheeses',
'tfg:food/slice_of_cheese',
'firmalife:food/shredded_cheese',
'#tfc_gurman:foods/brinza'
'#tfc_gourmet:foods/brinza'
];
cheeses.forEach(item => {
event.add('tfg:foods/cheeses', item);
@ -238,6 +239,7 @@ function registerTFGFoodItemTags(event) {
*/
const usable_in_meal_bag = [
'#tfc:foods/meats',
'#minecraft:fishes',
'#tfc:foods/grains',
'#tfc:foods/vegetables',
'#tfc:foods/fruits',
@ -267,12 +269,12 @@ function registerTFGFoodItemTags(event) {
'firmalife:food/toast_with_butter',
'firmalife:food/toast_with_jam',
'firmalife:food/butter',
'tfc_gurman:adjika',
'tfc_gurman:tzatziki',
'tfc_gurman:falafel',
'tfc_gurman:hummus',
'tfc_gurman:sauerkraut',
'tfc_gurman:bratwurst'
'tfc_gourmet:adjika',
'tfc_gourmet:tzatziki',
'tfc_gourmet:falafel',
'tfc_gourmet:hummus',
'tfc_gourmet:sauerkraut',
'tfc_gourmet:bratwurst'
];
usable_in_meal_bag.forEach(item => {
event.add('tfg:foods/usable_in_meal_bag', item);
@ -357,4 +359,4 @@ function registerTFGFoodBlockTags(event) {
event.add('ad_astra:destroyed_in_space', '#tfc:wild_fruits')
event.add('ad_astra:destroyed_in_space', '#minecraft:saplings')
}
}

View file

@ -38,7 +38,6 @@ const materials = [
{materialName: 'quartzite_tfc', nameColor: '#b8bab8', itemName: 'gtceu:exquisite_quartzite_gem', indexNumber: 0.186},
{materialName: 'realgar_tfc', nameColor: '#c22e28', itemName: 'gtceu:exquisite_realgar_gem', indexNumber: 0.187},
{materialName: 'malachite_tfc', nameColor: '#00b789', itemName: 'gtceu:exquisite_malachite_gem', indexNumber: 0.188},
{materialName: 'glass_tfc', nameColor: '#c2c2c6', itemName: 'gtceu:exquisite_glass_gem', indexNumber: 0.189},
{materialName: 'olivine_tfc', nameColor: '#7fad03', itemName: 'gtceu:exquisite_olivine_gem', indexNumber: 0.171},
{materialName: 'opal_tfc', nameColor: '#bdadb6', itemName: 'gtceu:exquisite_opal_gem', indexNumber: 0.172},
{materialName: 'amethyst_tfc', nameColor: '#9b78ba', itemName: 'gtceu:exquisite_amethyst_gem', indexNumber: 0.173},

View file

@ -0,0 +1,115 @@
"use strict";
function registerTFGBakeliteRecipes(event) {
// Make PE exclusively MV+, it's fine if the LCR recipe stays LV since you can't make an LCR in LV anyway
event.recipes.gtceu.chemical_reactor('gtceu:polyethylene_from_oxygen')
.inputFluids('gtceu:oxygen 1000', 'gtceu:ethylene 144')
.circuit(1)
.outputFluids('gtceu:polyethylene 216')
.duration(2 * 20)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('gtceu:polyethylene_from_air')
.inputFluids('gtceu:air 1000', 'gtceu:ethylene 144')
.circuit(1)
.outputFluids('gtceu:polyethylene 144')
.duration(2 * 20)
.EUt(GTValues.VA[GTValues.MV])
// Formaldehyde
event.recipes.gtceu.chemical_reactor('tfg:formaldehyde_from_methane')
.inputFluids('gtceu:methane 1000', 'gtceu:oxygen 1000')
.outputFluids('gtceu:formaldehyde 1000', 'gtceu:hydrogen 2000')
.circuit(1)
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
// add phenol and methane to distillation
event.recipes.gtceu.distillation_tower('gtceu:distill_creosote')
.inputFluids('gtceu:creosote 1000')
.outputFluids('gtceu:lubricant 500')
.outputFluids('gtceu:phenol 50')
.outputFluids('gtceu:carbon_dioxide 200')
.outputFluids('gtceu:methane 250')
// this adds single-block distillery recipes too
.disableDistilleryRecipes(false)
.duration(8 * 20)
.EUt(96)
event.recipes.gtceu.chemical_reactor('tfg:syngas_to_methane')
.inputFluids('tfg:syngas 1000')
.notConsumable('#forge:dusts/silver')
.outputFluids('gtceu:methane 100')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_reactor('tfg:phenolic_resin')
.inputFluids('gtceu:phenol 500', 'gtceu:formaldehyde 1000')
.notConsumable('#forge:dusts/sodium_hydroxide')
.outputFluids('tfg:phenolic_resin 1000')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('tfg:bakelite_wood')
.inputFluids('tfg:phenolic_resin 144')
.itemInputs('tfg:treated_chipboard_composite')
.outputFluids('tfg:bakelite 144')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('tfg:bakelite_asbestos')
.inputFluids('tfg:phenolic_resin 144')
.itemInputs('#forge:dusts/asbestos')
.outputFluids('tfg:bakelite 144')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.remove({ id: 'gtceu:assembler/phenolic_board' })
event.recipes.gtceu.forming_press('tfg:phenolic_board_lv')
.itemInputs('2x #forge:foils/bakelite', '2x minecraft:paper', 'gtceu:resin_circuit_board')
.itemOutputs('gtceu:phenolic_circuit_board')
.duration(7.5 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:phenolic_board_mv')
.itemInputs('2x #forge:foils/bakelite', 'gtceu:wood_plate')
.inputFluids('gtceu:phenol 50')
.itemOutputs('gtceu:phenolic_circuit_board')
.duration(7.5 * 20)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:phenolic_board_mv_pe')
.itemInputs('2x #forge:foils/polyethylene', 'gtceu:wood_plate')
.inputFluids('gtceu:phenol 50')
.itemOutputs('gtceu:phenolic_circuit_board')
.duration(7.5 * 20)
.EUt(GTValues.VA[GTValues.MV])
// machine hull changes/additions
event.replaceInput({ id: 'gtceu:shaped/mv_machine_hull' }, '#forge:plates/wrought_iron', '#forge:plates/bakelite')
event.recipes.gtceu.assembler('tfg:ulv_hull_bakelite')
.itemInputs('gtceu:ulv_machine_casing', '2x #forge:single_cables/red_alloy')
.inputFluids('tfg:bakelite 432')
.itemOutputs('gtceu:ulv_machine_hull')
.duration(25)
.EUt(16)
event.recipes.gtceu.assembler('tfg:lv_hull_bakelite')
.itemInputs('gtceu:lv_machine_casing', '2x #forge:single_cables/tin')
.inputFluids('tfg:bakelite 432')
.itemOutputs('gtceu:lv_machine_hull')
.duration(50)
.EUt(16)
event.shaped('gtceu:lv_hermetic_casing', [
'AAA',
'ABA',
'AAA'
], {
A: '#forge:plates/steel',
B: '#forge:storage_blocks/bakelite'
}).id('tfg:shaped/lv_hermetic_casing_bakelite')
}

View file

@ -22,7 +22,7 @@ function registerTFGCasingRecipes(event) {
)
.inputFluids(Fluid.of('gtceu:epoxy', 144))
.itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier))
.circuit(4)
.circuit(6)
.duration(400)
.EUt(GTValues.VA[GTValues.MV])
@ -34,7 +34,7 @@ function registerTFGCasingRecipes(event) {
ChemicalHelper.get(TagPrefix.wireGtSingle, GTMaterials[type.materialId], 4))
.inputFluids(Fluid.of('gtceu:epoxy', 144))
.itemOutputs(Item.of('tfg:superconductor_coil_large', 4 * multiplier))
.circuit(7)
.circuit(6)
.duration(600)
.EUt(GTValues.VA[GTValues.MV])
})
@ -97,16 +97,6 @@ function registerTFGCasingRecipes(event) {
.itemOutputs('1x tfg:reflector')
.circuit(6)
.duration(20 * (60))
.EUt(GTValues.VH[GTValues.HV])
event.recipes.gtceu.assembler('tfg:reflector_from_inr')
.itemInputs(
'1x gtceu:neutron_reflector',
ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1)
)
.itemOutputs('2x tfg:reflector')
.circuit(9)
.duration(20 * (20))
.EUt(GTValues.VH[GTValues.MV])
event.recipes.gtceu.assembler('tfg:reflector_from_certus')
@ -141,7 +131,7 @@ function registerTFGCasingRecipes(event) {
// Ostrum Linear Acclerator
event.recipes.gtceu.assembler('tfg:casings/machine_casing_mars')
.itemInputs('gtceu:clean_machine_casing', '4x #forge:double_wires/kanthal')
.inputFluids(Fluid.of('gtceu:polybenzimidazole', 288))
.inputFluids(Fluid.of('gtceu:polytetrafluoroethylene', 288))
.itemOutputs('tfg:casings/machine_casing_mars')
.circuit(6)
.duration(2.5 * 20)
@ -155,6 +145,42 @@ function registerTFGCasingRecipes(event) {
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
// Heat Battery deafission:battery_heat_port_ev
event.recipes.gtceu.assembler('tfg:battery_heat_port_ev')
.itemInputs(Item.of('gtceu:ev_machine_hull', 1), Item.of('gtceu:rtm_alloy_coil_block'), Item.of('gtceu:silicon_plate', 6))
.inputFluids(Fluid.of('gtceu:mercury', 4000))
.itemOutputs('deafission:battery_heat_port_ev')
//.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.assembler('tfg:heat_input_hatch_ev')
.itemInputs(Item.of('gtceu:ev_machine_hull', 1), Item.of('gtceu:rtm_alloy_coil_block'), Item.of('gtceu:beryllium_plate', 6))
.inputFluids(Fluid.of('gtceu:mercury', 4000))
.itemOutputs(Item.of('deafission:heat_input_hatch_ev', 1))
//.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.EV])
// Small Modular Turbine
event.recipes.gtceu.assembler('tfg:machine_casing_desh_ptfe')
.itemInputs('4x #forge:dense_plates/desh', '2x #forge:dense_plates/lead', Item.of('gtceu:hsla_steel_frame'))
.inputFluids(Fluid.of('gtceu:polytetrafluoroethylene', 288))
.itemOutputs('tfg:casings/machine_casing_desh_ptfe')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.assembler('tfg:uv_smr_fluid_import_hatch')
.itemInputs('4x #forge:dense_plates/desh', '2x #forge:dense_plates/lead', Item.of('gtceu:iv_input_hatch', 1))
.inputFluids(Fluid.of('gtceu:polytetrafluoroethylene', 288))
.itemOutputs('tfg:uv_smr_fluid_import_hatch')
//.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.EV])
// Vacuum Intake
event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [
'USU',
@ -182,7 +208,7 @@ function registerTFGCasingRecipes(event) {
.itemInputs('gtceu:ostrum_frame', '4x #forge:plates/titanium_tungsten_carbide', '16x #forge:fine_wires/copper',
'16x #forge:fine_wires/tungsten_bismuth_oxide_composite')
.inputFluids(Fluid.of('gtceu:reinforced_epoxy_resin', 288))
.itemOutputs('2x tfg:machine_casing_power_casing')
.itemOutputs('4x tfg:machine_casing_power_casing')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.EV])

View file

@ -0,0 +1,109 @@
"use strict";
function registerTFGCoilRecipes(event) {
// #region Cupronickel Coil
event.smelting('tfg:refractory_clay_dust', 'tfc:fire_clay')
event.recipes.gtceu.chemical_reactor('tfg:magnesium_hydroxide')
.itemInputs('#forge:dusts/magnesium')
.inputFluids('tfc:lye 2000')
.itemOutputs('#forge:dusts/magnesium_hydroxide', '2x #forge:dusts/sodium')
.duration(5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.coke_oven('tfg:magnesia')
.itemInputs('#forge:dusts/magnesium_hydroxide')
.itemOutputs('#forge:dusts/magnesia')
.duration(20 * 20)
event.recipes.gtceu.pyrolyse_oven('tfg:magnesia')
.itemInputs('#forge:dusts/magnesium_hydroxide')
.itemOutputs('#forge:dusts/magnesia')
.duration(20 * 20)
.EUt(GTValues.VHA[GTValues.MV])
event.recipes.gtceu.mixer('tfg:magnesia_refractory_brick_dust_sticky')
.itemInputs('#forge:dusts/magnesia', '#forge:dusts/refractory_clay', '#forge:dusts/graphite', '5x gtceu:sticky_resin')
.itemOutputs('3x #forge:dusts/magnesia_refractory_brick')
.duration(5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.mixer('tfg:magnesia_refractory_brick_dust_sticky_powder')
.itemInputs('#forge:dusts/magnesia', '#forge:dusts/refractory_clay', '4x tfc:powder/graphite', '5x gtceu:sticky_resin')
.itemOutputs('3x #forge:dusts/magnesia_refractory_brick')
.duration(5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.mixer('tfg:magnesia_refractory_brick_dust_phenolic')
.itemInputs('#forge:dusts/magnesia', '#forge:dusts/refractory_clay', '#forge:dusts/graphite')
.inputFluids(Fluid.of('tfg:phenolic_resin', 144))
.itemOutputs('3x #forge:dusts/magnesia_refractory_brick')
.duration(5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.mixer('tfg:magnesia_refractory_brick_dust_phenolic_powder')
.itemInputs('#forge:dusts/magnesia', '#forge:dusts/refractory_clay', '4x tfc:powder/graphite')
.inputFluids(Fluid.of('tfg:phenolic_resin', 144))
.itemOutputs('3x #forge:dusts/magnesia_refractory_brick')
.duration(5 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.alloy_smelter('tfg:magnesia_refractory_brick')
.itemInputs('#forge:dusts/magnesia_refractory_brick')
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('#forge:ingots/magnesia_refractory_brick')
.duration(8 * 20)
.EUt(GTValues.VA[GTValues.LV])
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.gtceu.forming_press('tfg:magnesia_refractory_brick')
.itemInputs('#forge:dusts/magnesia_refractory_brick')
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('#forge:ingots/magnesia_refractory_brick')
.duration(4 * 20)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.assembler('gtceu:coil_cupronickel')
.itemInputs('8x #forge:double_wires/cupronickel', '8x #forge:foils/blue_steel', '8x #forge:ingots/magnesia_refractory_brick')
.inputFluids('gtceu:tin_alloy 144')
.itemOutputs('gtceu:cupronickel_coil_block')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true, true)
// #endregion
// #region RTM Coil
event.remove({ id : 'gtceu:assembler/coil_rtm_alloy' })
event.recipes.gtceu.assembler('tfg:coil_rtm_alloy')
.itemInputs('8x #forge:double_wires/rtm_alloy', '8x #forge:foils/vanadium_steel', '8x #forge:insulation_t2/sheet')
.inputFluids('tfg:nichromium_iodomethylate 244')
.itemOutputs('gtceu:rtm_alloy_coil_block')
.duration(20 * 25)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true, true)
event.recipes.gtceu.mixer('tfg:nichromium_iodomethylate')
.inputFluids(Fluid.of('gtceu:nichrome', 144), Fluid.of('tfg:iodomethane', 100))
.outputFluids('tfg:nichromium_iodomethylate 244')
.duration(20 * 8)
.EUt(GTValues.VA[GTValues.HV])
// #endregion
// #region HSS-G
event.remove({ id : 'gtceu:assembler/coil_hssg' })
event.recipes.gtceu.assembler('tfg:coil_hssg')
.itemInputs('8x #forge:double_wires/hssg', '8x #forge:foils/tungsten_carbide', '2x #forge:insulation_t3/sheet')
.inputFluids('gtceu:tungsten 144')
.itemOutputs('gtceu:hssg_coil_block')
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
// #endregion
}

Some files were not shown because too many files have changed in this diff Show more