Skip to content
Terug naar Blog
Aangepaste Minecraft-launchers bouwen met CmlLib.Core

Aangepaste Minecraft-launchers bouwen met CmlLib.Core

Alexandru Maftei
Alexandru Maftei
@ice
Updated
3 weergaven
TL;DR:CmlLib.Core is een .NET-bibliotheek voor het bouwen van aangepaste Minecraft-launchers met ingebouwde ondersteuning voor authenticatie, versiebeheer, modloaders en cross-platform compatibiliteit. Perfect voor ontwikkelaars die modpacks of communityservers willen distribueren.

".NET Minecraft Launcher-bibliotheek. Alle versies, Auth, Forge, Java, Cross-platform"

CmlLib/CmlLib.Core · github.com
⭐ 274 sterren💻 C#📄 MIT

Wil je je eigen Minecraft launcher maken in plaats van afhankelijk te zijn van de officiële? CmlLib.Core is een .NET-bibliotheek die alle ingewikkelde zaken regelt: authenticatie, versiebeheer, mod laden. Dus je kunt je concentreren op het bouwen van een launcher die werkt zoals jij het wilt.

Wat doet dit project

CmlLib.Core is een .NET-bibliotheek ontworpen voor ontwikkelaars die aangepaste Minecraft launchers willen bouwen. Als je je ooit hebt afgevraagd hoe gemeenschappen aangepaste versies van het spel distribueren of hoe bepaalde servers aangepaste clientsetups beheren, dan is deze bibliotheek wat veel van deze infrastructuur aandrijft. Het is geen mod, geen clientpatch en niets wat je rechtstreeks uitvoert. Het is een toolkit die het ingewikkelde achtergrondwerk regelt: het downloaden van spelbestanden, het beheren van authenticatie met Microsoft-accounts, het starten van het spel met aangepaste parameters en het ondersteunen van modloaders zoals Forge en Fabric.

Het project staat op 274 sterren op GitHub en is geschreven in C#, wat betekent dat je op zijn minst basiskennis nodig hebt van .NET-ontwikkeling. En eerlijk gezegd, dat is het publiek hier: ontwikkelaars die launchers bouwen, geen spelers die een gemakkelijkere manier zoeken om te spelen.


Wanneer je een aangepaste launcher zou bouwen

Hier is het ding over aangepaste launchers: de meeste spelers hebben er geen nodig. De officiële launcher werkt prima voor standaard Minecraft. Maar er zijn echte gevallen waar een aangepaste launcher zinvol is.

Misschien draai je een communityserver en wil je een vooraf ingestelde client distribueren met je aangepaste mods en resourcepack al ingebakken. Nieuwe spelers melden zich aan, downloaden je launcher, klikken op afspelen en alles is klaar. Geen "welke mods moet ik installeren?" threads, geen kapotte configs. Je server op onze Minecraft serverlijst krijgen is een zaak, ervoor zorgen dat spelers daadwerkelijk kunnen verbinden zonder problemen is een ander verhaal.

Of je bouwt een modpackdistributieplatform en heb je strakke controle nodig over versiebeheer en modupdates. Misschien ben je aan het werk aan een gespecialiseerde launcher voor een specifiek gebied of gamemode. Dit zijn de scenario's waar CmlLib.Core stopt met overkill en echt nuttig wordt.


Aan de slag: installeren en eerste stappen

CmlLib.Core installeren betekent het in een .NET-project halen via NuGet. Als je eerder met NuGet-pakketten hebt gewerkt, is dit vertrouwd terrein.

bash
dotnet add package CmlLib.Core

Zodra het is geïnstalleerd, kun je launcher-code schrijven. Het README toont een basisvoorbeeld: haal alle beschikbare versies op, start dan het spel. Dit is hoe het eruitziet:

csharp
using CmlLib.Core;

var launcher = new MinecraftLauncher();
var versions = await launcher.GetAllVersionsAsync();
foreach (var version in versions)
{
    Console.WriteLine($"{version.Type} {version.Name}");
}

Dit alleen is al krachtig. Je vraagt het versiemanifest van Minecraft op en krijgt alles terug dat beschikbaar is: standaardreleases, snapshots, oudere builds. De bibliotheek regelt verbinding met Microsofts servers, parseert het manifest en presenteert het als schone C#-objecten.

De volgende stap is eigenlijk het spel starten. Hier is het ding, dus dit is waar het echt wordt.

csharp
using CmlLib.Core;
using CmlLib.Core.ProcessBuilder;

var launcher = new MinecraftLauncher();
var process = await launcher.InstallAndBuildProcessAsync("1.21", new MLaunchOption());
process.Start();

Die ene aanroep regelt het downloaden van de spelbestanden voor versie 1.21, valideert ze en bouwt een Windows-proces klaar voor uitvoering. De bibliotheek beheert zelfs je Java-runtime als je die nodig hebt.


Kernfuncties om te begrijpen

Authenticatie. Moderner Minecraft vereist Microsoft-accountauthenticatie (RIP Mojang-accounts, rust in vrede). CmlLib.Core regelt de volledige OAuth-flow, tokenvernieuwing en sessiebeheer. Je hoeft niet te begrijpen hoe Microsofts verificatiesysteem werkt. Eigenlijk zou ik aanbevelen om dat niet zelf proberen te begrijpen, tenzij je ervan houdt om dichte API-documentatie te lezen.

Versiebeheer. Standaardversies, snapshots, aangepaste versies, oude builds - de bibliotheek vraagt alles op en presenteert het consistent. Je kunt alle versies opvragen en filteren op wat je wilt. Of je kunt specifieke versies zoals 1.21 als doel stellen en de bibliotheek laat het juiste vinden.

Modondersteuning. Forge, Fabric, LiteLoader - CmlLib.Core begrijpt deze modloaders. Je kunt een proces bouwen dat een aangepaste versie lanceert op dezelfde manier als je standaard zou lanceren. De bibliotheek regelt het downloaden van het modloader-installatieprogramma en de spelbestanden apart, en voegt ze dan correct samen.

Cross-platform. Windows, Linux, macOS - de bibliotheek abstraheert platformverschillen weg. Je schrijft eenmaal en het werkt overal. Dat is enorm als je een launcher verspreidt onder diverse spelers.

Voortgangvolging. 50MB van de 2GB gedownload? De bibliotheek stuurt events wanneer bestanden downloaden en verifiëren. Dit betekent dat je launcher spelers een echte voortgangsbalk kan tonen in plaats van een draaiende cirkel van wanhoop. Het README toont dit met bestandsvoortgang en byte-voortgangsterugbellen, wat echt doordachte API-ontwerp is.


Iets echts bouwen (het moeilijker deel)

Een basisvoordracht maken die downloadt en het spel lanceert is het gemakkelijke deel. Echte complexiteit komt wanneer je aangepaste functies toevoegt: een GUI, aangepaste instellingen, integratie met communitymods, automatische updates voor je launcher zelf.

Allays in bosrijtuig in Minecraft
Allays in bosrijtuig in Minecraft

CmlLib.Core geeft je de basis. Het is geen compleet launcherframework zoals de officiële launcher. Je bent verantwoordelijk voor de UI, de UX, de branding, alles wat je launcher voelt als een echt product. Maar het moeilijke werk - communiceren met Mojangs servers, spelbestanden beheren, authenticatie verwerken - dat is al opgelost.

Het project bevat koppelingen naar een voorbeeldlauncher op GitHub, wat helpt. Echte code met echte functies zien is veel nuttiger dan documentatie alleen.


Dingen die mensen in verwarring brengen

Java-runtime-complexiteit. Minecraft heeft Java nodig en Java-versiecompatibiliteit is... lastig. CmlLib.Core kan helpen Java te installeren, maar begrijpen welke versies van Java werken met welke Minecraft-versies is nog steeds aan jou. De bibliotheek abstraheert het, maar maakt Java niet magisch simpel.

Bestandspaden en mappen. Standaard gebruikt de bibliotheek de standaardspelmap van je OS. Windows gebruikt AppData/Roaming/.minecraft, Linux gebruikt ~/.minecraft, macOS gebruikt ~/Library/Application Support/minecraft. Je kunt dit aanpassen, maar het verkeerd doen betekent dat je launcher bestanden op vreemde plaatsen installeert. Controleer de officiële documentatie als je ziet dat spellen niet willen starten.

Auth Token-vervaldatum. Microsoft-tokens duren niet eeuwig. Als je een launcher bouwt die dagen open blijft, moet je tokenvernieuwing verwerken. De bibliotheek biedt dit, maar je moet het eigenlijk gebruiken. Negeer het en gebruikers worden willekeurig afgelogd mid-sessie. Niet leuk.


Vergelijken met andere benaderingen

Je zou je eigen launcher van nul af aan kunnen schrijven en rechtstreeks met Mojangs servers praten. Doe dat niet. CmlLib.Core verwerkt API-wijzigingen, randgevallen en protocolnuances die je alleen ontdekt na weken investeren. Het leven is te kort voor dit.

Je zou ook de officiële launcher als beginpunt kunnen gebruiken en aanpassen, maar dat is broos en juridisch grijs. Bouwen bovenop CmlLib.Core is schoner en beter onderhoudbaar.

Op Modrinth en soortgelijke platforms vind je andere launcher-tools, vaak gespecialiseerd voor modpacks. Als je een eenmalige launcher voor je communityserver of een specifiek modpack bouwt, zouden die sneller kunnen zijn. Maar als je volledige controle wilt en de mogelijkheid om later aangepaste functies toe te voegen, geeft CmlLib.Core je die basis.


Voordat je code gaat schrijven

CmlLib.Core wordt actief onderhouden en krijgt updates. De meest recente release is v4.0.4, wat API-hostwijzigingen aanpakte en Quilt-modloader-testing toevoegde. Dat project staat op een zoet moment: stabiel genoeg voor productie, maar krijgt nog steeds verbeteringen.

Je zult de officiële wiki willen lezen, beschikbaar in zowel Engels als Koreaans. Het is vol - veel beter dan proberen te raden hoe je de bibliotheek van voorbeelden alleen gebruikt. Besteed 30 minuten aan het lezen van de docs voordat je code schrijft. Ernstig.

En als je vast komt te zitten, heeft het project een Discordgemeenschap. Echte mensen die je probleem al hebben opgelost, verschijnen meestal snel.

Een aangepaste launcher bouwen is niet triviaal. Maar als je er een nodig hebt, verwijdert CmlLib.Core het grootste pijnpunt: het beheren van de Minecraft-client zelf. Alles wat overblijft is gewoon softwaretechniek, wat je toch al bent gaan doen.

About the author
Alexandru Maftei
Alexandru MafteiLead Writer

Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.

Share with your friends!