核控主方块(IC2NuclearControl:blockNuclearControlMain)

基本信息

属性 值
注册名 blockNuclearControlMain(IC2NuclearControl.java:157)
模组 Nuclear Control 2,modid IC2NuclearControl(IC2NuclearControl.java:57-62)
材质域 nuclearcontrol(如 ThermalMonitor.java:72)
父类 net.minecraft.block.BlockContainer(BlockNuclearControlMain.java:65)
材质 Material.iron(BlockNuclearControlMain.java:70)
硬度 0.5(BlockNuclearControlMain.java:71)
爆炸抗性 0.0(未调用 setResistance;grep -c 'setResistance' BlockNuclearControlMain.java = 0)
创造标签 IC2NuclearControl.tabIC2NC(BlockNuclearControlMain.java:72)
子方块数 11(BlockNuclearControlMain.java:74-84)
渲染类型 IC2NuclearControl.instance.modelId(BlockNuclearControlMain.java:92-94)

功能

这是本模组唯一的「多用途方块」容器方块。它本身不提供任何功能,全部 11 种功能由 metadata(损伤值)区分的子方块(Subblock)提供。子方块在 BlockNuclearControlMain 构造函数中逐个实例化并放入 Map<Integer, Subblock>(BlockNuclearControlMain.java:73-89)。

该方块继承 BlockContainer,因此放置后会为每个子方块创建对应的 TileEntity;它实现了 IC2 的 IWrenchable 语义 —— 放置时根据玩家视角决定朝向(BlockNuclearControlMain.java:166-195),并可被扳手拆下。

子方块(metadata)一览

metadata 常量定义于 utils/BlockDamages.java:7-19;中文名取自 assets/nuclearcontrol/lang/zh_CN.lang。

metadata 常量 中文名 TileEntity 需依附方块 有 GUI 碰撞箱
0 DAMAGE_THERMAL_MONITOR 温度监控器 TileEntityThermo 是 是 0.0625,0,0.0625 → 0.9375,0.4375,0.9375
1 DAMAGE_INDUSTRIAL_ALARM 工业警报器 TileEntityIndustrialAlarm 是 是 0.125,0,0.125 → 0.875,0.4375,0.875
2 DAMAGE_HOWLER_ALARM 蜂鸣报警器 TileEntityHowlerAlarm 是 是 0.125,0,0.125 → 0.875,0.4375,0.875
3 DAMAGE_REMOTE_THERMO 远程温度监控器 TileEntityRemoteThermo 否 是 0,0,0 → 1,1,1
4 DAMAGE_INFO_PANEL 工业信息屏 TileEntityInfoPanel 否 是 0,0,0 → 1,1,1
5 DAMAGE_INFO_PANEL_EXTENDER 工业信息屏扩展 TileEntityInfoPanelExtender 否 否 0,0,0 → 1,1,1
6 DAMAGE_ENERGY_COUNTER 电力计数器 TileEntityEnergyCounter(取自 RF 供应方) 否 是 0,0,0 → 1,1,1
7 DAMAGE_AVERAGE_COUNTER 平均电力计数器 TileEntityAverageCounter(取自 RF 供应方) 否 是 0,0,0 → 1,1,1
8 DAMAGE_RANGE_TRIGGER 范围触发器 TileEntityRangeTrigger 否 是 0,0,0 → 1,1,1
9 DAMAGE_ADVANCED_PANEL 高级工业信息屏 TileEntityAdvancedInfoPanel 否 是 随 TileEntity 变化
10 DAMAGE_ADVANCED_EXTENDER 高级工业信息屏扩展 TileEntityAdvancedInfoPanelExtender 否 否 随 TileEntity 变化

子方块类位于 blocks/subblocks/,每个类构造时向 Subblock 传入 DAMAGE 与未本地化名(如 ThermalMonitor.java:16,36-38)。TileEntity 列来自各 Subblock.getTileEntity()(如 ThermalMonitor.java:41-43);「需依附方块」来自 isSolidBlockRequired();「有 GUI」来自 hasGui()。

metadata 6 与 7 与其他子方块不同:它们不新建 TileEntity,而是优先复用 RF 能量供应方持有的单例,为 null 时才 new(EnergyCounter.java:38-41、AverageCounter.java:38-41,取自 crossmod/RF/CrossRF.java:42)。这样电力计数器与平均电力计数器在 RF 环境下共享同一份测量数据源。

数值

数值名 值
合法 metadata 范围 0–10(BlockDamages.DAMAGE_MAX = 10,BlockDamages.java:19)
越界 metadata 处理 放置、放置后、加入世界时均回落为 0(BlockNuclearControlMain.java:140-142,162-164,205-207)
创造标签子方块 由 ItemNuclearControlMain 配合方块本体提供;标签图标为温度计(IC2NCCreativeTabs.java:26-37)

交互

触发 行为
右键(meta 2 蜂鸣报警器 + 手持染料) 改变报警器颜色,消耗 1 个染料(BlockNuclearControlMain.java:406-420)
右键(meta 2 + IC2 涂装器 ItemToolPainter) 套用涂装器颜色,工具损耗 1 点耐久(BlockNuclearControlMain.java:421-428)
右键(手持扳手) 调整朝向或拆下(WrenchHelper.isWrenchClicked,BlockNuclearControlMain.java:431-433)
潜行右键 返回 false,不打开 GUI(BlockNuclearControlMain.java:434-436)
右键(子方块 hasGui() 为真) 以 metadata 作为 GUI ID 打开界面(BlockNuclearControlMain.java:437-447)
邻接方块变化 需依附的子方块失去支撑时掉落自身(BlockNuclearControlMain.java:248-256)

数值:红石输出

canProvidePower() 返回 true(BlockNuclearControlMain.java:396-399),但只对 TileEntityThermo 与 TileEntityRangeTrigger 生效,其余子方块一律返回 0(BlockNuclearControlMain.java:471-473)。强电与弱电输出走同一实现(isProvidingWeakPower 直接委托 isProvidingStrongPower,BlockNuclearControlMain.java:465-468),且温度监控器正对反应堆时不输出(BlockNuclearControlMain.java:499-504)。

相关条目