像飞一样启动Minecraft。
English / 简体中文
- 基于 .NET 6 开发,支持跨平台。
- 从最古老到最新的 Minecraft,都可以启动。当然也可以启动它们的 Forge, OptiFine, Liteload 以及 Fabric。
- 灵活轻快拓展性好。
- 可以自定义 OAuth 的客户端id(client id)和重定向链接(redirect url)。
- 支持BmclApi和Mcbbs源,对中国用户下载友好。
- 注释(相对来说)比较全面。
- 你还可以自己去发现更多好康的。
康康这个
- MoudleLauncher 现在不会、以后也不会支持各类 Mod 加载器的自动安装。
- 虽然实现一个内置下载器很简单,但是这会违背灵活性和可拓展性,所以没有这个库没有任何内置的下载引擎。
这里只是简单的示例,很多基础知识不会详细地说明,如果你一头雾水,请去看 文档 来获得更详细的说明。
- 用 Nuget 安装:
- IDE 的包管理页面
- Nuget Package Manger:
Install-Package ModuleLauncher.Re
- .NET CLI:
dotnet add package ModuleLauncher.Re
- 或者把这个仓库下载下来,然后自己编译
这里假设你已经有了一个 .minecraft
目录,以及不要觉得下面的代码很多,其实真正有效的代码不到10行。
// 你想要启动的版本
var version = "<version>";
// 用 .minecraft 的路径来初始化一个 MinecraftResolver 实例
var minecraftResolver = new MinecraftResolver(rootPath);
// 用 Minecraft id (version) 来获取一个 MinecraftEntry 实例
// MinecraftEntry 差不多是这个库里最重要的东西
var minecraft = minecraftResolver.GetMinecraft(version);
// 用方法链的方式启动 Minecraft
// 除了要启动的版本名称之外,启动 Minecraft 只需要两个值
// player: 离线玩家的用户名
// (注意这里是一个 string 对象被隐式转换成了 AuthenticateResult 对象)
// java: java 可执行文件的路径
var process = await minecraft.WithAuthentication("<player>")
.WithJava(@"<java>")
.LaunchAsync();
启动方法 LaunchAsync
返回的是一个 Process
实例,可以对它进行一些操作。
// 读 Minecraft 的启动输出信息
// 这里的 ReadOutputLine 和 IsNullOrEmpty 是 Manganese 这个库提供的拓展方法
while (!process.ReadOutputLine().IsNullOrEmpty())
{
Console.WriteLine(process.ReadOutputLine());
}
- 你可以 fork 这个仓库然后提交 Pull Request 到
new
分支。注意一定得是new
分支。 - 开一个 issue。
觉得文档不太行?
- Newtonsoft.Json: 非常强大的JSON操作库。
- Flurl.Http:这个 HTTP 库是真的丝滑。
- Manganese:我的破玩意。
- JetBrains:提供了免费的 IDE。
- Google 和 Stack Overflow.