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),本模组没有自己的创造标签。

相关条目