AR Glasses
基本信息
| 属性 | 值 |
|---|---|
| 注册名 | openglasses:openglasses |
| 显示名 | AR Glasses(item.openglasses.name) |
| 源码类 | OpenGlassesItem(item/OpenGlassesItem.java:34) |
| 基类 | ItemArmor |
| 构造 | super(ArmorMaterial.CHAIN, 0, 0)(:39) |
| 最大耐久 | 0(setMaxDamage(0),:40) |
| 最大堆叠 | 1(setMaxStackSize(1),:41) |
三重可穿戴
OpenGlassesItem extends ItemArmor implements IBauble, IAccessory(:34)——同一件物品同时支持三套装备系统:
| 系统 | 接口 / 基类 | 槽位 |
|---|---|---|
| 原版护甲 | ItemArmor |
头盔槽(0) |
| Baubles | IBauble |
getBaubleType() 决定(:138) |
| TConstruct | IAccessory |
canEquipAccessory(stack, slot) 过滤(:127) |
护甲材质为 ArmorMaterial.CHAIN(锁链),但耐久为 0,故不提供任何减伤——材质只影响渲染与 canEquipAccessory 判定。
Loader.isModLoaded 探测结果分别存入 OpenGlasses.baubles / tinkers(OpenGlasses.java:90-91)。
Baubles 不在本 wiki 收录范围(
data/relation.md无对应行),不建分类链接。TConstruct 已登记未成文(tinkersconstruct)。
NBT
| 键 | 用途 | 证据 |
|---|---|---|
HasChatBoxUpgrade |
是否安装 ChatBox 升级 | :36 chatBoxUpgradeStr = "HasChatBoxUpgrade" |
| UUID | 绑定的眼镜终端 | getUUID(ItemStack)(:62)、bindToTerminal(glass, uuid)(:116) |
setChatBoxUpgrade(ItemStack, boolean)(:102)写该标记;hasChatBoxUpgrade(ItemStack)(:98)读该标记。
终端绑定
| 方法 | 作用 |
|---|---|
getUUID(ItemStack)(:62) |
取该眼镜绑定的终端 UUID |
bindToTerminal(ItemStack glass, Location uuid)(:116) |
把眼镜绑定到某个眼镜终端方块 |
绑定后眼镜成为该终端的远程显示器——在 Glasses Terminal 前打开终端并绑定,即可戴着眼镜随处查看。
lang 中的绑定信息 tooltip(tooltip.openglasses.link_to):
Link to:
X: %d Y: %d Z: %d
Dim: %d
Key: %d
即显示绑定坐标、维度与密钥。
装备事件
| 方法 | 行号 | 行为 |
|---|---|---|
onEquipped |
:160 |
发送装备封包 |
onUnequipped |
:175 |
发送卸下封包 |
onWornTick |
:150 |
空实现 {} |
对应网络封包 EquipGlassesPacket(ID 2)与 UnequipGlassesPacket(ID 6)。
⚠️
onWornTick是空方法体——眼镜的每 tick 耗电不在此处。实际耗电按energyMultiplier配置描述的公式计算:PowerDrain = (NumberOfWidgets / 10) * energyMultiplier,与图元数量挂钩。见 Config。
合成配方
OpenGlasses.java:127-128:
.addRecipe(new ItemStack(openGlasses), "SCS", " W ", " ",
'S', screen, 'W', wlanCard, 'C', graphics);
| 格 | 键 | 材料 | OC 物品名 |
|---|---|---|---|
| (0,0) | S |
屏幕 | Items.get("screen3") × 1 |
| (0,1) | C |
显卡 | Items.get("graphicsCard3") × 1 |
| (0,2) | S |
屏幕 | 同上 |
| (1,1) | W |
无线网卡 | Items.get("wlanCard") × 1 |
3×3 网格中只占 5 格(顶行 3 格 + 中行中央 1 格 + 底行 1 格 空)。两个 S 屏幕必须都在(matches 按 pattern 匹配),即 2 屏幕 + 1 显卡 + 1 无线网卡。
ChatBox 升级配方
仅当 Computronics 存在时注册(OpenGlasses.java:131-137):
| 项 | 值 |
|---|---|
| 配方类型 | 无序(SHAPELESS) |
| 原料 | Computronics 的 computronics.chatBox + 本模组的 AR 眼镜 |
| 产物 | 眼镜副本,HasChatBoxUpgrade = true(glasses.copy()) |
| 配方大小 | 2(getRecipeSize(),:47-49) |
产物是副本(glasses.copy())——原眼镜留在合成栏不变。
自定义 IRecipe 而非用 GameRegistry.addShapelessRecipe,并额外注册到 RecipeSorter(Category.SHAPELESS)以兼容 NEI 排序。
lang 记录其存在:tooltip.openglasses.installed_chatbox=Installed ChatBox。
物品栏
眼镜不占用本模组的创造标签——它落在 CreativeTabs.tabRedstone(原版红石标签,OpenGlasses.java:63),本模组没有自己的创造标签。
相关条目
- Glasses Terminal - 绑定目标方块
- Lua API - 绑定后在眼镜中可用的脚本
- Widget System - 图元与耗电
- Free Cursor - 按键设置
- Config - 能量与 ChatBox 命令白名单
- OpenComputers - 屏幕 / 显卡 / 无线网卡 / CPU
- Computronics - ChatBox