Merge pull request #686 from Pyritie/gas-multiblocks

Gas multiblocks
This commit is contained in:
Dmitry 2025-01-12 11:53:48 +07:00 committed by GitHub
commit 59f66ff307
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 845 additions and 32 deletions

View file

@ -6,6 +6,11 @@
"block.gtceu.alternator": "Alternator",
"gtceu.alternator": "Alternator",
"block.gtceu.nether_dome": "Netherarium",
"gtceu.nether_dome": "Netherarium",
"block.gtceu.end_dome": "Enderarium",
"gtceu.end_dome": "Enderarium",
"material.treated_wood": "Creosote-Treated Wood",
"block.gtceu.treated_wood_planks": "Creosote-Treated Wood Planks",
@ -49,4 +54,4 @@
"block.gtceu.luv_kinetic_output_box": "Ludicrous Voltage Kinetic Output Box",
"block.gtceu.zpm_kinetic_output_box": "ZPM Voltage Kinetic Output Box",
"block.gtceu.uv_kinetic_output_box": "Ultimate Voltage Kinetic Output Box"
}
}

View file

@ -6,6 +6,11 @@
"block.gtceu.alternator": "Генератор переменного тока",
"gtceu.alternator": "Генератор переменного тока",
"block.gtceu.nether_dome": "Террариум нижнего мира",
"gtceu.nether_dome": "Террариум нижнего мира",
"block.gtceu.end_dome": "Террариум края",
"gtceu.end_dome": "Террариум края",
"material.treated_wood": "Обработанное креозотом дерево",
"block.gtceu.treated_wood_planks": "Доски из обработанного креозотом дерева"

View file

@ -25,7 +25,7 @@
"anchor": "potash",
"recipe": "tfg:smelting/dried_seaweed_to_soda",
"recipe2": "tfg:smelting/dried_kelp_to_soda",
"text": "A type of $(thing)Potash$() or equivalent is also required for glass batches. $(thing)Soda Ash$() can be used, which is a powder made from heating $(thing)Dried Seaweed$() or $(thing)Kelp$(). $(l:the_world/ores_and_minerals#saltpeter)Saltpeter$() can be used as well."
"text": "A type of $(thing)Potash$() or equivalent is also required for glass batches. $(thing)Soda Ash$() can be used, which is a powder made from heating $(thing)Dried Seaweed$() or $(thing)Kelp$(). $(l:tfg_ores/normal_saltpeter)Saltpeter$() can be used as well."
},
{
"type": "patchouli:text",
@ -79,4 +79,4 @@
"tfc:jacks": 8,
"tfc:gem_saw": 9
}
}
}

View file

@ -0,0 +1,48 @@
{
"name": "Infinite Resources?!",
"icon": "tfc:rock/dust/diorite",
"category": "tfc:tfg_tips",
"pages":
[
{
"type": "patchouli:text",
"text": "Most of the raw resources you'll need are non-renewable and will require you to mine for them, but a few of them are infinitely renewable once you get to $(thing)LV$() and $(thing)MV$().$(br2)A lot of these methods are pretty slow, however, so it's up to you whether it's worth setting these up or just digging up another ore vein."
},
{
"type": "patchouli:spotlight",
"title": "Fluids",
"item": "create:hose_pulley",
"text": "$(thing)Water$(), $(thing)Sea Water$(), and $(thing)Lava$() are all renewable through a $(item)Hose Pulley$() and a single source block of fluid. You can pull out of the hose pulley with a $(l:mechanics/pumps)Mechanical Pump$()."
},
{
"type": "patchouli:text",
"text": "$(item)Sea Water$() can be centrifuged for Water and $(thing)Salt$(), which can be electrolyzed into $(thing)Chlorine$() and $(thing)Sodium$().$(br2)$(item)Lava$() can be centrifuged into $(thing)Gold Nuggets$(), $(thing)Tantalite$(), $(thing)Sapphire$(), $(thing)Quicklime$(), $(thing)Silicon Dioxide$(), and ___.$(br2)Lava can also be used to fuel your steam boilers!"
},
{
"type": "patchouli:spotlight",
"title": "Stone Dusts",
"item": { "tag": "tfc:stone/dusts" },
"text": "The other source of infinite resources is through $(thing)Stone Dusts$(). You can obtain infinite raw rock through a $(item)Rock Breaker$(), and then macerate it into different dusts.$(br2)These stone dusts can then be centrifuged into different resources. Most of them give Silicon Dioxide and Oxygen, so only other resources will be listed."
},
{
"type": "patchouli:text",
"title": "Sedimentary",
"text": "$(li)$(thing)Shale$(): Sodium, Metal Mixture$(li)$(thing)Claystone$(): Aluminium, Hematite$(li)$(thing)Limestone$(): Calcium, Metal Mixture$(li)$(thing)Conglomerate$(): Tricalcium Phosphate, Hematite$(li)$(thing)Dolomite$(): Magnesium, Calcium, Metal Mixture$(li)$(thing)Chert$(): Metal Mixture$(li)$(thing)Chalk$(): Calcium, Carbon, Metal Mixture"
},
{
"type": "patchouli:text",
"title": "Metamorphic",
"text": "$(li)$(thing)Quartzite$(): Nothing$(li)$(thing)Slate$(): Metal Mixture$(li)$(thing)Phyllite$(): Calcium Chloride$(li)$(thing)Schist$(): Mica, Talc, Graphite, Metal Mixture$(li)$(thing)Gneiss$():Biotite (Fluorine)$(li)$(thing)Marble$(): Magnesium, Calcite"
},
{
"type": "patchouli:text",
"title": "Igneous Intrusive",
"text": "$(li)$(thing)Granite$(): Redrock (which gives...?$(li)$(thing)Gabbro$(): Titanium, Iron, Metal Mixture$(li)$(thing)Diorite$(): Clay Dust, Mirabilite$(li2)Aluminium, Sulfur, Sodium, Lithium..."
},
{
"type": "patchouli:text",
"title": "Igneous Extrusive",
"text": "$(li)$(thing)Rhyolite$(): Metal Mixture$(li)$(thing)Basalt$(): Olivine, Calcite, Flint, Dark Ashes$(li)$(thing)Andesite$(): Asbestos, Saltpeter$(li)$(thing)Dacite$(): Sodium, Calcium, Aluminium, Metal Mixture"
}
]
}

View file

@ -0,0 +1,84 @@
{
"textures": {
"particle": "block/end_portal_frame_side",
"bottom": "block/end_stone",
"top": "block/end_portal_frame_top",
"side": "block/end_portal_frame_side",
"eye": "block/end_portal_frame_eye"
},
"elements": [
{
"from": [
0,
0,
0
],
"to": [
16,
16,
16
],
"faces": {
"down": {
"uv": [
0,
0,
16,
16
],
"texture": "#bottom",
"cullface": "down"
},
"up": {
"uv": [
0,
0,
16,
16
],
"texture": "#top"
},
"north": {
"uv": [
0,
3,
16,
16
],
"texture": "#side",
"cullface": "north"
},
"south": {
"uv": [
0,
3,
16,
16
],
"texture": "#side",
"cullface": "south"
},
"west": {
"uv": [
0,
3,
16,
16
],
"texture": "#side",
"cullface": "west"
},
"east": {
"uv": [
0,
3,
16,
16
],
"texture": "#side",
"cullface": "east"
}
}
}
]
}

View file

@ -1,4 +1,7 @@
ItemEvents.tooltip(event => {
event.addAdvanced(['tfc:red_kaolin_clay','tfc:pink_kaolin_clay','tfc:white_kaolin_clay','gtceu:brass_block'], (item, advanced, text) => {
text.add(1, [text.of('Used in glassblowing as a replacement for Brass Plated Blocks')])
})
event.addAdvanced(['gtceu:lv_macerator','gtceu:mv_macerator', 'gtceu:hp_steam_macerator'], (item, advanced, text) => {
text.add(1, [text.of('Only outputs the first slot shown in EMI/JEI until HV.')])
})
@ -23,4 +26,12 @@ ItemEvents.tooltip(event => {
event.addAdvanced(['firmalife:beehive'], (item, advanced, text) => {
text.add(1, [text.of('Needs to be filled with empty frames and surrounded by flowers to attract bees.')])
})
event.addAdvanced(['gtceu:nether_dome'], (item, advanced, text) => {
text.add(1, text.of('Artificial enviroment to simulate the Nether.')),
text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`))
})
event.addAdvanced(['gtceu:end_dome'], (item, advanced, text) => {
text.add(1, text.of('Artificial enviroment to simulate the End.')),
text.add(2, text.of(`The interior is customizable! Check the multiblock preview in JEI.`))
})
})

View file

@ -1050,12 +1050,11 @@ const registerGTCEURecipes = (event) => {
event.remove({ id: 'gtceu:extractor/extract_raw_rubber_dust' })
// Пыль звезды незера
// TODO: удалить после имплементации ада
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')
.inputFluids(Fluid.of('gtceu:sulfur_dioxide', 6000), Fluid.of('gtceu:carbon_monoxide', 8000))
.inputFluids(Fluid.of('gtceu:nether_air', 1000))
.duration(700)
.EUt(2720)
@ -1277,16 +1276,82 @@ const registerGTCEURecipes = (event) => {
.EUt(24)
//#endregion
// Add circuit to assembler recipe for redstone lamp.
// Avoids conflict with AE2 smart cables.
event.remove({ id: 'gtceu:assembler/redstone_lamp' })
event.recipes.gtceu.assembler('redstone_lamp')
.itemInputs('4x #forge:dusts/redstone', '4x #forge:dusts/glowstone')
.itemOutputs('1x minecraft:redstone_lamp')
.circuit(1)
.duration(100)
.EUt(1)
//#region remove LV casing exploit
/*event.remove({ id: 'gtceu:assembler/casing_lv' })
event.recipes.gtceu.assembler('tfg:assembler/casing_lv')
.itemInputs('4x gtceu:blue_steel_plate', '4x gtceu:red_steel_plate')
.itemOutputs('gtceu:lv_machine_casing')
.circuit(8)
.duration(50)
.EUt(16)*/
//#endregion
//#region make colored steel a bit easier to compensate
event.recipes.gtceu.arc_furnace('tfg:black_steel_dust_to_ingot')
.itemInputs('gtceu:black_steel_dust')
.itemOutputs('gtceu:black_steel_ingot')
.inputFluids(Fluid.of('gtceu:oxygen', 72))
.duration(500)
.EUt(24)
event.recipes.gtceu.arc_furnace('tfg:red_steel_dust_to_ingot')
.itemInputs('gtceu:red_steel_dust')
.itemOutputs('gtceu:red_steel_ingot')
.inputFluids(Fluid.of('gtceu:oxygen', 72))
.duration(700)
.EUt(32)
event.recipes.gtceu.arc_furnace('tfg:blue_steel_dust_to_ingot')
.itemInputs('gtceu:blue_steel_dust')
.itemOutputs('gtceu:blue_steel_ingot')
.inputFluids(Fluid.of('gtceu:oxygen', 72))
.duration(700)
.EUt(32)
//#endregion
//#region add regular furnace recipes for other tfc alloys
event.remove({id: 'gtceu:electric_blast_furnace/blast_bismuth_bronze' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_bismuth_bronze_gas' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_black_bronze' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_black_bronze_gas' })
event.remove({id: 'gtceu:vacuum_freezer/cool_hot_black_bronze_ingot' })
event.remove({id: 'gtceu:vacuum_freezer/black_bronze' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_sterling_silver' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_sterling_silver_gas' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_rose_gold' })
event.remove({id: 'gtceu:electric_blast_furnace/blast_rose_gold_gas' })
event.recipes.gtceu.electric_furnace('tfg:bismuth_bronze_dust_to_ingot')
.itemInputs('gtceu:bismuth_bronze_dust')
.itemOutputs('gtceu:bismuth_bronze_ingot')
.duration(200)
.EUt(16)
event.recipes.gtceu.electric_furnace('tfg:black_bronze_dust_to_ingot')
.itemInputs('gtceu:black_bronze_dust')
.itemOutputs('gtceu:black_bronze_ingot')
.duration(200)
.EUt(16)
event.recipes.gtceu.electric_furnace('tfg:sterling_silver_dust_to_ingot')
.itemInputs('gtceu:sterling_silver_dust')
.itemOutputs('gtceu:sterling_silver_ingot')
.duration(300)
.EUt(20)
event.recipes.gtceu.electric_furnace('tfg:rose_gold_dust_to_ingot')
.itemInputs('gtceu:rose_gold_dust')
.itemOutputs('gtceu:rose_gold_ingot')
.duration(300)
.EUt(20)
//#endregion
//#region Рецепты, которые итерируются по всем материалам
@ -1465,8 +1530,11 @@ const registerGTCEURecipes = (event) => {
}
});
//#endregion
//#endregion
//#region fix more duping
// Fix LV recycling producing red/blue steel.
// Replace red steel outputs with 8x steel, delete blue steel outputs.
event.replaceOutput(

View file

@ -3262,8 +3262,8 @@ const registerMinecraftRecipes = (event) => {
//#region Glowstone
event.recipes.gtceu.mixer('gtceu:lv_glowstone')
.inputFluids(Fluid.of('gtceu:creosote', 1000), Fluid.of('gtceu:distilled_water', 1000))
.itemInputs('gtceu:stone_dust', 'minecraft:redstone', 'gtceu:sulfur_dust', 'gtceu:sodium_dust')
.inputFluids(Fluid.of('gtceu:creosote', 1000))
.itemInputs('gtceu:gold_dust', 'minecraft:redstone', 'gtceu:sulfur_dust', 'gtceu:coal_dust')
.itemOutputs('minecraft:glowstone_dust')
.circuit(32)
.duration(1200)

View file

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

View file

@ -24,7 +24,7 @@ const registerGTCEuMachines = (event) => {
)
.workableCasingRenderer('gtceu:block/casings/solid/machine_casing_solid_steel', 'gtceu:block/multiblock/implosion_compressor', false)
event.create('alternator', 'multiblock')
event.create('alternator', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('alternator')
.pattern(definition => FactoryBlockPattern.start()
@ -44,4 +44,163 @@ const registerGTCEuMachines = (event) => {
"gtceu:block/casings/solid/machine_casing_solid_steel",
"gtceu:block/multiblock/implosion_compressor", false
)
event.create('nether_dome', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('nether_dome')
.appearanceBlock(GTBlocks.CASING_PTFE_INERT)
.pattern(definition => FactoryBlockPattern.start()
.aisle(" CCCCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ")
.aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ")
.aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ")
.aisle("CBBBBBC", "F#####F", "F#####F", "F#####F", "FTTTTTF", "FQQQQQF")
.aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ")
.aisle("CBBBBBC", "Q#####Q", "Q#####Q", "Q#####Q", "QTTTTTQ", " QQQQQ ")
.aisle(" CCXCC ", " QGOGQ ", " QOPOQ ", " QOPOQ ", " QGOGQ ", " ")
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('B', Predicates.blocks('tfc:rock/magma/basalt').setMinGlobalLimited(6)
.or(Predicates.blocks('minecraft:netherrack').setMinGlobalLimited(10)))
.where('T', Predicates.blocks('minecraft:glowstone').setMinGlobalLimited(5)
.or(Predicates.blocks('minecraft:netherrack').setMinGlobalLimited(10)))
.where('O', Predicates.blocks('minecraft:obsidian'))
.where('F', Predicates.frames('black_steel'))
.where('Q', Predicates.blocks('ae2:quartz_glass'))
.where('G', Predicates.blocks('minecraft:gold_block')
.or(Predicates.blocks('tfc:rock/raw/basalt'))
.or(Predicates.blocks('tfc:rock/hardened/basalt'))
.or(Predicates.blocks('tfc:rock/bricks/basalt'))
.or(Predicates.blocks('tfc:rock/chiseled/basalt'))
.or(Predicates.blocks('minecraft:obsidian'))
.or(Predicates.blocks('minecraft:nether_bricks')))
.where('P', Predicates.blocks('minecraft:purple_stained_glass_pane'))
.where('C', Predicates.blocks(GTBlocks.CASING_PTFE_INERT.get()).setMinGlobalLimited(10)
.or(Predicates.autoAbilities(definition.getRecipeTypes()))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)))
.where('#', Predicates.air()
.or(Predicates.blocks('minecraft:netherrack'))
.or(Predicates.blocks('tfc:rock/magma/basalt'))
.or(Predicates.blocks('minecraft:glowstone'))
.or(Predicates.blocks('minecraft:nether_bricks')))
.where(' ', Predicates.any())
.build()
)
.shapeInfo(controller => MultiblockShapeInfo.builder()
.aisle(" CeCeC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ")
.aisle("CMMMNNC", "Q NQ", "Q Q", "Q Q", "QNTTNNQ", " QQQQQ ")
.aisle("iMMNNNf", "QR Q", "QR Q", "Q T Q", "QNTTTNQ", " QQQQQ ")
.aisle("CNMMMNC", "F NF", "F F", "F F", "FNNTNNF", "FQQQQQF")
.aisle("tNNNMNl", "Q NQ", "Q NQ", "Q Q", "QNNNNNQ", " QQQQQ ")
.aisle("CNNNNNC", "QN NNQ", "Q NQ", "Q NQ", "QNNNNNQ", " QQQQQ ")
.aisle(" mCXCC ", " QGOGQ ", " QOPOQ ", " QOPOQ ", " QGOGQ ", " ")
.where('X', controller, Direction.SOUTH)
.where('C', GTBlocks.CASING_PTFE_INERT.get())
.where('N', Block.getBlock('minecraft:netherrack'))
.where('M', Block.getBlock('tfc:rock/magma/basalt'))
.where('T', Block.getBlock('minecraft:glowstone'))
.where('Q', Block.getBlock('ae2:quartz_glass'))
.where('F', Block.getBlock('gtceu:black_steel_frame'))
.where('G', Block.getBlock('minecraft:gold_block'))
.where('O', Block.getBlock('minecraft:obsidian'))
.where('P', Block.getBlock('minecraft:purple_stained_glass_pane'))
.where('R', Block.getBlock('minecraft:nether_bricks'))
.where(' ', Block.getBlock('minecraft:air'))
.where('m', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH)
.where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST)
.where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.WEST)
.where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST)
.where('l', GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST)
.where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.MV], Direction.NORTH)
.build()
)
.workableCasingRenderer(
"gtceu:block/casings/solid/machine_casing_inert_ptfe",
"gtceu:block/machines/gas_collector", false
)
event.create('end_dome', 'multiblock')
.rotationState(RotationState.NON_Y_AXIS)
.recipeType('end_dome')
.appearanceBlock(GTBlocks.CASING_TITANIUM_STABLE)
.pattern(definition => FactoryBlockPattern.start()
.aisle(" CCCCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ")
.aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " QSSSQ ", " GGG ")
.aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " SNNNS ", " G G ")
.aisle("CBBBBBC", "FOOEOOF", "FOOOOOF", "FOOOOOF", "FOOOOOF", "FSNNNSF", " G G ")
.aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " SNNNS ", " G G ")
.aisle("CBBBBBC", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", "QOOOOOQ", " QSSSQ ", " GGG ")
.aisle(" CCXCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ")
.where('X', Predicates.controller(Predicates.blocks(definition.get())))
.where('B', Predicates.blocks('minecraft:end_stone').setMinGlobalLimited(20)
.or(Predicates.blocks('minecraft:black_concrete')))
.where('O', Predicates.blocks('minecraft:obsidian').setMinGlobalLimited(8)
.or(Predicates.air()))
.where('F', Predicates.frames('titanium'))
.where('Q', Predicates.blocks('ae2:quartz_glass'))
.where('E', Predicates.blocks('minecraft:dragon_egg'))
.where('S', Predicates.blocks('tfg:artificial_end_portal_frame'))
.where('N', Predicates.blocks('minecraft:black_concrete'))
.where('G', Predicates.blocks('tfc:ore/small_malachite')
.or(Predicates.blocks('tfc:ore/small_native_copper'))
.or(Predicates.blocks('tfc:ore/small_native_gold'))
.or(Predicates.blocks('tfc:ore/small_hematite'))
.or(Predicates.blocks('tfc:ore/small_native_silver'))
.or(Predicates.blocks('tfc:ore/small_cassiterite'))
.or(Predicates.blocks('tfc:ore/small_bismuthinite'))
.or(Predicates.blocks('tfc:ore/small_garnierite'))
.or(Predicates.blocks('tfc:ore/small_malachite'))
.or(Predicates.blocks('tfc:ore/small_magnetite'))
.or(Predicates.blocks('tfc:ore/small_limonite'))
.or(Predicates.blocks('tfc:ore/small_sphalerite'))
.or(Predicates.blocks('tfc:ore/small_tetrahedrite')))
.where('C', Predicates.blocks(GTBlocks.CASING_TITANIUM_STABLE.get()).setMinGlobalLimited(10)
.or(Predicates.autoAbilities(definition.getRecipeTypes()))
.or(Predicates.abilities(PartAbility.MAINTENANCE).setExactLimit(1)))
.where(' ', Predicates.any())
.build()
)
.shapeInfo(controller => MultiblockShapeInfo.builder()
.aisle(" CeCeC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ")
.aisle("CBBBBBC", "Q O Q", "Q O Q", "Q Q", "Q Q", " QSSSQ ", " 123 ")
.aisle("iBBBBBf", "QO OQ", "QO Q", "QO Q", "Q Q", " SNNNS ", " y 4 ")
.aisle("CBBBBBC", "F E F", "F F", "F F", "F F", "FSNNNSF", " z 5 ")
.aisle("tBBBBNl", "Q O Q", "Q O Q", "Q Q", "Q Q", " SNNNS ", " 0 6 ")
.aisle("CNBBNNC", "Q Q", "Q Q", "Q Q", "Q Q", " QSSSQ ", " 987 ")
.aisle(" mCXCC ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " QQFQQ ", " F ", " ")
.where('X', controller, Direction.SOUTH)
.where('C', GTBlocks.CASING_TITANIUM_STABLE.get())
.where('B', Block.getBlock('minecraft:end_stone'))
.where('N', Block.getBlock('minecraft:black_concrete'))
.where('O', Block.getBlock('minecraft:obsidian'))
.where('F', Block.getBlock('gtceu:titanium_frame'))
.where('Q', Block.getBlock('ae2:quartz_glass'))
.where(' ', Block.getBlock('minecraft:air'))
.where('S', Block.getBlock('tfg:artificial_end_portal_frame'))
.where('E', Block.getBlock('minecraft:dragon_egg'))
.where('1', Block.getBlock('tfc:ore/small_native_copper'))
.where('2', Block.getBlock('tfc:ore/small_native_gold'))
.where('3', Block.getBlock('tfc:ore/small_hematite'))
.where('4', Block.getBlock('tfc:ore/small_native_silver'))
.where('5', Block.getBlock('tfc:ore/small_cassiterite'))
.where('6', Block.getBlock('tfc:ore/small_bismuthinite'))
.where('7', Block.getBlock('tfc:ore/small_garnierite'))
.where('8', Block.getBlock('tfc:ore/small_malachite'))
.where('9', Block.getBlock('tfc:ore/small_magnetite'))
.where('0', Block.getBlock('tfc:ore/small_limonite'))
.where('z', Block.getBlock('tfc:ore/small_sphalerite'))
.where('y', Block.getBlock('tfc:ore/small_tetrahedrite'))
.where('m', GTMachines.MAINTENANCE_HATCH, Direction.SOUTH)
.where('i', GTMachines.ITEM_IMPORT_BUS[GTValues.ULV], Direction.WEST)
.where('t', GTMachines.ITEM_EXPORT_BUS[GTValues.ULV], Direction.WEST)
.where('f', GTMachines.FLUID_IMPORT_HATCH[GTValues.MV], Direction.EAST)
.where('l', GTMachines.FLUID_EXPORT_HATCH[GTValues.MV], Direction.EAST)
.where('e', GTMachines.ENERGY_INPUT_HATCH[GTValues.HV], Direction.NORTH)
.build()
)
.workableCasingRenderer(
"gtceu:block/casings/solid/machine_casing_stable_titanium",
"gtceu:block/machines/gas_collector", false
)
}

View file

@ -15,5 +15,22 @@ const registerGTCEuRecipeTypes = (event) => {
.setProgressBar(GuiTextures.PROGRESS_BAR_ARROW, FillDirection.LEFT_TO_RIGHT)
.setSound(GTSoundEntries.ARC)
.setMaxTooltips(6)
event.create('nether_dome')
.category('nether_dome')
.setEUIO('in')
.setMaxIOSize(1, 1, 1, 1)
.setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY)
.setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, FillDirection.LEFT_TO_RIGHT)
.setSound(GTSoundEntries.FIRE)
event.create('end_dome')
.category('end_dome')
.setEUIO('in')
.setMaxIOSize(1, 1, 1, 1)
.setSlotOverlay(false, false, GuiTextures.SOLIDIFIER_OVERLAY)
.setProgressBar(GuiTextures.PROGRESS_BAR_GAS_COLLECTOR, FillDirection.LEFT_TO_RIGHT)
.setSound(GTSoundEntries.FIRE)
}

View file

@ -0,0 +1,143 @@
// priority: 1
/**
* Событие регистрации предмет-тэгов.
*/
ServerEvents.tags('item', event => {
registerAE2ItemTags(event)
registerAsticorCartsItemTags(event)
registerChiselAndBitsItemTags(event)
registerComputerCraftItemTags(event)
registerCreateItemTags(event)
registerCreateAdditionsItemTags(event)
registerExtendedAE2ItemTags(event)
registerFirmaCivItemTags(event)
registerFirmaLifeItemTags(event)
registerFramedBlocksItemTags(event)
registerFTBQuestsItemTags(event)
registerGTCEUItemTags(event)
registerMegaCellsItemTags(event)
registerMinecraftItemTags(event)
registerMoreRedItemTags(event)
registerHotOrNotItemTags(event)
registerRailWaysItemTags(event)
registerSophisticatedBackpacksItemTags(event)
registerTFCItemTags(event)
})
/**
* Событие регистрации блок-тэгов.
*/
ServerEvents.tags('block', event => {
registerAE2BlockTags(event)
registerAsticorCartsBlockTags(event)
registerChiselAndBitsBlockTags(event)
registerComputerCraftBlockTags(event)
registerCreateBlockTags(event)
registerCreateAdditionsBlockTags(event)
registerExtendedAE2BlockTags(event)
registerFirmaCivBlockTags(event)
registerFirmaLifeBlockTags(event)
registerFramedBlocksBlockTags(event)
registerFTBQuestsBlockTags(event)
registerGTCEUBlockTags(event)
registerMegaCellsBlockTags(event)
registerMinecraftBlockTags(event)
registerMoreRedBlockTags(event)
registerHotOrNotBlockTags(event)
registerRailWaysBlockTags(event)
registerSophisticatedBackpacksBlockTags(event)
registerTFCBlockTags(event)
})
/**
* Событие регистрации жидкость-тэгов.
*/
ServerEvents.tags('fluid', event => {
registerCreateFluidTags(event)
registerCreateAdditionsFluidTags(event)
registerFirmaLifeBlockTags(event)
registerTFCFluidTags(event)
})
/**
* Событие регистрации тегов структур.
*/
ServerEvents.tags('worldgen/placed_feature', event => {
registerFirmaLifePlacedFeatures(event)
registerTFCPlacedFeatures(event)
})
/**
* Событие регистрации датапаков (Здесь можно регистрировать теги, данные, рецепты, общий метод короче).
* Срабатывает до инициализации рецептов, но после тегов.
*/
ServerEvents.highPriorityData(event => {
registerComputerCraftData(event)
})
/**
* Событие регистрации датапаков для TFC (Здесь можно регистрировать теги, данные, рецепты, общий метод короче).
* Срабатывает до инициализации рецептов, но после тегов.
*/
TFCEvents.data(event => {
registerTFCDataForGTCEU(event)
registerTFCDataForTFC(event)
registerTFCDataForTreeTap(event)
registerTFCDataForWaterFlasks(event)
})
/**
* Событие регистрации лут-тейблов.
* Срабатывает до инициализации рецептов, но после датапаков и тегов.
*/
LootJS.modifiers((event) => {
registerGTCEULoots(event)
});
/**
* Событие регистрации рудных жил.
* Не представляю когда срабатывает, но явно после тегов и датапаков.
*/
GTCEuServerEvents.oreVeins(event => {
// event.removeAll()
})
/**
* Событие регистрации рецептов.
* Срабатывает после инициализации датапаков и тегов.
*/
ServerEvents.recipes(event => {
registerAE2Recipes(event)
registerAsticorCartsRecipes(event)
registerAE2InsertExportCardRecipes(event)
registerAE2NetworkAnalyzerRecipes(event)
registerAE2WTLibRecipes(event)
registerChiselAndBitsRecipes(event)
registerComputerCraftRecipes(event)
registerCreateRecipes(event)
registerCreateAdditionsRecipes(event)
registerCreateConnectedRecipes(event)
registerExtendedAE2Recipes(event)
registerExposureRecipes(event)
registerEtchedRecipes(event)
registerFirmaCivRecipes(event)
registerFirmaLifeRecipes(event)
registerFramedBlocksRecipes(event)
registerFTBQuestsRecipes(event)
registerGTCEURecipes(event)
registerHandGliderRecipes(event)
registerHotOrNotRecipes(event)
registerMegaCellsRecipes(event)
registerMERequesterRecipes(event)
registerMinecraftRecipes(event)
registerMoreRedRecipes(event)
registerRailWaysRecipes(event)
registerSophisticatedBackpacksRecipes(event)
registerTfceaRecipes(event)
registerTFCRecipes(event)
registerTFCGroomingStationRecipes(event)
registerToolBeltRecipes(event)
registerTreeTapRecipes(event)
registerWaterFlasksRecipes(event)
})

View file

@ -12,8 +12,7 @@ StartupEvents.registry('item', event => {
*/
StartupEvents.registry('block', event => {
registerGTCEuBlocks(event)
registerTFGBlocks(event)
})
/**
@ -31,7 +30,9 @@ ItemEvents.modification(event => {})
/**
* Событие регистрации жидкостей.
*/
StartupEvents.registry('fluid', event => {})
StartupEvents.registry('fluid', event => {
registerTFGFluids(event)
})
/**
* Событие регистрации типов рецептов.
@ -52,4 +53,4 @@ GTCEuStartupEvents.registry('gtceu:machine', event => {
*/
// TFGStartupEvents.materialInfo(event => {
// registerGTCEuMaterialInfo(event)
// })
// })

View file

@ -83,7 +83,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:prismarine_shard',
// Эндстоун
'minecraft:end_stone',
//'minecraft:end_stone',
'minecraft:end_stone_bricks',
'minecraft:end_stone_brick_stairs',
'minecraft:end_stone_brick_slab',
@ -491,8 +491,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:burn_pottery_sherd',
// Шаблоны брони
'minecraft:wayfinder_armor_trim_smithing_template',
'minecraft:netherite_upgrade_smithing_template',
/*'minecraft:wayfinder_armor_trim_smithing_template',
'minecraft:dune_armor_trim_smithing_template',
'minecraft:snout_armor_trim_smithing_template',
'minecraft:shaper_armor_trim_smithing_template',
@ -507,7 +506,8 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:raiser_armor_trim_smithing_template',
'minecraft:wild_armor_trim_smithing_template',
'minecraft:sentry_armor_trim_smithing_template',
'minecraft:ward_armor_trim_smithing_template',
'minecraft:ward_armor_trim_smithing_template',*/
'minecraft:netherite_upgrade_smithing_template',
// Свечи
'minecraft:candle',
@ -666,7 +666,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:honey_bottle',
'minecraft:honeycomb_block',
'minecraft:honey_block',
'minecraft:chorus_fruit',
//'minecraft:chorus_fruit',
'minecraft:popped_chorus_fruit',
'minecraft:purpur_pillar',
'minecraft:purpur_block',
@ -700,7 +700,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:mushroom_stem',
'minecraft:brown_mushroom_block',
'minecraft:red_mushroom_block',
'minecraft:dragon_egg',
//'minecraft:dragon_egg',
'minecraft:end_portal_frame',
'minecraft:mushroom_stew',
'minecraft:structure_void',
@ -766,8 +766,8 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:polished_blackstone_brick_stairs',
'minecraft:polished_blackstone_brick_slab',
'minecraft:polished_blackstone_brick_wall',
'minecraft:netherrack',
'minecraft:nether_bricks',
//'minecraft:netherrack',
//'minecraft:nether_bricks',
'minecraft:cracked_nether_bricks',
'minecraft:nether_brick_stairs',
'minecraft:nether_brick_slab',
@ -815,7 +815,7 @@ global.MINECRAFT_DISABLED_ITEMS = [
'minecraft:wither_skeleton_skull',
'minecraft:weeping_vines',
'minecraft:crimson_roots',
'minecraft:nether_brick',
//'minecraft:nether_brick',
'minecraft:nether_wart',
'minecraft:twisting_vines',
'minecraft:warped_fungus',

View file

@ -0,0 +1,11 @@
const registerTFGBlocks = (event) => {
event.create('tfg:artificial_end_portal_frame')
.stoneSoundType()
.tagBlock('minecraft:mineable/pickaxe')
.requiresTool(true)
.fullBlock(true)
.item(item => {
item.modelJson({ parent: 'minecraft:block/end_portal_frame' })
})
}

View file

@ -0,0 +1,28 @@
const registerTFGFluids = (event) => {
event.create('tfg:nether_slurry')
.thickTexture(0x6b281b)
.bucketColor(0x6b281b)
.temperature(1000)
.luminosity(7)
.noBlock()
event.create('tfg:enriched_nether_slurry')
.thickTexture(0x99594d)
.bucketColor(0x99594d)
.temperature(1000)
.luminosity(7)
.noBlock()
event.create('tfg:ender_slurry')
.thickTexture(0x1b5c51)
.bucketColor(0x1b5c51)
.luminosity(2)
.noBlock()
event.create('tfg:enriched_ender_slurry')
.thickTexture(0x3a9178)
.bucketColor(0x3a9178)
.luminosity(2)
.noBlock()
}