All Projects → Corona-Studio → ProjBobcat

Corona-Studio / ProjBobcat

Licence: MIT License
The next generation Minecraft launcher core written in C# providing the freest, fastest and the most complete experience.

Programming Languages

C#
18002 projects

Projects that are alternatives of or similar to ProjBobcat

mcpelauncher
Launch MCPE on macOS! (archived-- has been merged back upstream)
Stars: ✭ 12 (-85%)
Mutual labels:  launcher, minecraft-launcher
CmlLib.Core
.NET Minecraft Launcher Library. All Version, Auth, Forge, Java, Crossplatform
Stars: ✭ 87 (+8.75%)
Mutual labels:  launcher, minecraft-launcher
Minecraft-Box-Launcher
Open source Minecraft Java Edition launcher built with ElectronJS
Stars: ✭ 19 (-76.25%)
Mutual labels:  launcher, minecraft-launcher
Fortnite-Forcer
A easy to use anti-cheat switcher for Fortnite written in C#.
Stars: ✭ 19 (-76.25%)
Mutual labels:  launcher
WoW-Launcher
A game launcher for World of Warcraft that allows you to connect to custom servers.
Stars: ✭ 56 (-30%)
Mutual labels:  launcher
launcher
A simple utility for executing multiple sequential or multi-threaded applications in a single multi-node batch job
Stars: ✭ 48 (-40%)
Mutual labels:  launcher
WebClipChangeAppLogo
iOS14利用WebClip更换图标,做到无缝启动App
Stars: ✭ 47 (-41.25%)
Mutual labels:  launcher
SDKLauncher-iOS
A small iOS application to serve as a launcher/testbed for the Readium SDK.
Stars: ✭ 69 (-13.75%)
Mutual labels:  launcher
Creators.TF-Community-Launcher
The Creators.TF Community Launcher is a launcher created to help install and update mod content for TF2.
Stars: ✭ 49 (-38.75%)
Mutual labels:  launcher
ScratchPaper
A Gradle Plugin for adding variant/version/git-commit-id/etc information to APK launcher icon.
Stars: ✭ 58 (-27.5%)
Mutual labels:  launcher
Apex-Launcher
Launcher for the fan game Pokemon Apex
Stars: ✭ 14 (-82.5%)
Mutual labels:  launcher
gomclauncher
A Minecraft Launcher
Stars: ✭ 58 (-27.5%)
Mutual labels:  minecraft-launcher
viper
Launcher+Updater for TF|2 Northstar
Stars: ✭ 55 (-31.25%)
Mutual labels:  launcher
Alicorn
A high performance custom Minecraft launcher.
Stars: ✭ 26 (-67.5%)
Mutual labels:  minecraft-launcher
lc39
The Mia-Platform Node.js service launcher
Stars: ✭ 18 (-77.5%)
Mutual labels:  launcher
pojavlauncherteam.github.io
Official website for PojavLauncher, built with VuePress
Stars: ✭ 64 (-20%)
Mutual labels:  launcher
Wox
Launcher for Windows, an alternative to Alfred and Launchy.
Stars: ✭ 158 (+97.5%)
Mutual labels:  launcher
BNSBoost
A simple launcher for Blade & Soul patches. Working as of the Fire and Blood game update.
Stars: ✭ 19 (-76.25%)
Mutual labels:  launcher
search-based-launcher
A Minimalist's Launcher
Stars: ✭ 41 (-48.75%)
Mutual labels:  launcher
minecrowdcontrol
Minecraft Crowd Control Plugin
Stars: ✭ 19 (-76.25%)
Mutual labels:  minecraft-launcher

ProjBobcat

简体中文

bobcatlong.png CodeFactor Grade Nuget Nuget GitHub Maintenance GitHub commit activity GitHub closed pull requests GitHub repo size GitHub stars

The next-generation Minecraft launcher core written in C# providing the freest, fastest and the most complete experience.

Developed and maintained by Corona Studio.

Stats

Alt

[Ad] An Awesome Typescript Launcher Core

Repo Link

All you need for minecraft launcher in typescript. https://voxelum.github.io/minecraft-launcher-core-node/

Reminder before installation

  • Due to the limitation of the default number of connections in .NET, you need to manually override the default number of connections to ensure that some methods in are executed normally. 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)

     using System.Net;
    
     ServicePointManager.DefaultConnectionLimit = 512;

Installation

There are two methods for the first step:

  • Clone and copy ProjBobcat's source code to your solution folder, then add ProjBobcat's reference to your project.
  • Directly install ProjBobcat via Nuget Package Manager or simply execute
    Install-Package ProjBobcat
    
    in Package Manager Console.

After the step above is completed, you need to add two lines of code into your program's entry point (App.xaml.cs or something else):

ServiceHelper.Init();
HttpClientHelper.Init();

Roadmap

Function Status
Offline Auth Model
Online Auth Model (Yggdrasil)
Online Auth Model (Microsoft)
Version Isolation
launcher_profiles.json Analysis
launcher_accounts.json Analysis
Nuget Distribution
Old Forge Installation Model
New Forge Installation Model
Optifine Installation Model
Fabric Installation Model
LiteLoader Installation Model
Resource Auto Completion (Multi-thread downloader)
Minecraft: Windows 10 Edition Support (Detector and launcher)
Game log resolver
Game crashing detector WIP

Instruction

Please note: ProjBobcat requires non-32-bit preferred compilation in your main project.

ProjBobcat provides 3 main components & a core to form the whole core framework.

Class Parent Interface Parent Class Function
DefaultGameCore IGameCore NG All Implementations of the Default Launch Core
DefaultLaunchArgumentParser IArgumentParser LaunchArgumentParserBase The Default Argument Analysis Tool
DefaultLauncherProfileParser ILauncherProfileParser LauncherProfileParserBase The Default launcher_profiles.json Analysis Module
DefaultVersionLocator IVersionLocator VersionLocatorBase Game Version Locator

Selective components:

Class Parent Interface Parent Class Function
DefaultResourceCompleter IResourceCompleter NG All Implementations of the Default Resource Completer

Quick Startup

Java Detection

var javaList = ProjBobcat.Class.Helper.SystemInfoHelper.FindJava(); // Returns a list of all java installations found in registry.

Core Initialization

var core = new DefaultGameCore
{
  ClientToken = clientToken,
  RootPath = rootPath,
  VersionLocator = new DefaultVersionLocator(rootPath, clientToken)
  {
    LauncherProfileParser = new DefaultLauncherProfileParser(rootPath, clientToken),
    LauncherAccountParser = new DefaultLauncherAccountParser(rootPath, clientToken)
  },
  GameLogResolver = new DefaultGameLogResolver()
};

Game Scaning

List<VersionInfo> gameList = core.VersionLocator.GetAllGames().ToList();

Resource Completion

//Here we use mcbbs' download source, change the uri to meet your need.
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[0]
        },
        new LibraryInfoResolver
        {
            BasePath = core.RootPath,
            LibraryUriRoot = "https://download.mcbbs.net/maven/",
            VersionInfo = gameList[0]
        }
    }
};

await drc.CheckAndDownloadTaskAsync().ConfigureAwait(false);

Here are some events which you could bind to your program.

Name Method Signature Refers to
GameResourceInfoResolveStatus (object sender, GameResourceInfoResolveEventArgs e) Resolver status
DownloadFileChangedEvent (object sender, DownloadFileChangedEventArgs e) All files download status changed
DownloadFileCompletedEvent (object sender, DownloadFileCompletedEventArgs e) Single file download completed

Launch Configuration

var launchSettings = new LaunchSettings
{
    FallBackGameArguments = new GameArguments // Default game arguments for all games in .minecraft/ as the fallback of specific game launch.
    {
        GcType = GcType.G1Gc, // GC type
        JavaExecutable = javaPath, //The path of Java executable
        Resolution = new ResolutionModel // Game Window's Resolution
        {
            Height = 600, // Height
            Width = 800 // Width
        },
        MinMemory = 512, // Minimal Memory
        MaxMemory = 1024 // Maximum Memory
    },
    Version = versionId, // The version ID of the game to launch, such as 1.7.10 or 1.15.2
    VersionInsulation = false // Version Isolation
    GameResourcePath = Core.RootPath, // Root path of the game resource(.minecraft/)
    GamePath = path, // Root path of the game (.minecraft/versions/)
    VersionLocator = Core.VersionLocator // Game's version locator
};

launchSettings.GameArguments = new GameArguments // (Optional) The arguments of specific game launch, the undefined settings here will be redirected to the fallback settings mentioned previously.
{
    AdvanceArguments = specificArguments , // Advanced launch arguments
    JavaExecutable = specificJavaExecutable, // JAVA's path
    Resolution = specificResolution, // The window's size
    MinMemory = specificMinMemory, // Minimum Memory
    MaxMemory = specificMaxMemory // Maximum Memory
};

Here are some events which you could bind to your program.

Name Method Signature Refers to
GameExitEventDelegate (object sender, GameExitEventArgs e) Game Exit
GameLogEventDelegate (object sender, GameLogEventArgs e) Game Log
LaunchLogEventDelegate (object sender, LaunchLogEventArgs e) Core Log

Define Auth Model

Offline:

launchSettings.Authenticator = new OfflineAuthenticator
{
    Username = "Username"
    LauncherAccountParser = core.VersionLocator.LauncherAccountParser // launcher_profiles.json parser
},

Online:

launchSettings.Authenticator = new YggdrasilAuthenticator
{
    LauncherAccountParser = core.VersionLocator.LauncherAccountParser
    Email = "[email protected]", // Registered E-mail address on Mojang authentication server.
    Password = "password"
};

Launch!

var result = await Core.LaunchTaskAsync(launchSettings).ConfigureAwait(true); // Returns the launch result

License

MIT. 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.

Disclaimer

ProjBobcat is not affiliated with Mojang or any part of its software.

Hall of Shame

Here we'll list all programs using our code without obeying MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].