* some flax stuff

* linen stuff

* flax line stuff

* flax again

* rapseed wild crop changes

* flax worldgen

* revert grooming station update

* more flax stuff

* trying to fix stuff

one doesn't work

* recipes and lang

* Update CHANGELOG.md

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>

* fixes

---------

Signed-off-by: GameStar <56610486+BlueBoat29@users.noreply.github.com>
This commit is contained in:
GameStar 2025-08-31 13:14:14 -05:00 committed by GitHub
parent da3a541439
commit 020d4f9018
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
68 changed files with 393 additions and 37 deletions

View file

@ -10,9 +10,11 @@
- Sewing Tables now use a knife instead of shears @BlueBoat29
- Create Logistics Jars now hold 8000 mB each instead of just 1000 mB (#1707) @Ghoulcel
- Added a way to keep your space suit with you on death, so you can more safely set your spawn on other planets (#1710) @BlueBoat29
- Added Flax as a cold-weather alternative to jute and a plant-based option for light colored cloth @BlueBoat29
### Bug fixes
- Fixed tongs getting stuck in ovens, and now you can use them the same way you'd previously use a Peel @Pyritie
- Allowed powders, gears, plates, double plates, springs, and small springs to be heated (#1727) @Redeix
- Fixed rapeseed wild block model @BlueBoat29
### Translation updates
- Chinese (simplified) @jmecn & @CN059
- Ukranian @MetEnBouldry

View file

@ -0,0 +1,34 @@
{
"variants": {
"age=0": {
"model": "tfg:block/crop/flax_age_0"
},
"age=1": {
"model": "tfg:block/crop/flax_age_1"
},
"age=2": {
"model": "tfg:block/crop/flax_age_2"
},
"age=3": {
"model": "tfg:block/crop/flax_age_3"
},
"age=4,part=bottom": {
"model": "tfg:block/crop/flax_age_4_bottom"
},
"age=5,part=bottom": {
"model": "tfg:block/crop/flax_age_5_bottom"
},
"age=6,part=bottom": {
"model": "tfg:block/crop/flax_age_6_bottom"
},
"age=4,part=top": {
"model": "tfg:block/crop/flax_age_4_top"
},
"age=5,part=top": {
"model": "tfg:block/crop/flax_age_5_top"
},
"age=6,part=top": {
"model": "tfg:block/crop/flax_age_6_top"
}
}
}

View file

@ -0,0 +1,13 @@
{
"variants": {
"mature=false": {
"model": "tfg:block/crop/flax_dead_young"
},
"mature=true,part=top": {
"model": "tfg:block/crop/flax_dead_top"
},
"mature=true,part=bottom": {
"model": "tfg:block/crop/flax_dead_bottom"
}
}
}

View file

@ -0,0 +1,16 @@
{
"variants": {
"part=top,mature=true": {
"model": "tfg:block/crop/flax_wild_top"
},
"part=top,mature=false": {
"model": "tfg:block/crop/flax_dead_top"
},
"part=bottom,mature=true": {
"model": "tfg:block/crop/flax_wild_bottom"
},
"part=bottom,mature=false": {
"model": "tfg:block/crop/flax_dead_bottom"
}
}
}

View file

@ -1,13 +1,13 @@
{
"variants": {
"part=top,mature=true": {
"model": "tfg:block/crop/rapeseed_age_5_top"
"model": "tfg:block/crop/rapeseed_wild_top"
},
"part=top,mature=false": {
"model": "tfg:block/crop/rapeseed_dead_top"
},
"part=bottom,mature=true": {
"model": "tfg:block/crop/rapeseed_age_5_bottom"
"model": "tfg:block/crop/rapeseed_wild_bottom"
},
"part=bottom,mature=false": {
"model": "tfg:block/crop/rapeseed_dead_bottom"

View file

@ -293,6 +293,9 @@
"block.tfg.rapeseed": "Canola",
"block.tfg.rapeseed_wild": "Wild Canola",
"block.tfg.rapeseed_dead": "Dead Canola",
"block.tfg.flax": "Flax",
"block.tfg.flax_wild": "Wild Flax",
"block.tfg.flax_dead": "Dead Flax",
"block.tfg.casings.machine_casing_iron_desh": "Desh Machine Casing",
"block.tfg.casings.machine_casing_stainless_evaporation": "Stainless Evaporation Machine Casing",
"block.tfg.casings.machine_casing_vacuum_engine_intake": "Vacuum Engine Intake Machine Casing",
@ -622,6 +625,13 @@
"item.tfg.electric_extendo_grip": "Electric Extendo Grip",
"item.tfg.treated_chipboard_composite": "Treated Chipboard Composite",
"item.tfg.high_density_treated_fiberboard": "Medium Density Treated Fiberboard",
"item.tfg.flax_seeds": "Flax Seeds",
"item.tfg.flax_product": "Flax Stems",
"item.tfg.flax_line": "Flax Line Fibers",
"item.tfg.flax_tow": "Flax Tow Fibers",
"item.tfg.flax_waste": "Scraped Flax",
"item.tfg.linen_thread": "Linen Thread",
"item.tfg.linen_cloth": "Linen Cloth",
"material.tfg.latex": "Latex",
"material.tfg.vulcanized_latex": "Vulcanized Latex",
"material.tfg.fluix": "Fluix",

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_0"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_1"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_2"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_3"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_4_bottom"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_4_top"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_5_bottom"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_5_top"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_6_bottom"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_age_6_top"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_dead_bottom"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_dead_top"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/flax_dead_young"}}

View file

@ -0,0 +1,6 @@
{
"parent": "tfc:block/wild_crop/crop",
"textures": {
"crop": "tfg:block/crop/flax_age_5_bottom"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "tfc:block/wild_crop/crop",
"textures": {
"crop": "tfg:block/crop/flax_age_5_bottom"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/crop",
"textures": {
"crop": "tfg:block/crop/flax_age_5_top"
}
}

View file

@ -1 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/rapeseed_age_2"}}
{"parent":"tfc:block/wild_crop/crop","textures":{"crop":"tfg:block/crop/rapeseed_age_2"}}

View file

@ -0,0 +1 @@
{"parent":"tfc:block/wild_crop/crop","textures":{"crop":"tfg:block/crop/rapeseed_age_5_bottom"}}

View file

@ -0,0 +1 @@
{"parent":"block/crop","textures":{"crop":"tfg:block/crop/rapeseed_age_5_top"}}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfg:item/flax_line"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfg:item/flax_product"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfg:item/flax_tow"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfg:item/flax_waste"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "tfg:block/crop/flax_wild"
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "tfg:item/linen_cloth"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "tfg:item/linen_thread"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "tfg:item/washed_flax"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 725 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 851 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 963 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,004 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 651 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 824 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 814 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 617 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 875 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 857 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 810 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 745 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 B

View file

@ -0,0 +1,40 @@
{
"type": "minecraft:random_patch",
"config": {
"feature": {
"feature": {
"type": "tfc:tall_wild_crop",
"config": {
"block": "tfg:flax_wild"
}
},
"placement": [
{
"type": "minecraft:heightmap",
"heightmap": "WORLD_SURFACE_WG"
},
{
"type": "block_predicate_filter",
"predicate": {
"type": "tfc:replaceable"
}
},
{
"type": "block_predicate_filter",
"predicate": {
"type": "would_survive",
"state": {
"Name": "tfg:flax_wild",
"Properties": {
"part": "bottom"
}
}
}
}
]
},
"tries": 20,
"xz_spread": 16,
"y_spread": 1
}
}

View file

@ -0,0 +1,20 @@
{
"feature": "tfg:earth/flax_patch",
"placement": [
{
"type": "minecraft:rarity_filter",
"chance": 55
},
{
"type": "minecraft:in_square"
},
{
"type": "tfc:climate",
"min_temperature": -5,
"max_temperature": 27,
"min_rainfall": 175,
"max_rainfall": 475,
"max_forest": "sparse"
}
]
}

View file

@ -104,6 +104,8 @@ const registerFirmaCivRecipes = (event) => {
//#endregion
// #region More rope
event.replaceInput({ output: 'firmaciv:rope_coil'}, 'tfc:jute_fiber', '#tfg:burlap_fiber')
event.shaped('firmaciv:rope_coil', [
'A ',
'AB',

View file

@ -1171,6 +1171,8 @@ const registerGTCEURecipes = (event) => {
//#region GT Facades
event.remove({ id: 'gtceu:crafting/facade_cover'})
event.shapeless(Item.of('gtceu:facade_cover', 8, '{Facade: {Count:1b,id:"minecraft:stone"}}'), ['3x #forge:plates/iron', "#tfg:whitelisted/facades"])
.modifyResult((craftingGrid, result) => {
let blockID = craftingGrid.find(Ingredient.of("#tfg:whitelisted/facades")).id

View file

@ -780,7 +780,7 @@ const registerMinecraftRecipes = (event) => {
' BA',
'A '
], {
A: 'tfc:jute_fiber',
A: '#tfg:burlap_fiber',
B: '#forge:rings'
}).id('tfc:crafting/lead')

View file

@ -59,7 +59,7 @@ const registerSNSRecipes = (event) => {
'BCB',
'DBE'
], {
A: 'tfc:jute_fiber',
A: '#tfg:burlap_fiber',
B: 'sns:leather_strip',
C: 'sns:unfinished_leather_sack',
D: 'minecraft:name_tag',
@ -68,7 +68,7 @@ const registerSNSRecipes = (event) => {
)
).id('sns:crafting/leather_sack')
event.recipes.tfc.damage_inputs_shaped_crafting(
/*event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('sns:leather_sack', [
' A ',
'BCB',
@ -81,7 +81,7 @@ const registerSNSRecipes = (event) => {
E: 'tfc:bone_needle'
}
)
).id('sns:crafting/leather_sack_coil')
).id('sns:crafting/leather_sack_coil')*/
event.recipes.tfc.damage_inputs_shaped_crafting(
event.shaped('sns:ore_sack', [
@ -161,7 +161,7 @@ const registerSNSRecipes = (event) => {
itemAsHead: 'gtceu:small_pipe_extruder_mold',
results: [{ item: '2x sns:buckle' }],
processingTime: 80 * global.VINTAGE_IMPROVEMENTS_DURATION_MULTIPLIER
}).id('sns:vi/curving/buckle')
}).id('sns:vi/curving/buckle2')
event.shaped('sns:pack_frame', [
'AAA',
@ -177,11 +177,11 @@ const registerSNSRecipes = (event) => {
'BBB',
'AAA'
], {
A: 'tfc:jute_fiber',
A: '#tfg:burlap_fiber',
B: '#forge:string'
}).id('sns:shaped/reinforced_fiber')
/*
event.shaped('2x sns:reinforced_fiber', [
' A ',
'BBB',
@ -191,10 +191,10 @@ const registerSNSRecipes = (event) => {
B: '#forge:string',
C: '#forge:tools/knives'
}).id('sns:shaped/reinforced_fiber_rope')
}).id('sns:shaped/reinforced_fiber_rope')*/
event.recipes.gtceu.assembler('sns:reinforced_fiber')
.itemInputs('2x tfc:jute_fiber', '#forge:string')
.itemInputs('2x #tfg:burlap_fiber', '#forge:string')
.itemOutputs('sns:reinforced_fiber')
.duration(40)
.EUt(GTValues.VA[GTValues.LV])
@ -215,7 +215,6 @@ const registerSNSRecipes = (event) => {
.duration(120)
.EUt(GTValues.VA[GTValues.LV])
event.recipes.gtceu.bender('sns:horseshoe_steel_electric_only')
.itemInputs('#forge:rods/steel')
.itemOutputs('sns:metal/horseshoe/steel')

View file

@ -332,6 +332,7 @@ const registerTFCItemTags = (event) => {
})
event.add('tfc:any_knapping', '#tfc:pit_kiln_straw')
event.add('tfg:burlap_fiber', 'tfc:jute_fiber')
}
const registerTFCBlockTags = (event) => {
@ -603,6 +604,7 @@ const registerTFCPlacedFeatures = (event) => {
// Crops
event.add('tfc:feature/crops', 'tfg:earth/sunflower_patch')
event.add('tfc:feature/crops', 'tfg:earth/rapeseed_patch')
event.add('tfc:feature/crops', 'tfg:earth/flax_patch')
// Other decoration
event.add('tfc:in_biome/underground_decoration', 'tfg:glow_lichen')

View file

@ -258,6 +258,8 @@ const registerTFGFoodData = (event) => {
food.decayModifier(1.5)
})
// high-tech food
@ -429,6 +431,15 @@ const registerTFGCropRanges = (event) => {
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 => {
@ -523,6 +534,24 @@ const registerTFGFLPlanters = (event) => {
],
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',

View file

@ -1367,6 +1367,60 @@ function registerTFGMiscellaneousRecipes(event) {
B: 'beneath:warped_straw'
}).id('tfg:shaped_large_nest_warped')
//#endregion
//#region flax stuff
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(
'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.damage_inputs_shapeless_crafting(
event.shapeless('4x tfg:linen_thread', [
'tfg:flax_line',
'tfc:spindle'
]).id('tfg:shapeless/linen_thread')
)
//#region 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)
}

View file

@ -7,9 +7,11 @@ const registerTFGItemTags = (event) => {
//crop stuff
event.add('tfc:seeds', 'tfg:sunflower_seeds')
event.add('tfc:seeds', 'tfg:rapeseed_seeds')
event.add('tfc:seeds', 'tfg:flax_seeds')
event.add('tfc:foods', 'tfg:roasted_sunflower_seeds')
event.add('tfc:compost_greens_high', 'tfg:rapeseed_product')
event.add('tfc:compost_greens_high', 'tfg:sunflower_product')
event.add('tfc:compost_greens_high', 'tfg:flax_product')
event.add('tfg:water_breathing_ingredients', 'tfg:rapeseed_product')
event.add('tfg:night_vision_ingredients', 'tfg:sunflower_product')
@ -101,6 +103,7 @@ const registerTFGItemTags = (event) => {
event.add('tfc:sewing_dark_cloth', 'tfg:polycaprolactam_fabric')
event.add('forge:string', 'tfg:phantom_thread')
event.add('forge:string', 'tfg:polycaprolactam_string')
event.add('forge:string', 'firmalife:pineapple_yarn')
//#endregion
// #region Medicines
@ -448,6 +451,9 @@ const registerTFGBlockTags = (event) => {
event.add('tfc:crops', 'tfg:sunflower')
event.add('tfc:mineable_with_sharp_tool', 'tfg:sunflower')
event.add('tfc:crops', 'tfg:flax')
event.add('tfc:mineable_with_sharp_tool', 'tfg:flax')
// #region Nether blocks
event.add('minecraft:nether_carver_replaceables', 'tfg:rock/hardened_deepslate')

View file

@ -1035,6 +1035,8 @@ global.TFC_GREENHOUSE_VEGETABLE_RECIPE_COMPONENTS = [
{ 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' }
];
global.TFC_GREENHOUSE_BERRY_RECIPE_COMPONENTS = [

View file

@ -59,6 +59,39 @@ const registerTFGCrops = (event) => {
.tagBoth('tfc:wild_crops')
.tagBlock('minecraft:mineable/hoe')
.tagItem('c:hidden_from_recipe_viewers')
event.create('tfg:flax', 'tfc:double_crop')
.translationKey('block.tfg.flax')
.soundType('crop')
.nutrient('nitrogen')
.stages(5)
.doubleStages(3)
.hardness(0.4)
.growthModifier(1.2)
.expiryModifier(1.2)
.tagBlock('minecraft:mineable/hoe')
.productItem(product => {
product.texture('tfg:item/flax_product')
product.tag('tfc:scrapable')
})
.seedItem(seed => {
seed.texture('tfg:item/flax_seed')
})
.deadBlock(dead => {
dead.hardness(0.2)
dead.soundType('crop')
dead.tagBlock('minecraft:mineable/hoe')
})
event.create('tfg:flax_wild', 'tfc:wild_crop')
.type('double')
.soundType('crop')
.seeds('tfg:flax_seeds')
.food('tfg:flax_product')
.hardness(0.2)
.tagBoth('tfc:wild_crops')
.tagBlock('minecraft:mineable/hoe')
.tagItem('c:hidden_from_recipe_viewers')
// Mars Crops

View file

@ -401,4 +401,18 @@ const registerTFGItems = (event) => {
.tag('tfc:sweetener')
//#endregion
//#region Flax Stuff
event.create('tfg:flax_waste')
.tag('tfc:scrapable')
event.create('tfg:flax_tow')
.tag('tfg:burlap_fiber')
.tag('tfc:compost_browns')
event.create('tfg:flax_line')
.tag('tfc:compost_browns_low')
event.create('tfg:linen_thread')
.tag('forge:string')
event.create('tfg:linen_cloth')
.tag('forge:cloth')
.tag('tfc:sewing_light_cloth')
}

View file

@ -12709,6 +12709,29 @@
"modrinth": "2yZ8ZSeO"
},
"files": [
{
"type": "curseforge",
"file_name": "tfcgroomer-1.20.1-0.1.4.jar",
"mc_versions": [
"1.20.1"
],
"loaders": [
"forge"
],
"release_type": "release",
"url": "https://edge.forgecdn.net/files/6118/92/tfcgroomer-1.20.1-0.1.4.jar",
"id": "6118092",
"parent_id": "1003785",
"hashes": {
"sha1": "e1bb7e932f900cee6be0bf5faf3fc77111488865",
"md5": "e4f19ca0413c9716cb86a3b50ae27a36"
},
"required_dependencies": [
"302973"
],
"size": 134178,
"date_published": "2025-01-23T23:02:18.440Z"
},
{
"type": "modrinth",
"file_name": "tfcgroomer-1.20.1-0.1.4.jar",
@ -12729,29 +12752,6 @@
"required_dependencies": [],
"size": 134178,
"date_published": "2025-07-27T17:29:15.479048Z"
},
{
"type": "curseforge",
"file_name": "tfcgroomer-1.20.1-0.2.0.jar",
"mc_versions": [
"1.20.1"
],
"loaders": [
"forge"
],
"release_type": "release",
"url": "https://edge.forgecdn.net/files/6935/736/tfcgroomer-1.20.1-0.2.0.jar",
"id": "6935736",
"parent_id": "1003785",
"hashes": {
"sha1": "ad89216cf3689907af1c28b133bae6e26f749941",
"md5": "2f48a69948c27210a6c791c6c338124d"
},
"required_dependencies": [
"302973"
],
"size": 152509,
"date_published": "2025-08-27T22:46:58.430Z"
}
]
},