Nuclear Control 灯方块
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | IC2NuclearControl:blockNuclearControlLight |
| 方块类 | shedar.mods.ic2.nuclearcontrol.blocks.BlockNuclearControlLight(继承 Block) |
| 物品形式 | ItemNuclearControlLight(ItemBlock 子类,setHasSubtypes(true)、setMaxDamage(0)) |
| 材质 | Material.redstoneLight |
| 硬度 | 0.3 |
| 脚步声 | soundTypeGlass |
| 创造标签 | IC2NuclearControl.tabIC2NC |
| 元数据变体 | 4 个,metadata 0–3 |
| TileEntity | 无(本模组第二个不创建 TileEntity 的方块) |
注册证据:GameRegistry.registerBlock(blockNuclearControlLight, ItemNuclearControlLight.class, "blockNuclearControlLight")(IC2NuclearControl.java:158)。4 个变体在构造函数中注册(BlockNuclearControlLight.java:34-38),metadata 常量定义于 utils/LightDamages.java:11-14。
功能
一个纯红石驱动的双配色灯方块,用于把「某台机器是否在运行」直观地显示在墙上。它不含 TileEntity,全部状态由 metadata 奇偶性承载。
约定是偶数 metadata = 熄灭,奇数 metadata = 点亮(utils/LightDamages.java:4-8 的类注释明确说明):
| metadata | 常量 | 状态 | 英文显示名 |
|---|---|---|---|
| 0 | DAMAGE_WHITE_OFF |
白色熄灭 | White Lamp |
| 1 | DAMAGE_WHITE_ON |
白色点亮 | White Lamp |
| 2 | DAMAGE_ORANGE_OFF |
橙色熄灭 | Orange Lamp |
| 3 | DAMAGE_ORANGE_ON |
橙色点亮 | Orange Lamp |
白色与橙色在创造栏里名字相同,仅靠贴图区分(en_US.lang 中 tile.nclight0.name 与 tile.nclight1.name 同为 White Lamp,tile.nclight2.name 与 tile.nclight3.name 同为 Orange Lamp)。
数值
| 数值名 | 值 |
|---|---|
| 点亮时光照等级 | 15(getLightValue 在 metadata 为奇数时返回 15) |
| 熄灭时光照等级 | 0 |
| 贴图数量 | subblocks.size() + 1 = 5,资源名 nuclearcontrol:light/lamp0 … lamp4(BlockNuclearControlLight.java:39、:65-70) |
交互
| 触发 | 行为 |
|---|---|
放置(onBlockAdded) |
奇数 metadata 且未被红石间接供电时减 1 变熄灭;偶数 metadata 被供电时加 1 变点亮(BlockNuclearControlLight.java:76-95) |
| 邻接方块变化 | 与放置时完全相同的切换逻辑(BlockNuclearControlLight.java:97-114) |
| 破坏掉落 | damageDropped 遇到奇数 metadata 返回 i - 1,即掉落物永远是熄灭态(BlockNuclearControlLight.java:56-59) |
注意:damageDropped 的实现是 if (i == 0 || i % 2 == 0) return i; return i - 1;,因此 metadata 1 掉落为 0、3 掉落为 2,配色不会因掉落而改变。
相关条目
- Nuclear Control 主方块 - 另一个已注册方块,含 11 个 metadata 变体
- 通用配置项 - 本方块不读取任何配置项