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

@ -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