微型拉杆 / 按钮 / 灯 / 盖板
[!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 → 携带
matNBT 的 miniatureCover - 非创造模式才掉落
行为
| 控件 | 面板内行为 | 是否输出信号 |
|---|---|---|
| LEVER | 点击切换开/关 | 是(状态 > 0 时该通道输出 255) |
| BUTTON | 点击后按住 20 tick(1 秒)自动弹起 | 是(同上) |
| LAMP | 无源,状态由外部通道信号驱动 | 否(纯显示) |
| BLANK | 无 | 否 |