KMCCC
An OpenSource Minecraft Launcher for .Net Developers
KMCCC.Shared
Shared Code Between KMCCC.Basic & KMCCC.Pro
Included:
- Basic Launch Model (LauncherCore, LaunchOptions, ...)
- Authentication Model (Yggdrasil, Offline, ...)
- Java & System Information Finder
- Zip Module using .Net Internal API ( MS.Internal.IO.Zip.* )
- Basic VersionLocator (JVersion)
- A set of useful extensions
- A launch reporter that can be disabled
- Custom authentication server
KMCCC.Basic
Basic Version of KMCCC
Included:
- Everything in kMCCC.Shared
- No more
KMCCC.Pro
Professional Version of KMCCC
Included:
- Everything in KMCCC.Shared
- [WIP] Game File Download & Fix & Check (Including Version, Library, Native&Assets)
- [WIP] More useful extensions for LaunchHandle
- [WIP] More useful libraries that a launch might need.
Plan
We plan to delay some parameter settings, (such as versionLocator) and make more features available in KMCCC.Pro
Sample
How to initialize a LauncherCore
LauncherCore core = LauncherCore.Create(
new LauncherCoreCreationOption(
javaPath: Config.Instance.JavaPath, // by default it will be the first version finded
gameRootPath: null, // by defualt it will be ./.minecraft/
versionLocator: the Version Locator // by default it will be new JVersionLocator()
));
How to find Versions
var versions = core.GetVersions();
var version = core.GetVersion("1.8");
unlaunchable Version will be ignored
How to launch Minecraft
var result = core.Launch(new LaunchOptions
{
Version = App.LauncherCore.GetVersion(server.VersionId)
Authenticator = new OfflineAuthenticator("Steve"), // offline
//Authenticator = new YggdrasilLogin("*@*.*", "***", true), // online
MaxMemory = Config.Instance.MaxMemory, // optional
MinMemory = Config.Instance.MaxMemory, // optional
Mode = LaunchMode.MCLauncher, // optional
Server = new ServerInfo {Address = "mc.hypixel.net"}, //optional
Size = new WindowSize {Height = 768, Width = 1280} //optional
}, (Action<MinecraftLaunchArguments>) (x => { })); // optional ( modify arguments before launching
Using anonymous report
Reporter.SetClientName("Your launcher's name"); // set name
Reporter.SetReportLevel(ReportLevel.Full); // full report
//Reporter.SetReportLevel(ReportLevel.Basic); // basic report
//Reporter.SetReportLevel(ReportLevel.Min); // simplified report
//Reporter.SetReportLevel(ReportLevel.None); // turn off