跳转至

监视器 2

monitor_2

监视器 2 安装在控制台桌顶,是内置的小型监视器:屏幕面上是一个 10×8 的模块槽网格,可安装与正式监视器相同的模块 —— 按钮、钮子开关、旋钮与屏幕 —— 全部可通过 Lua 自由控制。

它全占桌顶 6×14 棋盘网格(唯一合法放置中心 (8,12))——与油门杆、油门杆 2互斥(同一时刻只能安装其中一个)。与那些控件不同,监视器 2 不面向玩家:只随桌体 FACING 旋转。

安装 / 拆除

  • 安装:手持监视器 2 物品右键控制台。它安装在桌顶网格唯一合法位置(中心 (8,12));14×6×12 预览盒显示安装位置(绿 = 可装,红 = 被占用)。
  • 拆除:手持 Create 扳手蹲下右键拆除;破坏控制台方块时随掉落。

10×8 网格

屏幕面是 10×8 网格(正式监视器为 12×10):x 0..9,y 0..7。模块的放置、交互、渲染与配置和监视器完全一致 —— 见监视器总览。

类型 说明 文档
button_1 按钮(瞬时;玩家点击 / 交互锁 / 灯带控制) 按钮模块
toggle_switch 钮子开关(锁存) 开关模块
knob 旋钮(角度 0..360) 旋钮模块
screen 屏幕(格子模型文本 + 自由图形绘制) 屏幕模块

Lua API

监视器 2 的 Lua API 与正式监视器完全相同 —— 没有需要新学的方法,唯一区别是网格尺寸(10×8 vs 12×10)。

获取监视器 2 外设

从控制台外设经 getModule("monitor") 获取(外设类型 "ccpe:monitor_2");未安装监视器 2 时返回 nil:

local ss = require("ccpe.sensor_system")
local desk = ss.getPeripheral(4)
local m = desk.getModule("monitor")   -- 未安装监视器 2 返回 nil

m 具有与监视器外设完全相同的方法 —— getCellModule(x, y) / getModule(id) / playNiceSound() / playSound(name),完整说明见监视器。这里所有查询都作用在 10×8 网格上。

快捷入口(无需先取外设)

控制台外设还直接在 10×8 网格上暴露同样的查询:

方法 说明
desk.getMonitor2CellModule(x, y) 读取格子上的模块/屏幕实例(x 0..9,y 0..7);空格 / 未安装监视器 2 返回 nil
desk.getMonitor2Module(id) 按 ID 读取模块/屏幕实例;不存在 / 未安装监视器 2 返回 nil

模块实例

返回的模块/屏幕实例与监视器的完全相同 —— 通用方法(getId()、getType()、getX()、getY()、getWidth()、getHeight()、setTooltip())与各类型的专属方法都见监视器文档:

与监视器的差异

只有网格尺寸不同(10×8 vs 12×10),其余行为完全一致,包括 mainThread 规则与 nil 语义。

示例

local ss = require("ccpe.sensor_system")
local desk = ss.getPeripheral(4)

-- 直接从 10×8 网格读取模块
local mod = desk.getMonitor2CellModule(3, 4)
if mod then
    print("type:", mod.getType(), "id:", mod.getId())
    mod.setTooltip("压力表")
end

-- 或经监视器 2 外设
local m = desk.getModule("monitor")
if m then
    local scr = m.getCellModule(1, 1)
    if scr and scr.getType() == "screen" then
        scr.write("你好,监视器 2")
    end
end