- 版权类型
- 原创
- 适用平台
- 全平台
- 版权链接
- #
- 语言支持
- 其他
- 前置组件
- .NET8 SDK:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0
可不可以给我们可爱猫猫一个小小的Star呢?o((>ω< ))o
https://github.com/Corona-Studio/ProjBobcat
ProjBobcat 是一个由日冕开发组开发的高度自定义、高性能、功能完善的 Minecraft 启动器核心。
如果你的启动器使用了ProjBobcat,欢迎让我们知道!我们会在这里列出一些优秀的使用ProjBobcat的案例。
现已支持
ProjBobcat提供了3大必要组件和一个核心总成来支撑起整个核心框架
选择性组件:
这里是一些您可以绑定的事件:
您可以在启动核心内注册以下事件来实现完整的日志记录
在线验证模型:
注:
^ 目前文档由于人手不足,难以周全地提供文档。欢迎热心市民前来日冕知识库纠正、完善文档!
* 目前仅在这些平台有实际产品的测试:LauncherX的Windows x64,Windows arm,macOS x64,macOS arm,Linux x64,Linux arm。如果有机会的话我们会对更多平台进行测试和适配,比如loongarch。
https://github.com/Corona-Studio/ProjBobcat
ProjBobcat 是一个由日冕开发组开发的高度自定义、高性能、功能完善的 Minecraft 启动器核心。
- 便捷 - 从获取NuGet到依照开发文档成功完成启动逻辑,大约不出十分钟!
- 开源 - 基于MIT许可证,在更大的自由中实现自己的启动器
- 稳定更新 - 随着需求变化,不断地更新和优化
- 开发文档 - 在CSKB(见附加信息链接)有ProjBobcat的开发文档可供查阅。^
- NativeAOT - ProjBobcat 为 NativeAot 提供全面支持。Native AOT 应用程序启动非常快,并且使用较少的内存。应用程序的用户可以在没有安装 .NET 运行时的机器上运行它。
- 自由携带 - ProjBobcat目前支持跨平台。这意味着在Windows、macOS、Linux的各种架构下(只要dotNET支持)均可正常运行*
案例
LauncherX:使用ProjBobcat的绝佳实践。(可在mineBBS搜索到)如果你的启动器使用了ProjBobcat,欢迎让我们知道!我们会在这里列出一些优秀的使用ProjBobcat的案例。
现已支持
Function | Status |
---|---|
离线验证模型 | ![]() |
外置登录验证 (Yggdrasil) | ![]() |
官方登陆验证 (Microsoft) | ![]() |
版本隔离 | ![]() |
launcher_profiles.json 解析 | ![]() |
launcher_accounts.json 解析 | ![]() |
Nuget 分发 | ![]() |
Forge安装模型(旧版) | ![]() |
Forge安装模型(新版) | ![]() |
Optifine安装模型 | ![]() |
Fabric安装模型 | ![]() |
LiteLoader安装模型 | ![]() |
自动资源补全 (包含多线程下载器) | ![]() |
检测和启动已安装的Windows基岩版游戏 | ![]() |
游戏日志解析器 | ![]() |
游戏崩溃检测 | ![]() |
使用说明
请注意:ProjBobcat要求您取消项目属性中的优先32位生成 ( Prefer 32-bit ) 勾选。ProjBobcat提供了3大必要组件和一个核心总成来支撑起整个核心框架
类 | 父级接口 | 父类 | 作用 |
---|---|---|---|
DefaultGameCore | IGameCore | NG | 提供默认启动核心所有实现 |
DefaultLaunchArgumentParser | IArgumentParser | LaunchArgumentParserBase | 提供默认启动参数解析 |
DefaultLauncherProfileParser | ILauncherProfileParser | LauncherProfileParserBase | 提供默认launcher_profiles.json解析 |
DefaultVersionLocator | IVersionLocator | VersionLocatorBase | 定位游戏版本 |
选择性组件:
类 | 父级接口 | 父类 | 作用 |
---|---|---|---|
DefaultResourceCompleter | IResourceCompleter | NG | 提供默认资源补全器所有实现 |
基本使用
扫描 Java
代码:
var javaList = ProjBobcat.Class.Helper.SystemInfoHelper.FindJava(); // 返回一个表,包含了从注册表中检索到的系统中 Java 安装的全部信息
初始化核心
代码:
var core = new DefaultGameCore
{
ClientToken = clientToken, // 游戏客户端识别码,你可以设置成你喜欢的任何GUID,例如88888888-8888-8888-8888-888888888888,或者自己随机生成一个!
RootPath = rootPath, // .minecraft\的路径
VersionLocator = new DefaultVersionLocator(rootPath, clientToken)
{
LauncherProfileParser = new DefaultLauncherProfileParser(rootPath, clientToken),
LauncherAccountParser = new DefaultLauncherAccountParser(rootPath, clientToken)
},
GameLogResolver = new DefaultGameLogResolver()
};
扫描全部游戏
代码:
var gameList = core.VersionLocator.GetAllGames().ToList();
资源补全
代码:
// 这里使用mcbbs源,请自行修改以满足您的需求。
var drc = new DefaultResourceCompleter
{
ResourceInfoResolvers = new List<IResourceInfoResolver>(2)
{
new AssetInfoResolver
{
AssetIndexUriRoot = "https://download.mcbbs.net/",
AssetUriRoot = "https://download.mcbbs.net/assets/",
BasePath = core.RootPath,
VersionInfo = gameList[...]
},
new LibraryInfoResolver
{
BasePath = core.RootPath,
LibraryUriRoot = "https://download.mcbbs.net/maven/",
VersionInfo = gameList[...]
}
}
};
await drc.CheckAndDownloadTaskAsync().ConfigureAwait(false);
这里是一些您可以绑定的事件:
名称 | 签名 | 作用 |
---|---|---|
GameResourceInfoResolveStatus | (object sender, GameResourceInfoResolveEventArgs e) | 获取解析器状态 |
DownloadFileChangedEvent | (object sender, DownloadFileChangedEventArgs e) | 总文件下载进度改变 |
DownloadFileCompletedEvent | (object sender, DownloadFileCompletedEventArgs e) | 单文件下载完成 |
启动游戏前配置
代码:
var launchSettings = new LaunchSettings
{
FallBackGameArguments = new GameArguments // 游戏启动参数缺省值,适用于以该启动设置启动的所有游戏,对于具体的某个游戏,可以设置(见下)具体的启动参数,如果所设置的具体参数出现缺失,将使用这个补全
{
GcType = GcType.G1Gc, // GC类型
JavaExecutable = javaPath, // Java路径
Resolution = new ResolutionModel // 游戏窗口分辨率
{
Height = 600, // 高度
Width = 800 // 宽度
},
MinMemory = 512, // 最小内存
MaxMemory = 1024 // 最大内存
},
Version = versionId, // 需要启动的游戏ID,例如1.7.10或者1.15.2
VersionInsulation = false, // 版本隔离
GameResourcePath = Core.RootPath, // 资源根目录
GamePath = path, // 游戏根目录
VersionLocator = Core.VersionLocator // 游戏定位器
};
launchSettings.GameArguments = new GameArguments // (可选)具体游戏启动参数
{
AdvanceArguments = specificArguments, // 高级启动参数
JavaExecutable = specificJavaPath, // JAVA路径
Resolution = specificResolution, // 游戏窗口分辨率
MinMemory = specificMinMemory, // 最小内存
MaxMemory = specificMaxMemory // 最大内存
};
您可以在启动核心内注册以下事件来实现完整的日志记录
名称 | 方法签名 | 作用 |
---|---|---|
GameExitEventDelegate | (object sender, GameExitEventArgs e) | 游戏退出事件 |
GameLogEventDelegate | (object sender, GameLogEventArgs e) | 游戏日志输出事件 |
LaunchLogEventDelegate | (object sender, LaunchLogEventArgs e) | 启动日志输出事件 |
确定验证模型
离线验证模型:
代码:
launchSettings.Authenticator = new OfflineAuthenticator
{
Username = "您的游戏名"
LauncherAccountParser = core.VersionLocator.LauncherAccountParser // launcher_profiles.json解析组件
};
在线验证模型:
代码:
launchSettings.Authenticator = new YggdrasilAuthenticator
{
LauncherAccountParser = core.VersionLocator.LauncherAccountParser
Email = "example@example.com", // 在外置验证服务器上注册的正版账号邮箱地址。
Password = "password" // 填写明文密码。
};
// ProjBobcat支持微软账号验证。参见开发文档。
启动游戏
代码:
var result = await Core.LaunchTaskAsync(launchSettings).ConfigureAwait(true); // 返回游戏启动结果,以及异常信息(如果存在)
注:
^ 目前文档由于人手不足,难以周全地提供文档。欢迎热心市民前来日冕知识库纠正、完善文档!
* 目前仅在这些平台有实际产品的测试:LauncherX的Windows x64,Windows arm,macOS x64,macOS arm,Linux x64,Linux arm。如果有机会的话我们会对更多平台进行测试和适配,比如loongarch。