Author SHA1 Message Date
Glavo 41199fa1d5 添加“验证 HMCL 文件”页面 (#476)
continuous-integration/drone/push Build is passing
2026-07-08 21:57:40 +08:00
Glavo 8442d41998 Add 3.16.0.347 and 3.16.0.348 changelog (#475)
continuous-integration/drone/push Build is passing
2026-07-05 21:22:38 +08:00
TyMxy 506ead891d 修正内容 (#473)
continuous-integration/drone/push Build is passing
2026-06-26 22:16:57 +08:00
neveler 1f08ed13ef 移除静态资源中的重复图片 (#471) 2026-06-26 22:16:14 +08:00
Glavo 0b17c4d7d0 Add 3.15.2 changelog (#474)
continuous-integration/drone/push Build is passing
2026-06-25 20:48:32 +08:00
neveler cefadbe090 优化 3.15.1 版本更新日志样式 (#470)
continuous-integration/drone/push Build is passing
2026-06-12 15:39:06 +08:00
Glavo 5f9f824006 Add 3.15.1 changelog (#469)
continuous-integration/drone/push Build is passing
2026-06-09 21:33:46 +08:00
neveler 8898bb5997 添加一种新的 frontmatter 格式 (#466)
continuous-integration/drone/push Build is passing
2026-06-07 17:31:45 +08:00
neveler aa9f72ebfe 使用 authors 替代 contributors (#465)
continuous-integration/drone/push Build is passing
2026-06-05 21:52:36 +08:00
Glavo 2bb8513ded Add 3.15.0.345 and 3.15.0.346 changelogs (#464)
continuous-integration/drone/push Build is passing
2026-06-01 21:58:05 +08:00
neveler 6afbfbfcf9 更新断点配置 (#430)
continuous-integration/drone/push Build is passing
2026-05-25 12:52:28 +08:00
neveler 4a1aa83b91 优化 3.14.1 版本更新日志样式 (#463)
continuous-integration/drone/push Build is passing
2026-05-22 06:34:08 +08:00
nevelerandCopilot 4178e946a7 优化更新日志样式 (#459)
continuous-integration/drone/push Build is passing
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-05-21 16:14:36 +08:00
neveler 17d1ae9f05 添加 post_process 插件 (#445)
continuous-integration/drone/push Build is passing
2026-05-21 09:38:54 +08:00
Glavo d7c2569844 Add changelog for version 3.14.1 (#462)
continuous-integration/drone/push Build is passing
2026-05-15 21:43:49 +08:00
Glavo 14c754d1b9 Add and update changelogs for versions 3.14.0.343 and 3.14.0.344 (#461)
continuous-integration/drone/push Build is passing
2026-05-14 21:24:38 +08:00
Glavo 291ae403bb Add 3.13.2 and 3.14.0.342 changelogs (#460)
continuous-integration/drone/push Build is passing
2026-04-25 22:18:32 +08:00
neveler c6bff0dfa4 Rename README.md to 3.13.1.md (#456) 2026-04-25 22:14:05 +08:00
83 changed files with 2088 additions and 813 deletions
+2
View File
@@ -33,3 +33,5 @@ gem "http_parser.rb", "0.8.0", :platforms => [:jruby]
# plugin dependencies
gem "webp-ffi", "0.4.0" if ENV["ENABLE_WEBP_AUTO_CONVERSION"] == "true" || ENV["DRONE"] == "true"
gem "mini_racer", "0.20.0" if ENV["ENABLE_EMBEDDED_V8"] == "true" || ENV["DRONE"] == "true"
gem "terser", "1.2.7"
+33
View File
@@ -0,0 +1,33 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1195237721456508933)
- GP-5637: 移除游戏内容下载页面内容简介中的换行 (by 辞庐)
- GP-5778: 在 macOS 下随明暗模式设置 `NSAppearance` (by Damon Lu, Glavo)
- GP-5784: 优化滚动条样式 (by 辞庐)
- GP-5863: 使用 tomlj 代替 toml4j 以适配新 TOML 标准 (by Calboot)
- GP-5867: 优化模组管理和数据包管理界面的全选功能 (by 辞庐)
- GP-5906: 导出启动脚本时如果脚本文件缺少扩展名则自动添加平台默认扩展名 (by Damon Lu)
- GP-5912: 渲染 HTML 内容时支持嵌套列表 (by neveler)
- GP-5918: 整合包检查完整性时忽略已升级模组 (by Xirren)
- GP-5948: 对不支持取消操作的任务对话框禁用取消按钮 (by 辞庐)
- GP-5955: 优化日志窗口选择行时的表现 (by ENC_Euphony)
- GP-5956: 移除 `ComponentSublist` 内部元素的缩进 (by Glavo)
- GP-5964: 将游戏内容的模组加载器标签放在标签列表的末尾 (by ENC_Euphony, Glavo)
- GP-5968: 使用 jwebp 代替 TwelveMonkeys 加载 WebP 图像 (by Glavo)
- GP-5976: 安装模组和实例时禁止文件名中包含感叹号 (by Xirren, Glavo)
- GP-5978: 在模组加载器没有可用版本时显示提示 (by 3gf8jv4dv)
- GP-5987: 支持通过环境变量设置 HMCL 数据文件夹 (by Glavo)
- GP-5991: 当鼠标未悬停在滚动条上时使滚动条半透明 (by Glavo)
- GP-5993: 增强对 x86-64 转译支持状态的检测 (by Glavo)
- 优化软件文案,修订翻译 (by 3gf8jv4dv)
错误修复:
- GP-5635: 修复可输入的组合框文本内容未与不可输入的组合框对齐的问题 (by 辞庐)
- GP-5819: 修复更新时不保存窗口位置的问题 (by 辞庐)
- GP-5966: 修复添加默认 JVM 参数时可能覆盖通过外部文件传递的参数的问题 (by Glavo)
- GP-5971: 修复游戏内容下载页面无法加载部分内容的图标的问题 (by Glavo)
- GP-5988: 修复从 CurseForge 上下载整合包时数据包位置错误的问题 (by ENC_Euphony)
- GP-5994: 修复 CurseForge 源中内容不显示 Minecraft 26.x 版本的问题 (by Glavo)
+33
View File
@@ -0,0 +1,33 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1198493890766700583)
- GP-5637: 移除游戏内容下载页面内容简介中的换行 (by 辞庐)
- GP-5778: 在 macOS 下随明暗模式设置 `NSAppearance` (by Damon Lu, Glavo)
- GP-5784: 优化滚动条样式 (by 辞庐)
- GP-5863: 使用 tomlj 代替 toml4j 以适配新 TOML 标准 (by Calboot)
- GP-5867: 优化模组管理和数据包管理界面的全选功能 (by 辞庐)
- GP-5906: 导出启动脚本时如果脚本文件缺少扩展名则自动添加平台默认扩展名 (by Damon Lu)
- GP-5912: 渲染 HTML 内容时支持嵌套列表 (by neveler)
- GP-5918: 整合包检查完整性时忽略已升级模组 (by Xirren)
- GP-5948: 对不支持取消操作的任务对话框禁用取消按钮 (by 辞庐)
- GP-5955: 优化日志窗口选择行时的表现 (by ENC_Euphony)
- GP-5956: 移除 `ComponentSublist` 内部元素的缩进 (by Glavo)
- GP-5964: 将游戏内容的模组加载器标签放在标签列表的末尾 (by ENC_Euphony, Glavo)
- GP-5968: 使用 jwebp 代替 TwelveMonkeys 加载 WebP 图像 (by Glavo)
- GP-5976: 安装模组和实例时禁止文件名中包含感叹号 (by Xirren, Glavo)
- GP-5978: 在模组加载器没有可用版本时显示提示 (by 3gf8jv4dv)
- GP-5987: 支持通过环境变量设置 HMCL 数据文件夹 (by Glavo)
- GP-5991: 当鼠标未悬停在滚动条上时使滚动条半透明 (by Glavo)
- GP-5993: 增强对 x86-64 转译支持状态的检测 (by Glavo)
- 优化软件文案,修订翻译 (by 3gf8jv4dv)
错误修复:
- GP-5635: 修复可输入的组合框文本内容未与不可输入的组合框对齐的问题 (by 辞庐)
- GP-5819: 修复更新时不保存窗口位置的问题 (by 辞庐)
- GP-5966: 修复添加默认 JVM 参数时可能覆盖通过外部文件传递的参数的问题 (by Glavo)
- GP-5971: 修复游戏内容下载页面无法加载部分内容的图标的问题 (by Glavo)
- GP-5988: 修复从 CurseForge 上下载整合包时数据包位置错误的问题 (by ENC_Euphony)
- GP-5994: 修复 CurseForge 源中内容不显示 Minecraft 26.x 版本的问题 (by Glavo)
+23
View File
@@ -0,0 +1,23 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1202274595896295445)
- GP-6052: 将 `FileDownloadTask.IntegrityCheck` 改为 record (by Calboot)
- GP-6053: 将“旁观者模式”改为“旁观模式” (by 辞庐)
- GP-6039: 更新软件名称和版本号位置的文档链接 (by Zkitefly)
- GP-6036: 优化种子隐藏按钮 (by 辞庐)
- GP-6032: 导出 MultiMC 整合包时不再写入 `MaxMemAlloc` (by 辞庐)
- GP-6014: 优化“设置 > 通用”页面 (by 辞庐)
- GP-6075: 优化 `LineSelectButton` 的空值处理 (by Glavo)
- GP-4558: 支持断点续传 (by Glavo)
- GP-6084: 使用 WebURL for Java 解析 URI (by Glavo)
- GP-6069: 修订“设置 > 下载”页面中版本列表选项的简体中文翻译 (by 3gf8jv4dv)
错误修复:
- GP-6046: 修复皮肤预览模型左右两侧贴图错误的问题 (by ShulkerSakura)
- GP-6054: 修复特定场景下整合包实例版本号不显示的问题 (by 辞庐)
- GP-6067: 修复点击版本列表项目标签后标签消失的问题 (by CiiLu)
- GP-6068: 修复在使用 zlib-ng 的系统上 Forge/NeoForge 安装可能因哈希校验失败的问题 (by Glavo)
- GP-5789: 缓解离线皮肤 CSL 输入框输入时频繁弹出“操作失败”提示的问题 (by CiiLu)
+20
View File
@@ -0,0 +1,20 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1207077859687923760)
- GP-6074: 在无法显示 Swing 窗口时不再显示 JavaFX 下载进度对话框 (by Glavo)
- GP-6121: 移除主页面“下载”按钮的 Tooltip (by 辞庐)
- GP-6110: 在实例设置的浏览菜单中添加崩溃日志文件夹快捷打开选项 (by 辞庐)
- GP-6123: 在已有账户时移除联机和主页中的玩家名称 Tooltip (by Wulian233)
- GP-6126: 更新测试资源和 `gradlew.bat` 的换行格式 (by Glavo)
- GP-6091: 增强资源包管理功能 (by Calboot, 3gf8jv4dv, Glavo)
- GP-6132: 将 `gradle.properties` 加入 `.gitignore` (by Glavo)
- GP-6144: 将根项目版本号更新至 3.15 (by Glavo)
错误修复:
- GP-6118: 修复 `LineSelectButton` 在页面底部时方向异常的问题 (by 辞庐)
- GP-6106: 修复 CurseForge 模组类别翻译错误的问题 (by Calboot)
- GP-6102: 修复删除 `mmc-bootstrap` 后游戏依赖无法补全的问题 (by 辞庐)
- GP-6117: 修复列表工具栏水波纹溢出的问题 (by 辞庐)
+16
View File
@@ -0,0 +1,16 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1208959819820564502)
- GP-6130: 将界面文案中的 `Xbox` 统一为 `XBOX` (by 3gf8jv4dv)
- GP-6119: 优化游戏列表弹窗的列表项大小 (by 辞庐)
- GP-6120: 优化陶瓦联机反馈提示 (by 辞庐)
- GP-6111: 在账户选择弹窗中为已选择的账户添加底色 (by 辞庐)
- GP-6087: 设备代码流在完成授权后隐藏二维码 (by 辞庐, 3gf8jv4dv)
- GP-6151: 将下载超时时间放宽至 30 秒 (by Glavo)
错误修复:
- GP-6133: 修复切换实例弹窗中版本列表未及时更新的问题 (by ENC_Euphony)
- GP-6129: 修复无法用中文搜索游戏内容的问题 (by Glavo)
+52
View File
@@ -0,0 +1,52 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1219755787108220949)
- GP-6122: 重构启动器配置模型 (by Glavo)
- GP-6229: 重构主题系统 (by Glavo)
- GP-6186: 为版本列表设置固定列表项高度 (by 快乐凤爪王)
- GP-6188: 完善乌克兰语翻译 (by Shadow)
- GP-6204: 优化外置登录账号名称展示 (by 辞庐)
- GP-6196: 统一“使用非官方构建时的提示”的用词 (by 辞庐)
- GP-6169: CurseForge 下载文件时也使用 API Key (by Calboot)
- GP-6168: 更新 `versions.txt` 至 26.2 (by 3gf8jv4dv)
- GP-6095: 在非主界面或已有对话框显示时暂缓弹出启动器更新对话框 (by Calboot)
- GP-6101: 支持置顶日志窗口 (by 辞庐)
- GP-6176: 整理 Addon 相关类和翻译 (by Calboot, 3gf8jv4dv)
- GP-6217: 补全 `.gitignore` (by 快乐凤爪王)
- GP-6219: 使用 HttpURLConnection 替换 HttpClient 实现 (by Glavo)
- GP-6250: 更新“关于 -> 依赖”列表 (by 辞庐)
- GP-6265: 更新 Chunkbase 种子地图 (by Wulian233)
- GP-6214: 修正默认游戏内容下载源的翻译键 (by 快乐凤爪王)
- GP-6267: 翻译模组分类的 Cursed 类别 (by Wulian233)
- GP-6270: 优化主题包管理页面列表项 (by 辞庐)
- GP-6273: 重构游戏目录管理逻辑 (by Glavo)
- GP-6274: 为主题包信息对话框添加水波纹效果 (by 快乐凤爪王)
- GP-6271: 主题包管理界面支持拖拽导入 (by 辞庐)
- GP-6231: 重构离线账户换肤对话框 (by 快乐凤爪王)
- GP-6207: 下载界面的依赖列表采用按项目 slug 排序 (by Calboot)
- GP-6258: 为预设创建和重命名添加名称重复校验 (by 快乐凤爪王)
- GP-6266: 对下载线程数输入框添加校验 (by Wulian233)
- GP-6115: 优化导出整合包时的文件选择 (by Calboot, Glavo)
错误修复:
- GP-6160: 修复无法为 MC 1.21.11 安装 Forge 的问题 (by Glavo)
- GP-6171: 修复 `versions.txt` 中 26w14a 的位置 (by 3gf8jv4dv)
- GP-6183: 修复多语言资源缺失、占位符错误与本地构建依赖路径问题 (by Shadow)
- GP-6170: 修复无法下载 SHA-1 为空字符串的文件的问题 (by Glavo)
- GP-6211: 修复游戏下载列表的对齐问题 (by 快乐凤爪王)
- GP-6155: 修复实例下载页面的布局时序问题 (by SaltWood_233, 辞庐)
- GP-6227: 修复陶瓦联机页面图标对齐问题 (by 快乐凤爪王)
- GP-6226: 修复模组文件名不能包含感叹号的问题 (by Calboot)
- GP-6256: 修复 Java 管理页面点击列表项时 Tag 闪烁的问题 (by 庐庐绫)
- GP-6263: 修复图片容器底部间距过大的问题 (by 快乐凤爪王)
- GP-6264: 修复版本页面 Tag 消失的问题 (by 快乐凤爪王)
- GP-6257: 修复已弃用 JVM 内存设置的内存单位对齐问题 (by 快乐凤爪王)
- GP-6262: 修复 toast 消息未居中的问题 (by 快乐凤爪王)
- GP-6249: 修复 Java 管理无法安装部分 Java 的问题 (by 辞庐, Glavo)
- GP-6244: 修复在实例列表加载完成前切换实例文件夹导致的空指针问题 (by NoClassDefFoundError)
- GP-6240: 修复 `mmc-bootstrap` 已存在时仍被覆盖的问题 (by Burning_TNT)
- GP-6109: 修复陶瓦联机界面账号快速切换列表右侧滚动条错位以及列表莫名抽搐的问题 (by 辞庐, Glavo)
- GP-6185: 修复 Curse 整合包更新后未移除旧的模组 (by Zkitefly)
+30
View File
@@ -0,0 +1,30 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1221569517396688935)
- GP-6277: 将更多类转换为 record (by Calboot)
- GP-6284: 导出主题时支持设置主题版本 (by Wulian233)
- GP-6292: 不再将从旧版本游戏文件夹设置中迁移出的游戏预设名称设置为文件夹名称 (by Glavo)
- GP-6105: 始终显示关闭愚人节模式的按钮 (by Calboot)
- GP-6287: 调整旧版实例设置迁移与默认父预设解析逻辑 (by Glavo)
- GP-6253: 支持读取 Forge 新模组元数据中的 logo 文件 (by Zkitefly)
- GP-6298: 调整预设管理相关术语 (by Glavo)
- GP-6310: 禁用密码框右键菜单中的“剪切”和“复制”按钮 (by 辞庐)
- GP-6300: 根据游戏版本控制图形后端选项显示 (by Glavo)
- GP-6314: 为游戏退出日志行添加时间戳 (by 辞庐)
- GP-6316: 根据游戏版本优化渲染器选择 (by Glavo)
- GP-6278: 优化 `default_addon_source` 的中文翻译 (by Calboot)
- GP-6235: 同步本地化 README 内容 (by Haoran Xu)
错误修复:
- GP-6285: 修复颜色选择器与文本框高度不一致的问题 (by 快乐凤爪王)
- GP-6288: 修复版本列表固定列表项高度可能失效的问题 (by 快乐凤爪王)
- GP-6260: 修复 JVM 内存输入框允许输入非数字字符的问题 (by 快乐凤爪王)
- GP-6248: 修复安装手动打包整合包时任务名未本地化的问题 (by 辞庐)
- GP-6297: 修复 CurseForge 文件下载未带有 API Key 的问题 (by Calboot, Glavo)
- GP-6315: 修复复制 UUID 按钮显示冗余 `SpinnerPane` 的问题 (by 辞庐)
- GP-6302: 修复账户列表项间距问题 (by 快乐凤爪王)
- GP-6301: 修复 `authlib-injector` 警告文本被截断的问题 (by 快乐凤爪王)
- GP-6247: 修复联机核心第三方下载渠道按钮高度不一致的问题 (by 庐庐绫)
+10 -1
View File
@@ -26,39 +26,48 @@
- GP-5143, GP-5168: 优化对获取账号信息时发生 SSL 异常的处理 (by Xirren, 3gf8jv4dv)
- GP-5182: 支持重置日志字体 (by 辞庐)
- GP-5188: 仅在左键点击时触发 `JFXRippler` 波纹 (by Glavo)
**实例管理**
- GP-5059: 调整实例管理页面“浏览”菜单中条目的顺序 (by 3gf8jv4dv)
- GP-5137: 允许重命名实例时使用原名 (by mineDiamond)
- GP-5174: 优化存在大量实例的情况下的实例列表性能 (by Glavo)
**模组管理**
- GP-4832: 支持更新选中的模组 (by ZZZank)
- GP-5016: 刷新模组列表不滚动到顶部 (by OrzMiku)
**世界管理**
- GP-4823: 优化世界管理界面和世界信息界面 (by mineDiamond, 3gf8jv4dv)
- GP-5162: 优化存在大量数据包的情况下数据包管理页面的性能 (by mineDiamond)
- GP-5224: 优化存在大量世界的情况下世界管理页面的性能 (by Glavo)
**整合包**
- GP-4897: 导出整合包时隐藏系统资源文件 (by Calboot)
- GP-5119: 安装 Modrinth 整合包时下载图标 (by Glavo)
**账户**
- GP-4794: 优化微软登录页面 (by 辞庐, 3gf8jv4dv)
**下载**
- GP-5026: 限制访问 CurseForge/Modrinth 时的并发数 (by Burning_TNT)
- GP-5180: 在资源包下载页面中隐藏不必要的标签 (by Glavo)
- GP-5160: 优化下载页面中来自 Modrinth 的内容标签显示 (by ENC_Euphony)
- GP-5211: 优化下载页面图标缓存功能 (by Glavo)
**联机**
- GP-4929: 将陶瓦联机更新至 0.4.1 (by Burning_TNT)
**本地化**
- 优化软件文案,修订翻译 (by 3gf8jv4dv)
**错误修复**
- GP-5034: 修复下载光影时对话框的标题文字错误的问题 (by Wulian233)
@@ -87,4 +96,4 @@
- GP-5183: 修复重置字体后未遵循 `hmcl.font.override`/`HMCL_FONT` 设置的问题 (by 辞庐, Glavo)
- GP-5184: 修复安装页面选择模组加载器按钮波纹没有正常显示的问题 (by 辞庐, Glavo)
- GP-5186: 修复弹出菜单在 Windows HiDPI 显示器上异常模糊的问题 (by 辞庐)
- GP-5197: 修复默认窗口大小下进入高级版本设置会向下滚动一段距离的问题 (by 辞庐)
- GP-5197: 修复默认窗口大小下进入高级版本设置会向下滚动一段距离的问题 (by 辞庐)
+15 -12
View File
@@ -3,15 +3,18 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1162953401517998137)
- 世界管理
- GP-5198: 将世界管理界面“生成启动脚本”按钮折叠到二级菜单 (by Glavo)
- 错误修复
- GP-5239: 修复下载页面滚动时图标未及时更新的问题 (by Glavo)
- GP-5243: 修复实例列表中可能意外出现水平滚动条的问题 (by OrzMiku)
- GP-5251: 修复自动安装界面卡片上按钮无法点击的问题 (by OrzMiku)
- GP-5257: 修复 Cleanroom 本地安装完成后会删除安装器的问题 (by 辞庐)
- GP-5261: 修复下载页面选择游戏版本对话框包含 `_unobfuscated` 版本的问题 (by Glavo)
- GP-5262: 修复使用 GIF 背景时调整背景不透明度导致启动器崩溃的问题 (by Glavo)
- GP-5267: 修复 Unzipper 解压空 zip 文件时抛出异常的问题 (by Glavo)
- GP-5305: 修复返回页面时可能卡进空白页面的问题 (by 辞庐)
- GP-5310: 修复点击实例列表条目的中央区域无法触发涟漪效果的问题 (by 辞庐)
**世界管理**
- GP-5198: 将世界管理界面“生成启动脚本”按钮折叠到二级菜单 (by Glavo)
**错误修复**
- GP-5239: 修复下载页面滚动时图标未及时更新的问题 (by Glavo)
- GP-5243: 修复实例列表中可能意外出现水平滚动条的问题 (by OrzMiku)
- GP-5251: 修复自动安装界面卡片上按钮无法点击的问题 (by OrzMiku)
- GP-5257: 修复 Cleanroom 本地安装完成后会删除安装器的问题 (by 辞庐)
- GP-5261: 修复下载页面选择游戏版本对话框包含 `_unobfuscated` 版本的问题 (by Glavo)
- GP-5262: 修复使用 GIF 背景时调整背景不透明度导致启动器崩溃的问题 (by Glavo)
- GP-5267: 修复 Unzipper 解压空 zip 文件时抛出异常的问题 (by Glavo)
- GP-5305: 修复返回页面时可能卡进空白页面的问题 (by 辞庐)
- GP-5310: 修复点击实例列表条目的中央区域无法触发涟漪效果的问题 (by 辞庐)
+3 -2
View File
@@ -3,5 +3,6 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1167780910401060864)
- 联机
- GP-5504: 修复陶瓦联机无法正常使用的问题 (by Glavo)
**联机**
- GP-5504: 修复陶瓦联机无法正常使用的问题 (by Glavo)
+6 -5
View File
@@ -3,8 +3,9 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1171507155298156547)
- 错误修复
- GP-5265: 修复未正确为游戏设置 `java.net.useSystemProxies` JVM 参数的问题 (by Xirren)
- GP-5508: 修复部分请求头中 `Accept-Language` 字段包含 Java 版本的问题 (by Glavo)
- GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐)
- GP-5585: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo)
**错误修复**
- GP-5265: 修复未正确为游戏设置 `java.net.useSystemProxies` JVM 参数的问题 (by Xirren)
- GP-5508: 修复部分请求头中 `Accept-Language` 字段包含 Java 版本的问题 (by Glavo)
- GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐)
- GP-5585: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo)
+9 -1
View File
@@ -18,20 +18,25 @@
- GP-5462: 未安装实例时点击主页“开始游戏”按钮不选择不支持当前平台的版本 (by 辞庐, Glavo)
- GP-5467: 自动展开 NBT 查看器中部分子标签 (by Calboot)
- GP-5527: 增加弹窗图标与内容间距 (by 辞庐)
**游戏设置**
- GP-4975: 调整渲染器名称 (by Chen Meng)
**模组管理**
- GP-5029: 优化检查模组更新功能 (by Burning_TNT)
- GP-5196: 使用 Forge/Quilt 加载器时模组管理页面应当扫描子文件夹 (by Wulian233)
- GP-5296: 扫描模组子目录时忽略 `.connector` 文件夹 (by 辞庐)
**世界管理**
- GP-5215: 优化世界管理与世界信息页面 (by mineDiamond, 3gf8jv4dv, Glavo)
**账户**
- GP-5330, GP-5531, GP-5538: 优化微软登录流程,更新微软账户登录对话框 (by 辞庐, 3gf8jv4dv, Glavo)
**下载**
- GP-4792: 优化 Fabric API / Quilt API 安装提示 (by 辞庐, 3gf8jv4dv)
@@ -40,6 +45,7 @@
- GP-5304: 取消游戏下载页面中高版本游戏对 Windows 7/8/8.1 的不兼容提示 (by 辞庐)
- GP-5394: Java 下载页面支持选择多个 Java 版本下载 (by NoClassDefFoundError, Glavo)
- GP-5465, GP-5474: 优化下载页面条目中标签的展示方式 (by Glavo)
**外观**
- GP-5279: 更新下载页面条目样式 (by Glavo)
@@ -53,9 +59,11 @@
- GP-5422: 优化日志窗口无日志行的背景色 (by 辞庐)
- GP-5456: 优化工具栏按钮图标 (by Glavo)
- GP-5481: 优化设置页面检查更新设置项的样式 (by Glavo)
**本地化**
- 优化软件文案,修订简繁英翻译,清理过时翻译 (by 3gf8jv4dv)
**错误修复**
- GP-5012: 修复 Modrinth 模组依赖已经被删除的条目时无法加载版本列表的问题 (by Burning_TNT)
@@ -84,4 +92,4 @@
- GP-5480: 修复无法归一化版本号 "1.16.2 Pre-release 1" 的问题 (by Glavo)
- GP-5508: 修复部分请求头中 Accept-Language 字段包含 Java 版本的问题 (by Glavo)
- GP-5520: 下载游戏版本列表点击左侧图标无法触发水波纹效果、光标没有变成手型的问题 (by 辞庐)
- GP-5522: 修复安装卡片部分区域点击无法触发水波纹效果的问题 (by 辞庐)
- GP-5522: 修复安装卡片部分区域点击无法触发水波纹效果的问题 (by 辞庐)
+11 -8
View File
@@ -3,11 +3,14 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1173336042553475112)
- 账户
- GP-5610: 优化设备代码流登录流程 (by Glavo)
- 错误修复
- GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐)
- GP-5549: 修复微软登录报错的超链接显示 (by Xirren)
- GP-5584: 修复打开登录微软对话框时加载指示器一闪而过的问题 (by 辞庐)
- GP-5585, GP-5602: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo)
- GP-5575: 修复无法使用授权代码流登录微软账户的问题 (by 辞庐)
**账户**
- GP-5610: 优化设备代码流登录流程 (by Glavo)
**错误修复**
- GP-5550: 修复安装整合包时任务弹窗可能空白的问题 (by 辞庐)
- GP-5549: 修复微软登录报错的超链接显示 (by Xirren)
- GP-5584: 修复打开登录微软对话框时加载指示器一闪而过的问题 (by 辞庐)
- GP-5585, GP-5602: 修复下载源失效时刷新版本列表不会回退到备用下载源的问题 (by Glavo)
- GP-5575: 修复无法使用授权代码流登录微软账户的问题 (by 辞庐)
+88 -71
View File
@@ -3,74 +3,91 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1181883220765966343)
- 启动器
- GP-4706: 添加"关闭启动时的更新弹窗"选项 (by An5w1r, Glavo)
- GP-5583, GP-5624: 支持在 FreeBSD x86-64、Linux Arm64、Linux LoongArch64 和 Linux RISC-V64 平台上启动 Minecraft 26.1-snapshot-8 及更高版本 (by Glavo)
- GP-5586: 优化无法补全 JavaFX 时的报错信息 (by Glavo)
- GP-5631: 重启 HMCL 时继承所有 JVM 参数 (by 辞庐, Glavo)
- GP-5655: 添加对 `1.21.11-rc3_unobfuscated` 的支持 (by TNTyep520, Glavo)
- GP-5697: 导出 BAT 脚本时将单行长度限制放宽至 32767 字符 (by 辞庐)
- GP-5759: 为主页启动按钮添加冷却时间 (by Glavo)
- GP-5773: 更新模组和整合包数据 (by Glavo)
- GP-5791: 支持愚人节模式 (by Glavo)
- 实例管理
- GP-5242: 支持在实例列表页面搜索实例 (by 辞庐, Zkitefly)
- 游戏设置
- GP-5514: 为渲染器设置项添加描述 (by Damon Lu)
- GP-5638: 切换版本隔离设置后自动刷新其他子页面 (by 辞庐)
- 世界管理
- GP-5552: 支持新版本世界指定资源包位置 (by mineDiamond)
- GP-5652: 在世界管理页面隐藏 `.zip` 格式的世界 (by Wulian233)
- GP-5675: 支持读取 26.1-snapshot-6 及更高版本的存档数据 (by mineDiamond)
- 整合包
- GP-5710: 导出 Modrinth 整合包时不再要求填写作者 (by MovTery)
- 外观
- GP-5521: 优化下载页面条目水波纹样式 (by 辞庐)
- GP-5554: 向图标添加圆角 (by Dime)
- GP-5565, GP-5800, GP-5803, GP-5804: 更新进度条和进度指示器样式 (by Glavo)
- GP-5636: 支持在 `LineSelectButton` 弹出菜单中使用键盘上下键进行选择 (by 辞庐)
- GP-5663: 调整导出游戏运行栈加载指示器大小 (by 辞庐)
- GP-5664: 优化“删除”按钮的图标 (by 辞庐)
- GP-5690: 优化文件选择器按钮样式 (by 辞庐)
- GP-5707: 优化 `LineSelectButton` 弹出菜单中标签的配色 (by 辞庐)
- GP-5716: 向滚动条添加圆角 (by Calboot)
- GP-5760: 优化 `JFXToggleButton` 的配色 (by Glavo)
- GP-5769: 当背景自定义路径是文件夹时随机在文件夹中选取图片作为背景 (by 辞庐)
- GP-5805: 平滑进度条 (by Glavo)
- 下载
- GP-5030, GP-5798: 重新启用 MCIM 加速 (by Glavo)
- GP-5313: 支持从 CurseForge 下载光影 (by 辞庐)
- GP-5458, GP-5463: 使下载界面简介不滚动 (by Calboot)
- GP-5603: 下载文件失败时在重试前添加等待延迟 (by Glavo)
- GP-5698: 优化实例默认实例名称 (by 辞庐)
- GP-5739: 移除下载页面超链接多余 Tooltip (by 辞庐)
- 本地化
- GP-5714: 更新阿拉伯语翻译 (by Hommam-Prom)
- 优化软件文案,修订翻译 (by 3gf8jv4dv, 辞庐)
- 错误修复
- GP-4876: 修复 macOS 平台上空闲内存识别错误的问题 (by Damon Lu, Glavo)
- GP-5359: 修复语言为文言时下载游戏的选择模组加载器页面的版本号未本地化的问题 (by Wulian233)
- GP-5430: 修复启动游戏补全文件时,任务没有正确归类的问题 (by 辞庐, Glavo)
- GP-5532: 修复高分屏下新建账户标签页文字模糊的问题 (by 辞庐)
- GP-5536: 修复更新整合包后模组加载器版本号不会及时更新的问题 (by 小宇)
- GP-5539: 修复解析 Yggdrasil 服务器地址时不遵循重定向的问题 (by Glavo)
- GP-5556: 修复通过 CurseForge/Modrinth 安装整合包时可以返回到整合包类型选择页面的问题 (by 辞庐)
- GP-5558: 修复光影下载搜索栏中错误地显示“支持中英文搜索”提示的问题 (by 辞庐)
- GP-5581: 修复日志窗口中复制日志时会在主窗口中显示提示的问题 (by 辞庐)
- GP-5600: 修复部分对话框中取消按钮行为异常的问题 (by 辞庐)
- GP-5605: 修复选择角色弹窗未适配深色模式的问题 (by 辞庐)
- GP-5607: 修复账号列表复制 UUID 按钮样式异常的问题 (by 辞庐)
- GP-5633: 修复部分弹窗标题未本地化的问题 (by 辞庐)
- GP-5659: 修复不支持导出游戏运行栈的提示未正确展示的问题 (by 辞庐)
- GP-5662: 修复无法导出使用 Java 11 启动的游戏进程的运行栈的问题 (by 辞庐)
- GP-5669: 修复无法导入部分 Modrinth 整合包的问题 (by 辞庐)
- GP-5691: 修复安装整合包界面实例名称重复提示显示不全的问题 (by 辞庐)
- GP-5693: 修复 `SpinnerPane` 会裁切元素的问题 (by 辞庐)
- GP-5705: 修复手动取消模组更新检查时会弹窗提示操作失败的问题 (by 辞庐)
- GP-5706: 修复 `LineComponent` 副标题样式未正确应用 (by 辞庐)
- GP-5728: 修复“从互联网下载整合包”选项对话框可能会意外被关闭的问题 (by Glavo)
- GP-5737: 修复运行路径中包含非法字符 `=` 时的提示 (by 辞庐)
- GP-5765, GP-5810: 修复无法归一化 26.1 的预发布版和发布候选版本号的问题 (by mineDiamond)
- GP-5772: 修复 Windows 平台 125% 缩放的屏幕上弹出菜单内容模糊的问题 (by 辞庐)
- GP-5776: 修复颜色选择器中“自定义颜色”对话框初始值不会与当前颜色同步的问题 (by Damon Lu)
- GP-5782: 修复对高版本 Cleanroom 选择的 Java 版本错误的问题 (by 辞庐, Glavo)
**启动器**
- GP-4706: 添加"关闭启动时的更新弹窗"选项 (by An5w1r, Glavo)
- GP-5583, GP-5624: 支持在 FreeBSD x86-64、Linux Arm64、Linux LoongArch64 和 Linux RISC-V64 平台上启动 Minecraft 26.1-snapshot-8 及更高版本 (by Glavo)
- GP-5586: 优化无法补全 JavaFX 时的报错信息 (by Glavo)
- GP-5631: 重启 HMCL 时继承所有 JVM 参数 (by 辞庐, Glavo)
- GP-5655: 添加对 `1.21.11-rc3_unobfuscated` 的支持 (by TNTyep520, Glavo)
- GP-5697: 导出 BAT 脚本时将单行长度限制放宽至 32767 字符 (by 辞庐)
- GP-5759: 为主页启动按钮添加冷却时间 (by Glavo)
- GP-5773: 更新模组和整合包数据 (by Glavo)
- GP-5791: 支持愚人节模式 (by Glavo)
**实例管理**
- GP-5242: 支持在实例列表页面搜索实例 (by 辞庐, Zkitefly)
**游戏设置**
- GP-5514: 为渲染器设置项添加描述 (by Damon Lu)
- GP-5638: 切换版本隔离设置后自动刷新其他子页面 (by 辞庐)
**世界管理**
- GP-5552: 支持新版本世界指定资源包位置 (by mineDiamond)
- GP-5652: 在世界管理页面隐藏 `.zip` 格式的世界 (by Wulian233)
- GP-5675: 支持读取 26.1-snapshot-6 及更高版本的存档数据 (by mineDiamond)
**整合包**
- GP-5710: 导出 Modrinth 整合包时不再要求填写作者 (by MovTery)
**外观**
- GP-5521: 优化下载页面条目水波纹样式 (by 辞庐)
- GP-5554: 向图标添加圆角 (by Dime)
- GP-5565, GP-5800, GP-5803, GP-5804: 更新进度条和进度指示器样式 (by Glavo)
- GP-5636: 支持在 `LineSelectButton` 弹出菜单中使用键盘上下键进行选择 (by 辞庐)
- GP-5663: 调整导出游戏运行栈加载指示器大小 (by 辞庐)
- GP-5664: 优化“删除”按钮的图标 (by 辞庐)
- GP-5690: 优化文件选择器按钮样式 (by 辞庐)
- GP-5707: 优化 `LineSelectButton` 弹出菜单中标签的配色 (by 辞庐)
- GP-5716: 向滚动条添加圆角 (by Calboot)
- GP-5760: 优化 `JFXToggleButton` 的配色 (by Glavo)
- GP-5769: 当背景自定义路径是文件夹时随机在文件夹中选取图片作为背景 (by 辞庐)
- GP-5805: 平滑进度条 (by Glavo)
**下载**
- GP-5030, GP-5798: 重新启用 MCIM 加速 (by Glavo)
- GP-5313: 支持从 CurseForge 下载光影 (by 辞庐)
- GP-5458, GP-5463: 使下载界面简介不滚动 (by Calboot)
- GP-5603: 下载文件失败时在重试前添加等待延迟 (by Glavo)
- GP-5698: 优化实例默认实例名称 (by 辞庐)
- GP-5739: 移除下载页面超链接多余 Tooltip (by 辞庐)
**本地化**
- GP-5714: 更新阿拉伯语翻译 (by Hommam-Prom)
- 优化软件文案,修订翻译 (by 3gf8jv4dv, 辞庐)
**错误修复**
- GP-4876: 修复 macOS 平台上空闲内存识别错误的问题 (by Damon Lu, Glavo)
- GP-5359: 修复语言为文言时下载游戏的选择模组加载器页面的版本号未本地化的问题 (by Wulian233)
- GP-5430: 修复启动游戏补全文件时,任务没有正确归类的问题 (by 辞庐, Glavo)
- GP-5532: 修复高分屏下新建账户标签页文字模糊的问题 (by 辞庐)
- GP-5536: 修复更新整合包后模组加载器版本号不会及时更新的问题 (by 小宇)
- GP-5539: 修复解析 Yggdrasil 服务器地址时不遵循重定向的问题 (by Glavo)
- GP-5556: 修复通过 CurseForge/Modrinth 安装整合包时可以返回到整合包类型选择页面的问题 (by 辞庐)
- GP-5558: 修复光影下载搜索栏中错误地显示“支持中英文搜索”提示的问题 (by 辞庐)
- GP-5581: 修复日志窗口中复制日志时会在主窗口中显示提示的问题 (by 辞庐)
- GP-5600: 修复部分对话框中取消按钮行为异常的问题 (by 辞庐)
- GP-5605: 修复选择角色弹窗未适配深色模式的问题 (by 辞庐)
- GP-5607: 修复账号列表复制 UUID 按钮样式异常的问题 (by 辞庐)
- GP-5633: 修复部分弹窗标题未本地化的问题 (by 辞庐)
- GP-5659: 修复不支持导出游戏运行栈的提示未正确展示的问题 (by 辞庐)
- GP-5662: 修复无法导出使用 Java 11 启动的游戏进程的运行栈的问题 (by 辞庐)
- GP-5669: 修复无法导入部分 Modrinth 整合包的问题 (by 辞庐)
- GP-5691: 修复安装整合包界面实例名称重复提示显示不全的问题 (by 辞庐)
- GP-5693: 修复 `SpinnerPane` 会裁切元素的问题 (by 辞庐)
- GP-5705: 修复手动取消模组更新检查时会弹窗提示操作失败的问题 (by 辞庐)
- GP-5706: 修复 `LineComponent` 副标题样式未正确应用 (by 辞庐)
- GP-5728: 修复“从互联网下载整合包”选项对话框可能会意外被关闭的问题 (by Glavo)
- GP-5737: 修复运行路径中包含非法字符 `=` 时的提示 (by 辞庐)
- GP-5765, GP-5810: 修复无法归一化 26.1 的预发布版和发布候选版本号的问题 (by mineDiamond)
- GP-5772: 修复 Windows 平台 125% 缩放的屏幕上弹出菜单内容模糊的问题 (by 辞庐)
- GP-5776: 修复颜色选择器中“自定义颜色”对话框初始值不会与当前颜色同步的问题 (by Damon Lu)
- GP-5782: 修复对高版本 Cleanroom 选择的 Java 版本错误的问题 (by 辞庐, Glavo)
+14 -8
View File
@@ -3,12 +3,18 @@
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1183364799797395474)
- 启动器
- GP-5833: 优化对 26.1 正式版/预发布版/候选版的支持 (by Glavo)
- 下载
- GP-5841: 将 Java 下载页面默认 Java 版本更新至 Java 25 (by Glavo)
- 本地化
- GP-5845: 更新文言文翻译 (by Glavo)
- 错误修复
- GP-5839: 修复文本框导致 GPU 占用率异常高的问题 (by Glavo)
**启动器**
- GP-5833: 优化对 26.1 正式版/预发布版/候选版的支持 (by Glavo)
**下载**
- GP-5841: 将 Java 下载页面默认 Java 版本更新至 Java 25 (by Glavo)
**本地化**
- GP-5845: 更新文言文翻译 (by Glavo)
**错误修复**
- GP-5839: 修复文本框导致 GPU 占用率异常高的问题 (by Glavo)
+2
View File
@@ -7,9 +7,11 @@
- GP-5870, GP-5873, GP-5874, GP-5882: 优化 Minecraft 26.1 性能 (by Glavo, 3gf8jv4dv) [BV1mPXSBEEBx](https://www.bilibili.com/video/BV1mPXSBEEBx)
- GP-5892: 优化对 26w14a 愚人节版本的支持,更新模组下载页游戏版本列表至 26.1.1 (by Glavo)
**世界管理**
- GP-5860: 种子地图、要塞地图、下届要塞地图和末地城地图支持 26.1 (by Glavo,neveler)
**错误修复**
- GP-5910: 修复无法为 Minecraft 26.1.1 从官方源安装 NeoForge 的问题 (by Glavo, Burning_TNT)
@@ -22,16 +22,20 @@
- GP-5880: 优化手动更新 URL (by Xirren)
- GP-5923: 优化原理图管理和世界界面中部分输入框的校验方式 (by 辞庐)
- GP-5928: 支持在 FreeBSD x86-64、Linux Arm64、Linux LoongArch64 和 Linux RISC-V64 平台上启动 Minecraft 26.2-snapshot-1+ (by Glavo)
**游戏设置**
- GP-5813: 将“不适用于当前系统的选项”的系统支持信息移到子标题 (by Damon Lu)
- GP-5930, GP-5940: 支持设置 Vulkan 的渲染器 (by Glavo, 3gf8jv4dv) [BV1Nhd5B9ENc](https://www.bilibili.com/video/BV1Nhd5B9ENc)
**账户**
- GP-5949: 上传微软账户皮肤时校验图片尺寸 (by 辞庐)
**整合包**
- GP-5786, GP-5837: 安装 CurseForge 整合包时下载图标 (by Calboot)
**外观**
- GP-5484: 支持加载 SVG 图片 (by Glavo)
@@ -46,6 +50,7 @@
- GP-5925: 优化添加认证服务器 http 警告颜色 (by 辞庐)
- GP-5944: 优化菜单分隔符颜色 (by 辞庐, Glavo)
- GP-5945: 增大自动安装界面加载器名称和版本号之间的间距 (by 辞庐)
**下载**
- GP-5601, GP-5899: 下载页面折叠快照 Minecraft 版本 (by 辞庐, Glavo, Calboot)
@@ -54,10 +59,12 @@
- GP-5872: 优化下载页面依赖项展示 (by 辞庐)
- GP-5934: 更新游戏内容下载页游戏版本列表至 26.1.2 (by Glavo)
- GP-5946: 隐藏 CurseForge 源中游戏内容的不重要标签 (by 辞庐)
**本地化**
- GP-5931: 支持将新格式快照版本号翻译为文言 (by Glavo)
- 优化软件文案,修订翻译 (by 3gf8jv4dv)
**错误修复**
- GP-5301: 修复清理游戏资源/库操作在 JavaFX 线程运行的问题 (by 辞庐)
+8
View File
@@ -0,0 +1,8 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1195224106388160520)
**错误修复**
- GP-5994: 修复 CurseForge 源中内容不显示 Minecraft 26.x 版本的问题 (by Glavo)
+87
View File
@@ -0,0 +1,87 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1202644860735062023)
**启动器**
- GP-5906: 导出启动脚本时如果脚本文件缺少扩展名则自动添加平台默认扩展名 (by Damon Lu)
- GP-5912: 渲染 HTML 内容时支持嵌套列表 (by neveler)
- GP-5863: 使用 tomlj 代替 toml4j 以适配新 TOML 标准 (by Calboot)
- GP-5987: 支持通过环境变量设置 HMCL 数据文件夹 (by Glavo)
- GP-5993: 增强对 x86-64 转译支持状态的检测 (by Glavo)
- GP-6045: 在感谢页面新增八蓝米科技 (by 8Mi_Yile)
- GP-6039: 更新软件名称和版本号位置的文档链接 (by Zkitefly)
- GP-6084: 使用 WebURL for Java 解析 URI (by Glavo)
**下载**
- GP-5637: 移除游戏内容下载页面内容简介中的换行 (by 辞庐)
- GP-5964: 将游戏内容的模组加载器标签放在标签列表的末尾 (by ENC_Euphony, Glavo)
- GP-5976: 安装模组和实例时禁止文件名中包含感叹号 (by Xirren, Glavo)
- GP-4558: 支持断点续传 (by Glavo)
**实例管理**
- GP-5867: 优化模组管理和数据包管理界面的全选功能 (by 辞庐)
**整合包**
- GP-5918: 整合包检查完整性时忽略已升级模组 (by Xirren)
- GP-6032: 导出 MultiMC 整合包时不再写入 `MaxMemAlloc` (by 辞庐)
**世界管理**
- GP-6036: 优化种子隐藏按钮 (by 辞庐)
**账户**
- GP-5611: 优化微软登录未购买提示 (by 辞庐)
- GP-6013: 优化外置登录账户对话链接样式 (by 辞庐)
**外观**
- GP-5948: 对不支持取消操作的任务对话框禁用取消按钮 (by 辞庐)
- GP-5784: 优化滚动条样式 (by 辞庐)
- GP-5956: 移除 `ComponentSublist` 内部元素的缩进 (by Glavo)
- GP-5968: 使用 jwebp 代替 TwelveMonkeys 加载 WebP 图像 (by Glavo)
- GP-5778: 在 macOS 下随明暗模式设置 `NSAppearance` (by Damon Lu, Glavo)
- GP-5991: 当鼠标未悬停在滚动条上时使滚动条半透明 (by Glavo)
- GP-6010: 优化设置页更新按钮 (by 辞庐)
- GP-5806: 选择背景壁纸时支持选择文件夹 (by mineDiamond, Glavo, 3gf8jv4dv)
- GP-6024: 陶瓦联机邀请码输入框添加非空校验 (by 辞庐)
- GP-6026: 移除关于页面 “版权” 项超链接 (by 辞庐)
- GP-6025: 优化输入框中错误提示与确认按钮的间距 (by 辞庐)
- GP-6053: 将“旁观者模式”改为“旁观模式” (by 辞庐)
- GP-6014: 优化“设置 > 通用”页面 (by 辞庐)
- GP-6075: 优化 `LineSelectButton` 的空值处理 (by Glavo)
**跨平台**
- GP-5981: 提供 DEB 安装包 (by Glavo)
**本地化**
- 优化软件文案,修订翻译 (by 3gf8jv4dv)
- GP-6069: 修订“设置 > 下载”页面中版本列表选项的简体中文翻译 (by 3gf8jv4dv)
**错误修复**
- GP-5955: 修复日志窗口选区越出屏幕时未正确取消选中的问题 (by ENC_Euphony)
- GP-5635: 修复可输入的组合框文本内容未与不可输入的组合框对齐的问题 (by 辞庐)
- GP-5971: 修复游戏内容下载页面无法加载部分内容的图标的问题 (by Glavo)
- GP-5966: 修复添加默认 JVM 参数时可能覆盖通过外部文件传递的参数的问题 (by Glavo)
- GP-5978: 修复模组加载器没有可用版本时缺少提示的问题 (by 3gf8jv4dv)
- GP-5986: 修复读取世界压缩包根目录时未关闭 `Files.list` stream 的问题 (by ENC_Euphony)
- GP-5988: 修复从 CurseForge 上下载整合包时数据包位置错误的问题 (by ENC_Euphony)
- GP-5819: 修复更新时不保存窗口位置的问题 (by 辞庐)
- GP-5994: 修复 CurseForge 源中内容不显示 Minecraft 26.x 版本的问题 (by Glavo)
- GP-6006: 修复微软登录完成页弹窗缺少圆角的问题 (by 辞庐)
- GP-6009: 修复愚人节版本 Minecraft 2.0 的 Legacy Fabric 下载列表为空的问题 (by Wulian233)
- GP-6012: 修复主页面更新提示未设置鼠标指针为手形的问题 (by 辞庐)
- GP-6023: 修复在世界管理中创建备份时启动器崩溃的问题 (by 辞庐)
- GP-6046: 修复皮肤预览模型左右两侧贴图错误的问题 (by ShulkerSakura)
- GP-6054: 修复特定场景下整合包实例版本号不显示的问题 (by 辞庐)
- GP-6067: 修复点击版本列表项目标签后标签消失的问题 (by 辞庐)
- GP-6068: 修复在使用 zlib-ng 的系统上 Forge/NeoForge 安装可能因哈希校验失败的问题 (by Glavo)
- GP-5789: 缓解离线皮肤 CSL 输入框输入时频繁弹出“操作失败”提示的问题 (by 辞庐)
+43
View File
@@ -0,0 +1,43 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1211919915605295121)
**实例管理**
- GP-6110: 在实例设置的浏览菜单中添加崩溃日志文件夹快捷打开选项 (by 辞庐)
**资源包**
- GP-6091: 增强资源包管理功能 (by Calboot, 3gf8jv4dv, Glavo)
**下载**
- GP-6074: 在无法显示 Swing 窗口时不再显示 JavaFX 下载进度对话框 (by Glavo)
- GP-6151: 将下载超时时间放宽至 30 秒 (by Glavo)
**外观**
- GP-6121: 移除主页面“下载”按钮的 Tooltip (by 辞庐)
- GP-6119: 优化游戏列表弹窗的列表项大小 (by 辞庐)
**本地化**
- GP-6130: 将界面文案中的 `Xbox` 统一为 `XBOX` (by 3gf8jv4dv)
- GP-6120: 优化陶瓦联机反馈提示 (by 辞庐)
**账户**
- GP-6123: 在已有账户时移除联机和主页中的玩家名称 Tooltip (by Wulian233)
- GP-6111: 在账户选择弹窗中为已选择的账户添加底色 (by 辞庐)
- GP-6087: 设备代码流在完成授权后隐藏二维码 (by 辞庐, 3gf8jv4dv)
**错误修复**
- GP-6118: 修复 `LineSelectButton` 在页面底部时方向异常的问题 (by 辞庐)
- GP-6106: 修复 CurseForge 模组类别翻译错误的问题 (by Calboot)
- GP-6102: 修复删除 `mmc-bootstrap` 后游戏依赖无法补全的问题 (by 辞庐)
- GP-6117: 修复列表工具栏水波纹溢出的问题 (by 辞庐)
- GP-6133: 修复切换实例弹窗中版本列表未及时更新的问题 (by ENC_Euphony)
- GP-6129: 修复无法用中文搜索游戏内容的问题 (by Glavo)
- GP-6160: 修复无法为 MC 1.21.11 安装 Forge 的问题 (by Glavo)
+10
View File
@@ -0,0 +1,10 @@
---
---
[详细版本介绍 (Bilibili)](https://www.bilibili.com/opus/1217851149458079746)
**下载**
- GP-6215: 优化下载功能 (by Glavo)
- GP-6218: 更新游戏内容下载页游戏版本列表至 26.2 (by 3gf8jv4dv)
+56 -51
View File
@@ -1,58 +1,63 @@
---
---
- 启动器
- 在启动器更新时显示更新日志
- 启动前检查是否是 Java 8~10
- [https://www.huangyuhui.net/index.php/2019/01/27/83/](https://www.huangyuhui.net/index.php/2019/01/27/83/)支持整合包自带 Java 运时
- 在缓存目录无效时自动更改设置
- 在登录对话框中添加注册链接
- 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹
- 更新 authlib-injector
**启动器**
- 自动安装
- 只从 BMCLAPI 获取 Forge、OptiFine 列表
- 添加 BMCLAPI 赞助信息
- 支持 Forge 1.13 的自动安装
- 支持 Forge、LiteLoader、OptiFine 的手动更新
- 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题
- 下载库文件失败时提供更友好的提示
- 安装游戏时更新资源文件
- 启动时下载缺失的 Minecraft 本体文件
- 在安装游戏失败时删除不完全的游戏
- 在启动器更新时显示更新日志
- 启动前检查是否是 Java 8~10
- <https://www.huangyuhui.net/index.php/2019/01/27/83/> 支持整合包自带 Java 运行时
- 在缓存目录无效时自动更改设置
- 在登录对话框中添加注册链接
- 将游戏依赖的动态链接库解压到 .minecraft 中而不是系统临时文件夹
- 更新 authlib-injector
- 游戏管理
- 支持对 Fabric 模组的管理
- 支持数据包列表页面、模组管理面板多选
- 添加刷新模组列表的按钮
- 在未安装 Mod API 的情况下禁用模组管理面板
- 忽略游戏存档名中的颜色转移符
- 隐藏游戏版本不匹配的游戏存档
- 添加打开存档文件夹的菜单
- 删除在版本管理页面中的删除游戏和重命名按钮
- 提醒用户在修改版本独立选项时需要注意游戏文件的转移
- 支持拖拽游戏存档压缩包到游戏界面以便安装游戏存档
**自动安装**
- 整合包
- 支持整合包拖拽到主页面打开安装向导
- 支持新版 MultiMC 整合包的导入
- 在更新整合包时进行游戏文件的备份
- 从 Cursemeta 上下载 Curse 上被删除的 Mod 文件
- 只从 BMCLAPI 获取 Forge、OptiFine 列表
- 添加 BMCLAPI 赞助信息
- 支持 Forge 1.13 的自动安装
- 支持 Forge、LiteLoader、OptiFine 的手动更新
- 添加提示部分版本的 Forge 和 LiteLoader 不兼容的问题
- 下载库文件失败时提供更友好的提示
- 安装游戏时更新资源文件
- 启动时下载缺失的 Minecraft 本体文件
- 在安装游戏失败时删除不完全的游戏
- 修复
- 修复头像不显示头盔层的问题
- 修复删除模组时可能导致的崩溃
- 修复刷新数据包列表时可能的崩溃问题
- 修复启动器皮肤预览异常的问题
- 修复下载失败后无法删除游戏版本的问题
- 修复刷新版本列表时的卡顿问题
- 修复 mods 不是文件夹时无法安装模组的问题
- 修复启动按钮无法根据背景颜色更改字体颜色的问题
- 修复 Java 10 上 UI 错位的问题
- 修复启动 Curse 整合包时尝试下载被禁用的模组的问题
- 修复皮肤图片文件损坏时导致的崩溃问题
- 修复配置文件格式不正确时导致的崩溃问题
- 修复 Curse 整合包更新失败的问题
- 修复自动更新弹出气泡的界面错乱问题
- 修复下载资源文件时潜在的崩溃问题
- 修复导入整合包时的乱码问题
**游戏管理**
- 支持对 Fabric 模组的管理
- 支持数据包列表页面、模组管理面板多选
- 添加刷新模组列表的按钮
- 在未安装 Mod API 的情况下禁用模组管理面板
- 忽略游戏存档名中的颜色转移符
- 隐藏游戏版本不匹配的游戏存档
- 添加打开存档文件夹的菜单
- 删除在版本管理页面中的删除游戏和重命名按钮
- 提醒用户在修改版本独立选项时需要注意游戏文件的转移
- 支持拖拽游戏存档压缩包到游戏界面以便安装游戏存档
**整合包**
- 支持整合包拖拽到主页面打开安装向导
- 支持新版 MultiMC 整合包的导入
- 在更新整合包时进行游戏文件的备份
- 从 Cursemeta 上下载 Curse 上被删除的 Mod 文件
**修复**
- 修复头像不显示头盔层的问题
- 修复删除模组时可能导致的崩溃
- 修复刷新数据包列表时可能的崩溃问题
- 修复启动器皮肤预览异常的问题
- 修复下载失败后无法删除游戏版本的问题
- 修复刷新版本列表时的卡顿问题
- 修复 mods 不是文件夹时无法安装模组的问题
- 修复启动按钮无法根据背景颜色更改字体颜色的问题
- 修复 Java 10 上 UI 错位的问题
- 修复启动 Curse 整合包时尝试下载被禁用的模组的问题
- 修复皮肤图片文件损坏时导致的崩溃问题
- 修复配置文件格式不正确时导致的崩溃问题
- 修复 Curse 整合包更新失败的问题
- 修复自动更新弹出气泡的界面错乱问题
- 修复下载资源文件时潜在的崩溃问题
- 修复导入整合包时的乱码问题
+33 -29
View File
@@ -1,35 +1,39 @@
---
---
- 启动器
- 添加西班牙语,更新英语、俄语翻译
- 主页面按回车键启动游戏
- 游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单
- 不再强制使用 java.exe
- 日志窗口允许关闭自动滚动
- 避免安装游戏时输入的游戏名称不符合 Windows 系统要求
- 修复输入某些错误的 Java 路径时崩溃的问题
- 修复浏览 Mod 列表可能出现的崩溃问题
- 修复无法识别 Java 12、13 的问题
**启动器**
- 自动安装
- 添加 Fabric 自动安装
- 新安装的游戏可以修改游戏版本
- 修复 OptiFine 自动安装
- 修复同时安装 Forge 和 OptiFine 自动安装失败的问题
- 修复某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题
- 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题
- 修复部分情况下无法下载 Forge 安装包的问题
- 修复无法安装 1.14 和 1.15 游戏的问题
- 添加西班牙语,更新英语、俄语翻译
- 主页面按回车键启动游戏
- 游戏列表内点击列表项进入游戏设置,右键列表项打开游戏管理菜单
- 不再强制使用 java.exe
- 日志窗口允许关闭自动滚动
- 避免安装游戏时输入的游戏名称不符合 Windows 系统要求
- 修复输入某些错误的 Java 路径时崩溃的问题
- 修复浏览 Mod 列表可能出现的崩溃问题
- 修复无法识别 Java 12、13 的问题
- 整合包
- 允许从给定链接下载整合包并进行安装
- 支持导出 MultiMC 整合包
- 修复无法下载 Curse 模组的问题
- 修复下载 Curse 整合包失败后会删除游戏的问题
**自动安装**
- 服主功能
- 添加 authlib-injectors.json,允许服主将添加账号页面更改为默认添加指定服务器的 Authlib Injector 账户
- 访问 [https://www.huangyuhui.net/index.php/2019/09/09/109/](https://www.huangyuhui.net/index.php/2019/09/09/109/) 以查看添加方法
- 添加服务器自动更新整合包,允许服务器远程更新游戏客户端
- 访问 [https://www.huangyuhui.net/index.php/2019/11/12/118/](https://www.huangyuhui.net/index.php/2019/11/12/118/) 以查看添加方法
- 添加 Fabric 自动安装
- 新安装的游戏可以修改游戏版本
- 修复 OptiFine 自动安装
- 修复同时安装 Forge 和 OptiFine 自动安装失败的问题
- 修复某些情况下无法安装 1.12.2 及以下版本的 Forge 的问题
- 修复导出整合包导入时无法安装 1.13 Forge 和 OptiFine 的问题
- 修复部分情况下无法下载 Forge 安装包的问题
- 修复无法安装 1.14 和 1.15 游戏的问题
**整合包**
- 允许从给定链接下载整合包并进行安装
- 支持导出 MultiMC 整合包
- 修复无法下载 Curse 模组的问题
- 修复下载 Curse 整合包失败后会删除游戏的问题
**服主功能**
- 添加 authlib-injectors.json,允许服主将添加账号页面更改为默认添加指定服务器的 Authlib Injector 账户
- 访问 <https://www.huangyuhui.net/index.php/2019/09/09/109/> 以查看添加方法
- 添加服务器自动更新整合包,允许服务器远程更新游戏客户端
- 访问 <https://www.huangyuhui.net/index.php/2019/11/12/118/> 以查看添加方法
+28 -25
View File
@@ -1,30 +1,33 @@
---
---
- 启动器
- 改进部分错误提示
- 更新繁体中文语言文件
- 在主界面账户栏添加鼠标滚轮便捷切换游戏账户
- 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名
- 修复原版游戏用熔炉图标标识的问题
- 修复无法取消启动过程和安装过程的问题
- 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题
- 修复启动 1.15 时不会停止等待的问题
- 修复 Windows 下导出启动脚本对双引号的错误转义
- 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题
- 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题
- 修复使用 BMCLAPI 不能下载 authlib-injector 和加载游戏列表的问题
**启动器**
- 自动安装
- 添加 MCBBS 下载源
- 在资源索引文件不合法时尝试重新下载
- 添加 Fabric 的 BMCLAPI 和 MCBBS 下载源支持
- 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载
- 修复重复下载游戏依赖文件的问题
- 改进部分错误提示
- 更新繁体中文语言文件
- 在主界面账户栏添加鼠标滚轮便捷切换游戏账户
- 在主界面账户栏添加鼠标悬浮提示以查看完整游戏名
- 修复原版游戏用熔炉图标标识的问题
- 修复无法取消启动过程和安装过程的问题
- 修复无法启动使用 Vivecraft 安装器新安装的游戏的问题
- 修复启动 1.15 时不会停止等待的问题
- 修复 Windows 下导出启动脚本对双引号的错误转义
- 修复部分正版账号登录 1.7.10 会导致游戏崩溃的问题
- 修复关闭 JVM 检查时仍然会检查 java.exe 是否合法的问题
- 修复使用 BMCLAPI 不能下载 authlib-injector 和加载游戏列表的问题
- 整合包
- 导出整合包时将剔除所有日志文件和 CustomSkinLoader 的缓存
- 修复导入 HMCL 整合包时无法安装 Forge 的问题
- 修复无法下载 Curse 整合包部分 Mod(如潘马斯)的问题
- 修复下载 Curse 整合包 Mod 失败后会删除整合包的问题
- 修复下载服务端整合包没有对链接转义而无法下载的问题
**自动安装**
- 添加 MCBBS 下载源
- 在资源索引文件不合法时尝试重新下载
- 添加 Fabric 的 BMCLAPI 和 MCBBS 下载源支持
- 现官方下载源下载 Forge 时依赖文件不再强制从 BMCLAPI 下载
- 修复重复下载游戏依赖文件的问题
**整合包**
- 导出整合包时将剔除所有日志文件和 CustomSkinLoader 的缓存
- 修复导入 HMCL 整合包时无法安装 Forge 的问题
- 修复无法下载 Curse 整合包部分 Mod(如潘马斯)的问题
- 修复下载 Curse 整合包 Mod 失败后会删除整合包的问题
- 修复下载服务端整合包没有对链接转义而无法下载的问题
+50 -47
View File
@@ -1,52 +1,55 @@
---
---
- 启动器
- 修改界面
- 更新俄语翻译
- 改善游戏下载速度
- 添加复制游戏实例功能
- 添加清理缓存文件夹按钮
- 修改默认下载源为 MCBBS
- 提升与 ServerSync 的兼容性
- 添加为正版账号上传皮肤的功能
- 支持调整并记住启动器窗口大小
- 在日志窗口添加导出游戏日志功能
- 现在会校验资源索引文件的完整性
- 现在启动器代理设置对启动后的游戏有效
- 在启动游戏、安装游戏等界面显示总下载速度
- 游戏崩溃后显示游戏崩溃报告而不是游戏日志
- 允许在启动游戏按钮上滑动鼠标滚轮切换游戏
- 在删除 Mod、世界、数据包时弹出删除确认提示
- 允许使用在启动器同目录下的 authlib-injector.jar 文件
- 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整
- 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题
- 修复部分整合包无法修改启动时游戏窗口大小的问题
- 修复终止游戏后启动器不会停止等待的问题
- 修复 1.5.2 及以下版本不能下载资源文件的问题
- 修复某些情况下启动游戏时,启动器会崩溃的问题
- 修复进入游戏设置后无法重命名部分游戏版本的问题
- 修复不能在 Java 17 下载 Forge 和自动更新的问题
- 修复重命名版本时,输入不合法的新名字后的错误提示
- 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题
- 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题
- 修复在输入特定错误的 authlib-injector 服务器地址时会导致启动器崩溃的问题
**启动器**
- 自动安装
- 在 OptiFine 库缺失时可以自动补全
- 提升自动安装功能与其他启动器的兼容性
- 在当前下载源下载失败后自动重试其他下载源
- 在启动游戏、安装游戏等界面显示明确的安装步骤
- 安装游戏向导内可直接切换下载源,而不需要返回启动器设置页面
- 支持同时安装 Minecraft 1.14.4 及以上版本的 Forge 和 OptiFine
- 自动安装页面将提示不兼容的第三方库,比如 Forge 和 Fabric 不兼容
- 修复无法安装 Forge 1.12.2 2852 的问题
- 修复在 Curse 整合包安装遗漏部分 Mod 的问题
- 修复在 Curse 整合包安装部分成功时删除游戏的问题
- 修复 1.5.2 及以下版本安装 Forge 后启动失败的问题
- 修复从 MCBBS 下载源下载文件可能会下载到空文件的问题
- 修复 1.12.2 同时安装 Forge, OptiFine 时无法进入游戏存档的问题
- 修改界面
- 更新俄语翻译
- 改善游戏下载速度
- 添加复制游戏实例功能
- 添加清理缓存文件夹按钮
- 修改默认下载源为 MCBBS
- 提升与 ServerSync 的兼容性
- 添加为正版账号上传皮肤的功能
- 支持调整并记住启动器窗口大小
- 在日志窗口添加导出游戏日志功能
- 现在会校验资源索引文件的完整性
- 现在启动器代理设置对启动后的游戏有效
- 在启动游戏、安装游戏等界面显示总下载速度
- 游戏崩溃后显示游戏崩溃报告而不是游戏日志
- 允许在启动游戏按钮上滑动鼠标滚轮切换游戏
- 在删除 Mod、世界、数据包时弹出删除确认提示
- 允许使用在启动器同目录下的 authlib-injector.jar 文件
- 在游戏崩溃后的第二次启动时自动检查资源和支持库文件是否完整
- 添加启动器的 JVM 参数 -Dhmcl.font.override=fontfamily 以允许 Linux 用户更换字体以解决白屏问题
- 修复部分整合包无法修改启动时游戏窗口大小的问题
- 修复终止游戏后启动器不会停止等待的问题
- 修复 1.5.2 及以下版本不能下载资源文件的问题
- 修复某些情况下启动游戏时,启动器会崩溃的问题
- 修复进入游戏设置后无法重命名部分游戏版本的问题
- 修复不能在 Java 17 下载 Forge 和自动更新的问题
- 修复重命名版本时,输入不合法的新名字后的错误提示
- 修复重命名被依赖的版本后,会破坏其他依赖这个版本的版本的问题
- 修复在自定义游戏运行目录时,输入不合法的路径会导致崩溃的问题
- 修复在输入特定错误的 authlib-injector 服务器地址时会导致启动器崩溃的问题
- 整合包
- 修复整合包配置丢失后整合包游戏版本不能修改配置的问题
- 修复服务器自动更新整合包更新时可能会出现 AccessDeniedException 的问题
**自动安装**
- 在 OptiFine 库缺失时可以自动补全
- 提升自动安装功能与其他启动器的兼容性
- 在当前下载源下载失败后自动重试其他下载源
- 在启动游戏、安装游戏等界面显示明确的安装步骤
- 安装游戏向导内可直接切换下载源,而不需要返回启动器设置页面
- 支持同时安装 Minecraft 1.14.4 及以上版本的 Forge 和 OptiFine
- 自动安装页面将提示不兼容的第三方库,比如 Forge 和 Fabric 不兼容
- 修复无法安装 Forge 1.12.2 2852 的问题
- 修复在 Curse 整合包安装遗漏部分 Mod 的问题
- 修复在 Curse 整合包安装部分成功时删除游戏的问题
- 修复 1.5.2 及以下版本安装 Forge 后启动失败的问题
- 修复从 MCBBS 下载源下载文件可能会下载到空文件的问题
- 修复 1.12.2 同时安装 Forge, OptiFine 时无法进入游戏存档的问题
**整合包**
- 修复整合包配置丢失后整合包游戏版本不能修改配置的问题
- 修复服务器自动更新整合包更新时可能会出现 AccessDeniedException 的问题
+37 -35
View File
@@ -1,39 +1,41 @@
---
---
- 启动器
- 修改界面
- 更新俄语翻译
- 改善游戏下载速度
- 添加复制游戏实例功能
- 支持微软正版账户登录
- 自动设置游戏的默认语言为中文
- 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX
- 配置文件会优先选择启动器同目录而不是工作目录
- 支持 Authlib-injector 账户上传皮肤
- 支持 Authlib-injector 服务器用邮箱以外的账户登录
- 上传皮肤时自动检测 Steve、Alex 模型
- 刷新账户时将显示进度条
- 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft
- 启动 Minecraft 1.17 时自动下载官方提供的 Java 16
- 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源
- 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK
- 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题
- 修复首次打开整合包会弹出 3 个新建账户窗口的问题
- 修复运行在 Java 12+ 时列表和下拉菜单不能正常显示的问题
- 修复鼠标指针不正常的问题
- 修复添加外置登录的正版账号后会与普通正版账号冲突的问题
- 修复因为线程过多导致在 macOS 系统上运行崩溃的问题
- 修复重命名游戏版本点击移动窗口而不是移动光标的问题
- 尝试修复在游戏启动后启动器直接关闭时导致游戏卡死的问题
- 修复启动器设置 HTTP 代理后,游戏无法访问网络的问题
- 修复下载支持库文件失败时启动器崩溃的问题
- 修复不能识别部分数据包的问题
- 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题
- 解决 Java 16 下部分 mod 不能正常运行的问题
**启动器**
- 整合包
- 更新游戏整合包后会显示新的版本号
- 支持我的世界中文论坛整合包标准
- 修复更新整合包下载地址不能使用在线下载自动更新整合包的问题
- 修复服务端自动更新整合包不能更新游戏、Forge 版本的问题
- 修改界面
- 更新俄语翻译
- 改善游戏下载速度
- 添加复制游戏实例功能
- 支持微软正版账户登录
- 自动设置游戏的默认语言为中文
- 兼容 Java11+,在 Java 11+ 上运行时会自动下载 JavaFX
- 配置文件会优先选择启动器同目录而不是工作目录
- 支持 Authlib-injector 账户上传皮肤
- 支持 Authlib-injector 服务器用邮箱以外的账户登录
- 上传皮肤时自动检测 Steve、Alex 模型
- 刷新账户时将显示进度条
- 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft
- 启动 Minecraft 1.17 时自动下载官方提供的 Java 16
- 允许第三方修改 HMCL 的 BMCLAPI 下载源,从而支持第三方下载源
- 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK
- 修复启动 Minecraft 1.0 时不会停止等待游戏启动的问题
- 修复首次打开整合包会弹出 3 个新建账户窗口的问题
- 修复运行在 Java 12+ 时列表和下拉菜单不能正常显示的问题
- 修复鼠标指针不正常的问题
- 修复添加外置登录的正版账号后会与普通正版账号冲突的问题
- 修复因为线程过多导致在 macOS 系统上运行崩溃的问题
- 修复重命名游戏版本点击移动窗口而不是移动光标的问题
- 尝试修复在游戏启动后启动器直接关闭时导致游戏卡死的问题
- 修复启动器设置 HTTP 代理后,游戏无法访问网络的问题
- 修复下载支持库文件失败时启动器崩溃的问题
- 修复不能识别部分数据包的问题
- 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题
- 解决 Java 16 下部分 mod 不能正常运行的问题
**整合包**
- 更新游戏整合包后会显示新的版本号
- 支持我的世界中文论坛整合包标准
- 修复更新整合包下载地址不能使用在线下载自动更新整合包的问题
- 修复服务端自动更新整合包不能更新游戏、Forge 版本的问题
+50 -45
View File
@@ -1,52 +1,57 @@
---
---
- 启动器
- 支持多人联机
- 自动选择新添加的 Authlib-injector 服务器
- 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站
- 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK
- 允许修改启动器字体
- 游戏崩溃时提供崩溃分析报告
- 添加帮助页面
- 更换默认背景图
- 修复微软登录页可能白屏的问题
- 任意页面按 ESC 键可返回上一页
- 修复启动器打开时提示找不到 DST ROOT CA X3 证书的问题
- 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题
- 修复 Log4j 远程代码执行漏洞
**启动器**
- 游戏启动
- 支持官方启动器为 Minecraft 启动参数提供的一些占位符
- 兼容 TLauncher 游戏客户端
- 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏
- 解决 Java 16 下部分 mod 不能正常运行的问题
- 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题
- 修复不能启动 BakaXL 安装后的游戏的问题
- 修复不能正常启动 Minecraft 1.5 及以下版本的问题(需要手动删除 options.txt)
- 支持多人联机
- 自动选择新添加的 Authlib-injector 服务器
- 添加修改离线账户皮肤的功能,允许使用本地图片和 LittleSkin 等皮肤站
- 自动检测系统内安装的 OpenJDK,包括 Liberica/Microsoft/Zulu/AdoptOpenJDK
- 允许修改启动器字体
- 游戏崩溃时提供崩溃分析报告
- 添加帮助页面
- 更换默认背景图
- 修复微软登录页可能白屏的问题
- 任意页面按 ESC 键可返回上一页
- 修复启动器打开时提示找不到 DST ROOT CA X3 证书的问题
- 修复对系统平台的识别错误导致部分平台不能正确下载 JavaFX 的问题
- 修复 Log4j 远程代码执行漏洞
- 下载
- 启动 Minecraft 1.17 及以上版本时自动下载官方提供的 Java 16
- 支持 CurseForge 整合包、Mod、资源包、地图 下载
- 支持 1.17 Forge 的自动安装与游戏启动
- 支持 1.17 下 OptiFine 与 Forge 同时安装
- 添加模组批量更新功能
- 添加自动选择下载源的功能
- 允许修改默认的下载并发数
**游戏启动**
- 游戏设置
- 允许在 Java 自定义参数内覆盖启动器默认提供的启动参数,而不需要再禁止启动器生成默认参数
- 允许在 Minecraft 自定义参数内使用 ${game_directory} 等占位符
- 改进版本管理和游戏设置的界面
- 添加修改游戏进程优先级的功能
- 支持自动选择游戏内存大小
- 添加查看模组详细介绍及打开其官方页面的功能
- 添加 Linux 下使用系统 GLFW 及 OpenAL 的功能
- 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft
- 添加自动选择 Java 选项,省去提示用户需要更改 Java 版本的步骤
- 支持官方启动器为 Minecraft 启动参数提供的一些占位符
- 兼容 TLauncher 游戏客户端
- 如果在 macOS/Windows ARM 设备上使用 HMCL,HMCL 会优先使用 x86 的 JDK 运行游戏
- 解决 Java 16 下部分 mod 不能正常运行的问题
- 修复 Windows 下打开使用 Unicode UTF-8 提供全球语言支持选项后启动器无法打开的问题
- 修复不能启动 BakaXL 安装后的游戏的问题
- 修复不能正常启动 Minecraft 1.5 及以下版本的问题(需要手动删除 options.txt)
- 整合包
- 支持使用 Fabric 作为 Mod 加载器的 CurseForge 整合包
- 支持我的世界中文论坛整合包规范第二版,兼容 CurseForge 整合包格式,允许导入 MultiMC
- 修复安装整合包时可能崩溃的问题
- 修复 MCBBS 整合包实现不符合规范的问题
**下载**
- 启动 Minecraft 1.17 及以上版本时自动下载官方提供的 Java 16
- 支持 CurseForge 整合包、Mod、资源包、地图 下载
- 支持 1.17 Forge 的自动安装与游戏启动
- 支持 1.17 下 OptiFine 与 Forge 同时安装
- 添加模组批量更新功能
- 添加自动选择下载源的功能
- 允许修改默认的下载并发数
**游戏设置**
- 允许在 Java 自定义参数内覆盖启动器默认提供的启动参数,而不需要再禁止启动器生成默认参数
- 允许在 Minecraft 自定义参数内使用 ${game_directory} 等占位符
- 改进版本管理和游戏设置的界面
- 添加修改游戏进程优先级的功能
- 支持自动选择游戏内存大小
- 添加查看模组详细介绍及打开其官方页面的功能
- 添加 Linux 下使用系统 GLFW 及 OpenAL 的功能
- 自定义本地库路径,允许 M1 设备运行 ARM 版本的 Minecraft
- 添加自动选择 Java 选项,省去提示用户需要更改 Java 版本的步骤
**整合包**
- 支持使用 Fabric 作为 Mod 加载器的 CurseForge 整合包
- 支持我的世界中文论坛整合包规范第二版,兼容 CurseForge 整合包格式,允许导入 MultiMC
- 修复安装整合包时可能崩溃的问题
- 修复 MCBBS 整合包实现不符合规范的问题
+37 -33
View File
@@ -1,41 +1,45 @@
---
---
- 启动器
- 多人联机功能暂时下线维护 [详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate)
- 不再支持添加 Mojang 账户 [迁移至微软账户](https://aka.ms/MinecraftMigration)
- 默认在用户文件夹中存储账户信息,提高安全性
- 优化性能与资源占用,解决卡顿问题
- 优化文本提示
- 优化自动内存分配功能
- 优化游戏 JVM 参数,改善游戏性能
- 优化自动选择 Java 功能
- 优化自动下载 Java 功能
- 优化微软账户登录功能
- 支持 Gif 格式背景图
- 优化高分辨率屏幕上图标的显示效果
- 更新反馈页面
- 默认加入 Little Skin 登录选项
- 为 Linux 提供 sh 格式构建
- 新添加 JVM 选项 `-Dhmcl.home`,允许用户自行指定 HMCL_DIRECTORY
**启动器**
- 下载
- 支持整合包下载页使用中文搜索
- 支持下载安装 Modrinth 整合包
- 支持 Quilt 自动安装
- 默认将搜索排序修改为“热度”
- 多人联机功能暂时下线维护 [详情](https://hmcl.huangyuhui.net/api/redirect/multiplayer-migrate)
- 不再支持添加 Mojang 账户 [迁移至微软账户](https://aka.ms/MinecraftMigration)
- 默认在用户文件夹中存储账户信息,提高安全性
- 优化性能与资源占用,解决卡顿问题
- 优化文本提示
- 优化自动内存分配功能
- 优化游戏 JVM 参数,改善游戏性能
- 优化自动选择 Java 功能
- 优化自动下载 Java 功能
- 优化微软账户登录功能
- 支持 Gif 格式背景图
- 优化高分辨率屏幕上图标的显示效果
- 更新反馈页面
- 默认加入 Little Skin 登录选项
- 为 Linux 提供 sh 格式构建
- 新添加 JVM 选项 `-Dhmcl.home`,允许用户自行指定 HMCL_DIRECTORY
- 游戏设置
- 默认开启“自动选择合适的 Java”
- 添加世界信息界面,允许玩家在启动器内查看详细世界信息以及修改世界设置
- 添加模组列表搜索
- 优化自动内存分配
**下载**
- 跨平台
- 适配 Windows ARM64 平台
- 适配 Linux LoongArch64(旧世界)平台
- 适配 Linux ARM32 平台
- 适配 Linux ARM64 平台
- 适配 MacOS ARM64 平台
- 支持整合包下载页使用中文搜索
- 支持下载安装 Modrinth 整合包
- 支持 Quilt 自动安装
- 默认将搜索排序修改为“热度”
**游戏设置**
- 默认开启“自动选择合适的 Java”
- 添加世界信息界面,允许玩家在启动器内查看详细世界信息以及修改世界设置
- 添加模组列表搜索
- 优化自动内存分配
**跨平台**
- 适配 Windows ARM64 平台
- 适配 Linux LoongArch64(旧世界)平台
- 适配 Linux ARM32 平台
- 适配 Linux ARM64 平台
- 适配 MacOS ARM64 平台
此外,本版本包含数百项错误修复,详情请查看[测试版更新日志](https://docs.hmcl.net/changelog/dev.html)。
+25 -21
View File
@@ -1,31 +1,35 @@
---
---
- 启动器
- 拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,[详情](https://github.com/fractureiser-investigation/fractureiser#readme))
- 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 [App Translocation](https://lapcatsoftware.com/articles/app-translocation.html) 机制,可能会自动将 HMCL 移动至 `/private/var/folders` 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失)
- 日志分析窗口中显示物理内存大小
- 更新 Minecraft 购买链接
- 优化 SSL 异常报错信息
- 添加更多日志分析规则
- 更新游戏版本号检测性能
- 添加隐藏测试版提示开关
- 在 Linux 上支持 `MESA_LOADER_DRIVER_OVERRIDE` 环境变量,适配 Zink 驱动程序
- 更新翻译
**启动器**
- 下载
- 更新搜索版本号
- 拒绝在被 Fractureiser 病毒感染的设备上启动 HMCL(若检测到将会提示并退出,[详情](https://github.com/fractureiser-investigation/fractureiser#readme))
- 检测 HMCL 是否处于 macOS 上的 App Translocation(macOS 使用了 [App Translocation](https://lapcatsoftware.com/articles/app-translocation.html) 机制,可能会自动将 HMCL 移动至 `/private/var/folders` 中的临时文件夹内,导致用户关闭 HMCL 后游戏数据和设置丢失)
- 日志分析窗口中显示物理内存大小
- 更新 Minecraft 购买链接
- 优化 SSL 异常报错信息
- 添加更多日志分析规则
- 更新游戏版本号检测性能
- 添加隐藏测试版提示开关
- 在 Linux 上支持 `MESA_LOADER_DRIVER_OVERRIDE` 环境变量,适配 Zink 驱动程序
- 更新翻译
- 游戏设置
- 添加删除游戏资源文件按钮
- 将版本高级设置拆分至单独页面中
- 添加环境变量设置
- 添加渲染器设置
**下载**
- 跨平台
添加 Linux RISC-V 64 平台支持
- 更新搜索版本号
错误修复:
**游戏设置**
- 添加删除游戏资源文件按钮
- 将版本高级设置拆分至单独页面中
- 添加环境变量设置
- 添加渲染器设置
**跨平台**
- 添加 Linux RISC-V 64 平台支持
**错误修复**
- 修复日志分析窗口的渲染问题
- 修复在 Minecraft 1.20 不能正常使用游戏内聊天功能的问题
+26 -22
View File
@@ -1,33 +1,37 @@
---
---
- 启动器
- GP-2929、GP-2904、GP-2915: 更新翻译
- GP-2905: 更改语言选项添加重启后生效的提示
- GP-2885: 在 Linux 系统上且处于未知桌面环境时,禁用删除至回收站功能
- GP-2889: 删除 Mojang 登录支持
- GP-2897: 主界面移除联机大厅按钮,添加引导用户进入官方 QQ 群的按钮
- GP-2888: 移除设置 - 赞助页面
- GP-2862: 默认不进行降级更新(手动切换更新源时依然会正常提示)
**启动器**
- 下载
- GP-2921: 允许使用系统属性禁用系统代理
- GP-2917: 不再尝试下载 `.pack.xz` 文件
- GP-2921: 当系统属性 `java.net.useSystemProxies` 被设置为 `false` 时不再使用系统代理
- GP-2912: 当下载失败时,打印重定向链至日志
- GP-2916: 在 CurseForge 下载源中搜索时始终会按照模组标题与关键词的相似性排序
- GP-2886: 自动下载 Java 支持下载 Java 21
- GP-2929、GP-2904、GP-2915: 更新翻译
- GP-2905: 更改语言选项添加重启后生效的提示
- GP-2885: 在 Linux 系统上且处于未知桌面环境时,禁用删除至回收站功能
- GP-2889: 删除 Mojang 登录支持
- GP-2897: 主界面移除联机大厅按钮,添加引导用户进入官方 QQ 群的按钮
- GP-2888: 移除设置 - 赞助页面
- GP-2862: 默认不进行降级更新(手动切换更新源时依然会正常提示)
- 外观
- GP-2856: 当加载网络背景图片超时时回退至默认背景,解决启动时卡死的问题
**下载**
- 整合包
- GP-2881: 修复无法安装带有 NeoForge 的 Modrinth 整合包的问题
- GP-2921: 允许使用系统属性禁用系统代理
- GP-2917: 不再尝试下载 `.pack.xz` 文件
- GP-2921: 当系统属性 `java.net.useSystemProxies` 被设置为 `false` 时不再使用系统代理
- GP-2912: 当下载失败时,打印重定向链至日志
- GP-2916: 在 CurseForge 下载源中搜索时始终会按照模组标题与关键词的相似性排序
- GP-2886: 自动下载 Java 支持下载 Java 21
错误修复:
**外观**
- **GP-2908 \[重要\]: 修复微软账户登录失败的问题**
- GP-2939: 修复游戏启动时包装命令会被添加两次的问题的问题
- GP-2856: 当加载网络背景图片超时时回退至默认背景,解决启动时卡死的问题
**整合包**
- GP-2881: 修复无法安装带有 NeoForge 的 Modrinth 整合包的问题
**错误修复**
- GP-2908 \[重要\]: 修复微软账户登录失败的问题
- GP-2939: 修复游戏启动时包装命令会被添加两次的问题
- GP-2936: 修复无法读取远古版本版本号的问题
- GP-2919: 修复 Minecraft 1.6 之前的版本没有声音的问题
- GP-2920: 修复了在 CurseForge 下载源中使用中文搜索无法呈现结果的问题
+19 -14
View File
@@ -1,17 +1,22 @@
---
---
- 启动器
- GP-2947: 更新模组和整合包翻译信息
- GP-2951: 优化了启动器长期运行后的性能表现
- GP-2942: 游戏版本的图标现在支持 JPG、GIF 等格式
- GP-2950: 启动器启动后,将自动加载同目录下的 `font.ttf` 或 `font.otf`
- 下载
- GP-2958: 还原对 MCBBS 的鸣谢。谢谢你,MCBBS!
- GP-3031: 适配新版本 NeoForge 模组,修复部分模组无法被正确识别的问题
- GP-3045: 支持自动安装 Java 21
- 错误修复
- GP-2943: 修复了高版本启动器内皮肤预览与游戏内真实皮肤不匹配的问题
- GP-2986: 修复了微软登录部分情况下会错误提示“没有购买记录”的问题
- GP-2989: 修复部分情况下,整合包导入会失败的问题
- GP-2994: 修复自动安装界面 NeoForge 图标在高分辨率屏幕上会很模糊的问题
**启动器**
- GP-2947: 更新模组和整合包翻译信息
- GP-2951: 优化了启动器长期运行后的性能表现
- GP-2942: 游戏版本的图标现在支持 JPG、GIF 等格式
- GP-2950: 启动器启动后,将自动加载同目录下的 `font.ttf` 或 `font.otf`
**下载**
- GP-2958: 还原对 MCBBS 的鸣谢。谢谢你,MCBBS!
- GP-3031: 适配新版本 NeoForge 模组,修复部分模组无法被正确识别的问题
- GP-3045: 支持自动安装 Java 21
**错误修复**
- GP-2943: 修复了高版本启动器内皮肤预览与游戏内真实皮肤不匹配的问题
- GP-2986: 修复了微软登录部分情况下会错误提示“没有购买记录”的问题
- GP-2989: 修复部分情况下,整合包导入会失败的问题
- GP-2994: 修复自动安装界面 NeoForge 图标在高分辨率屏幕上会很模糊的问题
+35 -28
View File
@@ -1,31 +1,38 @@
---
---
- 启动器
- GP-3121、GP-3194: 微软登录界面对 Xbox 400 错误给予提示
- GP-3097: 更新 Linux ARM64 支持
- GP-3197: 优化对 Linux RISC-V 64、FreeBSD x86-64 平台的支持
- GP-3058: 支持解析更多游戏版本号
- GP-3092: 移除 KOOK 入口
- 下载
- GP-3023: `特定游戏设置 - 自动安装` 中禁止升级或卸载由其他启动器安装的游戏组件
- GP-3089、GP-3114: 优化 `下载 - 模组` 中模组版本推荐逻辑
- 外观
- GP-3181: 支持使用 `HMCL_FONT` 环境变量指定字体
- 错误修复
- GP-2838: 修复本地模组查看信息时标签错误的问题
- GP-3023: 修复 1.20.4 版本 Forge 和 OptiFine 同时安装的情况下游戏无法启动的问题
- GP-3027: 修复低版本游戏在开启版本隔离后没有声音的问题
- GP-3028: 修复 `全局游戏设置 - 版本隔离` 中错误展示路径的问题
- GP-3066: 修复 CurseForge 搜索 API 对翻页总量计算不正确的问题;修复 `下载 - 模组` 切换下载源时不刷新页面的问题
- GP-3081: 修复启动器退出时卡死的问题
- GP-3082: 修复整合包 NeoForge 版本识别不正确的问题
- GP-3117: 修复 `下载 - 游戏` 选择游戏版本后窗口标题重复的问题
- GP-3126: 修复无法正确读取微软账户 Token 过期时间的问题
- GP-3128: 修复 1.21 NeoForge 无法下载的问题
- GP-3130: 修复 1.8 及 1.9 可能无法安装 OptiFine 的问题
- GP-3133、GP-3136: 修复 1.7.10-pre4 版本 Forge 安装问题
- GP-3160: 修复游戏启动过程中部分情况下点击取消按钮会导致启动器出错的问题
- GP-3197: 修复部分平台无法运行 1.14 ~ 1.14.2 的问题
- GP-3198: 修复无法同时安装 LiteLoader 与 Forge 的问题
- GC-85b68ad: 修复 Linux 系统上无法找到 Mojang 提供的 Java 的问题
**启动器**
- GP-3121、GP-3194: 微软登录界面对 Xbox 400 错误给予提示
- GP-3097: 更新 Linux ARM64 支持
- GP-3197: 优化对 Linux RISC-V 64、FreeBSD x86-64 平台的支持
- GP-3058: 支持解析更多游戏版本号
- GP-3092: 移除 KOOK 入口
**下载**
- GP-3023: `特定游戏设置 - 自动安装` 中禁止升级或卸载由其他启动器安装的游戏组件
- GP-3089、GP-3114: 优化 `下载 - 模组` 中模组版本推荐逻辑
**外观**
- GP-3181: 支持使用 `HMCL_FONT` 环境变量指定字体
**错误修复**
- GP-2838: 修复本地模组查看信息时标签错误的问题
- GP-3023: 修复 1.20.4 版本 Forge 和 OptiFine 同时安装的情况下游戏无法启动的问题
- GP-3027: 修复低版本游戏在开启版本隔离后没有声音的问题
- GP-3028: 修复 `全局游戏设置 - 版本隔离` 中错误展示路径的问题
- GP-3066: 修复 CurseForge 搜索 API 对翻页总量计算不正确的问题;修复 `下载 - 模组` 切换下载源时不刷新页面的问题
- GP-3081: 修复启动器退出时卡死的问题
- GP-3082: 修复整合包 NeoForge 版本识别不正确的问题
- GP-3117: 修复 `下载 - 游戏` 选择游戏版本后窗口标题重复的问题
- GP-3126: 修复无法正确读取微软账户 Token 过期时间的问题
- GP-3128: 修复 1.21 NeoForge 无法下载的问题
- GP-3130: 修复 1.8 及 1.9 可能无法安装 OptiFine 的问题
- GP-3133、GP-3136: 修复 1.7.10-pre4 版本 Forge 安装问题
- GP-3160: 修复游戏启动过程中部分情况下点击取消按钮会导致启动器出错的问题
- GP-3197: 修复部分平台无法运行 1.14 ~ 1.14.2 的问题
- GP-3198: 修复无法同时安装 LiteLoader 与 Forge 的问题
- GC-85b68ad: 修复 Linux 系统上无法找到 Mojang 提供的 Java 的问题
+54 -47
View File
@@ -1,50 +1,57 @@
---
---
- 启动器
- GP-3233: 在 Linux/FreeBSD 平台打开日志、模组等位置时会选中该文件
- GP-3274: 优化日志窗口
- GP-2988: 添加 Java 管理页面,优化查找、下载、自动选择 Java 等功能 ([BV1WvCUY4EwK](https://www.bilibili.com/video/BV1WvCUY4EwK))
- GP-3280: 在删除账户和认证服务器时弹出确认提示
- GP-3314: 优化 Linux/FreeBSD 平台上显示的系统信息
- GP-3282: 发现更新弹窗添加取消按钮
- GP-3237: 设置页面添加打开启动器日志文件夹按钮
- GP-3264: 在 Linux LoongArch64 平台支持 Minecraft 1.20.2+
- GP-3234: 在安装新游戏版本页面的默认游戏版本名称中包含已选择的加载器名称
- GP-3221: 模组管理搜索操作更改为文本更新后触发
- GP-3375: 支持微软账户上传皮肤
- GP-3032: 检查模组更新界面加入全选/取消全选复选框
- GP-3373: 更新模组下载页游戏版本列表至 1.21.3
- GP-3232: 支持在模组管理页面通过右键单击模组查看模组详情
- GP-3427: 更新 EXE 图标
- GP-3435: 在游戏下载列表中添加 Minecraft Wiki 链接
- 优化文本描述/翻译
- 下载
- GP-3251, GP-3259: 支持从官方源下载 Forge
- GP-3256: 选择要安装的 Forge 版本时显示版本发布时间
- 外观
- GP-3271: 隐藏版本管理的 Fabric API 和 QSL/QFAPI 自动安装选项
- GP-3088: 隐藏整合包安装页面上的整合包文件位置
- GP-3278: 调换游戏管理侧边栏上“自动安装”和“模组管理”的顺序
- GP-3347: 当整合包没有描述时,隐藏查看整合包描述按钮
- GP-3378: 优化首页公告,添加隐藏按钮
- GP-3396, GP-3397, GP-3406: 优化账户列表页面按钮图标
- GP-3424: 调整字体选择组合框的默认宽度
- GP-3450: 使最小化按钮居中
- 错误修复
- GP-3030: 修复导入 MultiMC 整合包时未移除 JVM 参数两侧引号的问题
- GP-3224: 修复部分游戏版本无法正常安装的问题
- GP-3227: 修复模组详情页图标显示问题
- GP-3142: 修复日志窗口错误地将 authlib-injector 日志识别为 ERROR 类型的问题
- GP-3306: 修复下载界面中,模组等资源版本图标全部显示为“R”而不是对应版本标签图标的问题
- GP-3308: 修复启动 Modrinth 整合包时补全已禁用的 mod
- GP-3324: 修复对话框标题和按钮未使用用户字体的问题
- GP-3364: 修复 Windows 上无法识别为当前用户安装的字体的问题
- GP-3379: 修复部分按钮无法用键盘触发的问题
- GP-3380: 修复部分控件响应鼠标任意按钮点击的问题
- GP-3392: 修复微软账户登录对话框中“忘记密码”链接
- GP-3421: 修复打开游戏设置页时启动器崩溃的问题
- GP-3425: 修复 HMCLauncher 无法正确识别 Windows on Arm 平台的问题
- GP-3434: 修复为 Minecraft 1.20.5+ 自动选择 Java 17 的问题
- GP-3439: 修复 Minecraft 1.20.2+Forge 默认图标错误的问题
- GP-3470: 修复无法读取部分 Forge 模组信息的问题
**启动器**
- GP-3233: 在 Linux/FreeBSD 平台打开日志、模组等位置时会选中该文件
- GP-3274: 优化日志窗口
- GP-2988: 添加 Java 管理页面,优化查找、下载、自动选择 Java 等功能 ([BV1WvCUY4EwK](https://www.bilibili.com/video/BV1WvCUY4EwK))
- GP-3280: 在删除账户和认证服务器时弹出确认提示
- GP-3314: 优化 Linux/FreeBSD 平台上显示的系统信息
- GP-3282: 发现更新弹窗添加取消按钮
- GP-3237: 设置页面添加打开启动器日志文件夹按钮
- GP-3264: 在 Linux LoongArch64 平台支持 Minecraft 1.20.2+
- GP-3234: 在安装新游戏版本页面的默认游戏版本名称中包含已选择的加载器名称
- GP-3221: 模组管理搜索操作更改为文本更新后触发
- GP-3375: 支持微软账户上传皮肤
- GP-3032: 检查模组更新界面加入全选/取消全选复选框
- GP-3373: 更新模组下载页游戏版本列表至 1.21.3
- GP-3232: 支持在模组管理页面通过右键单击模组查看模组详情
- GP-3427: 更新 EXE 图标
- GP-3435: 在游戏下载列表中添加 Minecraft Wiki 链接
- 优化文本描述/翻译
**下载**
- GP-3251, GP-3259: 支持从官方源下载 Forge
- GP-3256: 选择要安装的 Forge 版本时显示版本发布时间
**外观**
- GP-3271: 隐藏版本管理的 Fabric API 和 QSL/QFAPI 自动安装选项
- GP-3088: 隐藏整合包安装页面上的整合包文件位置
- GP-3278: 调换游戏管理侧边栏上“自动安装”和“模组管理”的顺序
- GP-3347: 当整合包没有描述时,隐藏查看整合包描述按钮
- GP-3378: 优化首页公告,添加隐藏按钮
- GP-3396, GP-3397, GP-3406: 优化账户列表页面按钮图标
- GP-3424: 调整字体选择组合框的默认宽度
- GP-3450: 使最小化按钮居中
**错误修复**
- GP-3030: 修复导入 MultiMC 整合包时未移除 JVM 参数两侧引号的问题
- GP-3224: 修复部分游戏版本无法正常安装的问题
- GP-3227: 修复模组详情页图标显示问题
- GP-3142: 修复日志窗口错误地将 authlib-injector 日志识别为 ERROR 类型的问题
- GP-3306: 修复下载界面中,模组等资源版本图标全部显示为“R”而不是对应版本标签图标的问题
- GP-3308: 修复启动 Modrinth 整合包时补全已禁用的 mod
- GP-3324: 修复对话框标题和按钮未使用用户字体的问题
- GP-3364: 修复 Windows 上无法识别为当前用户安装的字体的问题
- GP-3379: 修复部分按钮无法用键盘触发的问题
- GP-3380: 修复部分控件响应鼠标任意按钮点击的问题
- GP-3392: 修复微软账户登录对话框中“忘记密码”链接
- GP-3421: 修复打开游戏设置页时启动器崩溃的问题
- GP-3425: 修复 HMCLauncher 无法正确识别 Windows on Arm 平台的问题
- GP-3434: 修复为 Minecraft 1.20.5+ 自动选择 Java 17 的问题
- GP-3439: 修复 Minecraft 1.20.2+Forge 默认图标错误的问题
- GP-3470: 修复无法读取部分 Forge 模组信息的问题
+87 -78
View File
@@ -3,81 +3,90 @@
版本介绍:[cv41174209](https://www.bilibili.com/opus/1050013108961017859)
- 启动器
- GP-3457: 实验性支持 WebP 格式的背景图片
- GP-3523: 模组列表页中按下 ESC 键时取消选中
- GP-3601: 更新模组数据
- GP-3603: 支持临时隐藏预览版提示
- GP-3610, GP-3613: 统一并优化软件内日期时间格式
- GP-3619: 在启动器日志中记录处理器型号(仅 Windows)
- GP-3620: 修改整合包下载对话框内「安装到当前版本」按钮的文本为「安装整合包」,修正对话框标题
- GP-3621: 点击安装整合包时无条件关闭整合包下载对话框
- GP-3629: 删除全局游戏设置页面的离线账户更换皮肤提示
- GP-3628: 在版本的游戏设置中添加「复制全局游戏设置」选项
- GP-3650: 点击账户卡片空白处时切换账户
- GP-3653: 优化 NBT 查看器,修复无法打开空 mca/mcr 文件的问题
- GP-3663: 启动时尝试从 HMCL_DIRECTORY 中加载字体
- GP-3665, GP-3673: 支持双击复制世界信息、安装 Java 页面信息、模组详情对话框信息
- GP-3689: 在世界管理界面显示世界图标
- GP-3675: 更新 Microsoft 应用商店链接
- GP-3711: 优化世界管理界面,新增备份世界页面
- GP-3736: 优化账户信息卡片的显示效果
- GP-3432: 优化滚动页面时的性能
- GP-3747: 在日志中记录编码信息
- GP-3749, GP-3750: 消除使用 Java 24 运行 HMCL 时控制台中的弃用警告
- 优化软件文案,完善英语、西班牙语、俄语翻译
- 下载
- GP-3484, GP-3744: 更新模组下载页游戏版本列表至 1.21.5
- GP-3517: 游戏下载页面添加搜索功能
- GP-3244: 安装新游戏/整合包时检查版本名称是否包含非 ASCII 字符
- GP-3476: 在 Linux RISC-V 平台为「下载 Java」对话框添加 [banshanjdk-8](https://www.zthread.cn/) 下载地址
- GP-3605: 添加 NeoForge 的 BMCLAPI 代理支持
- GP-3625: 允许用户在「下载 → 游戏」页面搜索时调整搜索范围
- 外观
- GP-3458: 降低窗口阴影质量以改善性能
- GP-3442: 添加打开启动器时的窗口动画
- GP-3652: 添加关闭启动器时的窗口动画
- GP-3657: 添加最小化和还原启动器窗口的动画
- GP-3666, GP-3677: 禁止标题栏按钮获取焦点
- GP-3668, GP-3680: 优化动画效果
- GP-3687: 更新全部图标至 Material Symbols
- GP-3695: 优化离线登录对话框
- GP-3723: 在游戏崩溃界面添加滚动条
- GP-3729: 为更新日志对话框添加平滑滚动
- GP-3730: 为世界信息页面和版本高级设置页面背景添加半透明遮罩
- GP-3755: 更新 macOS Dock 栏图标
- 跨平台
- GP-3536: 优化对 Linux RISC-V 64 平台的支持
- 错误修复
- GP-3490: 修复 OAuth 登录时轮询过于频繁的问题
- GP-3464: 修复在更新日志界面无法拖动启动器窗口的问题
- GP-3503: 使用 Zink 渲染器时禁用 DRI3
- GC-5fd52bb: 皮肤缓存不再保存到 .minecraft 目录
- GC-81b3911: 修复按 ESC 键时文本框内的值没有保存的问题
- GC-260f4b6: 修复输入对话框中 ESC 键不起作用的问题
- GC-7d12ef6: 修复内存滑块提示被设备内存进度条覆盖的问题
- GC-78e15d1: 修复游戏设置中内存没有实时刷新的问题
- GC-6f53da1: 完善模组下载界面
- GP-3252: 修复无法补全部分第三方 Minecraft 客户端游戏资源的问题
- GC-56d20a5, GC-397edae: 修复 Linux 平台调整窗口大小的问题
- GP-3531: 修复在 FreeBSD x86-64 平台未正确替换 LWJGL 本地库的问题
- GP-3541: 修复安装 MultiMC 整合包后没有设置版本图标的问题
- GP-3549: 修复 macOS 平台 HMCLauncher.sh 不会显示 Java 下载页面的问题
- GP-3594: Java 下载对话框中切换包类型时不应重置版本字段
- GP-3598: 修复使用自定义字体时未正确设置字重的问题
- GP-3602: 修复使用系统 GLFW/OpenAL 时无法启动部分游戏版本的问题
- GC-ecafc9d: 修复安装新游戏页面中组件框的高度问题
- GP-3618: 修复无法识别 Intel64 架构的问题
- GP-3626: 修复离线账户选择 Steve/Alex 皮肤时模型错误的问题
- GP-3622: 修复在非官方支持的平台上 Minecraft 1.21 与 Sodium 不兼容的问题
- GP-3638: 修复 NeoForge 版本识别错误的问题
- GP-3645: 修复在 macOS 平台无法找到通过 DMG 安装的 Java 的问题
- GP-3623: 修复离线账户皮肤对话框「本地皮肤图片文件」部分选项文字被覆盖的问题
- GP-3651: 当微软账户 Token 过期时应当刷新账户
- GP-3654: 修复标题过长时窗口异常的问题
- GP-3676: 修复对话框关闭动画缺失的问题
- GP-3708: 修复更改游戏 Java 时路径显示错误的问题
- GP-3733: 删除更新日志对话框中多余的换行符
- GP-3735: 修复在 Modrinth 上获取模组版本时未正确处理 404 响应的问题
- GP-3752: 修复取消导出整合包时弹出报错对话框的问题
- GP-3759: 修复无法解析部分 Java 版本号的问题
**启动器**
- GP-3457: 实验性支持 WebP 格式的背景图片
- GP-3523: 模组列表页中按下 ESC 键时取消选中
- GP-3601: 更新模组数据
- GP-3603: 支持临时隐藏预览版提示
- GP-3610, GP-3613: 统一并优化软件内日期时间格式
- GP-3619: 在启动器日志中记录处理器型号(仅 Windows)
- GP-3620: 修改整合包下载对话框内「安装到当前版本」按钮的文本为「安装整合包」,修正对话框标题
- GP-3621: 点击安装整合包时无条件关闭整合包下载对话框
- GP-3629: 删除全局游戏设置页面的离线账户更换皮肤提示
- GP-3628: 在版本的游戏设置中添加「复制全局游戏设置」选项
- GP-3650: 点击账户卡片空白处时切换账户
- GP-3653: 优化 NBT 查看器,修复无法打开空 mca/mcr 文件的问题
- GP-3663: 启动时尝试从 HMCL_DIRECTORY 中加载字体
- GP-3665, GP-3673: 支持双击复制世界信息、安装 Java 页面信息、模组详情对话框信息
- GP-3689: 在世界管理界面显示世界图标
- GP-3675: 更新 Microsoft 应用商店链接
- GP-3711: 优化世界管理界面,新增备份世界页面
- GP-3736: 优化账户信息卡片的显示效果
- GP-3432: 优化滚动页面时的性能
- GP-3747: 在日志中记录编码信息
- GP-3749, GP-3750: 消除使用 Java 24 运行 HMCL 时控制台中的弃用警告
- 优化软件文案,完善英语、西班牙语、俄语翻译
**下载**
- GP-3484, GP-3744: 更新模组下载页游戏版本列表至 1.21.5
- GP-3517: 游戏下载页面添加搜索功能
- GP-3244: 安装新游戏/整合包时检查版本名称是否包含非 ASCII 字符
- GP-3476: 在 Linux RISC-V 平台为「下载 Java」对话框添加 [banshanjdk-8](https://www.zthread.cn/) 下载地址
- GP-3605: 添加 NeoForge 的 BMCLAPI 代理支持
- GP-3625: 允许用户在「下载 → 游戏」页面搜索时调整搜索范围
**外观**
- GP-3458: 降低窗口阴影质量以改善性能
- GP-3442: 添加打开启动器时的窗口动画
- GP-3652: 添加关闭启动器时的窗口动画
- GP-3657: 添加最小化和还原启动器窗口的动画
- GP-3666, GP-3677: 禁止标题栏按钮获取焦点
- GP-3668, GP-3680: 优化动画效果
- GP-3687: 更新全部图标至 Material Symbols
- GP-3695: 优化离线登录对话框
- GP-3723: 在游戏崩溃界面添加滚动条
- GP-3729: 为更新日志对话框添加平滑滚动
- GP-3730: 为世界信息页面和版本高级设置页面背景添加半透明遮罩
- GP-3755: 更新 macOS Dock 栏图标
**跨平台**
- GP-3536: 优化对 Linux RISC-V 64 平台的支持
**错误修复**
- GP-3490: 修复 OAuth 登录时轮询过于频繁的问题
- GP-3464: 修复在更新日志界面无法拖动启动器窗口的问题
- GP-3503: 使用 Zink 渲染器时禁用 DRI3
- GC-5fd52bb: 皮肤缓存不再保存到 .minecraft 目录
- GC-81b3911: 修复按 ESC 键时文本框内的值没有保存的问题
- GC-260f4b6: 修复输入对话框中 ESC 键不起作用的问题
- GC-7d12ef6: 修复内存滑块提示被设备内存进度条覆盖的问题
- GC-78e15d1: 修复游戏设置中内存没有实时刷新的问题
- GC-6f53da1: 完善模组下载界面
- GP-3252: 修复无法补全部分第三方 Minecraft 客户端游戏资源的问题
- GC-56d20a5, GC-397edae: 修复 Linux 平台调整窗口大小的问题
- GP-3531: 修复在 FreeBSD x86-64 平台未正确替换 LWJGL 本地库的问题
- GP-3541: 修复安装 MultiMC 整合包后没有设置版本图标的问题
- GP-3549: 修复 macOS 平台 HMCLauncher.sh 不会显示 Java 下载页面的问题
- GP-3594: Java 下载对话框中切换包类型时不应重置版本字段
- GP-3598: 修复使用自定义字体时未正确设置字重的问题
- GP-3602: 修复使用系统 GLFW/OpenAL 时无法启动部分游戏版本的问题
- GC-ecafc9d: 修复安装新游戏页面中组件框的高度问题
- GP-3618: 修复无法识别 Intel64 架构的问题
- GP-3626: 修复离线账户选择 Steve/Alex 皮肤时模型错误的问题
- GP-3622: 修复在非官方支持的平台上 Minecraft 1.21 与 Sodium 不兼容的问题
- GP-3638: 修复 NeoForge 版本识别错误的问题
- GP-3645: 修复在 macOS 平台无法找到通过 DMG 安装的 Java 的问题
- GP-3623: 修复离线账户皮肤对话框「本地皮肤图片文件」部分选项文字被覆盖的问题
- GP-3651: 当微软账户 Token 过期时应当刷新账户
- GP-3654: 修复标题过长时窗口异常的问题
- GP-3676: 修复对话框关闭动画缺失的问题
- GP-3708: 修复更改游戏 Java 时路径显示错误的问题
- GP-3733: 删除更新日志对话框中多余的换行符
- GP-3735: 修复在 Modrinth 上获取模组版本时未正确处理 404 响应的问题
- GP-3752: 修复取消导出整合包时弹出报错对话框的问题
- GP-3759: 修复无法解析部分 Java 版本号的问题
+83 -68
View File
@@ -3,71 +3,86 @@
版本介绍: [cv42290390](https://www.bilibili.com/opus/1088221679199453185)
- 启动器
- GP-3938: 使用 Java 8 打开启动器时弹出弃用警告 (by Glavo)
- GP-4032: 使用 Java 8 运行时禁止更新 (by Glavo)
- GP-3854: 右键主页“启动游戏”按钮时展开版本列表菜单 (by Glavo)
- GP-3875: 使用工作路径下的 .hmcl 文件夹存放所有配置文件 (by Glavo)
- GP-3914: 启动时在日志中记录用户设备的 CPU 信息 (by Glavo)
- GP-3893: 启动时在日志中记录用户设备的 GPU 信息 (by Glavo)
- GP-3974: 更新日志中仅显示本次更新内容 (by Wulian233)
- GP-4040: 更新模组数据 (by Glavo)
- 游戏管理
- GP-3734: 折叠高级设置中不适用于当前系统的选项 (by Wulian233)
- GP-3951: 新增原理图管理界面 (by Glavo)
- GP-3991: 新增世界管理页面 (by Glavo)
- 整合包
- GP-3547: 重构 MultiMC 整合包兼容功能 (by Burning_TNT)
- GP-3836: 自动安装页面隐藏 mcbbs 项 (by 辞庐)
- GP-3981: 忽略与版本 JSON 指定的 Java 相冲突的 Java 检测规则 (by Glavo)
- 账户
- GP-3823: 默认限制境外地区使用离线账户功能 (by Glavo)
- GP-3853: 优化离线账户名称中包含非 ASCII 字符时的提示 (by Glavo)
- GP-3860: 添加 XBox 封禁相关提示 (by 辞庐)
- 下载
- GP-2794: 支持下载光影 (by Burning_TNT)
- GP-3247, GP-3799: 支持下载部分特殊版本 (by zkitefly)
- GP-3830: 将模组/整合包/资源包的默认下载源调整为 Modrinth (by Burning_TNT)
- GP-3876: 优化代理设置功能 (by Glavo)
- GP-4011: 更新模组下载页游戏版本列表至 1.21.7 (by Glavo)
- 外观
- GP-3800: 优化整合包导出类型选择界面 (by Wulian233)
- GP-3822: 统一导出和导入整合包页面样式 (by 辞庐)
- GP-3944、GP-3949: 优化版本列表为空时,主页切换版本菜单的显示效果 (by GeneralK1ng)
- 本地化
- 优化软件文案,完善英语、西班牙语、俄语翻译
- 错误修复
- GP-3768: 修复模组下载界面无法正常翻页,以及类别会在切换下载源时出错的问题 (by Burning_TNT)
- GP-3769: 修复离线账户切换模型时左侧 3D 预览不会即时更新的问题 (by Burning_TNT)
- GP-3770: 修复 Windows 平台部分语言编码下无法打开 Minecraft 中文 Wiki 的问题 (by Burning_TNT)
- GP-3771: 修复资源包和世界下载对话框标题为“模组下载”的问题 (by 辞庐)
- GP-3772: 修复模组管理内“安装到当前版本”与“下载到本地文件夹”实际效果相同的问题 (by Burning_TNT)
- GP-3776: 修复 LiteLoader 下载相关问题 (by Burning_TNT)
- GP-3778: 修复 macOS 平台使用 Rosetta 2 转译运行启动器时无法正确识别系统架构的问题 (by YiZhiMCQiu)
- GP-3793: 修复启动器更新下载对话框中有两个相同进度条的问题 (by Burning_TNT)
- GP-3797: 修复无法打开游戏购买页面的问题 (by zkitefly)
- GP-3806: 修复 RISC-V 平台游戏识别 CPU 名称出错的问题 (by Glavo)
- GP-3814: 修复 Fabric Metadata 无效时 FabricInstallTask 抛出 NPE 的问题 (by Glavo)
- GP-3817: 修复自定义背景图片路径包含无效字符时启动器崩溃的问题 (by Glavo)
- GP-3826: 修复无法正常解析 NeoForge 愚人节版本的问题 (by Burning_TNT)
- GP-3856: 修复导出过长日志时可能发生 OutOfMemoryError 的问题 (by Glavo)
- GP-3863: 修复游戏崩溃分析窗口乱码的问题 (by Glavo)
- GP-3866: 修复下载游戏内容页面搜索新内容时分页按钮未重置的问题 (by Wulian233)
- GP-3874: 修复在已安装游戏版本的自动安装界面中游戏版本名称报红的问题 (by e74yp8)
- GP-3877: 修复启动器退出时未压缩日志的问题 (by Glavo)
- GP-3883: 修复当离线账户用户名中包含中文字符时,无法使用 LittleSkin 皮肤的问题 (by e74yp8)
- GP-3888: 修复无法一键更新整合包的问题 (by mzdluo123)
- GP-3901: 修复模组/整合包下载界面无法完整显示多行信息的问题 (by e74yp8)
- GP-3922、GP-4036: 修复部分 Linux 环境中未正确选择默认字体的问题 (by Glavo)
- GP-3942: 修复无法正确处理版本服务器地址设置中的 IPv6 地址的问题 (by Glavo)
- GP-3968: 修复 Java 管理页面中无法添加 IKVM 的问题 (by Glavo)
- GP-3995: 修复 Controller 未能读取 JAVA_VERSION_TIP 的问题 (by Burning_TNT)
- GP-3996: 修复在 schematics 文件夹不存在的情况下,打开投影管理页面会抛出异常的问题 (by Glavo)
- GP-3998: 修复模组搜索返回结果为空时下载界面异常的问题 (by Burning_TNT)
- GP-4001: 修复自动安装界面中更改 MC 版本后无法点击安装键的问题 (by Burning_TNT)
- GP-4007: 修复光影下载页面中标签名称未翻译的问题 (by Glavo)
- GP-4009: 修复 macOS 上无法读取 CPU 信息的问题 (by Glavo)
- GP-4015: 修复代码中的拼写错误 (by kfatyuip)
- GP-4016: 修复 MultiMC 整合包中包含相同标识符的库时无法导入的问题 (by Burning_TNT)
- GP-4065: 修复添加游戏文件夹页面缺少灰色背景的问题 (by 辞庐)
- GP-4069: 修复使用 JavaFX 25 EA 时下载界面布局错位的问题 (by Glavo)
**启动器**
- GP-3938: 使用 Java 8 打开启动器时弹出弃用警告 (by Glavo)
- GP-4032: 使用 Java 8 运行时禁止更新 (by Glavo)
- GP-3854: 右键主页“启动游戏”按钮时展开版本列表菜单 (by Glavo)
- GP-3875: 使用工作路径下的 .hmcl 文件夹存放所有配置文件 (by Glavo)
- GP-3914: 启动时在日志中记录用户设备的 CPU 信息 (by Glavo)
- GP-3893: 启动时在日志中记录用户设备的 GPU 信息 (by Glavo)
- GP-3974: 更新日志中仅显示本次更新内容 (by Wulian233)
- GP-4040: 更新模组数据 (by Glavo)
**游戏管理**
- GP-3734: 折叠高级设置中不适用于当前系统的选项 (by Wulian233)
- GP-3951: 新增原理图管理界面 (by Glavo)
- GP-3991: 新增世界管理页面 (by Glavo)
**整合包**
- GP-3547: 重构 MultiMC 整合包兼容功能 (by Burning_TNT)
- GP-3836: 自动安装页面隐藏 mcbbs 项 (by 辞庐)
- GP-3981: 忽略与版本 JSON 指定的 Java 相冲突的 Java 检测规则 (by Glavo)
**账户**
- GP-3823: 默认限制境外地区使用离线账户功能 (by Glavo)
- GP-3853: 优化离线账户名称中包含非 ASCII 字符时的提示 (by Glavo)
- GP-3860: 添加 XBox 封禁相关提示 (by 辞庐)
**下载**
- GP-2794: 支持下载光影 (by Burning_TNT)
- GP-3247, GP-3799: 支持下载部分特殊版本 (by zkitefly)
- GP-3830: 将模组/整合包/资源包的默认下载源调整为 Modrinth (by Burning_TNT)
- GP-3876: 优化代理设置功能 (by Glavo)
- GP-4011: 更新模组下载页游戏版本列表至 1.21.7 (by Glavo)
**外观**
- GP-3800: 优化整合包导出类型选择界面 (by Wulian233)
- GP-3822: 统一导出和导入整合包页面样式 (by 辞庐)
- GP-3944、GP-3949: 优化版本列表为空时,主页切换版本菜单的显示效果 (by GeneralK1ng)
**本地化**
- 优化软件文案,完善英语、西班牙语、俄语翻译
**错误修复**
- GP-3768: 修复模组下载界面无法正常翻页,以及类别会在切换下载源时出错的问题 (by Burning_TNT)
- GP-3769: 修复离线账户切换模型时左侧 3D 预览不会即时更新的问题 (by Burning_TNT)
- GP-3770: 修复 Windows 平台部分语言编码下无法打开 Minecraft 中文 Wiki 的问题 (by Burning_TNT)
- GP-3771: 修复资源包和世界下载对话框标题为“模组下载”的问题 (by 辞庐)
- GP-3772: 修复模组管理内“安装到当前版本”与“下载到本地文件夹”实际效果相同的问题 (by Burning_TNT)
- GP-3776: 修复 LiteLoader 下载相关问题 (by Burning_TNT)
- GP-3778: 修复 macOS 平台使用 Rosetta 2 转译运行启动器时无法正确识别系统架构的问题 (by YiZhiMCQiu)
- GP-3793: 修复启动器更新下载对话框中有两个相同进度条的问题 (by Burning_TNT)
- GP-3797: 修复无法打开游戏购买页面的问题 (by zkitefly)
- GP-3806: 修复 RISC-V 平台游戏识别 CPU 名称出错的问题 (by Glavo)
- GP-3814: 修复 Fabric Metadata 无效时 FabricInstallTask 抛出 NPE 的问题 (by Glavo)
- GP-3817: 修复自定义背景图片路径包含无效字符时启动器崩溃的问题 (by Glavo)
- GP-3826: 修复无法正常解析 NeoForge 愚人节版本的问题 (by Burning_TNT)
- GP-3856: 修复导出过长日志时可能发生 OutOfMemoryError 的问题 (by Glavo)
- GP-3863: 修复游戏崩溃分析窗口乱码的问题 (by Glavo)
- GP-3866: 修复下载游戏内容页面搜索新内容时分页按钮未重置的问题 (by Wulian233)
- GP-3874: 修复在已安装游戏版本的自动安装界面中游戏版本名称报红的问题 (by e74yp8)
- GP-3877: 修复启动器退出时未压缩日志的问题 (by Glavo)
- GP-3883: 修复当离线账户用户名中包含中文字符时,无法使用 LittleSkin 皮肤的问题 (by e74yp8)
- GP-3888: 修复无法一键更新整合包的问题 (by mzdluo123)
- GP-3901: 修复模组/整合包下载界面无法完整显示多行信息的问题 (by e74yp8)
- GP-3922、GP-4036: 修复部分 Linux 环境中未正确选择默认字体的问题 (by Glavo)
- GP-3942: 修复无法正确处理版本服务器地址设置中的 IPv6 地址的问题 (by Glavo)
- GP-3968: 修复 Java 管理页面中无法添加 IKVM 的问题 (by Glavo)
- GP-3995: 修复 Controller 未能读取 JAVA_VERSION_TIP 的问题 (by Burning_TNT)
- GP-3996: 修复在 schematics 文件夹不存在的情况下,打开投影管理页面会抛出异常的问题 (by Glavo)
- GP-3998: 修复模组搜索返回结果为空时下载界面异常的问题 (by Burning_TNT)
- GP-4001: 修复自动安装界面中更改 MC 版本后无法点击安装键的问题 (by Burning_TNT)
- GP-4007: 修复光影下载页面中标签名称未翻译的问题 (by Glavo)
- GP-4009: 修复 macOS 上无法读取 CPU 信息的问题 (by Glavo)
- GP-4015: 修复代码中的拼写错误 (by kfatyuip)
- GP-4016: 修复 MultiMC 整合包中包含相同标识符的库时无法导入的问题 (by Burning_TNT)
- GP-4065: 修复添加游戏文件夹页面缺少灰色背景的问题 (by 辞庐)
- GP-4069: 修复使用 JavaFX 25 EA 时下载界面布局错位的问题 (by Glavo)
+9 -6
View File
@@ -1,9 +1,12 @@
---
---
- 下载
- GP-4085: 更新模组下载页游戏版本列表至 1.21.8 (by Glavo)
- 错误修复
- GP-4086: 修复安装 Oracle JDK 后可能无法使用启动器的问题 (by Glavo)
- GP-4096: 修复无法使用部分日志字体的问题 (by Glavo)
- GP-4097: 修复 InstallersPage 可能意外地显示滚动条的问题 (by Glavo)
**下载**
- GP-4085: 更新模组下载页游戏版本列表至 1.21.8 (by Glavo)
**错误修复**
- GP-4086: 修复安装 Oracle JDK 后可能无法使用启动器的问题 (by Glavo)
- GP-4096: 修复无法使用部分日志字体的问题 (by Glavo)
- GP-4097: 修复 InstallersPage 可能意外地显示滚动条的问题 (by Glavo)
+2 -1
View File
@@ -5,6 +5,7 @@
- GP-4262: 更新 AMD 显卡信息 (by Glavo)
- GP-4274: 更新 chunkbase 种子地图链接 (by Wulian233)
**错误修复:**
**错误修复**
- GP-4174: 修复无法从 BMCLAPI 下载部分 NeoForge 所需文件的问题 (by 辞庐)
+5
View File
@@ -11,20 +11,25 @@
- GP-4365: 修复首次打开子页面时切换动画丢失的问题 (by Glavo)
- GP-4439: 更新模组和整合包数据 (by Glavo)
- GP-4414: 检测到配置文件由高版本启动器创建时禁止保存配置文件 (by Glavo)
**游戏管理**
- GP-4224: 支持在 Windows 7/8/8.1 上使用软渲染器 (by Glavo)
**下载**
- GP-4170: 模组下载列表翻页后自动回到顶部 (by 辞庐)
- GP-4171: 支持加载 WebP 图标,解决部分模组/整合包图标无法加载的问题 (by Glavo)
**外观**
- GP-4185: 新增内存显示条禁用样式 (by OrzMiku)
**本地化**
- GP-4376: 将“版本”重命名为“实例” (by 3gf8jv4dv)
- 优化软件文案,完善英语、西班牙语、俄语翻译
**错误修复**
- GP-4121: 修复多次启动游戏时内存泄露的问题 (by roj234)
+1
View File
@@ -6,6 +6,7 @@
**游戏管理**
- GP-4515: 优化 Java 自动选择规则 (by Glavo)
**错误修复**
- GP-4508: 修复使用 JavaFX 25 时游戏下载界面布局错误的问题 (by Glavo)
+2 -2
View File
@@ -5,9 +5,9 @@
**启动器**
- GP-4223: 在“设置 > 通用”添加“提前预览 HMCL 版本”选项 (by Glavo)<br>
详情请见完整更新日志: [cv43348716](https://www.bilibili.com/opus/1123235936240402439)
- GP-4223: 在“设置 > 通用”添加“提前预览 HMCL 版本”选项 (by Glavo)
- GP-4088: 当离线账户名称超过 16 字符时弹出警告 (by ShulkerSakura)
**下载**
- GP-4120: 更新 unlisted-versions-of-minecraft 镜像源地址 (by 8Mi_Yile)
+106 -85
View File
@@ -3,88 +3,109 @@
详细版本介绍: [cv43400451](https://www.bilibili.com/opus/1124733750249259010)
- 启动器
- GP-4452: 将最低 Java 版本提升至 Java 17 (by Glavo)
- GP-4454: 将默认 JavaFX 版本更新至 21.0.8/25 (by Glavo)
- GP-4439: 更新模组和整合包数据 (by Glavo)
- GP-4064: 优化主页公告关闭按钮 (by 辞庐)
- GP-4145: 在 Windows 平台优先使用注册表探测 GPU (by Glavo)
- GP-4163: 通过主页右下角弹出菜单切换版本后隐藏菜单 (by Glavo)
- GP-4142: 忽略 `%ProgramFiles%\Common Files\Oracle\Java` 中的 Java (by Glavo)
- GP-4180: 支持搜索不包含 release 文件的 Java (by Glavo)
- GP-4201: 为弹窗文本添加平滑滚动 (by 辞庐)
- GP-4203: 优化弹出菜单的默认弹出位置 (by ENC_Euphony)
- GP-4051: 导出日志时附带最近日志 (by Zkitefly)
- GP-4179: 支持搜索 `./.hmcl/java` 目录中的 Java (by Glavo)
- GP-4248: 在未安装游戏版本时支持一键下载启动游戏 (by Glavo) ([BV1BbYxzNEFE](https://www.bilibili.com/video/BV1BbYxzNEFE))
- GP-4246: 将 authlib-injector 嵌入启动器 (by Glavo)
- GP-4260: 支持最大化和全屏模式 (by Glavo)
- GP-4276: 优化版本号排序规则 (by Glavo)
- GP-4282: 优化对 Indev 版本的支持 (by Glavo)
- GP-4292, GP-4306: 优化显示进度对话框 (by Glavo)
- GP-4294: 游戏崩溃窗口中增加对拍照的提醒 (by YuChuXi)
- GP-4341: 更严格地检测文件名合法性 (by Glavo)
- GP-4362: 优化语言设置选项中语言名称的显示方式 (by Glavo)
- GP-4353: 优化自动切换游戏语言功能 (by Glavo)
- GP-4414: 检测到配置文件由高版本启动器创建时禁止保存配置文件 (by Glavo)
- GP-4487: 在未启用 JIT 或硬件渲染加速的环境中启动时弹出提示 (by Glavo)
- GP-4506: 使用 Java 25 启动游戏时默认开启 Compact Object Headers (by Glavo)
- 游戏设置
- GP-4234: 优化游戏窗口大小选择功能 (by Glavo)
- GP-4275: 基于实际屏幕分辨率添加游戏窗口分辨率选项 (by Wulian233)
- GP-4507: 游戏设置中添加「不自动添加 Java 虚拟机优化参数」选项 (by Glavo)
- GP-4515: 优化 Java 自动选择规则 (by Glavo)
- 实例管理
- GP-4222: 在实例名称中包含非字母、数字、减号和下划线字符时弹出警告 (by Glavo)
- GP-4509: 支持在主界面「实例管理」按钮上通过滚动滚轮切换游戏实例 (by Glavo)
- 模组管理
- GP-3230: 支持根据更多信息搜索模组 (by Zkitefly)
- GP-3231: 优化模组中文译名匹配机制 (by Zkitefly)
- GP-3229, GP-4621: 优化模组管理页面布局 (by Zkitefly, Glavo)
- GP-4622, GP-4648: 优化模组加载器检测机制 (by Glavo)
- GP-4641, GP-4652, GP-4654, GP-4658: 支持识别更多模组的元数据 (by Glavo)
- 世界管理
- GP-4263: 支持删除世界 (by Wulian233)
- 整合包
- GP-3716: 支持导出 Modrinth 整合包 (by Zkitefly)
- 下载
- GP-4272: 支持自动安装 Cleanroom (by 辞庐, zkitefly)
- GP-4141: 优化游戏下载页版本分类功能 (by Glavo)
- GP-4249: 游戏下载页面中使用史莱姆块作为愚人节版本的图标 (by Wulian233)
- GP-4471: 在游戏下载界面中显示当前平台对每个版本的支持状态 (by Glavo)
- GP-4268: 在 NeoForge 下载页面中添加正式版/快照分类 (by Wulian233)
- GP-4167, GP-4169, GP-4462: 优化下载缓存功能 (by Glavo)
- GP-4219: 下载文件时启用透明 GZip 压缩 (by Glavo)
- GP-4546: 支持通过 HTTP/2 协议下载文件 (by Glavo)
- 外观
- GP-4118: 添加字体抗锯齿算法设置选项 (by Glavo)
- GP-4148: 在系统设置中禁用动画效果时,默认禁用启动器动画 (by Glavo)
- GP-4510: 在未启用 JIT 或硬件渲染加速的环境中默认启动器禁用动画 (by Glavo)
- GP-4164: 支持通过环境变量强制使用 GPU 渲染和控制动画帧率 (by Glavo)
- GP-4184: 支持设置纯色背景 (by Glavo)
- GP-3205: 支持修改背景的不透明度 (by 吞云)
- GP-4205: 支持 APNG 动画图片 (by Glavo)
- GP-4323: HintPane 使用新版 Bootstrap 调色盘 (by 辞庐)
- GP-4521: 支持通过环境变量控制 UI 缩放比例 (by Glavo)
- 联机
- GP-4215: 在启动器中内置 Terracotta | 陶瓦联机 (by Burning_TNT)
- 本地化
- GP-4348: 添加文言翻译 (by Glavo, Andypsl8, Wulian233, dovisutu, 物灵, Bei Dou, 繁繁芙芙, Kaohaaa, 365KW, Andypsl8, Au0727, threwd, vinds476283)
- GP-4346: 添加乌克兰语翻译 (by BANSAFAn)
- GP-4527: 添加颠倒的英语翻译 (by Glavo)
- 错误修复
- GP-3976: 修复 Minecraft 1.5.2 安装 Forge 后无法正常启动的问题 (by Zkitefly)
- GP-3956: 修复启动时会尝试补全服务端自动更新整合包中已禁用的 mod 的问题 (by Zkitefly)
- GP-4239: 修复部分版本 wiki 链接不正确的问题 (by ENC_Euphony)
- GP-4321: 修复世界管理页面不支持极限模式的问题 (by Wulian233)
- GP-4350: 修复在部分简体中文环境中默认显示繁体中文的问题 (by Glavo)
- GP-4386: 修复离线账户换肤功能使用无效 CSL API 会导致启动失败的问题 (by Glavo)
- GP-4492: 修复 Windows 平台上 `%APPDATA%\.hmcl` 目录为跨驱动器符号链接时无法卸载 Java 的问题 (by Glavo)
- GP-4514: 修复 AdvancedListBox 在非必要的情况下显示滚动条的问题 (by rootwhois)
- GP-4517: 修复日志页面选中条目时 hover 背景闪烁两次的问题 (by rootwhois)
- GP-4296: 修复切换下载源后需要重启启动器才会生效的问题 (by Glavo)
- GP-4568: 修复在短时间内连续点击 OptionToggleButton 只会更改一次状态的问题 (by 辞庐)
- GP-4585: 修复部分按钮点击后始终保持焦点状态的问题 (by Wulian233)
- GP-4646: 修复 Minecraft 1.21.9+ 安装了 NeoForge 的实例未使用 NeoForge 图标作为实例图标的问题 (by 3gf8jv4dv)
- GP-4624: 修复导出游戏崩溃信息后弹窗没有正常弹出的问题 (by 辞庐)
- GP-4660: 修复模组下载页面图标模糊的问题 (by Glavo)
**启动器**
- GP-4452: 将最低 Java 版本提升至 Java 17 (by Glavo)
- GP-4454: 将默认 JavaFX 版本更新至 21.0.8/25 (by Glavo)
- GP-4439: 更新模组和整合包数据 (by Glavo)
- GP-4064: 优化主页公告关闭按钮 (by 辞庐)
- GP-4145: 在 Windows 平台优先使用注册表探测 GPU (by Glavo)
- GP-4163: 通过主页右下角弹出菜单切换版本后隐藏菜单 (by Glavo)
- GP-4142: 忽略 `%ProgramFiles%\Common Files\Oracle\Java` 中的 Java (by Glavo)
- GP-4180: 支持搜索不包含 release 文件的 Java (by Glavo)
- GP-4201: 为弹窗文本添加平滑滚动 (by 辞庐)
- GP-4203: 优化弹出菜单的默认弹出位置 (by ENC_Euphony)
- GP-4051: 导出日志时附带最近日志 (by Zkitefly)
- GP-4179: 支持搜索 `./.hmcl/java` 目录中的 Java (by Glavo)
- GP-4248: 在未安装游戏版本时支持一键下载启动游戏 (by Glavo) ([BV1BbYxzNEFE](https://www.bilibili.com/video/BV1BbYxzNEFE))
- GP-4246: 将 authlib-injector 嵌入启动器 (by Glavo)
- GP-4260: 支持最大化和全屏模式 (by Glavo)
- GP-4276: 优化版本号排序规则 (by Glavo)
- GP-4282: 优化对 Indev 版本的支持 (by Glavo)
- GP-4292, GP-4306: 优化显示进度对话框 (by Glavo)
- GP-4294: 游戏崩溃窗口中增加对拍照的提醒 (by YuChuXi)
- GP-4341: 更严格地检测文件名合法性 (by Glavo)
- GP-4362: 优化语言设置选项中语言名称的显示方式 (by Glavo)
- GP-4353: 优化自动切换游戏语言功能 (by Glavo)
- GP-4414: 检测到配置文件由高版本启动器创建时禁止保存配置文件 (by Glavo)
- GP-4487: 在未启用 JIT 或硬件渲染加速的环境中启动时弹出提示 (by Glavo)
- GP-4506: 使用 Java 25 启动游戏时默认开启 Compact Object Headers (by Glavo)
**游戏设置**
- GP-4234: 优化游戏窗口大小选择功能 (by Glavo)
- GP-4275: 基于实际屏幕分辨率添加游戏窗口分辨率选项 (by Wulian233)
- GP-4507: 游戏设置中添加「不自动添加 Java 虚拟机优化参数」选项 (by Glavo)
- GP-4515: 优化 Java 自动选择规则 (by Glavo)
**实例管理**
- GP-4222: 在实例名称中包含非字母、数字、减号和下划线字符时弹出警告 (by Glavo)
- GP-4509: 支持在主界面「实例管理」按钮上通过滚动滚轮切换游戏实例 (by Glavo)
**模组管理**
- GP-3230: 支持根据更多信息搜索模组 (by Zkitefly)
- GP-3231: 优化模组中文译名匹配机制 (by Zkitefly)
- GP-3229, GP-4621: 优化模组管理页面布局 (by Zkitefly, Glavo)
- GP-4622, GP-4648: 优化模组加载器检测机制 (by Glavo)
- GP-4641, GP-4652, GP-4654, GP-4658: 支持识别更多模组的元数据 (by Glavo)
**世界管理**
- GP-4263: 支持删除世界 (by Wulian233)
**整合包**
- GP-3716: 支持导出 Modrinth 整合包 (by Zkitefly)
**下载**
- GP-4272: 支持自动安装 Cleanroom (by 辞庐, zkitefly)
- GP-4141: 优化游戏下载页版本分类功能 (by Glavo)
- GP-4249: 游戏下载页面中使用史莱姆块作为愚人节版本的图标 (by Wulian233)
- GP-4471: 在游戏下载界面中显示当前平台对每个版本的支持状态 (by Glavo)
- GP-4268: 在 NeoForge 下载页面中添加正式版/快照分类 (by Wulian233)
- GP-4167, GP-4169, GP-4462: 优化下载缓存功能 (by Glavo)
- GP-4219: 下载文件时启用透明 GZip 压缩 (by Glavo)
- GP-4546: 支持通过 HTTP/2 协议下载文件 (by Glavo)
**外观**
- GP-4118: 添加字体抗锯齿算法设置选项 (by Glavo)
- GP-4148: 在系统设置中禁用动画效果时,默认禁用启动器动画 (by Glavo)
- GP-4510: 在未启用 JIT 或硬件渲染加速的环境中默认启动器禁用动画 (by Glavo)
- GP-4164: 支持通过环境变量强制使用 GPU 渲染和控制动画帧率 (by Glavo)
- GP-4184: 支持设置纯色背景 (by Glavo)
- GP-3205: 支持修改背景的不透明度 (by 吞云)
- GP-4205: 支持 APNG 动画图片 (by Glavo)
- GP-4323: HintPane 使用新版 Bootstrap 调色盘 (by 辞庐)
- GP-4521: 支持通过环境变量控制 UI 缩放比例 (by Glavo)
**联机**
- GP-4215: 在启动器中内置 Terracotta | 陶瓦联机 (by Burning_TNT)
**本地化**
- GP-4348: 添加文言翻译 (by Glavo, Andypsl8, Wulian233, dovisutu, 物灵, Bei Dou, 繁繁芙芙, Kaohaaa, 365KW, Andypsl8, Au0727, threwd, vinds476283)
- GP-4346: 添加乌克兰语翻译 (by BANSAFAn)
- GP-4527: 添加颠倒的英语翻译 (by Glavo)
**错误修复**
- GP-3976: 修复 Minecraft 1.5.2 安装 Forge 后无法正常启动的问题 (by Zkitefly)
- GP-3956: 修复启动时会尝试补全服务端自动更新整合包中已禁用的 mod 的问题 (by Zkitefly)
- GP-4239: 修复部分版本 wiki 链接不正确的问题 (by ENC_Euphony)
- GP-4321: 修复世界管理页面不支持极限模式的问题 (by Wulian233)
- GP-4350: 修复在部分简体中文环境中默认显示繁体中文的问题 (by Glavo)
- GP-4386: 修复离线账户换肤功能使用无效 CSL API 会导致启动失败的问题 (by Glavo)
- GP-4492: 修复 Windows 平台上 `%APPDATA%\.hmcl` 目录为跨驱动器符号链接时无法卸载 Java 的问题 (by Glavo)
- GP-4514: 修复 AdvancedListBox 在非必要的情况下显示滚动条的问题 (by rootwhois)
- GP-4517: 修复日志页面选中条目时 hover 背景闪烁两次的问题 (by rootwhois)
- GP-4296: 修复切换下载源后需要重启启动器才会生效的问题 (by Glavo)
- GP-4568: 修复在短时间内连续点击 OptionToggleButton 只会更改一次状态的问题 (by 辞庐)
- GP-4585: 修复部分按钮点击后始终保持焦点状态的问题 (by Wulian233)
- GP-4646: 修复 Minecraft 1.21.9+ 安装了 NeoForge 的实例未使用 NeoForge 图标作为实例图标的问题 (by 3gf8jv4dv)
- GP-4624: 修复导出游戏崩溃信息后弹窗没有正常弹出的问题 (by 辞庐)
- GP-4660: 修复模组下载页面图标模糊的问题 (by Glavo)
+11 -6
View File
@@ -3,9 +3,14 @@
详细版本介绍: [cv43540463](https://www.bilibili.com/opus/1129159061178155017)
- 启动器
- GP-4727: 将官方群组入口重新移动到主界面 (by Glavo)
- 联机
- GP-4724: 将陶瓦联机更新至 0.3.12 (by Burning_TNT)
- 错误修复
- GP-4721: 修复 JFXListViewSkin 创建大量平台线程的问题 (by Glavo)
**启动器**
- GP-4727: 将官方群组入口重新移动到主界面 (by Glavo)
**联机**
- GP-4724: 将陶瓦联机更新至 0.3.12 (by Burning_TNT)
**错误修复**
- GP-4721: 修复 JFXListViewSkin 创建大量平台线程的问题 (by Glavo)
+3 -1
View File
@@ -6,10 +6,12 @@
**启动器**
- GP-4742: 更新 Chunkbase 种子地图链接 (by Wulian233)
**联机**
- GP-4723: 将陶瓦联机更新至 0.3.13 (by Burning_TNT)
- GP-4735: 在不支持的平台上打开陶瓦联机页面时弹出提示 (by Glavo)
**错误修复**
- GP-4736: 修复 FreeBSD x86-64 平台上错误的将所有版本视作未经测试的版本的问题 (by Glavo)
- GP-4736: 修复 FreeBSD x86-64 平台上错误的将所有版本视作未经测试的版本的问题 (by Glavo)
+3
View File
@@ -16,6 +16,7 @@
- GP-4612: 增强解析数据包/资源包元数据的能力 (by mineDiamond)
- GP-4826: 从首页打开子页面时打开默认标签页 (by Glavo)
- GP-4845: 更新 amdgpu.ids (by 辞庐)
**外观/动画**
- GP-4780, GP-4790, GP-4803, GP-4815: 优化界面动画效果 (by Glavo)
@@ -23,10 +24,12 @@
- GP-4779: 预加载页面以减少动画卡顿 (by Glavo)
- GP-4762: 在 macOS 平台使用系统默认最小化动画 (by Damon Lu)
- GP-4809: 在更多页面上启用平滑滚动 (by Glavo)
**本地化**
- GP-4709: 本地化下载速度显示 (by Glavo)
- 优化软件文案,修订翻译 (by 3gf8jv4dv, Glavo)
**错误修复**
- GP-4775: 修复无法获取部分远古版本版本号的问题 (by Glavo)
+1
View File
@@ -7,6 +7,7 @@
- GP-4886: 优化对 Linux MIPS64el 平台的支持 (by Glavo)
- GP-4917: 支持 Minecraft 新版本号规则 (by Glavo)
**错误修复**
- GP-4850: 修复 `FetchTask` 未设置 User-Agent 的问题 (by Glavo)
+7
View File
@@ -10,16 +10,20 @@
- GP-4927: 在 macOS 平台上导出启动脚本时支持导出 `.command` 文件 (by WhatDamon)
- GP-5019: 使用子标题注解“提前预览 HMCL 版本”选项 (by neveler)
- GP-5008: 优化反馈页面 (by Glavo)
**游戏设置**
- GP-4144: 添加输出游戏调试日志选项 (by 辞庐)
**实例管理**
- GP-4475: 添加资源包管理功能 (by 辞庐)
- GP-4872: 添加快速进入世界功能 (by mineDiamond)
**账户管理**
- GP-4932: 在主页右键点击账户按钮时弹出快速切换账户菜单 (by zimzaza4)
**外观**
- GP-4835: 更新至 Material Design 3 颜色系统 (by Glavo)
@@ -29,14 +33,17 @@
- GP-4915: 在 `HintPane` 提示框中为图标和文本添加间距 (by neveler)
- GP-4951: 更新选择框下拉菜单滚动条样式 (by Glavo)
- GP-4964: 更新表格中复选框的样式 (by Glavo)
**下载**
- GP-4856: 优化下载源选择逻辑 (by Glavo)
- GP-4990: 支持下载 Java 25 (by OrzMiku)
**联机**
- GP-4869: 在陶瓦联机页面向非中国内地用户添加提示框 (by Glavo)
- GP-4916: 在陶瓦联机界面启动游戏时禁用离线皮肤功能 (by Glavo)
**错误修复**
- GP-4857: 修复惯性滚动可能导致弹出菜单错位的问题 (by Glavo)
+1
View File
@@ -8,6 +8,7 @@
- GP-5046: 禁用日志窗口的平滑滚动效果 (by Glavo)
- GP-5052: 优化列表的平滑滚动效果 (by Glavo)
- GP-5110: 更新 NeoForge 版本号规则 (by 辞庐)
**错误修复**
- GP-5128: 修复使用 BMCLAPI 下载源时选择 `Liteloader` 版本时可能报错的问题 (by Wulian233)
+26 -6
View File
@@ -316,12 +316,6 @@ compress_html:
ignore:
envs: development
head_scripts:
- /assets/js/settings.js
- /assets/js/theme.js
after_footer_scripts:
- /assets/js/plugins/jquery.auto-redirect.js
# jekyll-feed
feed:
collections:
@@ -330,3 +324,29 @@ feed:
- modpack
- eula
- multiplayer
post_process:
terser:
/assets/js/main.min.js:
- /assets/js/settings.js
- /assets/js/theme.js
- /assets/js/meta.js
- /assets/js/vendor/jquery/jquery-3.6.0.js
- /assets/js/plugins/gumshoe.js
- /assets/js/plugins/jquery.ba-throttle-debounce.js
- /assets/js/plugins/jquery.fitvids.js
- /assets/js/plugins/jquery.greedy-navigation.js
- /assets/js/plugins/jquery.magnific-popup.js
- /assets/js/plugins/smooth-scroll.js
- /assets/js/plugins/jquery.auto-redirect.js
- /assets/js/_main.js
remove_dirs:
- /assets/images/
- /assets/js/plugins/
- /assets/js/vendor/
remove_files:
- /assets/js/meta.js
- /assets/js/_main.js
- /assets/js/theme.js
- /assets/js/settings.js
- /assets/js/main.min.js.map
+2
View File
@@ -49,6 +49,8 @@ docs:
url: /changelog/dev.html
- title: 其他
children:
- title: 验证 HMCL
url: /verify.html
- title: 用户协议
url: /eula/hmcl.html
- title: 贡献指南
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 各大问题集合
date: 2025-09-19 13:40:00 +0800
author: LIPiston
contributors:
authors:
- LIPiston
- Mine-diamond
---
+2 -2
View File
@@ -1,8 +1,8 @@
---
title: 加入 HMCL 用户群
date: 2024-03-05 17:00:00 +0800
author: Glavo
contributors:
authors:
- Glavo
- 8Mi_Yile
- zkitefly
---
+5 -3
View File
@@ -1,8 +1,10 @@
---
title: "自动安装与模组下载简介"
title: 自动安装与模组下载简介
excerpt: 安装 Forge、Fabric、LiteLoader、OptiFine 及模组的教程
date: 2025-11-02 09:06:30 +0800
author: asdqp233,Mine-diamond
date: 2025-11-02 09:06:30 +0800
authors:
- asdqp233
- Mine-diamond
---
要为 Minecraft 安装模组,你首先需要安装一个“模组加载器”(例如 NeoForge 或 Fabric),然后再安装你想要的模组。HMCL 为这两个步骤都提供了强大的支持。
+2 -2
View File
@@ -2,8 +2,8 @@
title: 离线模式下更换皮肤
excerpt: 使用本地皮肤文件、LittleSkin 或 Blessing Skin 设置离线皮肤
date: 2025-12-05 22:25:00 +0800
author: qiaoshouzi
contributors:
authors:
- qiaoshouzi
- kitefly
- TyMxy
---
+2 -2
View File
@@ -2,7 +2,7 @@
title: 光影
excerpt: 光影的安装方法,包括 OptiFine、Oculus 和 Iris Shaders
date: 2021-10-09 23:18:02 +0800
contributors:
authors:
- hejiehao
---
@@ -24,7 +24,7 @@ contributors:
在对应的游戏版本管理页面,点击 `自动安装` ,你会看到有个 `OptiFine` 的选项。
![OptiFine_AutoInstaller](/assets/img/docs/shader/install_auto-16338577874692.png)
![OptiFine_AutoInstaller](/assets/img/docs/shader/install_auto.png)
点开之后选择合适的版本然后等待安装完成即可。
目前,如果要在 `Fabric` 使用 `OptiFine` ,需要通过 **方式四** 安装。
+6 -5
View File
@@ -4,11 +4,12 @@ layout: single
{{ content }}
{% if page.author or page.contributors or jekyll.environment == 'production' and page.hits %}
<script src="{{ '/assets/js/meta.js' | relative_url }}"></script>
{% if page.author or page.authors or jekyll.environment == 'production' and page.hits %}
<script>
{%- if page.author %}appendMeta("{{ page.author }}", "fas fa-user-pen");{% endif -%}
{%- for contributor in page.contributors %}appendMeta("{{ contributor }}", "fas fa-user-pen");{% endfor -%}
{%- if jekyll.environment == 'production' and page.hits %}hits({{ page.url | absolute_url | jsonify }});{% endif -%}
window.addEventListener("load", () => {
{%- if page.author %}appendMeta("{{ page.author }}", "fas fa-user-pen");{% endif -%}
{%- for author in page.authors %}appendMeta("{{ author }}", "fas fa-user-pen");{% endfor -%}
{%- if jekyll.environment == 'production' and page.hits %}hits({{ page.url | absolute_url | jsonify }});{% endif -%}
});
</script>
{% endif %}
+6 -4
View File
@@ -46,10 +46,12 @@ layout: single
{% endfor %}
<script>
for (const settingItem of document.getElementsByClassName("setting-item")) {
settingItem.addEventListener("change", ({ target }) => settings.set(target.name, target.value));
settings.onChange(settingItem.name, (value) => settingItem.type === "radio" && (settingItem.checked = settingItem.value === value));
}
window.addEventListener("load", () => {
for (const settingItem of document.getElementsByClassName("setting-item")) {
settingItem.addEventListener("change", ({ target }) => settings.set(target.name, target.value));
settings.onChange(settingItem.name, (value) => settingItem.type === "radio" && (settingItem.checked = settingItem.value === value));
}
});
</script>
<style>.notice label input { display: inline }</style>
+4 -4
View File
@@ -1,9 +1,9 @@
---
title: 多人联机反馈
date: 2025-10-07T18:44:00+08:00
last_modified_at: 2025-12-03T16:39:00+08:00
author: Burning_TNT
contributors:
last_modified_at: 2026-06-18T12:07:00+08:00
authors:
- Burning_TNT
- TyMxy
---
@@ -18,7 +18,7 @@ contributors:
如要体验陶瓦联机,请遵循以下步骤:
打开 HMCL,然后您可通过 HMCL 左下角 **多人联机** 入口体验 Terracotta | 陶瓦联机。
目前,HMCL、PCL CE 已实现最基本的互通支持。我们欢迎其他启动器接入 Scaffolding 协议实现更完整的互通功能。
目前,HMCL、PCL CE和FCL 已实现最基本的互通支持。我们欢迎其他启动器接入 Scaffolding 协议实现更完整的互通功能。
为向尽可能多的玩家免费开放基本联机功能,陶瓦联机将极大程度上基于 P2P。
简单而言,陶瓦联机不会比市面上基于服务器中继的联机方案稳定,但其开销将远远低于其他联机方案。
+98
View File
@@ -0,0 +1,98 @@
---
title: 验证 HMCL 文件
permalink: /verify.html
toc: false
---
<div class="hmcl-verify">
<p>检查 HMCL 文件是否是官方构建。</p>
<div class="hmcl-verify__actions">
<label class="hmcl-verify__button" for="hmcl-verify-file">选择文件</label>
<span id="hmcl-verify-selected-file" class="hmcl-verify__file">未选择文件</span>
<input id="hmcl-verify-file" class="hmcl-verify__input" type="file" accept=".jar,.exe,.sh">
</div>
<div id="hmcl-verify-result" class="hmcl-verify__result" role="status" aria-live="polite" hidden></div>
</div>
<style>
.hmcl-verify {
max-width: 42rem;
font-size: 1rem;
line-height: 1.65;
}
.hmcl-verify p {
margin-bottom: 1rem;
}
.hmcl-verify__actions {
display: flex;
align-items: center;
gap: .75rem;
flex-wrap: wrap;
margin: 1rem 0;
}
.hmcl-verify__button {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 2.25rem;
padding: .35rem .8rem;
border: 1px solid rgba(127, 127, 127, .45);
border-radius: 4px;
background: rgba(127, 127, 127, .12);
color: inherit;
font-size: .9rem;
line-height: 1.2;
cursor: pointer;
}
.hmcl-verify__button:hover {
filter: brightness(.95);
}
.hmcl-verify__file {
min-width: 0;
max-width: 100%;
opacity: .72;
font-size: .9rem;
overflow-wrap: anywhere;
}
.hmcl-verify__input {
position: absolute;
width: 1px;
height: 1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
}
.hmcl-verify__result {
margin-top: 1rem;
padding: .75rem .9rem;
border: 1px solid rgba(127, 127, 127, .35);
border-left-width: 4px;
border-radius: 4px;
background: rgba(127, 127, 127, .08);
font-size: .95rem;
line-height: 1.6;
white-space: pre-wrap;
}
.hmcl-verify__result[hidden] {
display: none;
}
.hmcl-verify__result[data-state="ok"] {
border-color: #2e7d32;
}
.hmcl-verify__result[data-state="error"] {
border-color: #c62828;
}
</style>
<script src="{{ '/assets/js/hmcl-signature-verify.js' | relative_url }}"></script>
+13
View File
@@ -0,0 +1,13 @@
module Jekyll
class Document
YAML_FRONT_MATTER_REGEXP = %r!\A(?:---|/\* @frontmatter)\s*\n(.*?\n?)^((?:---|\*/|\.\.\.)\s*$\n?)!m.freeze
end
module Utils
def has_yaml_header?(file)
File.open(file, "rb", &:readline).match? %r!\A(---|/\* @frontmatter)\s*\r?\n!
rescue EOFError
false
end
end
end
+51
View File
@@ -0,0 +1,51 @@
require "terser"
ExecJS.runtime = ExecJS::Runtimes::MiniRacer if ExecJS::Runtimes::MiniRacer.available?
Jekyll::Hooks.register :site, :post_write do |site|
config = site.config["post_process"]
next unless config
terser = config["terser"]
if terser.is_a?(Hash)
terser.each do |terser_output, terser_inputs|
next unless terser_output.is_a?(String) && terser_inputs.is_a?(Array)
terser_codes = []
terser_inputs_all_exist = true
terser_inputs.each do |file|
destination = File.join(site.dest, file)
if File.exist?(destination)
terser_codes << File.read(destination, encoding: "UTF-8")
else
terser_inputs_all_exist = false
break
end
end
if terser_inputs_all_exist
destination = File.join(site.dest, terser_output.to_s)
File.write(destination, Terser.compile(terser_codes.join(";")))
Jekyll.logger.info "Post Process:", "terser #{terser_output}"
end
end
end
remove_files = config["remove_files"]
if remove_files.is_a?(Array)
remove_files.each do |file|
destination = File.join(site.dest, file)
File.delete(destination) if File.exist?(destination)
Jekyll.logger.info "Post Process:", "remove_files #{file}"
end
end
remove_dirs = config["remove_dirs"]
if remove_dirs.is_a?(Array)
remove_dirs.each do |dir|
destination = File.join(site.dest, dir)
FileUtils.rm_rf(destination) if File.directory?(destination)
Jekyll.logger.info "Post Process:", "remove_dirs #{dir}"
end
end
end
+1 -1
View File
@@ -2,7 +2,7 @@
@import "minimal-mistakes/copyright";
/* Variables */
@import "minimal-mistakes/variables";
@import "minimal-mistakes-plus/variables";
/* Mixins and functions */
@import "minimal-mistakes/vendor/breakpoint/breakpoint";
@@ -0,0 +1,4 @@
$large: 1200px !default;
$x-large: 1400px !default;
@import "minimal-mistakes/variables";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,2 +1,2 @@
---
---
/* @frontmatter
*/
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
+2 -2
View File
@@ -1,5 +1,5 @@
---
---
/* @frontmatter
*/
@charset "utf-8";
Binary file not shown.

Before

Width:  |  Height:  |  Size: 282 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

+407
View File
@@ -0,0 +1,407 @@
(function () {
"use strict";
const SIGNATURE_ENTRY_NAME = "META-INF/hmcl_signature";
const PUBLIC_KEY_ENTRY_NAME = "assets/hmcl_signature_publickey.der";
const LAUNCHER_ENTRY_NAMES = ["assets/HMCLauncher.exe", "assets/HMCLauncher.sh"];
const PUBLIC_KEY_DER_BASE64 = "MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAypkXnIxC3KzQsICAK9lEan3icR8OUREbW1vqANzi7ne0EXAyFh1Ow10HIY+SIWHVhsIkS/mvNyUyW5TIPc22djWNQKf6OukOY2/htJpolj4l/uhPGe4BoFiV8m2jvyKq0X7truazc9/BDrLKkoIVIkXb0PenVs1AlFLnXzLEu9Lj4kxfkRO4zdV4CMHYWLWLLP9Dj0/Xg+tj9n/QX/IWVVrBporKiJgg99WztKw7wQ/Zd+Syu8vfa6IjpgRojtOiCb8MUvEUHcs8RG/PPRACJ8bNwCaNc0RNLoyfVGjjZGFh95XPr6huJYmn/11j45GTB9I5w77JnF83AWwAPyx15z6yHKm4epzXJ9yFrTK5nATQGD1H2i8rdg4ZvsjFE4nxEYTWDTkk9nQdZs3n5Os+pUh8hyyjsa4Hh2yjmfcivcE/KzyP8JH15OWH9QOHwdfRTDu3v4AxSZCuQKlhaSpYbHFahE+jqP+Pr0+Bc/e5ybu6SdAELlOJrVYU6pkgrvYJmkV6Ahfm3P8OZKt72MAGxDfdYNUA70QWMMC1YP+GQYedC+oLA4/BhQ1Su9AfUUdQGN0a8a6uaZFX5QyiA/6KrRUC06dQdXi9ZOCx8LY28Snl7TjgmOef15HnnmmQTbARJuR0eenprzOXJXJzkS6/Vx1ak/9gNRA8yMiVM9lIilsCAwEAAQ==";
const PUBLIC_KEY_DER = base64ToUint8Array(PUBLIC_KEY_DER_BASE64);
const VerificationErrorCode = Object.freeze({
MISSING_PUBLIC_KEY: "missing-public-key",
MISSING_SIGNATURE: "missing-signature",
INVALID_PUBLIC_KEY: "invalid-public-key",
INVALID_SIGNATURE: "invalid-signature",
INVALID_LAUNCHER_HEADER: "invalid-launcher-header",
INVALID_ZIP: "invalid-zip",
UNSUPPORTED_ZIP: "unsupported-zip",
UNSUPPORTED_BROWSER: "unsupported-browser",
});
class VerificationError extends Error {
constructor(code, message, cause) {
super(message);
this.name = "VerificationError";
this.code = code;
this.cause = cause;
}
}
const fileInput = document.getElementById("hmcl-verify-file");
const resultElement = document.getElementById("hmcl-verify-result");
const selectedFileElement = document.getElementById("hmcl-verify-selected-file");
let verificationRequestId = 0;
if (!fileInput || !resultElement) {
return;
}
fileInput.addEventListener("change", async () => {
const requestId = ++verificationRequestId;
const file = fileInput.files && fileInput.files[0];
if (!file) {
setSelectedFileName("");
hideResult();
return;
}
setSelectedFileName(file.name);
setResult("正在验证,请稍候...");
try {
await verifyHmclFile(file);
if (!isCurrentVerification(requestId)) {
return;
}
setResult(
"验证通过,该文件是 HMCL 的官方构建,可以放心使用。",
"ok"
);
} catch (error) {
if (!isCurrentVerification(requestId)) {
return;
}
setResult(`验证失败。\n${formatVerificationError(error)}`, "error");
}
});
function isCurrentVerification(requestId) {
return requestId === verificationRequestId;
}
async function verifyHmclFile(file) {
const fileBuffer = await file.arrayBuffer();
const archive = readZipArchive(fileBuffer);
const entries = archive.entries;
const publicKeyEntry = entries.find((entry) => entry.name === PUBLIC_KEY_ENTRY_NAME);
const signatureEntry = entries.find((entry) => entry.name === SIGNATURE_ENTRY_NAME);
if (!publicKeyEntry) {
throw new VerificationError(VerificationErrorCode.MISSING_PUBLIC_KEY, `missing ${PUBLIC_KEY_ENTRY_NAME}`);
}
if (!signatureEntry) {
throw new VerificationError(VerificationErrorCode.MISSING_SIGNATURE, `missing ${SIGNATURE_ENTRY_NAME}`);
}
const bundledPublicKey = await readEntryContent(fileBuffer, publicKeyEntry);
if (!bytesEqual(bundledPublicKey, PUBLIC_KEY_DER)) {
throw new VerificationError(VerificationErrorCode.INVALID_PUBLIC_KEY, "public key mismatch");
}
const signature = await readEntryContent(fileBuffer, signatureEntry);
const signedEntries = entries
.filter((entry) => entry.name !== SIGNATURE_ENTRY_NAME)
.sort((left, right) => {
if (left.name < right.name) {
return -1;
}
if (left.name > right.name) {
return 1;
}
return 0;
});
const signedDataChunks = [];
for (const entry of signedEntries) {
const nameBytes = new TextEncoder().encode(entry.name);
const content = await readEntryContent(fileBuffer, entry);
signedDataChunks.push(await sha512(nameBytes));
signedDataChunks.push(await sha512(content));
}
const publicKey = await crypto.subtle.importKey(
"spki",
PUBLIC_KEY_DER,
{
name: "RSASSA-PKCS1-v1_5",
hash: "SHA-512",
},
false,
["verify"]
);
const valid = await crypto.subtle.verify(
"RSASSA-PKCS1-v1_5",
publicKey,
signature,
concatUint8Arrays(signedDataChunks)
);
if (!valid) {
throw new VerificationError(VerificationErrorCode.INVALID_SIGNATURE, "invalid signature");
}
await verifyLauncherPrefix(fileBuffer, archive);
}
function readZipArchive(buffer) {
const view = new DataView(buffer);
const end = findEndOfCentralDirectory(view);
const totalEntries = view.getUint16(end + 10, true);
const centralDirectorySize = view.getUint32(end + 12, true);
const centralDirectoryOffset = view.getUint32(end + 16, true);
if (centralDirectorySize === 0xffffffff || centralDirectoryOffset === 0xffffffff) {
throw new VerificationError(VerificationErrorCode.UNSUPPORTED_ZIP, "Zip64 is not supported");
}
const zipStartOffset = end - centralDirectorySize - centralDirectoryOffset;
if (zipStartOffset < 0) {
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, "invalid zip offsets");
}
const entries = [];
let offset = zipStartOffset + centralDirectoryOffset;
const centralDirectoryEnd = offset + centralDirectorySize;
for (let index = 0; index < totalEntries; index += 1) {
if (offset + 46 > view.byteLength || view.getUint32(offset, true) !== 0x02014b50) {
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, "invalid central directory");
}
const flags = view.getUint16(offset + 8, true);
const method = view.getUint16(offset + 10, true);
const compressedSize = view.getUint32(offset + 20, true);
const uncompressedSize = view.getUint32(offset + 24, true);
const fileNameLength = view.getUint16(offset + 28, true);
const extraLength = view.getUint16(offset + 30, true);
const commentLength = view.getUint16(offset + 32, true);
const localHeaderOffset = view.getUint32(offset + 42, true);
const fileNameStart = offset + 46;
const fileNameEnd = fileNameStart + fileNameLength;
const name = decodeEntryName(new Uint8Array(view.buffer, fileNameStart, fileNameLength), flags);
entries.push({
name,
method,
compressedSize,
uncompressedSize,
localHeaderOffset: zipStartOffset + localHeaderOffset,
});
offset = fileNameEnd + extraLength + commentLength;
}
if (offset !== centralDirectoryEnd) {
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, "central directory size mismatch");
}
return {
entries,
zipStartOffset,
};
}
function findEndOfCentralDirectory(view) {
const minOffset = Math.max(0, view.byteLength - 22 - 0xffff);
for (let offset = view.byteLength - 22; offset >= minOffset; offset -= 1) {
if (view.getUint32(offset, true) === 0x06054b50) {
const commentLength = view.getUint16(offset + 20, true);
if (offset + 22 + commentLength === view.byteLength) {
return offset;
}
}
}
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, "end of central directory not found");
}
async function readEntryContent(buffer, entry) {
const view = new DataView(buffer);
const offset = entry.localHeaderOffset;
if (offset + 30 > view.byteLength || view.getUint32(offset, true) !== 0x04034b50) {
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, `invalid local header: ${entry.name}`);
}
const fileNameLength = view.getUint16(offset + 26, true);
const extraLength = view.getUint16(offset + 28, true);
const dataStart = offset + 30 + fileNameLength + extraLength;
const dataEnd = dataStart + entry.compressedSize;
if (dataEnd > view.byteLength) {
throw new VerificationError(VerificationErrorCode.INVALID_ZIP, `entry data is truncated: ${entry.name}`);
}
const compressedData = new Uint8Array(buffer, dataStart, entry.compressedSize);
if (entry.method === 0) {
return compressedData;
}
if (entry.method === 8) {
return inflateRaw(compressedData, entry.name, entry.uncompressedSize);
}
throw new VerificationError(
VerificationErrorCode.UNSUPPORTED_ZIP,
`unsupported compression method ${entry.method}: ${entry.name}`
);
}
async function verifyLauncherPrefix(buffer, archive) {
const prefixLength = archive.zipStartOffset;
if (prefixLength === 0) {
return;
}
const prefix = new Uint8Array(buffer, 0, prefixLength);
for (const entryName of LAUNCHER_ENTRY_NAMES) {
const launcherEntry = archive.entries.find((entry) => entry.name === entryName);
if (!launcherEntry) {
continue;
}
const launcherContent = await readEntryContent(buffer, launcherEntry);
if (bytesEqual(prefix, launcherContent)) {
return;
}
}
throw new VerificationError(
VerificationErrorCode.INVALID_LAUNCHER_HEADER,
"launcher header does not match signed assets"
);
}
async function inflateRaw(data, entryName, expectedSize) {
if (typeof DecompressionStream === "undefined") {
throw new VerificationError(
VerificationErrorCode.UNSUPPORTED_BROWSER,
"this browser does not support DecompressionStream"
);
}
let stream;
try {
stream = new Blob([data]).stream().pipeThrough(new DecompressionStream("deflate-raw"));
} catch (error) {
throw new VerificationError(
VerificationErrorCode.UNSUPPORTED_BROWSER,
`this browser cannot decompress deflated zip entries: ${entryName}`,
error
);
}
let output;
try {
output = new Uint8Array(await new Response(stream).arrayBuffer());
} catch (error) {
throw new VerificationError(
VerificationErrorCode.INVALID_ZIP,
`cannot decompress entry: ${entryName}`,
error
);
}
if (output.byteLength !== expectedSize) {
throw new VerificationError(
VerificationErrorCode.INVALID_ZIP,
`uncompressed size mismatch: ${entryName}`
);
}
return output;
}
function decodeEntryName(bytes, flags) {
if ((flags & 0x0800) === 0) {
return new TextDecoder("utf-8").decode(bytes);
}
return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
}
async function sha512(data) {
return new Uint8Array(await crypto.subtle.digest("SHA-512", data));
}
function concatUint8Arrays(chunks) {
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.byteLength, 0);
const result = new Uint8Array(totalLength);
let offset = 0;
for (const chunk of chunks) {
result.set(chunk, offset);
offset += chunk.byteLength;
}
return result;
}
function bytesEqual(left, right) {
if (left.byteLength !== right.byteLength) {
return false;
}
for (let index = 0; index < left.byteLength; index += 1) {
if (left[index] !== right[index]) {
return false;
}
}
return true;
}
function base64ToUint8Array(base64) {
const binary = atob(base64);
const bytes = new Uint8Array(binary.length);
for (let index = 0; index < binary.length; index += 1) {
bytes[index] = binary.charCodeAt(index);
}
return bytes;
}
function formatVerificationError(error) {
switch (error && error.code) {
case VerificationErrorCode.MISSING_PUBLIC_KEY:
return "这不是可验证的 HMCL 文件,或者 HMCL 版本过低,无法验证。";
case VerificationErrorCode.MISSING_SIGNATURE:
return "这是非官方构建,请谨慎甄别其来源。";
case VerificationErrorCode.INVALID_PUBLIC_KEY:
case VerificationErrorCode.INVALID_SIGNATURE:
case VerificationErrorCode.INVALID_LAUNCHER_HEADER:
return "该 HMCL 文件可能被篡改或已损坏,请不要使用此文件。你可以从 HMCL 官方网站重新下载 HMCL。";
case VerificationErrorCode.INVALID_ZIP:
return "这个文件不是有效的 HMCL 文件,或文件已经损坏。";
case VerificationErrorCode.UNSUPPORTED_ZIP:
return "暂不支持验证这种文件格式。";
case VerificationErrorCode.UNSUPPORTED_BROWSER:
return "当前浏览器不支持读取这个文件,请换用新版 Chrome、Edge 或 Firefox。";
default:
return "无法完成验证,请确认你选择的是从官方渠道下载的 HMCL 文件。";
}
}
function setResult(message, state) {
resultElement.textContent = message;
resultElement.hidden = false;
if (state) {
resultElement.dataset.state = state;
} else {
delete resultElement.dataset.state;
}
}
function hideResult() {
resultElement.textContent = "";
resultElement.hidden = true;
delete resultElement.dataset.state;
}
function setSelectedFileName(fileName) {
if (selectedFileElement) {
selectedFileElement.textContent = fileName || "未选择文件";
}
}
})();
@@ -0,0 +1,132 @@
/*
GreedyNav.js - https://github.com/lukejacksonn/GreedyNav
Licensed under the MIT license - http://opensource.org/licenses/MIT
Copyright (c) 2015 Luke Jackson http://lukejacksonn.com
*/
$(function() {
var $btn = $("nav.greedy-nav .greedy-nav__toggle");
var $vlinks = $("nav.greedy-nav .visible-links");
var $hlinks = $("nav.greedy-nav .hidden-links");
var $nav = $("nav.greedy-nav");
var $logo = $('nav.greedy-nav .site-logo');
var $logoImg = $('nav.greedy-nav .site-logo img');
var $title = $("nav.greedy-nav .site-title");
var $search = $('nav.greedy-nav button.search__toggle');
var numOfItems, totalSpace, closingTime, breakWidths;
// This function measures both hidden and visible links and sets the navbar breakpoints
// This is called the first time the script runs and everytime the "check()" function detects a change of window width that reached a different CSS width breakpoint, which affects the size of navbar Items
// Please note that "CSS width breakpoints" (which are only 4) !== "navbar breakpoints" (which are as many as the number of items on the navbar)
function measureLinks(){
numOfItems = 0;
totalSpace = 0;
closingTime = 1000;
breakWidths = [];
// Adds the width of a navItem in order to create breakpoints for the navbar
function addWidth(i, w) {
totalSpace += w;
numOfItems += 1;
breakWidths.push(totalSpace);
}
// Measures the width of hidden links by making a temporary clone of them and positioning under visible links
function hiddenWidth(obj){
var clone = obj.clone();
clone.css("visibility","hidden");
$vlinks.append(clone);
addWidth(0, clone.outerWidth());
clone.remove();
}
// Measure both visible and hidden links widths
$vlinks.children().outerWidth(addWidth);
$hlinks.children().each(function(){hiddenWidth($(this))});
}
// Get initial state
measureLinks();
var winWidth = $( window ).width();
// Set the last measured CSS width breakpoint: 0: < 768px, 1: < 1200px, 2: < 1400px, 3: >= 1400px.
var lastBreakpoint = winWidth < 768 ? 0 : winWidth < 1200 ? 1 : winWidth < 1400 ? 2 : 3;
var availableSpace, numOfVisibleItems, requiredSpace, timer;
function check() {
winWidth = $( window ).width();
// Set the current CSS width breakpoint: 0: <768px, 1: < 1200px, 2: < 1400px, 3: >= 1400px.
var curBreakpoint = winWidth < 768 ? 0 : winWidth < 1200 ? 1 : winWidth < 1400 ? 2 : 3;
// If current breakpoint is different from last measured breakpoint, measureLinks again
if(curBreakpoint !== lastBreakpoint) measureLinks();
// Set the last measured CSS width breakpoint with the current breakpoint
lastBreakpoint = curBreakpoint;
// Get instant state
numOfVisibleItems = $vlinks.children().length;
// Decrease the width of visible elements from the nav innerWidth to find out the available space for navItems
availableSpace = /* nav */ $nav.innerWidth()
- /* logo */ ($logo.length !== 0 ? $logo.outerWidth(true) : 0)
- /* title */ $title.outerWidth(true)
- /* search */ ($search.length !== 0 ? $search.outerWidth(true) : 0)
- /* toggle */ (numOfVisibleItems !== breakWidths.length ? $btn.outerWidth(true) : 0);
requiredSpace = breakWidths[numOfVisibleItems - 1];
// There is not enought space
if (requiredSpace > availableSpace) {
$vlinks.children().last().prependTo($hlinks);
numOfVisibleItems -= 1;
check();
// There is more than enough space. If only one element is hidden, add the toggle width to the available space
} else if (availableSpace + (numOfVisibleItems === breakWidths.length - 1?$btn.outerWidth(true):0) > breakWidths[numOfVisibleItems]) {
$hlinks.children().first().appendTo($vlinks);
numOfVisibleItems += 1;
check();
}
// Update the button accordingly
$btn.attr("count", numOfItems - numOfVisibleItems);
if (numOfVisibleItems === numOfItems) {
$btn.addClass('hidden');
} else $btn.removeClass('hidden');
}
// Window listeners
$(window).resize(function() {
check();
});
$btn.on('click', function() {
$hlinks.toggleClass('hidden');
$(this).toggleClass('close');
clearTimeout(timer);
});
$hlinks.on("click", function () {
// Hide the hidden links & remove the overlay when one is clicked.
$hlinks.addClass("hidden");
$btn.removeClass("close");
}).on('mouseleave', function() {
// Mouse has left, start the timer
timer = setTimeout(function() {
$hlinks.addClass('hidden');
$('.greedy-nav__toggle').removeClass('close');
}, closingTime);
}).on('mouseenter', function() {
// Mouse is back, cancel the timer
clearTimeout(timer);
})
// check if page has a logo
if($logoImg.length !== 0){
// check if logo is not loaded
if(!($logoImg[0].complete || $logoImg[0].naturalWidth !== 0)){
// if logo is not loaded wait for logo to load or fail to check
$logoImg.one("load error", check);
// if logo is already loaded just check
} else check();
// if page does not have a logo just check
} else check();
});
+3 -2
View File
@@ -1,6 +1,7 @@
---
/* @frontmatter
layout: null
---
*/
(function () {
const PREFIX = "HMCL_DOCS_SETTINGS_", data = {}, bus = new EventTarget(), configs = /*{%comment%}*/{}/*{%endcomment%}*/ /**{{'/'}}{{ site.data.settings | jsonify }}/**/;
window.addEventListener("storage", ({ key, newValue }) => key !== null && key.startsWith(PREFIX) && newValue !== data[key] && bus.dispatchEvent(new CustomEvent(key, { detail: (data[key] = newValue) })));
+3 -2
View File
@@ -1,6 +1,7 @@
---
/* @frontmatter
layout: null
---
*/
window.addEventListener("DOMContentLoaded", function () {
var skinLink = document.getElementById("skin");
var darkModeQuery = window.matchMedia("(prefers-color-scheme: dark)");