Minestom は、開発者が Mojang からのコードを使用せずに独自の Minecraft サーバー ソフトウェアを作成できるオープンソース ライブラリです。
Mojang のバニラ サーバーと Minestom ベースのサーバーの主な違いは、Mojang のサーバーにはデフォルトで機能が含まれていないことです。ただし、私たちはあらゆることを簡単に実現できるように設計された完全な API を持っています。
これは開発者向け API であり、エンドユーザーによる使用を意図していません。 Bukkit/Forge/Sponge をこれに置き換えても、それらの API は実装されていないため機能しません。
Minestom は Bukkit/Forge/Sponge のようにインストールされません。 Minestom は Java ライブラリであるため、他の Java ライブラリと同じ方法でロードする必要があります。つまり、Minestom を依存関係として追加し、コードを追加して自分でコンパイルする必要があります。
Minestom は Maven Central で入手でき、次のようにインストールできます (Gradle/Groovy)。
repositories {
mavenCentral()
maven { url ' https://jitpack.io ' }
}
dependencies {
implementation ' net.minestom:minestom-snapshots:<???> '
}
Minestom ライブラリの使用方法の例は、ここで入手できます。あるいは、公式 Wiki または Javadoc を確認することもできます。
Minecraft はリリース以来大きく進化しており、今日のサーバーのほとんどはバニラ機能を活用しておらず、そのために苦労することさえあります。私たちの対象読者は、標準機能からほとんど恩恵を受けないサーバーを作成したいと考えているユーザーです。例: クリエイティブ、kitpvp。目標は、より多くのパフォーマンスを必要とするユーザーに提供することです。言い換えれば、速度を低下させるすべてのバニラ機能を削除するよりも、不足している必要なすべてのバニラ機能を実装する方が時間がかからない場合には、Minestom を使用するのが理にかなっています。
Minestom は完璧ではありません。私たちの選択によって、場合によってははるかに良くなる場合もあれば、場合によっては悪くなる場合もあります。
ゲームにデフォルトで何も含まれていない場合でも、それらを追加する方法が簡素化されています。ここにプレビューがあります。
それが私たちの主要なコンセプトです。世界は友達と生き残るには最適ですが、規模が拡大すると管理できなくなる可能性があります。最も良い例は Skyblock やミニゲームにあり、各部分を適切に分離できず、ファイルに含まれる不要なデータによって引き起こされるオーバーヘッドは言うまでもなく、すべてをファイルに保存する必要があります。インスタンスはそれに対する軽量のソリューションであり、すべてのチャンクをメモリ内にのみ保持でき、すぐにコピーして別のプレーヤーに送信し、カスタム シリアル化などを行うことができます...
外出先でインスタンスを直接作成できることは必須であり、これによりさらに多くのプロジェクトを前進させることができると信じています。
インスタンスにはパフォーマンス上の利点もあります。完全にシングルスレッドであるか、ワールドごとに 1 つのスレッドを使用する他のものとは異なり、設定された数のスレッド (プール) を使用してすべてのチャンクをインスタンスから独立して管理します。これは、より多くの CPU パワーを使用することを意味します。
Minestom はデフォルトではチェストが何であるかを知りません。それがインベントリを開くことを彼に伝える必要があります。すべての「特殊ブロック」(視覚的なブロックだけではありません) には、特殊なハンドラーが必要です。このハンドラーを適用すると、どこにでも簡単に配置できるブロックが完成します。ただし、すべてのブロックは視覚的に存在しますが、デフォルトでは相互作用がないだけです。
「パッシブ」または「アグレッシブ」モンスターという用語は存在しません。近づきすぎるプレイヤーに突進する空飛ぶチキンを作るのを誰も止めません。NMS でそれを行うと、難読化と大量の継承のせいで本当に混乱します。
これは Minecraft が大きく進化した分野であり、インベントリは現在、クリック可能なアイテムとコールバックを備えたクライアント <-> サーバー インターフェイスとしてよく使用されています。当社は、ソリューションをプログラミングすることなく、これらのインタラクションをネイティブにサポートしています。
コマンドは、クライアントとサーバー間の通信の最も簡単な方法です。 1.13 Minecraft には「Brigadier」と名付けられた新しいライブラリが組み込まれて以来、args 型の可能性を最大限に活用するように設計された API を統合しました。
#mcdevs
- プロトコルとファイル形式の研究。貢献ファイルを参照してください。すべての WIP 機能はドラフト PR としてプレビューされます
このプロジェクトは、Apache License Version 2.0 に基づいてライセンスされています。