Minecraftサーバーの改造-それはどのように機能しますか?


9

Minecraftサーバーは単一のjarとして提供されます。modはどのように開発されますか?彼らはどのように元の瓶と相互作用しますか?内部には何がありますか?

そこではどんなテクノロジーが関わっていますか?私は主にC ++ / Pythonの人ですが、改造の開発について何か学びたいです。

回答:


11

JARは、使用されるさまざまなクラスファイルやその他のメタデータを含む単なるZIPファイルです。これは完全に標準化された形式です。

ZIPファイルを抽出することができ、クラスファイルは修正のために必要に応じて編集できます。変更されたファイルはアーカイブに追加され、サーバーは元のファイルの代わりに変更されたファイルを使用します。

技術的には、Minecraftの改造は元のコードの「ハッキング」バージョンです。実際のバイナリクラスファイルは、ゲームに新しいものを知らせるために変更する必要があります。公式のmodサポートはまだありません(Notchはベータ中に動作する予定であると述べていますが)。

もちろん、MODを積極的に設計している場合、これは良い方法ではありません。代わりに、カスタムコードを適切な場所で実行できるようにする、ある種のプラグインアーキテクチャを設計します。これをどのように行うかは、MODに何を実行させたいかによって異なります。たとえば、セキュリティが懸念される場合は、何らかのスクリプトを使用するようにMODインターフェースを設計し、MODの実行を制限できます。ユーザーのコンピュータにあらゆる種類のもの。


これは完全に真実ではありません-たとえば、McAdminはC#で記述されました
BlueRaja-Danny Pflughoeft

@BlueRaja:私の意見では、MCAdminは実際にはMODではありません-カスタムのスタンドアロンサーバーです。それはクライアントがコマンドを介して新しいことをすることを可能にするかもしれませんが、私は2つのことは異なると考えています。
Michael Madsen

え?いいえ、それは間違いなくmodでした。Minecraftサーバーのラッパーでした。minecraftサーバーを実行する必要があるため、スタンドアロンではありませんでした。私はソースを簡単に調べたところ、ネットワークメッセージを傍受し、途中で送受信されるように変更したようです。
BlueRaja-Danny Pflughoeft、2011

3
@BlueRaja:ええ-スタンドアロンサーバーであると断言できたかもしれませんが、繰り返しますが、実際に使用したことはありません。プレーヤーとサーバー間のプロキシサーバーとして機能するように見えるため、これは一種の特殊なケースです。私はまだそれをmodとは呼びませんが、それは私だけかもしれません。
マイケル・マドセン、2011

6

シングルプレーヤーの改造は、元のコードのハッキングバージョンです。マルチプレイヤーMODは現在異なります。ほとんどすべてがhey0のサーバーラッパーを使用します。これはminecraft_server.jar(またはJavaランドでの用語)にリンクしますが、独自の関数クラスを定義し、いくつかのコア関数をオーバーロードし、独自のmain()を実行します

Hey0はmod APIを提供します。見る


1

ちなみに、Mojangは近い将来に「Mod API」をリリースする予定です(ベータ期間中なので、2011年11月頃の正式リリース前)。

実際、Notchのブログで言及されているように、これは完全なソースコードになります。

http://notch.tumblr.com/post/4955141617/the-plan-for-mods

しかし今のところ、jarを「逆コンパイル」して、部分的に難読化されたコードを確認し、後で使用またはデバッグするために再コンパイルする必要があります。

これを行うには、Minecraft Coder's Pack http://mcp.ocean-labs.de/index.php/MCP_Releasesを強くお勧めします

フォーラムには、次のようにいくつかのmoddingチュートリアルもあります。http//www.minecraftforum.net/topic/96862-creating-mods-modding-tutorials-21511/

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.