
CmlLib.Core ile Özel Minecraft Başlatıcıları Oluşturma
".NET Minecraft Başlatıcı Kitaplığı. Tüm Sürümler, Kimlik Doğrulama, Forge, Java, Platformlar Arası"
CmlLib/CmlLib.Core · github.com
Resmi olanın yerine kendi Minecraft başlatıcınızı oluşturmak ister misiniz? CmlLib.Core, karmaşık şeyleri halleden bir .NET kitaplığıdır: kimlik doğrulama, sürüm yönetimi, mod yükleme. Böylece istediğiniz şekilde çalışan bir başlatıcı oluşturmaya odaklanabilirsiniz.
Bu Proje Neler Yapar
CmlLib.Core, özel Minecraft başlatıcıları oluşturmak isteyen geliştiriciler için tasarlanmış bir .NET kitaplığıdır. Hiç merak ettiniz mi topluluklar modlanmış oyun sürümlerini nasıl dağıtıyor veya bazı sunucuları özel istemci kurulumlarını nasıl yönetiyor? Bu kitaplık bu altyapının çoğunu destekleyen şeydir. Bu bir mod değildir, istemci yaması değildir ve doğrudan çalıştırdığınız bir şey değildir. Bu, sağlam arka uç işini yöneten bir araç setidir: oyun dosyalarını indirme, Microsoft hesaplarıyla kimlik doğrulama yönetme, oyunu özel parametrelerle başlatma ve Forge ve Fabric gibi modloader'ları destekleme.
Proje GitHub'da 274 yıldızda ve C# ile yazılmıştır, bu da .NET geliştirmeyle en azından temel rahatlık düzeyine ihtiyacınız olacağı anlamına gelir. Gerçekten, buradaki hedef kitle bu: başlatıcı oluşturan geliştiriciler, oyun oynamak için daha kolay bir yol arayan oyuncular değil.
Ne Zaman Özel Başlatıcı Oluşturursunuz
Özel başlatıcılar hakkında şu var: çoğu oyuncu birini gerçekten ihtiyaç duymuyor. Resmi başlatıcı saf Minecraft için gayet iyi çalışır. Ama özel başlatıcının mantıklı olduğu gerçek durumlar var.
Belki bir topluluk sunucusu işletiyorsunuz ve özel modlarınız ve kaynak paketiniz zaten içine gömülü önceden yapılandırılmış bir istemci dağıtmak istiyorsunuz. Yeni oyuncular katılır, başlatıcınızı indirir, oynat butonuna basar ve her şey hazır. "Hangi modları kurarım?" başlıklarına yok, bozuk konfigürasyonlara yok. Sunucunuzu Minecraft Sunucu Listesinde öne çıkarmak bir şeydir, oyuncuların hızlı bağlanabilmesini sağlamak başka bir şeydir.
Ya da bir modpack dağıtım platformu oluşturuyorsunuz ve sürüm yönetimi ve mod güncellemeleri üzerinde sıkı kontrol istiyorsunuz. Belki belirli bir bölge veya oyun modu için özel bir başlatıcı üzerinde çalışıyorsunuz. CmlLib.Core overkill olmaktan çıkıp gerçekten faydalı hale gelen senaryolar bunlardır.
Başlarken: Kurulum ve İlk Adımlar
CmlLib.Core'u kurmak, onu NuGet aracılığıyla bir .NET projesine çekmek anlamına gelir. Daha önce NuGet paketleriyle çalıştıysanız, bu tanıdık bölge.
dotnet add package CmlLib.CoreKurulduktan sonra, başlatıcı kodu yazmaya başlayabilirsiniz. README temel bir örnek gösterir: tüm mevcut sürümleri getir, sonra oyunu başlat. İşte bununla neye benziyor:
using CmlLib.Core;
var launcher = new MinecraftLauncher();
var versions = await launcher.GetAllVersionsAsync();
foreach (var version in versions)
{
Console.WriteLine($"{version.Type} {version.Name}");
}Bu tek başına güçlüdür. Minecraft'ın sürüm manifestini sorguluyorsunuz ve geri alıyorsunuz: saf yayınlar, anlık görüntüler, eski derlemeler. Kitaplık Microsoft'un sunucularına bağlanmayı, manifestini ayrıştırmayı ve temiz C# nesneleri olarak sunmayı yönetir.
Sonraki adım gerçekten oyunu başlatmaktır. İşte şey, bu yerde işler ciddi hale geliyor.
using CmlLib.Core;
using CmlLib.Core.ProcessBuilder;
var launcher = new MinecraftLauncher();
var process = await launcher.InstallAndBuildProcessAsync("1.21", new MLaunchOption());
process.Start();Bu tek çağrı, 1.21 sürümü için oyun dosyalarını indirmeyi, onları doğrulamayı ve yürütülmeye hazır bir Windows işlemi oluşturmayı yönetir. Kitaplık gerekirse Java çalışma ortamınızı bile yönetir.
Anlamaya Değer Temel Özellikler
Kimlik Doğrulama. Modern Minecraft, Microsoft hesabı kimlik doğrulaması gerektirir (Mojang hesaplarına selam, sessiz saygı ile yatsınlar). CmlLib.Core, tam OAuth akışını, belirteç yenilemeyi ve oturum yönetimini yönetir. Microsoft'un kimlik doğrulama sisteminin sağlı detaylarını anlamanız gerekmez. Aslında, bunları kendin anlamaya çalışmanı tavsiye etmem, çünkü yoğun API belgelerini okumaktan hoşlanırsan.
Sürüm Yönetimi. Saf sürümler, anlık görüntüler, modlanmış sürümler, eski derlemeler - kitaplık her şeyi sorgular ve tutarlı bir şekilde sunar. Tüm sürümleri sor ve istediğine filtrele. Ya da 1.21 gibi belirli sürümleri hedefle ve kitaplığın doğru olanı bulmasını sağla.
Mod Desteği. Forge, Fabric, LiteLoader - CmlLib.Core bu modloader'ları anlar. Modlanmış bir sürümü saf sürümü başlattığın şekilde başlatan bir işlem oluşturabilirsin. Kitaplık modloader yükleyicisini ve oyun dosyalarını ayrı ayrı indirir, sonra bunları doğru şekilde birleştirir.
Platformlar Arası. Windows, Linux, macOS - kitaplık platform farklarını özetler. Bir kez yazarsın ve her yerde çalışır. Başlatıcıyı çeşitli bir oyuncu tabanına dağıtıyorsan bu çok önemlidir.
İlerleme Takibi. 2GB'ın 50MB'ı indirildi mi? Kitaplık, dosyalar indirilip doğrulandığında olaylar tetikler. Bu, başlatıcının oyunculara dönen bir çember yerine gerçek bir ilerleme çubuğu gösterebileceği anlamına gelir. README bunu dosya ilerlemesi ve bayt ilerlemesi geri aramaları ile gösterir, bu gerçekten düşünceli API tasarımı.
Gerçek Bir Şey Oluşturma (Zor Kısım)
Oyunu indiren ve başlatan temel bir başlatıcı oluşturmak kolay kısım. Gerçek karmaşıklık, özel özellikler eklediğinde ortaya çıkar: GUI, özel ayarlar, topluluk modlarıyla entegrasyon, başlatıcının kendisine otomatik güncellemeler.

CmlLib.Core temeli sağlar. Bu resmi başlatıcı gibi tam bir başlatıcı çerçevesi değildir. Arayüz, UX, marka, başlatıcını gerçek bir ürün gibi hissettiren her şey sizin sorumluluğunuzdadır. Ama zor iş - Mojang'ın sunucularıyla iletişim kurma, oyun dosyalarını yönetme, kimlik doğrulamayı işleme - bu zaten çözüldü.
Proje GitHub'da örnek bir başlatıcıya bağlantılar içerir, bu yardımcı olur. Gerçek kodu gerçek özelliklerle çalıştırırken görmek, yalnız belgelerden çok daha faydalıdır.
İnsanları Şaşırtan Şeyler
Java Çalışma Ortamı Karmaşıklığı. Minecraft'ın Java'ya ihtiyacı var ve Java sürüm uyumluluğu... karışık. CmlLib.Core Java'yı kurmaya yardımcı olabilir, ancak Java'nın hangi sürümlerinin Minecraft'ın hangi sürümleriyle çalıştığını anlamak yine sizin üzerinizedir. Kitaplık onu özetler, ama Java'yı sihirli bir şekilde basit yapmaz.
Dosya Yolları ve Dizinler. Varsayılan olarak, kitaplık OS'nin standart oyun dizinini kullanır. Windows AppData/Roaming/.minecraft kullanır, Linux ~/.minecraft kullanır, macOS ~/Library/Application Support/minecraft kullanır. Bunu özelleştirebilirsin, ama yanlış yapmak başlatıcının dosyaları garip yerlere kurmasına neden olur. Oyunları başlatamıyorsa resmi belgeleri kontrol et.
Kimlik Doğrulama Belirteci Süresi Dolması. Microsoft belirteçleri sonsuza kadar sürmez. Günlerce açık kalan bir başlatıcı inşa ediyorsan, belirteç yenilemesini işlemelisin. Kitaplık bunu sağlar, ama gerçekten kullanmanız gerekir. Bunu göz ardı edin ve kullanıcılar rasgele oturumu sırasında çıkış yapılacak. Eğlenceli değil.
Diğer Yaklaşımlarla Karşılaştırma
Sıfırdan kendi başlatıcını yazabilir, doğrudan Mojang'ın sunucularıyla konuşabilirdin. Yapma. CmlLib.Core, API değişikliklerini, kenar durumlarını ve sadece haftalık yatırımdan sonra keşfettiğin protokol nüanslarını yönetir. Hayat buna harcamak için çok kısa.
Resmi başlatıcıyı başlangıç noktası olarak kullanabilir ve değiştirebilirdin, ama bu kırılgan ve yasal olarak gri. CmlLib.Core'un üzerine inşa etmek daha temiz ve daha bakımı kolaydır.
Modrinth ve benzeri platformlarda diğer başlatıcı araçlarını bulacaksın, genellikle modpack'ler için özel. Topluluk sunucunuz veya belirli bir modpack için tek seferlik bir başlatıcı oluşturuyorsan, bunlar daha hızlı olabilir. Ama tam kontrol istiyorsan ve ileride özel özellikler ekleme yeteneğini istiyorsan, CmlLib.Core sana o temeli verir.
Kod Yazmaya Başlamadan Önce
CmlLib.Core aktif olarak tutulur ve güncellemeler alır. En son sürüm v4.0.4'tür ve API ana bilgisayar değişikliklerini giderdi ve Quilt modloader testini ekledi. Bu proje ideal noktada: üretim için yeterince kararlı, ama yine de iyileştirmeler alıyor.
Resmi wikisini okumak isteyeceksin, hem İngilizce hem de Korece olarak mevcuttur. Dolu - örneklerden kitaplığı kullanmayı tahmin etmeye çalışmaktan çok daha iyidir. Kod yazmadan önce belgeler okumak için 30 dakika harcayın. Ciddiyim.
Ve takılıp kalırsan, projenin bir Discord topluluğu var. Sorunun çoğunu halleden gerçek insanlar genellikle çabuk ortaya çıkar.
Özel bir başlatıcı oluşturmak önemsiz değildir. Ama birinin ihtiyacın varsa, CmlLib.Core en büyük ağrı noktasını kaldırır: Minecraft istemcisini yönetme. Diğer her şey yazılım mühendisliğidir, bu zaten kaydolduğun şey.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.


