核控灯(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)。

相关条目