月相传感器

基本信息

属性 值
注册名 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 红石粉)。

相关条目