隐藏描述

隐藏描述

物品描述已隐藏,按住 Shift 键查看

游戏机制

feat(tooltip): 使用 Shift 键实现条件性工具提示展开

本次提交引入了一个新的客户端生活质量功能,改变了游戏中物品工具提示的显示方式。当玩家查看物品的工具提示时,默认会显示一条占位消息“按住 Shift 查看详情...”。按下并按住 Shift 键会显示完整、全面的工具提示,为玩家提供有序且清晰的物品栏浏览体验。

背景/问题:

  • Minecraft 中的工具提示可能变得过长,尤其是在模组环境中,物品通常包含详细的描述、附魔信息和模组特定的元数据。
  • 杂乱的工具提示会遮挡玩家视野,使物品栏管理变得不便,因为关键信息无论是否需要,总是可见的。
  • 目前没有原版或标准的 Forge 方法来切换工具提示或将其隐藏在修饰键后面。

实现细节:

  • 创建了一个新的事件处理器,监听 ItemTooltipEvent(Forge 用于工具提示构建的 API 事件)。
  • 当事件触发时,处理器使用 Screen.hasShiftDown()(客户端侧)检查 Shift 键的状态,判断玩家在悬停物品时是否按住了该键。
  • 如果按住了键,原始、未修改的工具提示文本列表(List<Component>)会被添加到工具提示中,显示每一行信息。
  • 如果未按键,默认工具提示会被清除,替换为一个单行组件:“按住 Shift 查看详情...”。
  • 工具提示会在玩家键状态变化时自动更新并重新渲染,前提是鼠标悬停在物品上。

行为变化:

  • 玩家现在可以快速浏览物品,而不会被冗长的文本淹没。
  • 完整工具提示在需要时即时显示,无需额外的按键绑定或配置菜单。
  • 占位文本已本地化,可在未来更新中进行适配或国际化。
  • 此功能适用于所有物品,包括来自其他模组的物品,因为它是在通用级别拦截工具提示事件。

已执行的测试:

  • 在 Forge 1.20.1 上使用原版和模组物品(例如,带有附魔的物品、模组装备)进行了验证。
  • 确认在所有游戏界面(物品栏、创造模式菜单、容器)中 Shift 键检测可靠。
  • 测试了在鼠标保持在同一物品上时,按键、释放和再次按键后工具提示的响应能力。
  • 通过事件优先级调整,确保与同样修改 ItemTooltipEvent 的其他模组的兼容性。

附加说明:

  • 此模组完全为客户端侧,不需要服务器端安装。
  • 使用 Screen.hasShiftDown() 方法而不是 keyBindSneak,以准确反映 GUI 相关的按键操作,同时不干扰移动控制。
  • 未来考虑:添加可配置的按键绑定来切换此行为或自定义占位消息。

解决: #ISSUE-42(如果适用,请替换为实际的问题编号)