Your on-the-fly Minecraft launcher core.
English / 简体中文
- Based on .NET 6.
- Multi-platform supported.
- Launch every version of Minecraft, from very old to very new, plus Forge, OptiFine, Liteload and Fabric.
- Flexible, lightweight and extensible.
- Customizable OAuth client id & redirect url for Microsoft authorization shceme.
- Multiple resources download source (especially for Chinese users).
- Fully documented (almost).
- Waiting for you to explore more.
But you should know
- MoudleLauncher don't and won't support automatically install Forge, OptiFine, Liteload, Fabric or other loaders.
- It's not hard to implement an in-built downloader, but we didn't do it, because it will literally against the flexibility and extensiblity we promised.
We don't talk about very basic facts here, if you have got confused, go to documentation.
- Install ModuleLauncher.Re via Nuget:
- IDE interface
- Nuget Package Manger:
Install-Package ModuleLauncher.Re
- .NET CLI:
dotnet add package ModuleLauncher.Re
- Or clone the repo and compile it to dynamic link library
Assuming you must have an existing .minecraft
. By the way, don't be afraid of these lines of codes, actually real codes are within 10 lines.
// version you want to launch
var version = "<version>";
// initialize a MinecraftResolver instance by path of .minecraft
var minecraftResolver = new MinecraftResolver(rootPath);
// get MinecraftEntry by Minecraft id (version)
// it's very IMPORTANT
var minecraft = minecraftResolver.GetMinecraft(version);
// launch in method-chain way
// essentially only two value needed to launch Minecraft besides Minecraft version
// player: username of an offline player
// (notice that here string has been implicitly converted to AuthenticateResult)
// java: path of java executable file
var process = await minecraft.WithAuthentication("<player>")
.WithJava(@"<java>")
.LaunchAsync();
The launch method LaunchAsync
returns an instance of Process
, you can manipulate it as you wish.
// read and write Minecraft output
// ReadOutputLine and IsNullOrEmpty here is extension methods provided by library Manganese
while (!process.ReadOutputLine().IsNullOrEmpty())
{
Console.WriteLine(process.ReadOutputLine());
}
- You can fork this repo and open a pull request to
new
branch. Noticibly you can't open a pull request directly to themain
branch. - Open an issue.
If you didn't satified with the current document, you can:
- Open PR to documentation repo.
- Open an issue in documentation repo.
- Provice translations.
- Newtonsoft.Json: very powerful JSON manipulation.
- Flurl.Http: such a fluent HTTP library.
- Manganese: good one, useful.
- JetBrains: provided free IDEs.
- Google and Stack Overflow.