A NeoForge 1.21.1 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.
Enclosed spaces are detected automatically when wall/container blocks are placed or broken. Every solid wall block contributes a thermal resistance value based on block tags:
| Tier | Resistance | Typical Blocks |
|---|---|---|
| HIGH | 0.75 | Sealed bricks |
| MEDIUM | 0.55 | Stones, ore blocks, dirt, grass, stone bricks, packed mud, planks, logs, wattle, thatch, mud bricks, reinforced soil |
| LOW | 0.25 | Glass (blocks/panes), storage blocks (metal, coal, etc.), sandstone, irrigation tank |
Doors count as medium resistance. Double doors grant a 4× multiplier.
Cellar effective temperature: T_indoor = baseTemp + (T_outdoor − baseTemp) × (1 − avgR), where baseTemp = 4°C. Lower effective temp → better preservation (SHELVED ≤ 16°C, SHELVED_2 ≤ 8°C, SHELVED_3 ≤ 0°C).
Greenhouse detection: roof blocks with interior (or interior obstacles) below → roof. Glass roof ≥ 50% visible to sky → greenhouse. baseTemp = 4 + 40 × canopyRatio.
Temperature API: Both Climate.getInstantTemperature() and Climate.getAverageTemperature() are intercepted. Instant returns the effective temperature (weather-dependent), average returns the indoor annual mean (stable microclimate, used by bushes/fruit trees for climate suitability).
| Container | Mechanism |
|---|---|
| Food Shelf | 3-tier SHELVED trait via ClimateReceiver |
| Hanger | 3-tier HUNG trait via ClimateReceiver |
| Large Vessel | SHELVED applied on seal, removed on unseal |
All container blocks are auto-detected via #firmalifehardcore:cellar_containers tag.
Thermometers display greenhouse/cellar temperature via redstone signal (server-side) and Jade tooltip ("Indoor Temp"). Outdoor thermometers show TFC's native tooltip.
The Firmalife irrigation system (Pumping Station, Irrigation Tank, Sprinklers) has been upgraded with real fluid mechanics.
Pumping Station — Now a NeoForge IFluidHandler container:
(int) loss)Sprinklers — Real water consumption:
searchForFluid honors its drain flag: probe calls (drain=false, e.g. other mods' periodic checks) never consume pump water — only water-level and pressure are checkedPumpY + Tanks + RPM − SprinklerY ≥ 0 — gravity + tank head + rotation determines reachIrrigation Tank — Added to LOW thermal insulation tag. Tank in wall acts as pipe passthrough; BFS traverses tanks as pipe nodes.
Jade — Sprinklers show greenhouse/cellar status via custom Jade provider. Pump fluid level shown via NeoForge's native fluid tooltip.
8 soil variants × visual states based on axis_x/axis_z connection properties. Created with support beam (main hand) + hammer (offhand), right-clicking reinforceable ground. Sneak+right-click extends downward up to 3.
Visual system — 6 texture types per variant:
/flhc cellar info — Cellar/greenhouse debug info
/flhc cellar recalc — Force rescan (permission 4)
/flhc cellar list — List all tracked spaces
/flhc cellar clear — Clear all tracked spaces (permission 4)
Registers a separate FirmaLife HardCore category in TFC's field guide (sortnum=11, after Firmalife), with thermometer icon. Covers the cellar/greenhouse overhaul mechanics.
config/firmalifehardcore-server.toml: maxHorizontalSpan (default 24), maxVerticalSpan (8), resistance values, preservation tier thresholds, greenhouse canopy multiplier/ratio, double door multiplier, tick limits.
./gradlew build
# JAR → build/libs/firmalifehardcore-neoforge-0.3.1-beta.jar
MIT
一个 NeoForge 1.21.1 Mod,彻底重写 Firmalife 的地窖和温室机制——不再需要气候站。封闭空间通过 BFS floodfill + AABB 动态追踪自动检测,任意保温方块围成的空间即可生效。
放置/破坏墙体或容器方块时自动扫描。每个墙体方块根据 block tag 提供热阻值:
| 等级 | 热阻 | 典型方块 |
|---|---|---|
| HIGH | 0.75 | 密封砖 |
| MEDIUM | 0.55 | 岩石或矿石、泥土类(耕地和草径不算)、各种砖、木头类 |
| LOW | 0.25 | 玻璃(块/板)、金属块煤块等、砂岩、灌溉水箱 |
门算中等热阻,双门 4 倍加成。
地窖:地窖基准温度 = 4 °C,室内温度 = 室外温度 - (室外温度-基准) × 平均热阻。温度越低保鲜越好(≤16°C SHELVED / ≤8°C SHELVED_2 / ≤0°C SHELVED_3)。
温室:屋顶玻璃屋顶 ≥ 50% 可见天空 → 温室。温室基准 = 4 + 40 × 棚顶比例(°C)。
温度 API:getInstantTemperature() 和 getAverageTemperature() 均被拦截。即时返回有效温度(随天气波动),年均返回室内基准温度(稳定微气候,供灌木/果树判气候适宜度)。
| 容器 | 机制 |
|---|---|
| 食品架 | 三级 SHELVED trait(ClimateReceiver) |
| 风干架 | 三级 HUNG trait(ClimateReceiver) |
| 大缸 | 密封时附加 SHELVED,解封时清除 |
通过 #firmalifehardcore:cellar_containers tag 自动识别。
红石信号(服务端)+ Jade tooltip("室内温度")显示温室/地窖有效温度。户外自动回退 TFC 原生显示。
全面升级 Firmalife 灌溉系统(水泵站、灌溉水箱、洒水器),引入真实流体机制。
水泵站 — 现在是 NeoForge IFluidHandler 流体容器:
洒水器 — 真实水消耗:
searchForFluid 尊重 drain 参数:探测调用(drain=false,如其他 mod 的周期检查)只检查水位与压力,绝不消耗水泵水水泵Y + 水箱数 + RPM − 洒水器Y ≥ 0——重力+水箱+转速决定水能送到的高度灌溉水箱 — 加入 LOW 热阻标签。墙内水箱充当管道穿墙接口;BFS 将水箱视为管道节点穿越。
Jade — 洒水器显示温室/地窖状态(自定义 Jade 提供者)。水泵水位由 NeoForge 原生流体 tooltip 显示。
8 种土壤变体,axis_x/axis_z 属性控制视觉。主手支撑梁 + 副手锤右键地面,潜行向下最多 3 格。
6 种纹理:端头(居中/贴边)、纵裂纹、纵横裂纹、横裂纹。两端连接支撑梁自动变横梁,断开自动恢复。
/flhc cellar info — 地窖/温室诊断信息
/flhc cellar recalc — 强制重算(4 级权限)
/flhc cellar list — 列出所有已追踪空间
/flhc cellar clear — 清空所有已追踪空间(4 级权限)
在 TFC 手册中注册独立 FirmaLife HardCore 分类(sortnum=11,排在 Firmalife 之后),温度计图标,介绍新版地窖/温室机制。
config/firmalifehardcore-server.toml:maxHorizontalSpan(默认 24)、maxVerticalSpan(8)、热阻值、保鲜温度阈值、温室棚顶参数、双门倍率、tick 处理上限。
./gradlew build
# JAR → build/libs/firmalifehardcore-neoforge-0.3.1-beta.jar
MIT