跳转到主要内容
li_chun+1
字数: 777
预计阅读时间: 3 分钟
最后编辑: 2026-08-29
Graduate Texts in Minecraft
Graduate Texts in Minecraft

02 铜灯

铜灯有 2 个方块状态:

属性含义默认值
点亮状态LIT铜灯是否点亮false
激活状态POWERED铜灯是否收到红石信号false
  • 点亮状态LIT 只会在红石信号从无到有时翻转。
  • 激活状态POWERED 表示当前是否有相邻红石信号输入,与 点亮状态LIT 相互独立

状态检查只在以下两个服务端时机调用:

  1. 放置/替换时检查状态:
    • 仅当旧方块不是铜灯时执行。
    • 因此新放置的铜灯如果周围已有红石信号,会立即检查并可能切换一次亮灭。

这与投掷器,音符盒等不同,它们在被放置时都不会检查自身是否收到红石信号

  1. 收到 NC 更新时检查状态:
  • 只在服务端执行。
  • 铜灯的状态检查在收到 NC 更新时被瞬时调用,不添加任何计划刻事件

铜灯的状态切换在收到红石信号后的瞬间完成,属于瞬时元件。
据此,甚至可以在一个游戏刻内,多次激活铜灯,做出在一个游戏刻的不同阶段有着不同亮灭状态的铜灯

收到 NC 更新后,铜灯先判断是否在服务端,如果是则完成后续的检测与更新

收到更新后,铜灯的检测逻辑:

  1. 获取当前位置的红石输入信号:如果当前信号和铜灯的被激活Powered状态相同,则不需要变化,不做任何处理。

  2. 如果当前信号和铜灯的被激活Powered状态不同:

    • 当前不是激活状态:无信号 → 有信号(上升沿)
      当前 铜灯未被激活,且 有红石信号:

      1. 翻转 点亮状态Lit:
      2. 播放声音:根据变化状态判断应该播放铜灯亮起的声音还是铜灯熄灭的声音
      3. 设置铜灯为激活状态POWERED = true 更新方块状态并发出方块更新
    • 当前是激活状态 有信号 → 无信号(下降沿)
      当前 铜灯被激活,且 有没有红石信号:

      1. 不翻转 点亮状态LIT,不播放声音。
      2. 设置铜灯为非激活状态POWERED = false更新方块状态并发出方块更新

总结:铜灯只在红石信号出现时(上升沿)切换一次亮灭;信号消失时只清除激活状态POWERED,点亮状态LIT 保持。

  • 铜灯可以作为提供比较器信号的方块,被比较器检测到。

  • 比较器输出:

    • 铜灯亮起时→ 为比较器提供强度 15的输入信号
    • 铜灯熄灭时 → 为比较器提供强度 0的输入信号
  • 比较器输出只由 点亮状态LIT 决定,与激活状态POWERED)无关

  • 铜灯在反转点亮状态LIT时会尝试发出比较器更新

铜灯发出更新的顺序是先 NC 更新,再比较器更新,再 PP 更新