用 AI 做了一个 Minecraft 启动器,圆了我刚入行时的梦。
说来感慨,当初正是因为想写 Minecraft 启动器和模组,我才踏入了计算机这个行业。说 MC 改变了我的人生轨迹,一点也不为过。
刚入行那会儿,还没有 AI,前端也远没有今天这么多自动化工具。一个个人开发者想独立做出一款完整的桌面软件,每一步都步履维艰。
时代越来越进步,记忆越来越模糊。而现在,我们有了 AI——不再需要精通每一个技术栈,几句话就能完成过去需要大量时间才能做完的工作。虽然如今到处都在讨论"AI 替代""AI 取代",但对我而言,AI 是实现想法的工具:它能帮我圆年少时的梦,也能陪我做想做的事情。
其实早在我刚入行的时候,各种自动化工具就已经在悄然涌现,计算机行业从未停止过"工具替代人力"的进程,AI 只是让这个进程走得快了一些。AI 永远是工具,重要的从来都是使用工具的人。如今,我能用它完成过去一个人难以企及的工作,也有底气去尝试更多不可思议的事。
Coral Launcher 就是在这样的背景下诞生的——这是我的第一个 AI 辅助开发项目,一款使用 Tauri 2、React、TypeScript 和 Rust 构建的轻量级 Minecraft Java 版启动器。
这是一个桌面客户端,而非网站。React 仅作为界面层渲染在 Tauri 的原生 WebView 窗口中;打包后的 Windows 版本生成的是可直接双击运行的标准 .exe 文件。
- 从 BMCLAPI 获取 Minecraft 版本清单,失败时回退到 Mojang/Piston 元数据源。
- 下载选定版本的清单、客户端 jar、类库、原生库、资源索引及资源文件,支持重试、镜像回退、大小与 SHA1 校验,以及并行的类库和资源下载(类库 8 并发,资源 24 并发)。
- 将原生库解压到对应版本目录中。
- 构建并启动 Java 命令行,支持 Microsoft 认证或离线模式的玩家数据。
- Microsoft 设备码登录:无需手动输入 Client ID,支持 refresh token 会话恢复、登出、Xbox Live / XSTS / Minecraft Services 认证、游戏资格检查及角色信息查询。
- 离线模式:基于 OfflinePlayer 规范的 UUID 生成,支持本地单人游戏或离线服务器。
- Modrinth 集成:按游戏版本和加载器(Fabric / Forge / Quilt / NeoForge)搜索模组,一键下载到实例的
mods目录。 - 提供浏览器预览模式,方便在 Tauri 之外进行 UI 开发调试。
Tauri 使用系统自带的 WebView,而非捆绑 Chromium,同时为下载、校验、解压和进程启动等工作提供了 Rust 后端。这使得 Windows 应用体积小巧,更接近原生 exe 的体验,也为后续的 Linux 移植铺平了道路。
| 层 | 技术 |
|---|---|
| 桌面框架 | Tauri 2 |
| 前端 | React 18 + TypeScript 5 + Vite 5 |
| 后端 | Rust(reqwest / tokio / sha1 / md5 / zip) |
| WebView | Microsoft Edge WebView2(Windows 系统自带) |
| 数据源 | BMCLAPI 镜像 + Mojang 官方回退 |
| 模组平台 | Modrinth API v2 |
# 安装依赖
npm install
# 启动桌面开发模式
npm run dev:desktop如果仅需预览 Web UI 布局(不含后端功能):
npm run dev:web注意:Web 预览模式下无法下载 Minecraft、进行认证、安装模组或启动 Java——这些操作都依赖 Tauri/Rust 桌面后端。
npm run check:win构建需要 Microsoft C++ Build Tools 以及 Windows SDK,因为 Rust 的 MSVC 目标和 Tauri 的 Windows 资源编译需要 link.exe 等工具。
npm run build:exe构建成功后,exe 生成于项目根目录 coral-launcher.exe,同时也保存在 src-tauri\target\release\coral-launcher.exe。
直接生成的 exe 使用系统自带的 Microsoft Edge WebView2 运行时。目前大多数 Windows 系统已预装该运行时;对于较旧的 Windows 系统,请使用安装包构建方式,以便在安装过程中处理 WebView2 的安装。
npm run build:installer在构建前将 logo.png 或 logo.ico 放在项目根目录即可。构建脚本会自动将其复制到 Web UI 资源中,并用于 Windows 可执行文件的图标。
启动器默认使用内置的公共 Microsoft Client ID,通过 Microsoft 设备码流程请求 XboxLive.signin offline_access 权限。如需使用自定义应用注册,请在构建前设置环境变量:
$env:CORAL_MS_CLIENT_ID = "your-client-id"登录成功后,启动器会将 Minecraft 会话保存在应用数据目录下,以便下次启动时自动恢复。使用账号页面的刷新按钮可续期 Microsoft / Minecraft 令牌,点击登出则会删除本地会话文件。
| 系统 | 数据路径 |
|---|---|
| Windows | %APPDATA%\CoralLauncher\minecraft |
| Linux | ~/.local/share/CoralLauncher/minecraft |
已保存的账号会话与数据目录同级:Windows 上位于 %APPDATA%\CoralLauncher\minecraft-account.json。
- Minecraft Version Manifest
- BMCLAPI Minecraft 镜像
- Microsoft 设备码认证
- PCL 下载实现参考
- PCL 网络重试/检查参考
- Tauri 架构及体积优势说明
- Modrinth 搜索 API
- CurseForge API(预留集成)
- 添加 Fabric / Quilt / Forge / NeoForge 加载器安装功能。
- 将 refresh token 迁移到操作系统密钥链或 Tauri Stronghold,替代本地 JSON 文件存储。
- Java 运行时自动发现与下载(按 Mojang 声明的 Java 大版本匹配)。
- 并行下载支持断点续传,并提供按文件组细分的下载进度。
本项目采用 MIT License。