跳转到内容
我的世界XyeBBS论坛3群 进群吹水聊天!众多整合包作者、插件作者、玩家在内哦!不定时发福利,公布重要通知!
...

现代用户界面

(Modern UI)
现代桌面图形应用程序框架与底层 3D 图形引擎
仅客户端前置优化实用

logo

Modern UI(作者:Icyllis Milica)

简介:

Modern UI(由 Icyllis Milica 开发)是一个专为独立 2D 和 3D 渲染软件设计的桌面应用程序框架。它利用现代 3D 图形 API 和技术,提供高性能的实时渲染能力。此外,Modern UI 还改进并优化了一套被 Google Android 使用的功能,并拥有自研的国际化文本渲染引擎。

Modern UI for Minecraft 是一个基于 Modern UI 核心框架及其扩展模块开发的 Minecraft 模组(Mod)。它在 Minecraft 环境中提供了 Modern UI 的引导程序,并基于 Forge/Fabric 提供了模组开发 API,使开发者能够在 Minecraft 中创建强大的图形用户界面(GUI)。

对于客户端玩家,默认按下 Ctrl+K 或 ⌘+K 即可打开“操作中心”屏幕以配置 Modern UI。(提示:您可以在“偏好设置”页面中滑动屏幕来配置字体)

本模组还包含一个专为 Minecraft 设计的强大文本布局引擎和文本渲染系统。该引擎提供了处理 Unicode 文本的合适方法,让您在任何缩放比例下(2D/3D 环境)都能获得更清晰易读的文本。具体特性包括:

  • 实时预览并重新加载 TrueType/OpenType 字体
  • 更优秀的字体回退(fallback)机制
  • 支持抗锯齿文本和 FreeType 字体微调(hinting)
  • 在 2D/3D 中使用改进的 SDF(有向距离场)文本渲染(同时支持批量渲染)
  • 在设备空间中精确计算字体大小以实现原生字形渲染
  • 使用 Google Noto Color Emoji,支持所有 Unicode 15.1 表情符号(截至 2023 年 9 月 12 日)
  • 可配置的双向文本启发式算法
  • 可配置的文本阴影和原始字体大小
  • 支持 Unicode 换行以及 CSS 标准的 line-break 和 word-break
  • 快速、精确且异步的 Unicode 文本布局计算
  • 更高效、更快的字形矩形打包算法
  • 使用真实的灰度纹理(每像素 1 字节,而原版 Minecraft 为 4 字节)
  • 兼容 OptiFine、Sodium (Rubidium)、Iris (Oculus) 以及众多其他模组
  • 兼容 Minecraft 原生的 JSON 字体定义(位图字体、TTF 字体)

此外,本模组还提供了许多提升游戏性能和体验的实用工具。目前包括:

  • 更改屏幕背景颜色
  • 对屏幕背景图像应用高斯模糊
  • 屏幕背景淡入动画
  • 更多窗口模式:全屏(无边框)、最大化(无边框)
  • 当窗口失去焦点(非活动状态)或最小化时,限制帧率并渐弱主音量
  • 打开物品栏时暂停单人游戏
  • 将 GUI 缩放选项改为滑块并提供提示文本
  • Minecraft 加载完成并进入主菜单时播放"Ding"音效
  • 在原版选择列表和 Forge 滚动面板中启用平滑滚动
  • 按下"C"键进行缩放(功能同 OptiFine)
  • 所有文本字段支持撤销/重做(Ctrl+Z/Ctrl+Y)以及 Unicode 字素/单词迭代
  • 播放本地音乐,支持 seek 定位和频谱查看
  • 聊天中支持 Discord/Slack/GitHub/IamCal/JoyPixels 的表情符号短代码(如 :rofl:)
  • 精美的工具提示(Tooltip)样式:
    • 可选择圆角边框或普通边框(带阴影效果)
    • 支持标题换行和控制标题行间距
    • 超出屏幕时自动换行和自动垂直滚动
    • 标题行居中,支持从右向左(RTL)布局方向
    • 将工具提示精确对齐到像素网格(实现平滑移动)
    • 可更改背景色和边框色(支持渐变和动画)

核心功能:

  • 支持多种图形 API 的 2D 图形库
  • 着色语言的中间表示(IR)和抽象语法树(ASTs)
  • 符号距离函数与矢量图形渲染
  • 图像后处理特效
  • 快速的矩阵与向量计算
  • 图像格式转换
  • 动画与过渡框架
  • 事件循环与多线程框架
  • 文本成形(Shaping)与复杂文本布局引擎
  • MVVM 架构与生命周期管理
  • 自动 RTL(从右向左)UI 布局
  • 支持 Markdown (CommonMark) 渲染

专为 Minecraft 打造的现代文本引擎:

  • 支持彩色表情符号,使用基于 Unicode 15.1 表情列表的 Google Noto Color Emoji 15.1;
  • 聊天中支持表情符号短代码,例如 :rofl: 表示笑得打滚,兼容 Discord 和 Slack 短代码;
  • 可使用 TTF 或 OTF 字体,可配置字体基准大小、基线偏移量,并可设置是否添加文本阴影;
  • 支持可缩放矢量图形,自动切换分辨率级别(最高达 96px),原生(非合成)粗体和斜体渲染;
  • 支持在 3D 世界中进行距离场文本渲染,同时在 2D GUI 中锐化字体图集;这增强了一项原有功能:
    • 在任何缩放比例下平滑渲染所有字符(例如远离告示牌时,或 GUI 中极小的文本)
  • 支持多层文本,可将多个段落一起布局,采用流式布局算法,并引入快速布局缓存;
  • 支持快速数字替换、高精度布局与对齐,并能平滑绘制快速变化的数字(等宽);
  • 支持 mip-mapping、抗锯齿、线性采样和超采样抗锯齿(SSAA);
  • 更好且更高效的 BiDi(双向)文本段落布局(如阿拉伯语、意第绪语);使用锐化的字体图集;
  • 可配置的 BiDi 文本启发式算法,以更精确地控制文本方向;支持修复无效的代理对(surrogate pairs);
  • 使用 HarfBuzz 进行文本成形,支持组合字符渲染,如泰语、天城文、孟加拉语和泰米尔语;
  • 支持字素簇断行,支持 Unicode 换行算法;
  • 支持上下文感知和基于区域设置的单词断行与换行;
  • 支持像素化字体渲染,支持固定分辨率级别,支持像素对齐;
  • 支持位图替换,平滑渲染快速变化的数字,支持表情符号渲染;
  • 优化布局算法,在 GUI 中绘制文本时可提升约 10% 的 FPS;
  • 使用灰度像素存储纹理,减少 GPU 显存占用;
  • 减少不必要的 RAM 使用,大幅降低对象创建开销。

自定义字体

默认按下 Ctrl+K 或 ⌘+K 打开操作中心,进入“偏好设置”,将屏幕滑动到第二页,即可看到字体设置。

  • 首选字体族是您最想要使用的字体。它可以是操作系统字体,也可以是 TrueType/OpenType 字体(集合)文件。
  • 回退字体族在首选字体不可用时使用。

现代文本引擎说明:
Modern UI 遵循 Minecraft 的 JSON 字体定义,仅忽略 'legacy_unicode' 和 'unihex' 类型的字形提供者。上述提到的 Modern UI 字体族将作为 Minecraft 字体的回退字体。在“偏好设置 > 文本布局”中的默认字体行为选项,允许您从 Minecraft 默认字体(minecraft:default)中移除某些字形提供者。若想避免使用原版 ASCII 字体,只需将其设置为“保留其他(Keep Other)”。注意:此选项仅在未开启“强制 Unicode 字体”时有效。如果您想使用原版 Unicode 字体,请下载 GNU Unifont 的 OTF 版本。

Minecraft 额外功能:

  • 支持设置窗口模式,如无边框全屏、无边框窗口化;
  • GUI 屏幕背景淡入动画及两遍高斯卷积模糊效果,可配置背景渐变颜色;
  • 平滑圆角工具提示样式,支持 RTL 布局,可配置背景和边框颜色;
  • 游戏加载完成时播放"Ding"音效;
  • 支持打开物品栏时暂停游戏;
  • 新的 GUI 缩放算法及滑块控件(不限于偶数,兼容 OptiFine);
  • 为原版和 Forge 滚动面板添加平滑滚动;
  • 异步网络处理器;服务器自动关闭;
  • 所有功能均可在配置文件或操作中心屏幕(默认快捷键 Ctrl+K)中配置。

Fabric 版本的 Modern UI 移除了部分功能(相比 Forge 版本):

  • 类 OptiFine 的缩放功能、在 GUI 中隐藏准星
  • 转储更多调试信息、崩溃报告扩展

与 Caxton 文本渲染技术的对比

Caxton 模组以其 MSDF 文本渲染而闻名,您可以在 Caxton 和现代文本引擎之间进行选择。

相似之处:

  • 均使用 HarfBuzz 进行文本成形
  • 均支持 Unicode 文本处理
  • 均支持 Unicode 换行和字素簇断行
  • 在光栅渲染模式下均兼容 Iris
  • 均拥有高效的矩形打包算法,且优于 Mojang 官方实现

不同之处:

  • Caxton 使用较新版本的 HarfBuzz,而我们使用较旧版本(随 JDK 17 捆绑,JDK 21 中已更新)
  • Caxton 使用多通道 SDF,渲染放大文本更锐利,而我们渲染结果略显圆润
  • 我们兼容 OptiFine,而 Caxton 不兼容
  • 我们支持彩色表情符号,而 Caxton 不支持
  • 我们支持 FreeType 字体微调(hinting),而 Caxton 从不支持;字体微调在低分辨率显示器上效果显著
  • 我们支持在屏幕空间中对原生字形图像进行完美采样,非常适合 2D 渲染
  • 我们支持单通道 SDF 文本渲染,无需额外 GPU 资源,始终使用 1bpp 纹理
  • 我们对缩小文本拥有智能 SDF 采样方法,而 Caxton 没有
  • 无需等待 MSDF 纹理生成,游戏中一键即可切换字体
  • 我们支持多种文本方向启发式策略和换行策略
  • 我们不依赖额外的原生库,因此 Modern UI 可在 macOS 上运行
  • 我们的布局性能略高于 Caxton,且占用更少内存

模组集成与兼容性:

兼容模组(需注意):

OptiFine, Sodium, Iris, Create, AoA3
若启用了着色器(Shaders),在 3D 中使用现代文本着色器 将自动禁用,否则会导致发光文本轮廓不可见。

功能相似的模组将被替代:

  • Blur (版本 1.15 ~ 1.21.8;原因:功能全覆盖,优化更佳)
    • Blur 模组声称使用高斯模糊,但实际上使用的是两遍盒状模糊。而 Modern UI 提供真正的单遍高斯模糊,效果优于 Blur 模组。
  • Controlling (版本 1.15;原因:实现方式不同)
  • TipTheScales (版本 1.15 ~ 1.21.8;原因:实现方式不同)
  • Inventory Pause (版本 1.18 ~ 1.21.1;原因:实现方式不同)
  • Emojiful (版本 1.18 ~ 1.21.1;原因:自 3.5.0 起我们已支持彩色表情符号渲染;此外,Emojiful 代码质量极差,会导致游戏多处崩溃;您可能遇到游戏冻结、显存占用过高、渲染异常以及诸多性能和模组兼容性问题)
  • Borderless Window (版本 1.18 ~ 1.21.4;原因:实现方式不同)
  • Ding (版本 1.18 ~ 1.21.4;原因:实现方式不同)
  • SmoothScrollingEverywhere (版本 1.18 ~ 1.19;原因:实现方式不同)
  • FPS Reducer (版本 1.18 ~ 1.21.8;原因:实现方式不同)

冲突及解决方案:

  • Emojiful (版本 1.16 ~ 1.21.1;不建议使用 Emojiful;若必须使用,请通过配置屏幕或引导属性禁用 Modern UI 文本引擎)
  • Legendary Tooltips (版本 1.16 ~ 1.21.4;解决方案:通过配置屏幕禁用 Modern UI 工具提示)
  • FeyTweaks (版本 1.18 ~ 1.21.1;解决方案:在 FeyTweaks 的 mixin 配置中禁用 TextRendererMixin)
  • SmoothScrollingEverywhere (版本 1.18 ~ 1.19;解决方案:通过配置屏幕禁用 Modern UI 平滑滚动)
  • Caxton (版本 1.18 ~ 1.21.8;解决方案:通过配置屏幕或引导属性禁用 Modern UI 文本引擎)
  • ImmediatelyFast (版本 1.18 ~ 1.21.8;解决方案:
    • 对于 1.18 ~ 1.21.4:禁用 ImmediatelyFast 的 hud_batching、font_atlas_resizing 和 fast_text_lookup;否则可能出现随机游戏崩溃;
    • 对于 1.21.6 ~ 1.21.8:禁用 ImmediatelyFast 的 avoid_redundant_framebuffer_switching)
  • Untranslated Items (版本 1.18 ~ 1.21.4;解决方案:通过配置屏幕禁用 Modern UI 文本组件缓存)

支持的 Minecraft 版本:

  • 积极维护中:1.21.8, 1.21.7, 1.21.6, 1.21.1, 1.21, 1.20.1, 1.20
  • 即将停止支持:1.21.4
  • 不再支持:1.21.3, 1.21.2, 1.20.6, 1.20.4, 1.20.2, 1.19.4, 1.19.2, 1.18.2, 1.18.1, 1.18, 1.17.1, 1.16.5, 1.16.4, 1.16.3, 1.16.2, 1.16.1, 1.15.2, 1.14.4

本页面上的所有描述均适用于 Minecraft 1.20.1 及以上版本。部分功能在旧版本中可能缺失。

电脑配置要求(与原版 Minecraft 相同)

有些人不愿使用 Modern UI,因为他们认为其对电脑配置要求很高。事实上,只要您能运行原版 Minecraft,就一定能运行 Modern UI。除非您忘记更新显卡驱动。

  • 操作系统:Windows 8.1+, Linux (X11 或 Wayland), macOS
  • 架构:x64 或 arm64
  • 显卡:GeForce 210 或更高
  • 显卡驱动:OpenGL 3.3+ 或 Vulkan 1.1+,版本越高越好
  • Java:Java 17+,版本越高越好

常见问题解答 (FAQ):

Q: “默认字体行为”和“强制 Unicode 字体”有什么区别?

A: 首先,Modern UI 始终将 Unicode 字体重定向到 Modern UI 默认字体。默认字体行为在 1.19+ 版本中默认为“保留全部(KEEP ALL)”,此时 Minecraft 默认字体用于 ASCII 字符。“保留其他(KEEP OTHER)”意味着不再使用 Minecraft 默认字体,但其他附加字体(例如某些小游戏地图中的字体)仍可用。这与“强制 Unicode 字体(IGNORE ALL)”不同。

Q: Modern UI 开销大吗?会降低应用性能吗?

A: 不会,Modern UI 对 CPU、GPU、RAM 和 VRAM 的使用没有显著影响。这是因为 Modern UI 本身具有良好的优化,同时又提供了大量新功能和特效。Modern UI 框架的效率已知高于基于 Chromium 的应用程序。 对于低端电脑,屏幕模糊效果可能会成为性能瓶颈,因为原版 Minecraft 不允许在渲染目标上生成 mip-map。即便如此,Modern UI 提供的模糊效果也比名为'Blur'的模组快得多。

Q: 如何禁用所有对原版的修改?我不想要这些功能。

A: 只有 GUI 缩放算法和一些底层代码无法配置,其他所有功能都可以在操作中心屏幕(默认快捷键 Ctrl+K)或配置文件(gameDir/config/ModernUI/)中禁用,因为 Modern UI 本质上是一个框架。

Q: 这个模组是纯客户端模组吗?需要在服务器上安装吗?

A: 自 MC 1.19.2 起,再也没有理由在服务器上安装此模组。所有服务器端功能均已弃用,并迁移至 Forge API 和 Fabric API 实现。

Q: 如何开始基于 Modern UI 开发我的模组?

A: 该项目仍处于早期阶段,规范仍在编写中。您可以查看 JavaDoc。示例包括 Modern UI 本身(操作中心)和 Flux Networks。如有任何问题,欢迎加入我们的 Discord 服务器。

问题反馈:

所有问题报告请提交至 GitHub Issue 追踪器。

加入我的 Discord 服务器进行讨论和提出建议。

资源外链

选择礼物

使用社区积分,为喜欢的作品送上一份支持

加载中...

打赏记录

感谢每一位送出礼物的社区成员

0 次支持0 积分
正在加载内容…