【免费下载链接】MojoLauncher
A Minecraft: Java Edition launcher, based on PojavLauncher
MojoLauncher 是一款运行在 Android 上的 Minecraft: Java Edition 启动器,其核心是实例(Instance)系统:每个实例是一个独立目录,拥有各自的版本号、世界存档、模组和 Java 运行时设置。本指南带你从零理解实例原理,学会创建、编辑和整理多个 Minecraft 版本,让手机上的 10+ 个版本井井有条。
先搞懂:什么是 MojoLauncher 实例?
早期启动器普遍使用"配置文件(Profile)"来区分版本,所有世界数据混在同一个游戏目录里,版本一多就容易互相污染。MojoLauncher 的 README.md 路线图中明确列出了Instance system in favor of profiles(用实例系统取代配置文件),并且已完成。
简单来说,一个实例就是一套"自包含的游戏环境":
| 组成 | 说明 |
|---|---|
| 版本(versionId) | 该实例要运行的 Minecraft 版本,如1.12.2、latest_release |
| 游戏目录 | 存放世界存档、配置文件、mods 文件夹 |
| 图标(icon.webp) | 主界面上区分实例用的小图标 |
| 运行时设置 | Java 运行时(Runtime)、渲染器、JVM 参数、触控布局 |
实例的元数据由 Instance.java 定义,包含name、versionId、icon、renderer、jvmArgs、selectedRuntime、controlLayout、sharedData等字段,每个字段都可以按实例独立设置——这正是"多版本不混乱"的关键。
实例文件结构:你的数据存在哪里
所有实例统一存放在游戏主目录下的instances/文件夹中,由 Instances.java 统一管理:
游戏目录/ ├── instances/ │ ├── <UUID>/ ← 一个实例一个文件夹 │ │ ├── mojo_instance.json ← 实例元数据(名称、版本、设置) │ │ ├── icon.webp ← 实例图标 │ │ └── ...(世界、mods、配置) │ └── <UUID>/ └── shared_dir/ ← 共享游戏数据目录几个值得注意的机制:
- 目录名是 UUID:新建实例时会随机生成 UUID 作为文件夹名(见 findNewInstanceRoot),因此不同实例永不重名冲突,你起的自定义名字只用于显示。
- 元数据即
mojo_instance.json:启动器扫描instances/目录时,只认含有该文件的文件夹(见 filterInstanceDirectories),没有它的目录不会被识别为实例。 - 首次启动自动建实例:第一次打开启动器时,会自动创建一个默认实例,版本为
1.12.2并开启共享数据(见 createFirstTimeInstance),所以你不会面对一个空列表。
创建新实例:从原版到模组版
在主菜单点击"创建新实例"后,MojoLauncher 会引导你选择实例类型,入口逻辑在 ProfileTypeSelectFragment.java:
创建原版实例(Create vanilla instance)适用于纯净游玩。新建的默认实例会设置为
latest_release(最新发布版)并开启共享数据(见 createDefaultInstance)。创建模组加载器实例选择 Forge、NeoForge、Fabric、Quilt 或 OptiFine,界面会列出对应版本供选择。例如 Fabric 实例的创建代码在 FabriclikeInstallFragment.java;Forge/NeoForge 的
.jar安装程序会由 InstanceInstaller.java 下载并执行,安装完成后再自动把实例版本指向对应游戏版本(见 postInstallCheck)。导入模组包实例支持 mrpack / CurseForge zip 模组包导入,导入时会创建带模组包名前缀的实例(见 ModpackInstaller.java),方便日后识别。
编辑实例:版本、Java 运行时、渲染器一键切换
长按或进入实例编辑页(InstanceEditorFragment.java)后,你可以为单个实例覆盖以下全局设置,而不影响其他实例:
- 实例名称与图标:点击图标可裁剪一张自定义图片,多版本管理时一眼可辨;
- 游戏版本:通过版本选择对话框指定,也支持"最新发布 / 最新快照";
- Java 运行时:MojoLauncher 支持多运行时(Multi-RT),老版本(如 1.12)需要 Java 8,新版本需要更高版本,可以为每个实例单独指定(见 multirt/);
- 渲染器:例如 Holy GL4ES(全版本可用、速度快)或 Zink(Vulkan),选项来自 RendererCache;
- JVM 参数:支持三种合并模式——完全替换、全局参数在前、实例参数在前(见 getLaunchArgs),适合给特定实例加内存参数;
- 触控按键布局:可以为不同版本的游戏使用不同的虚拟按键方案。
如果某项留空,实例会自动回退到全局默认值,不必每个实例都填满。
让 10+ 版本井井有序的 3 个实用技巧
善用"共享数据"开关实例编辑器里有"Shared data"复选框(字符串定义见 strings.xml):
- 开启后,世界存档统一存放在
shared_dir/共享目录(见 getGameDirectory),不同版本/模组版的实例可以共用同一个世界; - 关闭后,世界和 mods 都锁在各自实例目录里,改模组合包也不会污染别的环境。 经验法则:同版本的纯净 + 模组版开共享;不同版本或实验性模组组合包关共享。
- 开启后,世界存档统一存放在
给实例起可读的名字并换图标底层目录名是 UUID,显示名才是你每天看的。建议用"版本 + 用途"命名,例如
1.20.1-整合包、1.12.2-老服务器,再配上不同图标,主菜单立刻清晰。果断删除无用实例编辑页的删除按钮会先弹出确认对话框:"这将永久删除实例目录中的整个世界、模组和资源,且无法撤销"(见 instance_delete_confirmation)。确认删除时,removeInstance 会移除整个实例目录——注意开启共享数据的实例只删配置与 mods,世界仍在共享目录中。
常见问题(FAQ)
Q:为什么我创建实例后列表里看不到?启动器只识别包含mojo_instance.json的目录,手动在文件管理器里建空文件夹是无效的,请通过启动器内界面创建。
Q:切换实例需要重新下载游戏吗?会复用已下载的版本文件,但不同版本之间的依赖库(libraries)会分别下载;实例只是"指向"版本并携带独立设置,并非把整个游戏复制一份。
Q:老版本(1.12 及更早)能跑吗?可以。MojoLauncher 支持从 rd-132211 到最新快照的几乎所有版本,老版本通过为实例指定对应的 Java 运行时(Multi-RT 功能)解决兼容性问题。
小结
MojoLauncher 的实例系统把"一个版本 + 一套设置 + 一块独立数据区"打包成最小管理单元:创建实例隔离环境、编辑实例定制版本与运行时、共享数据开关决定世界是否互通。掌握这套组合拳,你在手机上同时运行 10 个以上 Minecraft 版本也毫不混乱。
- 实例核心逻辑:instances/
- 实例编辑界面:InstanceEditorFragment.java
- 多运行时管理:multirt/
- 项目说明与路线图:README.md
【免费下载链接】MojoLauncher
A Minecraft: Java Edition launcher, based on PojavLauncher
相关推荐
告别版本混乱:Bedrock Launcher 让 Minecraft 基岩版管理如此简单
还在为每次切换Minecraft版本而烦恼吗?是否曾经因为存档丢失而痛心不已?现在,一款名为Bedrock Launcher的开源工具将彻底解决这些困扰,让你真
桌面应用游戏开发告别版本混乱:DolphinScheduler工作流与实例版本管理实战指南
告别版本混乱:DolphinScheduler工作流与实例版本管理实战指南 你是否曾因工作流定义被误改而导致调度失败?是否在排查问题时难以追溯历史版本?本文将详
任务调度数据编排工作流自动化后端大数据告别版本混乱:nvm个性化Node.js版本管理指南
告别版本混乱:nvm个性化Node.js版本管理指南 作为开发者,你是否曾因不同项目需要不同Node.js版本而抓狂?是否经历过"这个包只支持Node 14"却
开发工具CLI
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考