
失去焦点时停止最小化
防止Minecraft全屏窗口在失去焦点时最小化。
查看大图失焦时阻止最小化可以防止 Minecraft 在使用原生全屏模式时,当你切换窗口(Alt-Tab)、点击另一个显示器或以其他方式将焦点移出游戏时,自动最小化自身。
这是一个微小的客户端实用模组。安装与你 Minecraft 版本和加载器匹配的 jar 文件,当焦点改变时,全屏窗口应保持打开状态。
它做了什么
- 防止原生全屏 Minecraft 窗口在失去焦点时自动最小化。
- 在 Minecraft 的 LWJGL 后端所使用的窗口系统级别工作。
- 在 Minecraft 创建窗口以及全屏模式改变时重新应用修复(在目标版本暴露这些钩子的情况下)。
它不做什么
- 它不会强制 Minecraft 保持聚焦状态。
- 它不会禁用失焦暂停行为。
- 它不会更改无边框全屏、普通窗口模式或操作系统窗口管理器策略。
- 它不会恢复已被其他程序最小化的窗口。
CurseForge 上的 Minecraft 版本和模组加载器支持
在 Fabric 和 Quilt 上,此模组旨在主动支持从 1.14 到最新版本的所有 Minecraft 版本。Quilt 构建是专门的 Quilt 移植版本,而非重复使用的 Fabric jar 文件。
在 Forge 上,基于现代 GLFW 的移植版本支持 1.13.2、1.16.5、1.17.x、1.18.x、1.19.x、1.20.1 和 1.20.6。同时也提供了针对 1.7.10、1.8.9 和 1.12.x 的旧版 LWJGL2 Forge 移植版本。
在 NeoForge 上,此模组支持 1.20.1、1.20.6 以及从 1.21 到最新版本的版本。
LiteLoader、Babric 和 Better Than Adventure 构建版本不在 CurseForge 上分发。这些版本可在 Modrinth 页面上获取。
此模组没有依赖关系。即使是 Fabric 版本也不使用 Fabric API。
技术细节
现代 Minecraft 版本使用 LWJGL3 和 GLFW。GLFW 有一个 GLFW_AUTO_ICONIFY 窗口属性,默认情况下,该属性可能导致原生全屏窗口在失去焦点时最小化。现代移植版本在 Minecraft 的 GLFW 窗口句柄上将该属性设置为 GLFW_FALSE:
glfwSetWindowAttrib(windowHandle, GLFW_AUTO_ICONIFY, GLFW_FALSE);
不同的 Minecraft 版本通过不同的类暴露原生窗口,因此每个目标版本会钩住相应版本的窗口类:
- 现代的 Fabric、Forge、NeoForge 和 Quilt 构建版本会在
<init>和setMode之后注入到com.mojang.blaze3d.platform.Window中。 - 一些版本将原生句柄字段命名为
window,而另一些版本则命名为handle。 - 独立的 Forge
1.16.5移植版本注入到net.minecraft.client.MainWindow中。
旧版 Forge LWJGL2 移植版本
Minecraft 1.7.10、1.8.9 和 1.12.x 使用 LWJGL2,而非 LWJGL3/GLFW。LWJGL2 没有 GLFW_AUTO_ICONIFY 属性,因此旧版 Forge 移植版本无法使用相同的单行 GLFW 修复。
相反,Forge LWJGL2 移植版本直接修补相关的 Minecraft 和 LWJGL2 显示代码:
- Forge
1.7.10、Forge1.8.9和 Forge1.12.x使用 Forge/FML coremod 转换器。 - 在 Linux 和其他类 Unix LWJGL2 后端(包括许多 BSD 系统)上,模组修补
org.lwjgl.opengl.LinuxDisplay以跳过全屏失焦的图标化路径。 - 在 Windows 上,模组修补
org.lwjgl.opengl.WindowsDisplay以跳过全屏失焦的最小化/显示模式重置路径。 - 在受影响的 Minecraft 版本(例如
1.7.10、1.8.9和1.12.x)上,模组还会抑制 Minecraft 自身的失焦全屏切换逻辑。
macOS 是 LWJGL2 构建版本的主要限制因素。相关的全屏行为是通过 LWJGL2 的原生 Cocoa 后端处理的,而不是通过可在 Java 端修补的显示代码。因此,与 Linux、Windows 以及 FreeBSD 或 OpenBSD 等类 Unix 系统相比,LWJGL2 对 macOS 的支持可能有限。现代的 LWJGL3/GLFW 移植版本则没有这个限制。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。