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,配色不会因掉落而改变。

相关条目