月相传感器
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | RandomThings:moonSensor |
| 类 | lumien.randomthings.Blocks.BlockMoonSensor(继承原版 BlockDaylightDetector) |
| TileEntity | 无 |
| 材质 | 原版 BlockDaylightDetector 默认 |
| 硬度 | 0.7F(BlockMoonSensor.java:20) |
| 贴图 | RandomThings:moon_sensor(:18) |
| 开关 | Blocks.MoonSensor(RTConfiguration.java:203) |
功能
月相传感器是原版阳光探测器的"月相版"。它继承 net.minecraft.block.BlockDaylightDetector(BlockMoonSensor.java:8),直接沿用原版红石接线与 power 输出逻辑,只是把信号源从太阳换成月亮。
覆写的 func_149957_e(原版方块的刻处理钩子)把 getCurrentMoonPhaseFactor() 乘 15 映射成 0–15 的 metadata:
int moon = (int) (par1World.getCurrentMoonPhaseFactor() * 15F);
if (moon != metadata) {
par1World.setBlockMetadataWithNotify(posX, posY, posZ, moon, 3);
}
(BlockMoonSensor.java:25-31)
关键约束:只有在有天空的世界才工作 —— 方法首行是 if (!par1World.provider.hasNoSky)(:26)。在无天空维度(如下界、灵魂世界)metadata 保持不变。
由于继承 BlockDaylightDetector,它自带原版的行为:metadata 0–15 表示月光强度,signal 由该值给出,接线方式与阳光探测器一致。类没有自己调用 setCreativeTab,因此不进入本 mod 的创造标签(但 BlockDaylightDetector 会进入 CreativeTabs.redstone)。
注意本类构造函数是 protected(BlockMoonSensor.java:14),只能由同包 ModBlocks 实例化。
数值
| 数值名 | 值 |
|---|---|
| 输出等级 | 0–15(getCurrentMoonPhaseFactor() * 15,:28) |
| 满月对应 | getCurrentMoonPhaseFactor() = 1.0 → metadata 15 |
| 无天空维度 | 不更新,保持原 metadata(:26) |
| TileEntity | 无 |
交互
| 触发 | 行为 |
|---|---|
| 昼夜循环 | 白天输出 0,满月夜输出 15 |
| 红石 | 标准红石信号,可直接驱动门/灯/拉杆 |
| 下界等无天空维度 | 不产生信号 |
合成配方
ggg
lql
sss
| 字符 | 物品 |
|---|---|
g |
玻璃(blockGlass) |
l |
青金石(gemLapis) |
s |
木质台阶(slabWood) |
q |
下界石英(gemQuartz) |
来源:Library/Recipes.java:221-234。配方布局与血月传感器 仅中央一行不同(青金石 vs 红石粉)。
相关条目
- 血月传感器 - 同一布局,改为血月事件驱动