Skip to content
ブログに戻る
CmlLib.Coreでカスタムマインクラフトランチャーを構築する

CmlLib.Coreでカスタムマインクラフトランチャーを構築する

Alexandru Maftei
Alexandru Maftei
@ice
Updated
4 閲覧
TL;DR:CmlLib.Coreは、認証、バージョン管理、modローダー、クロスプラットフォーム展開をサポートする、カスタムMinecraftランチャー構築用の.NETライブラリです。modpackやコミュニティサーバーを配布する開発者に最適です。

".NET Minecraft ランチャーライブラリ。全バージョン、認証、Forge、Java、クロスプラットフォーム対応"

CmlLib/CmlLib.Core · github.com
⭐ 274 スター💻 C#📄 MIT

公式ランチャーに頼らずに独自のMinecraftランチャーを作成したいですか?CmlLib.Coreは、認証、バージョン管理、modの読み込みなど、複雑な処理をすべて処理する.NETライブラリです。思い通りに動作するランチャーの構築に集中できます。

このプロジェクトの概要

CmlLib.Coreは、カスタムMinecraftランチャーの構築を望む開発者向けに設計された.NETライブラリです。コミュニティがどのようにしてmodされたバージョンを配布しているのか、またはサーバーがカスタムクライアントセットアップを管理する方法について疑問に思ったことがあれば、このライブラリはそのようなインフラの多くを支えています。これはmodではなく、クライアントパッチでもなく、直接実行するものでもありません。これはツールキットであり、複雑なバックエンド作業を処理します。ゲームファイルのダウンロード、Microsoftアカウントでの認証管理、カスタムパラメータでのゲーム起動、ForgeやFabricなどのmodローダーのサポートです。

このプロジェクトはGitHubで274のスターを獲得しており、C#で書かれています。つまり、少なくとも基本的な.NET開発の知識が必要です。正直なところ、これがこのライブラリの対象ユーザーです。ランチャーを構築する開発者であり、より簡単にプレイしたいプレイヤーではありません。


カスタムランチャーを構築する場合

カスタムランチャーについての現実は、ほとんどのプレイヤーには必要ないということです。公式ランチャーはバニラのMinecraftに問題なく機能します。しかし、カスタムランチャーが理にかなう実際のケースもあります。

おそらく、コミュニティサーバーを運営しており、カスタムmodとリソースパックがすでに組み込まれた事前設定されたクライアントを配布したいのでしょう。新しいプレイヤーがあなたのランチャーをダウンロードしてプレイボタンを押すと、すべてが準備完了です。「どのmodをインストールすればよいのか?」というスレッドや壊れた設定はありません。サーバーをMinecraft サーバーリストに掲載することは1つのことですが、プレイヤーが実際に問題なく接続できることを確認することは別の問題です。

または、modpack配布プラットフォームを構築しており、バージョン管理とmod更新の厳密なコントロールが必要な場合があります。特定の地域またはゲームモード向けの専用ランチャーに取り組んでいるかもしれません。これらはCmlLib.Coreがやり過ぎから本当に有用になるシナリオです。


入門: インストールと最初のステップ

CmlLib.Coreをインストールすることは、NuGetを使用して.NETプロジェクトにプルすることを意味します。以前にNuGetパッケージを使用したことがあれば、これはおなじみのテリトリーです。

bash
dotnet add package CmlLib.Core

インストール後、ランチャーコードの作成を開始できます。READMEは基本的な例を示しています。利用可能なすべてのバージョンを取得してからゲームを起動します。これがどのように見えるかです。

csharp
using CmlLib.Core;

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

これだけで強力です。Minecraftのバージョンマニフェストをクエリして、利用可能なすべてのものを取得しています。バニラリリース、スナップショット、古いビルドです。ライブラリはMicrosoftのサーバーへの接続を処理し、マニフェストを解析して、きれいなC#オブジェクトとして提示します。

次のステップは実際にゲームを起動することです。ここが状況が現実になるところです。

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

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

その1つの呼び出しでバージョン1.21のゲームファイルをダウンロードし、それらを検証し、実行する準備ができたWindowsプロセスを構築します。ライブラリは、必要に応じてJavaランタイムも管理します。


理解する価値のあるコア機能

認証。 最新のMinecraftはMicrosoftアカウント認証を必要とします(Mojangアカウント、安らかに眠れ)。CmlLib.Coreは完全なOAuthフロー、トークン更新、セッション管理を処理します。MicrosoftのAuth システムがどのように機能するかの厄介な詳細を理解する必要はありません。実は、濃密なAPI文書を読むのが好きでない限り、自分でそれを理解しようとしないことをお勧めします。

バージョン管理。 バニラバージョン、スナップショット、modされたバージョン、古いビルド - ライブラリはすべてをクエリして一貫して提示します。すべてのバージョンをリクエストして必要なものにフィルタリングできます。または1.21のような特定のバージョンをターゲットして、ライブラリが正しいバージョンを見つけるようにしましょう。

Mod サポート。 Forge、Fabric、LiteLoader - CmlLib.Coreはこれらのmodローダーを理解しています。バニラを起動するのと同じ方法で、modされたバージョンを起動するプロセスを構築できます。ライブラリはmodローダーインストーラーとゲームファイルを別々にダウンロードしてから、それらを正しく縫い合わせます。

クロスプラットフォーム。 Windows、Linux、macOS - ライブラリはプラットフォームの違いを抽象化します。一度書くと、どこでも実行されます。多様なプレイヤーベースにランチャーを配布している場合、これは非常に重要です。

進捗トラッキング。 2GBのうち50MBダウンロードされましたか?ライブラリはファイルのダウンロードと検証時にイベントを発火させます。つまり、ランチャーは絶望の回転円の代わりに、プレイヤーに実際の進捗バーを表示できます。READMEはファイル進捗とバイト進捗コールバックでこれを示していますが、これは本当に思慮深いAPIデザインです。


実際の何かを構築する(難しい部分)

ゲームをダウンロードして起動する基本的なランチャーを作成することは簡単な部分です。実際の複雑さは、GUIやカスタム設定、コミュニティmodとの統合、ランチャー自体の自動更新など、カスタム機能を追加するときに現れます。

Minecraft の林の館のアレイ
Minecraft の林の館のアレイ

CmlLib.Coreは基礎を提供します。公式ランチャーのような完全なランチャーフレームワークではありません。UI、UX、ブランディング、ランチャーを本当のプロダクトのように感じさせるすべてのものについては、あなたが責任があります。しかし、難しい仕事 - Mojangのサーバーとの通信、ゲームファイルの管理、認証の処理 - それはすでに解決されています。

プロジェクトはGitHub上のサンプルランチャーへのリンクを含んでいるので、それが役立ちます。ドキュメントだけでは、実際のコードが実行されているのを見ることははるかに有用です。


人々が引っかかること

Javaランタイムの複雑さ。 Minecraftが必要とし、Javaバージョン互換性は複雑です。CmlLib.Coreはサポートできるオプションがあります。しかし、どのバージョンのJavaがどのバージョンのMinecraftで機能するかを理解することはまだあなたの責任です。ライブラリは抽象化していますが、Javaを魔法のように単純にすることはできません。

ファイルパスとディレクトリ。 デフォルトでは、ライブラリはOSの標準ゲームディレクトリを使用します。Windowsはアドレス帳/ローミング/.minecraft を使用し、LinuxはU~/.minecraft を使用し、macOSは~/ライブラリ/アプリケーション サポート/minecraft を使用します。これをカスタマイズできますが、間違うと、ランチャーは奇妙な場所にファイルをインストールします。ゲームが起動に失敗している場合は、公式ドキュメントをご確認ください。

認証トークン有効期限。 Microsoftトークンは永遠に続くわけではありません。数日間開いたままのランチャーを構築している場合は、トークン更新を処理する必要があります。ライブラリはこれを提供していますが、実際に使用する必要があります。それを無視して、ユーザーはセッション中にランダムにログアウトされます。楽しくないです。


他のアプローチとの比較

スクラッチからランチャーを作成でき、Mojangのサーバーと直接通信できます。しないでください。CmlLib.Coreは、API変更、エッジケース、および週間投資した後にのみ発見するプロトコルの微妙さを処理します。人生はそのために短すぎます。

公式ランチャーを起点として修正することもできますが、それは脆く法的にグレーです。CmlLib.Coreの上に構築することがより清潔で保守しやすいです。

Modrinth and similar platforms では、他のランチャーツール、多くの場合modpack特化を見つけます。コミュニティサーバー用またはspecific modpackの用に個別のランチャーを構築している場合は、これらの方が高速である可能性があります。しかし、完全なコントロールと、ダウンザラインのカスタム機能を追加する能力を望んでいるなら、CmlLib.Coreはその基盤を提供します。


コーディングを開始する前に

CmlLib.Coreは積極的に保守されており、更新を取得しています。最新リリースはv4.0.4で、APIホストの変更に対応し、Quiltmodローダーテストを追加しました。そのプロジェクトは良い時期にあります。プロダクション用に安定していますが、改善を取得しています。

英語と韓国語の両方で利用可能な公式wikiを読みたいでしょう。それは完全です - ライブラリの使用方法を推測しようとするだけではるかに優れています。コーディング前に30分間ドキュメントを読んでください。真剣に。

もし引っかかったら、プロジェクトにはDiscordコミュニティがあります。あなたの問題をすでに解決した本当の人間は通常速く表示されます。

カスタムランチャーの構築は簡単ではありません。しかし、1つが必要な場合、CmlLib.Coreは最大の痛みの問題を削除します。Minecraftクライアント自体を管理することです。他のすべてはちょうどソフトウェアエンジニアリングであり、それはとにかくサインアップしたものです。

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!