HEU 专用 HMCL 启动器

哈尔滨工程大学(HEU)社区维护 · 基于开源项目 HMCL 二次开发

HEU 专用 HMCL 启动器

给 HEU 社区的人用的 Minecraft 启动器:装上、登录社区账号、点开始游戏。 账号、服务器广场、联机大厅都接在社区平台上,不再需要各自维护一套地址和身份。

Windows / macOS / Linux 同一个 .jar · 需要已安装 Java 21(最低 17) · GPLv3 开源

HEU 专用 HMCL 启动器 v1.0.3 的主界面:标题栏左侧写着自己的名字,左边是账户、游戏、社区、通用四组功能入口,右侧是开始游戏按钮。
启动器主界面(运行中的 v1.0.3)。左侧每一行都是一个功能入口,装好游戏后右下角就是进游戏的按钮。

这一版是什么

下面每个数字都可以核对,来源写在每一项后面。启动器自己也会给出同一份信息 —— 它启动时向更新通道要的就是这一版。

HEU-Launcher-1.0.3.jar
版本
1.0.3
文件大小
22,675,142 字节(约 21.6 MiB)
SHA-1
fc9ee8a70a9801ee56e60ae21823acfb6a86ea50
需要 Java
21 或更高版本(最低 17)
平台
Windows / macOS / Linux(同一个 jar)
许可证
GNU GPLv3
下载页
版本、大小与哈希都在那里

来源:更新通道 /api/update_link?channel=stable 发布的就是这个文件;大小与 SHA-1 由本站在生成这一页时下载该文件后亲自算出, 与通道自己声明的值不一致就会生成失败。Java 版本取自启动器源码里的常量。

发布动态

每一个版本发布时改了什么。正文与更新日志同源 —— 启动器弹出「有新版本」时显示的也是那份正文。

全部发布动态 — 每个版本的日期、改动,以及更新通道上那个文件的 SHA-1

为什么会有这么一个构建

上游 HMCL 是一个通用启动器,它做的事情是「让任何人玩任何版本的 Minecraft」。 它不做的事情是「知道 HEU 的服务器在哪、你是谁、你和谁在同一个房间里」—— 这些事情上游没有理由替我们做,所以它们在这一版里。

01

一个账号,进服和进游戏都用它

HEU 社区账号就是这里的身份。登录一次,启动器用它启动游戏、用它进社区服, 不需要再单独维护一套游戏内身份,也不需要每次进服前手动填名字。

02

社区自己的服务器,广场上直接点进去

服务器广场列出社区里公开的服务器,带实测延迟、版本、标签和在线人数。 列表由社区自己维护,不掺默认广告服。

03

没有公网 IP 也能和朋友联机

把自己电脑上的世界开成一个房间,朋友凭房间号进来。 不用端口映射,也不用买一台服务器。

04

修好了的东西能送到你手上

这一版有只属于自己的更新通道。以前没有 —— 于是修好的东西永远送不到已经装了启动器的人手里。

先说清楚:这是 HEU 社区的构建,不是原版 HMCL

原版 HMCL 由 huangyuhui(huanghongxun) 与贡献者开发维护。本项目是它的派生版本, 不是官方发布,也不代表上游,更不代表哈尔滨工程大学官方。

因此:启动器本身的问题请找 HEU 社区,不要去找上游 HMCL 的开发者。 上游不为这个构建负责,也没有参与它。

这件事不是免责声明里的一句话,它写在启动器里能够被看到的地方: 用户协议帮助页、以及「设置 → 关于」页的鸣谢列表。 源头作者与上游贡献者在鸣谢中逐条列出,并注明各自做了什么。

下面这张就是「设置 → 关于」页。右侧是鸣谢名单;第一位的 huanghongxun 就是上游 HMCL 的作者, 每一行下面都写着这个人做了什么。

启动器「设置 → 关于」页:左侧是设置分组,右侧上方是 HEU 专用 HMCL 启动器,下方是鸣谢列表,逐条列出上游 HMCL 的作者与贡献者及其贡献。
启动器「设置 → 关于」页的鸣谢列表。截图取自 v1.0.2:这一页的内容在 v1.0.3 里没有改动, 所以图上版本号那一行显示的是当时的版本。这张旧图被原样保留,而不是找一张看着更新的图来代替 —— 原因写在下面的关于截图的说明里。

为什么是「派生」而不是「拿走代码另起一个名字」

因为它就是 HMCL:同一套代码、同一套启动游戏的逻辑、同一套排查问题的方式。 改掉名字会让人以为这是一个无关的新启动器,从而把本该回到上游的问题问到社区来, 或者反过来 —— 把社区加的东西当成上游的行为去要求上游。 所以它保留 HMCL 的名字作为自己的来源,只在名字前面加上自己的前缀。

许可证是继承来的:上游 HMCL 以 GNU 通用公共许可证第 3 版(GPLv3)发布, 派生物同样适用 GPLv3。这是它实际适用的许可条款,不是本项目另外拟定的协议。 完整条款见 GNU 官方网站, 这里也留存一份

它能做什么,以及每一件的代价

下面每一节都写两件事:它做什么,以及它在什么情况下会让付出代价。 只写前一半的页面很好看,但对要按下「开始游戏」的人没有用。

账户

HEU 账号,以及把正版账号绑上去

在浏览器里登录 HEU 社区账号,登录过程不经过启动器 —— 启动器拿不到也不需要你的密码。 这个账号同时用于启动游戏和进入 HEU 服务器。

已经买了 Minecraft 的同学可以把微软(正版)账号绑定到 HEU 账号上, 此后以正版身份进服,游戏内名字由 Mojang 决定;也可以随时解绑,解绑后身份精确还原。

绑定会改变你的 UUID。Minecraft 服务器把背包、进度、ops、白名单等 所有玩家数据都按 UUID 存放,所以绑定时那些服务器会把你当成一个全新玩家 —— 启动器在动手之前会把这句话原样告诉你。刚注册还没进过服时绑定没有这个代价。

启动器账户列表与「添加 HEU 账号」对话框,对话框内是「使用 HEU 账号登录」按钮,并写明登录在浏览器中完成。
添加 HEU 账号。登录在浏览器里完成,启动器不接触你的密码。

服务器广场

社区里正在开的服务器,点一行就进去

名称、地址、游戏版本、标签和当前在线人数都来自社区平台,延迟是启动器自己实测出来的, 不是服务器自己填的数字。

列表是社区自己维护的:想把自己的服务器挂上去,走平台上的入驻申请, 由管理员审核后才会出现在这里。

在线人数和延迟都是那一刻测到的值,不会在页面上跳动。 下面这张图同样是一次快照。

启动器服务器广场页面:搜索框、服务器总数,以及一条服务器条目,显示名称、地址、版本、标签与在线人数。
服务器广场。截图当时的快照:在线人数显示 在线 3/20, 那是截图这一刻的数字,不会随实际人数更新。截图取自 v1.0.2,这一页在 v1.0.3 里没有改动。

联机大厅

把自己电脑上的世界开成一个房间

不用公网 IP,不用在路由器上开端口。默认走陶瓦联机(Terracotta)的点对点直连, 延迟更低、也不占用社区服务器的带宽;陶瓦不可用时自动回落到社区自建的中继。

房间可以公开给大厅里的所有人,也可以只把房间号给朋友 —— 这两件事在创建房间时选。

房间号长什么样取决于走哪条路:默认的陶瓦直连用的就是陶瓦自己的邀请码,原样输入; 回落到社区中继时,由社区服务生成一个 6 位的码(字母表去掉了 0/O、1/I/L 这类容易看错的字符)。 所以两种情况下看到的房间号并不相同,长度也可能不一样,这是正常的。

房间号本身就是加入凭证,拿着房间号的人都能进。 所以不要把联机大厅当成私密房间用;要私密就取消「公开到联机大厅」, 但那时你仍然要靠别的方式把房间号给对人。
回落到中继时,游戏流量会经过社区服务器,占用的是社区这台机器的带宽。

启动器联机大厅页面:上方是正在开放的房间列表与筛选框,下方是「创建房间」表单,含房间名、标签、公开到联机大厅与使用陶瓦联机两个勾选项。
联机大厅与创建房间(v1.0.3)。截图当时大厅里没有人开放世界, 所以上面那张列表是空的 —— 这是启动器在那种情况下的真实样子。

游戏本体

装游戏、装整合包、装模组,都还是 HMCL 那一套

下载页里有正式版、快照、远古版本,也有整合包、模组、资源包、光影和世界。 这些功能来自上游 HMCL,本项目一行没有改 —— 它们的用法和排错方式, 看上游文档比看这里准。

版本列表、整合包安装、Java 管理、游戏目录切换这些入口都还在原来的位置上,一个没少。

这一节讲的东西拍出来就是上游 HMCL 的界面,所以下面这张图拍的是在这一层之上加的东西: 游戏文件夹的管理。刚装好启动器、还没装游戏时看到的就是它。

启动器「实例列表」页:左侧是游戏文件夹列表,含当前文件夹与官方启动器文件夹,右侧提示没有已安装的游戏,顶部给出「安装新游戏」「安装整合包」两个入口。
实例列表(v1.0.3)。刚装好启动器、还没有装游戏时看到的就是这一页 —— 这里也是添加第二个游戏文件夹的地方。

更新

自动更新,而且只更新成 HEU 自己的版本

启动器启动时会检查 HEU 自己的更新通道,有新版会提示你升级,下载前校验 SHA-1。 升级提示里显示的正文就是更新日志里对应的那一段。

每个构建的 jar 里都带一个发布者标记(hmcl.publisher=heumc), 启动器只接受带同样标记的构建来更新自己。

这意味着两件事,都是刻意的:它不会把你更新成上游原版 HMCL, 也不会安装来源不明的 jar。如果你更想用原版,请直接去 上游官网下载, 而不是在两者之间来回升级。

HEU 专用 HMCL 启动器 v1.0.2 的主界面,标题栏里的版本号与左侧的四组功能入口。
主界面(v1.0.2,用作对照)。 1.0.3 的界面与此相同 —— 那一版改的是发布流程和域名,界面一行没动, 所以这张图上写的版本号是 v1.0.2。

这个页面上没有的东西,以及为什么

一个产品官网通常会放一些别的数字。这里没有放,不是因为忘了:

HEU 社区是什么,这个启动器是给谁用的

HEU 是哈尔滨工程大学的英文缩写。这里的「社区」指的是围绕学校 Minecraft 服务器形成的这群人: 在校学生、校友,以及被同学带进来的朋友。社区自己维护服务器、自己写工具、自己管秩序。

社区平台在 h5.heumc.kuocai.cn: 网页版的社区、账号与身份相关的操作都在那里,不装启动器也能用

这个启动器是给这些人用的:你有一个 HEU 社区账号,想少折腾地进服玩, 那么装上它、登录、点开始游戏就够了。如果你只是想要一个通用的 Minecraft 启动器, 没有兴趣加入某个社区,那么原版 HMCL 或别的启动器可能更合适 —— 这个构建里为社区加的东西对你没有用,而它的更新通道也只服务自己。

社区平台上的学生认证

社区需要确认「你确实是 HEU 的人」时,走的是学生证认证流程,在网页上完成,不在启动器里: 上传学生证照片、填学校和学号、提交,然后等管理员审核。 每条记录的状态与驳回理由都能自己查看,也可以撤回。

前往学生认证页面 需要先登录社区账号。你要上传的是自己的证件照片,提交前请先读页面上的隐私说明与照片要求。

下载之前:运行要求

这是一个 .jar 文件,三个平台共用同一个。它需要你自己已经装好 Java—— 启动器不会替你装。

必须
Java 21
最低 Java 17 也能启动,但 21 是这个项目实际使用的版本。 命令行执行 java -version,第一行里应出现 21
系统
Windows / macOS / Linux
同一个 jar,不需要为不同系统下载不同文件。 社区里的联机功能在三个平台上都可用。
磁盘
启动器约 22 MB
游戏本体和整合包另外算,那些是几 GB 级别, 放在你自己选定的游戏文件夹里。
账号
HEU 社区账号
社区功能需要它。没有账号时启动器仍然可以当普通 HMCL 用来玩单机, 但社区那一栏是空的。

杀毒软件可能删掉 frpc.exe。 联机大厅的中继需要一个叫 frpc.exe 的程序,它的行为(建立隧道)和某些恶意软件相似, 所以部分杀毒软件会直接隔离它。被删掉时,表现是联机大厅的中继不可用, 而直连(陶瓦)通常仍然可用。帮助页里写了这种情况怎么处理。

这一条写在这里而不是藏在文档里,是因为它看起来像「启动器坏了」,实际上是杀毒软件在正常工作。

怎么开始

  1. 确认电脑上装了 Java 21(最低 Java 17)。命令行执行 java -version,第一行里应出现 21
  2. 下载页.jar 文件,放在一个空目录里。
  3. 双击它;双击没反应就在该目录开一个命令行执行 java -jar HEU-Launcher-1.0.3.jar,报错会直接打在窗口里。
  4. 启动器里点「账户 → 添加账户 → HEU 账号」,在打开的浏览器页面里登录社区账号。
  5. 文档的指引下装好游戏版本,然后点「开始游戏」。

更细的步骤、常见报错和排查方法都在使用文档里; 文档和启动器的帮助页是同一份内容。

遇到问题找谁

关于这一页上的截图

这一页上的每一张图都是真实运行中的启动器窗口截下来的,没有一张是画出来的效果图, 也没有一张里面是编造的界面。这件事值得单独说明,因为截图是最容易被悄悄加工的地方。

许可与源代码

本项目以 GNU 通用公共许可证第 3 版(GPLv3)发布 —— 这是它实际适用的许可条款, 不是本项目另外拟定的协议。完整条款见 GNU 官方网站, 同时也在这里留存一份。

上游 HMCL 的源代码在 github.com/HMCL-dev/HMCL。 上游的文档在 docs.hmcl.net —— 装游戏、管整合包、下模组这些通用功能的说明在那里,不在本站。

鸣谢

这个启动器的绝大部分是别人写的。上游 HMCL 的作者与贡献者、以及本项目依赖的各个开源项目, 是它能够存在的原因;启动器的「设置 → 关于」页里列了其中一部分,并注明各自做了什么。

如果你在这里发现了一个问题,先想一想它属于哪一层:社区加的、还是上游就有的。 社区加的那一层我们能改;上游那一层,正确做法是把问题交给上游, 而不是在这个派生物里绕过去。