HoloGlasses

基本信息

属性 值
注册名 holoinventory:Hologlasses
类型 ItemArmor(头盔槽位,渲染为 0,附魔等级不可用)
ArmorMaterial holoGlasses(EnumHelper.addArmorMaterial 自定义,耐久 0,护甲值 0)
最大堆叠 1(构造函数 setMaxStackSize(1))
附魔适用 否(耐久/附魔等级均为 0,无附魔可加)
创造栏 CreativeTabs.tabTools
材质纹理 holoinventory:textures/models/armor/glasses.png

功能

佩戴或装备在玩家身上时,玩家看准的所有 IInventory(箱子、储物抽屉、AE2 接口等)、IFluidHandler(流体储罐)与 IMerchant(村民职业方块)的格子和内容物会以"全息投影(hologram)"方式实时悬浮显示在玩家面前 —— 即不需要打开 GUI 就能查看容器内容。

穿戴来源由 HoloGlasses.shouldRender(player)(items/HoloGlasses.java:70)决定,按以下顺序检索任一即可触发渲染:

  1. 原版护甲栏:4 个护甲槽位任意槽有 IHoloGlasses 实例(实现 API:让外部 mod 物品也能戴出本特效)。
  2. Baubles|Expanded 的 Baubles 栏(若安装):BaublesApi.getBaubles(player)。
  3. Tinkers’ Construct 的 armorExtended 栏(若安装):tconstruct.armor.ArmorProxyClient.armorExtended。

实现接口 IHoloGlasses(api/IHoloGlasses.java)的物品也可视为"全息眼镜"。

使用方式

使用方式 触发条件 使用效果 条件/限制
快捷栏右键(装备) 玩家手持 HoloGlasses 右键(无目标) 自动装备到头盔槽位 ItemArmor 标准头盔槽位
Baubles 装备 装入 Baubles 头类型栏(BaubleExpandedSlots.headType) 同样触发全息渲染 需要 Baubles|Expanded 模组;mod 在 BaubleExpandedSlots.tryAssignSlotsUpToMinimum(headType, 1) 强制保证至少有 1 个头部位(见 HoloInventory.preInit)
Tinkers 装备 装入 TConstruct armorExtended 第 0 槽(canEquipAccessory 限制) 同样触发全息渲染 需要 TConstruct 模组
持续被动效果 一旦装备后每 tick ClientHandler.Renderer 监听 RenderGameOverlayEvent.Post 在 HELMET 元素层绘制全息面板 配置项 Config.requireGlasses = false 时无需佩戴也能看见(其它物品继承 IHoloGlasses 接口即可)

装备与穿戴行为

Tooltip 信息(addInformation)

未按 Shift 时显示 hologlasses.tooltip.hold_shift(仅当未安装 Baubles|Expanded)。 按住 Shift 后以红色追加 hologlasses.tooltip.adds_holographic。 若已装 Baubles|Expanded,由 BaubleItemHelper.addSlotInformation 列出所有可用槽位(头类型)。 未装 Baubles 则追加 hologlasses.tooltip.put_in_tinkers_mask_slot 提示。

IHoloGlasses 接口 API

// HoloGlasses 默认实现
@Override
public boolean shouldRender(ItemStack stack) {
    return true;
}

任意第三方物品只需 implements IHoloGlasses 即可被 HoloGlasses.shouldRender(player) 视为"全息眼镜",从而对外提供同等渲染能力。

装备/穿戴钩子(条件实现)

方法 行为 mod 依赖
canEquipAccessory(ItemStack, int slot) 仅允许 slot==0(TConstruct 配件槽头位) TConstruct
canEquip / canUnequip 永真(Baubles 接口) Baubles|Expanded
getBaubleType BaubleType.RING(兼容旧 API) Baubles|Expanded
getBaubleTypes 返回 BaubleExpandedSlots.headType Baubles|Expanded
onEquipped / onUnequipped / onWornTick 空实现 Baubles|Expanded

第三方 mod 集成

mod 集成方式
Baubles|Expanded IBauble + IBaubleExpanded;通过 BaubleExpandedSlots.tryAssignSlotsUpToMinimum(headType, 1) 自动为头类型槽留位
Tinkers' Construct tconstruct.library.accessory.IAccessory,可用 ArmorProxyClient.armorExtended 头部位装备
StorageDrawers InventoryDecoderRegistry.init() 注册抽屉组 IDrawerGroup 专用解码器,hologram 显示抽屉内物品
JABBA(BetterBarrels) InventoryDecoderRegistry.init() 注册 TileEntityBarrel 解码器,hologram 直接显示桶内物品数量
appliedenergistics2(AE2) ServerEventHandler.handleInventoryBlock 对 TileInterface 与 IPartHost 上 PartInterface 取"patterns"清单,通过 AE2Patterns.getPatternOutput 解析每条合成样板输出作为显示项
TwilightForest GroupRenderer 静态初始化时记录 TFItems.emptyMagicMap/emptyOreMap/emptyMazeMap 作为渲染 fallback(避免与 Angelica 渲染器冲突)
NotEnoughItems(NEI) Renderer.filterByNEI 当 Config.hideItemsNotSelected && SearchField.searchInventories() 时按 NEI 搜索表达式过滤 hologram 显示
Angelica / NotFine GroupRenderer 通过 MethodHandle 反射读写 jss.notfine.core.SettingsManager.droppedItemDetail,渲染期间临时启用精细物品显示
Optifine Renderer.optifineIsAnnoying 备份并重置 fancyGraphics 标志位,规避 optifine 干扰
dreamcraft(GTNH 整合包) 当 Loader.isModLoaded("dreamcraft") 时 Config.requireGlasses 默认 true,强制佩戴眼镜才能查看
gtnhlib Gradle 版本约束 gtnhlib@[0.9.50,);Config 与 BlockInventoryMessage 使用其 com.gtnewhorizon.gtnhlib.util.data.ItemId 做物品序列化

数值

属性 值
护甲值(全部 4 槽) [0, 0, 0, 0]
耐久度 0
附魔等级 0
最大堆叠 1
是否在 TConstruct 头槽可装 slot==0

耐久与消耗

项目 值
最大耐久 0(不可损耗)
每次使用消耗 无
使用后是否消失 否

合成配方

无内置合成配方(未调用 GameRegistry.addRecipe/addShapedRecipe 等)。

相关条目