温度监控器
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | IC2NuclearControl:blockNuclearControlMain,metadata 0 |
| 常量 | BlockDamages.DAMAGE_THERMAL_MONITOR = 0(BlockDamages.java:7) |
| 子方块类 | blocks/subblocks/ThermalMonitor.java |
| TileEntity | TileEntityThermo,注册名 IC2Thermo(CommonProxy.java:32) |
| 中文名 | 温度监控器(zh_CN.lang:35) |
| 需依附方块 | 是(ThermalMonitor.java:46-48) |
| 碰撞箱 | 0.0625,0,0.0625 → 0.9375,0.4375,0.9375(ThermalMonitor.java:17) |
| 贴图 | nuclearcontrol:thermalMonitor/{back,sidesHor,sidesVert,faceRed,faceGreen,faceGray}(ThermalMonitor.java:72-77) |
| GUI | GuiIC2Thermo + ContainerEmpty(ThermalMonitor.java:61-68) |
功能
温度监控器是 Nuclear Control 的核心方块,用于监测 IC2 核反应堆(含反应堆舱)的热量并以三种可视状态 + 红石输出告警。它必须贴附在方块上(isSolidBlockRequired() 为 true),朝向由扳手或放置视角决定。
状态检测逻辑在 TileEntityThermo.checkStatus()(TileEntityThermo.java:208-244):
- 先在自身坐标寻找反应堆舱(
NuclearHelper.getReactorChamberAroundCoord);找到则用舱内反应堆 - 否则在自身坐标寻找反应堆(
getReactorAroundCoord) - 两者都没有时,改为读取朝向方向的那个方块,并尝试以「5×5 反应堆卡」的方式解析(
decodeSides+ItemCard55Reactor.getReactor,TileEntityThermo.java:217-220) - 三种结果分别对应三个
onFire值
数值
| 数值名 | 值 | 含义 | 贴图 |
|---|---|---|---|
onFire |
1 | 反应堆热量 ≥ 设定阈值 | 红色面 faceRed |
onFire |
0 | 反应堆热量 < 设定阈值 | 绿色面 faceGreen |
onFire |
-1 | 未找到反应堆 | 灰色面 faceGray |
| 数值名 | 值 |
|---|---|
| 阈值字段 | heatLevel(int),由面板/卡片设置(TileEntityThermo.java:166-177) |
| 采样间隔 | 首次锁定反应堆时 tickRate = reactor.getTickRate() / 2,为 0 时强制为 1(TileEntityThermo.java:224-229) |
| 同步字段 | heatLevel、onFire、facing、invertRedstone(TileEntityThermo.java:104-110) |
交互:红石输出
红石输出实现在 BlockNuclearControlMain.isProvidingStrongPower(BlockNuclearControlMain.java:465-516):
- 强电与弱电输出完全相同(
isProvidingWeakPower直接委托,BlockNuclearControlMain.java:465-468) - 朝向正对反应堆或反应堆舱时强制返回 0,避免干扰反应堆自身(
BlockNuclearControlMain.java:499-504) - 正常情况:
onFire > 0与invertRedstone异或 —— 成立输出 15,否则 0(BlockNuclearControlMain.java:515-516) - 「反转红石」开关可通过 GUI 修改,也可由客户端网络事件
onNetworkEvent(-1/-2)设置(TileEntityThermo.java:140-152)
onFire 变化时会主动 notifyBlocksOfNeighborChange 通知邻居重算红石(TileEntityThermo.java:240-243)。
交互:其他
| 触发 | 行为 |
|---|---|
| 扳手拆下 | 掉落 metadata 0 的温度监控器(TileEntityThermo.java:301-304) |
| 扳手拆下概率 | 1.0(getWrenchDropRate 返回 1,TileEntityThermo.java:278-281) |
| 扳手定向 | wrenchCanSetFacing 返回 false,即拆下后重放置由放置逻辑决定朝向(TileEntityThermo.java:268-271) |
| 失去支撑 | 自动掉落(BlockNuclearControlMain.java:248-256) |
| NBT 持久化 | 存储 heatLevel(int)、facing(short)、invert(boolean)(TileEntityThermo.java:200-206) |
合成配方
recipes/RecipesNew.java:33-35(IC2 Recipes.advRecipes):
LLL
LCL
LRL
| 字符 | 物品 |
|---|---|
L |
plateLead(铅板) |
C |
circuitAdvanced(高级电路) |
R |
dustRedstone(红石粉) |
另有 GregTech 配方变体,见配方组。