
FirmaLifeHardCore
A mod that completely overhauls Firmalife's cellar and greenhouse mechanics — no Climate Station required. Enclosed spaces are auto-detected via BFS floodfill with dynamic AABB tracking. Any insulating blocks form a functional cellar or greenhouse.
Links
Tags
Creators
Details
0.3.1-beta
Compatibility
Required content
Changes
0.3.1-beta
Fixes
- Pump refill is now dimension-scoped:
tickAll(Level)only fills pumps in the ticking level.LevelTickEvent.Postfires for every loadedServerLevel, so the same pump was refilled once per dimension every tick (4× intended rate with multiple loaded dimensions). - Pump refill cycle 20 → 80 ticks (matching sprinkler watering cadence): at the 15 rpm design balance point the injection amount is now
25.0 → 25 mB/80tickwith zero(int)loss, exactly matching 5 sprinklers' 25 mB/80tick consumption (previously 6.28 → 6, 4% short, so the balance point was unreachable). - Sprinkler
searchForFluidnow honors thedrainflag in pipe mode: probe calls (drain=false, e.g. tfcfertigation's per-tick fertilizing cycle check) no longer drain water from the pump tank — only water-level and pressure checks run. Actual watering (drain=true) is unchanged. Previously every probe call executed a realdrain(sprinklerWaterUse, EXECUTE), draining the pump tank every tick per sprinkler. - Reinforced dirt conversion no longer blocks beam placement:
ReinforcedDirtHandleronly takes overUseItemOnBlockEventwhen conversion is guaranteed to succeed — clicking a non-reinforceable block or holding too few beams now falls back to normal support beam placement. - Conversion decision moved before event cancellation so client and server sides agree on whether to take over;
setBlockfailure now breaks the conversion loop instead of silently continuing.
Optional dependencies
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:diur6Jqx:ncoN0O3x"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:diur6Jqx:ncoN0O3x"
}
