喷漆罐
[!INFO] 源码:
SprayCanItem.java、ProjectBlue.java:123-137
给微型拉杆和微型按钮上色的消耗品。颜色存在 NBT,耐久值存在 damage,本 mod 少见地把两者分开存。
注册信息
| 注册名 | 变量 | 类 | 子项 |
|---|---|---|---|
gcewing_projectblue:emptySprayCan |
emptySprayCan |
Item(无子类) |
无(Item 默认) |
gcewing_projectblue:sprayCan |
sprayCan |
SprayCanItem |
17 个(颜色 0–16,存 NBT) |
颜色对照表
颜色存在 NBT color(int),不是 damage。显示名 %s Spray Paint,%s 取 color.gcewing_projectblue:<color>:
| color | 名称 | 说明 |
|---|---|---|
| 0 | White | 白色 |
| 1 | Orange | 橙色 |
| 2 | Magenta | 品红 |
| 3 | Light Blue | 淡蓝 |
| 4 | Yellow | 黄色 |
| 5 | Lime | 黄绿 |
| 6 | Pink | 粉 |
| 7 | Grey | 深灰 |
| 8 | Light Grey | 浅灰 |
| 9 | Cyan | 青 |
| 10 | Purple | 紫 |
| 11 | Blue | 蓝 |
| 12 | Brown | 棕 |
| 13 | Green | 绿 |
| 14 | Red | 红 |
| 15 | Black | 黑 |
| 16 | Stone | 去漆剂 — 显示名走 item.gcewing_projectblue:paintRemover.name,即「Paint Remover」 |
去漆剂(color 16)不是灰色。它用于把已上色的控件还原:合成时 miniatureStackFor 对 meta 16 的拉杆/按钮返回原版拉杆/按钮。
耐久
getMaxDamage() 返回 256。伤害值存 item damage,颜色存 NBT,两者在 getContainerItem 中分别处理:
hasContainerItem=stack.getItemDamage() < getMaxDamage()getContainerItem:耐久 +1,颜色不变;若超过 256 则返回emptySprayCandoesContainerItemLeaveCraftingGrid返回false(避免在合成台里循环消耗)
即一罐喷漆可用 256 次。每次对控制面板喷色(ControlPanelPart.activateCell)都会消耗 1 点。
合成
空罐
无序 3 格(ProjectBlue.registerRecipes):
[石头按钮] [铁锭]
[铁锭] [铁锭]
产出 4 个空罐(newRecipe(emptySprayCan, 4, "b", "I", "I", ...))。
填充
16 种颜色各一条无序配方(for (int i = 0; i < 16; i++)):
[空喷漆罐] [牛奶桶] [鸡蛋] [染料 meta = 15 - i]
产出 1 个对应颜色的喷漆罐。15 - i 是因为染料 meta 与捆绑线颜色序号相反(染料 15 = 黑 = 通道色 0 白)。
两种用法
| 用法 | 位置 | 效果 |
|---|---|---|
| 合成上色 | 合成台:控件 + 喷漆罐 | 永久改变控件 meta(PaintControl,2 格横向) |
| 面板调通道 | 对控制面板点击 | 把该格通道色设为喷漆颜色;颜色 16 时重置为该格号 |
面板调通道时播放 step.snow 音效,不扣耐久(源码中该分支直接 return,无 stack.stackSize--)。耐久只在合成上色时通过 getContainerItem 消耗。
相关
- 可上色的控件见 微型控制器部件