{"id":37044803,"url":"https://github.com/corona-studio/projbobcat","last_synced_at":"2026-04-18T13:06:48.015Z","repository":{"id":37027771,"uuid":"238644984","full_name":"Corona-Studio/ProjBobcat","owner":"Corona-Studio","description":"The next generation Minecraft launcher core written in C# providing the freest, fastest and the most complete experience.","archived":false,"fork":false,"pushed_at":"2026-01-25T03:44:02.000Z","size":10456,"stargazers_count":246,"open_issues_count":4,"forks_count":27,"subscribers_count":7,"default_branch":"master","last_synced_at":"2026-01-25T17:41:24.233Z","etag":null,"topics":["ahead-of-time","cross-platform","csharp","dotnet","dotnet-core","launcher","linux","macos","minecraft","minecraft-launcher","native-code","nativeaot","net8","windows"],"latest_commit_sha":null,"homepage":"https://kb.corona.studio/zhCN/projbobcat/","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Corona-Studio.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-02-06T08:51:23.000Z","updated_at":"2026-01-25T03:44:05.000Z","dependencies_parsed_at":"2025-04-23T20:22:52.129Z","dependency_job_id":"840f0d93-7e53-4e4b-b732-a702c29647b7","html_url":"https://github.com/Corona-Studio/ProjBobcat","commit_stats":{"total_commits":443,"total_committers":7,"mean_commits":"63.285714285714285","dds":"0.23024830699774268","last_synced_commit":"e9415d97bfdc26f50a852911b745e6d4e9d8897f"},"previous_names":[],"tags_count":28,"template":false,"template_full_name":null,"purl":"pkg:github/Corona-Studio/ProjBobcat","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corona-Studio%2FProjBobcat","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corona-Studio%2FProjBobcat/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corona-Studio%2FProjBobcat/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corona-Studio%2FProjBobcat/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Corona-Studio","download_url":"https://codeload.github.com/Corona-Studio/ProjBobcat/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Corona-Studio%2FProjBobcat/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31969829,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ahead-of-time","cross-platform","csharp","dotnet","dotnet-core","launcher","linux","macos","minecraft","minecraft-launcher","native-code","nativeaot","net8","windows"],"created_at":"2026-01-14T05:10:56.758Z","updated_at":"2026-04-18T13:06:48.002Z","avatar_url":"https://github.com/Corona-Studio.png","language":"C#","readme":"# ProjBobcat [![CodeQL](https://github.com/Corona-Studio/ProjBobcat/actions/workflows/codeql-analysis.yml/badge.svg)](https://github.com/Corona-Studio/ProjBobcat/actions/workflows/codeql-analysis.yml)\n\n## [简体中文](https://github.com/Corona-Studio/ProjBobcat/blob/master/README_zh_cn.md)\n\n![Hx18lYLKR43WAb2](https://user-images.githubusercontent.com/25716486/172503112-95515b07-52ee-4d1e-868e-b87137c6034e.png)\n![CodeFactor Grade](https://img.shields.io/codefactor/grade/github/corona-studio/projbobcat?logo=codefactor\u0026style=for-the-badge)\n![Nuget](https://img.shields.io/nuget/v/ProjBobcat?logo=nuget\u0026style=for-the-badge)\n![Nuget](https://img.shields.io/nuget/dt/projbobcat?logo=nuget\u0026style=for-the-badge)\n![GitHub](https://img.shields.io/github/license/corona-studio/projbobcat?logo=github\u0026style=for-the-badge)\n![Maintenance](https://img.shields.io/maintenance/yes/2026?logo=diaspora\u0026style=for-the-badge)\n![GitHub commit activity](https://img.shields.io/github/commit-activity/m/Corona-Studio/ProjBobcat?style=for-the-badge)\n![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/corona-studio/projbobcat?logo=github\u0026style=for-the-badge)\n![GitHub repo size](https://img.shields.io/github/repo-size/corona-studio/projbobcat?logo=github\u0026style=for-the-badge)\n![GitHub stars](https://img.shields.io/github/stars/corona-studio/projbobcat?logo=github\u0026style=for-the-badge)\n\nThe next-generation Minecraft launcher core written in C# provides the freest, fastest, and most complete experience.\n\nDeveloped and maintained by Corona Studio.\n\n## NativeAOT (ahead-of-time compilation) Support\n\nProjBobcat provides full support for [NativeAot](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/).\n\nNative AOT apps start up very quickly and use less memory. Users of the application can run it on a machine that doesn't have the .NET runtime installed. \n\n## Multi-Platform Support\n\nCurrently, we are working on the multi-platform support for ProjBobcat\n| Platform | Status             |\n| -------- | ------------------ |\n| Windows  | :white_check_mark: |\n| macOS    | :white_check_mark: |\n| Linux    | :white_check_mark: |\n\n## [Ad] An Awesome Typescript Launcher Core\n[Repo Link](https://github.com/Voxelum/minecraft-launcher-core-node)\n\nAll you need for Minecraft launcher in typescript. https://voxelum.github.io/minecraft-launcher-core-node/\n\n## Reminder before installation\n\n+ Projbobcat now only supports the latest LTS .NET version 10.0.\n+ Due to the limitation of the default number of connections in .NET, you need to manually override the number of connections to ensure that some methods in \u003cDownloadHelper\u003e are executed typically. You can add the following code in App.xaml.cs or the entry point of the program to complete the modification (The maximum value should not exceed 1024)\n\n```c#\nusing System.Net;\n\nServicePointManager.DefaultConnectionLimit = 512;\n```\n\n## Installation\n\nThere are two methods for the first step:\n* Clone and copy ProjBobcat's source code to your solution folder, then add ProjBobcat's reference to your project.\n* Directly install ProjBobcat via Nuget Package Manager or execute\n\n```\nInstall-Package ProjBobcat\n```\nin Package Manager Console.\n\n## Roadmap\n\n| Function                                                      | Status             |\n| ------------------------------------------------------------- | ------------------ |\n| Offline Auth Model                                            | :white_check_mark: |\n| Online Auth Model (Yggdrasil)                                 | :white_check_mark: |\n| Online Auth Model (Microsoft)                                 | :white_check_mark: |\n| Version Isolation                                             | :white_check_mark: |\n| launcher_profiles.json Analysis                               | :white_check_mark: |\n| launcher_accounts.json Analysis                               | :white_check_mark: |\n| Nuget Distribution                                            | :white_check_mark: |\n| Old Forge Installation Model                                  | :white_check_mark: |\n| New Forge Installation Model                                  | :white_check_mark: |\n| Optifine Installation Model                                   | :white_check_mark: |\n| Fabric Installation Model                                     | :white_check_mark: |\n| LiteLoader Installation Model                                 | :white_check_mark: |\n| Resource Auto Completion (Multi-thread downloader)            | :white_check_mark: |\n| Minecraft: Windows 10 Edition Support (Detector and launcher) | :white_check_mark: |\n| Game log resolver                                             | :white_check_mark: |\n| Game crashing detector                                        | :white_check_mark: |\n\n## Instruction\n\nPlease note: ProjBobcat requires non-32-bit preferred compilation in your main project.\n\nProjBobcat provides 3 main components \u0026 a core to form the whole core framework.\n\n| Class                        | Parent Interface       | Parent Class              | Function                                           |\n| ---------------------------- | ---------------------- | ------------------------- | -------------------------------------------------- |\n| DefaultGameCore              | IGameCore              | NG                        | All Implementations of the Default Launch Core     |\n| DefaultLaunchArgumentParser  | IArgumentParser        | LaunchArgumentParserBase  | The Default Argument Analysis Tool                 |\n| DefaultLauncherProfileParser | ILauncherProfileParser | LauncherProfileParserBase | The Default launcher_profiles.json Analysis Module |\n| DefaultVersionLocator        | IVersionLocator        | VersionLocatorBase        | Game Version Locator                               |\n\nSelective components:\n\n| Class                    | Parent Interface   | Parent Class | Function                                              |\n| ------------------------ | ------------------ | ------------ | ----------------------------------------------------- |\n| DefaultResourceCompleter | IResourceCompleter | NG           | All Implementations of the Default Resource Completer |\n\n### Quick Startup\n\n#### Java Detection\n\n```csharp\nvar javaList = ProjBobcat.Class.Helper.SystemInfoHelper.FindJava(); // Returns a list of all Java installations found in the registry.\n```\n\n#### Core Initialization\n\n```csharp\nvar core = new DefaultGameCore\n{\n  ClientToken = clientToken,\n  RootPath = rootPath,\n  VersionLocator = new DefaultVersionLocator(rootPath, clientToken)\n  {\n    LauncherProfileParser = new DefaultLauncherProfileParser(rootPath, clientToken),\n    LauncherAccountParser = new DefaultLauncherAccountParser(rootPath, clientToken)\n  },\n  GameLogResolver = new DefaultGameLogResolver()\n};\n```\n\n#### Game Scanning\n\n```csharp\nList\u003cVersionInfo\u003e gameList = core.VersionLocator.GetAllGames().ToList();\n```\n\n#### Resource Completion\n\n```csharp\n//Here we use mcbbs' download source, change the uri to meet your need.\nvar drc = new DefaultResourceCompleter\n{\n    ResourceInfoResolvers = new List\u003cIResourceInfoResolver\u003e(2)\n    {\n        new AssetInfoResolver\n        {\n            AssetIndexUriRoot = \"https://download.mcbbs.net/\",\n            AssetUriRoot = \"https://download.mcbbs.net/assets/\",\n            BasePath = core.RootPath,\n            VersionInfo = gameList[0]\n        },\n        new LibraryInfoResolver\n        {\n            BasePath = core.RootPath,\n            LibraryUriRoot = \"https://download.mcbbs.net/maven/\",\n            VersionInfo = gameList[0]\n        }\n    }\n};\n\nawait drc.CheckAndDownloadTaskAsync().ConfigureAwait(false);\n```\n\nHere are some events which you could bind to your program.\n\n| Name                          | Method Signature                                    | Refers to                         |\n| ----------------------------- | --------------------------------------------------- | --------------------------------- |\n| GameResourceInfoResolveStatus | (object sender, GameResourceInfoResolveEventArgs e) | Resolver status                   |\n| DownloadFileChangedEvent      | (object sender, DownloadFileChangedEventArgs e)     | All files download status changed |\n| DownloadFileCompletedEvent    | (object sender, DownloadFileCompletedEventArgs e)   | Single file download completed    |\n\n#### Launch Configuration\n\n```csharp\nvar launchSettings = new LaunchSettings\n{\n    FallBackGameArguments = new GameArguments // Default game arguments for all games in .minecraft/ as the fallback of specific game launch.\n    {\n        GcType = GcType.G1Gc, // GC type\n        JavaExecutable = javaPath, //The path of Java executable\n        Resolution = new ResolutionModel // Game Window's Resolution\n        {\n            Height = 600, // Height\n            Width = 800 // Width\n        },\n        MinMemory = 512, // Minimal Memory\n        MaxMemory = 1024 // Maximum Memory\n    },\n    Version = versionId, // The version ID of the game to launch, such as 1.7.10 or 1.15.2\n    VersionInsulation = false // Version Isolation\n    GameResourcePath = Core.RootPath, // Root path of the game resource(.minecraft/)\n    GamePath = path, // Root path of the game (.minecraft/versions/)\n    VersionLocator = Core.VersionLocator // Game's version locator\n};\n\nlaunchSettings.GameArguments = new GameArguments // (Optional) The arguments of specific game launch, the undefined settings here will be redirected to the fallback settings mentioned previously.\n{\n    AdvanceArguments = specificArguments , // Advanced launch arguments\n    JavaExecutable = specificJavaExecutable, // JAVA's path\n    Resolution = specificResolution, // The window's size\n    MinMemory = specificMinMemory, // Minimum Memory\n    MaxMemory = specificMaxMemory // Maximum Memory\n};\n```\n\nHere are some events which you could bind to your program.\n\n| Name                   | Method Signature                      | Refers to |\n| ---------------------- | ------------------------------------- | --------- |\n| GameExitEventDelegate  | (object sender, GameExitEventArgs e)  | Game Exit |\n| GameLogEventDelegate   | (object sender, GameLogEventArgs e)   | Game Log  |\n| LaunchLogEventDelegate | (object sender, LaunchLogEventArgs e) | Core Log  |\n\n#### Define Auth Model\n\nOffline:\n\n```csharp\nlaunchSettings.Authenticator = new OfflineAuthenticator\n{\n    Username = \"Username\"\n    LauncherAccountParser = core.VersionLocator.LauncherAccountParser // launcher_profiles.json parser\n},\n```\n\nOnline:\n\n```csharp\nlaunchSettings.Authenticator = new YggdrasilAuthenticator\n{\n    LauncherAccountParser = core.VersionLocator.LauncherAccountParser\n    Email = \"example@example.com\", // Registered E-mail address on Mojang authentication server.\n    Password = \"password\"\n};\n```\n\n#### Launch!\n\n```csharp\nvar result = await Core.LaunchTaskAsync(launchSettings).ConfigureAwait(true); // Returns the launch result\n```\n\n## Stats\n![Alt](https://repobeats.axiom.co/api/embed/d8d56d4c2023d90ea067d5b3ca83ed5da4979289.svg \"Repobeats analytics image\")\n\n## License\nMIT. This means that you can modify or use our code for any purpose, however copyright notice and permission notice shall be included in all copies or substantial portions of your software.\n\n## Disclaimer\nProjBobcat is not affiliated with Mojang or any part of its software.\n\n## Hall of Shame\nHere we'll list all programs using our code without obeying MIT License.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorona-studio%2Fprojbobcat","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcorona-studio%2Fprojbobcat","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcorona-studio%2Fprojbobcat/lists"}