Minecraft Java Edition 26.3 Snapshot 4 切换至 SDL3

Minecraft Java Edition 26.3 Snapshot 4 切换至 SDL3

TL;DR – 变更内容及其意义

Minecraft Java Edition 的 26.3 Snapshot 4 用 SDL3 取代了长期使用的 GLFW 后端,用于窗口管理、输入处理和平台集成。此切换使引擎底层代码现代化,提升跨平台一致性,并启用诸如物理键码等新输入特性,同时还带来大量数据包、战利品表和世界生成的更新。


1. SDL3 取代 GLFW – 技术影响

直接后果

  • 窗口与输入:所有窗口创建、全屏处理以及鼠标/键盘输入现在都通过 SDL3 而非 GLFW。键盘处理使用 SDL 扫描码表示物理键位,使用 SDL 键码表示布局相关的快捷键。
  • 全屏行为:无边框全屏成为默认;在无边框和独占模式之间切换不再需要重启。独占全屏仍属实验性功能——在 Windows 多显示器环境以及 Wayland 上会崩溃。
  • 平台集成:Linux 在可用时优先使用原生 Wayland;macOS 的独占全屏支持被移除。

为什么选 SDL3?

Hacker News 上的评论指出,SDL3 的 LWJGL 绑定是由一位 GTNH 模组包开发者贡献的,完成了“原版 → 模组 → 原版”的循环。SDL3 的 API 因其简洁设计受到赞誉,其他游戏(例如 osu!)在从 SDL2 升级到 SDL3 后报告了延迟下降。虽然 Mojang 并未公开具体理由,社区普遍认为 SDL3 提供了比日渐老化的 GLFW 更现代、维护活跃的基础。

"SDL 一直都有很棒的 API 设计,但在 SDL3… 真是太棒了!" – hackernews 评论


2. 新的游戏玩法与 UI 调整

游戏玩法新增

  • 观察者传送门 – 观察者模式下的玩家现在可以与传送门交互进行传送。
  • 自定义熔炉燃料 – 新的 minecraft:cooking_fuelminecraft:brewing_fuel 组件允许数据包定义自定义燃烧时间和速度倍率。
  • 告示牌文本组件minecraft:sign_text_frontminecraft:sign_text_back 在物品提示中存储告示牌文字;默认禁用点击事件,可通过 allow_op_features 标志恢复旧行为。
  • 村民食物minecraft:villager_food 组件定义了村民可食用物品的营养值。

UI 变化

  • 删除了原始输入鼠标设置;鼠标始终使用相对模式。
  • 键位绑定现在引用物理键位,修复了布局特定的映射错误。
  • 最小窗口尺寸现在为 320 × 240 像素。
  • 调试覆盖层新增独立的 GUI 缩放、玩家速度读数以及刷新率显示。
  • 创造模式物品栏顺序重新组织,先显示非分层矿物,再显示分层物品。

3. 数据包、战利品表与谓词大改

版本提升

  • 数据包版本 → 111.0
  • 资源包版本 → 92.0

支持注册表的战利品表

  • 战利品表类型现在接受注册表元素和标签引用,允许在大多数字段中使用内联值、命名空间 ID 或以 # 开头的标签。
  • 已废弃的谓词、物品修改器和槽位来源的引用类型已被移除。

谓词与数值提供者扩展

  • 新的原版谓词如 minecraft:block/fast_cookingminecraft:match_block 替代了旧的 block_state_property 类型。
  • 数值提供者现在必须显式声明 type 字段;许多新提供者(例如 minecraft:cooking/time_coalminecraft:brewing/speed_default)公开了自定义燃料的燃烧时间和速度数据。

4. 世界生成与密度函数细化

  • 环境属性 取代了生物群系中的 spawner 与 spawn‑cost 字段,统一了怪物生成配置。
  • 特性类型 nether_forest_vegetationtwisting_vinesweeping_vines 已被移除。
  • 用于含水层和矿脉的噪声路由字段被重构为专用的 aquifersore_veins 对象,并为放置逻辑提供显式的密度函数。
  • 新增密度函数运算符(subdivnegatelerpfloorceilroundtruncatebeardifier),扩展了地形塑形工具箱。

5. 已知问题与稳定性说明

  • 独占全屏崩溃 – 在 Windows(尤其是多显示器设置)和 Wayland 上进入独占全屏可能导致崩溃。
  • macOS 独占全屏 – 已不再支持。
  • 最小窗口尺寸 – 游戏现在强制 320 × 240 像素的最小尺寸,修复了窗口可以被缩到零尺寸的 bug。

社区预计这些 bug 会在下一个完整发布前得到修复,因为它们已被多位评论者标记为“阻塞”。


6. Hacker News 上的社区反馈

  • SDL3 采纳 – 用户指出其他游戏(如 osu!)最近迁移到 SDL3 并显著降低了延迟,暗示了性能动机。
  • GLFW 与 SDL 对比 – 有评论者请求关于决策的文档;另一位指出 SDL3 带来了完整的软件渲染器和更多特性,尽管 Minecraft 仍只使用窗口/输入子集。
  • 模组视角 – LWJGL‑SDL3 绑定由 GTNH 模组包开发者贡献,凸显了原版与模组生态之间的开源合作。
  • 引擎化演进 – 有评论认为 Minecraft 正日益成为独立的游戏引擎,而不再仅是一个普通游戏。

"真的很惊讶 Minecraft 正变得越来越像一个独立的游戏引擎,而不只是一个游戏本身。" – Hacker News 用户


7. 如何尝试该快照

  1. 打开 Minecraft Launcher,在 Installations(安装)标签页中启用快照。
  2. 从官方页面下载快照(或跨平台服务器 jar)。
  3. 备份你的存档后再进行测试——快照可能会损坏存档。

8. 变更集概览

  • 后端切换 – 窗口与输入从 GLFW → SDL3。
  • 数据包版本提升 – 111.0,新增燃料组件与告示牌文本处理。
  • 战利品表、谓词与数值提供者大改 – 更灵活的注册表引用。
  • 世界生成重构 – 环境属性、新密度函数以及噪声设置重新组织。
  • UI 与玩法微调 – 观察者传送门交互、键位绑定修复、调试覆盖层增强。
  • 已知 bug – Windows 与 Wayland 上的独占全屏崩溃;macOS 独占全屏已移除。

这些改动为更现代、模块化的引擎架构奠定基础,并为数据包创作者和模组开发者打开了新可能性。

Sources