big refactor of a lot of the recipe files!

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

View file

@ -8,426 +8,6 @@ const registerAdAstraRecipes = (event) => {
event.remove({ mod: 'ad_astra' })
//#region Rocket parts
event.recipes.gtceu.shaped('ad_astra:launch_pad', [
'BAB',
'AAA',
'BAB'
], {
A: '#forge:plates/steel',
B: '#forge:rods/steel'
}).addMaterialInfo().id('tfg:launch_pad')
//#region Tier 1 rocket
event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1')
.itemInputs(
'gtceu:hv_emitter',
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1),
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3))
.inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16))
.itemOutputs('ad_astra:rocket_nose_cone')
.duration(1200)
.circuit(2)
.EUt(480)
.addMaterialInfo(true, true)
event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust')
.inputFluids(Fluid.of('gtceu:nitrogen', 100))
.itemInputs('gtceu:asbestos_dust')
.itemOutputs('gtceu:vitrified_asbestos_dust')
.duration(80)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer('tfg:rocket_alloy_t1')
.itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel')
.inputFluids(Fluid.of('gtceu:red_steel', 144))
.itemOutputs('9x #forge:dusts/rocket_alloy_t1')
.duration(580)
.circuit(2)
.EUt(480)
event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water')
.itemInputs('#forge:hot_ingots/rocket_alloy_t1')
.inputFluids(Fluid.of('minecraft:water', 100))
.itemOutputs('#forge:ingots/rocket_alloy_t1')
.duration(400)
.EUt(120)
event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water')
.itemInputs('#forge:hot_ingots/rocket_alloy_t1')
.inputFluids(Fluid.of('gtceu:distilled_water', 100))
.itemOutputs('#forge:ingots/rocket_alloy_t1')
.duration(250)
.EUt(120)
event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`)
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1),
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1)
)
.itemOutputs('ad_astra:rocket_fin')
.duration(150)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_steel_engine')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2),
'2x #gtceu:circuits/hv',
'gtceu:hv_electric_pump',
'2x gtceu:power_thruster',
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1)
)
.inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8))
.itemOutputs('ad_astra:steel_engine')
.duration(600)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8),
'4x ad_astra:rocket_fin',
'1x ad_astra:steel_engine',
'1x ad_astra:rocket_nose_cone',
'16x #forge:insulation_t1',
'4x #gtceu:circuits/hv'
)
.inputFluids(Fluid.of('gtceu:silicon', 144 * 16))
.itemOutputs('ad_astra:tier_1_rocket')
.duration(1200)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true, true)
//#endregion
//region tier 2 rocket
event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' })
event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000))
.outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32))
.duration(1320 * 20)
.circuit(2)
.blastFurnaceTemp(3200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200))
.outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32))
.duration(17688)
.circuit(12)
.blastFurnaceTemp(3200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2')
.notConsumable('gtceu:ingot_casting_mold')
.inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288))
.itemOutputs('#forge:ingots/rocket_alloy_t2')
.duration(120)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer('tfg:rocket_alloy_t2')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4))
.itemOutputs('32x #forge:dusts/rocket_alloy_t2')
.duration(15 * 20)
.circuit(5)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2')
.itemInputs('#forge:hot_ingots/rocket_alloy_t2')
.inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288))
.itemOutputs('#forge:ingots/rocket_alloy_t2')
.duration(120)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.assembler('tfg:rocket_fin_t2')
.itemInputs('#forge:plates/rocket_alloy_t2',
'#forge:double_plates/titanium')
.itemOutputs('tfg:rocket_fin_t2')
.duration(180)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_cone_t2')
.itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium',
'#forge:double_plates/desh')
.itemOutputs('tfg:rocket_cone_t2')
.duration(1440)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_desh_engine')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4),
'2x #gtceu:circuits/ev',
'gtceu:ev_electric_pump',
'3x gtceu:advanced_power_thruster',
ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1))
.inputFluids(Fluid.of('gtceu:desh', 144 * 12))
.itemOutputs('ad_astra:desh_engine')
.duration(800)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:tier_2_rocket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12),
'4x tfg:rocket_fin_t2',
'1x ad_astra:desh_engine',
'1x tfg:rocket_cone_t2',
'12x #forge:insulation_t2/roll',
'4x #gtceu:circuits/ev'
)
.inputFluids(Fluid.of('gtceu:titanium', 144 * 16))
.itemOutputs('ad_astra:tier_2_rocket')
.duration(1440)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true, true)
//#endregion
//region Tier 3 DISABLED UNTIL IV
event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" })
event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" })
/*
event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3')
.inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000))
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('#forge:ingots/rocket_alloy_t3')
.duration(800)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3')
.itemInputs('#forge:hot_ingots/rocket_alloy_t3')
.inputFluids(Fluid.of('gtceu:liquid_helium', 500))
.itemOutputs('#forge:ingots/rocket_alloy_t3')
.outputFluids(Fluid.of('gtceu:helium', 250))
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
//Add some unique cooling thing for molten ingots
event.recipes.gtceu.assembler('tfg:rocket_fin_t3')
.itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel')
.itemOutputs('tfg:rocket_fin_t3')
.duration(220)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_cone_t3')
.itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel',
'#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet
.itemOutputs('tfg:rocket_cone_t3')
.duration(1700)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:elite_power_thruster')
.itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium',
'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable')
.itemOutputs('tfg:elite_power_thruster')
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine')
.itemInputs(
'6x #forge:double_plates/tungsten_steel',
'4x #gtceu:circuits/iv',
'gtceu:iv_electric_pump',
'3x tfg:elite_power_thruster',
'4x #forge:insulation_t3/cryo',
'6x #forge:rods/magnetic_neodymium',
'#forge:rotors/tungsten_steel')
.inputFluids(Fluid.of('gtceu:ostrum', 144 * 16))
.itemOutputs('ad_astra:ostrum_engine')
.duration(960)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank')
.itemInputs(
'4x #forge:double_plates/rocket_alloy_t3',
'gtceu:iv_electric_pump',
'tfg:elite_power_thruster',
'2x #forge:insulation_t3/cryo')
.inputFluids(Fluid.of('gtceu:ostrum', 144 * 4))
.itemOutputs('ad_astra:ostrum_tank')
.duration(400)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:tier_3_rocket')
.itemInputs(
'16x #forge:dense_plates/rocket_alloy_t3',
'4x tfg:rocket_fin_t3',
'1x ad_astra:ostrum_engine',
'2x ad_astra:ostrum_tank',
'1x tfg:rocket_cone_t3',
'8x #forge:insulation_t3/sheet'
)
.inputFluids(Fluid.of('gtceu:bromine', 1000 * 16))
.itemOutputs('ad_astra:tier_3_rocket')
.duration(1700)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
//#endregion
*/
//#region space suits NETHERITE STUFF DISABLED UNTIL IV
event.recipes.gtceu.forming_press('space_suit_fabric')
.itemInputs(
'#forge:foils/aluminium',
'gtceu:carbon_fiber_mesh',
'#forge:foils/silicone_rubber',
'tfg:polycaprolactam_fabric'
)
.itemOutputs('2x tfg:space_suit_fabric')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true)
event.recipes.gtceu.forming_press('better_space_suit_fabric')
.itemInputs(
'#forge:foils/polybenzimidazole',
'gtceu:carbon_fiber_mesh',
'#forge:aerogels',
'tfg:glacian_wool'
)
.itemOutputs('2x tfg:better_space_suit_fabric')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_helmet', [
'AAA',
'ADA',
'BBB'
], {
A: 'gtceu:tempered_glass',
B: 'tfg:space_suit_fabric',
D: '#forge:small_fluid_pipes/polyethylene'
}).addMaterialInfo().id('tfg:space_helmet')
event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet')
.itemInputs(
'ad_astra:space_helmet',
'2x #forge:plates/tungsten_steel',
'1x #forge:plates/ostrum',
'3x tfg:better_space_suit_fabric',
'5x gtceu:laminated_glass'
)
.itemOutputs('ad_astra:netherite_space_helmet')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_suit', [
'B B',
'BDB',
'BBB'
], {
B: 'tfg:space_suit_fabric',
D: 'ad_astra:oxygen_gear'
}).addMaterialInfo().id('tfg:space_suit')
event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit'])
.id('tfg:empty_space_suit')
event.recipes.gtceu.assembler('ad_astra:netherite_space_suit')
.itemInputs(
'ad_astra:space_suit',
'3x #forge:plates/tungsten_steel',
'2x #forge:plates/ostrum',
'5x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_suit')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit'])
.id('tfg:empty_netherite_space_suit')
event.recipes.gtceu.shaped('ad_astra:space_pants', [
'BAB',
'B B',
'B B'
], {
A: 'gtceu:hv_electric_motor',
B: 'tfg:space_suit_fabric',
}).addMaterialInfo().id('tfg:space_pants')
event.recipes.gtceu.assembler('ad_astra:netherite_space_pants')
.itemInputs(
'ad_astra:space_pants',
'2x #forge:plates/tungsten_steel',
'2x #forge:plates/ostrum',
'4x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_pants')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_boots', [
'B B',
'A A'
], {
A: '#forge:plates/polyphenylene_sulfide',
B: 'tfg:space_suit_fabric'
}).addMaterialInfo().id('tfg:space_boots')
event.recipes.gtceu.assembler('ad_astra:netherite_space_boots')
.itemInputs(
'ad_astra:space_boots',
'1x #forge:plates/tungsten_steel',
'1x #forge:plates/ostrum',
'2x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_boots')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [
'BAB',
'ECE',
'BDB'
], {
A: '#gtceu:circuits/hv',
B: '#forge:tiny_fluid_pipes/stainless_steel',
C: 'gtceu:hv_electric_pump',
D: 'gtceu:fluid_detector_cover',
E: 'ad_astra:gas_tank'
}).addMaterialInfo().id('tfg:oxygen_gear')
//#endregion
//#region Gas tanks
@ -919,28 +499,6 @@ const registerAdAstraRecipes = (event) => {
event.stonecutting('ad_astra:encased_etrium_block', '#tfg:ad_astra_etrium_blocks')
event.stonecutting('ad_astra:etrium_plateblock', '#tfg:ad_astra_etrium_blocks')
event.recipes.tfc.loom(
'8x ad_astra:glacian_fur',
'8x tfg:glacian_wool',
8,
'ad_astra:block/glacian_fur'
)
event.recipes.gtceu.assembler('tfg:assembler/glacian_fur')
.itemInputs('tfg:glacian_wool')
.circuit(10)
.itemOutputs('ad_astra:glacian_fur')
.duration(100)
.EUt(4)
event.shaped('minecraft:pink_bed', [
'AAA',
'BBB'
], {
A: 'ad_astra:glacian_fur',
B: '#tfc:lumber'
}).id('tfg:shaped/glacian_bed')
//#endregion
//#region Space stations
@ -949,10 +507,10 @@ const registerAdAstraRecipes = (event) => {
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:earth_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" }},
{ count: 24, ingredient: { item: "gtceu:glass_plate" }},
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" }},
{ count: 1, ingredient: { item: "ad_astra:launch_pad" }}
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
@ -961,10 +519,10 @@ const registerAdAstraRecipes = (event) => {
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:moon_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" }},
{ count: 24, ingredient: { item: "gtceu:glass_plate" }},
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" }},
{ count: 1, ingredient: { item: "ad_astra:launch_pad" }}
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
@ -973,10 +531,46 @@ const registerAdAstraRecipes = (event) => {
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:mars_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" }},
{ count: 24, ingredient: { item: "gtceu:glass_plate" }},
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" }},
{ count: 1, ingredient: { item: "ad_astra:launch_pad" }}
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
event.custom({
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:venus_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
event.custom({
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:mercury_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
event.custom({
type: "ad_astra:space_station_recipe",
dimension: "ad_astra:glacio_orbit",
ingredients: [
{ count: 43, ingredient: { item: "gtceu:aluminium_frame" } },
{ count: 24, ingredient: { item: "gtceu:glass_plate" } },
{ count: 4, ingredient: { item: "minecraft:glowstone_dust" } },
{ count: 1, ingredient: { item: "ad_astra:launch_pad" } }
],
structure: "tfg:orbit/space_station"
})
@ -984,45 +578,12 @@ const registerAdAstraRecipes = (event) => {
//#endregion
//#region Wood
event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' })
event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' })
global.AD_ASTRA_WOOD.forEach(wood => {
woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button)
})
event.shaped('16x ad_astra:aeronos_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/aeronos',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
}).id('tfg:shaped/aeronos_ladder')
event.shaped('16x ad_astra:strophar_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/strophar',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
}).id('tfg:shaped/strophar_ladder')
generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8,
'16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8,
'16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8,
'8x species:alphacene_moss_block', GTValues.VA[GTValues.MV])
event.remove({ type: 'greate:cutting', input: '#ad_astra:aeronos_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:aeronos_planks' })
event.remove({ type: 'greate:cutting', input: '#ad_astra:strophar_caps' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:stripped_glacian_log' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:strophar_planks' })
event.remove({ type: 'greate:cutting', input: 'ad_astra:glacian_planks' })
//#endregion
}

View file

@ -2306,16 +2306,6 @@ const registerAE2Recipes = (event) => {
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.EUt(GTValues.VA[GTValues.ULV])
// Cryogenized Fluix
event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix')
.inputFluids(Fluid.of('gtceu:helium_3', 1000))
.inputFluids(Fluid.of('tfg:fluix', 144))
.outputFluids(Fluid.of('tfg:cryogenized_fluix', 576))
.duration(30 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
// Certus deco blocks
event.stonecutting('ae2:quartz_block', '#tfg:certus_quartz_blocks')

View file

@ -361,7 +361,7 @@ const registerAFCRecipes = (event) => {
//#endregion
//region gt sap processing
//#region GT sap processing
event.recipes.gtceu.fluid_heater('maple_sap_condense')
.inputFluids(Fluid.of('afc:maple_sap', 1000))
@ -375,8 +375,6 @@ const registerAFCRecipes = (event) => {
.duration(20*35)
.EUt(GTValues.VA[GTValues.ULV])
//endregion
event.recipes.gtceu.fluid_solidifier('maple_syrup')
.inputFluids(Fluid.of('afc:maple_syrup', 100))
@ -389,6 +387,8 @@ const registerAFCRecipes = (event) => {
.itemOutputs('afc:birch_sugar')
.duration(20*12)
.EUt(GTValues.VHA[GTValues.ULV])
//#endregion
// Syrup into sugar

View file

@ -67,12 +67,6 @@ const registerBeneathRecipes = (event) => {
event.recipes.tfc.landslide('beneath:soul_clay', 'beneath:soul_clay')
generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8,
'32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8,
'32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV])
Ingredient.of('#beneath:mushrooms').stacks.forEach(element => {
const itemId = element.id;
@ -82,26 +76,6 @@ const registerBeneathRecipes = (event) => {
recipeId, 'minecraft:the_nether', 8, element.withCount(4), GTValues.VH[GTValues.LV]);
});
// don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those
woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson',
'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null,
'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate',
'beneath:wood/planks/crimson_button')
event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/crimson')
.itemOutputs('beneath:wood/stripped_wood/crimson')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: 'beneath:wood/wood/crimson' }],
results: [{ item: 'beneath:wood/stripped_wood/crimson' }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_crimson_wood`)
event.shaped('beneath:wood/sewing_table/crimson', [
' AB',
'CCC',
@ -113,26 +87,6 @@ const registerBeneathRecipes = (event) => {
D: 'beneath:wood/log/crimson'
}).id('tfg:shaped/crimson_sewing_table')
woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped',
'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null,
'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate',
'beneath:wood/planks/warped_button')
event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/warped')
.itemOutputs('beneath:wood/stripped_wood/warped')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: 'beneath:wood/wood/warped' }],
results: [{ item: 'beneath:wood/stripped_wood/warped' }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_warped_wood`)
event.shaped('beneath:wood/sewing_table/warped', [
' AB',
'CCC',

View file

@ -985,70 +985,6 @@ const registerCreateRecipes = (event) => {
.duration(200)
.EUt(20)
// Электронная трубка
event.shaped('1x create:electron_tube', [
'FAG',
'BCB',
'DED'
], {
A: 'gtceu:glass_tube',
B: '#forge:bolts/steel',
C: 'gtceu:wood_plate',
D: 'gtceu:red_alloy_single_wire',
E: '#forge:plates/wrought_iron',
F: '#forge:tools/screwdrivers',
G: '#forge:tools/wire_cutters'
}).id('tfg:create/shaped/electron_tube')
event.recipes.createSequencedAssembly([
'2x create:electron_tube',
], 'gtceu:wood_plate', [
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']),
]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube')
event.recipes.gtceu.assembler('create:electron_tube')
.itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire')
.itemOutputs('2x create:electron_tube')
.duration(50)
.EUt(7)
.circuit(14)
event.shaped('4x create:electron_tube', [
'FAG',
'DCD'
], {
A: 'gtceu:glass_tube',
C: 'gtceu:plastic_circuit_board',
D: 'gtceu:red_alloy_single_wire',
F: '#forge:tools/screwdrivers',
G: '#forge:tools/wire_cutters'
}).id('tfg:create/shaped/electron_tube2')
event.recipes.gtceu.assembler('create:electron_tube2')
.itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire')
.itemOutputs('4x create:electron_tube')
.duration(50)
.EUt(7)
event.shaped('4x create:electron_tube', [
' A ',
' B ',
' C '
], {
A: '#forge:tools/screwdrivers',
B: 'gtceu:nand_chip',
C: 'gtceu:plastic_circuit_board'
}).id('tfg:create/shaped/electron_tube3')
event.recipes.gtceu.assembler('create:electron_tube3')
.itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip')
.itemOutputs('4x create:electron_tube')
.duration(50)
.EUt(7)
// Тюбик с клеем
event.shaped('create:super_glue', [
'BA',

File diff suppressed because it is too large Load diff

View file

@ -828,427 +828,37 @@ function registerGTCEuMachineRecipes(event) {
B: 'gtceu:steam_machine_casing'
}).addMaterialInfo().id('gtceu:shaped/steam_output_bus')
//#region Chipboard Composite
event.recipes.gtceu.mixer('gtceu:chipboard_composite_wax')
.itemInputs('2x #tfg:wood_dusts',
'1x #forge:wax')
.itemOutputs('2x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_resin')
.itemInputs('4x #tfg:wood_dusts',
'1x gtceu:sticky_resin')
.itemOutputs('4x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_glue')
.itemInputs('2x #tfg:wood_dusts',
'1x tfc:glue')
.itemOutputs('2x tfg:chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.mixer('gtceu:chipboard_composite_fluid_glue')
.itemInputs('1x #tfg:wood_dusts')
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs('1x tfg:chipboard_composite')
.duration(10)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.compressor('gtceu:wood_mdf')
.itemInputs('1x tfg:chipboard_composite')
.itemOutputs('gtceu:wood_plate')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:treated_chipboard_composite')
.itemInputs('1x tfg:chipboard_composite')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('tfg:treated_chipboard_composite')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:bath_high_density_treated_fiberboard')
.itemInputs('1x gtceu:wood_plate')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('tfg:high_density_treated_fiberboard')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.chemical_bath('gtceu:bath_treated_wood_dust')
.itemInputs('#tfg:wood_dusts')
.inputFluids(Fluid.of('gtceu:creosote', 50))
.itemOutputs('gtceu:treated_wood_dust')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.compressor('tfg:compressed_treated_chipboard_composite')
.itemInputs('tfg:treated_chipboard_composite')
.itemOutputs('tfg:high_density_treated_fiberboard')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler('tfg:resin_circuit_assembler')
.itemInputs('gtceu:wood_plate', '2x gtceu:sticky_resin')
.itemOutputs('gtceu:resin_circuit_board')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.ULV])
//#region New Casings
event.recipes.gtceu.assembler('basic_solar_casing')
.itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1')
.itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('advanced_solar_casing')
.itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell')
.itemOutputs('8x tfg:casings/machine_casing_green_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('elite_solar_casing')
.itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell')
.itemOutputs('8x tfg:casings/machine_casing_red_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('iron_desh_casing')
.itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame')
.itemOutputs('2x tfg:casings/machine_casing_iron_desh')
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('steel_machine_casing')
.itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4))
.itemOutputs('gtceu:steel_machine_casing')
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation')
.itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire')
.inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288))
.itemOutputs('tfg:casings/machine_casing_stainless_evaporation')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
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))
.itemOutputs('tfg:casings/machine_casing_mars')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.assembler('gtceu:atomic_casing')
.itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium')
.inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288))
.itemOutputs('2x gtceu:atomic_casing')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
//#endregion
//#region Large Solar Panel
event.shaped(
'gtceu:large_solar_panel',
['WSW', 'TZT', 'WUW'],
{
S: 'tfg:photo_cell_t1',
Z: 'ad_astra:solar_panel',
W: '#gtceu:circuits/ev',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel')
event.shaped(
'gtceu:large_solar_panel_tier2',
['WSW', 'TZT', 'WUW'],
{
S: 'ad_astra:photovoltaic_etrium_cell',
Z: 'gtceu:large_solar_panel',
W: '#gtceu:circuits/iv',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel_tier2')
event.shaped(
'gtceu:large_solar_panel_tier3',
['WSW', 'TZT', 'WUW'],
{
S: 'ad_astra:photovoltaic_vesnium_cell',
Z: 'gtceu:large_solar_panel_tier2',
W: '#gtceu:circuits/luv',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel_tier3')
event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell')
.itemInputs('8x tfg:photo_cell_t1',
'6x #forge:dusts/vanadium_gallium',
'#forge:insulation_t2/sheet')
.inputFluids(Fluid.of('gtceu:helium_3', 1000))
.itemOutputs('8x ad_astra:photovoltaic_etrium_cell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell')
.itemInputs('8x ad_astra:photovoltaic_etrium_cell',
'6x gtceu:energium_dust',
'#forge:insulation_t3/sheet')
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000))
.itemOutputs('8x ad_astra:photovoltaic_vesnium_cell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.IV])
// LSP Generating recipes
// Solar T1
event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency')
.chancedInput('tfg:photo_cell_t1', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-((GTValues.V[GTValues.HV])), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel('solar_panel_t1')
.notConsumable('tfg:photo_cell_t1')
.perTick(true)
.chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0)
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(2)
// Solar T2
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency')
.chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong')
.notConsumable('ad_astra:photovoltaic_etrium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(2)
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap')
.notConsumable('ad_astra:photovoltaic_etrium_cell')
.perTick(true)
.inputFluids('tfg:compressed_trimix_3 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(3)
// Solar T3
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency')
.chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong')
.notConsumable('ad_astra:photovoltaic_vesnium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.LuV]), 2)
.circuit(2)
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap')
.notConsumable('ad_astra:photovoltaic_vesnium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(2)
//#endregion
//#region Mars Ore Line
// Multiblock
event.shaped('tfg:ostrum_linear_accelerator', [
'USU',
'WZW',
'PTP'
// the recycling fix only works if the addMaterialInfo() is on the shaped recipe, NOT the assembler
removeMaceratorRecipe(event, 'macerate_palladium_substation')
event.recipes.gtceu.shaped('gtceu:palladium_substation', [
'AAA',
' B ',
'AAA'
], {
S: 'tfg:casings/machine_casing_vacuum_engine_intake',
Z: 'gtceu:iv_machine_hull',
W: '#gtceu:circuits/iv',
U: '#forge:double_plates/stellite_100',
T: '#forge:single_cables/platinum',
P: 'gtceu:iv_electric_pump'
}
).id('tfg:shaped/ostrum_linear_accelerator')
A: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 1),
B: ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1)
}).addMaterialInfo().id('tfg:shaped/casing_palladium_substation')
event.recipes.gtceu.assembler('tfg:ostrum_harvester')
event.recipes.gtceu.assembler('casing_palladium_substation')
.itemInputs(
'1x gtceu:ev_machine_hull',
'4x #gtceu:circuits/ev',
'4x gtceu:ev_electric_motor',
'4x #forge:rotors/black_steel',
'4x gtceu:ev_electric_pump',
'4x #forge:gears/desh')
.itemOutputs('gtceu:ostrum_harvester')
.duration(400)
.EUt(GTValues.VA[GTValues.EV])
.circuit(2)
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Palladium, 6),
ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Ultimet, 1)
)
.itemOutputs('gtceu:palladium_substation')
.duration(20 * 2.5)
.circuit(6)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:moon_dust_harvester')
.itemInputs(
'1x gtceu:hv_machine_hull',
'4x #gtceu:circuits/hv',
'4x gtceu:hv_electric_motor',
'4x #forge:rotors/titanium',
'4x gtceu:hv_electric_pump',
'4x #forge:gears/rocket_alloy_t1')
.itemOutputs('gtceu:moon_dust_harvester')
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
.circuit(2)
// Vacuum Intake
event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [
'USU',
'WZW',
'UTU'
removeMaceratorRecipe(event, 'macerate_power_substation')
event.recipes.gtceu.shaped('gtceu:power_substation', [
'ABA',
'CDC',
'ABA'
], {
S: '#forge:tools/hammers',
T: '#forge:tools/wrenches',
W: '#forge:rotors/ultimet',
U: 'gtceu:ultimet_normal_item_pipe',
Z: 'gtceu:inert_machine_casing'
}).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake')
event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake')
.itemInputs(
'2x #forge:rotors/ultimet',
'4x gtceu:ultimet_normal_item_pipe',
'1x gtceu:inert_machine_casing')
.itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake')
.duration(50)
.EUt(GTValues.VH[GTValues.LV])
.circuit(2)
// Stainless Evaporation Tower
event.recipes.gtceu.shaped('tfg:evaporation_tower', [
'TUT',
'WZW',
'TUT'
], {
T: '#gtceu:circuits/iv',
W: 'gtceu:ev_electric_pump',
U: '#forge:double_wires/nichrome',
Z: 'gtceu:ev_machine_hull'
}).addMaterialInfo().id('tfg:shaped/evaporation_tower')
//#endregion
//#region Nuclear Controler
event.shaped('deafission:fission_reactor_mk1', [
'TUT',
'WZW',
'TUT'
], {
T: 'gtceu:atomic_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:hv_field_generator',
Z: 'gtceu:ev_machine_hull'
}
).id('tfg:shaped/fission_reactor_mk1')
event.shaped('gtceu:nuclear_fuel_factory', [
'TUT',
'WZW',
'TBT'
], {
T: 'gtceu:atomic_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:ev_emitter',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ev_robot_arm'
}
).id('tfg:shaped/nuclear_fuel_factory')
event.shaped('gtceu:heat_exchanger', [
'TUT',
'WZW',
'GBG'
], {
T: 'gtceu:high_temperature_smelting_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:ev_sensor',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ev_fluid_regulator',
G: '#forge:gears/ostrum_iodide'
}
).id('tfg:shaped/heat_exchanger')
event.shaped('tfg:nuclear_turbine', [
'CTC',
'TZT',
'BTB'
], {
T: '#forge:gears/magnalium',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ultimet_large_item_pipe',
C: '#gtceu:circuits/ev'
}
).id('tfg:shaped/nuclear_turbine')
A: 'gtceu:lapotron_crystal',
B: 'gtceu:mpic_chip',
C: '#gtceu:circuits/ev',
D: 'gtceu:palladium_substation'
}).addMaterialInfo().id('gtceu:shaped/power_substation')
}

View file

@ -140,25 +140,103 @@ function registerGTCEURecyclingRecipes(event) {
.category(GTRecipeCategories.ARC_FURNACE_RECYCLING)
.EUt(GTValues.VA[GTValues.LV])
// #region Fix TFC hanging sign metal dupe for Macerator and Arc Furnace
// Clean Foil pack
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])
const SIGN_METALS = [
GTMaterials.Copper,
GTMaterials.Bronze,
GTMaterials.BlackBronze,
GTMaterials.BismuthBronze,
GTMaterials.WroughtIron,
GTMaterials.Steel,
GTMaterials.BlackSteel,
GTMaterials.RedSteel,
GTMaterials.BlueSteel
];
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])
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)
})
})
// #endregion
//#region support recycling
event.recipes.gtceu.macerator(`hardwood_support_to_dust`)
.itemInputs('#tfg:hardwood_supports')
.itemOutputs('gtceu:hardwood_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
event.recipes.gtceu.macerator(`softwood_support_to_dust`)
.itemInputs('#tfg:softwood_supports')
.itemOutputs('gtceu:wood_dust')
.duration(150)
.EUt(2)
.category(GTRecipeCategories.MACERATOR_RECYCLING);
//#endregion
}

View file

@ -817,6 +817,13 @@ function removeGTCEURecipes(event) {
event.remove({ id: 'gtceu:ore_washer/wash_plutonium_pure_dust_to_dust' })
event.remove({ id: 'gtceu:ore_washer/wash_plutonium_dirty_dust_to_dust' })
event.remove({ id: 'gtceu:forge_hammer/hammer_plutonium_refined_ore_to_dust' })
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_chromatic_compound' });
event.remove({ id: 'gtceu:chemical_reactor/soda_ash_from_carbon_dioxide' })
event.remove({ id: 'gtceu:large_chemical_reactor/soda_ash_from_carbon_dioxide' })
}
function removeMaceratorRecipe(event, id) {

View file

@ -25,10 +25,6 @@ function registerGTCEUItemTags(event) {
event.remove("minecraft:planks", "gtceu:wood_plate");
event.add("tfg:sugars", "minecraft:sugar");
event.add("tfg:sugars", "afc:birch_sugar");
event.add("tfg:sugars", "afc:maple_sugar");
global.MINECRAFT_DYE_NAMES.forEach((dyeName) => {
event.remove("ae2:p2p_attunements/fluid_p2p_tunnel", `gtceu:${dyeName}_dye_bucket`);
});

View file

@ -872,4 +872,52 @@ function registerImmersiveAircraftRecipes(event) {
}).id('tfg:immersive_aircraft/mechanical_crafter/bamboo_hopper')
//#endregion
// Custom stuff
//Scaffolding Frame
event.shaped('tfg:scaffolding_frame',
[
' A ',
'ABA',
' A '
],
{
A: '#forge:rods/wood',
B: '#forge:cloth'
}).id('tfg:shaped/scaffolding_frame');
//Airship Hull
event.shaped('tfg:airship_hull', [
'A B',
'C C',
'CCC'
], {
A: '#forge:tools/screwdrivers',
B: '#forge:tools/hammers',
C: 'immersive_aircraft:hull'
}).id('tfg:shaped/airship_hull');
event.recipes.gtceu.assembler('tfg:assembler/airship_hull')
.itemInputs('5x immersive_aircraft:hull')
.itemOutputs('tfg:airship_hull')
.duration(40)
.circuit(1)
.EUt(GTValues.VA[GTValues.ULV]);
//Airship Balloon
event.shaped('tfg:airship_balloon', [
'ABA',
'BAB',
'ABA'
], {
A: '#forge:string',
B: 'immersive_aircraft:sail'
}).id('tfg:shaped/airship_balloon')
event.recipes.gtceu.assembler('tfg:assembler/airship_balloon')
.itemInputs('4x immersive_aircraft:sail', '4x #forge:string')
.itemOutputs('tfg:airship_balloon')
.duration(40)
.circuit(1)
.EUt(GTValues.VA[GTValues.ULV])
}

View file

@ -180,7 +180,7 @@ TFCEvents.data(event => {
*/
LootJS.modifiers((event) => {
registerAdAstraLoots(event)
registerGTCEULoots(event)
registerTFGOreLoots(event)
registerLootrLoots(event)
registerPrimitiveCreaturesLoots(event)
registerSpeciesLoots(event)

View file

@ -10,26 +10,6 @@ const registerMinecraftRecipes = (event) => {
removeMinecraftRecipes(event)
registerMinecraftDyeRecipes(event)
//#region Выход: Земля, dirt
event.recipes.gtceu.macerator('dirt_from_bio_chaff')
.itemInputs('gtceu:bio_chaff')
.itemOutputs('tfc:dirt/loam')
.duration(300)
.EUt(4)
//#endregion
//#region Выход: Стекло, glass
event.recipes.gtceu.arc_furnace('glass_from_sand')
.itemInputs('#forge:sand')
.itemOutputs('2x minecraft:glass')
.duration(20)
.EUt(30)
//#endregion
//#region Добавление, copper
for (let i = 0; i < global.MINECRAFT_COPPER_BLOCKS_RECIPE_COMPONENTS.length; i++) {
@ -142,48 +122,6 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Выход: Бумага, paper
event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled')
.itemInputs('tfc:papyrus')
.inputFluids(Fluid.of('gtceu:distilled_water', 100))
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.chemical_bath('paper_from_papyrus')
.itemInputs('tfc:papyrus')
.inputFluids("#tfg:clean_water 100")
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.assembler('papyrus_strips')
.itemInputs('4x tfc:soaked_papyrus_strip')
.itemOutputs('minecraft:paper')
.circuit(1)
.duration(100)
.EUt(7)
//#endregion
//#region Выход: Сахар, sugar
event.recipes.gtceu.centrifuge('sugar_from_sugarcane')
.itemInputs('tfc:food/sugarcane')
.inputFluids("#tfg:clean_water 600")
.itemOutputs('minecraft:sugar', 'gtceu:plant_ball')
.duration(800)
.EUt(6)
event.recipes.gtceu.centrifuge('sugar_from_honey')
.itemInputs('firmalife:raw_honey')
.itemOutputs('minecraft:sugar')
.duration(400)
.EUt(6)
//#endregion
//#region Выход: Блок сена, hay block
event.recipes.gtceu.packer('hay_block')
@ -823,7 +761,6 @@ const registerMinecraftRecipes = (event) => {
//#region Выход: Элитра, elytra
// Ну и херь я придумал, here's some bullshit i came up with
event.recipes.gtceu.assembler('tfg:minecraft/elytra')
.itemInputs('16x tfg:polycaprolactam_fabric', '16x #forge:foils/aluminium', '8x tfg:phantom_silk', '4x #forge:rings/aluminium', '2x #forge:rods/long/vanadium_steel', '2x #forge:small_springs/aluminium', '1x #forge:small_gears/aluminium')
.circuit(4)
@ -861,16 +798,6 @@ const registerMinecraftRecipes = (event) => {
//#endregion
//#region Glowstone
event.recipes.gtceu.mixer('gtceu:lv_glowstone')
.itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust')
.itemOutputs('2x minecraft:glowstone_dust')
.circuit(8)
.duration(1200)
.EUt(30)
//#endregion
//#region Netherite leggings (for the lavaproof diving set)
@ -931,14 +858,6 @@ const registerMinecraftRecipes = (event) => {
generateCutterRecipe(event, '#forge:double_plates/wrought_iron', 'minecraft:iron_door', 400, GTValues.VA[GTValues.LV], 'iron_door')
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#forge:rods/wooden'
}).id('gtceu:shaped/ladder')
// #endregion
// #region Calcite
@ -1018,19 +937,6 @@ const registerMinecraftRecipes = (event) => {
event.smelting('tfc:glue', 'minecraft:magma_cream')
.id('tfg:smelting/magma_cream_to_glue')
//#region Clay
event.shaped('minecraft:clay', [
'AA',
'AA'
], {
A: 'minecraft:clay_ball'
})
.id('tfg:shaped/clay_balls_to_block')
event.shapeless('4x minecraft:clay_ball', ['minecraft:clay'])
.id('tfg:shapeless/clay_block_to_balls')
//#endregion
//#region Mushrooms

View file

@ -66,30 +66,6 @@ function registerSpeciesRecipes(event) {
B: 'firmaciv:rope_coil'
}).id('tfg:shaped/harpoon')
generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8,
'8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV])
event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg')
event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg')
event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv')
.itemInputs('species:cracked_wraptor_egg')
.itemOutputs('4x tfg:wraptor_sugar')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full')
.itemInputs('tfg:wraptor_egg')
.itemOutputs('4x tfg:wraptor_sugar')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.extractor('tfg:juice_sniffer_egg')
.itemInputs('tfg:sniffer_egg')
.outputFluids(Fluid.of('firmalife:cream', 1000))
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.shaped('species:ricoshield', [
'EBE',
'ACA',

View file

@ -7,8 +7,6 @@ const registerTFCDataForTFC = (event) => {
registerTFCLampFuels(event)
registerTFCFertilizers(event)
registerTFCKnappingTypes(event)
registerTFCItemSize(event)
registerTFCFoodData(event)
registerTFCArmourResistances(event)
}
@ -77,27 +75,6 @@ const registerTFCKnappingTypes = (event) => {
event.knappingType('tfc:straw', 4, 4, 'tfc:item.knapping.leather', false, false, false, 'tfc:straw', 'tfg:straw')
}
const registerTFCItemSize = (event) => {
event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores')
event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves')
event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves')
event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches')
event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers')
event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades')
}
const registerTFCFoodData = (event) => {
event.foodItem('firmalife:ice_shavings', food => {
food.water(5)
food.decayModifier(0)
})
}
const registerTFCArmourResistances = (event) => {
event.itemDamageResistance(
'create:copper_diving_helmet',

View file

@ -10,17 +10,8 @@ const registerTFCRecipes = (event) => {
removeTFCRecipes(event)
registerTFCMaterialsRecipes(event)
registerTFCMetalsRecipes(event)
registerTFCStoneRecipes(event)
registerTFCSandRecipes(event)
registerTFCDirtRecipes(event)
registerTFCWoodRecipes(event)
registerTFCKnappingRecipes(event)
registerTFCMachineRecipes(event)
registerTFCAlabasterRecipes(event)
registerTFCDyeRecipes(event)
//#region Рецепты порошков
// Добавление рецептов
global.TFC_QUERN_POWDER_RECIPE_COMPONENTS.forEach(element => {
event.recipes.gtceu.macerator(`tfg:${element.name}`)
@ -33,26 +24,6 @@ const registerTFCRecipes = (event) => {
.id(`tfg:quern/${element.name}`)
})
//#endregion
//#region Рецепты обжарки форм
global.TFC_FURNACE_MOLD_RECIPE_COMPONENTS.forEach(element => {
event.smelting(element.output, element.input)
.id(`tfg:smelting/${element.name}`)
})
global.MINECRAFT_DYE_NAMES.forEach(dye => {
event.smelting(`tfc:ceramic/${dye}_glazed_vessel`, `tfc:ceramic/${dye}_unfired_vessel`)
.id(`tfg:smelting/${dye}_glazed_vessel`)
event.smelting(`tfc:ceramic/large_vessel/${dye}`, `tfc:ceramic/unfired_large_vessel/${dye}`)
.id(`tfg:smelting/${dye}_large_vessel`)
})
//#endregion
//#region Рецепты электрической теплицы
// Дерево
@ -89,21 +60,12 @@ const registerTFCRecipes = (event) => {
const itemId = element.id;
const recipeId = `greenhouse_${itemId.replace(':', '_')}`;
generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`,
generateGreenHouseRecipe(event, itemId, '#tfc:any_fresh_water', 8000, `8x ${itemId}`,
recipeId, null, 8, itemId, GTValues.VH[GTValues.LV]);
});
//#endregion
event.shapeless('tfc:crucible', ['tfc:crucible']).id('tfg:empty_crucible')
event.shapeless('2x minecraft:stick', ['#minecraft:saplings', '#forge:tools/knives']).id('tfg:strip_saplings')
event.recipes.gtceu.cutter('tfg:saplings_to_sticks')
.itemInputs('#minecraft:saplings')
.itemOutputs('2x minecraft:stick')
.duration(20)
.EUt(7)
// Доменная печь
event.recipes.gtceu.shaped('tfc:blast_furnace', [
@ -126,40 +88,64 @@ const registerTFCRecipes = (event) => {
[TFC.ingredient.notRotten('tfc:pumpkin'), '#tfc:knives'], 'tfc:pumpkin')
.id(`tfc:crafting/pumpkin_chunks_knife`)
// Lime
// Flux + Lime
event.smelting('tfc:powder/lime', 'tfc:powder/flux')
.id('tfg:smelting/lime')
// Kaolinite Clay - regular smelting recipes can't have multiple inputs
event.recipes.gtceu.alloy_smelter('tfg:kaolinite')
.itemInputs('tfc:kaolin_clay')
.circuit(1)
.chancedOutput('tfc:powder/kaolinite', 2000, 0)
.duration(100)
.EUt(16)
event.recipes.gtceu.macerator('flux')
.itemInputs('#tfc:fluxstone')
.itemOutputs('2x tfc:powder/flux')
.duration(30)
.EUt(2)
// Fire Clay
event.recipes.gtceu.alloy_smelter('tfg:cheaper_fire_clay')
.itemInputs('#forge:dusts/graphite', '4x tfc:kaolin_clay')
.itemOutputs('2x tfc:fire_clay')
.duration(600)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.forge_hammer('flux')
.itemInputs('#tfc:fluxstone')
.itemOutputs('2x tfc:powder/flux')
.duration(30)
.EUt(2)
event.recipes.gtceu.alloy_smelter('tfg:oops_i_smelted_all_my_kaolin')
.itemInputs('minecraft:clay_ball', 'tfc:powder/kaolinite')
.itemOutputs('tfc:kaolin_clay')
.duration(600)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.greate.pressing('2x tfc:powder/flux', '#tfc:fluxstone')
.recipeTier(0)
.id('greate:pressing/flux')
// Выпаривание соли
// Salt Water
event.recipes.tfc.pot([], Fluid.of('tfc:salt_water', 625), 300, 100)
.itemOutput('gtceu:small_salt_dust')
.id('tfg:tfc/pot/salt')
// Salt Water
generateMixerRecipe(event, ['#forge:dusts/salt'], "#tfg:clean_water 1000",
[], 2, Fluid.of('tfc:salt_water', 1000), 40, 7, 64, 'tfg:tfc/salt_water')
event.recipes.gtceu.centrifuge('centrifuging_tfc_salt_water')
.inputFluids(Fluid.of('tfc:salt_water', 1000))
.itemOutputs('1x gtceu:salt_dust')
.outputFluids(Fluid.of('minecraft:water', 1000))
.duration(51)
.EUt(30)
.circuit(1)
event.recipes.gtceu.electrolyzer('electrolyze_tfc_salt_water')
.inputFluids(Fluid.of('tfc:salt_water', 1000))
.itemOutputs('1x gtceu:sodium_hydroxide_dust', '2x gtceu:small_sodium_hydroxide_dust')
.outputFluids(Fluid.of('gtceu:chlorine', 500), Fluid.of('gtceu:hydrogen', 500))
.duration(720)
.EUt(30)
// Add circuit to gregtech salt water mixer recipe
event.remove({ id: 'gtceu:mixer/salt_water' })
generateMixerRecipe(event, ['2x #forge:dusts/salt'], Fluid.of('minecraft:water', 1000), [], 1, Fluid.of('gtceu:salt_water', 1000), 40, 7, 64, 'tfg:gtceu/salt_water')
event.recipes.tfc.barrel_instant()
.inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1))
.inputFluid(Fluid.of('minecraft:water', 1000))
.outputFluid(Fluid.of('tfc:salt_water', 1000))
.id('tfg:barrel/water_to_salt_water')
event.recipes.tfc.barrel_instant()
.inputItem("tfc:powder/salt")
.inputFluid(Fluid.of('minecraft:water', 250))
.outputFluid(Fluid.of('tfc:salt_water', 250))
.id('tfg:barrel/water_to_salt_water_tfc')
// Seaweed and kelp
event.recipes.tfc.heating('tfc:groundcover/seaweed', 200)
@ -176,20 +162,9 @@ const registerTFCRecipes = (event) => {
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')
//#region Обрушения
event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs')
event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs')
event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls')
//#endregion
//More accesible solar drier
event.replaceInput({ id: 'firmalife:crafting/solar_drier' }, 'gtceu:stainless_steel_rod', 'gtceu:silver_rod')
//Wood ash
event.recipes.create.splashing([Item.of('tfc:powder/wood_ash').withChance(0.25), Item.of('minecraft:stick').withChance(0.25)], 'tfc:torch')
.id('tfg:splashing/wash_torch')
//Lye
generateMixerRecipe(event, 'tfc:powder/wood_ash', "#tfg:clean_water 200",
@ -204,102 +179,37 @@ const registerTFCRecipes = (event) => {
.EUt(2)
// Brass Mechanism
event.recipes.shapeless('gtceu:small_brass_gear', [ 'tfc:brass_mechanisms' ]).id('tfg:replace_brass_mechanisms')
event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear')
event.recipes.shapeless('gtceu:small_brass_gear', ['tfc:brass_mechanisms']).id('tfg:replace_brass_mechanisms')
event.replaceInput({ input: 'tfc:brass_mechanisms' }, 'tfc:brass_mechanisms', 'gtceu:small_brass_gear')
// Fertilizers
event.recipes.gtceu.centrifuge('tfg:gtceu/centrifuge/pure_fertilizers')
.itemInputs('1x gtceu:fertilizer')
.itemOutputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus')
.duration(340)
.EUt(GTValues.VA[GTValues.ULV])
// Rennet
event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet')
.itemInputs('#tfg:ferments_to_rennet')
.itemOutputs('firmalife:rennet')
.duration(400)
.EUt(16)
event.recipes.gtceu.mixer('tfg:tfc/mixer/fertilizer')
.itemInputs('1x tfc:pure_nitrogen', '1x tfc:pure_potassium', '1x tfc:pure_phosphorus', ChemicalHelper.get(TagPrefix.dustSmall, GTMaterials.Clay, 1))
.itemOutputs('1x gtceu:fertilizer')
.duration(160)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet')
.inputFluids(Fluid.of('gtceu:fermented_biomass', 100))
.itemOutputs('firmalife:rennet')
.duration(2400)
.EUt(16)
event.recipes.gtceu.gas_pressurizer('tfg:pure_nitrogen')
.itemInputs('#forge:wax')
.inputFluids(Fluid.of('gtceu:nitrogen', 1000))
.itemOutputs('16x tfc:pure_nitrogen')
// Brine
event.recipes.gtceu.mixer('tfg:tfc/brine')
.inputFluids(Fluid.of('tfc:salt_water', 900))
.inputFluids(Fluid.of('tfc:vinegar', 100))
.outputFluids(Fluid.of('tfc:brine', 1000))
.duration(100)
.EUt(GTValues.VA[GTValues.LV])
.EUt(16)
//Hide Sewing
const stages = [
'raw',
'soaked',
'scraped',
'prepared',
'sheepskin'
];
stages.forEach(stage => {
//Combining
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`1x tfc:medium_${stage}_hide`, [
`2x tfc:small_${stage}_hide`,
'#tfc:sewing_needles',
'#forge:string',
'tfc:glue'
]).id(`tfg:tfc/small_to_medium_${stage}_hide`)
)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`1x tfc:large_${stage}_hide`, [
`3x tfc:small_${stage}_hide`,
'#tfc:sewing_needles',
'#forge:string',
'tfc:glue'
]).id(`tfg:tfc/small_to_large_${stage}_hide`)
)
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_medium_${stage}_hide`)
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs(`1x tfc:medium_${stage}_hide`)
.itemInputs(`2x tfc:small_${stage}_hide`)
.duration(60)
.circuit(7)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/small_to_large_${stage}_hide`)
.inputFluids(Fluid.of('gtceu:glue', 25))
.itemOutputs(`1x tfc:large_${stage}_hide`)
.itemInputs(`3x tfc:small_${stage}_hide`)
.duration(60)
.circuit(9)
.EUt(GTValues.VA[GTValues.ULV])
//Cutting
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`2x tfc:small_${stage}_hide`, [
`1x tfc:medium_${stage}_hide`,
'#forge:shears'
]).id(`tfg:tfc/medium_to_small_${stage}_hide`)
)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless(`3x tfc:small_${stage}_hide`, [
`1x tfc:large_${stage}_hide`,
'#forge:shears'
]).id(`tfg:tfc/large_to_small_${stage}_hide`)
)
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/medium_to_small_${stage}_hide`)
.itemOutputs(`2x tfc:small_${stage}_hide`)
.itemInputs(`1x tfc:medium_${stage}_hide`)
.duration(60)
.circuit(4)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.assembler(`tfg:gtceu/assembler/large_to_small_${stage}_hide`)
.itemOutputs(`3x tfc:small_${stage}_hide`)
.itemInputs(`1x tfc:large_${stage}_hide`)
.duration(60)
.circuit(6)
.EUt(GTValues.VA[GTValues.ULV])
});
// LimeWater + Sand -> Mortar
event.recipes.gtceu.mixer('mortar')
.itemInputs('#forge:sand')
.inputFluids(Fluid.of('tfc:limewater', 100))
.itemOutputs('16x tfc:mortar')
.duration(800)
.EUt(8)
// Jar lids
@ -311,46 +221,25 @@ const registerTFCRecipes = (event) => {
event.replaceInput({ mod: 'tfc' }, 'minecraft:sugar', '#tfg:sugars')
// Sea Water
event.recipes.tfc.barrel_instant()
.inputItem(ChemicalHelper.get(TagPrefix.dust, GTMaterials.Salt, 1))
.inputFluid(Fluid.of('minecraft:water', 1000))
.outputFluid(Fluid.of('tfc:salt_water', 1000))
.id('tfg:barrel/water_to_salt_water')
event.recipes.tfc.barrel_instant()
.inputItem("tfc:powder/salt")
.inputFluid(Fluid.of('minecraft:water', 250))
.outputFluid(Fluid.of('tfc:salt_water', 250))
.id('tfg:barrel/water_to_salt_water_tfc')
// jute net -> burlap net
event.replaceInput({ id: 'tfc:crafting/jute_net' }, 'tfc:jute_fiber', '#tfg:burlap_fiber')
// jute net -> burlap net
event.replaceInput({ id: 'tfc:crafting/jute_net'}, 'tfc:jute_fiber', '#tfg:burlap_fiber')
// horse armor to use burlap
global.TFC_EQUIPMENT_METALS.forEach(material => {
event.replaceInput({ id: `tfc:crafting/${material}_horse_armor`}, `tfc:jute_fiber`, `#tfg:burlap_fiber`)
})
// Just a dummy recipe to tell people they can get wood ash by throwing torches in water via TFC
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [{ item: 'tfc:torch' }],
result: { item: 'tfc:powder/wood_ash' }
}).id(`tfg:ae_transform/torch_to_wood_ash`)
event.shaped('8x minecraft:ladder', [
'A A',
'AAA',
'A A'
], {
A: '#tfc:lumber'
}).id('tfc:crafting/vanilla/ladder')
event.replaceInput({ id: 'tfc:crafting/vanilla/armor_stand' }, '#minecraft:planks', '#tfc:lumber')
event.remove({ id: 'tfc:crafting/vanilla/armor_stand_bulk' })
// horse armor to use burlap
global.TFC_EQUIPMENT_METALS.forEach(material => {
event.replaceInput({ id: `tfc:crafting/${material}_horse_armor` }, `tfc:jute_fiber`, `#tfg:burlap_fiber`)
})
event.recipes.gtceu.centrifuge('tfg:soot')
.itemInputs('tfc:soot')
.itemOutputs('#forge:dusts/carbon')
.duration(20)
.EUt(2)
event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only')
.itemInputs('2x #forge:plates/wrought_iron')
.notConsumable('tfg:large_casing_extruder_mold')
.itemOutputs('tfc:wrought_iron_grill')
.duration(60)
.EUt(8)
}

View file

@ -1,452 +0,0 @@
// priority: 0
"use strict";
function registerTFCMachineRecipes(event) {
// Бумага
event.recipes.gtceu.cutter('tfg:unrefined_paper')
.itemInputs('tfc:unrefined_paper')
.itemOutputs('minecraft:paper')
.duration(100)
.EUt(7)
// Limewater
event.recipes.gtceu.mixer('tfg:limewater_from_lime')
.itemInputs('tfc:powder/lime')
.inputFluids(Fluid.of('water', 500))
.outputFluids(Fluid.of('tfc:limewater', 500))
.duration(20)
.EUt(16)
event.recipes.gtceu.mixer('tfg:limewater_from_flux')
.itemInputs('tfc:powder/flux')
.inputFluids(Fluid.of('water', 500))
.outputFluids(Fluid.of('tfc:limewater', 500))
.duration(20)
.EUt(16)
// Tannin
event.recipes.gtceu.chemical_bath('tfg:tannin')
.itemInputs('#tfc:makes_tannin')
.inputFluids(Fluid.of('water', 1000))
.outputFluids(Fluid.of('tfc:tannin', 1000))
.duration(2400)
.EUt(16)
// Soaked hides
event.recipes.gtceu.chemical_bath('tfg:small_soaked_hide')
.itemInputs('tfc:small_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 300))
.itemOutputs('tfc:small_soaked_hide')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_soaked_hide')
.itemInputs('tfc:medium_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 400))
.itemOutputs('tfc:medium_soaked_hide')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_soaked_hide')
.itemInputs('tfc:large_raw_hide')
.inputFluids(Fluid.of('tfc:limewater', 500))
.itemOutputs('tfc:large_soaked_hide')
.duration(3200)
.EUt(16)
// Scraped Hides
event.recipes.gtceu.cutter('tfg:small_scraped_hide')
.itemInputs('tfc:small_soaked_hide')
.itemOutputs('tfc:small_scraped_hide')
.duration(100)
.EUt(7)
event.recipes.gtceu.cutter('tfg:medium_scraped_hide')
.itemInputs('tfc:medium_soaked_hide')
.itemOutputs('tfc:medium_scraped_hide')
.duration(100)
.EUt(7)
event.recipes.gtceu.cutter('tfg:large_scraped_hide')
.itemInputs('tfc:large_soaked_hide')
.itemOutputs('tfc:large_scraped_hide')
.duration(100)
.EUt(7)
// Prepared hides
event.recipes.gtceu.chemical_bath('tfg:small_prepared_hide')
.itemInputs('tfc:small_soaked_hide')
.inputFluids(Fluid.of('water', 300))
.itemOutputs('tfc:small_prepared_hide')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_prepared_hide')
.itemInputs('tfc:medium_soaked_hide')
.inputFluids(Fluid.of('water', 400))
.itemOutputs('tfc:medium_prepared_hide')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_prepared_hide')
.itemInputs('tfc:large_soaked_hide')
.inputFluids(Fluid.of('water', 500))
.itemOutputs('tfc:large_prepared_hide')
.duration(3200)
.EUt(16)
// Leather
event.recipes.gtceu.chemical_bath('tfg:small_leather')
.itemInputs('tfc:small_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 300))
.itemOutputs('minecraft:leather')
.duration(1600)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:medium_leather')
.itemInputs('tfc:medium_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 400))
.itemOutputs('2x minecraft:leather')
.duration(2400)
.EUt(16)
event.recipes.gtceu.chemical_bath('tfg:large_leather')
.itemInputs('tfc:large_prepared_hide')
.inputFluids(Fluid.of('tfc:tannin', 500))
.itemOutputs('3x minecraft:leather')
.duration(3200)
.EUt(16)
//#region Молды в ассемблере
for (let i = 0; i < global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
let element = global.TFC_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i];
event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.circuit(i)
.itemOutputs(element.output)
.duration(450)
.EUt(2)
}
for (let i = 0; i < global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS.length; i++) {
let element = global.TFC_FIRE_CLAY_TO_UNFIRED_MOLD_RECIPE_COMPONENTS[i];
event.recipes.gtceu.assembler(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.circuit(i)
.itemOutputs(element.output)
.duration(450)
.EUt(2)
}
event.recipes.gtceu.extruder('tfg:unfired_clay_brick')
.itemInputs('minecraft:clay_ball')
.notConsumable('gtceu:ingot_extruder_mold')
.itemOutputs('tfc:ceramic/unfired_brick')
.duration(20)
.EUt(2)
event.recipes.gtceu.extruder('tfg:unfired_fire_clay_brick')
.itemInputs('tfc:fire_clay')
.notConsumable('gtceu:ingot_extruder_mold')
.itemOutputs('tfc:ceramic/unfired_fire_brick')
.duration(20)
.EUt(2)
//#endregion
//#region Стеклянные смеси в бутылки в ассемблере
global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => {
event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.notConsumable('gtceu:bottle_casting_mold')
.itemOutputs(element.output)
.duration(100)
.EUt(2)
.category(GTRecipeCategories.INGOT_MOLDING)
})
//#endregion
//#region СЫЫЫР 0_0
// Rennet
event.recipes.gtceu.fermenter('tfg:fermenter/vegetable_rennet')
.itemInputs('#tfg:ferments_to_rennet')
.itemOutputs('firmalife:rennet')
.duration(400)
.EUt(16)
event.recipes.gtceu.fermenter('tfg:fermenter/biomass_rennet')
.inputFluids(Fluid.of('gtceu:fermented_biomass', 100))
.itemOutputs('firmalife:rennet')
.duration(2400)
.EUt(16)
//#endregion
// Brine
event.recipes.gtceu.mixer('tfg:tfc/brine')
.inputFluids(Fluid.of('tfc:salt_water', 900))
.inputFluids(Fluid.of('tfc:vinegar', 100))
.outputFluids(Fluid.of('tfc:brine', 1000))
.duration(100)
.EUt(16)
//#endregion
// Lamp Glass
event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`)
.itemInputs('#tfc:glass_batches')
.notConsumable('#tfg:unfinished_lamps')
.itemOutputs('tfc:lamp_glass')
.duration(100)
.EUt(2)
event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`)
.itemInputs('#forge:dusts/glass')
.notConsumable('#tfg:unfinished_lamps')
.itemOutputs('tfc:lamp_glass')
.duration(100)
.EUt(2)
// Empty Jar
event.recipes.gtceu.alloy_smelter('tfc:jar_alloying')
.itemInputs('#tfc:glass_batches_tier_2')
.notConsumable('gtceu:ball_casting_mold')
.itemOutputs('tfc:empty_jar')
.duration(100)
.EUt(2)
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification')
.inputFluids(Fluid.of('gtceu:glass', 144))
.notConsumable('gtceu:cylinder_casting_mold')
.itemOutputs('tfc:empty_jar')
.duration(100)
.EUt(2)
event.recipes.gtceu.extractor('tfc:jar_extraction')
.itemInputs('#tfc:jars')
.outputFluids(Fluid.of('gtceu:glass', 144))
.duration(50)
.EUt(2)
event.recipes.gtceu.extractor('tfc:glass_batch_extraction')
.itemInputs('#tfc:glass_batches')
.outputFluids(Fluid.of('gtceu:glass', 144))
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe('tfc:lens')
.itemInputs('#forge:glass')
.itemOutputs('tfc:lens')
.duration(100)
.EUt(16)
// Wool Yarn
event.recipes.gtceu.macerator('macerate_wool')
.itemInputs('#minecraft:wool')
.itemOutputs('tfc:wool_yarn')
.chancedOutput('tfc:wool_yarn', 9000, 0)
.chancedOutput('tfc:wool_yarn', 5000, 0)
.chancedOutput('tfc:wool_yarn', 2000, 0)
.duration(200)
.EUt(2)
// LimeWater + Sand -> Mortar
event.recipes.gtceu.mixer('mortar')
.itemInputs('#forge:sand')
.inputFluids(Fluid.of('tfc:limewater', 100))
.itemOutputs('16x tfc:mortar')
.duration(800)
.EUt(8)
// 1x Small SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_1')
.itemInputs('tfc:small_sheepskin_hide')
.itemOutputs('tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
// 1x Medium SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_2')
.itemInputs('tfc:medium_sheepskin_hide')
.itemOutputs('2x tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
// 1x Large SheepSkin -> 1x Wool
event.recipes.gtceu.assembler('tfg:tfc/wool_3')
.itemInputs('tfc:large_sheepskin_hide')
.itemOutputs('3x tfc:wool')
.duration(100)
.circuit(3)
.EUt(4)
// Wool Yarn
event.recipes.gtceu.wiremill('tfg:tfc/wool_yarn')
.itemInputs('tfc:wool')
.itemOutputs('8x tfc:wool_yarn')
.duration(100)
.EUt(4)
// Burlap Cloth
event.recipes.gtceu.assembler('tfg:tfc/burlap_cloth')
.itemInputs('12x tfc:jute_fiber')
.circuit(0)
.itemOutputs('tfc:burlap_cloth')
.duration(100)
.EUt(4)
// Silk Cloth
event.recipes.gtceu.assembler('tfg:tfc/silk_cloth')
.itemInputs('24x minecraft:string')
.circuit(0)
.itemOutputs('tfc:silk_cloth')
.duration(100)
.EUt(4)
// Wool Cloth
event.recipes.gtceu.assembler('tfg:tfc/wool_cloth')
.itemInputs('16x tfc:wool_yarn')
.circuit(0)
.itemOutputs('tfc:wool_cloth')
.duration(100)
.EUt(4)
// Cloths to Wool
event.recipes.gtceu.assembler('tfg:tfc/cloth_to_wool')
.itemInputs('4x #tfc:sewing_light_cloth')
.itemOutputs('8x minecraft:white_wool')
.circuit(16)
.duration(100)
.EUt(4)
// Jute Fiber
generateMixerRecipe(event, 'tfc:jute', "#tfg:clean_water 200",
'tfc:jute_fiber', null, [], 100, 4, 16, 'tfg:tfc/jute_fiber')
// Ceramic Recycling
event.recipes.gtceu.macerator('tfg:sherd_to_brick_dust')
.itemInputs('firmalife:pottery_sherd')
.itemOutputs('#forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:ceramic_molds')
.itemInputs('#tfc:fired_molds')
.itemOutputs('2x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:large_vessels')
.itemInputs('#tfc:fired_large_vessels')
.itemOutputs('5x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:casting_channel')
.itemInputs('tfcchannelcasting:channel')
.itemOutputs('1x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
event.recipes.gtceu.macerator('tfg:mold_table')
.itemInputs('tfcchannelcasting:mold_table')
.itemOutputs('5x #forge:dusts/brick')
.category(GTRecipeCategories.MACERATOR_RECYCLING)
.duration(20)
.EUt(2)
// Humus and compost
event.recipes.gtceu.extractor('tfg:humus_from_leaves')
.itemInputs('#minecraft:leaves')
.itemOutputs('tfc:groundcover/humus')
.duration(600)
.EUt(2)
event.recipes.gtceu.extractor('tfg:humus_from_fallen_leaves')
.itemInputs('#tfc:fallen_leaves')
.itemOutputs('tfc:groundcover/humus')
.duration(600)
.EUt(2)
event.recipes.gtceu.fermenter('tfg:fertilizer_to_compost')
.itemInputs('4x gtceu:fertilizer')
.itemOutputs('tfc:compost')
.duration(1200)
.EUt(2)
const BROWNS = [ '16x #tfc:compost_browns_low', '8x #tfc:compost_browns', '4x #tfc:compost_browns_high' ];
const GREENS = [ '16x #tfc:compost_greens_low', '8x #tfc:compost_greens', '4x #tfc:compost_greens_high' ];
let i = 0;
BROWNS.forEach(brown => {
GREENS.forEach(green => {
event.recipes.gtceu.mixer(`tfg:compost_${i++}`)
.itemInputs(brown, green)
.itemOutputs('tfc:compost')
.duration(1200)
.EUt(2)
})
})
event.recipes.gtceu.centrifuge('tfg:soot')
.itemInputs('tfc:soot')
.itemOutputs('#forge:dusts/carbon')
.duration(20)
.EUt(2)
// Stripped logs
global.TFC_WOOD_TYPES.forEach(wood => {
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_log`)
.itemInputs(`tfc:wood/log/${wood}`)
.itemOutputs(`tfc:wood/stripped_log/${wood}`)
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe(`tfg:stripping_${wood}_wood`)
.itemInputs(`tfc:wood/wood/${wood}`)
.itemOutputs(`tfc:wood/stripped_wood/${wood}`)
.duration(50)
.EUt(2)
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: `tfc:wood/log/${wood}` }],
results: [{ item: `tfc:wood/stripped_log/${wood}` }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_${wood}_log`)
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: `tfc:wood/wood/${wood}` }],
results: [{ item: `tfc:wood/stripped_wood/${wood}` }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_${wood}_wood`)
})
event.recipes.gtceu.extruder('tfg:wrought_iron_grill_electric_only')
.itemInputs('2x #forge:plates/wrought_iron')
.notConsumable('tfg:large_casing_extruder_mold')
.itemOutputs('tfc:wrought_iron_grill')
.duration(60)
.EUt(8)
}

View file

@ -200,39 +200,6 @@ function registerTFCMetalsRecipes(event) {
.duration(700)
.EUt(4)
// Rose Gold + Sterling Silver
const copper_types = [
"#forge:ingots/copper",
"#forge:dusts/copper",
"#forge:ingots/annealed_copper",
"#forge:dusts/annealed_copper"
];
const gold_types = [
"#forge:ingots/gold",
"#forge:dusts/gold"
];
const silver_types = [
"#forge:ingots/silver",
"#forge:dusts/silver"
];
copper_types.forEach(copper_types_array => {
gold_types.forEach(gold_types_array => {
event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
silver_types.forEach(silver_types_array => {
event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
});
const TFC_INTERMEDIATE_METALS =
[
@ -401,6 +368,10 @@ function registerTFCMetalsRecipes(event) {
})
//#endregion
event.smelting('minecraft:iron_ingot', '#forge:ingots/wrought_iron')
.id('tfg:revert_wrought_iron_ingot')
// Melting powders
const METAL_POWDERS = [

View file

@ -1,55 +0,0 @@
// priority: 0
"use strict";
function registerTFCWoodRecipes(event) {
event.replaceInput({ output: '#tfc:sewing_tables'}, '#forge:shears', '#forge:tools/knives')
// Какие то рецепты дерева
global.TFC_WOOD_TYPES.forEach(wood => {
event.remove({ id: `tfc:crafting/wood/${wood}_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_bladed_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_encased_axle` })
event.remove({ id: `tfc:crafting/wood/${wood}_clutch` })
event.remove({ id: `tfc:crafting/wood/${wood}_gear_box` })
event.remove({ id: `tfc:crafting/wood/${wood}_water_wheel` })
// Бревна -> Пиломатериалы
generateCutterRecipe(event, `#tfc:${wood}_logs`, `16x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_log`)
// Доски -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}`, `4x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_planks`)
// Ступень -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_stairs`, `3x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_stairs`)
// Плита -> Пиломатериалы
generateCutterRecipe(event, `tfc:wood/planks/${wood}_slab`, `2x tfc:wood/lumber/${wood}`, 50, 7, `${wood}_lumber_from_slab`)
// ? -> Деревянная нажимная пластина
event.shaped(`tfc:wood/planks/${wood}_pressure_plate`, [
' B ',
'CDC',
' E '
], {
B: '#tfc:hammers',
C: `tfc:wood/planks/${wood}_slab`,
D: '#forge:small_springs',
E: '#forge:tools/screwdrivers'
}).id(`tfc:crafting/wood/${wood}_pressure_plate`)
event.recipes.gtceu.assembler(`${wood}_pressure_plate`)
.itemInputs('#forge:small_springs', `2x tfc:wood/planks/${wood}_slab`)
.circuit(3)
.itemOutputs(`2x tfc:wood/planks/${wood}_pressure_plate`)
.duration(50)
.EUt(2)
// ? -> Деревянная кнопка
event.remove({ id: `tfc:crafting/wood/${wood}_button` })
generateCutterRecipe(event, `tfc:wood/planks/${wood}_pressure_plate`, `6x tfc:wood/planks/${wood}_button`, 50, 7, `${wood}_button`)
})
}

View file

@ -301,6 +301,16 @@ function registerTFGItemSize(event) {
event.itemSize("tfg:beaker", "large", "heavy", "tfg/beaker");
event.itemSize("tfg:flask", "normal", "medium", "tfg/flask");
event.itemSize("tfg:vial", "tiny", "light", "tfg/vial");
event.itemSize('#tfc:ore_pieces', 'very_small', 'very_light', 'tfc_ores')
event.itemSize('#tfc:foods/sealed_preserves', 'tiny', 'medium', 'sealed_preserves')
event.itemSize('#tfc:foods/preserves', 'tiny', 'medium', 'preserves')
event.itemSize('#forge:tools/wrenches', 'very_large', 'very_heavy', 'wrenches')
event.itemSize('#forge:tools/mining_hammers', 'very_large', 'very_heavy', 'mining_hammers')
event.itemSize('#forge:tools/spades', 'very_large', 'very_heavy', 'spades')
}
//#endregion
@ -328,949 +338,4 @@ function registerTFGSupportData(event) {
});
}
//#endregion
//#region Food Data
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFoodData(event) {
// Birt
event.foodItem("tfg:food/raw_birt", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_birt", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Crawlermari
event.foodItem("tfg:food/raw_crawlermari", (food) => {
food.hunger(2);
food.water(5);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_crawlermari", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Limpet
event.foodItem("tfg:food/raw_limpet", (food) => {
food.hunger(2);
food.water(5);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_limpet", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Moon Rabbit
event.foodItem("tfg:food/raw_moon_rabbit", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_moon_rabbit", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Glacian Mutton
event.foodItem("tfg:food/raw_glacian_mutton", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_glacian_mutton", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Sniffer Beef
event.foodItem("tfg:food/raw_sniffer_beef", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_sniffer_beef", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Wraptor
event.foodItem("tfg:food/raw_wraptor", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_wraptor", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Springling Collar
event.foodItem("tfg:food/raw_springling_collar", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_springling_collar", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Surfer Steak
event.foodItem("tfg:food/raw_surfer_steak", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_surfer_steak", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Cruncher Ribs
event.foodItem("tfg:food/raw_cruncher_ribs", (food) => {
food.hunger(2);
food.protein(2.0);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => {
food.hunger(4);
food.saturation(2.2);
food.protein(4);
food.decayModifier(2.25);
});
// Long Pig Filet
event.foodItem("tfg:food/raw_long_pig_filet", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_long_pig_filet", (food) => {
food.hunger(2);
food.saturation(2);
food.protein(2);
food.decayModifier(2.25);
});
// Stackatick Chunks
event.foodItem("tfg:food/raw_stackatick_chunks", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/raw_stickastackatick", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_stickastackatick", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Walker Steak
event.foodItem("tfg:food/raw_walker_steak", (food) => {
food.hunger(2);
food.protein(2.0);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_walker_steak", (food) => {
food.hunger(4);
food.saturation(2.2);
food.protein(4);
food.decayModifier(2.25);
});
// Glider Wings
event.foodItem("tfg:food/raw_glider_wings", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_glider_wings", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.75);
food.decayModifier(2.25);
});
// Soarer
event.foodItem("tfg:food/raw_whole_soarer", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_whole_soarer", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3.1);
food.decayModifier(2.25);
});
// Crusher Meat
event.foodItem("tfg:food/raw_crusher_meat", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_crusher_meat", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Goober Meat
event.foodItem("tfg:food/raw_goober_meat", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
food.water(1);
});
event.foodItem("tfg:food/cooked_goober_meat", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// high-tech food
global.FOOD_FRUIT.forEach((fruit) => {
event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => {
food.hunger(4);
food.saturation(fruit.saturation);
food.water(0);
food.fruit(fruit.fruit);
food.decayModifier(fruit.decay);
});
});
event.foodItem("tfg:food/calorie_paste", (food) => {
food.hunger(6);
food.saturation(4);
food.decayModifier(4.5);
food.grain(0.1);
food.vegetables(0.2);
food.protein(0.2);
});
event.foodItem("tfg:food/meal_bag", (food) => {
food.type("dynamic");
});
// Sunflower products
event.foodItem("tfg:roasted_sunflower_seeds", (food) => {
food.hunger(4);
food.decayModifier(0.5);
food.grain(0.1);
food.saturation(0.5);
});
event.foodItem("tfg:sunflower_product", (food) => {
food.decayModifier(0.5);
});
// Amber Roots
event.foodItem("betterend:amber_root_product", (food) => {
food.hunger(4);
food.decayModifier(1);
food.saturation(1);
food.grain(3);
});
// Blossom Berries
event.foodItem("betterend:blossom_berry_product", (food) => {
food.hunger(5);
food.decayModifier(2);
food.saturation(1);
food.water(7.5);
food.fruit(2.1);
});
// Cave Pumpkin
event.foodItem("betterend:cave_pumpkin", (food) => {
food.hunger(4);
food.saturation(0);
food.decayModifier(0.5);
});
event.foodItem("betterend:cave_pumpkin_chunks", (food) => {
food.hunger(4);
food.saturation(1);
food.decayModifier(2.5);
food.water(5);
food.fruit(0.8);
});
event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => {
food.hunger(2);
food.decayModifier(3);
});
event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => {
food.hunger(2);
food.decayModifier(3);
});
event.foodItem("betterend:cave_pumpkin_pie", (food) => {
food.hunger(4);
food.saturation(2.8);
food.decayModifier(1.5);
food.water(5);
food.protein(1);
food.fruit(5);
food.grain(4);
food.dairy(1);
});
// Chorus Mushroom
event.foodItem("betterend:chorus_mushroom_product", (food) => {
food.hunger(2);
food.saturation(1);
food.decayModifier(3);
food.water(3);
food.vegetables(1.5);
});
event.foodItem("betterend:chorus_mushroom_cooked", (food) => {
food.hunger(2);
food.saturation(2.1);
food.decayModifier(1.5);
food.vegetables(2.5);
});
// Shadow Berry
event.foodItem("betterend:shadow_berry_product", (food) => {
food.hunger(5);
food.decayModifier(2);
food.saturation(1);
food.water(5);
food.fruit(1.9);
});
event.foodItem("betterend:shadow_berry_cooked", (food) => {
food.hunger(5);
food.decayModifier(1);
food.saturation(2);
food.fruit(2.2);
});
// Bolux Mushroom
event.foodItem("betterend:bolux_mushroom_product", (food) => {
food.hunger(2);
food.saturation(1);
food.decayModifier(3);
food.water(3);
food.vegetables(1.5);
});
event.foodItem("betterend:bolux_mushroom_cooked", (food) => {
food.hunger(2);
food.saturation(2);
food.decayModifier(1.5);
food.vegetables(2.4);
});
// Dino Nuggets
event.foodItem('tfg:food/raw_dino_nugget', (food) => {
food.type("dynamic");
food.hunger(1);
food.decayModifier(3);
});
event.foodItem('tfg:food/cooked_dino_nugget', (food) => {
food.type("dynamic");
food.hunger(3);
food.saturation(2);
food.decayModifier(1.5);
});
// Ice Soup
event.foodItem("tfg:food/ice_soup", (food) => {
food.hunger(1);
food.water(20);
food.decayModifier(0);
});
// Fries
event.foodItem('tfg:food/raw_fries', (food) => {
food.hunger(1);
food.decayModifier(3);
food.vegetables(0.25);
});
event.foodItem('tfg:food/cooked_fries', (food) => {
food.hunger(2);
food.decayModifier(1.5);
food.vegetables(0.6);
food.saturation(2);
});
// Cheese Curds
event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => {
food.hunger(1);
food.decayModifier(1.3);
food.dairy(1);
food.saturation(1);
});
event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => {
food.hunger(3);
food.decayModifier(0.8);
food.dairy(1.2);
food.saturation(2);
food.grain(0.5);
});
// Hamburgers
event.foodItem('tfg:food/raw_burger_patty', (food) => {
food.hunger(2);
food.decayModifier(2.3);
food.protein(2);
});
event.foodItem('tfg:food/cooked_burger_patty', (food) => {
food.hunger(4);
food.decayModifier(2);
food.protein(2.5);
food.saturation(2);
});
event.foodItem('tfg:food/brioche_dough', (food) => {
food.hunger(1.5);
food.decayModifier(2.3);
});
event.foodItem('tfg:food/brioche_bun', (food) => {
food.hunger(3.5);
food.decayModifier(1.5);
food.grain(1.5);
food.dairy(0.5);
food.saturation(1);
});
event.foodItem('tfg:food/hamburger', (food) => {
food.type("dynamic");
});
event.foodItem('tfg:food/cheeseburger', (food) => {
food.type("dynamic");
});
// Poutine
event.foodItem('tfg:food/poutine', (food) => {
food.type("dynamic_bowl");
});
// Oatmeal
event.foodItem('tfg:food/oatmeal', (food) => {
food.type("dynamic_bowl");
});
// Biochem Items
event.foodItem("tfg:progenitor_cells", (food) => {
food.decayModifier(1);
});
event.foodItem("tfg:rough_endoplasmic_reticula", (food) => {
food.decayModifier(0.5);
});
event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => {
food.decayModifier(0.5);
});
// Instant Mac
event.foodItem('tfg:food/raw_instant_mac', (food) => {
food.hunger(2);
food.decayModifier(0.2);
});
event.foodItem('tfg:food/cooked_instant_mac', (food) => {
food.hunger(3.5);
food.decayModifier(1.6);
food.grain(1.5);
food.dairy(2.5);
food.protein(0.8);
food.saturation(1.8);
});
//#region Drinkables
// Proto Growth Medium
event.drinkable("tfg:proto_growth_medium", (data) => {
data.thirst(10);
data.food(food => {
food.dairy(5);
food.protein(1);
});
data.effect("minecraft:absorption", (effect) => {
effect.amplifier(2);
effect.chance(0.25);
effect.duration(1200);
});
});
// Semiheavy Ammoniacal Water
event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => {
data.thirst(10);
data.effect("minecraft:nausea", (effect) => {
effect.chance(0.5);
effect.duration(200);
});
});
// Rich Stock
event.drinkable('tfg:rich_stock', (data) => {
data.thirst(4);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.2);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.25);
food.vegetables(0.25);
});
});
// Light Stock
event.drinkable('tfg:light_stock', (data) => {
data.thirst(4);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.2);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.25);
food.vegetables(0.25);
});
});
// Brown Gravy
event.drinkable('tfg:brown_gravy', (data) => {
data.thirst(2);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.3);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.5);
food.vegetables(0.5);
food.grain(0.25);
});
});
//#endregion
}
//#endregion
//#region Crop Data
/** @param {Internal.TFCDataEventJS} event */
function registerTFGCropRanges(event) {
// Earth
event.climateRange((climate) => {
climate.minHydration(20);
climate.maxHydration(80);
climate.minTemperature(5);
climate.maxTemperature(40);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "tfg:sunflower");
event.climateRange((climate) => {
climate.minHydration(10);
climate.maxHydration(60);
climate.minTemperature(-5);
climate.maxTemperature(25);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(1.5);
}, "tfg:rapeseed");
event.climateRange((climate) => {
climate.minHydration(15);
climate.maxHydration(65);
climate.minTemperature(-8);
climate.maxTemperature(25);
climate.hydrationWiggle(6.5);
climate.temperatureWiggle(3);
}, "tfg:flax");
// Mars
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:amber_root");
event.climateRange((climate) => {
climate.minHydration(70);
climate.maxHydration(100);
climate.minTemperature(-80);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:blossom_berry");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:bolux_mushroom");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(60);
climate.minTemperature(-100);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:cave_pumpkin_plant");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:chorus_mushroom");
event.climateRange((climate) => {
climate.minHydration(50);
climate.maxHydration(100);
climate.minTemperature(-80);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:shadow_berry");
}
//#endregion
//#region Planter Data
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFLPlanters(event) {
event.firmalifePlantable(
"tfg:sunflower_seeds",
"large",
0,
3,
0.15,
"tfg:sunflower_seeds",
"tfg:sunflower_product",
"nitrogen",
[
"tfg:block/crop/sunflower_greenhouse_0",
"tfg:block/crop/sunflower_greenhouse_1",
"tfg:block/crop/sunflower_greenhouse_2",
"tfg:block/crop/sunflower_greenhouse_3"
],
null
);
event.firmalifePlantable(
"tfg:rapeseed_seeds",
"large",
0,
3,
0.15,
"tfg:rapeseed_seeds",
"tfg:rapeseed_product",
"phosphorous",
[
"tfg:block/crop/rapeseed_greenhouse_0",
"tfg:block/crop/rapeseed_greenhouse_1",
"tfg:block/crop/rapeseed_greenhouse_2",
"tfg:block/crop/rapeseed_greenhouse_3"
],
null
);
event.firmalifePlantable(
"tfg:flax_seeds",
"large",
0,
3,
0.2,
"tfg:flax_seeds",
"tfg:flax_product",
"nitrogen",
[
"tfg:block/crop/flax_age_0",
"tfg:block/crop/flax_age_1",
"tfg:block/crop/flax_age_5_top",
"tfg:block/crop/flax_age_6_top"
],
null
);
event.firmalifePlantable(
"betterend:amber_root_seeds",
"large",
0,
3,
0.15,
"betterend:amber_root_seeds",
"betterend:amber_root_product",
"phosphorous",
[
"betterend:block/amber_root_0",
"betterend:block/amber_root_1",
"betterend:block/amber_root_2",
"betterend:block/amber_root_3"
],
null
);
event.firmalifePlantable(
"betterend:blossom_berry_seeds",
"large",
0,
3,
0.15,
"betterend:blossom_berry_seeds",
"betterend:blossom_berry_product",
"potassium",
[
"betterend:block/blossom_berry_seed_0",
"betterend:block/blossom_berry_seed_1",
"betterend:block/blossom_berry_seed_2",
"betterend:block/blossom_berry_seed_3"
],
null
);
event.firmalifePlantable(
"betterend:bolux_mushroom_seeds",
"quad",
1,
3,
0.15,
"betterend:bolux_mushroom_seeds",
"betterend:bolux_mushroom_product",
"phosphorous",
[
"betterend:block/bolux_mushroom_greenhouse_0",
"betterend:block/bolux_mushroom_greenhouse_1",
"betterend:block/bolux_mushroom_greenhouse_2",
"betterend:block/bolux_mushroom_greenhouse_3"
],
null
);
event.firmalifePlantable(
"betterend:chorus_mushroom_seeds",
"quad",
1,
3,
0.15,
"betterend:chorus_mushroom_seeds",
"betterend:chorus_mushroom_product",
"phosphorous",
[
"betterend:block/chorus_mushroom_0",
"betterend:block/chorus_mushroom_1",
"betterend:block/chorus_mushroom_2",
"betterend:block/chorus_mushroom_3"
],
null
);
event.firmalifePlantable(
"betterend:cave_pumpkin_plant_seeds",
"hanging",
2,
3,
0.15,
"betterend:cave_pumpkin_plant_seeds",
"betterend:cave_pumpkin",
"phosphorous",
[
"betterend:block/cave_pumpkin_greenhouse_0",
"betterend:block/cave_pumpkin_greenhouse_1",
"betterend:block/cave_pumpkin_greenhouse_2",
"betterend:block/cave_pumpkin_greenhouse_3"
],
"betterend:block/cave_pumpkin_top"
);
event.firmalifePlantable(
"betterend:shadow_berry_seeds",
"quad",
1,
3,
0.15,
"betterend:shadow_berry_seeds",
"betterend:shadow_berry_product",
"potassium",
[
"betterend:block/shadow_berry_greenhouse_0",
"betterend:block/shadow_berry_greenhouse_1",
"betterend:block/shadow_berry_greenhouse_2",
"betterend:block/shadow_berry_greenhouse_3"
],
null
);
}
//#endregion
//#region Fauna Data
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFauna(event) {
// -108 is the average at z=-4k to z=-6k, which feels like a big enough band
event.fauna(
climate => {
climate.maxTemp(-108)
climate.fuzzy(false)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:glacian_ram")
event.fauna(
climate => {
climate.minTemp(-102)
climate.maxTemp(-30)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:sniffer")
event.fauna(
climate => {
climate.minTemp(-100)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:wraptor")
event.fauna(
climate => {
climate.minTemp(-108)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"species:springling")
event.fauna(
climate => {
climate.minTemp(-109)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"species:goober")
event.fauna(
climate => {
climate.minTemp(-97)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:walker")
event.fauna(
climate => {
climate.minTemp(-109)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:eater")
event.fauna(
climate => {
climate.minTemp(-100)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:crusher")
event.fauna(
climate => {
climate.minTemp(-105)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:soarer")
event.fauna(
climate => {
climate.minTemp(-106)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:glider")
}
//#endregion

View file

@ -0,0 +1,521 @@
/**
* @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.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} toolId -Item ID of the tool.
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (toolId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
}
if (!player.crouching) return;
let state = block.getBlockState().toString();
if (state.includes('[') && copyBlockstate === true) {
state = state.substring(state.indexOf('['));
} else {
state = '';
}
if (soundId) {
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
}
if (particleId) {
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
}
player.swing();
if (!player.isCreative() && damageTool) {
item.damageValue++;
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
item.count--;
}
}
const dim = block.level.name.getString();
server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`);
server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`);
};
/**
* Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} outputItem -Item ID of item to receive
* @param {number} outputCount -Number of items to be returned
* @param {string} toolId -Item ID of the tool.
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (!player.crouching) return;
if (toolId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
}
transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate)
const dim = block.level.name.getString();
server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`);
}
/**
* Function for replacing a block with another block by crouch-right-clicking with an item.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} itemId -Item ID of the consumed item. Accepts Tags.
* @param {boolean} consumeItem -Sets wether the item should be comsumed or not.
* @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (itemId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== itemId) return;
}
if (!player.crouching) return;
let state = block.getBlockState().toString()
if (state.includes('[') && copyBlockstate === true) {
state = state.substring(block.getBlockState().toString().indexOf('['));
} else {
state = ''
}
if (!player.isCreative() && consumeItem === true) {
if (item.count < consumeAmount) {
player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`)
return;
}
item.count -= consumeAmount;
}
if (soundId) {
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
}
if (particleId) {
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
}
player.swing()
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`)
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`)
};
// 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);
}
//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);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
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);
});
// Makes scythes, hoes, and knives take damage when cutting grass
BlockEvents.broken('tfc:mineable_with_sharp_tool', event => {
let player = event.player;
let toolUsed = player.mainHandItem;
if (!toolUsed.hasTag('tfc:sharp_tools')) {
return;
}
if (!player.isCreative()) {
toolUsed.damageValue++;
if (toolUsed.damageValue >= toolUsed.maxDamage) {
event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
toolUsed.count--;
}
}
});

View file

@ -11,110 +11,6 @@ TFGServerEvents.dimensionalPowerConsumption(event => {
event["add(java.lang.String,double)"]("ad_astra:mars_orbit", 100000);
});
//#region Medicine
//Pills & Tablets
const pill_event = [
'haste',
'luck',
'night_vision',
'poison',
'regeneration',
'slowness',
'speed',
'water_breathing',
'weakness',
];
pill_event.forEach(pill_event => {
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${pill_event}_pill`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${pill_event}_tablet`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${pill_event} 1800 0 true`)
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:antipoison_pill`) return
item.count--
player.addItemCooldown(item, 50)
event.player.removeEffect('minecraft:poison')
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:antipoison_tablet`) return
item.count--
player.addItemCooldown(item, 50)
event.player.removeEffect('minecraft:poison')
event.player.removeEffect('minecraft:wither')
event.player.removeEffect('minecraft:weakness')
event.player.removeEffect('minecraft:slowness')
event.player.removeEffect('minecraft:mining_fatigue')
event.player.removeEffect('minecraft:nausea')
event.player.removeEffect('minecraft:blindness')
event.player.removeEffect('minecraft:hunger')
event.player.removeEffect('minecraft:bad_omen')
event.player.removeEffect('minecraft:darkness')
event.player.removeEffect('minecraft:unluck')
server.runCommandSilent(`playsound minecraft:item.honey_bottle.drink player ${player.username} ${x} ${y} ${z} 10 1.5 1`)
});
//salvos
const salvo_event = [
'fire_resistance',
'invisibility',
'luck',
'resistance',
];
salvo_event.forEach(salvo_event => {
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:${salvo_event}_salvo`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:${salvo_event} 480 0 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:absorption_salvo`) return
item.count--
player.addItemCooldown(item, 200)
server.runCommandSilent(`effect give ${player.username} minecraft:absorption 480 4 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});
ItemEvents.rightClicked(event => {
const { item, server, player, player: { x, y, z } } = event
if (item.id !== `tfg:instant_health_salvo`) return
item.count--
player.addItemCooldown(item, 100)
server.runCommandSilent(`effect give ${player.username} minecraft:instant_health 1 1 true`)
server.runCommandSilent(`playsound minecraft:item.glow_ink_sac.use player ${player.username} ${x} ${y} ${z} 10 2 1`)
});
//#endregion
// Vase Sounds
global.MINECRAFT_DYE_NAMES.forEach(color => {
BlockEvents.rightClicked(event => {
@ -158,623 +54,3 @@ function getTFGPersistentDataRoot(player) {
return player.persistentData.getCompound("tfg:custom_data")
}
//#region Fishing Net
const fish = [
'cod',
'crappie',
'jellyfish',
'lake_trout',
'largemouth_bass',
'rainbow_trout',
'salmon',
'smallmouth_bass',
'tropical_fish',
'bluegill'
];
const shellfish = [
'lobster',
'isopod',
'crayfish'
];
//tags wont work here (or at least I couldnt get it to work) so we need to manually declare each net tier.
const tiers = [
'wood',
'brass',
'rose_gold',
'sterling_silver',
'invar',
'tin_alloy',
'cupronickel',
'magnalium'
];
//Event detects if fish is right clicked with fishing net and then teleports the mob into the void, plays some actions and gives the player the proper item.
tiers.forEach(tier => {
fish.forEach(fish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== `tfc:${fish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give(`tfc:food/${fish}`)
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Shellfish Exception
shellfish.forEach(shellfish => {
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== `tfc:${shellfish}`) return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('tfc:food/shellfish')
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//Pufferfish Exception
ItemEvents.entityInteracted(`tfg:fishing_net/${tier}`, (event) => {
const { item, player, server, target } = event;
if (target.type !== 'tfc:pufferfish') return
server.runCommandSilent(`particle minecraft:bubble_pop ${target.x} ${target.y} ${target.z} 0.5 0.5 0.5 0.00001 10`)
server.runCommandSilent(`playsound minecraft:entity.player.splash player ${player.username} ${target.x} ${target.y} ${target.z} 2 2 1`)
server.runCommandSilent(`tp ${target.uuid} ${target.x} ${target.y - 382} ${target.z}`)
event.player.give('minecraft:pufferfish')
player.swing()
if (player.isCreative() === false) {
item.damageValue++
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`)
item.count--
}
}
})
})
//#endregion
//#region Block Interactions
/**
* @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.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} toolId -Item ID of the tool.
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (toolId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
}
if (!player.crouching) return;
let state = block.getBlockState().toString();
if (state.includes('[') && copyBlockstate === true) {
state = state.substring(state.indexOf('['));
} else {
state = '';
}
if (soundId) {
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
}
if (particleId) {
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
}
player.swing();
if (!player.isCreative() && damageTool) {
item.damageValue++;
if (item.damageValue >= item.maxDamage) {
server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
item.count--;
}
}
const dim = block.level.name.getString();
server.runCommandSilent(`execute in ${dim} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`);
server.runCommandSilent(`execute in ${dim} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`);
};
/**
* Function for replacing a block with another block by crouch-right-clicking with a tool and receiving an item.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} outputItem -Item ID of item to receive
* @param {number} outputCount -Number of items to be returned
* @param {string} toolId -Item ID of the tool.
* @param {boolean} damageTool -Sets wether the tool should be damaged on use.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithToolReturn(event, inputBlock, outputBlock, outputItem, outputCount, toolId, damageTool, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (!player.crouching) return;
if (toolId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(toolId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== toolId) return;
}
transformBlockWithTool(event, inputBlock, outputBlock, toolId, damageTool, soundId, particleId, copyBlockstate)
const dim = block.level.name.getString();
server.runCommandSilent(`execute in ${dim} run summon item ${player.x} ${player.y} ${player.z} {Item:{id:'${outputItem}', Count:${outputCount}b}}`);
}
/**
* Function for replacing a block with another block by crouch-right-clicking with an item.
*
* If input and output is null recipe will just return.
*
* @param {*} event
* @param {string} inputBlock -Block ID to be replaced. Accepts a Tag, but not recommended.
* @param {string} outputBlock -Block ID of the replacement.
* @param {string} itemId -Item ID of the consumed item. Accepts Tags.
* @param {boolean} consumeItem -Sets wether the item should be comsumed or not.
* @param {number} consumeAmount -Number of items to consume, can't be greater than stacksize.
* @param {string} soundId -Sound ID to be used as the flair sound effect. Can be null.
* @param {string} particleId -SimpleParticleType ID to be used as the flair particle. Can be null.
* @param {boolean} copyBlockstate - Sets wether the blockstate should be copied from the input block to the output block.
*/
function transformBlockWithItem(event, inputBlock, outputBlock, itemId, consumeItem, consumeAmount, soundId, particleId, copyBlockstate) {
const { server, item, player, block } = event;
if (!inputBlock || !outputBlock) return;
if (inputBlock.startsWith('#')) {
if (!block.hasTag(inputBlock.substring(1))) return;
} else {
if (block.id.toString() !== inputBlock) return;
}
if (itemId.startsWith('#')) {
if (item.isEmpty() || !player.mainHandItem.hasTag(itemId.substring(1))) return;
} else {
if (item.isEmpty() || player.mainHandItem.id !== itemId) return;
}
if (!player.crouching) return;
let state = block.getBlockState().toString()
if (state.includes('[') && copyBlockstate === true) {
state = state.substring(block.getBlockState().toString().indexOf('['));
} else {
state = ''
}
if (!player.isCreative() && consumeItem === true) {
if (item.count < consumeAmount) {
player.tell(`Item count is too low. Held amount = ${item.count}, required amount = ${consumeAmount}`)
return;
}
item.count -= consumeAmount;
}
if (soundId) {
server.runCommandSilent(`playsound ${soundId} player ${player.username} ${player.x} ${player.y} ${player.z} 1 2 1`)
}
if (particleId) {
server.runCommandSilent(`particle ${particleId} ${block.x} ${block.y + 0.8} ${block.z} 0.1 0.1 0.1 0.6 10`)
}
player.swing()
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run fill ${block.x} ${block.y} ${block.z} ${block.x} ${block.y} ${block.z} air`)
event.server.runCommandSilent(`execute in ${event.block.level.name.getString()} run setblock ${block.x} ${block.y} ${block.z} ${outputBlock}${state}`)
};
// 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);
}
//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);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_frame', 'tfg:aes_insulation_roll', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:aes_insulation_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:aes_insulation_roll', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
transformBlockWithItem(event, 'gtceu:incoloy_ma_956_frame', 'tfg:moderate_core_frame', 'tfg:graphite_moderator', true, 1, 'block.wool.place', 'minecraft:happy_villager', true);
transformBlockWithToolReturn(event, 'tfg:moderate_core_frame', 'gtceu:incoloy_ma_956_frame', 'tfg:graphite_moderator', 1, '#forge:tools/wire_cutters', true, 'minecraft:block.beehive.shear', 'minecraft:crit', true);
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);
});
// Makes scythes, hoes, and knives take damage when cutting grass
BlockEvents.broken('tfc:mineable_with_sharp_tool', event => {
let player = event.player;
let toolUsed = player.mainHandItem;
if (!toolUsed.hasTag('tfc:sharp_tools')) {
return;
}
if (!player.isCreative()) {
toolUsed.damageValue++;
if (toolUsed.damageValue >= toolUsed.maxDamage) {
event.server.runCommandSilent(`playsound minecraft:item.shield.break player ${player.username} ${player.x} ${player.y} ${player.z} 1 1 1`);
toolUsed.count--;
}
}
});
//#endregion

View file

@ -0,0 +1,88 @@
"use strict";
/** @param {Internal.TFCDataEventJS} event */
function registerTFGCropRanges(event) {
// Earth
event.climateRange((climate) => {
climate.minHydration(20);
climate.maxHydration(80);
climate.minTemperature(5);
climate.maxTemperature(40);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "tfg:sunflower");
event.climateRange((climate) => {
climate.minHydration(10);
climate.maxHydration(60);
climate.minTemperature(-5);
climate.maxTemperature(25);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(1.5);
}, "tfg:rapeseed");
event.climateRange((climate) => {
climate.minHydration(15);
climate.maxHydration(65);
climate.minTemperature(-8);
climate.maxTemperature(25);
climate.hydrationWiggle(6.5);
climate.temperatureWiggle(3);
}, "tfg:flax");
// Mars
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:amber_root");
event.climateRange((climate) => {
climate.minHydration(70);
climate.maxHydration(100);
climate.minTemperature(-80);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:blossom_berry");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:bolux_mushroom");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(60);
climate.minTemperature(-100);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:cave_pumpkin_plant");
event.climateRange((climate) => {
climate.minHydration(0);
climate.maxHydration(40);
climate.minTemperature(-150);
climate.maxTemperature(15);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:chorus_mushroom");
event.climateRange((climate) => {
climate.minHydration(50);
climate.maxHydration(100);
climate.minTemperature(-80);
climate.maxTemperature(30);
climate.hydrationWiggle(7.5);
climate.temperatureWiggle(5.5);
}, "betterend:shadow_berry");
}

View file

@ -0,0 +1,583 @@
"use strict";
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFoodData(event) {
// Ice shavings
event.foodItem('firmalife:ice_shavings', food => {
food.water(5)
food.decayModifier(0)
})
// Birt
event.foodItem("tfg:food/raw_birt", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_birt", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Crawlermari
event.foodItem("tfg:food/raw_crawlermari", (food) => {
food.hunger(2);
food.water(5);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_crawlermari", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Limpet
event.foodItem("tfg:food/raw_limpet", (food) => {
food.hunger(2);
food.water(5);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_limpet", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Moon Rabbit
event.foodItem("tfg:food/raw_moon_rabbit", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_moon_rabbit", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.2);
food.decayModifier(2.25);
});
// Glacian Mutton
event.foodItem("tfg:food/raw_glacian_mutton", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_glacian_mutton", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Sniffer Beef
event.foodItem("tfg:food/raw_sniffer_beef", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_sniffer_beef", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Wraptor
event.foodItem("tfg:food/raw_wraptor", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_wraptor", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Springling Collar
event.foodItem("tfg:food/raw_springling_collar", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_springling_collar", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Surfer Steak
event.foodItem("tfg:food/raw_surfer_steak", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_surfer_steak", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Cruncher Ribs
event.foodItem("tfg:food/raw_cruncher_ribs", (food) => {
food.hunger(2);
food.protein(2.0);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_cruncher_ribs", (food) => {
food.hunger(4);
food.saturation(2.2);
food.protein(4);
food.decayModifier(2.25);
});
// Long Pig Filet
event.foodItem("tfg:food/raw_long_pig_filet", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_long_pig_filet", (food) => {
food.hunger(2);
food.saturation(2);
food.protein(2);
food.decayModifier(2.25);
});
// Stackatick Chunks
event.foodItem("tfg:food/raw_stackatick_chunks", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/raw_stickastackatick", (food) => {
food.hunger(2);
food.protein(1.2);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_stickastackatick", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Walker Steak
event.foodItem("tfg:food/raw_walker_steak", (food) => {
food.hunger(2);
food.protein(2.0);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_walker_steak", (food) => {
food.hunger(4);
food.saturation(2.2);
food.protein(4);
food.decayModifier(2.25);
});
// Glider Wings
event.foodItem("tfg:food/raw_glider_wings", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_glider_wings", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(2.75);
food.decayModifier(2.25);
});
// Soarer
event.foodItem("tfg:food/raw_whole_soarer", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_whole_soarer", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3.1);
food.decayModifier(2.25);
});
// Crusher Meat
event.foodItem("tfg:food/raw_crusher_meat", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
});
event.foodItem("tfg:food/cooked_crusher_meat", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// Goober Meat
event.foodItem("tfg:food/raw_goober_meat", (food) => {
food.hunger(2);
food.protein(1.5);
food.decayModifier(3);
food.water(1);
});
event.foodItem("tfg:food/cooked_goober_meat", (food) => {
food.hunger(4);
food.saturation(2);
food.protein(3);
food.decayModifier(2.25);
});
// high-tech food
global.FOOD_FRUIT.forEach((fruit) => {
event.foodItem(`tfg:food/freeze_dried/${fruit.name}`, (food) => {
food.hunger(4);
food.saturation(fruit.saturation);
food.water(0);
food.fruit(fruit.fruit);
food.decayModifier(fruit.decay);
});
});
event.foodItem("tfg:food/calorie_paste", (food) => {
food.hunger(6);
food.saturation(4);
food.decayModifier(4.5);
food.grain(0.1);
food.vegetables(0.2);
food.protein(0.2);
});
event.foodItem("tfg:food/meal_bag", (food) => {
food.type("dynamic");
});
// Sunflower products
event.foodItem("tfg:roasted_sunflower_seeds", (food) => {
food.hunger(4);
food.decayModifier(0.5);
food.grain(0.1);
food.saturation(0.5);
});
event.foodItem("tfg:sunflower_product", (food) => {
food.decayModifier(0.5);
});
// Amber Roots
event.foodItem("betterend:amber_root_product", (food) => {
food.hunger(4);
food.decayModifier(1);
food.saturation(1);
food.grain(3);
});
// Blossom Berries
event.foodItem("betterend:blossom_berry_product", (food) => {
food.hunger(5);
food.decayModifier(2);
food.saturation(1);
food.water(7.5);
food.fruit(2.1);
});
// Cave Pumpkin
event.foodItem("betterend:cave_pumpkin", (food) => {
food.hunger(4);
food.saturation(0);
food.decayModifier(0.5);
});
event.foodItem("betterend:cave_pumpkin_chunks", (food) => {
food.hunger(4);
food.saturation(1);
food.decayModifier(2.5);
food.water(5);
food.fruit(0.8);
});
event.foodItem("betterend:cave_pumpkin_pie_dough", (food) => {
food.hunger(2);
food.decayModifier(3);
});
event.foodItem("betterend:cave_pumpkin_pie_raw", (food) => {
food.hunger(2);
food.decayModifier(3);
});
event.foodItem("betterend:cave_pumpkin_pie", (food) => {
food.hunger(4);
food.saturation(2.8);
food.decayModifier(1.5);
food.water(5);
food.protein(1);
food.fruit(5);
food.grain(4);
food.dairy(1);
});
// Chorus Mushroom
event.foodItem("betterend:chorus_mushroom_product", (food) => {
food.hunger(2);
food.saturation(1);
food.decayModifier(3);
food.water(3);
food.vegetables(1.5);
});
event.foodItem("betterend:chorus_mushroom_cooked", (food) => {
food.hunger(2);
food.saturation(2.1);
food.decayModifier(1.5);
food.vegetables(2.5);
});
// Shadow Berry
event.foodItem("betterend:shadow_berry_product", (food) => {
food.hunger(5);
food.decayModifier(2);
food.saturation(1);
food.water(5);
food.fruit(1.9);
});
event.foodItem("betterend:shadow_berry_cooked", (food) => {
food.hunger(5);
food.decayModifier(1);
food.saturation(2);
food.fruit(2.2);
});
// Bolux Mushroom
event.foodItem("betterend:bolux_mushroom_product", (food) => {
food.hunger(2);
food.saturation(1);
food.decayModifier(3);
food.water(3);
food.vegetables(1.5);
});
event.foodItem("betterend:bolux_mushroom_cooked", (food) => {
food.hunger(2);
food.saturation(2);
food.decayModifier(1.5);
food.vegetables(2.4);
});
// Dino Nuggets
event.foodItem('tfg:food/raw_dino_nugget', (food) => {
food.type("dynamic");
food.hunger(1);
food.decayModifier(3);
});
event.foodItem('tfg:food/cooked_dino_nugget', (food) => {
food.type("dynamic");
food.hunger(3);
food.saturation(2);
food.decayModifier(1.5);
});
// Ice Soup
event.foodItem("tfg:food/ice_soup", (food) => {
food.hunger(1);
food.water(20);
food.decayModifier(0);
});
// Fries
event.foodItem('tfg:food/raw_fries', (food) => {
food.hunger(1);
food.decayModifier(3);
food.vegetables(0.25);
});
event.foodItem('tfg:food/cooked_fries', (food) => {
food.hunger(2);
food.decayModifier(1.5);
food.vegetables(0.6);
food.saturation(2);
});
// Cheese Curds
event.foodItem('tfg:food/raw_beer_battered_cheese_curds', (food) => {
food.hunger(1);
food.decayModifier(1.3);
food.dairy(1);
food.saturation(1);
});
event.foodItem('tfg:food/cooked_beer_battered_cheese_curds', (food) => {
food.hunger(3);
food.decayModifier(0.8);
food.dairy(1.2);
food.saturation(2);
food.grain(0.5);
});
// Hamburgers
event.foodItem('tfg:food/raw_burger_patty', (food) => {
food.hunger(2);
food.decayModifier(2.3);
food.protein(2);
});
event.foodItem('tfg:food/cooked_burger_patty', (food) => {
food.hunger(4);
food.decayModifier(2);
food.protein(2.5);
food.saturation(2);
});
event.foodItem('tfg:food/brioche_dough', (food) => {
food.hunger(1.5);
food.decayModifier(2.3);
});
event.foodItem('tfg:food/brioche_bun', (food) => {
food.hunger(3.5);
food.decayModifier(1.5);
food.grain(1.5);
food.dairy(0.5);
food.saturation(1);
});
event.foodItem('tfg:food/hamburger', (food) => {
food.type("dynamic");
});
event.foodItem('tfg:food/cheeseburger', (food) => {
food.type("dynamic");
});
// Poutine
event.foodItem('tfg:food/poutine', (food) => {
food.type("dynamic_bowl");
});
// Oatmeal
event.foodItem('tfg:food/oatmeal', (food) => {
food.type("dynamic_bowl");
});
// Biochem Items
event.foodItem("tfg:progenitor_cells", (food) => {
food.decayModifier(1);
});
event.foodItem("tfg:rough_endoplasmic_reticula", (food) => {
food.decayModifier(0.5);
});
event.foodItem("tfg:smooth_endoplasmic_reticula", (food) => {
food.decayModifier(0.5);
});
// Instant Mac
event.foodItem('tfg:food/raw_instant_mac', (food) => {
food.hunger(2);
food.decayModifier(0.2);
});
event.foodItem('tfg:food/cooked_instant_mac', (food) => {
food.hunger(3.5);
food.decayModifier(1.6);
food.grain(1.5);
food.dairy(2.5);
food.protein(0.8);
food.saturation(1.8);
});
//#region Drinkables
// Proto Growth Medium
event.drinkable("tfg:proto_growth_medium", (data) => {
data.thirst(10);
data.food(food => {
food.dairy(5);
food.protein(1);
});
data.effect("minecraft:absorption", (effect) => {
effect.amplifier(2);
effect.chance(0.25);
effect.duration(1200);
});
});
// Semiheavy Ammoniacal Water
event.drinkable("tfg:semiheavy_ammoniacal_water", (data) => {
data.thirst(10);
data.effect("minecraft:nausea", (effect) => {
effect.chance(0.5);
effect.duration(200);
});
});
// Rich Stock
event.drinkable('tfg:rich_stock', (data) => {
data.thirst(4);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.2);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.25);
food.vegetables(0.25);
});
});
// Light Stock
event.drinkable('tfg:light_stock', (data) => {
data.thirst(4);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.2);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.25);
food.vegetables(0.25);
});
});
// Brown Gravy
event.drinkable('tfg:brown_gravy', (data) => {
data.thirst(2);
data.effect("tfc:thirst", (effect) => {
effect.chance(0.3);
effect.duration(20*5);
});
data.food(food => {
food.protein(0.5);
food.vegetables(0.5);
food.grain(0.25);
});
});
//#endregion
}

View file

@ -0,0 +1,167 @@
"use strict";
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFLPlanters(event) {
event.firmalifePlantable(
"tfg:sunflower_seeds",
"large",
0,
3,
0.15,
"tfg:sunflower_seeds",
"tfg:sunflower_product",
"nitrogen",
[
"tfg:block/crop/sunflower_greenhouse_0",
"tfg:block/crop/sunflower_greenhouse_1",
"tfg:block/crop/sunflower_greenhouse_2",
"tfg:block/crop/sunflower_greenhouse_3"
],
null
);
event.firmalifePlantable(
"tfg:rapeseed_seeds",
"large",
0,
3,
0.15,
"tfg:rapeseed_seeds",
"tfg:rapeseed_product",
"phosphorous",
[
"tfg:block/crop/rapeseed_greenhouse_0",
"tfg:block/crop/rapeseed_greenhouse_1",
"tfg:block/crop/rapeseed_greenhouse_2",
"tfg:block/crop/rapeseed_greenhouse_3"
],
null
);
event.firmalifePlantable(
"tfg:flax_seeds",
"large",
0,
3,
0.2,
"tfg:flax_seeds",
"tfg:flax_product",
"nitrogen",
[
"tfg:block/crop/flax_age_0",
"tfg:block/crop/flax_age_1",
"tfg:block/crop/flax_age_5_top",
"tfg:block/crop/flax_age_6_top"
],
null
);
event.firmalifePlantable(
"betterend:amber_root_seeds",
"large",
0,
3,
0.15,
"betterend:amber_root_seeds",
"betterend:amber_root_product",
"phosphorous",
[
"betterend:block/amber_root_0",
"betterend:block/amber_root_1",
"betterend:block/amber_root_2",
"betterend:block/amber_root_3"
],
null
);
event.firmalifePlantable(
"betterend:blossom_berry_seeds",
"large",
0,
3,
0.15,
"betterend:blossom_berry_seeds",
"betterend:blossom_berry_product",
"potassium",
[
"betterend:block/blossom_berry_seed_0",
"betterend:block/blossom_berry_seed_1",
"betterend:block/blossom_berry_seed_2",
"betterend:block/blossom_berry_seed_3"
],
null
);
event.firmalifePlantable(
"betterend:bolux_mushroom_seeds",
"quad",
1,
3,
0.15,
"betterend:bolux_mushroom_seeds",
"betterend:bolux_mushroom_product",
"phosphorous",
[
"betterend:block/bolux_mushroom_greenhouse_0",
"betterend:block/bolux_mushroom_greenhouse_1",
"betterend:block/bolux_mushroom_greenhouse_2",
"betterend:block/bolux_mushroom_greenhouse_3"
],
null
);
event.firmalifePlantable(
"betterend:chorus_mushroom_seeds",
"quad",
1,
3,
0.15,
"betterend:chorus_mushroom_seeds",
"betterend:chorus_mushroom_product",
"phosphorous",
[
"betterend:block/chorus_mushroom_0",
"betterend:block/chorus_mushroom_1",
"betterend:block/chorus_mushroom_2",
"betterend:block/chorus_mushroom_3"
],
null
);
event.firmalifePlantable(
"betterend:cave_pumpkin_plant_seeds",
"hanging",
2,
3,
0.15,
"betterend:cave_pumpkin_plant_seeds",
"betterend:cave_pumpkin",
"phosphorous",
[
"betterend:block/cave_pumpkin_greenhouse_0",
"betterend:block/cave_pumpkin_greenhouse_1",
"betterend:block/cave_pumpkin_greenhouse_2",
"betterend:block/cave_pumpkin_greenhouse_3"
],
"betterend:block/cave_pumpkin_top"
);
event.firmalifePlantable(
"betterend:shadow_berry_seeds",
"quad",
1,
3,
0.15,
"betterend:shadow_berry_seeds",
"betterend:shadow_berry_product",
"potassium",
[
"betterend:block/shadow_berry_greenhouse_0",
"betterend:block/shadow_berry_greenhouse_1",
"betterend:block/shadow_berry_greenhouse_2",
"betterend:block/shadow_berry_greenhouse_3"
],
null
);
}

View file

@ -0,0 +1,182 @@
"use strict";
function registerTFGBiomassRecipes(event) {
//#region Biomass
event.recipes.gtceu.brewery('biomass_from_tfc_seeds')
.itemInputs('#tfc:seeds')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_tfc_food')
.itemInputs('#tfc:foods')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_tfc_plants')
.itemInputs('#tfc:plants')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_moon_plants')
.itemInputs('#tfg:moon_plants')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_mars_plants')
.itemInputs('#tfg:mars_plants')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_tfc_corals')
.itemInputs('#tfc:corals')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_spider_eyes')
.itemInputs('minecraft:spider_eye')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_leaves')
.itemInputs('#minecraft:leaves')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 20))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_fallen_leaves')
.itemInputs('#tfc:fallen_leaves')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 20))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_minecraft_plants')
.itemInputs('#createaddition:plants')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 100))
.duration(100)
.EUt(3)
event.recipes.gtceu.brewery('biomass_from_wart_blocks')
.itemInputs('#minecraft:wart_blocks')
.inputFluids("#tfc:any_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 50))
.duration(100)
.EUt(3)
event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_water' }, 'gtceu:wood_dust', 'gtceu:carbon_dust')
event.replaceOutput({ id: 'gtceu:distillery/distill_biomass_to_ethanol' }, 'gtceu:wood_dust', 'gtceu:carbon_dust')
event.replaceOutput({ id: 'gtceu:distillation_tower/distill_biomass' }, 'gtceu:wood_dust', 'gtceu:carbon_dust')
//#endregion
//#region Plant ball
event.recipes.gtceu.compressor('plant_ball_from_tfc_seeds')
.itemInputs('4x #tfc:seeds')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
let food = Ingredient.of('#tfc:foods')
.subtract('minecraft:brown_mushroom')
.subtract('minecraft:red_mushroom')
.withCount(8)
event.recipes.gtceu.compressor('plant_ball_from_tfc_food')
.itemInputs(food)
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_tfc_plants')
.itemInputs('4x #tfc:plants')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_moon_plants')
.itemInputs('4x #tfg:moon_plants')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_mars_plants')
.itemInputs('4x #tfg:mars_plants')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_tfc_corals')
.itemInputs('4x #tfc:corals')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_misc_plants')
.itemInputs('4x #createaddition:plants')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
event.recipes.gtceu.compressor('plant_ball_from_wart_blocks')
.itemInputs('4x #minecraft:wart_blocks')
.itemOutputs('gtceu:plant_ball')
.duration(300)
.EUt(2)
//#endregion
// Sugar
event.recipes.gtceu.centrifuge('sugar_from_sugarcane')
.itemInputs('tfc:food/sugarcane')
.inputFluids("#tfg:clean_water 600")
.itemOutputs('minecraft:sugar', 'gtceu:plant_ball')
.duration(800)
.EUt(6)
event.recipes.gtceu.centrifuge('sugar_from_honey')
.itemInputs('firmalife:raw_honey')
.itemOutputs('minecraft:sugar')
.duration(400)
.EUt(6)
event.recipes.gtceu.centrifuge('tfg:beets_to_sugar')
.itemInputs('5x tfc:food/beet')
.inputFluids(Fluid.of('tfc:salt_water', 1000))
.itemOutputs('3x minecraft:sugar', '3x gtceu:plant_ball', '1x #forge:dusts/salt')
.outputFluids(Fluid.of('minecraft:water', 1000))
.duration(800)
.EUt(7)
.circuit(3)
// Misc
event.recipes.gtceu.macerator('macerate_cocoa')
.itemInputs('firmalife:food/roasted_cocoa_beans')
.itemOutputs('gtceu:cocoa_dust')
.duration(100)
.EUt(2)
event.recipes.gtceu.macerator('macerate_meat_to_dust')
.itemInputs('#tfc:foods/meats')
.itemOutputs('gtceu:meat_dust', 'gtceu:tiny_bone_dust')
.duration(100)
.EUt(2)
}

View file

@ -1720,87 +1720,5 @@ function registerTFGFoodRecipes(event) {
});
//#endregion
//#region Machine Recipes
event.remove({id: 'gtceu:shaped/mv_food_refrigerator'})
event.remove({id: 'gtceu:shaped/hv_food_refrigerator'})
event.remove({id: 'gtceu:shaped/ev_food_refrigerator'})
event.remove({id: 'gtceu:shaped/iv_food_refrigerator'})
event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1),
'2x gtceu:mv_electric_pump',
'gtceu:mv_hermetic_casing',
'#gtceu:circuits/mv'
)
.inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000))
.itemOutputs('1x tfg:mv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1),
'2x gtceu:hv_electric_pump',
'gtceu:hv_hermetic_casing',
'#gtceu:circuits/hv'
)
.inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000))
.itemOutputs('1x tfg:hv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1),
'2x gtceu:ev_electric_pump',
'gtceu:ev_hermetic_casing',
'#gtceu:circuits/ev'
)
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000))
.itemOutputs('1x tfg:ev_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1),
'2x gtceu:iv_electric_pump',
'gtceu:iv_hermetic_casing',
'#gtceu:circuits/iv'
)
.inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000))
.itemOutputs('1x tfg:iv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.shaped('tfg:electric_greenhouse', [
'ABA',
'CDC',
'BCB'
], {
A: '#gtceu:circuits/mv',
B: '#forge:single_cables/copper',
C: 'tfc:compost',
D: 'gtceu:steel_machine_casing'
}).id('tfg:shaped/electric_greenhouse')
//#endregion
}

View file

@ -0,0 +1,108 @@
"use strict";
function registerTFGMealBagRecipes(event) {
// Food related
event.recipes.gtceu.forming_press('tfg:forming_press/foil_pack')
.itemInputs(ChemicalHelper.get(TagPrefix.foil, GTMaterials.Aluminium, 1), ChemicalHelper.get(TagPrefix.foil, GTMaterials.Polyethylene, 1))
.itemOutputs('1x tfg:foil_pack')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.gas_pressurizer('tfg:fluid_solidifier/dry_ice')
.inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000))
.notConsumable('gtceu:block_casting_mold')
.itemOutputs('2x tfg:dry_ice')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/liq_co2')
.inputFluids(Fluid.of('gtceu:carbon_dioxide', 1000))
.outputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.duration(160)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/dry_ice')
.inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.notConsumable('gtceu:block_casting_mold')
.itemOutputs('10x tfg:dry_ice')
.duration(60)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_liq_co2')
.itemInputs('1x tfg:dry_ice')
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 100))
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.fluid_heater('tfg:fluid_heater/decompress_dry_ice')
.inputFluids(Fluid.of('gtceu:liquid_carbon_dioxide', 100))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 100))
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.mixer('tfg:clean_foil_pack')
.itemInputs('1x tfg:used_foil_pack')
.inputFluids("#tfg:clean_water 100")
.itemOutputs('1x tfg:clean_foil_pack')
.duration(200)
.circuit(1)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.ore_washer('tfg:ore_washer/distilled/clean_foil_pack')
.itemInputs('1x tfg:used_foil_pack')
.inputFluids(Fluid.of('gtceu:distilled_water', 10))
.itemOutputs('1x tfg:clean_foil_pack')
.duration(200)
.circuit(2)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: "ae2:transform",
circumstance: {
type: "fluid",
tag: "tfc:water"
},
ingredients: [
{ item: 'tfg:used_foil_pack' }],
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')
.id('tfg:splashing/clean_foil_pack')
event.shapeless('1x tfg:used_foil_pack', [
'tfg:food/calorie_paste'
]).id('tfg:shapeless/emptying/calorie_paste')
event.shapeless('1x tfg:used_foil_pack', [
'tfg:food/meal_bag'
]).id('tfg:shapeless/emptying/meal_bag')
global.FOOD_FRUIT.forEach(fruit => {
event.shapeless('1x tfg:used_foil_pack', [
`tfg:food/freeze_dried/${fruit.name}`
]).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])
}

View file

@ -0,0 +1,113 @@
"use strict";
function registerTFGRefrigeratorRecipes(event) {
//#region Machine Recipes
event.remove({ id: 'gtceu:shaped/mv_food_refrigerator' })
event.remove({ id: 'gtceu:shaped/hv_food_refrigerator' })
event.remove({ id: 'gtceu:shaped/ev_food_refrigerator' })
event.remove({ id: 'gtceu:shaped/iv_food_refrigerator' })
event.recipes.gtceu.assembler('tfg:assembler/mv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Copper, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Bronze, 1),
'2x gtceu:mv_electric_pump',
'gtceu:mv_hermetic_casing',
'#gtceu:circuits/mv'
)
.inputFluids(Fluid.of('tfg:chlorodifluoromethane', 6000))
.itemOutputs('1x tfg:mv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/hv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Gold, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Steel, 1),
'2x gtceu:hv_electric_pump',
'gtceu:hv_hermetic_casing',
'#gtceu:circuits/hv'
)
.inputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 6000))
.itemOutputs('1x tfg:hv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/ev_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Aluminium, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1),
'2x gtceu:ev_electric_pump',
'gtceu:ev_hermetic_casing',
'#gtceu:circuits/ev'
)
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 6000))
.itemOutputs('1x tfg:ev_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler('tfg:assembler/iv_food_refrigerator')
.itemInputs(
ChemicalHelper.get(TagPrefix.cableGtSingle, GTMaterials.Platinum, 2),
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Polyethylene, 2),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1),
'2x gtceu:iv_electric_pump',
'gtceu:iv_hermetic_casing',
'#gtceu:circuits/iv'
)
.inputFluids(Fluid.of('tfg:solar_coolant_tier2', 6000))
.itemOutputs('1x tfg:iv_food_refrigerator')
.duration(200)
.circuit(7)
.addMaterialInfo(true)
.EUt(GTValues.VA[GTValues.LV])
//#endregion
// Refrigerants
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/chlorodifluoromethane')
.inputFluids(Fluid.of('gtceu:chloroform', 1000), Fluid.of('gtceu:hydrofluoric_acid', 2000))
.outputFluids(Fluid.of('tfg:chlorodifluoromethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 2000))
.duration(480)
.circuit(2)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/breakdown/chlorodifluoromethane')
.inputFluids(Fluid.of('tfg:chlorodifluoromethane', 200))
.outputFluids(Fluid.of('gtceu:tetrafluoroethylene', 100), Fluid.of('gtceu:hydrochloric_acid', 200))
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/acetylene')
.inputFluids(Fluid.of('gtceu:methane', 2000), Fluid.of('gtceu:oxygen', 3000))
.outputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('minecraft:water', 3000))
.circuit(4)
.duration(120)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:chemical_reactor/1_1_1_2_tetrafluoroethane')
.inputFluids(Fluid.of('tfg:acetylene', 1000), Fluid.of('gtceu:chlorine', 4000), Fluid.of('gtceu:hydrofluoric_acid', 4000))
.outputFluids(Fluid.of('tfg:1_1_1_2_tetrafluoroethane', 1000), Fluid.of('gtceu:hydrochloric_acid', 4000))
.circuit(4)
.duration(480)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.cracker('tfg:cracker/isobutane')
.inputFluids(Fluid.of('gtceu:butane', 4000))
.outputFluids(Fluid.of('tfg:isobutane', 1000), Fluid.of('gtceu:lpg', 3000))
.circuit(4)
.duration(2400)
.EUt(GTValues.VA[GTValues.HV])
}

View file

@ -0,0 +1,182 @@
"use strict";
function registerTFGCasingRecipes(event) {
event.recipes.gtceu.assembler('steel_machine_casing')
.itemInputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.Steel, 4))
.itemOutputs('gtceu:steel_machine_casing')
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
// Railgun
global.GTCEU_SUPERCONDUCTORS.forEach((type, index) => {
const multiplier = index + 1
event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_small_from_${type.name}`)
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1),
ChemicalHelper.get(TagPrefix.wireFine, GTMaterials[type.materialId], 4)
)
.inputFluids(Fluid.of('gtceu:epoxy', 144))
.itemOutputs(Item.of('tfg:superconductor_coil_small', 4 * multiplier))
.circuit(4)
.duration(400)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler(`tfg:assembler/superconductor_coil_large_from_${type.name}`)
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.HSLASteel, 4),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.Steel, 2),
ChemicalHelper.get(TagPrefix.rod, GTMaterials.SteelMagnetic, 1),
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)
.duration(600)
.EUt(GTValues.VA[GTValues.MV])
})
event.recipes.gtceu.assembler('tfg:assembler/electromagnetic_accelerator')
.itemInputs(
'2x #forge:plates/desh',
'gtceu:mv_voltage_coil',
'5x tfg:dry_ice',
'gtceu:nonconducting_casing'
)
.inputFluids(Fluid.of('gtceu:blue_alloy', 288))
.itemOutputs('6x tfg:electromagnetic_accelerator')
.circuit(4)
.duration(800)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:assembler/machine_casing_aluminium_plated_steel')
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 6),
ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.Steel, 1)
)
.inputFluids(Fluid.of('gtceu:silicon', 72))
.itemOutputs('2x tfg:machine_casing_aluminium_plated_steel')
.circuit(6)
.duration(20 * (2.5))
.EUt(GTValues.VH[GTValues.LV])
// Solar
event.recipes.gtceu.assembler('basic_solar_casing')
.itemInputs('gtceu:steel_machine_casing', 'tfg:photo_cell_t1')
.itemOutputs('8x tfg:casings/machine_casing_blue_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('advanced_solar_casing')
.itemInputs('8x tfg:casings/machine_casing_blue_solar_panel', 'ad_astra:photovoltaic_etrium_cell')
.itemOutputs('8x tfg:casings/machine_casing_green_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('elite_solar_casing')
.itemInputs('8x tfg:casings/machine_casing_green_solar_panel', 'ad_astra:photovoltaic_vesnium_cell')
.itemOutputs('8x tfg:casings/machine_casing_red_solar_panel')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
event.recipes.gtceu.assembler('tfg:reflector_from_lens')
.itemInputs(
'24x #forge:lenses',
ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1)
)
.inputFluids(Fluid.of('gtceu:silver', 1296))
.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')
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, GTMaterials.CertusQuartz, 12),
ChemicalHelper.get(TagPrefix.frameGt, GTMaterials.BlackSteel, 1)
)
.inputFluids(Fluid.of('gtceu:silver', 488))
.itemOutputs('1x tfg:reflector')
.circuit(6)
.dimension('ad_astra:moon')
.duration(20 * (60))
.EUt(GTValues.VH[GTValues.MV])
// Moon
event.recipes.gtceu.assembler('iron_desh_casing')
.itemInputs(ChemicalHelper.get(TagPrefix.plate, GTMaterials.Steel, 6), 'gtceu:desh_frame')
.itemOutputs('2x tfg:casings/machine_casing_iron_desh')
.circuit(6)
.duration(2.5 * 20)
.EUt(16)
// Evaporation
event.recipes.gtceu.assembler('tfg:casings/machine_casing_stainless_evaporation')
.itemInputs('gtceu:clean_machine_casing', '4x gtceu:annealed_copper_double_wire')
.inputFluids(Fluid.of('gtceu:polyvinyl_chloride', 288))
.itemOutputs('tfg:casings/machine_casing_stainless_evaporation')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
// 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))
.itemOutputs('tfg:casings/machine_casing_mars')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.assembler('gtceu:atomic_casing')
.itemInputs('4x #forge:dense_plates/lead', '2x #forge:plates/rtm_alloy', '#forge:frames/titanium')
.inputFluids(Fluid.of('gtceu:polyvinyl_butyral', 288))
.itemOutputs('2x gtceu:atomic_casing')
.circuit(6)
.duration(2.5 * 20)
.EUt(GTValues.VA[GTValues.HV])
// Vacuum Intake
event.shaped('tfg:casings/machine_casing_vacuum_engine_intake', [
'USU',
'WZW',
'UTU'
], {
S: '#forge:tools/hammers',
T: '#forge:tools/wrenches',
W: '#forge:rotors/ultimet',
U: 'gtceu:ultimet_normal_item_pipe',
Z: 'gtceu:inert_machine_casing'
}).id('tfg:shaped/casing_machine_casing_vacuum_engine_intake')
event.recipes.gtceu.assembler('tfg:casings/machine_casing_vacuum_engine_intake')
.itemInputs(
'2x #forge:rotors/ultimet',
'4x gtceu:ultimet_normal_item_pipe',
'1x gtceu:inert_machine_casing')
.itemOutputs('tfg:casings/machine_casing_vacuum_engine_intake')
.duration(50)
.EUt(GTValues.VH[GTValues.LV])
.circuit(2)
}

View file

@ -0,0 +1,254 @@
"use strict";
function registerTFGElectronicComponentsRecipes(event) {
// Electron tubes
event.shaped('1x create:electron_tube', [
'FAG',
'BCB',
'DED'
], {
A: 'gtceu:glass_tube',
B: '#forge:bolts/steel',
C: 'gtceu:wood_plate',
D: 'gtceu:red_alloy_single_wire',
E: '#forge:plates/wrought_iron',
F: '#forge:tools/screwdrivers',
G: '#forge:tools/wire_cutters'
}).id('tfg:create/shaped/electron_tube')
event.recipes.createSequencedAssembly([
'2x create:electron_tube',
], 'gtceu:wood_plate', [
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', '#forge:plates/wrought_iron']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:red_alloy_single_wire']),
event.recipes.createDeploying('tfg:unfinished_electron_tube', ['tfg:unfinished_electron_tube', 'gtceu:glass_tube']),
]).transitionalItem('tfg:unfinished_electron_tube').loops(1).id('tfg:create/sequenced_assembly/electron_tube')
event.recipes.gtceu.assembler('create:electron_tube')
.itemInputs('#forge:plates/wrought_iron', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire')
.itemOutputs('2x create:electron_tube')
.duration(50)
.EUt(7)
.circuit(14)
event.shaped('4x create:electron_tube', [
'FAG',
'DCD'
], {
A: 'gtceu:glass_tube',
C: 'gtceu:plastic_circuit_board',
D: 'gtceu:red_alloy_single_wire',
F: '#forge:tools/screwdrivers',
G: '#forge:tools/wire_cutters'
}).id('tfg:create/shaped/electron_tube2')
event.recipes.gtceu.assembler('create:electron_tube2')
.itemInputs('gtceu:plastic_circuit_board', 'gtceu:glass_tube', '2x gtceu:red_alloy_single_wire')
.itemOutputs('4x create:electron_tube')
.duration(50)
.EUt(7)
event.shaped('4x create:electron_tube', [
' A ',
' B ',
' C '
], {
A: '#forge:tools/screwdrivers',
B: 'gtceu:nand_chip',
C: 'gtceu:plastic_circuit_board'
}).id('tfg:create/shaped/electron_tube3')
event.recipes.gtceu.assembler('create:electron_tube3')
.itemInputs('gtceu:plastic_circuit_board', 'gtceu:nand_chip')
.itemOutputs('4x create:electron_tube')
.duration(50)
.EUt(7)
// Vacuum Tubes
event.remove({ id: 'gtceu:shaped/vacuum_tube' })
event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_plain' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board')
event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board')
event.replaceInput({ id: 'gtceu:assembler/vacuum_tube_red_alloy_annealed' }, 'gtceu:steel_bolt', 'gtceu:resin_circuit_board')
event.recipes.createSequencedAssembly([
'gtceu:vacuum_tube',
], 'gtceu:resin_circuit_board', [
event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', '#forge:bolts/steel']),
event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']),
event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:copper_single_wire']),
event.recipes.createDeploying('tfg:unfinished_vacuum_tube', ['tfg:unfinished_vacuum_tube', 'gtceu:glass_tube']),
event.custom({ type: 'vintageimprovements:vacuumizing', ingredients: [{ item: 'tfg:unfinished_vacuum_tube' }], results: [{ item: 'tfg:unfinished_vacuum_tube' }], processingTime: 80 })
]).transitionalItem('tfg:unfinished_vacuum_tube').loops(1).id('tfg:gtceu/sequenced_assembly/vacuum_tube')
// ULV Coil
event.recipes.createSequencedAssembly([
'gtceu:ulv_voltage_coil',
], 'gtceu:magnetic_iron_rod', [
event.recipes.createDeploying('gtceu:magnetic_iron_rod', ['gtceu:magnetic_iron_rod', '#forge:fine_wires/lead'])
]).transitionalItem('gtceu:magnetic_iron_rod').loops(32).id('tfg:sequenced_assembly/ulv_voltage_coil')
// LV basic circuit
event.remove({ id: 'gtceu:shaped/electronic_circuit_lv' })
event.recipes.createSequencedAssembly([
'gtceu:basic_electronic_circuit',
], 'gtceu:resin_printed_circuit_board', [
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']),
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:resistor']),
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']),
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'gtceu:vacuum_tube']),
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', 'create:electron_tube']),
event.recipes.createFilling('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', Fluid.of('gtceu:glue', 50)]),
event.recipes.createDeploying('tfg:unfinished_basic_electronic_circuit', ['tfg:unfinished_basic_electronic_circuit', '#forge:plates/steel']),
]).transitionalItem('tfg:unfinished_basic_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/basic_electronic_circuit')
// MV basic circuit
event.remove({ id: 'gtceu:shaped/electronic_circuit_mv' })
event.recipes.createSequencedAssembly([
'gtceu:good_electronic_circuit',
], 'gtceu:phenolic_printed_circuit_board', [
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:diode']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:single_wires/copper']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', 'gtceu:basic_electronic_circuit']),
event.recipes.createDeploying('tfg:unfinished_good_electronic_circuit', ['tfg:unfinished_good_electronic_circuit', '#forge:plates/steel']),
]).transitionalItem('tfg:unfinished_good_electronic_circuit').loops(1).id('tfg:gtceu/sequenced_assembly/good_electronic_circuit')
// Vitrified Pearl
event.recipes.gtceu.shaped('gtceu:mv_field_generator', [
'ABA',
'CDC',
'ABA'
], {
A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MagnesiumDiboride, 1),
B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.Aluminium, 1),
C: '#gtceu:circuits/mv',
D: 'tfg:vitrified_pearl'
}).addMaterialInfo().id('gtceu:shaped/field_generator_mv')
event.recipes.gtceu.assembler('field_generator_mv')
.itemInputs('tfg:vitrified_pearl', '2x #forge:plates/aluminium', '2x #gtceu:circuits/mv', '4x #forge:quadruple_wires/magnesium_diboride')
.itemOutputs('gtceu:mv_field_generator')
.duration(100)
.EUt(30)
// Cryo Fluix Pearl
event.replaceInput({ id: 'gtceu:assembler/field_generator_hv' }, 'gtceu:quantum_eye', 'tfg:cryo_fluix_pearl')
event.recipes.gtceu.shaped('gtceu:hv_field_generator', [
'ABA',
'CDC',
'ABA'
], {
A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.MercuryBariumCalciumCuprate, 1),
B: ChemicalHelper.get(TagPrefix.plate, GTMaterials.StainlessSteel, 1),
C: '#gtceu:circuits/hv',
D: 'tfg:cryo_fluix_pearl'
}).addMaterialInfo().id('gtceu:shaped/field_generator_hv')
// Change recipes to want EV circuit instead of IV
event.replaceInput({ id: 'gtceu:shaped/large_combustion_engine' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev')
event.replaceInput({ id: 'gtceu:shaped/nano_chestplate_advanced' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev')
event.replaceInput({ id: 'gtceu:assembler/ev_large_miner' }, '#gtceu:circuits/iv', '#gtceu:circuits/ev')
// Nano wafer
event.remove({ id: 'gtceu:chemical_reactor/nano_cpu_wafer' })
event.remove({ id: 'gtceu:large_chemical_reactor/nano_cpu_wafer' })
event.recipes.gtceu.chemical_reactor('tfg:nano_cpu_wafer')
.inputFluids(Fluid.of('gtceu:tritiated_water', 576))
.itemInputs('gtceu:cpu_wafer', '16x gtceu:carbon_fibers')
.itemOutputs('gtceu:nano_cpu_wafer')
.duration(20*60)
.EUt(GTValues.VA[GTValues.EV])
.cleanroom(CleanroomType.CLEANROOM)
// Change components of IV mainframe to nano chip
event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd_soldering_alloy'})
event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv'})
event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_soldering_alloy'})
event.remove({ id: 'gtceu:circuit_assembler/mainframe_iv_asmd'})
event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv')
.itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire')
.inputFluids(Fluid.of('gtceu:tin', 576))
.itemOutputs('gtceu:micro_processor_mainframe')
.duration(20 * 40)
.EUt(GTValues.VA[GTValues.HV])
.cleanroom(CleanroomType.CLEANROOM)
event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_soldering_alloy')
.itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '8x #gtceu:inductors', '16x #gtceu:capacitors', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.itemOutputs('gtceu:micro_processor_mainframe')
.duration(20 * 40)
.EUt(GTValues.VA[GTValues.HV])
.cleanroom(CleanroomType.CLEANROOM)
event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd')
.itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire')
.inputFluids(Fluid.of('gtceu:tin', 576))
.itemOutputs('gtceu:micro_processor_mainframe')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.HV])
.cleanroom(CleanroomType.CLEANROOM)
event.recipes.gtceu.circuit_assembler('tfg:circuit_assembler/mainframe_iv_asmd_soldering_alloy')
.itemInputs('2x gtceu:aluminium_frame', '2x gtceu:micro_processor_computer', '2x gtceu:advanced_smd_inductor', '4x gtceu:advanced_smd_capacitor', 'gtceu:nano_cpu_chip', '16x gtceu:annealed_copper_single_wire')
.inputFluids(Fluid.of('gtceu:soldering_alloy', 288))
.itemOutputs('gtceu:micro_processor_mainframe')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.HV])
.cleanroom(CleanroomType.CLEANROOM)
// Quantum Eye
event.replaceInput({ id: 'gtceu:assembler/field_generator_ev' }, 'minecraft:nether_star', 'gtceu:quantum_eye')
event.recipes.gtceu.shaped('gtceu:ev_field_generator', [
'ABA',
'CDC',
'ABA'
], {
A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.UraniumTriplatinum, 1),
B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 1),
C: '#gtceu:circuits/ev',
D: 'gtceu:quantum_eye'
}).addMaterialInfo().id('gtceu:shaped/field_generator_ev')
event.remove({ id: 'gtceu:chemical_bath/quantum_eye' })
event.recipes.gtceu.chemical_bath('tfg:quantum_eye')
.itemInputs('tfg:cryo_fluix_pearl')
.inputFluids(Fluid.of('gtceu:radon', 250))
.itemOutputs('gtceu:quantum_eye')
.duration(20 * 24)
.EUt(GTValues.VA[GTValues.HV])
// Nether Star
event.replaceInput({ id: 'gtceu:assembler/field_generator_iv' }, 'gtceu:quantum_star', 'minecraft:nether_star')
event.recipes.gtceu.shaped('gtceu:iv_field_generator', [
'ABA',
'CDC',
'ABA'
], {
A: ChemicalHelper.get(TagPrefix.wireGtQuadruple, GTMaterials.SamariumIronArsenicOxide, 1),
B: ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.TungstenSteel, 1),
C: '#gtceu:circuits/iv',
D: 'minecraft:nether_star'
}).addMaterialInfo().id('gtceu:shaped/field_generator_iv')
event.recipes.gtceu.chemical_reactor('tfg:gtceu/nether_star_dust')
.itemInputs('2x #forge:dusts/iridium', '#forge:dusts/diamond')
.circuit(10)
.itemOutputs('gtceu:nether_star_dust')
// TODO: change to something else with venus
.inputFluids(Fluid.of('gtceu:neon', 1000))
.duration(700)
.EUt(2720)
}

View file

@ -0,0 +1,61 @@
"use strict";
function registerTFGEnderPearlRecipes(event) {
event.recipes.gtceu.chemical_reactor('kaolinite')
.itemInputs('5x #tfg:aluminium_oxide', '2x #forge:dusts/silicon')
.inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000))
.itemOutputs('17x tfc:powder/kaolinite')
.outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000))
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('kaolinite_ruby')
.itemInputs('6x #forge:dusts/ruby', '2x #forge:dusts/silicon')
.inputFluids(Fluid.of('gtceu:distilled_water', 6000), Fluid.of('gtceu:chlorine', 8000))
.itemOutputs('17x tfc:powder/kaolinite', '1x #forge:dusts/chromium')
.outputFluids(Fluid.of('gtceu:hydrochloric_acid', 8000))
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.pyrolyse_oven('vitrified_ender_dust')
.itemInputs('minecraft:ender_pearl', '2x tfc:powder/kaolinite', '4x #forge:insulation_t1')
.inputFluids(Fluid.of('gtceu:nitrogen', 100))
.itemOutputs('tfg:vitrified_pearl')
.chancedOutput('gtceu:ash_dust', 2500, 0)
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_dynamite')
.itemInputs('4x #forge:dusts/vitrified_pearl', '2x gtceu:dynamite')
.itemOutputs('3x tfg:vitrified_pearl')
.chancedOutput('#forge:dusts/dark_ash', 2500, 0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_powderbarrel')
.itemInputs('4x #forge:dusts/vitrified_pearl', '8x gtceu:powderbarrel')
.itemOutputs('3x tfg:vitrified_pearl')
.chancedOutput('#forge:dusts/dark_ash', 2500, 0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_tnt')
.itemInputs('4x #forge:dusts/vitrified_pearl', '4x minecraft:tnt')
.itemOutputs('3x tfg:vitrified_pearl')
.chancedOutput('#forge:dusts/dark_ash', 2500, 0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.implosion_compressor('vitrified_ender_pearl_itnt')
.itemInputs('4x #forge:dusts/vitrified_pearl', 'gtceu:industrial_tnt')
.itemOutputs('3x tfg:vitrified_pearl')
.chancedOutput('#forge:dusts/dark_ash', 2500, 0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.macerator('vitrified_ender_pearl')
.itemInputs('tfg:vitrified_pearl')
.itemOutputs('#forge:dusts/vitrified_pearl')
.duration(40)
.EUt(GTValues.VA[GTValues.ULV])
}

View file

@ -0,0 +1,177 @@
"use strict";
function registerTFGMultiblockRecipes(event) {
// Multi-Smelter
event.shaped('gtceu:multi_smelter', [
'AAA',
'BCB',
'DBD'
], {
A: 'gtceu:hp_steam_furnace',
B: '#gtceu:circuits/hv',
C: 'gtceu:heatproof_machine_casing',
D: 'gtceu:copper_single_cable'
}).id('gtceu:shaped/multi_furnace')
event.shaped('gtceu:multi_smelter', [
'AAA',
'BCB',
'DBD'
], {
A: 'gtceu:lv_electric_furnace',
B: '#gtceu:circuits/hv',
C: 'gtceu:heatproof_machine_casing',
D: 'gtceu:copper_single_cable'
}).id('gtceu:shaped/multi_furnace2')
// Electric Blast Furnace
event.shaped('gtceu:electric_blast_furnace', [
'AAA',
'BCB',
'DBD'
], {
A: 'gtceu:hp_steam_furnace',
B: '#gtceu:circuits/lv',
C: 'gtceu:heatproof_machine_casing',
D: 'gtceu:tin_single_cable'
}).id('gtceu:shaped/electric_blast_furnace')
event.shaped('gtceu:electric_blast_furnace', [
'AAA',
'BCB',
'DBD'
], {
A: 'gtceu:lv_electric_furnace',
B: '#gtceu:circuits/lv',
C: 'gtceu:heatproof_machine_casing',
D: 'gtceu:tin_single_cable'
}).id('gtceu:shaped/electric_blast_furnace2')
// TFG customs
event.shaped('tfg:electric_greenhouse', [
'ABA',
'CDC',
'BCB'
], {
A: '#gtceu:circuits/mv',
B: '#forge:single_cables/copper',
C: 'tfc:compost',
D: 'gtceu:steel_machine_casing'
}).id('tfg:shaped/electric_greenhouse')
event.shaped('gtceu:steam_bloomery', [
'CEC',
'DAD',
'CBC'
], {
A: 'tfc:bloomery',
B: '#forge:frames/bronze',
C: '#forge:rods/black_steel',
D: '#forge:screws/wrought_iron',
E: '#forge:tools/wrenches'
})
event.shaped('tfg:ostrum_linear_accelerator', [
'USU',
'WZW',
'PTP'
], {
S: 'tfg:casings/machine_casing_vacuum_engine_intake',
Z: 'gtceu:iv_machine_hull',
W: '#gtceu:circuits/iv',
U: '#forge:double_plates/stellite_100',
T: '#forge:single_cables/platinum',
P: 'gtceu:iv_electric_pump'
}
).id('tfg:shaped/ostrum_linear_accelerator')
event.recipes.gtceu.assembler('tfg:ostrum_harvester')
.itemInputs(
'1x gtceu:ev_machine_hull',
'4x #gtceu:circuits/ev',
'4x gtceu:ev_electric_motor',
'4x #forge:rotors/black_steel',
'4x gtceu:ev_electric_pump',
'4x #forge:gears/desh')
.itemOutputs('gtceu:ostrum_harvester')
.duration(400)
.EUt(GTValues.VA[GTValues.EV])
.circuit(2)
event.recipes.gtceu.assembler('tfg:moon_dust_harvester')
.itemInputs(
'1x gtceu:hv_machine_hull',
'4x #gtceu:circuits/hv',
'4x gtceu:hv_electric_motor',
'4x #forge:rotors/titanium',
'4x gtceu:hv_electric_pump',
'4x #forge:gears/rocket_alloy_t1')
.itemOutputs('gtceu:moon_dust_harvester')
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
.circuit(2)
event.recipes.gtceu.shaped('tfg:evaporation_tower', [
'TUT',
'WZW',
'TUT'
], {
T: '#gtceu:circuits/iv',
W: 'gtceu:ev_electric_pump',
U: '#forge:double_wires/nichrome',
Z: 'gtceu:ev_machine_hull'
}).addMaterialInfo().id('tfg:shaped/evaporation_tower')
event.shaped('deafission:fission_reactor_mk1', [
'TUT',
'WZW',
'TUT'
], {
T: 'gtceu:atomic_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:hv_field_generator',
Z: 'gtceu:ev_machine_hull'
}
).id('tfg:shaped/fission_reactor_mk1')
event.shaped('gtceu:nuclear_fuel_factory', [
'TUT',
'WZW',
'TBT'
], {
T: 'gtceu:atomic_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:ev_emitter',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ev_robot_arm'
}
).id('tfg:shaped/nuclear_fuel_factory')
event.shaped('gtceu:heat_exchanger', [
'TUT',
'WZW',
'GBG'
], {
T: 'gtceu:high_temperature_smelting_casing',
W: '#gtceu:circuits/ev',
U: 'gtceu:ev_sensor',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ev_fluid_regulator',
G: '#forge:gears/ostrum_iodide'
}
).id('tfg:shaped/heat_exchanger')
event.shaped('tfg:nuclear_turbine', [
'CTC',
'TZT',
'BTB'
], {
T: '#forge:gears/magnalium',
Z: 'gtceu:ev_machine_hull',
B: 'gtceu:ultimet_large_item_pipe',
C: '#gtceu:circuits/ev'
}
).id('tfg:shaped/nuclear_turbine')
}

View file

@ -0,0 +1,38 @@
"use strict";
function registerTFGSteamBloomeryRecipes(event) {
event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coal')
.itemInputs('#forge:ingots/iron', '#tfc:steam_bloomery_basic_fuels')
.itemOutputs('tfc:raw_iron_bloom')
.duration(2400)
.EUt(2)
event.recipes.gtceu.steam_bloomery('steam_raw_iron_bloom_coalcoke')
.itemInputs('2x #forge:ingots/iron', '#tfc:blast_furnace_fuel')
.itemOutputs('2x tfc:raw_iron_bloom')
.duration(2400)
.EUt(2)
forEachMaterial(material => {
const tfcProperty = material.getProperty(TFGPropertyKey.TFC_PROPERTY)
if (tfcProperty === null)
return;
const outputMaterial = tfcProperty.getOutputMaterial() === null ? material : tfcProperty.getOutputMaterial()
if (outputMaterial === GTMaterials.Iron) {
event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coal_${material.getName()}`)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 1), '#tfc:steam_bloomery_basic_fuels')
.itemOutputs('tfc:raw_iron_bloom')
.duration(2400)
.EUt(2)
event.recipes.gtceu.steam_bloomery(`steam_raw_iron_bloom_coalcoke_${material.getName()}`)
.itemInputs(ChemicalHelper.get(TagPrefix.dust, material, 2), '#tfc:blast_furnace_fuel')
.itemOutputs('2x tfc:raw_iron_bloom')
.duration(2400)
.EUt(2)
}
})
}

View file

@ -0,0 +1,74 @@
"use strict";
function registerTFGMarsIodineRecipes(event) {
// This file is specifically for the crappy mars-based iodine recipe chain.
// The "proper" venus one is elsewhere
event.recipes.gtceu.autoclave('tfg:crimsene')
.inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000))
.itemOutputs('#forge:gems/crimsene')
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.autoclave('tfg:warpane')
.inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.outputFluids(Fluid.of('gtceu:hydrogen', 1000))
.itemOutputs('#forge:gems/warpane')
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.macerator('tfg:crimsene')
.itemInputs('#forge:gems/crimsene')
.itemOutputs('#forge:dusts/crimsene')
.duration(20 * 5)
.EUt(2)
event.recipes.gtceu.macerator('tfg:warpane')
.itemInputs('#forge:gems/warpane')
.itemOutputs('#forge:dusts/warpane')
.duration(20 * 5)
.EUt(2)
event.recipes.gtceu.mixer('tfg:mars_sap')
.itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene')
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500))
.itemOutputs('#forge:dusts/mycelienzene')
.duration(30 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.deafission.fission_reactor_processing('tfg:mars_sap')
.itemInputs('#forge:dusts/mycelienzene')
.outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000))
.blastFurnaceTemp(100)
.duration(30 * 10)
event.recipes.gtceu.centrifuge('mars_sap_separation')
.inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000))
.outputFluids(
Fluid.of('tfg:iodomethane', 1000),
Fluid.of('tfg:trideuteroiodomethane', 1000),
Fluid.of('gtceu:krypton', 1000),
Fluid.of('gtceu:diluted_hydrochloric_acid', 4000))
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation')
.inputFluids(
Fluid.of('tfg:iodomethane', 1000),
Fluid.of('gtceu:hydrogen', 1000))
.itemOutputs('#forge:dusts/iodine')
.outputFluids(Fluid.of('gtceu:methane', 1000))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation')
.inputFluids(
Fluid.of('tfg:trideuteroiodomethane', 1000),
Fluid.of('gtceu:oxygen', 1500))
.itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon')
.outputFluids(Fluid.of('tfg:heavy_water', 1500))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.MV])
}

View file

@ -0,0 +1,231 @@
"use strict";
function registerTFGMarsRecipes(event) {
// Mars air
event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air')
.inputFluids(Fluid.of('tfg:mars_air', 4000))
.outputFluids(Fluid.of('tfg:liquid_mars_air', 4000))
.duration(80)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air')
.inputFluids(Fluid.of('tfg:mars_air', 10000))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500))
.duration(1600)
.EUt(GTValues.VA[GTValues.MV])
// TODO: move neon and xenon somewhere else
event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air')
.inputFluids(Fluid.of('tfg:liquid_mars_air', 100000))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000))
.outputFluids(Fluid.of('gtceu:nitrogen', 7000))
.outputFluids(Fluid.of('gtceu:argon', 5000))
.outputFluids(Fluid.of('gtceu:oxygen', 3000))
.outputFluids(Fluid.of('gtceu:krypton', 1000))
.outputFluids(Fluid.of('gtceu:neon', 1000))
.outputFluids(Fluid.of('gtceu:xenon', 1000))
.chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0)
.disableDistilleryRecipes(true)
.duration(2000)
.EUt(GTValues.VA[GTValues.EV])
//#region Mars Water
event.recipes.gtceu.centrifuge('mars_heavy_water')
.inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('tfg:heavy_water', 500))
.itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride')
.duration(20*9)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.centrifuge('mars_semiheavy_water')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('tfg:semiheavy_water', 500))
.itemOutputs('2x #forge:tiny_dusts/ammonium_chloride')
.duration(20*9)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillery('mars_semiheavy_water')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('minecraft:water', 250))
.duration(20*5)
.EUt(GTValues.VA[GTValues.MV])
// Mars plants
event.recipes.gtceu.mixer('tfg:bio_glowstone')
.itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block')
.outputFluids(Fluid.of('gtceu:biomass', 100))
.itemOutputs('2x minecraft:glowstone_dust')
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.EV])
.dimension('ad_astra:mars')
// Ad astra woods
global.AD_ASTRA_WOOD.forEach(wood => {
woodBuilder(event, wood.name, wood.lumber, wood.logs, wood.log, wood.stripped_log, wood.plank, wood.stair, wood.slab, wood.door, wood.trapdoor, wood.fence, wood.fence_gate, wood.support, wood.pressure_plate, wood.button)
})
event.shaped('16x ad_astra:aeronos_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/aeronos',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
}).id('tfg:shaped/aeronos_ladder')
event.shaped('16x ad_astra:strophar_ladder', [
'A A',
'ABA',
'A A'
], {
A: 'tfg:wood/lumber/strophar',
B: ChemicalHelper.get(TagPrefix.rod, GTMaterials.Wood, 1),
}).id('tfg:shaped/strophar_ladder')
generateGreenHouseRecipe(event, '8x tfg:saplings/strophar', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:strophar_stem', 'tfg:green_house/strophar_mushroom', 'ad_astra:mars', 8,
'16x ad_astra:strophar_cap', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/aeronos', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:aeronos_stem', 'tfg:green_house/aeronos_mushroom', 'ad_astra:mars', 8,
'16x ad_astra:aeronos_cap', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/glacian', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x ad_astra:glacian_log', 'tfg:green_house/glacian_tree', 'ad_astra:mars', 8,
'8x species:alphacene_moss_block', GTValues.VA[GTValues.MV])
// Beneath woods
generateGreenHouseRecipe(event, '8x tfg:saplings/warped', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x beneath:wood/log/warped', 'tfg:green_house/warped_fungus', 'ad_astra:mars', 8,
'32x minecraft:warped_wart_block', GTValues.VA[GTValues.MV])
generateGreenHouseRecipe(event, '8x tfg:saplings/crimson', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x beneath:wood/log/crimson', 'tfg:green_house/crimson_fungus', 'ad_astra:mars', 8,
'32x minecraft:nether_wart_block', GTValues.VA[GTValues.MV])
// don't pass in the items like doors, trapdoors etc because beneath already has good recipes for those
woodBuilder(event, 'crimson', 'beneath:wood/lumber/crimson', '#tfc:crimson_logs', 'beneath:wood/log/crimson',
'beneath:wood/stripped_log/crimson', 'beneath:wood/planks/crimson', null,
'beneath:wood/planks/crimson_slab', null, null, null, null, null, 'beneath:wood/planks/crimson_pressure_plate',
'beneath:wood/planks/crimson_button')
event.recipes.gtceu.lathe(`tfg:cutter/crimson_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/crimson')
.itemOutputs('beneath:wood/stripped_wood/crimson')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: 'beneath:wood/wood/crimson' }],
results: [{ item: 'beneath:wood/stripped_wood/crimson' }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_crimson_wood`)
woodBuilder(event, 'warped', 'beneath:wood/lumber/warped', '#tfc:warped_logs', 'beneath:wood/log/warped',
'beneath:wood/stripped_log/warped', 'beneath:wood/planks/warped', null,
'beneath:wood/planks/warped_slab', null, null, null, null, null, 'beneath:wood/planks/warped_pressure_plate',
'beneath:wood/planks/warped_button')
event.recipes.gtceu.lathe(`tfg:cutter/warped_stripped_wood_from_wood`)
.itemInputs('beneath:wood/wood/warped')
.itemOutputs('beneath:wood/stripped_wood/warped')
.duration(50)
.EUt(GTValues.VA[GTValues.ULV])
event.custom({
type: 'vintageimprovements:polishing',
ingredients: [{ item: 'beneath:wood/wood/warped' }],
results: [{ item: 'beneath:wood/stripped_wood/warped' }],
speed_limits: 0,
processingTime: 50
}).id(`tfg:vi/lathe/stripping_warped_wood`)
// Alphacene
generateGreenHouseRecipe(event, '8x tfg:saplings/alphacene', 'tfg:semiheavy_ammoniacal_water', 16000,
'64x species:alphacene_mushroom_block', 'tfg:green_house/alphacene_mushroom', 'ad_astra:mars', 8,
'8x minecraft:mushroom_stem', GTValues.VA[GTValues.MV])
//Large Nest
event.shaped('tfg:large_nest_box',
[
'B B',
'ABA',
'AAA'
], {
A: 'beneath:crimson_thatch',
B: 'beneath:crimson_straw'
}).id('tfg:shaped_large_nest_crimson')
event.shaped('tfg:large_nest_box_warped',
[
'B B',
'ABA',
'AAA'
], {
A: 'beneath:warped_thatch',
B: 'beneath:warped_straw'
}).id('tfg:shaped_large_nest_warped')
// Animal stuff
event.shapeless('species:cracked_wraptor_egg', ['tfg:wraptor_egg', '#forge:tools/hammers']).id('tfg:shapeless/crack_egg')
event.shapeless('2x tfg:wraptor_sugar', ['species:cracked_wraptor_egg']).id('tfg:shapeless/juice_egg')
event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_mv')
.itemInputs('species:cracked_wraptor_egg')
.itemOutputs('4x tfg:wraptor_sugar')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.extractor('tfg:juice_wraptor_egg_full')
.itemInputs('tfg:wraptor_egg')
.itemOutputs('4x tfg:wraptor_sugar')
.duration(200)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.extractor('tfg:juice_sniffer_egg')
.itemInputs('tfg:sniffer_egg')
.outputFluids(Fluid.of('firmalife:cream', 1000))
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.tfc.loom(
'8x ad_astra:glacian_fur',
'8x tfg:glacian_wool',
8,
'ad_astra:block/glacian_fur'
)
event.recipes.gtceu.assembler('tfg:assembler/glacian_fur')
.itemInputs('tfg:glacian_wool')
.circuit(10)
.itemOutputs('ad_astra:glacian_fur')
.duration(100)
.EUt(4)
event.recipes.tfc.damage_inputs_shapeless_crafting(
event.shapeless('8x tfc:wool_yarn', [
'tfc:spindle',
'tfg:glacian_wool'
]).id('tfg:shapeless/glacian_wool_to_yarn'))
event.recipes.gtceu.wiremill('tfg:glacian_wool_yarn')
.itemInputs('tfg:glacian_wool')
.itemOutputs('8x tfc:wool_yarn')
.duration(100)
.EUt(4)
event.shaped('minecraft:pink_bed', [
'AAA',
'BBB'
], {
A: 'ad_astra:glacian_fur',
B: '#tfc:lumber'
}).id('tfg:shaped/glacian_bed')
}

View file

@ -0,0 +1,140 @@
"use strict";
function registerTFGMarsOstrumRecipes(event) {
var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability");
var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient");
const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic')
// Ostrum Harvester
event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`)
.perTick(true)
.inputFluids('gtceu:drilling_fluid 4')
.perTick(false)
.dimension('ad_astra:mars')
.itemOutputsRanged('gtceu:ostrum_dust', 1, 5)
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.LV]);
// Ostrum Linear Accelerator Recipes
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.itemInputs('32x #forge:dusts/ostrum')
.chancedFluidOutputLogic($ChanceLogic.XOR)
.chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0)
.chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0)
.chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.EV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum')
.inputFluids('gtceu:lightweight_ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('tfg:heavy_water', 1000))
.itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10)
.itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10)
.itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum')
.inputFluids('gtceu:ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('gtceu:radon', 100))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum')
.inputFluids('gtceu:dense_ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('gtceu:tritiated_water', 500))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
// Ostrum Linear Accelerator Recipes
// .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft
/*
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.itemInputs('32x #forge:dusts/ostrum')
.chancedFluidOutputLogic($ChanceLogic.XOR)
.chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0)
.chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0)
.chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.EV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
//.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.circuit(1);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.inputFluids(Fluid.of('tfg:semiheavy_water', 1))
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.inputFluids(Fluid.of('gtceu:krypton', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10)
//.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.IV])
.circuit(2);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.inputFluids(Fluid.of('tfg:semiheavy_water', 1))
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.inputFluids(Fluid.of('gtceu:krypton', 10))
.inputFluids(Fluid.of('gtceu:tritiated_water', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20)
.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.IV])
.circuit(3);
*/
//#endregion
}

View file

@ -0,0 +1,27 @@
"use strict";
function registerTFGMoonRecipes(event) {
// Cryo Fluix
event.recipes.gtceu.vacuum_freezer('gtceu:cryo_fluix')
.inputFluids(Fluid.of('gtceu:helium_3', 1000))
.inputFluids(Fluid.of('tfg:fluix', 144))
.outputFluids(Fluid.of('tfg:cryogenized_fluix', 576))
.duration(30 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.fluid_heater('tfg:cryo_fluix')
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 576))
.outputFluids(Fluid.of('tfg:fluix', 144))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl')
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 576))
.itemInputs('tfg:vitrified_pearl')
.itemOutputs('tfg:cryo_fluix_pearl')
.duration(300)
.EUt(GTValues.VA[GTValues.EV])
.cleanroom(CleanroomType.CLEANROOM)
}

View file

@ -0,0 +1,90 @@
"use strict";
function registerTFGMoonPlantRecipes(event) {
// Plants - Can't use the default builder here because fertiliser is much harder to get on the moon,
// and we're using helium-3 as the fertiliser
// Chorus
event.recipes.gtceu.greenhouse('tfg:chorus')
.notConsumable('8x tfg:lunar_chorus_flower')
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 750, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 500, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 750, 0)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:chorus_helium')
.notConsumable('8x tfg:lunar_chorus_flower')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0)
.duration(12000) // 10 mins
.circuit(2)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
// Replace the built-in greg one to add a circuit
event.recipes.gtceu.fermenter('fermented_biomass')
.inputFluids(Fluid.of('gtceu:biomass', 100))
.outputFluids(Fluid.of('gtceu:fermented_biomass', 100))
.circuit(1)
.duration(150)
.EUt(2)
event.recipes.gtceu.fermenter('tfg:chorus')
.itemInputs('minecraft:chorus_fruit')
.inputFluids(Fluid.of('gtceu:biomass', 20))
.chancedOutput('ae2:ender_dust', 100, 0)
.outputFluids(Fluid.of('gtceu:nitrogen', 1000))
.circuit(2)
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.fermenter('tfg:chorus_flower')
.itemInputs('tfg:lunar_chorus_flower')
.inputFluids(Fluid.of('gtceu:biomass', 20))
.chancedOutput('ae2:ender_dust', 100, 0)
.outputFluids(Fluid.of('gtceu:nitrogen', 1000))
.circuit(2)
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
// Lightblooms
event.recipes.gtceu.greenhouse('tfg:lightbloom')
.notConsumable('8x minecraft:twisting_vines')
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 2500, 0)
.chancedOutput('minecraft:verdant_froglight', 2500, 0)
.chancedOutput('minecraft:ochre_froglight', 2500, 0)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.LV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:lightbloom_helium')
.notConsumable('8x minecraft:twisting_vines')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 3500, 0)
.chancedOutput('minecraft:verdant_froglight', 3500, 0)
.chancedOutput('minecraft:ochre_froglight', 3500, 0)
.duration(12000) // 30 mins
.circuit(2)
.EUt(GTValues.VA[GTValues.LV])
.dimension('ad_astra:moon')
event.recipes.gtceu.brewery('biomass_from_twisting_vines')
.itemInputs('minecraft:twisting_vines')
.inputFluids("#tfg:clean_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 20))
.duration(50)
.EUt(3)
}

View file

@ -0,0 +1,144 @@
"use strict";
function registerTFGMoonRegolithRecipes(event) {
//#region Moon Harvester
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester')
.biome('tfg:moon/lunar_asurine_dense')
.itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(1)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense')
.biome('tfg:moon/lunar_chorus_dense')
.itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(2)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense')
.biome('tfg:moon/lunar_corals_dense')
.itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(3)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense')
.biome('tfg:moon/lunar_lights_dense')
.itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(4)
//#endregion
//#region Regolith Vapor Processing
event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension')
.itemInputs('ad_astra:moon_sand', 'tfg:dry_ice')
.itemOutputs('#forge:dusts/regolith_mush')
.dimension('ad_astra:moon')
.duration(20 * 60)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_bath('tfg:regolith_vapor')
.itemInputs('#forge:dusts/regolith_mush')
.inputFluids('gtceu:nitrogen 1000')
.itemOutputs('#forge:dusts/silicon_dioxide')
.outputFluids('gtceu:regolith_vapor 1000')
.dimension('ad_astra:moon')
.duration(20 * 28)
.EUt(GTValues.VHA[GTValues.LV])
//#endregion
//#region Making Dusty Ores
const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic')
event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor')
.itemInputs('#forge:dusts/certus_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_certus_quartz')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor')
.itemInputs('#forge:dusts/goethe_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_goethite')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor')
.itemInputs('#forge:dusts/bright_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.chancedItemOutputLogic($ChanceLogic.XOR)
.chancedOutput('gtceu:dusty_raw_diamond', 2000, 0)
.chancedOutput('gtceu:dusty_raw_gold', 8000, 0)
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor')
.itemInputs('#forge:dusts/cassiterite_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_cassiterite')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
//#endregion
//#region Basic dusty ore centrifuging
// These have special recipes
const DUSTY_ORE_EXCEPTIONS = [
GTMaterials.Goethite,
GTMaterials.Cassiterite,
GTMaterials.Bauxite
]
// Otherwise everything else just centrifuges into its dust version
forEachMaterial(material => {
if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0)
return;
const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1)
const dust = ChemicalHelper.get(TagPrefix.dust, material, 1)
if (dustyOre !== null && dust !== null) {
event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`)
.itemInputs(dustyOre)
.itemOutputs(dust)
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
}
})
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite')
.itemInputs('#forge:dusty_raw_materials/goethite')
.chancedItemOutputLogic($ChanceLogic.XOR)
.chancedOutput('#forge:dusts/iron', 5000, 0)
.chancedOutput('#forge:dusts/copper', 5000, 0)
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite')
.itemInputs('#forge:dusty_raw_materials/bauxite')
.itemOutputs('#forge:dusts/aluminium')
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin')
.itemInputs('#forge:dusty_raw_materials/cassiterite')
.itemOutputs('#forge:dusts/tin')
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
// #endregion
}

View file

@ -1,7 +1,7 @@
// priority: 0
"use strict";
function registerTFCAlabasterRecipes(event) {
function registerTFGAlabasterRecipes(event) {
event.recipes.tfc.damage_inputs_shapeless_crafting(event.recipes.minecraft.crafting_shapeless('4x tfc:alabaster_brick', ['#forge:raw_materials/gypsum', '#tfc:chisels']))
.id('tfc:crafting/alabaster_brick/raw_gypsum')

View file

@ -122,6 +122,10 @@ function registerTFGCollapseRecipes(event) {
// #endregion
// #region Other
event.recipes.tfc.collapse('#tfg:rock_slabs').id('tfg:collapse/rock_slabs')
event.recipes.tfc.collapse('#tfg:rock_stairs').id('tfg:collapse/rock_stairs')
event.recipes.tfc.collapse('#tfg:rock_walls').id('tfg:collapse/rock_walls')
event.recipes.tfc.collapse('minecraft:cobblestone', 'minecraft:stone')
event.recipes.tfc.landslide('minecraft:cobblestone', 'minecraft:cobblestone')
event.recipes.tfc.landslide('minecraft:mossy_cobblestone', 'minecraft:mossy_cobblestone')

View file

@ -0,0 +1,144 @@
"use strict";
function registerTFGConcreteRecipes(event) {
const recipe = event.recipes.gtceu.mixer('concrete_from_marble')
.itemInputs(Ingredient.of('#tfg:stone_dusts').subtract('gtceu:marble_dust').withCount(2), 'gtceu:marble_dust', 'gtceu:gypsum_dust')
.inputFluids("#tfg:clean_water 1000")
.outputFluids('gtceu:concrete 1152')
.duration(40)
.EUt(16)
generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:clay_dust'],
"#tfg:clean_water 500", [], null, 'gtceu:concrete 576', 20, 16, 64, 'concrete_from_clay')
generateMixerRecipe(event, ['3x #tfg:stone_dusts', 'gtceu:calcite_dust', 'gtceu:gypsum_dust'],
"#tfg:clean_water 1000", [], null, 'gtceu:concrete 1152', 40, 16, 64, 'concrete_from_calcite')
//GT light/dark concrete recipe fix
event.remove({ id: 'gtceu:fluid_solidifier/solidify_concrete_block' })
event.remove({ id: 'gtceu:chemical_bath/light_to_dark_concrete' })
event.recipes.gtceu.fluid_solidifier('gtceu:fluid_solidifier/solidify_light_concrete')
.inputFluids(Fluid.of('gtceu:concrete', 144))
.notConsumable('1x gtceu:block_casting_mold')
.itemOutputs('1x gtceu:light_concrete')
.duration(98)
.EUt(7)
event.recipes.gtceu.chemical_bath('gtceu:chemical_bath/dark_concrete')
.inputFluids(Fluid.of('tfc:black_dye', 18))
.itemInputs('1x gtceu:light_concrete')
.itemOutputs('1x gtceu:dark_concrete')
.duration(20)
.EUt(7)
event.recipes.gtceu.extractor('gtceu:extractor/extract_light_concrete')
.itemInputs('1x gtceu:light_concrete')
.outputFluids(Fluid.of('gtceu:concrete', 144))
.duration(98)
.EUt(30)
event.stonecutting('gtceu:light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_bricks')
event.stonecutting('gtceu:chiseled_light_concrete', 'gtceu:light_concrete').id('tfg:stonecutting/chiseled_light_concrete')
event.stonecutting('gtceu:light_concrete_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_tile')
event.stonecutting('gtceu:light_concrete_small_tile', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_small_tile')
event.stonecutting('gtceu:light_concrete_windmill_a', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_a')
event.stonecutting('gtceu:light_concrete_windmill_b', 'gtceu:light_concrete').id('tfg:stonecutting/light_concrete_windmill_b')
event.stonecutting('gtceu:small_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/small_light_concrete_bricks')
event.stonecutting('gtceu:square_light_concrete_bricks', 'gtceu:light_concrete').id('tfg:stonecutting/square_light_concrete_bricks')
event.stonecutting('gtceu:dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_bricks')
event.stonecutting('gtceu:chiseled_dark_concrete', 'gtceu:dark_concrete').id('tfg:stonecutting/chiseled_dark_concrete')
event.stonecutting('gtceu:dark_concrete_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_tile')
event.stonecutting('gtceu:dark_concrete_small_tile', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_small_tile')
event.stonecutting('gtceu:dark_concrete_windmill_a', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_a')
event.stonecutting('gtceu:dark_concrete_windmill_b', 'gtceu:dark_concrete').id('tfg:stonecutting/dark_concrete_windmill_b')
event.stonecutting('gtceu:small_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/small_dark_concrete_bricks')
event.stonecutting('gtceu:square_dark_concrete_bricks', 'gtceu:dark_concrete').id('tfg:stonecutting/square_dark_concrete_bricks')
// Handcrafted artisanal concrete
event.recipes.firmalife.mixing_bowl()
.ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/marble', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000))
.outputFluid(Fluid.of('gtceu:concrete', 1000))
event.recipes.firmalife.mixing_bowl()
.ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/clay'], Fluid.of('minecraft:water', 500))
.outputFluid(Fluid.of('gtceu:concrete', 500))
event.recipes.firmalife.mixing_bowl()
.ingredients(['#tfg:stone_dusts', '#tfg:stone_dusts', '#tfg:stone_dusts', '#forge:dusts/calcite', '#forge:dusts/gypsum'], Fluid.of('minecraft:water', 1000))
.outputFluid(Fluid.of('gtceu:concrete', 1000))
event.recipes.tfc.barrel_sealed(1000)
.inputFluid(Fluid.of('gtceu:concrete', 144))
.inputItem('gtceu:wood_frame')
.outputItem('gtceu:light_concrete')
.id('tfg:barrel/light_concrete')
event.recipes.tfc.barrel_sealed(1000)
.inputFluid(Fluid.of('gtceu:concrete', 96))
.inputItem('tfg:rebar_support')
.outputItem('tfg:reinforced_light_concrete_support')
.id('tfg:barrel/reinforced_light_concrete_support')
event.recipes.tfc.barrel_sealed(500)
.inputItem('gtceu:light_concrete')
.inputFluid(Fluid.of('tfc:black_dye', 18))
.outputItem('gtceu:dark_concrete')
.id('tfg:barrel/dark_concrete')
event.recipes.tfc.barrel_sealed(500)
.inputItem('tfg:light_concrete_support')
.inputFluid(Fluid.of('tfc:black_dye', 10))
.outputItem('tfg:dark_concrete_support')
.id('tfg:barrel/dark_concrete_support')
event.recipes.tfc.barrel_sealed(500)
.inputItem('tfg:reinforced_light_concrete_support')
.inputFluid(Fluid.of('tfc:black_dye', 10))
.outputItem('tfg:reinforced_dark_concrete_support')
.id('tfg:barrel/reinforced_dark_concrete_support')
// Titanium concrete
event.recipes.gtceu.assembler('tfg:titanium_concrete')
.itemInputs('2x #forge:rods/titanium', '#forge:dusts/kaolinite')
.inputFluids(Fluid.of('gtceu:concrete', 144 * 1.5))
.itemOutputs('tfg:titanium_concrete')
.circuit(2)
.duration(20)
.EUt(GTValues.VH[GTValues.EV])
event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks')
.itemInputs('tfg:polished_titanium_concrete')
.notConsumable('#forge:lenses/light_blue')
.itemOutputs('tfg:titanium_concrete_bricks')
.duration(20 * (2.5))
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_small')
.itemInputs('tfg:polished_titanium_concrete')
.notConsumable('#forge:lenses/pink')
.itemOutputs('tfg:titanium_concrete_bricks_small')
.duration(20 * (2.5))
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_bricks_square')
.itemInputs('tfg:polished_titanium_concrete')
.notConsumable('#forge:lenses/green')
.itemOutputs('tfg:titanium_concrete_bricks_square')
.duration(20 * (2.5))
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile')
.itemInputs('tfg:polished_titanium_concrete')
.notConsumable('#forge:lenses/red')
.itemOutputs('tfg:titanium_concrete_tile')
.duration(20 * (2.5))
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.laser_engraver('tfg:titanium_concrete_tile_small')
.itemInputs('tfg:polished_titanium_concrete')
.notConsumable('#forge:lenses/black')
.itemOutputs('tfg:titanium_concrete_tile_small')
.duration(20 * (2.5))
.EUt(GTValues.VA[GTValues.LV])
}

View file

@ -1,7 +1,14 @@
// priority: 0
"use strict";
function registerTFCDirtRecipes(event) {
function registerTFGDirtRecipes(event) {
// Dirt creation
event.recipes.gtceu.macerator('dirt_from_bio_chaff')
.itemInputs('gtceu:bio_chaff')
.itemOutputs('tfc:dirt/loam')
.duration(300)
.EUt(4)
// Loam + Silt -> Silty Loam (Миксер)
event.recipes.gtceu.mixer('silty_loam_dirt')

View file

@ -1238,4 +1238,29 @@ function registerTFGRockRecipes(event) {
})
//#endregion Magma Blocks
//#region GT marble
event.stonecutting('gtceu:polished_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_polished_marble')
event.stonecutting('gtceu:chiseled_marble', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_chiseled_marble')
event.stonecutting('gtceu:marble_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_tile')
event.stonecutting('gtceu:marble_small_tile', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_small_tile')
event.stonecutting('gtceu:marble_windmill_a', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_a')
event.stonecutting('gtceu:marble_windmill_b', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_marble_windmill_b')
event.stonecutting('gtceu:small_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_small_marble_bricks')
event.stonecutting('gtceu:square_marble_bricks', 'tfc:rock/bricks/marble').id('tfg:stonecutting/gt_square_marble_bricks')
//#endregion
// Blackstone Buttons
removeCutterRecipe(event, 'blackstone_button')
removeCutterRecipe(event, 'blackstone_button_water')
removeCutterRecipe(event, 'blackstone_button_distilled_water')
removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button')
removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_water')
removeCutterRecipe(event, 'cut_polished_blackstone_brickslab_into_button_distilled_water')
event.recipes.gtceu.cutter('tfg:blackstone_button')
.itemInputs('minecraft:polished_blackstone_pressure_plate')
.itemOutputs('6x minecraft:polished_blackstone_button')
.EUt(7)
.duration(100)
}

View file

@ -1,7 +1,7 @@
// priority: 0
"use strict";
function registerTFCSandRecipes(event) {
function registerTFGSandRecipes(event) {
// Нефтеносный -> Желтый песок
event.recipes.gtceu.centrifuge('oilsands_ore_separation')
@ -210,4 +210,25 @@ function registerTFCSandRecipes(event) {
event.recipes.greate.pressing('tfc:sand/pink', '#tfc:pink_gravel')
.recipeTier(1)
.id(`greate:pressing/pink_gravel_to_sand`)
// Quartz sand
event.shaped('gtceu:quartz_sand_dust', [
'A',
'B'
], {
A: '#forge:sand',
B: '#forge:tools/mortars'
}).id('gtceu:shaped/quartz_sand')
event.recipes.gtceu.macerator('quartz_sand_from_sand')
.itemInputs('#forge:sand')
.itemOutputs('gtceu:quartz_sand_dust')
.duration(30)
.EUt(2)
event.recipes.gtceu.electrolyzer('sand_electrolysis')
.itemInputs('8x #forge:sand')
.itemOutputs('gtceu:silicon_dioxide_dust')
.duration(500)
.EUt(25)
}

View file

@ -6,6 +6,24 @@
*/
function registerTFGStoneDustRecipes(event) {
event.recipes.gtceu.electrolyzer('gtceu:decomposition_electrolyzing_clay')
.itemInputs('13x #forge:dusts/clay')
.itemOutputs('2x #forge:dusts/sodium', '1x #forge:dusts/lithium', '2x #forge:dusts/aluminium', '2x #forge:dusts/silicon')
.outputFluids(Fluid.of('minecraft:water', 6000))
.duration(GTMaterials.Clay.getMass() * 13)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.centrifuge('gtceu:stone_dust_separation')
.itemInputs('gtceu:stone_dust')
.chancedOutput('#forge:small_dusts/quartzite', 2500, 0)
.chancedOutput('#forge:small_dusts/potassium_feldspar', 2500, 0)
.chancedOutput('#forge:small_dusts/marble', 2222, 0)
.chancedOutput('#forge:small_dusts/biotite', 1111, 0)
.chancedOutput('#forge:small_dusts/metal_mixture', 825, 80)
.chancedOutput('#forge:small_dusts/sodalite', 550, 55)
.duration(12 * 20)
.EUt(GTValues.VA[GTValues.HV])
event.remove({ id: 'gtceu:electrolyzer/decomposition_electrolyzing_blackstone' })
event.recipes.gtceu.centrifuge('gtceu:decomposition_centrifuging__diorite')

View file

@ -1,83 +0,0 @@
// priority: 0
function registerTFGNOstrumRecipes(event) {
var $HeatRecipeCapability = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatRecipeCapability");
var $HeatIngredient = Java.loadClass("fi.dea.mc.deafission.common.data.recipe.HeatIngredient");
const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic')
// Ostrum Linear Accelerator Recipes
// .input($HeatRecipeCapability.CAP, new $HeatIngredient(X, Y)) where X is Minimal Temperature to run and where Y is HU consummed per craft
/*
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.itemInputs('32x #forge:dusts/ostrum')
.chancedFluidOutputLogic($ChanceLogic.XOR)
.chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0)
.chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0)
.chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.EV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t1')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
//.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.circuit(1);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t2')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.inputFluids(Fluid.of('tfg:semiheavy_water', 1))
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.inputFluids(Fluid.of('gtceu:krypton', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 1, 10)
//.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.IV])
.circuit(2);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum_vapor_t3')
.perTick(true)
.inputFluids('gtceu:residual_radioactive_concoction 1')
.inputFluids(Fluid.of('tfg:semiheavy_water', 1))
.perTick(false)
.inputFluids(Fluid.of('gtceu:lightweight_ostrum_vapor',1000))
.inputFluids(Fluid.of('gtceu:radon', 10))
.inputFluids(Fluid.of('gtceu:krypton', 10))
.inputFluids(Fluid.of('gtceu:tritiated_water', 10))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 10, 20)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/silver'), 1, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_tricalcium_phosphate'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 10, 10)
.itemOutputsRanged(Item.of('gtceu:dusty_raw_pitchblende'), 10, 20)
.input($HeatRecipeCapability.CAP, new $HeatIngredient(100, 500))
.dimension('ad_astra:mars')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.IV])
.circuit(3);
*/
//#endregion
}

View file

@ -34,7 +34,7 @@ const STONE_TYPES_TO_COBBLE = {
permafrost: 'gtceu:ice_dust'
}
const registerGTCEULoots = (event) => {
const registerTFGOreLoots = (event) => {
// Have to define these here because normal loot table jsons don't support checking for hammers

View file

@ -1,10 +1,10 @@
// priority: 0
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerGTCEuTFCMetalsRecipes(event) {
function registerTFGAlloyingRecipes(event) {
// #region Colored steels
@ -93,7 +93,40 @@ function registerGTCEuTFCMetalsRecipes(event) {
//#endregion
// red alloy, because crucible always makes 4+1=5
// Rose Gold + Sterling Silver
const copper_types = [
"#forge:ingots/copper",
"#forge:dusts/copper",
"#forge:ingots/annealed_copper",
"#forge:dusts/annealed_copper"
];
const gold_types = [
"#forge:ingots/gold",
"#forge:dusts/gold"
];
const silver_types = [
"#forge:ingots/silver",
"#forge:dusts/silver"
];
copper_types.forEach(copper_types_array => {
gold_types.forEach(gold_types_array => {
event.recipes.gtceu.alloy_smelter(`rose_gold_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${gold_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(gold_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.RoseGold, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
silver_types.forEach(silver_types_array => {
event.recipes.gtceu.alloy_smelter(`sterling_silver_from_${copper_types_array.replace(/:/g, "/").replace(/#/g, "")}_and_${silver_types_array.replace(/:/g, "/").replace(/#/g, "")}`)
.itemInputs(Ingredient.of(copper_types_array).withCount(1), Ingredient.of(silver_types_array).withCount(4))
.itemOutputs(ChemicalHelper.get(TagPrefix.ingot, GTMaterials.SterlingSilver, 5))
.duration(20*10)
.EUt(GTValues.VA[GTValues.LV])
});
});
// Red alloy, because crucible always makes 4+1=5
event.recipes.gtceu.alloy_blast_smelter('red_alloy')
.itemInputs('1x gtceu:copper_dust', '4x minecraft:redstone')
@ -140,4 +173,44 @@ function registerGTCEuTFCMetalsRecipes(event) {
.itemOutputs('5x gtceu:red_alloy_ingot')
.duration(50)
.EUt(16)
event.remove({ id: 'gtceu:mixer/sterling_silver' })
generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/silver'], [], '5x gtceu:sterling_silver_dust',
1, [], 500, 7, 64, 'gtceu:mixer/sterling_silver')
event.remove({ id: 'gtceu:mixer/rose_gold' })
generateMixerRecipe(event, ['#forge:dusts/copper', '4x #forge:dusts/gold'], [], '5x gtceu:rose_gold_dust',
3, [], 500, 7, 64, 'gtceu:mixer/rose_gold')
// Glowstone
event.recipes.gtceu.mixer('gtceu:lv_glowstone')
.itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust')
.itemOutputs('2x minecraft:glowstone_dust')
.circuit(8)
.duration(1200)
.EUt(30)
event.recipes.gtceu.alloy_blast_smelter('abs:liquid_glowstone')
.itemInputs('#forge:dusts/gold', '#forge:dusts/redstone', '#forge:dusts/sulfur')
.outputFluids(Fluid.of('gtceu:glowstone', 288))
.duration(20 * 60 / 1.3)
.EUt(GTValues.VA[GTValues.LV])
.blastFurnaceTemp(1064)
.circuit(9)
// New Alloys
event.recipes.gtceu.mixer('tfg:ostrum_iodide')
.itemInputs('1x #forge:dusts/iodine', '2x #forge:dusts/ostrum')
.itemOutputs('3x #forge:dusts/ostrum_iodide')
.duration(20 * 12)
.circuit(1)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.mixer('tfg:tungsten_bismuth_oxide_composite')
.itemInputs('2x #forge:dusts/bismuth', 'gtceu:tungsten_dust')
.inputFluids(Fluid.of('gtceu:oxygen', 3000))
.itemOutputs('3x tfg:tungsten_bismuth_oxide_composite_dust')
.duration(20 * 12)
.EUt(GTValues.VA[GTValues.EV])
}

View file

@ -0,0 +1,126 @@
"use strict";
function registerTFGBromineRecipes(event) {
/*
event.recipes.gtceu.evaporation_tower('evaporation_brine')
.inputFluids(Fluid.of('tfc:salt_water', 20000))
.outputFluids(Fluid.of('gtceu:raw_brine', 1000))
.duration(20*50)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.evaporation_tower('evaporation_brine_mars')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000))
.outputFluids(Fluid.of('gtceu:raw_brine', 1000))
.duration(20*50)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.fluid_heater('heat_brine')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.outputFluids(Fluid.of("gtceu:hot_brine", 1000))
.duration(20*600)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.heat_exchanger('heat_brine_nuclear')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.inputFluids(Fluid.of("gtceu:irradiated_steam", 1000))
.outputFluids(Fluid.of("gtceu:hot_brine", 1000))
.outputFluids(Fluid.of("gtceu:dense_steam", 1000))
.duration(20*100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:hot_brine', 2000))
.outputFluids(Fluid.of('gtceu:debrominated_brine', 1000))
.duration(20*10)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_acidification')
.inputFluids(Fluid.of("gtceu:hot_brine", 2000))
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000))
.outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000))
.outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating')
.inputFluids(Fluid.of("gtceu:hot_brine", 1000))
.inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000))
.outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:steam', 3000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_chloroination')
.inputFluids(Fluid.of("gtceu:hot_brine", 1000))
.inputFluids(Fluid.of('gtceu:chlorine', 1000))
.outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_neutralization')
.inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000))
.itemInputs('gtceu:potassium_dust')
.outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000))
.itemOutputs(Item.of('2x gtceu:rock_salt_dust'))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.centrifuge('debrominated_brine_decomposition')
.inputFluids(Fluid.of('gtceu:debrominated_brine', 2000))
.outputFluids(Fluid.of('tfc:salt_water'), 1000)
.duration(20*3)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('brine_filtration')
.inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.inputFluids(Fluid.of('gtceu:chlorine', 1000))
.inputFluids(Fluid.of('gtceu:steam', 1000))
.outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000))
.duration(20*15)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation')
.inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000))
.inputFluids(Fluid.of('minecraft:water', 1000))
.outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000))
.outputFluids(Fluid.of('minecraft:water', 2000))
.duration(20*15)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration')
.inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000))
.inputFluids(Fluid.of('gtceu:steam', 1000))
.outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000))
.outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.distillery('bromine_distillation_to_chlorine')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100))
.outputFluids(Fluid.of('gtceu:chlorine', 50))
.duration(20*5)
.circuit(1)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillery('bromine_distillation_to_bromine')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40))
.outputFluids(Fluid.of('gtceu:bromine', 40))
.duration(20*2)
.circuit(2)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillation_tower('bromine_distillation')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000))
.outputFluids(Fluid.of('gtceu:chlorine', 500))
.outputFluids(Fluid.of('gtceu:bromine', 1000))
.duration(20*25)
.EUt(GTValues.VA[GTValues.HV])
*/
}

View file

@ -0,0 +1,132 @@
"use strict";
function registerTFGQuartzRecipes(event) {
//#region Rose Quartz fabrication + decomposition
event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_water' })
event.remove({ id: 'gtceu:autoclave/autoclave_dust_rose_quartz_distilled' })
generateMixerRecipe(event, ['gtceu:nether_quartz_dust', '8x minecraft:redstone'], [], '9x gtceu:rose_quartz_dust', 2, [], 180, 60, 64, 'rose_quartz_dust_mixing')
generateMixerRecipe(event, ['gtceu:tiny_nether_quartz_dust', '8x gtceu:tiny_redstone_dust'], [], 'gtceu:rose_quartz_dust', 2, [], 20, 60, 64, 'tiny_rose_quartz_dust_mixing')
event.recipes.gtceu.autoclave("autoclave_dust_rose_quartz_ice")
.itemInputs('#forge:dusts/rose_quartz')
.inputFluids(Fluid.of("gtceu:ice", 144))
.itemOutputs("#forge:gems/rose_quartz")
.duration(2000)
.EUt(120)
event.recipes.gtceu.electrolyzer('electrolyze_rose_quartz_dust')
.itemInputs('9x gtceu:rose_quartz_dust')
.itemOutputs('1x gtceu:nether_quartz_dust', '8x minecraft:redstone')
.duration(7 * 20)
.EUt(60)
//#endregion
//#region Glass
event.recipes.gtceu.arc_furnace('glass_from_sand')
.itemInputs('#forge:sand')
.itemOutputs('2x minecraft:glass')
.duration(20)
.EUt(30)
global.TFC_BATCH_TO_BOTTLE_ASSEMBLING_RECIPE_COMPONENTS.forEach(element => {
event.recipes.gtceu.alloy_smelter(`tfg:tfc/${element.name}`)
.itemInputs(element.input)
.notConsumable('gtceu:bottle_casting_mold')
.itemOutputs(element.output)
.duration(100)
.EUt(2)
.category(GTRecipeCategories.INGOT_MOLDING)
})
// Lamp Glass
event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass`)
.itemInputs('#tfc:glass_batches')
.notConsumable('#tfg:unfinished_lamps')
.itemOutputs('tfc:lamp_glass')
.duration(100)
.EUt(2)
event.recipes.gtceu.alloy_smelter(`tfg:tfc/lamp_glass_from_dust`)
.itemInputs('#forge:dusts/glass')
.notConsumable('#tfg:unfinished_lamps')
.itemOutputs('tfc:lamp_glass')
.duration(100)
.EUt(2)
// Empty Jar
event.recipes.gtceu.alloy_smelter('tfc:jar_alloying')
.itemInputs('#tfc:glass_batches_tier_2')
.notConsumable('gtceu:ball_casting_mold')
.itemOutputs('tfc:empty_jar')
.duration(100)
.EUt(2)
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.gtceu.fluid_solidifier('tfc:jar_solidification')
.inputFluids(Fluid.of('gtceu:glass', 144))
.notConsumable('gtceu:cylinder_casting_mold')
.itemOutputs('tfc:empty_jar')
.duration(100)
.EUt(2)
event.recipes.gtceu.extractor('tfc:jar_extraction')
.itemInputs('#tfc:jars')
.outputFluids(Fluid.of('gtceu:glass', 144))
.duration(50)
.EUt(2)
event.recipes.gtceu.extractor('tfc:glass_batch_extraction')
.itemInputs('#tfc:glass_batches')
.outputFluids(Fluid.of('gtceu:glass', 144))
.duration(50)
.EUt(2)
event.recipes.gtceu.lathe('tfc:lens')
.itemInputs('#forge:glass')
.itemOutputs('tfc:lens')
.duration(100)
.EUt(16)
// Add all glass colors to macerator/hammer
removeMaceratorRecipe(event, 'macerate_glass');
event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass")
.itemInputs(
"#forge:glass"
)
.itemOutputs("gtceu:glass_dust")
.duration(20)
.EUt(2);
removeMaceratorRecipe(event, 'macerate_glass_pane');
event.recipes.gtceu.macerator("gtceu:macerator/macerate_glass_pane")
.itemInputs(
"#forge:glass_panes"
)
.itemOutputs("3x gtceu:tiny_glass_dust")
.duration(6)
.EUt(2)
event.replaceInput({ id: "gtceu:shaped/glass_dust_hammer" },
"minecraft:glass",
"#forge:glass"
);
event.recipes.gtceu.alloy_smelter('glass_bottle')
.itemInputs('#forge:dusts/glass')
.itemOutputs('tfc:silica_glass_bottle')
.notConsumable('gtceu:bottle_casting_mold')
.EUt(2)
.duration(20 * 5)
.category(GTRecipeCategories.INGOT_MOLDING)
// Glass Tube
event.recipes.tfc.glassworking('gtceu:glass_tube', '#tfc:glass_batches_tier_3', ['blow', 'stretch', 'stretch'])
.id('tfg:gtceu/glassworking/glass_tube')
//#endregion
}

View file

@ -0,0 +1,86 @@
"use strict";
function registerTFGTungstenRecipes(event) {
event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_scheelite' })
event.remove({ id: 'gtceu:chemical_bath/tungstic_acid_from_tungstate' })
event.remove({ id: 'gtceu:electrolyzer/tungstic_acid_electrolysis' })
// Transform Tungstate and Scheelite
event.recipes.gtceu.large_chemical_reactor('tfg:scheelite_to_sodium_tungstate')
.itemInputs(Item.of('gtceu:scheelite_dust', 6))
.itemInputs(Item.of('gtceu:soda_ash_dust', 6))
.itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7))
.itemOutputs(Item.of('gtceu:calcite_dust', 5))
.duration(20*12)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.large_chemical_reactor('tfg:tungstate_to_sodium_tungstate')
.itemInputs(Item.of('gtceu:tungstate_dust', 7))
.itemInputs(Item.of('gtceu:soda_ash_dust', 6))
.itemOutputs(Item.of('tfg:sodium_tungstate_dust', 7))
.itemOutputs(Item.of('gtceu:lithium_dust', 2))
.itemOutputs(Item.of('gtceu:carbon_dust', 1))
.outputFluids(Fluid.of('gtceu:oxygen', 3000))
.duration(20*12)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_bath('tfg:tungstate_to_tungsten_acid')
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000))
.itemInputs(Item.of('tfg:sodium_tungstate_dust', 7))
.itemOutputs(Item.of('gtceu:salt_dust', 4))
.itemOutputs(Item.of('gtceu:tungstic_acid_dust', 7))
.duration(20*24)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_bath('tfg:tungsten_acid_to_ammonium_tungstate')
.inputFluids(Fluid.of('gtceu:ammonia', 10000))
.itemInputs(Item.of('gtceu:tungstic_acid_dust', 7))
.itemOutputs(Item.of('tfg:ammonium_tungstate_dust', 1))
.duration(20*16)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.evaporation_tower('tfg:ammonium_tungstate_to_apt_h')
.itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1))
.itemOutputs(Item.of('tfg:apt_gem', 1))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.duration(20*48)
.EUt(GTValues.VHA[GTValues.HV])
event.recipes.gtceu.distillery('tfg:ammonium_tungstate_to_apt')
.itemInputs(Item.of('tfg:ammonium_tungstate_dust', 1))
.itemOutputs(Item.of('tfg:apt_gem', 1))
.outputFluids(Fluid.of('gtceu:hydrogen', 500))
.duration(20*48)
.EUt(GTValues.VHA[GTValues.HV])
event.recipes.gtceu.pyrolyse_oven('tfg:apt')
.itemInputs(Item.of('tfg:apt_gem', 1))
.itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1))
.outputFluids(Fluid.of('gtceu:ammonia', 10000))
.duration(20*36)
.EUt(GTValues.VA[GTValues.EV])
.circuit(1)
event.recipes.gtceu.pyrolyse_oven('tfg:apt_nitrogen')
.itemInputs(Item.of('tfg:apt_gem', 1))
.inputFluids(Fluid.of('gtceu:nitrogen', 1000))
.itemOutputs(Item.of('tfg:tungsten_oxide_dust', 1))
.outputFluids(Fluid.of('gtceu:ammonia', 10000))
.duration(20*18)
.EUt(GTValues.VA[GTValues.EV])
.circuit(2)
event.recipes.gtceu.arc_furnace('tfg:tungsten_apt')
.itemInputs(Item.of('tfg:tungsten_oxide_dust', 1))
.inputFluids(Fluid.of('gtceu:hydrogen', 3000))
.itemOutputs(Item.of('gtceu:tungsten_dust', 1))
.duration(20*2.8)
.EUt(GTValues.VA[GTValues.EV])
}

View file

@ -0,0 +1,61 @@
// priority: 0
function registerTFGZirconiumRecipes(event) {
// #region Zirconium
event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride')
.itemInputs('#forge:dusts/silicon')
.inputFluids('gtceu:chlorine 4000')
.outputFluids('tfg:silicon_tetrachloride 1000')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp')
.inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000')
.itemOutputs('#forge:dusts/silicon')
.outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000')
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride')
.itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon')
.inputFluids('gtceu:chlorine 8000')
.outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000')
.itemOutputs('5x #forge:dusts/zirconium_tetrachloride')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:zirconium')
.itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride')
.itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride')
.duration(55 * 20)
.blastFurnaceTemp(4241)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide')
.itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon')
.inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000')
.itemOutputs('5x #forge:dusts/zirconium_bromide')
.outputFluids('gtceu:carbon_monoxide 2000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride')
.itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide')
.notConsumable('#forge:dusts/carbon')
.itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon')
.outputFluids('gtceu:bromine 8000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:boron_carbide')
.itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon')
.inputFluids('gtceu:oxygen 6000')
.itemOutputs('5x #forge:dusts/boron_carbide')
.outputFluids('gtceu:carbon_monoxide 6000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.HV])
// #endregion
}

View file

@ -85,28 +85,6 @@ function registerTFGNuclearRecipes(event) {
//#endregion
//#region Mars Water
event.recipes.gtceu.centrifuge('mars_heavy_water')
.inputFluids(Fluid.of('tfg:heavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('tfg:heavy_water', 500))
.itemOutputs('#forge:dusts/ammonium_chloride', '2x #forge:small_dusts/ammonium_chloride')
.duration(20*9)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.centrifuge('mars_semiheavy_water')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('tfg:semiheavy_water', 500))
.itemOutputs('2x #forge:tiny_dusts/ammonium_chloride')
.duration(20*9)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillery('mars_semiheavy_water')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 1000))
.outputFluids(Fluid.of('minecraft:water', 250))
.duration(20*5)
.EUt(GTValues.VA[GTValues.MV])
// Martian Sludge
event.recipes.gtceu.chemical_bath('dirty_hexafluorosilicic_acid')
@ -590,129 +568,6 @@ function registerTFGNuclearRecipes(event) {
//#endregion
//#region Bromine Line - SCRAP FROM MARS TO VENUS
/*
event.recipes.gtceu.evaporation_tower('evaporation_brine')
.inputFluids(Fluid.of('tfc:salt_water', 20000))
.outputFluids(Fluid.of('gtceu:raw_brine', 1000))
.duration(20*50)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.evaporation_tower('evaporation_brine_mars')
.inputFluids(Fluid.of('tfg:semiheavy_ammoniacal_water', 20000))
.outputFluids(Fluid.of('gtceu:raw_brine', 1000))
.duration(20*50)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.fluid_heater('heat_brine')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.outputFluids(Fluid.of("gtceu:hot_brine", 1000))
.duration(20*600)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.heat_exchanger('heat_brine_nuclear')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.inputFluids(Fluid.of("gtceu:irradiated_steam", 1000))
.outputFluids(Fluid.of("gtceu:hot_brine", 1000))
.outputFluids(Fluid.of("gtceu:dense_steam", 1000))
.duration(20*100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('debrominated_brine_raw_brine_mixing')
.inputFluids(Fluid.of("gtceu:raw_brine", 1000))
.inputFluids(Fluid.of('gtceu:hot_debrominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:hot_brine', 2000))
.outputFluids(Fluid.of('gtceu:debrominated_brine', 1000))
.duration(20*10)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_acidification')
.inputFluids(Fluid.of("gtceu:hot_brine", 2000))
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000))
.outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 2000))
.outputFluids(Fluid.of('gtceu:hydrogen_iodide', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('aciditic_bromine_exhaust_heating')
.inputFluids(Fluid.of("gtceu:hot_brine", 1000))
.inputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000))
.outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:steam', 3000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_chloroination')
.inputFluids(Fluid.of("gtceu:hot_brine", 1000))
.inputFluids(Fluid.of('gtceu:chlorine', 1000))
.outputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brine_neutralization')
.inputFluids(Fluid.of("gtceu:hot_alkaline_debrominated_brine", 3000))
.itemInputs('gtceu:potassium_dust')
.outputFluids(Fluid.of('gtceu:hot_debrominated_brine', 2000))
.itemOutputs(Item.of('2x gtceu:rock_salt_dust'))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.centrifuge('debrominated_brine_decomposition')
.inputFluids(Fluid.of('gtceu:debrominated_brine', 2000))
.outputFluids(Fluid.of('tfc:salt_water'), 1000)
.duration(20*3)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('brine_filtration')
.inputFluids(Fluid.of('gtceu:hot_chlorinated_brominated_brine', 1000))
.inputFluids(Fluid.of('gtceu:chlorine', 1000))
.inputFluids(Fluid.of('gtceu:steam', 1000))
.outputFluids(Fluid.of('gtceu:hot_alkaline_debrominated_brine', 1000))
.outputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 2000))
.duration(20*15)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('brominated_chlorine_vapor_condensation')
.inputFluids(Fluid.of('gtceu:brominated_chlorine_vapor', 1000))
.inputFluids(Fluid.of('minecraft:water', 1000))
.outputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000))
.outputFluids(Fluid.of('minecraft:water', 2000))
.duration(20*15)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('bromine_vapor_concentration')
.inputFluids(Fluid.of('gtceu:acidic_bromine_solution', 1000))
.inputFluids(Fluid.of('gtceu:steam', 1000))
.outputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000))
.outputFluids(Fluid.of('gtceu:acidic_bromine_exhaust', 1000))
.duration(20*5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.distillery('bromine_distillation_to_chlorine')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 100))
.outputFluids(Fluid.of('gtceu:chlorine', 50))
.duration(20*5)
.circuit(1)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillery('bromine_distillation_to_bromine')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 40))
.outputFluids(Fluid.of('gtceu:bromine', 40))
.duration(20*2)
.circuit(2)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.distillation_tower('bromine_distillation')
.inputFluids(Fluid.of('gtceu:concentrated_bromine_solution', 1000))
.outputFluids(Fluid.of('gtceu:chlorine', 500))
.outputFluids(Fluid.of('gtceu:bromine', 1000))
.duration(20*25)
.EUt(GTValues.VA[GTValues.HV])
*/
}

View file

@ -0,0 +1,116 @@
"use strict";
function registerTFGBiodieselRecipes(event) {
// Biofuels
event.recipes.gtceu.chemical_reactor(`seed_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 6000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
// So you can craft Biodiesel without Chemical Reactor
event.recipes.gtceu.mixer(`tfg:seed_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:seed_oil', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 500))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`olive_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 4000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
// So you can craft Biodiesel without Chemical Reactor
event.recipes.gtceu.mixer(`tfg:olive_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('tfc:olive_oil', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 500))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`soybean_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 4000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
// So you can craft Biodiesel without Chemical Reactor
event.recipes.gtceu.mixer(`tfg:soybean_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('firmalife:soybean_oil', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 500))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`fish_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 6000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
// So you can craft Biodiesel without Chemical Reactor
event.recipes.gtceu.mixer(`tfg:fish_oil_alcohol_biodiesel`)
.inputFluids("#tfc:alcohols 1000", Fluid.of('gtceu:fish_oil', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:bio_diesel', 500))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor(`olive_oil_ethanol_biodiesel`)
.inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:ethanol', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.chemical_reactor(`olive_oil_methanol_biodiesel`)
.inputFluids(Fluid.of('tfc:olive_oil', 4000), Fluid.of('gtceu:methanol', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.chemical_reactor(`soybean_oil_ethanol_biodiesel`)
.inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:ethanol', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.chemical_reactor(`soybean_oil_methanol_biodiesel`)
.inputFluids(Fluid.of('firmalife:soybean_oil', 4000), Fluid.of('gtceu:methanol', 1000))
.itemInputs('#forge:tiny_dusts/sodium_hydroxide')
.outputFluids(Fluid.of('gtceu:glycerol'), Fluid.of('gtceu:bio_diesel', 6000))
.duration(20 * 10)
.EUt(GTValues.VHA[GTValues.LV])
event.recipes.gtceu.extractor(`rapeseed_oil`)
.itemInputs('tfg:rapeseed_product')
.outputFluids(Fluid.of('gtceu:seed_oil', 600))
.duration(20 * 5)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.extractor(`sunflower_oil`)
.itemInputs('tfg:sunflower_product')
.outputFluids(Fluid.of('gtceu:seed_oil', 350))
.duration(20 * 5)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.tfc.barrel_sealed(1000)
.inputs('tfg:rapeseed_product', Fluid.of('minecraft:water', 100))
.outputFluid(Fluid.of('gtceu:seed_oil', 250))
.id('tfg:barrel/rapeseed_to_oil')
event.recipes.tfc.barrel_sealed(1000)
.inputs('tfg:sunflower_product', Fluid.of('minecraft:water', 100))
.outputFluid(Fluid.of('gtceu:seed_oil', 120))
.id('tfg:barrel/sunflower_to_oil')
}

View file

@ -0,0 +1,91 @@
"use strict";
function registerTFGBoilerRecipes(event) {
// The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead
event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => {
var newDuration = recipe.get("duration")
recipe.set("duration", newDuration*3)
})
event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => {
var newDuration = recipe.get("duration")
recipe.set("duration", newDuration/3)
})
// Allow oil in small boilers
event.remove({ id: "gtceu:large_boiler/gtceu_oil" })
event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" })
event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" })
// This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate
event.recipes.gtceu.steam_boiler('tfg:oil')
.inputFluids(Fluid.of('gtceu:oil', 200))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:heavy_oil')
.inputFluids(Fluid.of('gtceu:oil_heavy', 32))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:fish_oil')
.inputFluids(Fluid.of('gtceu:fish_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
// These aren't in base GT, but they have the same stats as oil
event.recipes.gtceu.steam_boiler('tfg:raw_oil')
.inputFluids(Fluid.of('gtceu:oil_medium', 200))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:light_oil')
.inputFluids(Fluid.of('gtceu:oil_light', 200))
.duration(200)
.dimension('minecraft:overworld')
// Same stats as fish oil
event.recipes.gtceu.steam_boiler('tfg:olive_oil')
.inputFluids(Fluid.of('tfc:olive_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:seed_oil')
.inputFluids(Fluid.of('gtceu:seed_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:soybean_oil')
.inputFluids(Fluid.of('firmalife:soybean_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
// fish oil (aka tallowate) extraction
event.recipes.gtceu.extractor(`tfg:fish_oil`)
.itemInputs('#minecraft:fishes')
.outputFluids(Fluid.of('gtceu:fish_oil', 200))
.duration(40)
.EUt(4)
event.recipes.gtceu.extractor(`tfg:tallow`)
.itemInputs('tfc:blubber')
.outputFluids(Fluid.of('tfc:tallow', 200))
.duration(40)
.EUt(4)
// you get tallow from killing things like orcas, so this seems close enough
event.recipes.gtceu.mixer('tallow_to_fish_oil')
.inputFluids('tfc:tallow 100', 'tfc:lye 100')
.outputFluids('gtceu:fish_oil 200')
.duration(100)
.EUt(4)
// Seed oil
event.recipes.gtceu.extractor(`tfg:seed_oil`)
.itemInputs('#tfc:seeds')
.outputFluids(Fluid.of('gtceu:seed_oil', 50))
.duration(32)
.EUt(2)
}

View file

@ -0,0 +1,96 @@
"use strict";
function registerTFGCoalRecipes(event) {
event.recipes.gtceu.coke_oven("tfg:poor_coal_to_coke")
.itemInputs('2x gtceu:poor_raw_coal')
.itemOutputs('1x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 500))
.duration(900)
event.recipes.gtceu.coke_oven("tfg:coal_to_coke")
.itemInputs('gtceu:raw_coal')
.itemOutputs('2x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 1000))
.duration(900)
event.recipes.gtceu.coke_oven("tfg:rich_coal_to_coke")
.itemInputs('gtceu:rich_raw_coal')
.itemOutputs('4x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 2000))
.duration(900)
event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_tar")
.itemInputs('3x gtceu:rich_raw_coal')
.chancedOutput('gtceu:dark_ash_dust', 5000, 0)
.outputFluids(Fluid.of('gtceu:coal_tar', 3000))
.duration(288)
.EUt(96)
.circuit(8)
event.recipes.gtceu.pyrolyse_oven("tfg:rich_coal_to_coke_creosote")
.itemInputs('4x gtceu:rich_raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 8000))
.duration(576)
.EUt(64)
.circuit(1)
event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coal_gas")
.itemInputs('4x gtceu:rich_raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.inputFluids(Fluid.of('gtceu:steam'))
.outputFluids(Fluid.of('gtceu:coal_gas', 4000))
.duration(288)
.EUt(96)
.circuit(22)
event.recipes.gtceu.pyrolyse_oven("tfg:coal_to_coke_creosote_nitrogen")
.itemInputs('4x gtceu:rich_raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.inputFluids(Fluid.of('gtceu:nitrogen'))
.outputFluids(Fluid.of('gtceu:creosote', 8000))
.duration(288)
.EUt(96)
.circuit(2)
event.recipes.gtceu.coke_oven("tfg:raw_coal_to_coke")
.itemInputs('gtceu:raw_coal')
.itemOutputs('2x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 2000))
.duration(1710)
event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_tar")
.itemInputs('6x gtceu:raw_coal')
.chancedOutput('gtceu:dark_ash_dust', 5000, 0)
.outputFluids(Fluid.of('gtceu:coal_tar', 3000))
.duration(288)
.EUt(96)
.circuit(8)
event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote")
.itemInputs('8x gtceu:raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.outputFluids(Fluid.of('gtceu:creosote', 8000))
.duration(576)
.EUt(64)
.circuit(1)
event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coal_gas")
.itemInputs('8x gtceu:raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.inputFluids(Fluid.of('gtceu:steam'))
.outputFluids(Fluid.of('gtceu:coal_gas', 4000))
.duration(288)
.EUt(96)
.circuit(22)
event.recipes.gtceu.pyrolyse_oven("tfg:raw_coal_to_coke_creosote_nitrogen")
.itemInputs('8x gtceu:raw_coal')
.itemOutputs('16x gtceu:coke_gem')
.inputFluids(Fluid.of('gtceu:nitrogen'))
.outputFluids(Fluid.of('gtceu:creosote', 8000))
.duration(288)
.EUt(96)
.circuit(2)
}

View file

@ -1,6 +1,6 @@
// priority: 0
function registerTFGEarlyPower(event) {
function registerTFGEarlyGasRecipes(event) {
const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic')
@ -204,72 +204,8 @@ function registerTFGEarlyPower(event) {
//#endregion
//#region Rebalance Fuel
// Change
// The 9x buff for large boiler recipes above does not apply to this for some reason, so it gets 3x duration for an effective 1/3 reduction instead
event.forEachRecipe({ id: /gtceu:large_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => {
var newDuration = recipe.get("duration")
recipe.set("duration", newDuration*3)
})
event.forEachRecipe({ id: /gtceu:steam_boiler\/(minecraft_ladder|gtceu_wood_frame)/ }, recipe => {
var newDuration = recipe.get("duration")
recipe.set("duration", newDuration/3)
})
// Allow oil in small boilers
event.remove({ id: "gtceu:large_boiler/gtceu_oil" })
event.remove({ id: "gtceu:large_boiler/gtceu_oil_heavy" })
event.remove({ id: "gtceu:large_boiler/gtceu_fish_oil" })
// This generates both a small boiler and large boiler recipe. Remove it above to avoid a duplicate
event.recipes.gtceu.steam_boiler('tfg:oil')
.inputFluids(Fluid.of('gtceu:oil', 200))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:heavy_oil')
.inputFluids(Fluid.of('gtceu:oil_heavy', 32))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:fish_oil')
.inputFluids(Fluid.of('gtceu:fish_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
// These aren't in base GT, but they have the same stats as oil
event.recipes.gtceu.steam_boiler('tfg:raw_oil')
.inputFluids(Fluid.of('gtceu:oil_medium', 200))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:light_oil')
.inputFluids(Fluid.of('gtceu:oil_light', 200))
.duration(200)
.dimension('minecraft:overworld')
// Same stats as fish oil
event.recipes.gtceu.steam_boiler('tfg:olive_oil')
.inputFluids(Fluid.of('tfc:olive_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:seed_oil')
.inputFluids(Fluid.of('gtceu:seed_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
event.recipes.gtceu.steam_boiler('tfg:soybean_oil')
.inputFluids(Fluid.of('firmalife:soybean_oil', 160))
.duration(200)
.dimension('minecraft:overworld')
//#region New Power Generation
// Add Syngas
event.recipes.gtceu.steam_boiler('tfg:syngas') // Small Boiler and Large Boiler divided by 4

View file

@ -0,0 +1,184 @@
"use strict";
function registerTFGSolarRecipes(event) {
//#region Large Solar Panel
event.shaped(
'gtceu:large_solar_panel',
['WSW', 'TZT', 'WUW'],
{
S: 'tfg:photo_cell_t1',
Z: 'ad_astra:solar_panel',
W: '#gtceu:circuits/ev',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel')
event.shaped(
'gtceu:large_solar_panel_tier2',
['WSW', 'TZT', 'WUW'],
{
S: 'ad_astra:photovoltaic_etrium_cell',
Z: 'gtceu:large_solar_panel',
W: '#gtceu:circuits/iv',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel_tier2')
event.shaped(
'gtceu:large_solar_panel_tier3',
['WSW', 'TZT', 'WUW'],
{
S: 'ad_astra:photovoltaic_vesnium_cell',
Z: 'gtceu:large_solar_panel_tier2',
W: '#gtceu:circuits/luv',
U: '#forge:gears/rocket_alloy_t1',
T: '#forge:gears/desh'
}
).id('gtceu:shaped/large_solar_panel_tier3')
event.recipes.gtceu.chemical_reactor('advanced_photovoltaic_cell')
.itemInputs('8x tfg:photo_cell_t1',
'6x #forge:dusts/vanadium_gallium',
'#forge:insulation_t2/sheet')
.inputFluids(Fluid.of('gtceu:helium_3', 1000))
.itemOutputs('8x ad_astra:photovoltaic_etrium_cell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('expert_photovoltaic_cell')
.itemInputs('8x ad_astra:photovoltaic_etrium_cell',
'6x gtceu:energium_dust',
'#forge:insulation_t3/sheet')
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 1000))
.itemOutputs('8x ad_astra:photovoltaic_vesnium_cell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.IV])
//#region Chemical Reaction for Solar Panel
event.recipes.gtceu.chemical_reactor('tfg:chlorine_pentafluoride')
.inputFluids(Fluid.of('gtceu:fluorine', 5000), Fluid.of('gtceu:chlorine', 1000))
.outputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('tfg:chloryl_fluoride')
.inputFluids(Fluid.of('tfg:chlorine_pentafluoride', 1000), Fluid.of('minecraft:water', 2000))
.outputFluids(Fluid.of('tfg:chloryl_fluoride', 1000), Fluid.of('gtceu:hydrofluoric_acid', 4000))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant')
.inputFluids(Fluid.of('tfg:chloryl_fluoride', 3000), Fluid.of('gtceu:helium_3', 8000), Fluid.of('minecraft:water', 8000))
.outputFluids(Fluid.of('tfg:solar_coolant', 1000), Fluid.of('gtceu:hydrofluoric_acid', 3000), Fluid.of('gtceu:hypochlorous_acid', 3000))
.duration(20 * 5)
.EUt(GTValues.VH[GTValues.EV])
event.recipes.gtceu.large_chemical_reactor('tfg:solar_coolant_t2')
.inputFluids(Fluid.of('tfg:solar_coolant', 8000), Fluid.of('gtceu:argon', 1000))
.itemInputs(Item.of('#forge:aerogels'))
.outputFluids(Fluid.of('tfg:solar_coolant_tier2', 8000))
.duration(20 * 15)
.EUt(GTValues.VH[GTValues.IV])
//#endregion
// LSP Generating recipes
// Solar T1
event.recipes.gtceu.large_solar_panel('solar_panel_t1_emergency')
.chancedInput('tfg:photo_cell_t1', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-((GTValues.V[GTValues.HV])), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel('solar_panel_t1')
.notConsumable('tfg:photo_cell_t1')
.perTick(true)
.chancedFluidInput('tfg:compressed_trimix_3 4', 5000, 0)
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(2)
// Solar T2
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_emergency')
.chancedInput('ad_astra:photovoltaic_etrium_cell', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_strong')
.notConsumable('ad_astra:photovoltaic_etrium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(2)
event.recipes.gtceu.large_solar_panel_tier2('solar_panel_t2_cheap')
.notConsumable('ad_astra:photovoltaic_etrium_cell')
.perTick(true)
.inputFluids('tfg:compressed_trimix_3 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.EV]), 2)
.circuit(3)
// Solar T3
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_emergency')
.chancedInput('ad_astra:photovoltaic_vesnium_cell', 100, 0)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(1)
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_strong')
.notConsumable('ad_astra:photovoltaic_vesnium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant_tier2 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.LuV]), 2)
.circuit(2)
event.recipes.gtceu.large_solar_panel_tier3('solar_panel_t3_cheap')
.notConsumable('ad_astra:photovoltaic_vesnium_cell')
.perTick(true)
.chancedFluidInput('tfg:solar_coolant 10', 5000, 0)
.inputFluids('tfg:cryogenized_fluix 4')
.outputFluids('tfg:fluix 1')
.perTick(false)
.duration(20 * 20)
.daytime(false)
.dimension('ad_astra:moon')
.EUt(-(GTValues.V[GTValues.IV]), 2)
.circuit(2)
//#endregion
}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -1,7 +1,7 @@
// priority: 0
"use strict";
function registerTFCKnappingRecipes(event) {
function registerTFGKnappingRecipes(event) {
//#region Топор

View file

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

View file

@ -5,7 +5,34 @@
* @param {Internal.RecipesEventJS} event
*/
function registerTFGPapermakingRecipes(event) {
event.recipes.gtceu.cutter('tfg:unrefined_paper')
.itemInputs('tfc:unrefined_paper')
.itemOutputs('minecraft:paper')
.duration(100)
.EUt(7)
event.recipes.gtceu.chemical_bath('paper_from_papyrus_distilled')
.itemInputs('tfc:papyrus')
.inputFluids(Fluid.of('gtceu:distilled_water', 100))
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.chemical_bath('paper_from_papyrus')
.itemInputs('tfc:papyrus')
.inputFluids("#tfg:clean_water 100")
.itemOutputs('4x tfc:soaked_papyrus_strip')
.duration(100)
.EUt(7)
event.recipes.gtceu.assembler('papyrus_strips')
.itemInputs('4x tfc:soaked_papyrus_strip')
.itemOutputs('minecraft:paper')
.circuit(1)
.duration(100)
.EUt(7)
const generateVatRecipe = (id, inputItem, fluid, fluidAmount, output) => {
event.custom({
"type": "firmalife:vat",

View file

@ -0,0 +1,133 @@
"use strict";
function registerTFGRubberRecipes(event) {
// Sticky resin
event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:latex', 1000), 1200, 300)
.itemOutput('gtceu:sticky_resin')
.id('tfg:pot/sticky_resin_from_latex')
event.recipes.tfc.pot('tfc:powder/wood_ash', Fluid.of('tfg:conifer_pitch', 1000), 1200, 300)
.itemOutput('gtceu:sticky_resin')
.id('tfg:pot/sticky_resin_from_conifer_pitch')
event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/latex_to_sticky_resin')
.duration(12 * 20)
.EUt(30)
.itemInputs('tfc:powder/wood_ash')
.itemOutputs('gtceu:sticky_resin')
.inputFluids(Fluid.of('tfg:latex', 1000))
event.recipes.gtceu.fluid_solidifier('tfg:fluid_solidifier/pitch_to_sticky_resin')
.duration(12 * 20)
.EUt(30)
.itemInputs('tfc:powder/wood_ash')
.itemOutputs('gtceu:sticky_resin')
.inputFluids(Fluid.of('tfg:conifer_pitch', 1000))
// Rubber Processing Line
event.recipes.firmalife.vat()
.inputs('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000))
.outputFluid(Fluid.of('tfg:vulcanized_latex', 1000))
.length(300)
.temperature(300)
.id('tfg:vat/vulcanized_latex')
event.recipes.tfc.pot('tfc:powder/sulfur', Fluid.of('tfg:latex', 1000), 1200, 300)
.fluidOutput(Fluid.of('tfg:vulcanized_latex', 1000))
.id('tfg:pot/vulcanized_latex')
event.recipes.gtceu.chemical_reactor('tfg:latex_to_vulcanized_latex')
.duration(100)
.EUt(20)
.itemInputs('tfc:powder/sulfur')
.inputFluids(Fluid.of('tfg:latex', 1000))
.outputFluids(Fluid.of('tfg:vulcanized_latex', 1000))
event.recipes.gtceu.fluid_solidifier('tfg:vulcanized_latex_to_raw_rubber_pulp')
.duration(100)
.EUt(20)
.inputFluids(Fluid.of('tfg:vulcanized_latex', 1000))
.itemOutputs('4x gtceu:raw_rubber_dust')
event.recipes.gtceu.fluid_solidifier('tfg:solidify_glue')
.inputFluids(Fluid.of('gtceu:glue', 50))
.notConsumable('gtceu:ball_casting_mold')
.itemOutputs('tfc:glue')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_rosin')
.itemInputs('tfg:conifer_rosin')
.outputFluids(Fluid.of('gtceu:glue', 50))
.itemOutputs('2x #forge:dusts/carbon')
.chancedOutput('gtceu:plant_ball', 7500, 0)
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_sticky_resin')
.itemInputs('gtceu:sticky_resin')
.outputFluids(Fluid.of('gtceu:glue', 100))
.itemOutputs('3x #forge:dusts/carbon')
.chancedOutput('gtceu:plant_ball', 5000, 0)
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_reactor(`tfg:treat_latex_plants_into_latex`)
.itemInputs('16x #tfg:rubber_plants', 'gtceu:tiny_sodium_hydroxide_dust')
.circuit(1)
.outputFluids(Fluid.of('tfg:latex', 1000))
.duration(200)
.EUt(20)
// #region Primitive protection
event.recipes.tfc.barrel_sealed(2000)
.outputItem('tfg:prepared_leather_gloves')
.inputs('tfchotornot:mittens', Fluid.of('tfc:vinegar', 1000))
.id('tfg:sealed_barrel/prepared_leather_gloves')
event.recipes.firmalife.vat()
.outputItem('tfg:latex_soaked_gloves')
.inputs('tfg:prepared_leather_gloves', Fluid.of('tfg:vulcanized_latex', 1000))
.length(300)
.temperature(200)
.id('tfg:vat/latex_soaked_gloves')
event.recipes.firmalife.oven('tfg:latex_soaked_gloves', 120, 1200, 'gtceu:rubber_gloves')
.id('tfg:oven/rubber_gloves')
event.remove({ id: 'gtceu:shaped/rubber_gloves' })
event.recipes.gtceu.alloy_smelter('rubber_gloves_alloy_smelter')
.itemInputs('2x #forge:plates/rubber')
.notConsumable('create:brass_hand')
.itemOutputs('gtceu:rubber_gloves')
.duration(200)
.EUt(GTValues.VA[GTValues.ULV])
.category(GTRecipeCategories.INGOT_MOLDING)
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('gtceu:face_mask', [
'ACA',
'ABA',
' D '
], {
A: '#forge:string',
B: '#forge:cloth',
C: 'minecraft:paper',
D: '#tfc:sewing_needles'
})
).id('gtceu:shaped/face_mask')
event.recipes.gtceu.assembler('assemble_face_mask')
.itemInputs('4x #forge:string', '#forge:cloth', 'minecraft:paper')
.itemOutputs('gtceu:face_mask')
.duration(100)
.EUt(GTValues.VA[GTValues.ULV])
.circuit(7)
// #endregion
}

View file

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

View file

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

View file

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

View file

@ -6,22 +6,77 @@
*/
const registerTFGRecipes = (event) => {
registerTFGPapermakingRecipes(event)
registerTFGMoldRecipes(event)
registerTFGMiscellaneousRecipes(event)
registerTFGConvertingRecipes(event)
registerTFGFoodRecipes(event)
registerTFGRefrigeratorRecipes(event)
registerTFGMealBagRecipes(event)
registerTFGBiomassRecipes(event)
// TFC stone types
registerTFCStoneRecipes(event)
// Non-TFC stone types
registerTFGRockRecipes(event)
registerTFGCollapseRecipes(event)
registerTFGEarlyPower(event)
registerTFGMoldRecipes(event)
registerTFGMedicineRecipes(event)
registerTFGMiscellaneousRecipes(event)
registerTFGSupportRecipes(event)
registerTFGFishingNetsRecipes(event)
registerTFGConvertingRecipes(event)
registerTFGFoodRecipes(event)
registerTFGSpaceRecipes(event)
registerTFGStoneDustRecipes(event)
registerTFGConcreteRecipes(event)
registerTFGAlabasterRecipes(event)
registerTFGDirtRecipes(event)
registerTFGSandRecipes(event)
registerTFGPapermakingRecipes(event)
registerTFGMedicineRecipes(event)
registerTFGFishingNetsRecipes(event)
registerTFGSupportRecipes(event)
registerTFGVaseRecipes(event)
registerTFGIceRecipes(event)
registerTFGBasketRecipes(event)
registerTFGArrowRecipes(event)
registerTFGCompostRecipes(event)
registerTFGClothRecipes(event)
registerTFGChipboardRecipes(event)
registerTFGWaxRecipes(event)
registerTFGRubberRecipes(event)
registerTFGWoodRecipes(event)
registerTFGKnappingRecipes(event)
registerTFGLeatherRecipes(event)
registerTFGClayRecipes(event)
registerTFGCasingRecipes(event)
registerTFGEnderPearlRecipes(event)
registerTFGMultiblockRecipes(event)
registerTFGSteamBloomeryRecipes(event)
registerTFGElectronicComponentsRecipes(event)
registerTFGEarlyGasRecipes(event)
registerTFGBoilerRecipes(event)
registerTFGBiodieselRecipes(event)
registerTFGNuclearRecipes(event)
registerTFGNuclearComponentsRecipes(event)
registerTFGNOstrumRecipes(event)
registerTFGSolarRecipes(event)
registerTFGCoalRecipes(event)
registerTFGZirconiumRecipes(event)
registerTFGBromineRecipes(event)
registerTFGTungstenRecipes(event)
registerTFGAlloyingRecipes(event)
registerTFGQuartzRecipes(event)
registerTFGSpaceRecipes(event)
registerTFGRailgunRecipes(event)
registerTFGRocketRecipes(event)
registerTFGSpaceSuitRecipes(event)
registerTFGInsulationRecipes(event)
registerTFGMoonRecipes(event)
registerTFGMoonPlantRecipes(event)
registerTFGMoonRegolithRecipes(event)
registerTFGMarsRecipes(event)
registerTFGMarsIodineRecipes(event)
registerTFGMarsOstrumRecipes(event)
registerTFGBiochemRecipes(event)
registerTFGSpaceOres(event)
}

File diff suppressed because it is too large Load diff

View file

@ -1,457 +0,0 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGSpaceRecipes(event) {
const allowedCombustibleDims = [
{
dimension: "minecraft:the_nether",
type: "dimension"
},
{
dimension: "minecraft:overworld",
type: "dimension"
}
]
event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
// Air collector
event.recipes.gtceu.gas_collector('tfg:nether')
.circuit(2)
.outputFluids(Fluid.of('gtceu:air', 10000))
.dimension('minecraft:the_nether')
.duration(200)
.EUt(16)
event.recipes.gtceu.gas_collector('tfg:moon')
.circuit(3)
.outputFluids(Fluid.of('gtceu:argon', 1))
.dimension('ad_astra:moon')
.duration(20*60*30)
.EUt(16)
event.recipes.gtceu.gas_collector('tfg:mars')
.circuit(4)
.outputFluids(Fluid.of('tfg:mars_air', 10000))
.dimension('ad_astra:mars')
.duration(20*10)
.EUt(16)
event.recipes.gtceu.vacuum_freezer('tfg:liquid_mars_air')
.inputFluids(Fluid.of('tfg:mars_air', 4000))
.outputFluids(Fluid.of('tfg:liquid_mars_air', 4000))
.duration(80)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.centrifuge('tfg:centrifuge_mars_air')
.inputFluids(Fluid.of('tfg:mars_air', 10000))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 3900), Fluid.of('gtceu:nitrogen', 1000), Fluid.of('gtceu:argon', 500))
.duration(1600)
.EUt(GTValues.VA[GTValues.MV])
// TODO: move neon and xenon somewhere else
event.recipes.gtceu.distillation_tower('tfg:distill_liquid_mars_air')
.inputFluids(Fluid.of('tfg:liquid_mars_air', 100000))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 80000))
.outputFluids(Fluid.of('gtceu:nitrogen', 7000))
.outputFluids(Fluid.of('gtceu:argon', 5000))
.outputFluids(Fluid.of('gtceu:oxygen', 3000))
.outputFluids(Fluid.of('gtceu:krypton', 1000))
.outputFluids(Fluid.of('gtceu:neon', 1000))
.outputFluids(Fluid.of('gtceu:xenon', 1000))
.chancedOutput('gtceu:ammonium_chloride_dust', 2250, 0)
.disableDistilleryRecipes(true)
.duration(2000)
.EUt(GTValues.VA[GTValues.EV])
// Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues
let aaCircuit = 1;
event.recipes.gtceu.aqueous_accumulator('water')
.circuit(aaCircuit++)
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.adjacentFluids(["minecraft:water"])
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water')
.circuit(aaCircuit++)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
.adjacentFluids(["tfc:salt_water"])
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars')
.circuit(aaCircuit++)
.dimension('ad_astra:mars')
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.adjacentFluids(["tfg:semiheavy_ammoniacal_water"])
.outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_overworld')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20*15)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:lava"])
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_nether')
.circuit(aaCircuit++)
.dimension('minecraft:the_nether')
.duration(20*15)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:lava"])
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('spring_water')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
.adjacentFluids(["tfc:spring_water"])
.outputFluids(Fluid.of("tfc:spring_water", 1000))
event.recipes.gtceu.aqueous_accumulator('more_water')
.circuit(aaCircuit++)
.duration(10)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:water"])
.outputFluids(Fluid.of("minecraft:water", 16000))
// Plants - Can't use the default builder here because fertiliser is much harder to get on the moon,
// and we're using helium-3 as the fertiliser
// Chorus
event.recipes.gtceu.greenhouse('tfg:chorus')
.notConsumable('8x tfg:lunar_chorus_flower')
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 750, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 500, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 750, 0)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:chorus_helium')
.notConsumable('8x tfg:lunar_chorus_flower')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('64x minecraft:chorus_fruit')
.chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 3000, 0)
.chancedOutput('8x tfg:lunar_chorus_flower', 4000, 0)
.duration(12000) // 10 mins
.circuit(2)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
// Replace the built-in greg one to add a circuit
event.recipes.gtceu.fermenter('fermented_biomass')
.inputFluids(Fluid.of('gtceu:biomass', 100))
.outputFluids(Fluid.of('gtceu:fermented_biomass', 100))
.circuit(1)
.duration(150)
.EUt(2)
event.recipes.gtceu.fermenter('tfg:chorus')
.itemInputs('minecraft:chorus_fruit')
.inputFluids(Fluid.of('gtceu:biomass', 20))
.chancedOutput('ae2:ender_dust', 100, 0)
.outputFluids(Fluid.of('gtceu:nitrogen', 1000))
.circuit(2)
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.fermenter('tfg:chorus_flower')
.itemInputs('tfg:lunar_chorus_flower')
.inputFluids(Fluid.of('gtceu:biomass', 20))
.chancedOutput('ae2:ender_dust', 100, 0)
.outputFluids(Fluid.of('gtceu:nitrogen', 1000))
.circuit(2)
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.MV])
.dimension('ad_astra:moon')
event.recipes.gtceu.mixer('tfg:bio_glowstone')
.itemInputs('betterend:cave_pumpkin_chunks', '4x species:alphacene_mushroom_block')
.outputFluids(Fluid.of('gtceu:biomass', 100))
.itemOutputs('2x minecraft:glowstone_dust')
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.EV])
.dimension('ad_astra:mars')
// Lightblooms
event.recipes.gtceu.greenhouse('tfg:lightbloom')
.notConsumable('8x minecraft:twisting_vines')
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 2500, 0)
.chancedOutput('minecraft:verdant_froglight', 2500, 0)
.chancedOutput('minecraft:ochre_froglight', 2500, 0)
.duration(36000) // 30 mins
.circuit(1)
.EUt(GTValues.VA[GTValues.LV])
.dimension('ad_astra:moon')
event.recipes.gtceu.greenhouse('tfg:lightbloom_helium')
.notConsumable('8x minecraft:twisting_vines')
.inputFluids(Fluid.of('gtceu:helium_3', 2000))
.itemOutputs('16x minecraft:twisting_vines')
.chancedOutput('minecraft:pearlescent_froglight', 3500, 0)
.chancedOutput('minecraft:verdant_froglight', 3500, 0)
.chancedOutput('minecraft:ochre_froglight', 3500, 0)
.duration(12000) // 30 mins
.circuit(2)
.EUt(GTValues.VA[GTValues.LV])
.dimension('ad_astra:moon')
event.recipes.gtceu.brewery('biomass_from_twisting_vines')
.itemInputs('minecraft:twisting_vines')
.inputFluids("#tfg:clean_water 20")
.outputFluids(Fluid.of('gtceu:biomass', 20))
.duration(50)
.EUt(3)
// Space suit gases
event.recipes.gtceu.gas_pressurizer('compressed_nitrox')
.inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_nitrox', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_heliox')
.inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_heliox', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_heliox_3')
.inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_trimix')
.inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000))
.outputFluids(Fluid.of('tfg:compressed_trimix', 1000))
.circuit(2)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_trimix_3')
.inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000))
.outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000))
.circuit(2)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
//Cryo Fluix Pearl
event.recipes.gtceu.autoclave('tfg:cryo_fluix_pearl')
.inputFluids(Fluid.of('tfg:cryogenized_fluix', 576))
.itemInputs('tfg:vitrified_pearl')
.itemOutputs('tfg:cryo_fluix_pearl')
.duration(300)
.EUt(GTValues.VA[GTValues.EV])
.cleanroom(CleanroomType.CLEANROOM)
// Railgun stuff
// (the railgun inputs and outputs are in tfg-core)
//item bus to railgun item bus conversion recipes
const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv']
GTTiers.forEach(x => {
event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`)
.itemInputs(`gtceu:${x}_input_bus`)
.circuit(4)
.itemOutputs(`tfg:${x}_railgun_item_loader_in`)
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`)
.itemInputs(`gtceu:${x}_output_bus`)
.circuit(4)
.itemOutputs(`tfg:${x}_railgun_item_loader_out`)
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
})
//Railgun ammo
event.recipes.gtceu.assembler('tfg:railgun_ammo_basic')
.itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced')
.itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('4x tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_best')
.itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('8x tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_moon')
.itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('4x tfg:railgun_ammo_shell')
.dimension('ad_astra:moon')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_mars')
.itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('8x tfg:railgun_ammo_shell')
.dimension('ad_astra:mars')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [
'RMR',
'MBM',
'CCC'
], {
B: 'gtceu:mv_input_bus',
R: 'gtceu:mv_robot_arm',
M: 'gtceu:mv_electric_motor',
C: '#forge:single_cables/annealed_copper'
}).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader')
event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [
'CDC',
'SHE',
'WCW'
], {
C: '#gtceu:circuits/hv',
D: 'gtceu:computer_monitor_cover',
S: 'gtceu:hv_sensor',
H: 'gtceu:hv_machine_hull',
E: 'gtceu:hv_emitter',
W: '#forge:single_cables/silver'
}).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor')
event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [
'NSN',
'CHC',
'NEN'
], {
C: '#gtceu:circuits/ev',
S: 'gtceu:hv_sensor',
E: 'gtceu:hv_emitter',
H: 'gtceu:ev_machine_hull',
N: '#forge:plates/hsla_steel'
}).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher')
event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [
'CSC',
'WHW',
'CSC'
], {
C: '#gtceu:circuits/mv',
S: 'gtceu:mv_sensor',
W: '#forge:double_cables/copper',
H: 'gtceu:mv_machine_hull'
}).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver')
// Mars tree tapping
event.recipes.gtceu.autoclave('tfg:crimsene')
.inputFluids(Fluid.of('tfg:crimsene', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.outputFluids(Fluid.of('gtceu:carbon_monoxide', 1000))
.itemOutputs('#forge:gems/crimsene')
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.autoclave('tfg:warpane')
.inputFluids(Fluid.of('tfg:warpane', 144), Fluid.of('gtceu:liquid_carbon_dioxide', 1000))
.outputFluids(Fluid.of('gtceu:hydrogen', 1000))
.itemOutputs('#forge:gems/warpane')
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.macerator('tfg:crimsene')
.itemInputs('#forge:gems/crimsene')
.itemOutputs('#forge:dusts/crimsene')
.duration(20 * 5)
.EUt(2)
event.recipes.gtceu.macerator('tfg:warpane')
.itemInputs('#forge:gems/warpane')
.itemOutputs('#forge:dusts/warpane')
.duration(20 * 5)
.EUt(2)
event.recipes.gtceu.mixer('tfg:mars_sap')
.itemInputs('#forge:dusts/warpane', '#forge:dusts/crimsene')
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 1000), Fluid.of('gtceu:krypton', 500))
.itemOutputs('#forge:dusts/mycelienzene')
.duration(30 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.deafission.fission_reactor_processing('tfg:mars_sap')
.itemInputs('#forge:dusts/mycelienzene')
.outputFluids(Fluid.of('tfg:cooked_mycelienzane', 1000))
// TODO: change these to something appropriate
.blastFurnaceTemp(100)
.duration(30 * 10)
event.recipes.gtceu.centrifuge('mars_sap_separation')
.inputFluids(Fluid.of('tfg:cooked_mycelienzane', 2000))
.outputFluids(
Fluid.of('tfg:iodomethane', 1000),
Fluid.of('tfg:trideuteroiodomethane', 1000),
Fluid.of('gtceu:krypton', 1000),
Fluid.of('gtceu:diluted_hydrochloric_acid', 4000))
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:iodomethane_separation')
.inputFluids(
Fluid.of('tfg:iodomethane', 1000),
Fluid.of('gtceu:hydrogen', 1000))
.itemOutputs('#forge:dusts/iodine')
.outputFluids(Fluid.of('gtceu:methane', 1000))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:trideuteroiodomethane_separation')
.inputFluids(
Fluid.of('tfg:trideuteroiodomethane', 1000),
Fluid.of('gtceu:oxygen', 1500))
.itemOutputs('#forge:dusts/iodine', '#forge:dusts/carbon')
.outputFluids(Fluid.of('tfg:heavy_water', 1500))
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.MV])
}

View file

@ -1,259 +0,0 @@
// priority: 0
function registerTFGSpaceOres(event) {
//#region Moon Harvester
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_assurine_harvester')
.biome('tfg:moon/lunar_asurine_dense')
.itemOutputsRanged('#forge:dusts/certus_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(1)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_chorus_dense')
.biome('tfg:moon/lunar_chorus_dense')
.itemOutputsRanged('#forge:dusts/goethe_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(2)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_corals_dense')
.biome('tfg:moon/lunar_corals_dense')
.itemOutputsRanged('#forge:dusts/bright_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(3)
event.recipes.gtceu.moon_dust_harvester('tfg:lunar_lights_dense')
.biome('tfg:moon/lunar_lights_dense')
.itemOutputsRanged('#forge:dusts/cassiterite_regolith', 1, 5)
.duration(20 * 80)
.EUt(GTValues.VA[GTValues.LV])
.circuit(4)
//#endregion
//#region Regolith Vapor Processing
event.recipes.gtceu.mixer('tfg:regolith_slurry_suspension')
.itemInputs('ad_astra:moon_sand', 'tfg:dry_ice')
.itemOutputs('#forge:dusts/regolith_mush')
.dimension('ad_astra:moon')
.duration(20 * 60)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_bath('tfg:regolith_vapor')
.itemInputs('#forge:dusts/regolith_mush')
.inputFluids('gtceu:nitrogen 1000')
.itemOutputs('#forge:dusts/silicon_dioxide')
.outputFluids('gtceu:regolith_vapor 1000')
.dimension('ad_astra:moon')
.duration(20 * 28)
.EUt(GTValues.VHA[GTValues.LV])
//#endregion
//#region Making Dusty Ores
const $ChanceLogic = Java.loadClass('com.gregtechceu.gtceu.api.recipe.chance.logic.ChanceLogic')
event.recipes.gtceu.chemical_reactor('tfg:dusty_certus_reactor')
.itemInputs('#forge:dusts/certus_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_certus_quartz')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_goethite_reactor')
.itemInputs('#forge:dusts/goethe_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_goethite')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_shiny_reactor')
.itemInputs('#forge:dusts/bright_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.chancedItemOutputLogic($ChanceLogic.XOR)
.chancedOutput('gtceu:dusty_raw_diamond', 2000, 0)
.chancedOutput('gtceu:dusty_raw_gold', 8000, 0)
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
event.recipes.gtceu.chemical_reactor('tfg:dusty_cassiterite_reactor')
.itemInputs('#forge:dusts/cassiterite_regolith')
.inputFluids('gtceu:regolith_vapor 100')
.itemOutputs('gtceu:dusty_raw_cassiterite')
.dimension('ad_astra:moon')
.duration(20 * 68)
.EUt(GTValues.VHA[GTValues.ULV])
//#endregion
//#region Basic dusty ore centrifuging
// These have special recipes
const DUSTY_ORE_EXCEPTIONS = [
GTMaterials.Goethite,
GTMaterials.Cassiterite,
GTMaterials.Bauxite
]
// Otherwise everything else just centrifuges into its dust version
forEachMaterial(material => {
if (DUSTY_ORE_EXCEPTIONS.indexOf(material) >= 0)
return;
const dustyOre = ChemicalHelper.get(TFGTagPrefix.dustyRawOre, material, 1)
const dust = ChemicalHelper.get(TagPrefix.dust, material, 1)
if (dustyOre !== null && dust !== null) {
event.recipes.gtceu.centrifuge(`tfg:dusty_to_dust_${material.getName()}`)
.itemInputs(dustyOre)
.itemOutputs(dust)
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
}
})
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_goethite')
.itemInputs('#forge:dusty_raw_materials/goethite')
.chancedItemOutputLogic($ChanceLogic.XOR)
.chancedOutput('#forge:dusts/iron', 5000, 0)
.chancedOutput('#forge:dusts/copper', 5000, 0)
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_bauxite')
.itemInputs('#forge:dusty_raw_materials/bauxite')
.itemOutputs('#forge:dusts/aluminium')
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.centrifuge('tfg:dusty_to_dust_tin')
.itemInputs('#forge:dusty_raw_materials/cassiterite')
.itemOutputs('#forge:dusts/tin')
.duration(20 * 45)
.EUt(GTValues.VA[GTValues.MV])
//#region Mars Ores Line
// Ostrum Harvester
event.recipes.gtceu.ostrum_harvester(`tfg:ostrum_harvesting`)
.perTick(true)
.inputFluids('gtceu:drilling_fluid 4')
.perTick(false)
.dimension('ad_astra:mars')
.itemOutputsRanged('gtceu:ostrum_dust', 1, 5)
.duration(20 * 30)
.EUt(GTValues.VA[GTValues.LV]);
// Ostrum Linear Accelerator Recipes
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum_transformation')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.itemInputs('32x #forge:dusts/ostrum')
.chancedFluidOutputLogic($ChanceLogic.XOR)
.chancedFluidOutput('gtceu:lightweight_ostrum_vapor', 6000, 0)
.chancedFluidOutput('gtceu:ostrum_vapor', 3000, 0)
.chancedFluidOutput('gtceu:dense_ostrum_vapor', 1000, 0)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.EV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:lightweight_ostrum')
.inputFluids('gtceu:lightweight_ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('tfg:heavy_water', 1000))
.itemOutputsRanged('#forge:dusty_raw_materials/pitchblende', 1, 10)
.itemOutputsRanged('#forge:dusty_raw_materials/silver', 1, 10)
.itemOutputsRanged('#forge:dusty_raw_materials/tricalcium_phosphate', 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:ostrum')
.inputFluids('gtceu:ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('gtceu:radon', 100))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/bauxite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/lead'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/beryllium'), 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
event.recipes.gtceu.ostrum_linear_accelerator('tfg:dense_ostrum')
.inputFluids('gtceu:dense_ostrum_vapor 1000')
.inputFluids('gtceu:residual_radioactive_concoction 100')
.inputFluids(Fluid.of('gtceu:tritiated_water', 500))
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/thorium'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/uraninite'), 1, 10)
.itemOutputsRanged(Item.of('#forge:dusty_raw_materials/hematite'), 1, 10)
.dimension('ad_astra:mars')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV]);
// #region Zirconium
event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride')
.itemInputs('#forge:dusts/silicon')
.inputFluids('gtceu:chlorine 4000')
.outputFluids('tfg:silicon_tetrachloride 1000')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.chemical_reactor('tfg:silicon_tetrachloride_decomp')
.inputFluids('tfg:silicon_tetrachloride 1000', 'minecraft:water 2000')
.itemOutputs('#forge:dusts/silicon')
.outputFluids('gtceu:hydrochloric_acid 4000', 'gtceu:oxygen 2000')
.duration(5 * 20)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_tetrachloride')
.itemInputs('4x #forge:dusts/carbon', '6x #forge:dusts/zircon')
.inputFluids('gtceu:chlorine 8000')
.outputFluids('gtceu:carbon_monoxide 4000', 'tfg:silicon_tetrachloride 1000')
.itemOutputs('5x #forge:dusts/zirconium_tetrachloride')
.duration(20 * 20)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:zirconium')
.itemInputs('2x #forge:dusts/magnesium', '5x #forge:dusts/zirconium_tetrachloride')
.itemOutputs('#forge:hot_ingots/zirconium', '6x #forge:dusts/magnesium_chloride')
.duration(55 * 20)
.blastFurnaceTemp(4241)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_bromide')
.itemInputs('#forge:dusts/zirconium', '2x #forge:dusts/carbon')
.inputFluids('gtceu:bromine 4000', 'gtceu:oxygen 2000')
.itemOutputs('5x #forge:dusts/zirconium_bromide')
.outputFluids('gtceu:carbon_monoxide 2000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:zirconium_diboride')
.itemInputs('10x #forge:dusts/zirconium_bromide', '5x #forge:dusts/boron_carbide')
.notConsumable('#forge:dusts/carbon')
.itemOutputs('6x #forge:dusts/zirconium_diboride', '#forge:dusts/carbon')
.outputFluids('gtceu:bromine 8000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:boron_carbide')
.itemInputs('4x #forge:dusts/boron', '7x #forge:dusts/carbon')
.inputFluids('gtceu:oxygen 6000')
.itemOutputs('5x #forge:dusts/boron_carbide')
.outputFluids('gtceu:carbon_monoxide 6000')
.duration(10 * 20)
.EUt(GTValues.VA[GTValues.HV])
// #endregion
}

View file

@ -0,0 +1,234 @@
"use strict";
function registerTFGInsulationRecipes(event) {
//#region Rock-wool stuff
event.recipes.gtceu.mixer('tfg:aes_mix')
.itemInputs('5x gtceu:silicon_dioxide_dust', '4x gtceu:quicklime_dust', 'gtceu:magnesia_dust')
.itemOutputs('10x tfg:aes_mix_dust')
.duration(160)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes')
.itemInputs('2x tfg:aes_mix_dust')
.outputFluids(Fluid.of('tfg:molten_aes', 1000))
.chancedOutput('gtceu:ash_dust', 3000, 0)
.circuit(1)
.duration(400)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:molten_aes_he')
.itemInputs('2x tfg:aes_mix_dust')
.inputFluids(Fluid.of('gtceu:helium', 200))
.outputFluids(Fluid.of('tfg:molten_aes', 1000))
.circuit(2)
.duration(140)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.centrifuge('tfg:aes_wool')
.inputFluids(Fluid.of('tfg:molten_aes', 200))
.itemOutputs('tfg:aes_wool')
.duration(30)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.forming_press('tfg:aes_compressed_wool')
.itemInputs('4x tfg:aes_wool')
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('tfg:aes_compressed_wool')
.duration(40)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_bath('tfg:aes_insulation_sheet')
.itemInputs('tfg:aes_compressed_wool')
.inputFluids(Fluid.of('gtceu:epoxy', 72))
.circuit(1)
.itemOutputs('tfg:aes_insulation_sheet')
.duration(80)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_bath('tfg:aes_insulation_roll')
.itemInputs('9x tfg:aes_compressed_wool')
.inputFluids(Fluid.of('gtceu:epoxy', 648))
.itemOutputs('tfg:aes_insulation_roll')
.circuit(9)
.duration(400)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.assembler('tfg:aes_insulation_roll')
.itemInputs('9x tfg:aes_insulation_sheet')
.itemOutputs('tfg:aes_insulation_roll')
.circuit(0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.shaped('tfg:aes_insulation_roll', [
'AAA',
'AAA',
'AAA'
], {
A: 'tfg:aes_insulation_sheet'
}).id('tfg:shaped/aes_insulation_roll')
event.recipes.gtceu.assembler('tfg:aes_insulation_sheet')
.itemInputs('9x tfg:aes_insulation_sheet')
.itemOutputs('tfg:aes_insulation_roll')
.circuit(0)
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
event.shapeless('9x tfg:aes_insulation_sheet', [
'tfg:aes_insulation_roll'
]).id('tfg:shapeless/aes_insulation_sheet')
event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_sheet')
.itemInputs('tfg:aes_insulation_sheet')
.inputFluids(Fluid.of('gtceu:helium', 200))
.outputFluids(Fluid.of('tfg:molten_aes', 800))
.chancedOutput('gtceu:ash_dust', 2500, 0)
.circuit(1)
.duration(140)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:smelt_aes_roll')
.itemInputs('tfg:aes_insulation_roll')
.inputFluids(Fluid.of('gtceu:helium', 1000))
.itemOutputs('2x gtceu:ash_dust')
.outputFluids(Fluid.of('tfg:molten_aes', 7200))
.circuit(9)
.duration(1000)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:smelt_sniffer_wool')
.itemInputs('tfg:sniffer_wool')
.chancedOutput('gtceu:ash_dust', 7500, 0)
.outputFluids(Fluid.of('tfg:molten_aes', 200))
.circuit(4)
.duration(80)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.electric_blast_furnace('tfg:smelt_wraptor_wool')
.itemInputs('tfg:wraptor_wool')
.chancedOutput('gtceu:ash_dust', 5000, 0)
.outputFluids(Fluid.of('tfg:molten_aes', 100))
.circuit(8)
.duration(60)
.blastFurnaceTemp(3000)
.EUt(GTValues.VA[GTValues.EV])
// #endregion
//#region ammonia borane
event.recipes.gtceu.chemical_reactor('tfg:sodium_hydride_synthesis')
.itemInputs('#forge:dusts/sodium')
.inputFluids(Fluid.of('gtceu:hydrogen', 1000))
.itemOutputs('2x #forge:dusts/sodium_hydride')
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('tfg:boric_acid_synthesis')
.itemInputs('23x #forge:dusts/borax')
.inputFluids(Fluid.of('gtceu:hydrochloric_acid', 2000))
.itemOutputs('28x #forge:dusts/boric_acid', '2x #forge:dusts/salt')
.outputFluids(Fluid.of('minecraft:water', 5000))
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('tfg:trimethyl_borate_synthesis')
.itemInputs('7x #forge:dusts/boric_acid')
.inputFluids(Fluid.of('gtceu:methanol', 3000), Fluid.of('gtceu:sulfuric_acid', 100))
.outputFluids(Fluid.of('tfg:trimethyl_borate', 1000), Fluid.of('minecraft:water', 3000))
.duration(300)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:sodium_borohydride_synthesis')
.itemInputs('4x #forge:dusts/sodium_hydride')
.inputFluids(Fluid.of('tfg:trimethyl_borate', 1000))
.itemOutputs('6x #forge:dusts/sodium_borohydride', '18x #forge:dusts/sodium_methoxide')
.duration(160)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:ammonia_borane_synthesis')
.itemInputs('6x #forge:dusts/sodium_borohydride', '6x #forge:dusts/ammonium_chloride')
.itemOutputs('8x #forge:dusts/ammonia_borane', '2x #forge:dusts/salt')
.outputFluids(Fluid.of('gtceu:hydrogen', 2000))
.duration(100)
.EUt(GTValues.VA[GTValues.IV])
//#endregion
//#region polyurethane
event.recipes.gtceu.chemical_reactor('tfg:aniline_synthesis')
.inputFluids(Fluid.of('gtceu:nitrobenzene', 1000), Fluid.of('gtceu:hydrogen', 6000))
.notConsumable('#forge:dusts/iron')
.outputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('minecraft:water', 2000))
.duration(140)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:dimethyl_carbonate_synthesis')
.inputFluids(Fluid.of('gtceu:carbon_monoxide', 1000), Fluid.of('gtceu:oxygen', 1000), Fluid.of('gtceu:methanol', 2000))
.outputFluids(Fluid.of('tfg:dimethyl_carbonate', 1000), Fluid.of('minecraft:water', 1000))
.duration(120)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.chemical_reactor('tfg:methyl_phenylcarbamate_synthesis')
.inputFluids(Fluid.of('tfg:aniline', 1000), Fluid.of('tfg:dimethyl_carbonate', 1000))
.outputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 1000), Fluid.of('gtceu:methanol', 1000))
.duration(200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:mpc_synthesis')
.inputFluids(Fluid.of('tfg:methyl_phenylcarbamate', 2000), Fluid.of('gtceu:formaldehyde', 1000))
.outputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000), Fluid.of('minecraft:water', 1000))
.duration(200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.chemical_reactor('tfg:mpi_synthesis')
.inputFluids(Fluid.of('tfg:methylene_diphenyl_dicarbamate', 1000))
.itemOutputs('27x #forge:dusts/methylene_diphenyl_diisocyanate')
.outputFluids(Fluid.of('gtceu:methanol', 2000))
.duration(80)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.mixer('tfg:aes_polyurethane_electric_only')
.itemInputs('2x #tfg:mineral_rich_wool', 'tfg:aes_compressed_wool', '27x #forge:dusts/methylene_diphenyl_diisocyanate')
.inputFluids(Fluid.of('gtceu:diethylenetriamine', 250), Fluid.of('gtceu:acetone', 1000))
.itemOutputs('tfg:aes_polyurethane')
.duration(80)
.EUt(GTValues.VA[GTValues.IV])
//#endregion
//#region Aerogel
event.recipes.gtceu.chemical_reactor('tfg:tmos_synthesis')
.inputFluids(Fluid.of('tfg:dimethyl_carbonate', 2000))
.itemInputs('3x #forge:dusts/silicon_dioxide')
.notConsumable('#forge:small_dusts/potassium_hydroxide')
.outputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:carbon_dioxide', 2000))
.duration(100)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:tmos_hydrolysis')
.inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:distilled_water', 2000))
.outputFluids(Fluid.of('gtceu:methanol', 4000))
.itemOutputs('3x #forge:dusts/silicon_dioxide')
.duration(100)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.large_chemical_reactor('tfg:silica_gel_synthesis')
.inputFluids(Fluid.of('tfg:tmos', 1000), Fluid.of('gtceu:ethanol', 2000), Fluid.of('gtceu:distilled_water', 500),
Fluid.of('gtceu:hydrochloric_acid', 100))
.outputFluids(Fluid.of('tfg:silica_gel', 1000))
.duration(300)
.EUt(GTValues.VA[GTValues.IV])
event.recipes.gtceu.chemical_reactor('tfg:silica_gel_soaking')
.inputFluids(Fluid.of('tfg:silica_gel', 1000), Fluid.of('gtceu:acetone', 2000))
.outputFluids(Fluid.of('tfg:soaked_silica_gel', 1000))
.duration(400)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.large_chemical_reactor('tfg:silica_aerogel')
.inputFluids(Fluid.of('tfg:soaked_silica_gel', 1000), Fluid.of('gtceu:liquid_carbon_dioxide', 3000))
.outputFluids(Fluid.of('gtceu:carbon_dioxide', 3000), Fluid.of('gtceu:acetone', 1000))
.itemOutputs('tfg:silica_aerogel')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
//#endregion
//#region Tier 3 insulation
event.recipes.gtceu.forming_press('tfg:mli_shielding')
.itemInputs('4x #forge:plates/ammonia_borane', '2x tfg:aes_polyurethane', '4x gtceu:carbon_fiber_plate')
.itemOutputs('tfg:mli_shielding')
.duration(100)
.EUt(GTValues.VA[GTValues.IV])
//#endregion
}

View file

@ -0,0 +1,111 @@
"use strict";
function registerTFGRailgunRecipes(event) {
// Railgun stuff
// (the railgun inputs and outputs are in tfg-core)
//item bus to railgun item bus conversion recipes
const GTTiers = ['ulv', 'lv', 'mv', 'hv', 'ev', 'iv', 'luv', 'zpm', 'uv', 'uhv']
GTTiers.forEach(x => {
event.recipes.gtceu.assembler(`tfg:${x}_input_to_${x}_railgun_input_assembler`)
.itemInputs(`gtceu:${x}_input_bus`)
.circuit(4)
.itemOutputs(`tfg:${x}_railgun_item_loader_in`)
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.assembler(`tfg:${x}_output_to_${x}_railgun_output_assembler`)
.itemInputs(`gtceu:${x}_output_bus`)
.circuit(4)
.itemOutputs(`tfg:${x}_railgun_item_loader_out`)
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.LV])
})
//Railgun ammo
event.recipes.gtceu.assembler('tfg:railgun_ammo_basic')
.itemInputs('#forge:double_plates/steel', '2x #forge:rods/magnetic_iron', '2x #forge:fine_wires/annealed_copper')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_advanced')
.itemInputs('#forge:double_plates/titanium', '2x #forge:rods/magnetic_steel', '2x #forge:fine_wires/gold')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('4x tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_best')
.itemInputs('#forge:double_plates/tungsten', '2x #forge:rods/magnetic_neodymium', '2x #forge:fine_wires/aluminium')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('8x tfg:railgun_ammo_shell')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_moon')
.itemInputs('#forge:double_plates/steel', '2x ae2:charged_certus_quartz_crystal', '2x ae2:quartz_fiber')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('4x tfg:railgun_ammo_shell')
.dimension('ad_astra:moon')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.assembler('tfg:railgun_ammo_mars')
.itemInputs('#forge:double_plates/lead', '2x #forge:rods/ostrum', '2x #forge:fine_wires/silver')
.inputFluids('gtceu:rocket_fuel 250')
.itemOutputs('8x tfg:railgun_ammo_shell')
.dimension('ad_astra:mars')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.shaped('tfg:railgun_ammo_loader', [
'RMR',
'MBM',
'CCC'
], {
B: 'gtceu:mv_input_bus',
R: 'gtceu:mv_robot_arm',
M: 'gtceu:mv_electric_motor',
C: '#forge:single_cables/annealed_copper'
}).addMaterialInfo().id('tfg:shaped/railgun_ammo_loader')
event.recipes.gtceu.shaped('tfg:interplanetary_logistics_monitor', [
'CDC',
'SHE',
'WCW'
], {
C: '#gtceu:circuits/hv',
D: 'gtceu:computer_monitor_cover',
S: 'gtceu:hv_sensor',
H: 'gtceu:hv_machine_hull',
E: 'gtceu:hv_emitter',
W: '#forge:single_cables/silver'
}).addMaterialInfo().id('tfg:shaped/interplanetary_logistics_monitor')
event.recipes.gtceu.shaped('tfg:interplanetary_item_launcher', [
'NSN',
'CHC',
'NEN'
], {
C: '#gtceu:circuits/ev',
S: 'gtceu:hv_sensor',
E: 'gtceu:hv_emitter',
H: 'gtceu:ev_machine_hull',
N: '#forge:plates/hsla_steel'
}).addMaterialInfo().id('tfg:shaped/interplanetary_item_launcher')
event.recipes.gtceu.shaped('tfg:interplanetary_item_receiver', [
'CSC',
'WHW',
'CSC'
], {
C: '#gtceu:circuits/mv',
S: 'gtceu:mv_sensor',
W: '#forge:double_cables/copper',
H: 'gtceu:mv_machine_hull'
}).addMaterialInfo().id('tfg:shaped/interplanetary_item_receiver')
}

View file

@ -0,0 +1,283 @@
"use strict";
function registerTFGRocketRecipes(event) {
//#region Tier 1 rocket
event.recipes.gtceu.assembler('tfg:rocket_nose_cone_t1')
.itemInputs(
'gtceu:hv_emitter',
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 1),
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 3))
.inputFluids(Fluid.of('gtceu:polyethylene', 144 * 16))
.itemOutputs('ad_astra:rocket_nose_cone')
.duration(1200)
.circuit(2)
.EUt(480)
.addMaterialInfo(true, true)
event.recipes.gtceu.pyrolyse_oven('tfg:pyrolyse_vitrified_asbestos_dust')
.inputFluids(Fluid.of('gtceu:nitrogen', 100))
.itemInputs('gtceu:asbestos_dust')
.itemOutputs('gtceu:vitrified_asbestos_dust')
.duration(80)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer('tfg:rocket_alloy_t1')
.itemInputs('6x #forge:dusts/aluminium', '2x #forge:dusts/stainless_steel')
.inputFluids(Fluid.of('gtceu:red_steel', 144))
.itemOutputs('9x #forge:dusts/rocket_alloy_t1')
.duration(580)
.circuit(2)
.EUt(480)
event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_water')
.itemInputs('#forge:hot_ingots/rocket_alloy_t1')
.inputFluids(Fluid.of('minecraft:water', 100))
.itemOutputs('#forge:ingots/rocket_alloy_t1')
.duration(400)
.EUt(120)
event.recipes.gtceu.chemical_bath('tfg:rocket_alloy_cool_down_distilled_water')
.itemInputs('#forge:hot_ingots/rocket_alloy_t1')
.inputFluids(Fluid.of('gtceu:distilled_water', 100))
.itemOutputs('#forge:ingots/rocket_alloy_t1')
.duration(250)
.EUt(120)
event.recipes.gtceu.assembler(`tfg:rocket_fin_t1`)
.itemInputs(
ChemicalHelper.get(TagPrefix.plate, TFGHelpers.getMaterial('rocket_alloy_t1'), 1),
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 1)
)
.itemOutputs('ad_astra:rocket_fin')
.duration(150)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_steel_engine')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.StainlessSteel, 2),
'2x #gtceu:circuits/hv',
'gtceu:hv_electric_pump',
'2x gtceu:power_thruster',
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.StainlessSteel, 1)
)
.inputFluids(Fluid.of('gtceu:blue_steel', 144 * 8))
.itemOutputs('ad_astra:steel_engine')
.duration(600)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:assembler_tier_1_rocket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t1'), 8),
'4x ad_astra:rocket_fin',
'1x ad_astra:steel_engine',
'1x ad_astra:rocket_nose_cone',
'16x #forge:insulation_t1',
'4x #gtceu:circuits/hv'
)
.inputFluids(Fluid.of('gtceu:silicon', 144 * 16))
.itemOutputs('ad_astra:tier_1_rocket')
.duration(1200)
.circuit(2)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true, true)
//#endregion
//region tier 2 rocket
event.remove({ mod: 'gtceu', input: 'gtceu:hot_rocket_alloy_t2_ingot' })
event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000))
.outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32))
.duration(1320 * 20)
.circuit(2)
.blastFurnaceTemp(3200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.alloy_blast_smelter('gtceu:alloy_blast_smelter/rocket_alloy_t2_gas')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4), Fluid.of('gtceu:distilled_water', 16000), Fluid.of('gtceu:helium', 3200))
.outputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144 * 32))
.duration(17688)
.circuit(12)
.blastFurnaceTemp(3200)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_molten_rocket_alloy_t2')
.notConsumable('gtceu:ingot_casting_mold')
.inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t2', 144), Fluid.of('tfg:cryogenized_fluix', 288))
.itemOutputs('#forge:ingots/rocket_alloy_t2')
.duration(120)
.EUt(GTValues.VA[GTValues.MV])
event.recipes.gtceu.mixer('tfg:rocket_alloy_t2')
.itemInputs('19x #forge:dusts/titanium', '3x #forge:dusts/chromium', '3x #forge:dusts/tin', '3x #forge:dusts/aluminium')
.inputFluids(Fluid.of('gtceu:vanadium', 144 * 4))
.itemOutputs('32x #forge:dusts/rocket_alloy_t2')
.duration(15 * 20)
.circuit(5)
.EUt(GTValues.VA[GTValues.EV])
event.recipes.gtceu.vacuum_freezer('tfg:vacuum_freezer/cool_rocket_alloy_t2')
.itemInputs('#forge:hot_ingots/rocket_alloy_t2')
.inputFluids(Fluid.of('gtceu:distilled_water', 500), Fluid.of('tfg:cryogenized_fluix', 288))
.itemOutputs('#forge:ingots/rocket_alloy_t2')
.duration(120)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.assembler('tfg:rocket_fin_t2')
.itemInputs('#forge:plates/rocket_alloy_t2',
'#forge:double_plates/titanium')
.itemOutputs('tfg:rocket_fin_t2')
.duration(180)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_cone_t2')
.itemInputs('gtceu:ev_emitter', '#forge:dense_plates/rocket_alloy_t2', '#forge:double_plates/titanium',
'#forge:double_plates/desh')
.itemOutputs('tfg:rocket_cone_t2')
.duration(1440)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_desh_engine')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDouble, GTMaterials.Titanium, 4),
'2x #gtceu:circuits/ev',
'gtceu:ev_electric_pump',
'3x gtceu:advanced_power_thruster',
ChemicalHelper.get(TagPrefix.rod, GTMaterials.NeodymiumMagnetic, 4),
ChemicalHelper.get(TagPrefix.rotor, GTMaterials.Titanium, 1))
.inputFluids(Fluid.of('gtceu:desh', 144 * 12))
.itemOutputs('ad_astra:desh_engine')
.duration(800)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:tier_2_rocket')
.itemInputs(
ChemicalHelper.get(TagPrefix.plateDense, TFGHelpers.getMaterial('rocket_alloy_t2'), 12),
'4x tfg:rocket_fin_t2',
'1x ad_astra:desh_engine',
'1x tfg:rocket_cone_t2',
'12x #forge:insulation_t2/roll',
'4x #gtceu:circuits/ev'
)
.inputFluids(Fluid.of('gtceu:titanium', 144 * 16))
.itemOutputs('ad_astra:tier_2_rocket')
.duration(1440)
.circuit(3)
.EUt(GTValues.VA[GTValues.EV])
.addMaterialInfo(true, true)
//#endregion
//region Tier 3 DISABLED UNTIL IV
event.remove({ id: "gtceu:vacuum_freezer/cool_hot_rocket_alloy_t3_ingot" })
event.remove({ id: "gtceu:vacuum_freezer/rocket_alloy_t3" })
/*
event.recipes.gtceu.vacuum_freezer('tfg:cool_rocket_alloy_t3')
.inputFluids(Fluid.of('gtceu:molten_rocket_alloy_t3', 144), Fluid.of('gtceu:ice', 4000))
.notConsumable('gtceu:ingot_casting_mold')
.itemOutputs('#forge:ingots/rocket_alloy_t3')
.duration(800)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.vacuum_freezer('tfg:cool_hot_rocket_alloy_t3')
.itemInputs('#forge:hot_ingots/rocket_alloy_t3')
.inputFluids(Fluid.of('gtceu:liquid_helium', 500))
.itemOutputs('#forge:ingots/rocket_alloy_t3')
.outputFluids(Fluid.of('gtceu:helium', 250))
.duration(400)
.EUt(GTValues.VA[GTValues.HV])
//Add some unique cooling thing for molten ingots
event.recipes.gtceu.assembler('tfg:rocket_fin_t3')
.itemInputs('#forge:plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel')
.itemOutputs('tfg:rocket_fin_t3')
.duration(220)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_cone_t3')
.itemInputs('gtceu:iv_emitter', '#forge:dense_plates/rocket_alloy_t3', '#forge:double_plates/tungsten_steel',
'#forge:double_plates/ostrum', 'gtceu:plutonium_nugget') //change this to the pellet
.itemOutputs('tfg:rocket_cone_t3')
.duration(1700)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:elite_power_thruster')
.itemInputs('gtceu:ev_electric_motor', '2x #forge:rings/titanium', '#forge:rods/titanium',
'gtceu:ultimet_rotor', '2x gtceu:aluminium_single_cable')
.itemOutputs('tfg:elite_power_thruster')
.duration(200)
.EUt(GTValues.VA[GTValues.LV])
.addMaterialInfo(true)
event.recipes.gtceu.assembler('tfg:rocket_ostrum_engine')
.itemInputs(
'6x #forge:double_plates/tungsten_steel',
'4x #gtceu:circuits/iv',
'gtceu:iv_electric_pump',
'3x tfg:elite_power_thruster',
'4x #forge:insulation_t3/cryo',
'6x #forge:rods/magnetic_neodymium',
'#forge:rotors/tungsten_steel')
.inputFluids(Fluid.of('gtceu:ostrum', 144 * 16))
.itemOutputs('ad_astra:ostrum_engine')
.duration(960)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('tfg:rocket_ostrum_tank')
.itemInputs(
'4x #forge:double_plates/rocket_alloy_t3',
'gtceu:iv_electric_pump',
'tfg:elite_power_thruster',
'2x #forge:insulation_t3/cryo')
.inputFluids(Fluid.of('gtceu:ostrum', 144 * 4))
.itemOutputs('ad_astra:ostrum_tank')
.duration(400)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
event.recipes.gtceu.assembler('ad_astra:tier_3_rocket')
.itemInputs(
'16x #forge:dense_plates/rocket_alloy_t3',
'4x tfg:rocket_fin_t3',
'1x ad_astra:ostrum_engine',
'2x ad_astra:ostrum_tank',
'1x tfg:rocket_cone_t3',
'8x #forge:insulation_t3/sheet'
)
.inputFluids(Fluid.of('gtceu:bromine', 1000 * 16))
.itemOutputs('ad_astra:tier_3_rocket')
.duration(1700)
.circuit(4)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true, true)
//#endregion
*/
}

View file

@ -0,0 +1,114 @@
// priority: 0
"use strict";
/**
* @param {Internal.RecipesEventJS} event
*/
function registerTFGSpaceRecipes(event) {
const allowedCombustibleDims = [
{
dimension: "minecraft:the_nether",
type: "dimension"
},
{
dimension: "minecraft:overworld",
type: "dimension"
}
]
event.findRecipes({ type: "gtceu:large_boiler" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:steam_boiler" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:combustion_generator" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
event.findRecipes({ type: "gtceu:gas_turbine" }).forEach(recipe => {
recipe.json.add("recipeConditions", allowedCombustibleDims)
})
// Air collector
event.recipes.gtceu.gas_collector('tfg:nether')
.circuit(2)
.outputFluids(Fluid.of('gtceu:air', 10000))
.dimension('minecraft:the_nether')
.duration(200)
.EUt(16)
event.recipes.gtceu.gas_collector('tfg:moon')
.circuit(3)
.outputFluids(Fluid.of('gtceu:argon', 1))
.dimension('ad_astra:moon')
.duration(20*60*30)
.EUt(16)
event.recipes.gtceu.gas_collector('tfg:mars')
.circuit(4)
.outputFluids(Fluid.of('tfg:mars_air', 10000))
.dimension('ad_astra:mars')
.duration(20*10)
.EUt(16)
// Aqueous accumulator -- use adjacentFluids (plural) to avoid rhino ambiguous method issues
let aaCircuit = 1;
event.recipes.gtceu.aqueous_accumulator('water')
.circuit(aaCircuit++)
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.adjacentFluids(["minecraft:water"])
.outputFluids(Fluid.of("minecraft:water", 1000))
event.recipes.gtceu.aqueous_accumulator('sea_water')
.circuit(aaCircuit++)
.duration(20)
.EUt(GTValues.VA[GTValues.ULV])
.adjacentFluids(["tfc:salt_water"])
.outputFluids(Fluid.of("tfc:salt_water", 1000))
event.recipes.gtceu.aqueous_accumulator('semiheavy_water_mars')
.circuit(aaCircuit++)
.dimension('ad_astra:mars')
.duration(20)
.EUt(GTValues.VHA[GTValues.ULV])
.adjacentFluids(["tfg:semiheavy_ammoniacal_water"])
.outputFluids(Fluid.of("tfg:semiheavy_ammoniacal_water", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_overworld')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20*15)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:lava"])
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('lava_nether')
.circuit(aaCircuit++)
.dimension('minecraft:the_nether')
.duration(20*15)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:lava"])
.outputFluids(Fluid.of("minecraft:lava", 1000))
event.recipes.gtceu.aqueous_accumulator('spring_water')
.circuit(aaCircuit++)
.dimension('minecraft:overworld')
.duration(20)
.EUt(GTValues.VA[GTValues.LV])
.adjacentFluids(["tfc:spring_water"])
.outputFluids(Fluid.of("tfc:spring_water", 1000))
event.recipes.gtceu.aqueous_accumulator('more_water')
.circuit(aaCircuit++)
.duration(10)
.EUt(GTValues.VHA[GTValues.HV])
.adjacentFluids(["minecraft:water"])
.outputFluids(Fluid.of("minecraft:water", 16000))
}

View file

@ -0,0 +1,182 @@
"use strict";
function registerTFGSpaceSuitRecipes(event) {
event.recipes.gtceu.shaped('ad_astra:launch_pad', [
'BAB',
'AAA',
'BAB'
], {
A: '#forge:plates/steel',
B: '#forge:rods/steel'
}).addMaterialInfo().id('tfg:launch_pad')
// Space suit gases
event.recipes.gtceu.gas_pressurizer('compressed_nitrox')
.inputFluids(Fluid.of('gtceu:nitrogen', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_nitrox', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_heliox')
.inputFluids(Fluid.of('gtceu:helium', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_heliox', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_heliox_3')
.inputFluids(Fluid.of('gtceu:helium_3', 8000), Fluid.of('gtceu:oxygen', 2000))
.outputFluids(Fluid.of('tfg:compressed_heliox_3', 1000))
.circuit(1)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_trimix')
.inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium', 2000))
.outputFluids(Fluid.of('tfg:compressed_trimix', 1000))
.circuit(2)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
event.recipes.gtceu.gas_pressurizer('compressed_trimix_3')
.inputFluids(Fluid.of('gtceu:nitrogen', 5000), Fluid.of('gtceu:oxygen', 3000), Fluid.of('gtceu:helium_3', 2000))
.outputFluids(Fluid.of('tfg:compressed_trimix_3', 1000))
.circuit(2)
.duration(100)
.EUt(GTValues.VA[GTValues.HV])
//#region space suits
event.recipes.gtceu.forming_press('space_suit_fabric')
.itemInputs(
'#forge:foils/aluminium',
'gtceu:carbon_fiber_mesh',
'#forge:foils/silicone_rubber',
'tfg:polycaprolactam_fabric'
)
.itemOutputs('2x tfg:space_suit_fabric')
.duration(20 * 10)
.EUt(GTValues.VA[GTValues.HV])
.addMaterialInfo(true)
event.recipes.gtceu.forming_press('better_space_suit_fabric')
.itemInputs(
'#forge:foils/polybenzimidazole',
'gtceu:carbon_fiber_mesh',
'#forge:aerogels',
'tfg:glacian_wool'
)
.itemOutputs('2x tfg:better_space_suit_fabric')
.duration(20 * 5)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_helmet', [
'AAA',
'ADA',
'BBB'
], {
A: 'gtceu:tempered_glass',
B: 'tfg:space_suit_fabric',
D: '#forge:small_fluid_pipes/polyethylene'
}).addMaterialInfo().id('tfg:space_helmet')
event.recipes.gtceu.assembler('ad_astra:netherite_space_helmet')
.itemInputs(
'ad_astra:space_helmet',
'2x #forge:plates/tungsten_steel',
'1x #forge:plates/ostrum',
'3x tfg:better_space_suit_fabric',
'5x gtceu:laminated_glass'
)
.itemOutputs('ad_astra:netherite_space_helmet')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_suit', [
'B B',
'BDB',
'BBB'
], {
B: 'tfg:space_suit_fabric',
D: 'ad_astra:oxygen_gear'
}).addMaterialInfo().id('tfg:space_suit')
event.shapeless('ad_astra:space_suit', ['ad_astra:space_suit'])
.id('tfg:empty_space_suit')
event.recipes.gtceu.assembler('ad_astra:netherite_space_suit')
.itemInputs(
'ad_astra:space_suit',
'3x #forge:plates/tungsten_steel',
'2x #forge:plates/ostrum',
'5x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_suit')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.shapeless('ad_astra:netherite_space_suit', ['ad_astra:netherite_space_suit'])
.id('tfg:empty_netherite_space_suit')
event.recipes.gtceu.shaped('ad_astra:space_pants', [
'BAB',
'B B',
'B B'
], {
A: 'gtceu:hv_electric_motor',
B: 'tfg:space_suit_fabric',
}).addMaterialInfo().id('tfg:space_pants')
event.recipes.gtceu.assembler('ad_astra:netherite_space_pants')
.itemInputs(
'ad_astra:space_pants',
'2x #forge:plates/tungsten_steel',
'2x #forge:plates/ostrum',
'4x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_pants')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:space_boots', [
'B B',
'A A'
], {
A: '#forge:plates/polyphenylene_sulfide',
B: 'tfg:space_suit_fabric'
}).addMaterialInfo().id('tfg:space_boots')
event.recipes.gtceu.assembler('ad_astra:netherite_space_boots')
.itemInputs(
'ad_astra:space_boots',
'1x #forge:plates/tungsten_steel',
'1x #forge:plates/ostrum',
'2x tfg:better_space_suit_fabric'
)
.itemOutputs('ad_astra:netherite_space_boots')
.duration(400)
.EUt(GTValues.VA[GTValues.IV])
.addMaterialInfo(true)
event.recipes.gtceu.shaped('ad_astra:oxygen_gear', [
'BAB',
'ECE',
'BDB'
], {
A: '#gtceu:circuits/hv',
B: '#forge:tiny_fluid_pipes/stainless_steel',
C: 'gtceu:hv_electric_pump',
D: 'gtceu:fluid_detector_cover',
E: 'ad_astra:gas_tank'
}).addMaterialInfo().id('tfg:oxygen_gear')
//#endregion
}

View file

@ -18,6 +18,10 @@ const registerTFGItemTags = (event) => {
event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product')
event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product')
event.add("tfg:sugars", "minecraft:sugar");
event.add("tfg:sugars", "afc:birch_sugar");
event.add("tfg:sugars", "afc:maple_sugar");
// Actually "layers", can't rename them without screwing with peoples' worlds
event.add('c:hidden_from_recipe_viewers', 'tfg:ash_pile')
event.add('c:hidden_from_recipe_viewers', 'tfg:pile/black_sand')
@ -627,12 +631,10 @@ const registerTFGItemTags = (event) => {
event.remove('forge:dusts', 'tfg:cellulose_matrix')
event.remove('forge:dusts/cellulose_matrix', 'tfg:cellulose_matrix')
event.remove('balm:ingots', 'tfg:polycaprolactam_fabric')
event.remove('tfc:pileable_ingots', 'tfg:polycaprolactam_fabric')
event.remove('forge:ingots', 'tfg:polycaprolactam_fabric')
event.remove('forge:ingots/tfg_polycaprolactam', 'tfg:polycaprolactam_fabric')
event.remove('balm:nuggets', 'tfg:polycaprolactam_string')
event.remove('forge:nuggets', 'tfg:polycaprolactam_string')
event.remove('forge:nuggets/tfg_polycaprolactam', 'tfg:polycaprolactam_string')

View file

@ -0,0 +1,108 @@
"use strict";
/** @param {Internal.TFCDataEventJS} event */
function registerTFGFauna(event) {
// -108 is the average at z=-4k to z=-6k, which feels like a big enough band
event.fauna(
climate => {
climate.maxTemp(-108)
climate.fuzzy(false)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:glacian_ram")
event.fauna(
climate => {
climate.minTemp(-102)
climate.maxTemp(-30)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:sniffer")
event.fauna(
climate => {
climate.minTemp(-100)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"tfg:wraptor")
event.fauna(
climate => {
climate.minTemp(-108)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"species:springling")
event.fauna(
climate => {
climate.minTemp(-109)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"species:goober")
event.fauna(
climate => {
climate.minTemp(-97)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:walker")
event.fauna(
climate => {
climate.minTemp(-109)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:eater")
event.fauna(
climate => {
climate.minTemp(-100)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:crusher")
event.fauna(
climate => {
climate.minTemp(-105)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:soarer")
event.fauna(
climate => {
climate.minTemp(-106)
climate.fuzzy(true)
},
faunaData => {
faunaData.solidGround(true)
},
"wan_ancient_beasts:glider")
}

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