The big green PR (#2694)

* blocks

* more textures

* more textures more textures

* blocks

* more textures

* more textures more textures

* blocks

* more textures

* more textures more textures

* blocks

* more textures

* more textures more textures

* firmalife gh stuff

* chloroplasts and brick regex

* gh recipes

* pisciculture fishery

* I am going insane

* more casings = more gooder

* rotten voiding cover

* greenhouse glory

* Is this it chat

* not needed

Signed-off-by: Redeix <redeix.m@gmail.com>

* missed in conflicts

Signed-off-by: Redeix <redeix.m@gmail.com>

* consumerism

* re-add tag import

* remove unused object map

* id normalizer function

---------

Signed-off-by: Redeix <redeix.m@gmail.com>
This commit is contained in:
Redeix 2026-01-10 19:30:46 -06:00 committed by GitHub
parent 3899512635
commit 900e1de8e9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
340 changed files with 3654 additions and 798 deletions

View file

@ -101,13 +101,12 @@ global.FIRMALIFE_JAMS = [
]
global.FIRMALIFE_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = [
{ input: 'firmalife:plant/cocoa_sapling', fluid_amount: 8000, output: '3x firmalife:food/cocoa_beans', name: 'cocoa_beans' },
{ input: 'firmalife:plant/fig_sapling', fluid_amount: 8000, output: '3x firmalife:food/fig', name: 'fig' }
];
global.FIRMALIFE_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [
{ input: 'firmalife:plant/pineapple_bush', fluid_amount: 6000, output: '3x firmalife:food/pineapple', name: 'pineapple' },
{ input: 'firmalife:plant/nightshade_bush', fluid_amount: 6000, output: '3x firmalife:food/nightshade_berry', name: 'nightshade' }
{ input: 'firmalife:plant/cocoa_sapling', output: 'firmalife:food/cocoa_beans'},
{ input: 'firmalife:plant/fig_sapling', output: 'firmalife:food/fig'},
{ input: 'firmalife:plant/pineapple_bush', output: 'firmalife:food/pineapple'},
{ input: 'firmalife:plant/nightshade_bush', output: 'firmalife:food/nightshade_berry'},
{ input: 'firmalife:seeds/red_grape', output: 'firmalife:food/red_grapes'},
{ input: 'firmalife:seeds/white_grape', output: 'firmalife:food/white_grapes'}
];
global.FIRMALIFE_COOKING_RECIPE_COMPONENTS = [

View file

@ -433,3 +433,69 @@ global.GTCEU_SUPERCONDUCTORS = /** @type {const} */ ([
{ name: "ruthenium_trinium_americium_neutronate", materialId: "RutheniumTriniumAmericiumNeutronate" }
]);
//#endregion
//#region Concrete Blocks
/**
* Concrete block groups keyed by type [type, ids].
*
* @global
* @type {Record<string, (string[] & { name: string })>}
*/
global.GTCEU_CONCRETE_BLOCKS = (() => {
/**
* Attach a name to an array of concrete block item IDs.
* @param {string} name
* @param {string[]} items
* @returns {string[] & { name: string }}
*/
function group(name, items) {
items.name = name;
return items;
}
return {
light_concrete: group('light_concrete', [
'gtceu:light_concrete',
'gtceu:light_concrete_cobblestone',
'gtceu:mossy_light_concrete_cobblestone',
'gtceu:polished_light_concrete',
'gtceu:light_concrete_bricks',
'gtceu:cracked_light_concrete_bricks',
'gtceu:mossy_light_concrete_bricks',
'gtceu:chiseled_light_concrete',
'gtceu:light_concrete_tile',
'gtceu:light_concrete_small_tile',
'gtceu:light_concrete_windmill_a',
'gtceu:light_concrete_windmill_b',
'gtceu:small_light_concrete_bricks',
'gtceu:square_light_concrete_bricks'
]),
dark_concrete: group('dark_concrete', [
'gtceu:dark_concrete',
'gtceu:dark_concrete_cobblestone',
'gtceu:mossy_dark_concrete_cobblestone',
'gtceu:polished_dark_concrete',
'gtceu:dark_concrete_bricks',
'gtceu:cracked_dark_concrete_bricks',
'gtceu:mossy_dark_concrete_bricks',
'gtceu:chiseled_dark_concrete',
'gtceu:dark_concrete_tile',
'gtceu:dark_concrete_small_tile',
'gtceu:dark_concrete_windmill_a',
'gtceu:dark_concrete_windmill_b',
'gtceu:small_dark_concrete_bricks',
'gtceu:square_dark_concrete_bricks'
]),
titanium_concrete: group('titanium_concrete', [
'tfg:titanium_concrete',
'tfg:polished_titanium_concrete',
'tfg:titanium_concrete_tile',
'tfg:titanium_concrete_tile_small',
'tfg:titanium_concrete_bricks',
'tfg:titanium_concrete_bricks_small',
'tfg:titanium_concrete_bricks_square'
])
};
})();
//#endregion

View file

@ -3,6 +3,7 @@
const registerGTCEuMachines = (event) => {
const CoilWorkableElectricMultiblockMachine = Java.loadClass("com.gregtechceu.gtceu.api.machine.multiblock.CoilWorkableElectricMultiblockMachine")
const $Tags = Java.loadClass("dev.latvian.mods.kubejs.util.Tags")
//#region Large Solar Panels
@ -87,31 +88,7 @@ const registerGTCEuMachines = (event) => {
.aisle(" S S ", " S S ", " S S ", " CCCCCCC ", " CC CC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " S S ", " S S ", " CCCCCCC ", " ", " ", " ", " ", " ", " ", " ", " ", " ")
.where("A", Predicates.blocks('gtceu:light_concrete')
.or(Predicates.blocks('gtceu:polished_light_concrete'))
.or(Predicates.blocks('gtceu:light_concrete_bricks'))
.or(Predicates.blocks('gtceu:cracked_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:mossy_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:chiseled_light_concrete'))
.or(Predicates.blocks('gtceu:light_concrete_tile'))
.or(Predicates.blocks('gtceu:light_concrete_small_tile'))
.or(Predicates.blocks('gtceu:light_concrete_windmill_a'))
.or(Predicates.blocks('gtceu:light_concrete_windmill_b'))
.or(Predicates.blocks('gtceu:small_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:square_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:dark_concrete'))
.or(Predicates.blocks('gtceu:polished_dark_concrete'))
.or(Predicates.blocks('gtceu:dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:cracked_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:mossy_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:chiseled_dark_concrete'))
.or(Predicates.blocks('gtceu:dark_concrete_tile'))
.or(Predicates.blocks('gtceu:dark_concrete_small_tile'))
.or(Predicates.blocks('gtceu:dark_concrete_windmill_a'))
.or(Predicates.blocks('gtceu:dark_concrete_windmill_b'))
.or(Predicates.blocks('gtceu:small_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:square_dark_concrete_bricks'))
)
.where("A", Predicates.blockTag($Tags.block("tfg:gtceu_concrete_blocks")))
.where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.TungstenSteel)))
.where("S", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.Aluminium)))
.where("C", Predicates.blocks("tfg:casings/machine_casing_green_solar_panel"))
@ -173,31 +150,7 @@ const registerGTCEuMachines = (event) => {
.aisle(" A A ", " A A ", " S S ", " S S ", " S S ", " CCCCCCC ", " CCC CCC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " CC CC ", " ", " ", " ", " ", " ", " ", " ")
.aisle(" A A ", " A A ", " A A ", " S S ", " S S ", " S S ", " CCCCCCCCC ", " ", " ", " ", " ", " ", " ", " ")
.where("A", Predicates.blocks('gtceu:light_concrete')
.or(Predicates.blocks('gtceu:polished_light_concrete'))
.or(Predicates.blocks('gtceu:light_concrete_bricks'))
.or(Predicates.blocks('gtceu:cracked_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:mossy_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:chiseled_light_concrete'))
.or(Predicates.blocks('gtceu:light_concrete_tile'))
.or(Predicates.blocks('gtceu:light_concrete_small_tile'))
.or(Predicates.blocks('gtceu:light_concrete_windmill_a'))
.or(Predicates.blocks('gtceu:light_concrete_windmill_b'))
.or(Predicates.blocks('gtceu:small_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:square_light_concrete_bricks'))
.or(Predicates.blocks('gtceu:dark_concrete'))
.or(Predicates.blocks('gtceu:polished_dark_concrete'))
.or(Predicates.blocks('gtceu:dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:cracked_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:mossy_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:chiseled_dark_concrete'))
.or(Predicates.blocks('gtceu:dark_concrete_tile'))
.or(Predicates.blocks('gtceu:dark_concrete_small_tile'))
.or(Predicates.blocks('gtceu:dark_concrete_windmill_a'))
.or(Predicates.blocks('gtceu:dark_concrete_windmill_b'))
.or(Predicates.blocks('gtceu:small_dark_concrete_bricks'))
.or(Predicates.blocks('gtceu:square_dark_concrete_bricks'))
)
.where("A", Predicates.blockTag($Tags.block("tfg:gtceu_concrete_blocks")))
.where("B", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.RhodiumPlatedPalladium)))
.where("S", Predicates.blocks(ChemicalHelper.getBlock(TagPrefix.frameGt, GTMaterials.StainlessSteel)))
.where("C", Predicates.blocks("tfg:casings/machine_casing_red_solar_panel"))

View file

@ -22,6 +22,7 @@ ItemEvents.modification(event => {
registerGTCEuItemModifications(event)
registerMinecraftItemModifications(event)
registerSNSItemModifications(event)
registerTFGItemModifications(event)
})
StartupEvents.registry('fluid', event => {

View file

@ -787,58 +787,58 @@ global.TFC_JAMS = /** @type {const} */ ([
]);
global.TFC_GREENHOUSE_FRUIT_RECIPE_COMPONENTS = /** @type {const} */ ([
{ input: "tfc:plant/cherry_sapling", fluid_amount: 8000, output: "32x tfc:food/cherry", name: "cherry" },
{ input: "tfc:plant/green_apple_sapling", fluid_amount: 8000, output: "32x tfc:food/green_apple", name: "green_apple" },
{ input: "tfc:plant/lemon_sapling", fluid_amount: 8000, output: "32x tfc:food/lemon", name: "lemon" },
{ input: "tfc:plant/olive_sapling", fluid_amount: 8000, output: "32x tfc:food/olive", name: "olive" },
{ input: "tfc:plant/orange_sapling", fluid_amount: 8000, output: "32x tfc:food/orange", name: "orange" },
{ input: "tfc:plant/peach_sapling", fluid_amount: 8000, output: "32x tfc:food/peach", name: "peach" },
{ input: "tfc:plant/plum_sapling", fluid_amount: 8000, output: "32x tfc:food/plum", name: "plum" },
{ input: "tfc:plant/red_apple_sapling", fluid_amount: 8000, output: "32x tfc:food/red_apple", name: "red_apple" },
{ input: "tfc:plant/banana_sapling", fluid_amount: 8000, output: "32x tfc:food/banana", name: "banana" }
{ input: "tfc:plant/cherry_sapling", output: "tfc:food/cherry"},
{ input: "tfc:plant/green_apple_sapling", output: "tfc:food/green_apple"},
{ input: "tfc:plant/lemon_sapling", output: "tfc:food/lemon"},
{ input: "tfc:plant/olive_sapling", output: "tfc:food/olive"},
{ input: "tfc:plant/orange_sapling", output: "tfc:food/orange"},
{ input: "tfc:plant/peach_sapling", output: "tfc:food/peach"},
{ input: "tfc:plant/plum_sapling", output: "tfc:food/plum"},
{ input: "tfc:plant/red_apple_sapling", output: "tfc:food/red_apple"},
{ input: "tfc:plant/banana_sapling", output: "tfc:food/banana"}
]);
global.TFC_GREENHOUSE_VEGETABLE_RECIPE_COMPONENTS = /** @type {const} */ ([
{ input: "8x tfc:seeds/barley", fluid_amount: 4000, output: "24x tfc:food/barley", name: "barley" },
{ input: "8x tfc:seeds/oat", fluid_amount: 4000, output: "24x tfc:food/oat", name: "oat" },
{ input: "8x tfc:seeds/rye", fluid_amount: 4000, output: "24x tfc:food/rye", name: "rye" },
{ input: "8x tfc:seeds/maize", fluid_amount: 4000, output: "24x tfc:food/maize", name: "maize" },
{ input: "8x tfc:seeds/wheat", fluid_amount: 4000, output: "24x tfc:food/wheat", name: "wheat" },
{ input: "8x tfc:seeds/rice", fluid_amount: 4000, output: "24x tfc:food/rice", name: "rice" },
{ input: "8x tfc:seeds/beet", fluid_amount: 4000, output: "24x tfc:food/beet", name: "beet" },
{ input: "8x tfc:seeds/cabbage", fluid_amount: 4000, output: "24x tfc:food/cabbage", name: "cabbage" },
{ input: "8x tfc:seeds/carrot", fluid_amount: 4000, output: "24x tfc:food/carrot", name: "carrot" },
{ input: "8x tfc:seeds/green_bean", fluid_amount: 4000, output: "24x tfc:food/green_bean", name: "green_bean" },
{ input: "8x tfc:seeds/garlic", fluid_amount: 4000, output: "24x tfc:food/garlic", name: "garlic" },
{ input: "8x tfc:seeds/potato", fluid_amount: 4000, output: "24x tfc:food/potato", name: "potato" },
{ input: "8x tfc:seeds/onion", fluid_amount: 4000, output: "24x tfc:food/onion", name: "onion" },
{ input: "8x tfc:seeds/soybean", fluid_amount: 4000, output: "24x tfc:food/soybean", name: "soybean" },
{ input: "8x tfc:seeds/squash", fluid_amount: 4000, output: "24x tfc:food/squash", name: "squash" },
{ input: "8x tfc:seeds/sugarcane", fluid_amount: 4000, output: "24x tfc:food/sugarcane", name: "sugarcane" },
{ input: "8x tfc:seeds/tomato", fluid_amount: 4000, output: "24x tfc:food/tomato", name: "tomato" },
{ input: "8x tfc:seeds/jute", fluid_amount: 4000, output: "24x tfc:jute", name: "jute" },
{ input: "8x tfc:seeds/papyrus", fluid_amount: 4000, output: "24x tfc:papyrus", name: "papyrus" },
{ input: "8x tfc:seeds/pumpkin", fluid_amount: 4000, output: "24x tfc:pumpkin", name: "pumpkin" },
{ input: "8x tfc:seeds/melon", fluid_amount: 4000, output: "24x tfc:melon", name: "melon" },
{ input: "8x tfc:seeds/red_bell_pepper", fluid_amount: 4000, output: "24x tfc:food/red_bell_pepper", name: "red_bell_pepper" },
{ input: "8x tfc:seeds/yellow_bell_pepper", fluid_amount: 4000, output: "24x tfc:food/yellow_bell_pepper", name: "yellow_bell_pepper" },
{ input: "8x tfg:sunflower_seeds", fluid_amount: 4000, output: "24x tfg:sunflower_product", name: "sunflower" },
{ input: "8x tfg:rapeseed_seeds", fluid_amount: 4000, output: "24x tfg:rapeseed_product", name: "rapeseed" },
{ input: "8x tfg:flax_seeds", fluid_amount: 4000, output: "24x tfg:flax_product", name: "flax" }
{ input: "tfc:seeds/barley", output: "tfc:food/barley"},
{ input: "tfc:seeds/oat", output: "tfc:food/oat"},
{ input: "tfc:seeds/rye", output: "tfc:food/rye"},
{ input: "tfc:seeds/maize", output: "tfc:food/maize"},
{ input: "tfc:seeds/wheat", output: "tfc:food/wheat"},
{ input: "tfc:seeds/rice", output: "tfc:food/rice"},
{ input: "tfc:seeds/beet", output: "tfc:food/beet"},
{ input: "tfc:seeds/cabbage", output: "tfc:food/cabbage"},
{ input: "tfc:seeds/carrot", output: "tfc:food/carrot"},
{ input: "tfc:seeds/green_bean", output: "tfc:food/green_bean"},
{ input: "tfc:seeds/garlic", output: "tfc:food/garlic"},
{ input: "tfc:seeds/potato", output: "tfc:food/potato"},
{ input: "tfc:seeds/onion", output: "tfc:food/onion"},
{ input: "tfc:seeds/soybean", output: "tfc:food/soybean"},
{ input: "tfc:seeds/squash", output: "tfc:food/squash"},
{ input: "tfc:seeds/sugarcane", output: "tfc:food/sugarcane"},
{ input: "tfc:seeds/tomato", output: "tfc:food/tomato"},
{ input: "tfc:seeds/jute", output: "tfc:jute"},
{ input: "tfc:seeds/papyrus", output: "tfc:papyrus"},
{ input: "tfc:seeds/pumpkin", output: "tfc:pumpkin"},
{ input: "tfc:seeds/melon", output: "tfc:melon"},
{ input: "tfc:seeds/red_bell_pepper", output: "tfc:food/red_bell_pepper"},
{ input: "tfc:seeds/yellow_bell_pepper", output: "tfc:food/yellow_bell_pepper"},
{ input: "tfg:sunflower_seeds", output: "tfg:sunflower_product"},
{ input: "tfg:rapeseed_seeds", output: "tfg:rapeseed_product"},
{ input: "tfg:flax_seeds", output: "tfg:flax_product"}
]);
global.TFC_GREENHOUSE_BERRY_RECIPE_COMPONENTS = /** @type {const} */ ([
{ input: "tfc:plant/snowberry_bush", fluid_amount: 6000, output: "3x tfc:food/snowberry", name: "snowberry" },
{ input: "tfc:plant/bunchberry_bush", fluid_amount: 6000, output: "3x tfc:food/bunchberry", name: "bunchberry" },
{ input: "tfc:plant/gooseberry_bush", fluid_amount: 6000, output: "3x tfc:food/gooseberry", name: "gooseberry" },
{ input: "tfc:plant/cloudberry_bush", fluid_amount: 6000, output: "3x tfc:food/cloudberry", name: "cloudberry" },
{ input: "tfc:plant/strawberry_bush", fluid_amount: 6000, output: "3x tfc:food/strawberry", name: "strawberry" },
{ input: "tfc:plant/wintergreen_berry_bush", fluid_amount: 6000, output: "3x tfc:food/wintergreen_berry", name: "wintergreen_berry" },
{ input: "tfc:plant/blackberry_bush", fluid_amount: 6000, output: "3x tfc:food/blackberry", name: "blackberry" },
{ input: "tfc:plant/raspberry_bush", fluid_amount: 6000, output: "3x tfc:food/raspberry", name: "raspberry" },
{ input: "tfc:plant/blueberry_bush", fluid_amount: 6000, output: "3x tfc:food/blueberry", name: "blueberry" },
{ input: "tfc:plant/elderberry_bush", fluid_amount: 6000, output: "3x tfc:food/elderberry", name: "elderberry" },
{ input: "tfc:plant/cranberry_bush", fluid_amount: 6000, output: "3x tfc:food/cranberry", name: "cranberry" }
{ input: "tfc:plant/snowberry_bush", output: "tfc:food/snowberry"},
{ input: "tfc:plant/bunchberry_bush", output: "tfc:food/bunchberry"},
{ input: "tfc:plant/gooseberry_bush", output: "tfc:food/gooseberry"},
{ input: "tfc:plant/cloudberry_bush", output: "tfc:food/cloudberry"},
{ input: "tfc:plant/strawberry_bush", output: "tfc:food/strawberry"},
{ input: "tfc:plant/wintergreen_berry_bush", output: "tfc:food/wintergreen_berry"},
{ input: "tfc:plant/blackberry_bush", output: "tfc:food/blackberry"},
{ input: "tfc:plant/raspberry_bush", output: "tfc:food/raspberry"},
{ input: "tfc:plant/blueberry_bush", output: "tfc:food/blueberry"},
{ input: "tfc:plant/elderberry_bush", output: "tfc:food/elderberry"},
{ input: "tfc:plant/cranberry_bush", output: "tfc:food/cranberry"}
]);
global.TFC_MILKS = /** @type {const} */ ([

View file

@ -0,0 +1,7 @@
"use strict";
function registerTFGAquaponicsItems(event) {
event.create('tfg:flora_pellets')
.tag('tfc:compost_greens_low')
};

View file

@ -0,0 +1,34 @@
// priority: 0
"use strict";
const registerTFGAquaponicsMaterials = (event) => {
/* event.create('mysterious_ooze')
.liquid(new GTFluidBuilder().temperature(293))
.gas(new GTFluidBuilder().state(GTFluidState.GAS).customStill().temperature(293))
.color(0x500bbf)
.fluidTemp(69420)
.dust()
.cableProperties(GTValues.V[GTValues.LV], 69, 0, true) // Voltage, Amperage, EU loss, Is Superconductor.
.gem(2, 4000)
.element(GTElements.C)
.ore(2, 3)
.color(0x7D2DDB)
.iconSet(GTMaterialIconSet.LIGNITE)
.ingot()
.components('1x andesite', '1x iron')
.color(0x839689)
.iconSet(GTMaterialIconSet.DULL)
.flags(GTMaterialFlags.GENERATE_PLATE, GTMaterialFlags.GENERATE_GEAR, GTMaterialFlags.GENERATE_SMALL_GEAR)
*/
// Nitrate Fluids
event.create('tfg:nitrate_rich_water')
.liquid(new GTFluidBuilder().customStill().temperature(310))
.flags(GTMaterialFlags.DISABLE_DECOMPOSITION);
event.create('tfg:nitrate_rich_semiheavy_ammoniacal_water')
.liquid(new GTFluidBuilder().customStill().temperature(310))
.flags(GTMaterialFlags.DISABLE_DECOMPOSITION);
}

View file

@ -112,4 +112,11 @@ const registerTFGBiolineMaterials = (event) => {
.flags(GTMaterialFlags.DISABLE_DECOMPOSITION)
//#endregion
//#region Green Stuff
event.create('tfg:chloroplasts')
.liquid(new GTFluidBuilder().customStill().temperature(310))
.flags(GTMaterialFlags.DISABLE_DECOMPOSITION)
//#endregion
}

View file

@ -10,6 +10,7 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_light_gray')
})
@ -20,14 +21,16 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_light_gray')
event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active')
.simple('tfg:block/casings/machine_casing_vacuum_engine_intake')
event.create('tfg:casings/machine_casing_vacuum_engine_intake', 'gtceu:active')
.model('tfg:block/casings/machine_casing_vacuum_engine_intake')
.translationKey('block.tfg.casings.machine_casing_vacuum_engine_intake')
.soundType('metal')
.resistance(6).hardness(5)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.requiresTool(true)
.mapColor('color_light_gray')
@ -38,6 +41,7 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_red')
event.create('tfg:casings/machine_casing_bioculture_glass')
@ -47,6 +51,8 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfc:mineable_with_glass_saw')
.tagBoth('tfg:casings')
.mapColor('color_orange')
.defaultTranslucent()
@ -57,11 +63,12 @@ function registerTFGCasingBlocks(event) {
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('color_light_gray')
.activeOffset(1.6, 2, 1.6)
.activeVelocity(0, 0, 0)
.activeParticle('minecraft:landing_lava')
.activeCount(10)
.activeForced(false)
.activeParticles(a => a
.range(1.6, 2, 1.6)
.velocity(0, 0, 0)
.particle('minecraft:landing_lava')
.count(10)
.forced(false))
event.create('tfg:casings/bioculture_rotor_secondary', 'gtceu:active')
.translationKey('block.tfg.casings.bioculture_rotor_secondary')
@ -78,6 +85,7 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_light_gray')
event.create('tfg:casings/heat_pipe_casing')
@ -87,6 +95,7 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_black')
event.create('tfg:sample_rack', 'tfg:active_cardinal')
@ -103,6 +112,7 @@ function registerTFGCasingBlocks(event) {
.soundType('copper')
.hardness(5)
.resistance(6)
.lightLevel(0.8)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('color_light_gray')
.notSolid()
@ -114,8 +124,160 @@ function registerTFGCasingBlocks(event) {
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_brown')
event.create('tfg:cultivation_monitor', 'tfg:active_cardinal')
.soundType('copper')
.hardness(5)
.resistance(6)
.lightLevel(0.8)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('color_light_gray')
.notSolid()
.noCollision()
.renderType('cutout')
.opaque(false);
event.create('tfg:egh_planter', 'tfg:active_particle_emitter')
.translationKey('block.tfg.egh_planter')
.soundType('copper')
.hardness(5)
.resistance(6)
.notSolid()
.activeLight(12)
.inactiveLight(0)
.renderType('cutout')
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('grass')
.activeParticles(a => a
.range(0.2, 0.0, 0.2)
.velocity(0.0, 0.0, 0.0)
.position(0.5, -0.1, 0.5)
.count(1)
.particle('minecraft:dripping_water')
.forced(false))
.hasTicker(true)
.emitDelay(200)
.tagBlock('tfc:tree_grows_on')
.tagBlock('tfc:bush_plantable_on')
.tagBlock('tfc:wild_crop_grows_on')
.tagBlock('tfc:spreading_fruit_grows_on')
.tagBlock('tfc:grass_plantable_on')
.tagBlock('tfc:creeping_plantable_on')
.tagBlock('minecraft:mushroom_grow_block')
.tagBlock('minecraft:bamboo_plantable_on')
.tagBoth('tfc:farmland');
event.create('tfg:grow_light', 'tfg:active_particle_emitter')
.translationKey('block.tfg.grow_light')
.soundType('copper')
.hardness(5)
.resistance(6)
.notSolid()
.box(0, 12, 0, 16, 16, 16, true)
.activeLight(12)
.inactiveLight(0)
.renderType('cutout')
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('grass')
.activeParticles(a => a
.range(0.2, 0.0, 0.2)
.velocity(0.0, 0.0, 0.0)
.position(0.5, 0.5, 0.5)
.count(1)
.particle('minecraft:dripping_water')
.forced(false))
.hasTicker(true)
.emitDelay(200);
event.create('tfg:pisciculture_core', 'tfg:active_particle_emitter')
.translationKey('block.tfg.pisciculture_core')
.soundType('copper')
.hardness(5)
.resistance(6)
.activeLight(12)
.inactiveLight(0)
.renderType('cutout')
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.activeParticles(a => a
.particle('tfg:fish_school')
.position(0.5, 1.5, 0.5)
.range(0.0, 2.0, 0.0)
.velocity(0.0, 0.0, 0.0)
.count(5)
.forced(false))
.activeParticles(a => a
.particle('minecraft:current_down')
.position(0.0, 3.8, 0.0)
.range(5.0, 0.0, 5.0)
.velocity(0.0, 0.1, 0.0)
.count(5)
.forced(false))
.activeParticles(a => a
.particle('minecraft:current_down')
.position(0.0, 3.8, 0.0)
.range(0.5, 0.0, 0.5)
.velocity(0.0, 0.1, 0.0)
.count(5)
.forced(false))
.hasTicker(true)
.emitDelay(20);
event.create('tfg:casings/machine_casing_egh', 'gtceu:active')
.translationKey('block.tfg.casings.machine_casing_egh')
.soundType('metal')
.hardness(5)
.resistance(6)
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.tagBoth('tfg:casings')
.mapColor('color_light_gray');
/**
* @type {string[]} - Tier names of greenhouse casings.
*/
const greenhouse_tiers = ['treated_wood', 'copper', 'iron', 'stainless'];
greenhouse_tiers.forEach(tier => {
for (let i = 0; i <= 4; i++) {
let r = event.create(`tfg:casings/greenhouse/${tier}_greenhouse_casing_${i}`)
.translationKey(`block.tfg.casings.greenhouse.${tier}_greenhouse_casing_${i}`)
.hardness(0.3)
.resistance(0.3)
.soundType('glass')
.requiresTool(true)
.tagBoth('tfg:casings')
.tagBoth('tfc:mineable_with_glass_saw')
.tagBoth('firmalife:greenhouse')
.tagBoth('firmalife:greenhouse_full_walls')
.tagBoth('tfg:all_greenhouse_casings')
// Exception of shame V
if (tier === 'stainless') {
r.tagBoth(`firmalife:${tier}_steel_greenhouse`)
r.tagBoth(`tfg:${tier}_steel_greenhouse_casings`)
r.tagBlock(`firmalife:all_${tier}_steel_greenhouse`)
} else {
r.tagBoth(`firmalife:${tier}_greenhouse`)
r.tagBoth(`tfg:${tier}_greenhouse_casings`)
r.tagBlock(`firmalife:all_${tier}_greenhouse`)
};
if (tier === 'treated_wood') {
r.tagBlock('minecraft:mineable/axe')
} else {
r.tagBlock('minecraft:mineable/pickaxe')
};
if (i > 2) {
r.defaultTranslucent()
} else {
r.defaultCutout()
};
};
});
event.create('tfg:casings/test_casing')
.soundType('copper')
.hardness(5)

View file

@ -355,3 +355,25 @@ global.SPICES = [
{ plant: 'firmalife:plant/oregano', product: 'tfg:spice/oregano_leaves' },
{ plant: 'firmalife:plant/pimento', product: 'tfg:spice/allspice' }
];
/**
* @typedef {Object} FishIndex
* @property {string} id - Fish mob ID.
* @property {string} item - Fish Item ID.
* @property {string} parent - Bucket of Fish Item ID.
* @property {string|null} dimension - Dimension ID (null for any).
*/
/** @type {FishIndex[]} - Index of fish mobs for pisciculture */
global.FISH_INDEX = [
{ id: 'tfc:bluegill', item: 'tfc:food/bluegill', parent: 'tfc:bucket/bluegill', dimension: null },
{ id: 'tfc:crappie', item: 'tfc:food/crappie', parent: 'tfc:bucket/crappie', dimension: null },
{ id: 'tfc:lake_trout', item: 'tfc:food/lake_trout', parent: 'tfc:bucket/lake_trout', dimension: null },
{ id: 'tfc:largemouth_bass', item: 'tfc:food/largemouth_bass', parent: 'tfc:bucket/largemouth_bass', dimension: null },
{ id: 'tfc:rainbow_trout', item: 'tfc:food/rainbow_trout', parent: 'tfc:bucket/rainbow_trout', dimension: null },
{ id: 'tfc:salmon', item: 'tfc:food/salmon', parent: 'tfc:bucket/salmon', dimension: null },
{ id: 'tfc:smallmouth_bass', item: 'tfc:food/smallmouth_bass', parent: 'tfc:bucket/smallmouth_bass', dimension: null },
{ id: 'tfc:cod', item: 'tfc:food/cod', parent: 'tfc:bucket/cod', dimension: null },
{ id: 'tfc:tropical_fish', item: 'tfc:food/tropical_fish', parent: 'tfc:bucket/tropical_fish', dimension: null },
{ id: 'tfc:pufferfish', item: 'minecraft:pufferfish', parent: 'tfc:bucket/pufferfish', dimension: null },
{ id: 'wan_ancient_beasts:toxlacanth', item: 'wan_ancient_beasts:toxlacanth', parent: 'wan_ancient_beasts:toxlacanth_bucket', dimension: 'ad_astra:mars' }
];

View file

@ -18,6 +18,7 @@ const registerTFGItems = (event) => {
registerTFGBiotechItems(event);
registerTFGWeaponItems(event);
registerTFGRockItems(event);
registerTFGAquaponicsItems(event);
event.create('tfg:terra_firma_greg')
.tag('c:hidden_from_recipe_viewers')

View file

@ -126,8 +126,8 @@ function registerTFGWorldGenMarsDecoBlocks(event) {
leaves.tagBlock('minecraft:replaceable')
leaves.noDynamicTinting()
leaves.models((modelType, generator) => {
if (modelType.layers != 8) {
generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height);
if (modelType.layers !== 8) {
generator.parent(`tfc:block/groundcover/fallen_leaves_height${modelType.height}`);
generator.texture("all", "betterend:block/cave_bush_leaves_1");
} else {
generator.parent("betterend:block/cave_bush_01");
@ -151,8 +151,8 @@ function registerTFGWorldGenMarsDecoBlocks(event) {
leaves.tagBlock('minecraft:replaceable')
leaves.noDynamicTinting()
leaves.models((modelType, generator) => {
if (modelType.layers != 8) {
generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height);
if (modelType.layers !== 8) {
generator.parent(`tfc:block/groundcover/fallen_leaves_height${modelType.height}`);
generator.texture("all", "betterend:block/lucernia_leaves_1");
} else {
generator.parent("betterend:block/lucernia_leaves_1");
@ -240,11 +240,12 @@ function registerTFGWorldGenMarsDecoBlocks(event) {
.resistance(6)
// makes it invisible on xaeros, so people can't use it to find the deposits :)
.mapColor('none')
.particleOffset(0.3, 1.5, 0.3)
.particleVelocity(0, 0.05, 0)
.particle('electric_spark')
.particleCount(2)
.particleForced(false)
.particles(a => a
.range(0.3, 1.5, 0.3)
.velocity(0, 0.05, 0)
.particle('electric_spark')
.count(2)
.forced(false))
.fullBlock(true)
.opaque(true)
}

View file

@ -30,6 +30,7 @@ const registerTFGMaterials = (event) => {
registerTFGMarsMaterials(event);
registerTFGVenusMaterials(event);
registerTFGEuropaMaterials(event);
registerTFGAquaponicsMaterials(event);
// Refrigerants

View file

@ -0,0 +1,11 @@
"use strict";
function registerTFGItemModifications(event) {
event.modify('tfg:fish_roe', item => {
item.foodProperties = food => {
food.hunger(2).saturation(2)
};
});
};

View file

@ -51,12 +51,13 @@ function registerTFGNuclearBlocks(event) {
.tagBlock('gtceu:mineable/pickaxe_or_wrench')
.mapColor('color_black')
.speedFactor(1.1)
.activeOffset(2, 2, 2)
.activeVelocity(0.0, 0.0, 0.0)
.activeParticle('tfg:cooling_steam')
.activeBase(0.0, 13.5, 0.0)
.activeCount(2)
.activeForced(false)
.activeParticles(a => a
.range(2, 2, 2)
.velocity(0.0, 0.0, 0.0)
.particle('tfg:cooling_steam')
.position(0.0, 13.5, 0.0)
.count(2)
.forced(false))
.hasTicker(true)
.emitDelay(4);

View file

@ -8,11 +8,12 @@ function registerTFGWorldGenVenusDecoBlocks(event) {
.box(3, 0, 3, 13, 10, 13)
.resistance(6)
.hardness(1.5)
.particleOffset(0.3, 1, 0.3)
.particleVelocity(0, 0.1, 0)
.particle('minecraft:campfire_signal_smoke')
.particleCount(5)
.particleForced(true)
.particles(a => a
.range(0.3, 1, 0.3)
.velocity(0, 0.1, 0)
.particle('minecraft:campfire_signal_smoke')
.count(5)
.forced(true));
event.create('tfg:geyser_source_small', 'tfg:particle_emitter_decoration')
.soundType('dripstone_block')
@ -20,11 +21,12 @@ function registerTFGWorldGenVenusDecoBlocks(event) {
.box(3, 0, 3, 13, 10, 13)
.resistance(6)
.hardness(1.5)
.particleOffset(0.3, 1, 0.3)
.particleVelocity(0, 0.05, 0)
.particle('minecraft:campfire_cosy_smoke')
.particleCount(2)
.particleForced(false)
.particles(a => a
.range(0.3, 1, 0.3)
.velocity(0, 0.05, 0)
.particle('minecraft:campfire_cosy_smoke')
.count(2)
.forced(false));
event.create('tfg:smoker_source', 'tfg:particle_emitter_decoration')
.soundType('dripstone_block')
@ -32,11 +34,12 @@ function registerTFGWorldGenVenusDecoBlocks(event) {
.box(3, 0, 3, 13, 10, 13)
.resistance(6)
.hardness(1.5)
.particleOffset(0.3, 1, 0.3)
.particleVelocity(0, 0.05, 0)
.particle('minecraft:campfire_cosy_smoke')
.particleCount(1)
.particleForced(false)
.particles(a => a
.range(0.3, 1, 0.3)
.velocity(0, 0.05, 0)
.particle('minecraft:campfire_cosy_smoke')
.count(1)
.forced(false));
event.create('tfg:lava_source', 'tfg:particle_emitter_decoration')
.soundType('dripstone_block')
@ -44,11 +47,12 @@ function registerTFGWorldGenVenusDecoBlocks(event) {
.box(3, 0, 3, 13, 10, 13)
.resistance(6)
.hardness(1.5)
.particleOffset(0.3, 0.5, 0.3)
.particleVelocity(0, 0, 0)
.particle('lava')
.particleCount(1)
.particleForced(false)
.particles(a => a
.range(0.3, 0.5, 0.3)
.velocity(0, 0, 0)
.particle('lava')
.count(1)
.forced(false));
//Geyserite
event.create('tfg:rock/raw/geyserite', 'tfc:raw_rock')
@ -208,11 +212,12 @@ function registerTFGWorldGenVenusDecoBlocks(event) {
.fullBlock(false)
.box(1, 0, 1, 15, 16, 15)
.notSolid()
.particleOffset(0.3, 1, 0.3)
.particleVelocity(0, 0.1, 0)
.particle('minecraft:large_smoke')
.particleCount(2)
.particleForced(true)
.particles(a => a
.range(0.3, 1, 0.3)
.velocity(0, 0.1, 0)
.particle('minecraft:large_smoke')
.count(2)
.forced(false));
event.create('betterend:tube_worm', 'tfg:attached_decorative_plant')
.soundType('nether_wart')

View file

@ -12,7 +12,9 @@ function registerTFGVenusMaterials(event) {
.ingot()
.flags(
GTMaterialFlags.FORCE_GENERATE_BLOCK,
GTMaterialFlags.GENERATE_PLATE
GTMaterialFlags.GENERATE_PLATE,
GTMaterialFlags.GENERATE_ROD,
GTMaterialFlags.GENERATE_FRAME
)
//#region Bromine Line