微型拉杆 / 按钮 / 灯 / 盖板

[!INFO] 源码: ControlItem.java

Project Blue 的四种微型控件都是同一个类 ControlItem,靠构造参数 ControlPanelPart.ControlType 区分。它们只能放进控制面板,不能单独放置或使用。

注册信息

注册名 变量 ControlType 子项 meta 范围 数量
gcewing_projectblue:miniatureLever miniatureLever LEVER 0–16 17
gcewing_projectblue:miniatureButton miniatureButton BUTTON 0–17 18
gcewing_projectblue:miniatureLamp miniatureLamp LAMP 0–15 16
gcewing_projectblue:miniatureCover miniatureCover BLANK 由 NBT mat 决定 1(tile.wood)

所有四者 hasSubtypes = true,最大堆叠 64,getSpriteNumber() 走 ControlItemRenderer(无静态图标)。

meta = 颜色

meta 0–15 是 Project Red 捆绑线通道色(White / Orange / Magenta / Light Blue / Yellow / Lime / Pink / Grey / Light Grey / Cyan / Purple / Blue / Brown / Green / Red / Black)。显示名格式 Miniature %s Lever,%s 来自 color.gcewing_projectblue:<meta>。

两个特殊 meta:

物品 meta 名称 含义
miniatureLever 16 Stone 未上色(可被喷漆)
miniatureButton 16 Stone 未上色
miniatureButton 17 Wooden 木质按钮外观

ControlItem 的 getSubItems 里 LEVER 循环到 16(含)、BUTTON 循环到 17(含)、LAMP 只到 15。

放置与合成

  • 放置:对控制面板点击该物品 → placeControl(i, type, player, meta, stack),把 meta 存进该格的 controlMetadata。非创造模式扣 1 个。
  • 合成:「石锯 + 全身尺寸控件」→ 8 个微型件(CraftMiniatureItem),原料见 控制面板。
  • 上色:「可上色控件(LEVER/BUTTON,meta ≥ 16)+ 喷漆罐」→ 对应颜色的控件(PaintControl,2 格横向)。LAMP 与 BLANK 不可上色。

拆下

对已放置的格子用**螺丝刀(非潜行)**点击 → removeControl,掉落对应 stackForControl(i):

  • LEVER/BUTTON/LAMP → 携带原 meta 的物品
  • BLANK → 携带 mat NBT 的 miniatureCover
  • 非创造模式才掉落

行为

控件 面板内行为 是否输出信号
LEVER 点击切换开/关 是(状态 > 0 时该通道输出 255)
BUTTON 点击后按住 20 tick(1 秒)自动弹起 是(同上)
LAMP 无源,状态由外部通道信号驱动 否(纯显示)
BLANK 无 否

相关