Skip to content

Latest commit

 

History

History
135 lines (97 loc) · 4.35 KB

README-chs.md

File metadata and controls

135 lines (97 loc) · 4.35 KB

CmlLib.Core

Minecraft 启动器库

Nuget Badge GitHub license Codacy Badge

Discord

CmlLib.Core 是.NET上的一个Minecraft启动库
它支持所有版本,包括Forge。

特点

  • 异步 API
  • Mojang 认证
  • 微软 Xbox Live 登录
  • 从Mojang文件服务器下载游戏文件
  • 启动所有版本 (最高测试到1.18.2)
  • 启动Forge, Optifine, FabricMC, LiteLoader或者其他任何自定义的版本。
  • 安装Java运行时
  • 安装LiteLoader、FabricMC。
  • 自定义参数启动 (服务器直连, 屏幕分辨率)
  • 跨平台 (Windows, Linux, macOS)

去Wiki查看所有特性

安装

在Nuget上安装 CmlLib.Core

或从 Releases 中下载DLL文件,并将其引用至你的项目。

在源代码的顶端写入下列语句:

using CmlLib.Core;
using CmlLib.Core.Auth;

文档

自定义启动器具有许多特性,查看文档了解所有特性:
官方文档: wiki

快速开始

微软 Xbox 登录

CmlLib.Core.Auth.Microsoft
文档

Mojang 登录

登录过程

var login = new MLogin();
var response = login.TryAutoLogin();

if (!response.IsSuccess) // failed to automatically log in
{
    var email = Console.ReadLine();
    var pw = Console.ReadLine();
    response = login.Authenticate(email, pw);

    if (!response.IsSuccess)
         throw new Exception(response.Result.ToString()); // failed to log in
}

// This session variable is the result of logging in and is used in MLaunchOption, in the Launch part below.
var session = response.Session;

离线登录

// This session variable is the result of logging in and is used in MLaunchOption, in the Launch part below.
var session = MSession.GetOfflineSession("USERNAME");

启动

// increase connection limit to fast download
System.Net.ServicePointManager.DefaultConnectionLimit = 256;

//var path = new MinecraftPath("game_directory_path");
var path = new MinecraftPath(); // use default directory

var launcher = new CMLauncher(path);

// show launch progress to console
launcher.FileChanged += (e) =>
{
    Console.WriteLine("[{0}] {1} - {2}/{3}", e.FileKind.ToString(), e.FileName, e.ProgressedFileCount, e.TotalFileCount);
};
launcher.ProgressChanged += (s, e) =>
{
    Console.WriteLine("{0}%", e.ProgressPercentage);
};

var versions = await launcher.GetAllVersionsAsync();
foreach (var item in versions)
{
    // show all version names
    // use this version name in CreateProcessAsync method.
    Console.WriteLine(item.Name);
}

var launchOption = new MLaunchOption
{
    MaximumRamMb = 1024,
    Session = session, // replace this with login session value. ex) Session = MSession.GetOfflineSession("hello")

    //ScreenWidth = 1600,
    //ScreenHeight = 900,
    //ServerIp = "mc.hypixel.net"
};

//var process = await launcher.CreateProcessAsync("input version name here", launchOption);
var process = await launcher.CreateProcessAsync("1.15.2", launchOption); // vanilla
// var process = await launcher.CreateProcessAsync("1.12.2-forge1.12.2-14.23.5.2838", launchOption); // forge
// var process = await launcher.CreateProcessAsync("1.12.2-LiteLoader1.12.2"); // liteloader
// var process = await launcher.CreateProcessAsync("fabric-loader-0.11.3-1.16.5") // fabric-loader

process.Start();

示例

示例代码