截图
介绍

Modern UI by Icyllis Milica
描述:
Modern UI(由 Icyllis Milica 开发)是一个面向独立 2D 和 3D 渲染软件开发的桌面应用框架。它利用现代 3D 图形 API 和技术,以高性能提供实时渲染。此外,Modern UI 改进并优化了一组 Google Android 中使用的功能,以及其自带的支持国际化的文本引擎。
Modern UI for Minecraft 是一个基于 Modern UI Core Framework 和 Modern UI Core Extensions 的 Minecraft 模组。它为 Minecraft 环境提供 Modern UI 启动程序和基于 Forge/Fabric 的模组开发 API,从而在 Minecraft 中实现功能强大的图形用户界面。
对于客户端,按下 Ctrl+K 或 ⌘+K(默认设置)即可打开操作中心界面,以配置 Modern UI。(请注意,你可以滑动“偏好设置”界面来配置字体)
该模组还为 Minecraft 提供了功能强大的文本布局引擎和文本渲染系统。
该引擎提供了适用于处理 Unicode 文本的方法,使你在 2D/3D 环境下以任意缩放比例都能获得更易读的文本。具体包括:
- 实时预览并重新加载 TrueType/OpenType 字体
- 更完善的字体回退实现
- 文本抗锯齿和 FreeType 字体微调
- 在 2D/3D 中使用改进的 SDF 文本渲染(同时支持批量渲染)
- 在设备空间中计算精确的字体大小,以实现原生字形渲染
- 使用 Google Noto Color Emoji,并支持全部 Unicode 15.1 表情符号(2023 年 9 月 12 日)
- 可配置的双向文本启发式算法
- 可配置的文本阴影和原始字体大小
- 支持 Unicode 换行以及 CSS line-break 和 word-break
- 快速、精确且异步的 Unicode 文本布局计算
- 更快速且更节省内存的字形矩形打包算法
- 使用真正的灰度纹理(每像素 1 字节,而 Minecraft 使用 4 bpp)
- 兼容 OptiFine、Sodium(Rubidium)、Iris(Oculus)以及许多模组
- 兼容 Minecraft 的 JSON 字体定义(位图字体、TTF 字体)
此外,该模组还提供了许多能够改善游戏性能和游玩体验的实用功能。目前包括:
- 更改界面背景颜色
- 对界面背景图像应用高斯模糊
- 界面背景淡入动画
- 更多窗口模式:全屏(无边框)、最大化(无边框)
- 窗口处于非活动状态(失去焦点)或最小化时,限制帧率并淡出主音量
- 打开背包时暂停单人游戏
- 将 GUI 缩放选项改为滑块,并提供提示文本
- Minecraft 加载完成并进入主菜单时播放“叮”声
- 为原版选择列表和 Forge 滚动面板启用平滑滚动
- 按下“C”键进行缩放,效果与 OptiFine 相同
- 为所有文本框提供撤销/重做(Ctrl+Z/Ctrl+Y)以及 Unicode 字素/单词迭代器
- 播放本地音乐,并支持拖动进度和查看频谱
- 在聊天中支持 Discord/Slack/GitHub/IamCal/JoyPixels 表情符号短代码
- 精美的工具提示样式
- 选择圆角边框或普通边框(带阴影效果)
- 添加标题换行并控制标题行间距
- 超出屏幕时自动换行并自动垂直滚动
- 标题行居中,并支持 RTL 布局方向
- 将工具提示精确定位到像素网格(平滑移动)
- 更改背景颜色和边框颜色(支持渐变和动画)
核心功能:
- 支持多种图形 API 的 2D 图形库
- 着色语言的中间表示与 AST
- 符号距离函数与矢量图形渲染
- 图像后处理效果
- 快速矩阵与向量计算
- 图像格式转换
- 动画与过渡框架
- 事件循环与多线程框架
- 文本整形与复杂文本布局引擎
- MVVM 与生命周期处理
- 自动 RTL(从右到左)UI 布局
- 支持 Markdown(CommonMark)渲染
Minecraft 的现代文本引擎:
- 支持彩色 Emoji,使用 Google Noto Color Emoji 15.1,基于 Unicode 15.1 Emoji 列表;
- 支持聊天中的 Emoji 短代码,例如 :rofl: 表示捧腹大笑,支持 Discord 和 Slack 短代码;
- 你可以使用 TTF 或 OTF 字体,配置字体基准大小,设置基线偏移,并设置是否去除文字阴影;
- 可缩放矢量图形,自动切换分辨率级别(最高 96px),原生(非合成)粗体和斜体渲染;
- 在 3D 世界中支持距离场文本渲染,但在 2D GUI 中锐化字体图集;这增强了原有功能:
*在任何缩放下平滑渲染所有字符(例如当你远离告示牌时,或 GUI 中非常小的文本)
- 支持多层文本,将多个段落一起布局,流式布局算法,并引入快速布局缓存;
- 支持快速数字替换、高精度布局与对齐,并平滑绘制快速变化的数字(固定宽度);
- 支持 mip-mapping、抗锯齿、线性采样和超采样抗锯齿(SSAA);
- 更好、更高效地布局 BiDi 文本段落(例如阿拉伯语、意第绪语);使用锐化字体图集;
- 可配置的 BiDi 文本启发式算法,更精确地控制文本方向;支持修复无效代理对;
- 使用 HarfBuzz 文本整形,支持组合字符渲染,例如泰语、天城文、孟加拉语和泰米尔语;
- 支持字素簇断行,支持 Unicode 换行算法;
- 支持上下文感知和基于区域设置的断词与换行;
- 支持像素化字体渲染,支持固定分辨率级别,支持像素对齐;
- 支持位图替换,平滑渲染快速变化的数字,支持 Emoji 渲染;
- 优化布局算法,在 GUI 中绘制文本时提升约 10% 的 FPS
- 使用灰度像素存储纹理,减少 GPU 内存占用
- 减少不必要的 RAM 占用,并大幅减少对象创建
自定义字体
按 Ctrl+K 或 ⌘+K(默认)打开操作中心,进入偏好设置,滑动屏幕到第二页,你将看到字体设置。
- 首选字体族是你最想要的字体。它可以是操作系统字体或 TrueType/OpenType 字体(集合)文件。
- 当首选字体族不可用时,将使用后备字体族。
现代文本引擎:
Modern UI 遵循 Minecraft 的 JSON 字体定义,仅忽略字形提供器类型 ‘legacy_unicode’ 和 ‘unihex’。上述 Modern UI 字体族将作为 Minecraft 字体的后备字体族。默认字体行为(在偏好设置 > 文本布局中)为你提供一个选项,可从 Minecraft 默认字体(minecraft:default)中移除某些字形提供器。要避免使用原版 ASCII 字体,只需将其设置为保留其他。注意此选项仅在你未开启强制 Unicode 字体时有效。如果你想使用原版 Unicode 字体,只需下载 GNU Unifont 的 OTF 版本。
Minecraft 的附加功能:
- 支持设置窗口模式,例如无边框全屏、无边框窗口化;
- GUI 界面背景淡入动画和两遍高斯卷积模糊效果,可配置背景渐变颜色;
- 平滑圆角提示框样式,支持 RTL 布局,可配置背景和边框颜色;
- 游戏加载完成时播放“叮”的音效;
- 支持打开背包时暂停游戏;
- 全新的 GUI 缩放算法和滑块式 GUI 缩放控件(不限制为偶数,兼容 OptiFine);
- 为原版和 Forge 滚动面板添加平滑滚动;
- 异步网络处理器;服务器自动关闭;
- 所有功能均可在配置文件或操作中心界面中进行配置(默认快捷键为 Ctrl+K)
Modern UI for Fabric 移除了一些功能(与 Forge 版本相比):
- 类似 OptiFine 的缩放功能,在 GUI 中隐藏准星
- 导出更多调试信息,扩展崩溃报告
与 Caxton 文本渲染技术的比较
Caxton 模组以其 MSDF 文本渲染而闻名,你可以在 Caxton 和 Modern Text Engine 之间进行选择。
相似之处:
- 都使用 HarfBuzz 文本整形
- 都支持 Unicode 文本处理
- 都支持 Unicode 换行和字素簇断行
- 都兼容光栅渲染模式下的 Iris
- 都拥有高效的矩形打包算法,进一步优于 Mojang 的算法
区别:
- Caxton 使用更新版本的 HarfBuzz,而我们使用较旧的版本(随 JDK 17 一同提供,JDK 21 中已更新)
- Caxton 使用多通道 SDF,放大文本时渲染效果更锐利,而我们的渲染效果会更加圆润
- 我们兼容 OptiFine,而 Caxton 不兼容
- 我们支持彩色表情符号,而 Caxton 不支持
- 我们支持 FreeType 字体微调,而 Caxton 从不支持;字体微调有助于在低分辨率显示器上提升显示效果
- 我们支持在屏幕空间中对原生字形图像进行完美采样,非常适合 2D 渲染
- 我们支持无需额外 GPU 资源的单通道 SDF 文本渲染,始终使用 1bpp 纹理
- 我们为缩小文本提供了智能 SDF 采样方法,而 Caxton 没有
- 无需等待 MSDF 纹理生成,只需单击一下即可在游戏中切换字体
- 我们支持多种文本方向判断规则和换行策略
- 我们不使用额外的原生库,因此 Modern UI 可以在 macOS 上运行
- 我们的布局性能略高于 Caxton,并且占用更少的 RAM
模组集成与兼容性:
兼容(请注意以下事项):
OptiFine、Sodium、Iris、Create、AoA3
如果光影处于启用状态,在 3D 中使用 Modern Text Shader 会自动禁用,否则会导致发光文本的轮廓变得不可见。
具有类似功能的模组会被替代:
- 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 起我们支持彩色 emoji 渲染;此外,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 文本组件缓存)
支持的 MC 版本:
- 积极维护中: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 及以上版本。旧版本中可能缺少部分功能。
PC 配置要求(与原版 Minecraft 相同)
有些人不愿意使用 Modern UI,因为他们认为 Modern UI 对电脑配置要求很高。事实上,只要你能玩原版 Minecraft,你就一定能玩 Modern UI。除非你忘记更新显卡驱动。
- 操作系统:Windows 8.1+、带 X11 或 Wayland 的 Linux、macOS
- 架构:x64 或 arm64
- 显卡:GeForce 210 或更好
- 显卡驱动:OpenGL 3.3+ 或 Vulkan 1.1+,越高越好
- Java:Java 17+,越高越好
常见问题:
问:默认字体行为与强制 Unicode 字体有什么区别?
答:首先,Modern UI 始终将 Unicode 字体重定向到 Modern UI 默认字体。默认字体行为在 1.19+ 中为 KEEP ALL,此时 ASCII 字符使用 Minecraft 默认字体。KEEP OTHER 意味着不再使用 Minecraft 默认字体,但额外字体(例如某些小游戏地图中的字体)仍然可用。这就是与强制 Unicode 字体(IGNORE ALL)的区别。
问:Modern UI 开销高吗?会降低应用程序性能吗?
A:不会,Modern UI 不会显著影响 CPU、GPU、RAM 和 VRAM 的占用。这是因为 Modern UI 本身经过了良好的优化,同时还提供了大量新功能和效果。Modern UI 框架的效率已知高于基于 Chromium 的应用程序。
对于低端电脑来说,屏幕模糊效果可能会严重影响性能,因为 Minecraft 原版不允许在渲染目标上生成 mipmap。即便如此,Modern UI 提供的模糊效果仍然比名为“Blur”的模组快得多。
问:如何禁用对原版的所有改动?我不想要这些功能。
答:只有 GUI 缩放算法和部分底层代码无法配置,其他功能都可以在操作中心界面中禁用(默认快捷键为 Ctrl+K),也可以通过配置文件禁用(gameDir/config/ModernUI/),因为 Modern UI 本质上是一个框架。
问:这个模组是仅客户端模组吗?我需要在服务器上安装它吗?
答:从 MC 1.19.2 开始,已经没有必要再在服务器上安装这个模组了。所有服务端功能都已弃用,并已实现到 Forge API 和 Fabric API 中。
问:如何开始基于 Modern UI 开发我的模组?
答:这个项目目前仍处于早期阶段,规范也还在编写中。你可以查看 JavaDoc。示例包括 Modern UI 本身(操作中心)和 Flux Networks。如果你有任何问题,欢迎加入我们的 Discord 服务器。
评论
登录后评论和评分