开启辅助访问      
收藏本站

站内搜索

搜索
热搜: 下载 1.21 1.20

Minecraft(我的世界)苦力怕论坛

[模组] [1.20.1] Auto Window Size —— 自动窗口大小、居中与最小尺寸锁定

 发表于 9 小时前 | 显示全部楼层 |阅读模式 IP:湖北省
AI 速览2026-09-15 09:00 生成

Auto Window Size:Forge 1.20.1 客户端模组,启动自动设定窗口大小并居中、锁定最小尺寸

这是一个面向 Minecraft 1.20.1 Forge 的纯客户端模组,启动后延迟约 1.5 秒把游戏窗口设为配置分辨率并居中,同时锁定最小窗口尺寸,防止玩家拖动窗口导致整合包 UI 布局错位。默认配置为 1280×720,硬编码下限 856×482,可通过配置文件、视频设置内的窗口设置界面、按键或 /aws 系列指令调整,并支持多显示器居中与全屏自动禁用。适合整合包作者、喜欢小窗口游玩的玩家以及多显示器用户。

获取方式
  • CurseForge 发布页获取模组
  • Modrinth 发布页获取模组
  • MC 百科页面获取模组
  • BBSMC 发布页获取模组
  • GitHub Releases 下载最新版本
  • 仅支持 Minecraft 1.20.1 与 Forge 47.x,为唯一维护测试版本
  • 纯客户端模组,无需安装在服务端
  • 配置值在启动时读取,修改后需重启游戏生效
  • 配置分辨率高于屏幕分辨率时锁定自动禁用且不改动窗口
  • 快捷键默认未绑定,需自行在控制设置中绑定
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
模组资源
中文名: 自动窗口大小
外语名: Auto Window Size
类型: 主体 
来源: 原创
前置MOD: -
支持版本: 1.20.x 
支持API: |Forge| 
原帖地址: https://www.mcmod.cn/class/30769.html
下载地址: https://bbsmc.net/mod/autowindowsize
语言支持: 简体中文 English 
最后更新: 2026-09-14
本帖最后由 ㅤㅤjuㅤ 于 2026-9-15 08:58 编辑

Minecraft Forge 1.20.1 客户端模组 | 自动窗口大小、居中与最小尺寸锁定

⚠ 平台提示:本模组仅支持桌面版 Minecraft(Windows / macOS / Linux),无法在手机版(基岩版 / 手机端)上运行。

📮 关于 v1.0.4 源码的说明:由于作者是 GitHub / Git 新手,在更新 1.0.4 过程中出现过操作失误,曾导致仓库文件一度混乱。如果你下载的源码与实际发布的 jar 对不上,请联系作者邮箱 3270728922@qq.com 获取真正的源码。


下载地址


目录
  • 制作目的
  • 功能特性
  • 分辨率优先级
  • 锁定机制详解
  • 分辨率过低检测
  • 全屏行为
  • 指令
  • 进游戏状态提示
  • 窗口设置界面
  • 安装方法
  • 配置文件
  • 键位绑定
  • 多显示器支持
  • 技术信息
  • 常见问题
  • 更新日志
  • 致谢


制作目的
在制作整合包时,我经常遇到这样的问题:好不容易把各个模组的 UI 界面布局调试好了,结果玩家换了一个分辨率启动游戏,窗口大小变了,所有 UI 布局全乱了。
为了解决这个问题,我做了这个模组:启动时自动把窗口设置为指定大小并居中,同时锁定最小窗口尺寸,确保整合包的 UI 布局在不同玩家的电脑上都能保持一致。

Mod 核心目的
这个模组存在的根本理由,是把"游戏窗口大小"从一次偶然,变成一个可控、可复现、可约束的选择:
  • 稳定整合包体验:让窗口尺寸成为整合包作者可以提前规划的一部分,而不是交给玩家的启动习惯。
  • 保护 UI 布局:通过"最小尺寸锁定",确保任何经过调试的界面都不会因为玩家随手拖动窗口边缘而错位。
  • 轻量、无侵入:只操作窗口本身的尺寸与位置,不修改任何游戏内机制、不挂钩任何玩法逻辑,尽可能不与其他模组产生冲突。
  • 开箱即用且可定制:有默认值(1280×720)即装即用,也提供配置文件、界面按钮、按键与指令四种方式按需微调。


设计取舍
做这个模组时,我刻意守住了几条边界:
  • 只动窗口,不碰游戏内:不改 GUI 缩放、不改任何游戏内 UI、不挂钩玩法逻辑。窗口本质是操作系统层面的事,能不进游戏内部就不进,因此几乎不会和别的模组冲突。
  • 延迟生效而非立刻:启动后等约 1.5 秒再改窗口,是为了不拉伸加载界面、也给低配机一点缓冲,而不是一加载完成就硬切。
  • 硬下限宁低勿高:最小分辨率写死 856×482(16:9),宁可让更多老一点的显示器也能用,也不把门槛抬高。
  • 优雅降级而不是报错:一旦配置尺寸超过玩家屏幕,不崩溃、不弹窗,只是静默禁用锁定并在聊天栏说明原因。
  • 默认不抢键:快捷键默认不绑定,避免和玩家已经习惯的键位冲突;想用的人自己去控制设置里绑。


适合谁
  • 做整合包、需要各模组 UI 布局在不同分辨率下保持一致的作者;
  • 喜欢小窗口贴边玩、又怕一不小心把窗口拖太小的玩家;
  • 使用多台显示器、希望窗口自动落在指定屏幕居中的玩家。


未来规划
这是我(作者)第一次制作 Minecraft 模组,因此现阶段保持克制、先把一件事做扎实:
  • 当前仅支持 Minecraft 1.20.1 / Forge。这是本模组唯一维护与测试的版本。
  • 由于是新手开发,现阶段的首要目标是把现有功能打磨稳定、把文档与体验做扎实,而不是急于铺开版本。
  • 待当前版本的功能经过充分使用、确认稳定之后,再考虑移植到其他 Minecraft 版本或其他加载器(如 NeoForge、Fabric、其他游戏版本)。
  • 在此之前,暂不承诺其他版本的发布时间线;相关进展会通过 GitHub 与各发布页同步。


功能特性
  • 启动自动设置窗口大小:启动游戏后延迟 1.5 秒自动将窗口设置为配置的分辨率并居中,避免加载界面拉伸
  • 锁定最小窗口尺寸:锁定后窗口只能放大,不能缩小到配置尺寸以下,保证 UI 布局不被破坏
  • 视频设置原生入口:在「选项 → 视频设置」中原生插入「窗口设置」按钮,位于「全屏分辨率」下方,随列表滚动和 GUI 缩放正常布局
  • 窗口设置界面:独立的设置界面,可手动开关锁定、一键把窗口在所在显示器上居中,实时显示屏幕分辨率和窗口分辨率(全屏时黄色并标注"全屏"),按钮状态实时同步
  • 居中窗口按钮:窗口化时一键把窗口在当前显示器上居中;全屏、最大化、最小化时自动禁用,避免无效操作
  • 客户端指令:/aws toggle、/aws lock、/aws unlock、/aws status、/aws gui、/aws center,游戏内聊天栏直接操作
  • 全屏自动禁用:进入全屏时临时禁用锁定,退出全屏后按全屏前状态自动恢复
  • 自定义按键:在控制设置中绑定按键打开窗口设置界面(默认未绑定)
  • 分辨率过低自动禁用:当配置分辨率或硬编码最小分辨率高于玩家屏幕分辨率时,自动禁用锁定且不改动窗口大小
  • 进游戏状态提示:每次进入世界时,聊天栏提示当前锁定状态
  • 实时分辨率显示:窗口设置界面实时显示屏幕分辨率和窗口分辨率,拖动停止后 0.5 秒刷新
  • 多显示器支持:自动检测游戏窗口所在的显示器,在对应显示器上居中


分辨率优先级
本模组的窗口尺寸遵循以下优先级(从高到低):
  1. 代码硬编码最小值(856×482)
  2.         ↓
  3. 配置文件值(默认 1280×720,可修改)
  4.         ↓
  5. 玩家手动拖动窗口大小(仅在锁定关闭时生效)
复制代码

  • 1(最高)代码硬编码:默认值 856×482,说明:写死在代码里的最小分辨率,16:9 比例,任何情况下都不会低于此值
  • 2 配置文件:默认值 1280×720,说明:在 config/autowindowsize-client.toml 中修改,启动时读取
  • 3(最低)玩家手动拖动:默认值 —,说明:仅在锁定功能关闭时,玩家可以自由拖动窗口边缘调整大小

注意:锁定开启时,窗口的最小尺寸 = 配置文件值。由于配置文件的取值下限已与硬编码最小值(856×482)绑定,配置值必然不会低于 856×482,二者不再可能冲突。


锁定机制详解

锁定开启时
  • 窗口的最小尺寸被锁定为配置值(不低于 856×482)
  • 窗口可以放大,没有上限
  • 窗口不能缩小到锁定尺寸以下
  • 退出全屏后,如果全屏前是锁定状态,自动重新应用最小尺寸限制


锁定关闭时
  • 窗口大小完全自由,可以任意放大缩小
  • 不设置最小尺寸限制
  • 玩家可以通过界面按钮、指令或自定义按键重新开启锁定


锁定被禁用时
锁定功能在以下情况下完全不可用:
  • 分辨率过低:配置或硬编码最小分辨率超过屏幕分辨率 — 按钮红色灰色,窗口大小不被改动
  • 全屏模式:全屏时临时禁用 — 按钮红色灰色,退出全屏后自动恢复

按键或指令在禁用状态下使用会显示红色聊天提示说明原因。

分辨率过低检测

触发条件
当以下任一条件满足时,锁定功能自动禁用:
  1. 配置文件宽度 > 当前屏幕宽度
  2. 配置文件高度 > 当前屏幕高度
  3. 硬编码最小宽度(856) > 当前屏幕宽度
  4. 硬编码最小高度(482) > 当前屏幕高度
复制代码


触发后的行为
  • 不改动窗口大小:保持玩家启动前的窗口大小
  • 不设置最小尺寸限制:不调用 GLFW 的窗口尺寸限制
  • 标记为禁用:lockDisabled = true
  • 进入世界时聊天栏提示:红色文字说明禁用原因
  • 窗口设置界面按钮灰色:显示"锁定已禁用(分辨率过低)",不可点击
  • 指令和按键被拦截:使用时显示红色提示


恢复方法
将配置文件中的分辨率改为小于等于屏幕分辨率的值,然后重启游戏。
注意:检测在游戏启动时执行一次,运行中改变屏幕分辨率不会重新检测。





全屏行为
进入全屏(F11)时:
  • 无论当前锁定状态如何,锁定都被临时禁用
  • 记录进入全屏前的锁定状态
  • 聊天栏显示红色提示:"全屏模式下锁定不可用,退出全屏后自动恢复"
  • 窗口设置界面的锁定按钮变为灰色

退出全屏(F11)时:
  • 窗口大小和位置由 Minecraft 自动恢复到全屏前的状态(模组不强制设置任何尺寸)
  • 如果全屏前锁定是开启的,自动重新应用最小尺寸限制
  • 如果全屏前锁定是关闭的,不设置最小尺寸限制
  • 如果锁定因分辨率过低被永久禁用,不改动窗口大小


指令
所有指令以 /aws 开头(客户端指令,仅游戏内可用):
  • /aws toggle:切换锁定开启/关闭
  • /aws lock:开启锁定(已开启则提示无需重复操作)
  • /aws unlock:关闭锁定(已关闭则提示无需重复操作)
  • /aws status:显示当前锁定状态和屏幕分辨率
  • /aws gui:打开窗口设置界面
  • /aws center:把窗口在当前显示器居中(全屏/最大化/最小化/已居中时提示不可用)

锁定被禁用时(分辨率过低或全屏),所有锁定相关指令都会显示红色提示说明原因。

进游戏状态提示
每次从主菜单或加载界面进入世界时,聊天栏会提示一次当前锁定状态:
  • 锁定开启:[AutoWindowSize] ✔ 窗口锁定已开启
  • 锁定关闭:[AutoWindowSize] ✔ 窗口锁定已关闭,可自由调整大小
  • 分辨率过低:[AutoWindowSize] ✘ 锁定已自动禁用 — 配置分辨率超过屏幕分辨率
  • 全屏模式:[AutoWindowSize] ✘ 全屏模式下锁定不可用,退出全屏后自动恢复

  • 每次进入世界只提示一次
  • 提示输出在聊天栏,不是标题/副标题


窗口设置界面

打开方式
  • 主菜单:选项... → 视频设置... → 点击「窗口设置」按钮
  • 游戏中:Esc → 选项... → 视频设置... → 点击「窗口设置」按钮
  • 按下绑定的键位(默认未绑定)
  • 聊天栏输入 /aws gui


界面内容
  • 屏幕分辨率:当前显示器的分辨率(如 1920 × 1080),白色文字
  • 窗口分辨率:当前游戏窗口尺寸(如 1280 × 720),浅绿色文字
  • 锁定按钮:点击切换锁定开启/关闭;禁用时灰色不可点击并显示红色原因
  • 完成按钮:返回视频设置界面


实时刷新机制
  • 按钮状态实时同步,不需要重开界面
  • 拖动窗口边缘时,分辨率数值保持不动并显示橙色提示:"窗口尺寸变化中,松开后 0.5 秒自动刷新…"
  • 停止拖动满 0.5 秒后,橙色提示熄灭,同时分辨率刷新为当前窗口大小


安装方法
  • 确保已安装 Minecraft 1.20.1 和 Forge 47.x
  • 将模组 jar 文件放入 .minecraft/mods 文件夹
  • 启动游戏即可

本模组为客户端模组,不需要安装在服务端。


配置文件

文件路径
  1. .minecraft/config/autowindowsize-client.toml
复制代码


配置项
  1. [window]
  2. # ==== Window Size ====
  3. # Startup window width. This is also the minimum width the window
  4. # is allowed to shrink to when the size lock is enabled.
  5. # 启动时的窗口宽度。开启尺寸锁定后,窗口也不能缩小到该值以下。
  6. #Range: 856 ~ 7680
  7. width = 1280

  8. # ==== Window Height ====
  9. # Startup window height. This is also the minimum height the window
  10. # is allowed to shrink to when the size lock is enabled.
  11. # 启动时的窗口高度。开启尺寸锁定后,窗口也不能缩小到该值以下。
  12. #Range: 482 ~ 4320
  13. height = 720
复制代码
注释采用"上英文、下中文",一个 ==== 标题;Range 由 Forge 自动生成,不重复书写。


注意事项
  • 配置值在游戏启动时读取,运行中修改配置文件不会立即生效,需要重启游戏
  • 配置取值范围已与代码硬编码最小值绑定(宽 856、高 482),无法在配置文件中填写低于该下限的值,从根源上杜绝"配置填得比硬写死分辨率还小"的问题
  • 配置值高于屏幕分辨率时,锁定功能自动禁用,窗口大小不被改动


键位绑定

默认状态
未绑定。模组不会占用任何按键,玩家需要自行在控制设置中绑定。

绑定方法
  • 选项... → 控制...
  • 搜索「自动窗口大小」
  • 点击「打开窗口设置」
  • 按下你想绑定的键
  • 点击「完成」保存


使用方法
  • 按下绑定的键打开窗口设置界面
  • 主菜单和游戏中均可使用


多显示器支持
  • 模组启动时自动检测游戏窗口当前所在的显示器(根据窗口中心点判断)
  • 在对应显示器上居中窗口,而不是总是在主显示器居中
  • 跨屏拖动窗口时(窗口中心在两个显示器之间),默认使用主显示器


技术信息
  • Minecraft 版本:1.20.1
  • Forge 版本:47.x
  • Mod ID:autowindowsize
  • 模组类型:客户端模组(Client-side)
  • 硬编码最小分辨率:856×482(16:9)
  • 默认配置分辨率:1280×720
  • 开源协议:MIT
  • 编程语言:Java


常见问题
  • Q:为什么我改了配置文件的分辨率,启动后窗口没变?
    A:如果配置的分辨率高于你的屏幕分辨率,模组会自动禁用锁定且不改动窗口大小。请将配置值改为小于等于屏幕分辨率的值,然后重启游戏。
  • Q:锁定后窗口还能放大吗?
    A:可以。锁定只限制最小尺寸,不限制最大尺寸,你可以随意放大窗口。
  • Q:/aws 指令有什么用?
    A:/aws toggle 切换锁定,/aws lock 开启锁定,/aws unlock 关闭锁定,/aws status 查看状态和屏幕分辨率,/aws gui 打开设置界面,/aws center 把窗口居中。
  • Q:支持多显示器吗?
    A:支持。模组会自动检测游戏窗口所在的显示器,并在对应显示器上居中。
  • Q:为什么拖动窗口时分辨率不立刻跟着变?
    A:拖动时数值保持不动、只亮橙色提示,避免数字一直跳看不清;停止拖动满 0.5 秒后,提示熄灭的同时刷新成当前窗口大小。
  • Q:锁定被禁用了怎么恢复?
    A:将配置文件中的分辨率改为小于等于屏幕分辨率的值,然后重启游戏。
  • Q:这个模组需要安装在服务端吗?
    A:不需要。这是纯客户端模组,只影响客户端的窗口大小。
  • Q:和其他模组冲突吗?
    A:本模组只修改游戏窗口的大小和最小尺寸限制,不修改游戏内任何机制,一般不会和其他模组冲突。


更新日志
完整更新日志(含历史版本,最新版默认展开)见单独文件:
CHANGELOG(中文)

致谢
  • JujuMLQwQ — 开发者
  • ML — 贡献者

感谢所有使用本模组的玩家和整合包制作者。
反馈与建议欢迎提交 Issues

苦力怕论坛,感谢有您~
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

木韩网络 提供支持 | GMT+8, 2026-9-15 17:59

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4