news 2026/9/24 15:36:07

HMCL(Hello Minecraft! Launcher)跨平台开源 Minecraft 启动器:功能架构、平台支持与源码构建全解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HMCL(Hello Minecraft! Launcher)跨平台开源 Minecraft 启动器:功能架构、平台支持与源码构建全解析

HMCL(Hello Minecraft! Launcher)跨平台开源 Minecraft 启动器:功能架构、平台支持与源码构建全解析

【免费下载链接】HMCLA Minecraft Launcher which is multi-functional, cross-platform and popular项目地址: https://gitcode.com/gh_mirrors/hm/HMCL

HMCL(Hello Minecraft! Launcher)是一款开源、跨平台的 Minecraft 启动器,集模组管理、游戏自动安装、模组包建立与介面客制化于一体。本文以docs/README_zh_Hant.md为骨架,结合仓库源码(HMCLCore 下载模块、平台枚举、Metadata 元数据)与docs/PLATFORM_zh_Hant.mddocs/Contributing_zh_Hant.md两篇关联文档,系统讲解 HMCL 的核心功能、跨平台兼容矩阵、源码构建流程与运行时调试选项,帮助读者既能快速上手使用,也能深入理解其实现原理并参与贡献。

项目简介与核心功能

HMCL 的核心定位是"多功能、跨平台"的 Minecraft 启动器,其功能覆盖了从下载、安装到日常游玩的完整链路:

  • 模组管理:对已安装的模组进行启停、版本管理与依赖处理,相关实现集中于HMCLCore/src/main/java/org/jackhuang/hmcl/addon/mod/resourcepack/等子模块。
  • 游戏客制化:可针对单个游戏版本设置 Java 参数、分配内存、选择渲染器、调整游戏窗口模式等,配置项由HMCL/src/main/java/org/jackhuang/hmcl/setting/GameSettings.java及 GameSettingsPresets.java 管理。
  • 游戏自动安装:HMCL 支持一键安装 Forge、NeoForge、Cleanroom、Fabric、Legacy Fabric、Quilt、LiteLoader 与 OptiFine 等加载器,无需手动放置 JAR 或处理依赖。
  • 模组包建立:可将当前游戏版本连同模组、配置打包为模组包,也支持导入 CurseForge、Modrinth、MultiMC、MCBBS 等格式的模组包(见HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/下的curse/modrinth/multimc/mcbbs/等实现)。
  • 介面客制化:支持主题、背景、字体与 UI 缩放的自定义,相关代码位于HMCL/src/main/java/org/jackhuang/hmcl/theme/ui/main/PersonalizationPage.java

从源码结构看,"游戏自动安装"是 HMCL 最具代表性的能力:HMCLCore/src/main/java/org/jackhuang/hmcl/download/目录下为每种加载器都维护了独立的版本列表与安装任务,例如forge/ForgeInstallTask.javaneoforge/NeoForgeInstallTask.javafabric/FabricInstallTask.javaquilt/QuiltInstallTask.javaliteloader/LiteLoaderInstallTask.javaoptifine/OptiFineInstallTask.javacleanroom/CleanroomInstallTask.javalegacyfabric/LegacyFabricInstallTask.java,它们统一继承自ComponentVersionList/ComponentRemoteVersion抽象体系,保证了各加载器安装流程的一致性与可扩展性。

跨平台支持能力

HMCL 的跨平台能力是其重要卖点。代码层面,平台抽象由HMCLCore/src/main/java/org/jackhuang/hmcl/util/platform/OperatingSystem.java中的枚举定义,覆盖WINDOWSLINUXMACOSFREEBSD四种操作系统,并通过Architecture枚举识别 x86-64、x86、ARM64、ARM32、MIPS64el、RISC-V 64、LoongArch64 等 CPU 架构;Metadata.java中还针对不同平台返回推荐的 JDK 下载指引(见 Metadata.java),印证了其平台适配的精细化。

启动器兼容性

docs/PLATFORM_zh_Hant.md给出了官方维护的启动器兼容矩阵,全文如下:

架构WindowsLinuxmacOSFreeBSD
x86-64✅️ 完整支援 (Windows 7 ~ Windows 11);✅️ 完整支援 (Windows Server 2008 R2 ~ 2025);🕰️ HMCL 3.6 (Windows Vista);🕰️ HMCL 3.6 (Windows Server 2003 ~ 2008)✅️ 完整支援✅️ 完整支援✅ 完整支援
x86🕰️ 有限支援 (Windows 7 ~ Windows 10);🕰️ HMCL 3.6 (Windows XP/Vista)🕰️ 有限支援//
ARM64✅️ 完整支援✅️ 完整支援✅️ 完整支援/
ARM32/🕰️ 有限支援//
MIPS64el/🕰️ 有限支援//
RISC-V 64/✅️ 完整支援//
LoongArch64/✅️ 完整支援 (新世界);🕰️ 有限支援 (旧世界)//

图例说明:

  • ✅️ 完整支援:受到完整支援的平台,HMCL 会尽可能为此平台提供支援。
  • 🕰️ 有限支援:通常是老旧的遗留平台,HMCL 可以运作,但部分功能可能无法使用,且可能为了降低维护成本而放弃部分功能。
  • 🕰️ HMCL 3.6(有限支援):HMCL 主分支不再支援该平台,仅通过 HMCL 3.6 LTS 分支继续提供安全修补与错误修复,不再获得功能更新。
  • /(不支援):尚未支援的平台,未来可能支援。

游戏兼容性

启动器能运行不代表能顺利启动游戏,游戏兼容矩阵如下:

架构WindowsLinuxmacOSFreeBSD
x86-64✅️✅️✅️👌 (Minecraft 1.13~26.2)
x86✅️ (~1.20.4)✅️ (~1.20.4)//
ARM64👌 (Minecraft 1.8~1.18.2);✅ (Minecraft 1.19+)👌 (Minecraft 1.8~26.2)👌 (Minecraft 1.6~1.18.2);✅ (Minecraft 1.19+);✅ (使用 Rosetta 2)
ARM32/👌 (Minecraft 1.8~1.20.1)//
MIPS64el/👌 (Minecraft 1.8~1.20.1)//
RISC-V 64/👌 (Minecraft 1.13~26.2)//
LoongArch64 (新世界)/👌 (Minecraft 1.6~26.2)//
LoongArch64 (旧世界)/👌 (Minecraft 1.6~1.20.1)//
PowerPC-64 (Little-Endian)///
S390x///

图例说明:

  • :官方支援的平台,受 Mojang 官方支援,游戏内问题应直接向 Mojang 回报。
  • 👌:由 HMCL 提供支援、经过测试可正常执行,但可能比全面支援的平台有更多问题;不保证支援 Minecraft 1.6 以下的版本。
  • :低级别支援平台,HMCL 可运行并有基本支援,但尚不能正常启动游戏;如需启动游戏,需通过其他方式获得 LWJGL 等本机库,并在(全域)游戏设定中指定本机库路径。
  • / 不支援:目前无测试设备,若你能协助测试,可通过 Issue 提出支援请求。

陶瓦联机兼容性

HMCL 内置"陶瓦联机"(Terracotta)功能,其状态机与启动逻辑由HMCL/src/main/java/org/jackhuang/hmcl/terracotta/TerracottaManager.java实现,兼容矩阵如下:

架构WindowsLinuxmacOSFreeBSD
x86-64✅️ (Windows 10 ~ Windows 11);✅️ (Windows Server 2016 ~ 2025)✅️✅️✅️
x86////
ARM64✅️✅️✅️/
ARM32////
MIPS64el////
RISC-V 64/✅️//
LoongArch64✅️ (新世界);❌ (旧世界)///

值得注意的是,陶瓦联机需要较为现代的平台(如 Windows 10+、RISC-V 64 与 LoongArch64 新世界),这与它依赖平台网络能力与进程管理的实现方式相符。

下载与获取方式

HMCL 提供多个下载渠道,可根据网络环境选择:

  • HMCL 官方网站:获取正式发布版本与更新信息。
  • GitHub Releases:托管各版本发布产物,包含源码包与可执行文件。
  • CNB Releases:面向中国大陆用户的镜像发布渠道。

此外,HMCL 内置了更新检查机制,更新来源可通过 JVM 参数-Dhmcl.update_source.override=<url>覆盖(默认指向官方网站更新接口,见 Metadata.java),适合企业内部部署或离线分发场景。

源码结构概览

仓库采用 Gradle 多模块构建,settings.gradle.kts定义了以下模块:

  • HMCL:启动器主模块,包含 JavaFX 用户界面(ui/)、设置管理(setting/)、主题系统(theme/)、陶瓦联机(terracotta/)与启动入口(EntryPoint.javaLauncher.java)。
  • HMCLCore:核心业务逻辑,包含下载(download/)、账号认证(auth/)、游戏版本模型(game/)、模组包(modpack/)、任务框架(task/)等与界面无关的纯 Java 实现。
  • HMCLBoot:启动引导模块,负责在运行主程序前完成 JavaFX 依赖补丁与基础环境检查。
  • minecraft/libraries:HMCLTransformerDiscoveryService 与 HMCLMultiMCBootstrap,注入到游戏进程中的辅助库。

EntryPoint.java是程序的启动入口,其main方法依次完成:设置系统代理与 HTTP Agent → 创建 HMCL 数据目录 → 启动日志系统 → 检测 Wine 运行环境 → 处理 macOS 特殊适配 → 检查并修补 JavaFX 依赖 → 进入Launcher.main(args)。这一流程解释了为何 HMCL 能在一个不含 JavaFX 的 JRE 上自行下载依赖并运行。

从源码构建 HMCL

环境需求

构建 HMCL 需要JDK 17(或更高版本),并确保JAVA_HOME环境变量指向符合需求的 JDK。各平台查看JAVA_HOME指向 JDK 版本的方式:

  • Windows(PowerShell)
    PS > & "$env:JAVA_HOME/bin/java.exe" -version
  • Linux/FreeBSD
    > $JAVA_HOME/bin/java -version
  • macOS
    > /usr/libexec/java_home --exec java -version

对应地,Metadata.java中声明了运行期对 Java 的最低要求:MINIMUM_REQUIRED_JAVA_VERSION = 17MINIMUM_SUPPORTED_JAVA_VERSION = 17,推荐版本为 21(见 Metadata.java),构建与运行版本要求保持一致。

获取源码

使用 Git 克隆最新源码:

git clone https://gitcode.com/gh_mirrors/hm/HMCL cd HMCL

也可以从发布页手动下载特定版本的源码包。

构建命令

切换到 HMCL 项目根目录后执行:

./gradlew clean makeExecutables

构建产物位于根目录下的HMCL/build/libs子目录中。makeExecutables任务负责生成可执行包(含 Windows/Linux 启动脚本等),由buildSrc中的 Gradle 插件(org.jackhuang.hmcl.gradle)提供支持。

运行时调试选项与调优

HMCL 提供了一系列内部调试选项(不保证稳定性,可能随时修改或删除,错误使用可能导致行为异常甚至崩溃),用于控制启动器行为。这些选项可通过环境变量JVM 参数设置;若两者同时存在,JVM 参数会覆盖环境变量。完整清单如下:

环境变量JVM 参数功能默认值额外说明
HMCL_JAVA_HOME设置用于开启 HMCL 的 Java仅对 exe/sh 生效
HMCL_JAVA_OPTS设置开启 HMCL 时的默认 JVM 参数仅对 exe/sh 生效
HMCL_FORCE_GPU设置是否强制使用 GPU 加速绘制false
HMCL_ANIMATION_FRAME_RATE设置 HMCL 的动画帧率60
HMCL_LANGUAGE设置 HMCL 的默认语言使用系统默认语言
HMCL_NATIVE_DECORATION-Dhmcl.nativeDecoration=<true/false/auto>指定是否使用系统原生窗口装饰auto
HMCL_UI_SCALE设置 HMCL 的 UI 缩放比例遵循系统当前的缩放比例支持倍数 (1.5)、百分比 (150%) 或 DPI (144dpi)
-Dhmcl.dir=<path>设置 HMCL 的当前数据存放位置./.hmcl
-Dhmcl.home=<path>设置 HMCL 的用户数据存放位置Windows:%APPDATA%\.hmcl;Linux/BSD:$XDG_DATA_HOME/hmcl;macOS:~/Library/Application Support/hmcl
-Dhmcl.self_integrity_check.disable=true检查更新时不检查程序完整性
-Dhmcl.bmclapi.override=<url>设置 BMCLAPI 的 API Roothttps://bmclapi2.bangbang93.com
-Dhmcl.discoapi.override=<url>设置 foojay Disco API 的 API Roothttps://api.foojay.io/disco/v3.0
HMCL_FONT-Dhmcl.font.override=<font family>设置 HMCL 默认字体使用系统默认字体
-Dhmcl.update_source.override=<url>设置 HMCL 更新来源https://hmcl.huangyuhui.net/api/update_link
-Dhmcl.authlibinjector.location=<path>设置 authlib-injector JAR 档的位置使用 HMCL 内置的 authlib-injector
-Dhmcl.openjfx.repo=<maven repository url>添加用于下载 OpenJFX 的自定义 Maven 仓库
-Dhmcl.native.encoding=<encoding>设置原生编码使用系统的本机编码
-Dhmcl.microsoft.auth.id=<App ID>设置 Microsoft OAuth App ID使用 HMCL 内置的 Microsoft OAuth App ID
-Dhmcl.curseforge.apikey=<Api Key>设置 CurseForge API 密钥使用 HMCL 内置的 CurseForge API 密钥
-Dhmcl.native.backend=<auto/jna/none>设置 HMCL 使用的本机后端auto
-Dhmcl.hardware.fastfetch=<true/false>设置是否使用 fastfetch 检测硬件信息true

这些选项与源码中的实现一一对应:例如-Dhmcl.dir/-Dhmcl.home在 Metadata.java 中解析,决定启动器的数据与用户目录;-Dhmcl.bmclapi.override在 DownloadProviders.java 中用于构造 BMCLAPI 下载提供者;-Dhmcl.update_source.override则对应Metadata.HMCL_UPDATE_URL

下载源切换

HMCL 支持在"官方源"与"镜像源(BMCLAPI)"之间切换:DownloadProviders.java中的createDownloadProvider根据DownloadSourceDEFAULT/OFFICIAL/MIRROR)构造候选提供者列表,例如DEFAULT在境内网络环境优先使用 BMCLAPI,境外则优先使用 Mojang 官方源;同时init()会监听下载线程数与下载源设置的变化并即时生效。这一设计兼顾了不同地区用户的下载速度与稳定性。

参与贡献

HMCL 是一个由社群驱动的开源项目,欢迎任何人参与贡献代码或提出建议。参与方式包括:

  • 通过建立Issue回报 Bug 或提出功能请求(包含 Bug 报告与功能建议模板)。
  • 通过 Fork 仓库并提交Pull Request贡献代码。

在参与贡献前,请阅读 贡献指南,其中包含:

  • 如何从源码构建并开启 HMCL
  • 通过调试选项调整 HMCL 的行为

自 2015 年以来,HMCL 已有超过 120 位贡献者参与其中。仓库的buildSrc中还集成了检查风格(Checkstyle,见 checkstyle.xml)与许可证头校验(license-header.txt)等自动化质量保障,贡献代码时需遵循相应规范。

开源协议与附加条款

HMCL 在GPLv3开源协议下发布,同时附有以下附加条款(依据 GPLv3 第七条的授权):

  1. 修改版本须改名:当你分发该程序的修改版本时,必须以合理方式修改程序的名称或版本号,以示其与原始版本不同(依据 GPLv3, 7(c))。程序的名称及版本号可在 Metadata.java(NAMEFULL_NAMEVERSION常量)处修改。
  2. 不得移除版权声明:你不得移除该程序所显示的版权声明(依据 GPLv3, 7(b))。

完整的协议文本位于仓库根目录的 LICENSE,其中的附加条款部分(对应 GPLv3 第 7 条第 (b)、(c) 款)是所有分发者都必须遵守的合规要求。

结语

HMCL 作为一个多功能、跨平台的 Minecraft 启动器,其价值不仅体现在开箱即用的体验上,更体现在清晰的多模块架构、完善的平台抽象与可配置的下载/调试体系中。通过阅读 繁体中文 README、平台支援状态 与 贡献指南,再结合本文对源码实现的分析,无论是普通玩家、希望二次开发的贡献者,还是研究启动器实现原理的开发者,都能快速定位到所需的信息与入口。

【免费下载链接】HMCLA Minecraft Launcher which is multi-functional, cross-platform and popular项目地址: https://gitcode.com/gh_mirrors/hm/HMCL

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/24 15:34:54

实时仿真机SimuDev

1&#xff09;产品简介SimuDev实时仿真机产品系列&#xff0c;适用于微秒级步长仿真及测试需求的应用场合。SimuDev是基于多核CPUFPGA架构的高性能实时仿真平台&#xff0c;方便与实际设备连接进行快速原型验证和硬件在环测试。2&#xff09;技术特点提供RS232、RS422、RS485各…

作者头像 李华
网站建设 2026/9/24 15:34:29

工业振动传感器选型12个生死问题:温度、冲击、EMI全解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/24 15:34:14

手撸 SpringBoot 脚手架:用 FreeMarker 模板引擎构建企业级工程框架

文档教程后端 【免费下载链接】CodeGuide :books: 本代码库是作者小傅哥多年从事一线互联网 Java 开发的学习历程技术汇总&#xff0c;旨在为大家提供一个清晰详细的学习教程&#xff0c;侧重点更倾向编写Java核心内容。如果本仓库能为您提供帮助&#xff0c;请给予支持(关注、…

作者头像 李华