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)决定,按以下顺序检索任一即可触发渲染:
- 原版护甲栏:4 个护甲槽位任意槽有
IHoloGlasses实例(实现 API:让外部 mod 物品也能戴出本特效)。 - Baubles|Expanded 的 Baubles 栏(若安装):
BaublesApi.getBaubles(player)。 - 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 等)。
相关条目
- HoloGlasses 热键 - 控制 hologram 显示开关的 Numpad 5 默认键
- HoloInventory 指令与配置 -
/holoinventory指令说明 - 渲染模式与采样配置 -
Config.renderScaling/mode/cycle/keyMode/syncFreq等渲染参数