核控灯(IC2NuclearControl:blockNuclearControlLight)
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | blockNuclearControlLight(IC2NuclearControl.java:158) |
| 父类 | net.minecraft.block.Block(无 TileEntity,BlockNuclearControlLight.java:20) |
| 材质 | Material.redstoneLight(BlockNuclearControlLight.java:26) |
| 硬度 | 0.3(BlockNuclearControlLight.java:28) |
| 脚步声 | soundTypeGlass(BlockNuclearControlLight.java:30) |
| 创造标签 | IC2NuclearControl.tabIC2NC(BlockNuclearControlLight.java:29) |
| 状态数 | 4(utils/LightDamages.java:13-18) |
| 中文名 | 白色灯(meta 0/1)、橙色灯(meta 2/3)(zh_CN.lang:43-46) |
功能
该方块是本模组唯一的独立方块(不挂在主方块的 metadata 下)。它是一个红石感应灯:亮度完全由红石信号决定,不持有 TileEntity,所有状态切换都通过 setBlock 改写自身的 metadata 实现。
状态编号遵循「偶数=灭,奇数=亮」的约定(LightDamages.java:4 注释):
| metadata | 常量 | 初始状态 | 掉落实体 metadata | 亮度 |
|---|---|---|---|---|
| 0 | DAMAGE_WHITE_OFF |
灭 | 0 | 0 |
| 1 | DAMAGE_WHITE_ON |
亮 | 0(damageDropped 减 1) |
15 |
| 2 | DAMAGE_ORANGE_OFF |
灭 | 2 | 0 |
| 3 | DAMAGE_ORANGE_ON |
亮 | 2(damageDropped 减 1) |
15 |
亮度判定逻辑为 meta == 1 || meta % 2 == 1(BlockNuclearControlLight.java:43-47)。注意由于 1 % 2 == 1,条件中等号分支实为冗余,实质就是奇数判定。
数值
| 数值名 | 值 |
|---|---|
| 关闭时发光等级 | 0(BlockNuclearControlLight.java:46) |
| 开启时发光等级 | 15(BlockNuclearControlLight.java:45) |
| 贴图数量 | 5(nuclearcontrol:light/lamp0 ~ lamp4,BlockNuclearControlLight.java:62-64;数组按 subblocks.size() + 1 分配) |
| 破坏掉落 | 始终掉落「灭」状态:偶数原样返回,奇数减 1(BlockNuclearControlLight.java:49-53) |
交互
| 触发 | 行为 |
|---|---|
放置后(onBlockAdded) |
立即按当前红石信号同步状态:meta 为奇数且未被间接供电则减 1;meta 为偶数且被间接供电则加 1(BlockNuclearControlLight.java:67-84) |
| 邻接方块变化 | 同上,重新同步状态(BlockNuclearControlLight.java:86-102) |
| 破坏 | 掉落对应颜色的「灭」状态方块 |
| 创造模式 | 4 种状态全部列出(getSubBlocks,BlockNuclearControlLight.java:104-110) |
状态切换只发生在服务端(!world.isRemote 保护,BlockNuclearControlLight.java:72,78),并以标志 2 写入方块更新。
合成配方
由 recipes/RecipesNew.java:41-51 注册(走 IC2 的 Recipes.advRecipes):
GGG
GWG
GLG
| 字符 | 物品 |
|---|---|
G |
paneGlass(玻璃板) |
W |
dyeWhite / dyeOrange(白色 / 橙色染料) |
L |
Blocks.redstone_lamp(红石灯) |
白色灯产出 meta 0,橙色灯产出 meta 2(RecipesNew.java:37-40,45-48)。若检测到 DreamCraft 加载则跳过全部配方(RecipesNew.java:25-27)。