Skip to content
Powrót do bloga
Budowanie Launcherów Minecraft za Pomocą CmlLib.Core

Budowanie Launcherów Minecraft za Pomocą CmlLib.Core

Alexandru Maftei
Alexandru Maftei
@ice
Updated
6 wyświetleń
TL;DR:CmlLib.Core to biblioteka .NET do budowania niestandardowych launcherów Minecraft z wbudowaną obsługą autentykacji, zarządzania wersjami, modów oraz wdrażania wieloplatformowego. Idealna dla deweloperów dystrybuujących modpacki lub serwery społeczności.

"Biblioteka Launcherów Minecraft .NET. Wszystkie Wersje, Autentykacja, Forge, Java, Wieloplatformowa"

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

Chcesz stworzyć własny launcher Minecraft zamiast polegać na oficjalnym? CmlLib.Core to biblioteka .NET, która obsługuje całą skomplikowaną pracę: autentykację, zarządzanie wersjami i ładowanie modów. Możesz się więc skupić na budowaniu launchera, który działa dokładnie tak, jak chcesz.

Czym jest ten projekt

CmlLib.Core to biblioteka .NET zaprojektowana dla deweloperów chcących budować niestandardowe launchery Minecraft. Jeśli kiedyś zastanawiałeś się, jak społeczności dystrybuują gry z modami lub jak niektóre serwery zarządzają niestandardowymi konfiguracjami klienta, to właśnie ta biblioteka stanowi podstawę dużej części tej infrastruktury. To nie mod, nie patch klienta i nie coś, co uruchamiasz bezpośrednio. To zestaw narzędzi obsługujący zawiłą pracę zaplecza: pobieranie plików gry, zarządzanie autentykacją za pomocą kont Microsoft, uruchamianie gry z niestandardowymi parametrami i obsługę modloaderów takich jak Forge i Fabric.

Projekt ma 274 gwiazdki na GitHubie i napisany jest w C#, co oznacza, że potrzebujesz przynajmniej podstawowej znajomości programowania .NET. I szczerze mówiąc, to właśnie jest tutaj docelowa publiczność: deweloperzy budujący launchery, a nie gracze szukający łatwiejszego sposobu na grę.


Kiedy warto budować niestandardowy launcher

Rzecz w tym, że większość graczy nie potrzebuje niestandardowego launchera. Oficjalny launcher działa świetnie dla zwykłego Minecrafta. Ale są rzeczywiste przypadki, kiedy niestandardowy launcher ma sens.

Może prowadzisz serwer społeczności i chcesz dystrybuować wstępnie skonfigurowanego klienta z już wbudowanymi twoimi modami i packiem tekstur. Nowi gracze dołączają, pobierają twój launcher, klikają grę i wszystko jest gotowe. Bez wątków "które mody zainstalować?", bez zepsutych konfiguracji. Umieszczenie serwera na naszej liście serwerów Minecraft to jedno, ale upewnienie się, że gracze mogą się rzeczywiście połączyć bez problemów, to drugie.

Lub budujesz platformę do dystrybucji modpacków i potrzebujesz ścisłej kontroli nad zarządzaniem wersjami i aktualizacjami modów. Może pracujesz nad wyspecjalizowanym launcherem dla konkretnego regionu lub trybu gry. To scenariusze, w których CmlLib.Core przestaje być overkille i staje się naprawdę przydatny.


Rozpoczęcie pracy: instalacja i pierwsze kroki

Instalacja CmlLib.Core oznacza dodanie jej do projektu .NET za pośrednictwem NuGet. Jeśli wcześniej pracowałeś z pakietami NuGet, to jest ci znane.

bash
dotnet add package CmlLib.Core

Po zainstalowaniu możesz zacząć pisać kod launchera. README pokazuje podstawowy przykład: pobierz wszystkie dostępne wersje, a następnie uruchom grę. Oto jak to wygląda:

csharp
using CmlLib.Core;

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

To samo jest potężne. Odpytujesz manifest wersji Minecraft i dostajesz wszystko, co jest dostępne: oficjalne wydania, snapshoty, starsze kompilacje. Biblioteka obsługuje połączenie z serwerami Microsoftu, parsowanie manifestu i przedstawienie go jako czystych obiektów C#.

Następnym krokiem jest faktyczne uruchomienie gry. To właśnie tutaj robi się poważnie.

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

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

Jedno wywołanie obsługuje pobieranie plików gry dla wersji 1.21, ich walidację i zbudowanie procesu Windows gotowego do wykonania. Biblioteka nawet zarządza twoim środowiskiem Java, jeśli tego potrzebujesz.


Główne cechy, które warto zrozumieć

Autentykacja. Nowoczesny Minecraft wymaga autentykacji za pomocą konta Microsoft (wieczny odpoczynek dla kont Mojang). CmlLib.Core obsługuje pełny przepływ OAuth, odświeżanie tokenów i zarządzanie sesją. Nie musisz rozumieć wszystkich brzydkich szczegółów działania systemu autentykacji Microsoft. Szczerze mówiąc, nie polecam próbować tego samemu, chyba że lubisz czytać gęstą dokumentację API.

Zarządzanie wersjami. Wersje podstawowe, snapshoty, wersje z modami, stare kompilacje - biblioteka zapytuje wszystko i prezentuje to konsekwentnie. Możesz poprosić o wszystkie wersje i filtrować do tego, co chcesz. Lub możesz wycelować w określone wersje, takie jak 1.21, i pozwolić bibliotece znaleźć właściwą.

Obsługa modów. Forge, Fabric, LiteLoader - CmlLib.Core rozumie te modloadery. Możesz zbudować proces, który uruchamia wersję z modami w taki sam sposób, w jaki uruchamiałbyś zwykłą. Biblioteka obsługuje pobieranie instalatora modloadera i plików gry oddzielnie, a następnie łączy je razem.

Wieloplatformowość. Windows, Linux, macOS - biblioteka abstrahuje różnice między platformami. Piszesz raz, a to działa wszędzie. To jest ogromne, jeśli dystrybuujesz launcher do zróżnicowanej bazy graczy.

Śledzenie postępu. Pobrano 50 MB z 2 GB? Biblioteka generuje zdarzenia podczas pobierania i weryfikacji plików. To oznacza, że twój launcher może pokazać graczom rzeczywisty pasek postępu zamiast kręcącego się kółka ładowania. README pokazuje to za pomocą callbacków postępu pliku i postępu bajtów, co jest naprawdę przemyślanym designem API.


Budowanie czegoś rzeczywistego (trudniejsza część)

Stworzenie podstawowego launchera, który pobiera i uruchamia grę, to łatwa część. Prawdziwa złożoność pojawia się, gdy dodajesz niestandardowe funkcje: interfejs użytkownika, niestandardowe ustawienia, integrację z modami społeczności, automatyczne aktualizacje samego launchera.

Allaje w dworu leśnym w Minecrafcie
Allaje w dworu leśnym w Minecrafcie

CmlLib.Core daje ci podstawę. To nie kompletny framework launchera jak oficjalny launcher. Jesteś odpowiedzialny za interfejs użytkownika, doświadczenie użytkownika, branding, wszystko co sprawia, że twój launcher czuje się jak prawdziwy produkt. Ale ciężka praca - komunikacja z serwerami Mojang, zarządzanie plikami gry, obsługa autentykacji - to już jest rozwiązane.

Projekt zawiera linki do przykładowego launchera na GitHubie, co pomaga. Zobaczenie rzeczywistego kodu uruchamiającego rzeczywiste funkcje jest znacznie bardziej przydatne niż sama dokumentacja.


Rzeczy, które mogą być problematyczne

Złożoność środowiska Java. Minecraft potrzebuje Java, a kompatybilność wersji Java jest... trudna. CmlLib.Core może pomóc w instalacji Java, ale zrozumienie, które wersje Java działają z którymi wersjami Minecraft, ciąży jeszcze na tobie. Biblioteka to abstrahuje, ale nie czyni Javy magicznie prostą.

Ścieżki plików i katalogi. Domyślnie biblioteka używa standardowego katalogu gier twojego systemu operacyjnego. Windows używa AppData\Roaming\.minecraft, Linux używa ~/.minecraft, macOS używa ~/Library/Application Support/minecraft. Możesz to dostosować, ale jeśli się pomylisz, launcher zainstaluje pliki w dziwnych miejscach. Sprawdź oficjalną dokumentację, jeśli widzisz, że gry nie uruchamiają się.

Wygaśnięcie tokenu uwierzytelniającego. Tokeny Microsoft nie trwają wiecznie. Jeśli budujesz launcher, który jest otwarty przez wiele dni, musisz obsługiwać odświeżanie tokenów. Biblioteka to zapewnia, ale musisz to faktycznie używać. Zignoruj to, a użytkownicy będą losowo wylogowywani w trakcie sesji. Niezbyt zabawne.


Porównanie z innymi podejściami

Mógłbyś napisać własny launcher od zera, rozmawiając bezpośrednio z serwerami Mojang. Nie rób tego. CmlLib.Core obsługuje zmiany API, przypadki brzegowe i niuanse protokołów, które odkryjesz dopiero po zainwestowaniu tygodni. Życie jest za krótkie na to.

Mógłbyś też użyć oficjalnego launchera jako punktu wyjścia i go zmodyfikować, ale to jest kruche i prawnie niejasne. Budowanie na bazie CmlLib.Core jest czystsze i łatwiejsze w utrzymaniu.

Na Modrinth i podobnych platformach znajdziesz inne narzędzia launcherów, często specjalizujące się w modpackach. Jeśli budujesz jednorazowy launcher dla serwera społeczności lub konkretnego modpacku, te mogą być szybsze. Ale jeśli chcesz pełną kontrolę i możliwość dodawania niestandardowych funkcji w przyszłości, CmlLib.Core daje ci tę podstawę.


Zanim zaczniesz pisać kod

CmlLib.Core jest aktywnie utrzymywana i otrzymuje aktualizacje. Najnowsza wersja to v4.0.4, która rozwiązała zmiany hostu API i dodała testowanie modloadera Quilt. Ten projekt jest w złotym środku: wystarczająco stabilny do produkcji, ale ciągle się ulepsza.

Chcesz przeczytać oficjalną wiki, dostępną zarówno w angielskim, jak i koreańskim. Jest kompletna - znacznie lepsza niż próba zgadywania, jak używać biblioteki samych przykładów. Poświęć 30 minut na czytanie dokumentacji, zanim zaczniesz kodować. Serio.

A jeśli się utkniesz, projekt ma społeczność Discord. Prawdziwi ludzie, którzy już rozwiązali twój problem, zwykle pojawiają się szybko.

Budowanie niestandardowego launchera nie jest banalne. Ale jeśli go potrzebujesz, CmlLib.Core usuwa największy punkt bólu: zarządzanie samym klientem Minecraft. Wszystko inne to po prostu inżynieria oprogramowania, na którą się zgodziłeś.

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!