NoRespLoadFix

NoRespLoadFix

防止Windows在加载整合包时将Minecraft错误标记为“未响应”。

Bug修复

⚠️ 整合包作者请务必阅读最后一项!!

NoRespLoadFix

这是一个客户端 Minecraft 模组(Fabric / Forge / NeoForge),可防止 Windows 在整合包启动、纹理重新加载、世界加载和语言加载等高负载操作期间显示“未响应”对话框。

注意:在概述中,为简洁起见,我将其称为“整合包”,但由于其工作方式,它实际上可以解决 Minecraft 中高负载任务期间的无响应问题。

与旧版本相比,功能本身没有变化。改变的是工具链:将 Architectury API 与 Stonecutter 结合,使多版本和多加载器支持变得更加容易,这也使得持续的积极开发变得切实可行。

工作原理

使用 DisableProcessWindowsGhosting()——微软提供的正为此用例设计的 Win32 API——来永久禁用进程在操作系统层面的窗口“幽灵化”。在可用的地方,这会在大多数 Minecraft 代码运行之前尽早应用(例如通过 Forge/NeoForge 的 ITransformationService 或 Fabric 的 preLaunch),包括早期的加载窗口,从而尽早开始覆盖。 一个次要的心跳线程(PostMessage(WM_NULL))在整个游戏会话中作为轻量级后备方案运行。

防护层次

层次 机制 应用时机
1(主要) DisableProcessWindowsGhosting() 在加载窗口出现之前
2(后备) PostMessage(WM_NULL) 线程 从客户端设置开始直到关闭

兼容性

  • 不会从后台线程调用任何 GLFW 函数
  • 不挂钩 WindowProc 或拦截消息
  • 与 Embeddium(Rubidium)、ModernFix 等优化模组兼容

要求

  • Minecraft 1.16.5 ~ 26.1.2 Fabric / Forge / NeoForge
  • Architectury API
  • 仅客户端

⚠️ 重要注意事项与最佳实践

掩盖真实问题

此模组通过告知 Windows 进程仍然存活(即使在重负载状态下)来工作。虽然这能成功防止误导性的“未响应”白屏,但它有一个架构上的权衡: 如果你的游戏出现真正的无限循环、死锁或严重崩溃,Windows 不会立即检测到。 该模组会继续报告进程为活动状态,这可能会延迟你对真实冻结的感知。

建议

  • 对于稳定的整合包与普通玩家: 强烈推荐。如果你的整合包已经稳定,此模组可以完美地消除启动重负载操作期间那些令人沮丧的误报对话框。
  • 对于整合包开发者与 Alpha 测试: 在积极调试时请谨慎使用。如果你经常更换模组或排查实验性配置,你可能需要暂时禁用此模组,以便在真正出问题时能立即收到 Windows 操作系统的反馈。