温度监控器

基本信息

属性 值
注册名 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):

  1. 先在自身坐标寻找反应堆舱(NuclearHelper.getReactorChamberAroundCoord);找到则用舱内反应堆
  2. 否则在自身坐标寻找反应堆(getReactorAroundCoord)
  3. 两者都没有时,改为读取朝向方向的那个方块,并尝试以「5×5 反应堆卡」的方式解析(decodeSides + ItemCard55Reactor.getReactor,TileEntityThermo.java:217-220)
  4. 三种结果分别对应三个 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 配方变体,见配方组。

相关条目