Fullscreen Windowed
[!INFO] Git Commit:
d7b512b| Updated: 2026-10-01
Fullscreen Windowed 是一个纯客户端的窗口模式 mod(作者 Hancin,2015 年首发), 它让 Minecraft 跑在无边框窗口(borderless windowed)而不是原版的独占全屏。
它不是一个通用的"全屏/无边框切换器"。原版 Minecraft 自带的全屏键位会被它
抢走并替换成一个绑定到 KEY_NONE 的占位键位,原版全屏因此在逻辑上永不触发;
玩家改用原来那个全屏键来触发无边框切换。源码注释说明这是为了避免游戏崩溃,
并警告占位键位不能绑到任何有效按键。
主要特性:
- 无边框实现:靠
glfwSetWindowAttrib(GLFW_DECORATED, GLFW_FALSE)去边框 + 始终Display.setFullscreen(false),即"GLFW 改装饰、LWJGL 报告非全屏", 而不是 LWJGL 的真全屏模式; - 多显示器:可指定用第几块屏(1 起),或设为
0自动按窗口中心点所在屏; 指定屏号接不上时自动退回自动选择; - 自定义尺寸(advanced,默认关):宽高都须 > 256 才生效,X/Y 在指定屏号时 解释为相对该屏原点的偏移;
- 启动即生效:构造器先把
gameSettings.fullScreen强制置false(避开真全屏启动的 GL 上下文问题),再在postInit延迟 5 tick 补上无边框; - OptiFine 兼容模式(默认开):改用延迟初始化以免与其他改 GL 的 mod 冲突。
技术栈:LWJGL 3 的
GLFW常量 + lwjgl3ify 的org.lwjglx.opengl.Display与org.lwjglx.input.Keyboard,类上标注@Lwjgl3Aware。 依赖声明只有org.lwjgl:lwjgl-glfw:3.3.2。gradle.properties中usesMixins = false,无 coremod,无 AccessTransformer。
⚠️
mcmod.info中modid/name/version均为${modId}/${modName}/${modVersion}占位符。实测 modid 来自gradle.properties的modId = fw—— 与仓库名、与modGroup = com.hancinworld.fw的末段都不同名。@Mod注解写的是modid = Tags.MOD_ID,而Tags是构建期生成的类,gradleTokenModId = MOD_ID指定了替换,因此源码里看不到字面量 modid, 必须从gradle.properties取。资源域为fw(语言文件在assets/fw/lang/)。
配置
- 配置项 - 9 个实际生效的配置(general 3 + advanced 6)、
Reference默认值回退、以及第 10 个被注释掉而从未写入的onlyRemoveDecorations - 全屏切换流程 -
toggleFullScreen的 12 步顺序、去边框那一行、反射调用Minecraft.resize、两条触发路径的差异 - 显示器选择与边界计算 - 四级分支优先级、1 起索引、
> 256门槛、X/Y 相对偏移与降级 - 启动初始化 - 构造器抢先禁全屏、
postInit三分支、5 tick 延迟与 40 帧去抖
键位
- 全屏键位接管 - 备份并替换
field_152395_am、KEY_NONE占位键、接管/归还状态机