• 周年纪念勋章活动已圆满结束,如有已购买但仍未申请的用户,可以通过对应勋章的下载链接申请~
ProjBobcat-用C#成就的现代化Java版启动核心 | MIT许可开源

软件资源 ProjBobcat-用C#成就的现代化Java版启动核心 | MIT许可开源 2024-05-28

版权类型
原创
适用平台
全平台
版权链接
#
语言支持
其他
前置组件
.NET8 SDK:https://dotnet.microsoft.com/zh-cn/download/dotnet/8.0
可不可以给我们可爱猫猫一个小小的Star呢?o((>ω< ))o
https://github.com/Corona-Studio/ProjBobcat


IMG_3619.png

ProjBobcat 是一个由日冕开发组开发的高度自定义、高性能、功能完善的 Minecraft 启动器核心。
  • 便捷 - 从获取NuGet到依照开发文档成功完成启动逻辑,大约不出十分钟!
  • 开源 - 基于MIT许可证,在更大的自由中实现自己的启动器
  • 稳定更新 - 随着需求变化,不断地更新和优化
  • 开发文档 - 在CSKB(见附加信息链接)有ProjBobcat的开发文档可供查阅。^
  • NativeAOT - ProjBobcat 为 NativeAot 提供全面支持。Native AOT 应用程序启动非常快,并且使用较少的内存。应用程序的用户可以在没有安装 .NET 运行时的机器上运行它。
  • 自由携带 - ProjBobcat目前支持跨平台。这意味着在Windows、macOS、Linux的各种架构下(只要dotNET支持)均可正常运行*

案例​

LauncherX:使用ProjBobcat的绝佳实践。(可在mineBBS搜索到)

如果你的启动器使用了ProjBobcat,欢迎让我们知道!我们会在这里列出一些优秀的使用ProjBobcat的案例。

现已支持

FunctionStatus
离线验证模型✅
外置登录验证 (Yggdrasil)✅
官方登陆验证 (Microsoft)✅
版本隔离✅
launcher_profiles.json 解析✅
launcher_accounts.json 解析✅
Nuget 分发✅
Forge安装模型(旧版)✅
Forge安装模型(新版)✅
Optifine安装模型✅
Fabric安装模型✅
LiteLoader安装模型✅
自动资源补全 (包含多线程下载器)✅
检测和启动已安装的Windows基岩版游戏✅
游戏日志解析器✅
游戏崩溃检测✅

使用说明​

请注意:ProjBobcat要求您取消项目属性中的优先32位生成 ( Prefer 32-bit ) 勾选。

ProjBobcat提供了3大必要组件和一个核心总成来支撑起整个核心框架
父级接口父类作用
DefaultGameCoreIGameCoreNG提供默认启动核心所有实现
DefaultLaunchArgumentParserIArgumentParserLaunchArgumentParserBase提供默认启动参数解析
DefaultLauncherProfileParserILauncherProfileParserLauncherProfileParserBase提供默认launcher_profiles.json解析
DefaultVersionLocatorIVersionLocatorVersionLocatorBase定位游戏版本

选择性组件:
父级接口父类作用
DefaultResourceCompleterIResourceCompleterNG提供默认资源补全器所有实现

基本使用

扫描 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。
  • 喜欢
反馈: PuddingKC
作者
CoronaStudio
下载
285
查看
518
首次发布
最后更新

评分

0.00 星 0 次评分

CoronaStudio 的其他资源

后退
顶部 底部