Learn · concepts

インターメディエリーチって何?Minecraftのマッピング解説

Fabricの安定した命名レイヤーであるIntermediaryは、難読化されたMinecraftのコードを管理します。フィールドの名前が変更されても、Modはバージョン間で動作を停止することなく引き続き機能します.

TRtrolPublished 1 min read

インターメディアリとは?

インターメディアリとは、FabricがMinecraftの難読化されたコードに重ねる、安定した名前空間層です。Mojangは、クラス、フィールド、メソッドの名前をスクランブル化してゲームをリリースします。これらの名前は、リリースごとに変化します。インターメディアリは、これらのそれぞれに固定された名前を与え、バージョン間で同じ名前を維持します。これにより、コンパイルされたModは、ゲームのアップデート後でも、パッチを適用するコードを常に探し続けることができます。

契約のようなものだと考えてください。Fabricは、ゲーム内に何かが存在する場合、そのものがインターメディアリの名前をバージョン間で同じに保つことを約束します。この契約こそが、コンパイルされたJARファイルとして配布されたModが、再コンパイルすることなく新しいバージョンで動作できることを可能にしています。

インターメディアリとは具体的に何か

インターメディアリは、マッピングのセットです。難読化されたMinecraftのシンボルと、安定した、機械的に生成された名前をペアにするルックアップテーブルです。ゲームがaと呼ぶクラスが、インターメディアリではclass_1234になることがあります。名前は醜いかもしれませんが、そのシンボルに対してリリース間で永続的です。

Mojangは、すべてのビルドでゲームを難読化します。名前はそうでなければリリースごとに変化するため、生の難読化された名前に対してコンパイルされたModは、ゲームのアップデートと同時に動作しなくなります。インターメディアリは、これらの名前を固定し、Modではなくマッピングが変動を吸収するようにします.

なぜファブリックMODにそれが求められるのか

MODは、開発者が記述する読みやすい名前ではなく、インターメディエリーチ名に対してコンパイルされて配布されます。この決定が、多くのケースにおいて、ファブリックMODが新しいゲームビルドでも再コンパイルなしに動作し続ける理由です。

ゲームが起動すると、Fabricは対応するバージョンのインターメディエリーチマッピングをロードし、難読化されたゲームクラスを、MODが期待する安定した名前にリマップします。MODとゲームは、どちらも生で提供しない名前セットで合流します。

インターメディエリーチマッピングと開発者マッピング

開発者はclass_1234のような名前を読んだり書いたりしません。YarnやMojmapのような、記号に説明的な名前を与える読みやすいマッピングに対して作業を行います。ビルド時に、これらの読みやすい名前は配布用にインターメディエリーチにコンパイルされます。

レイヤー誰が使用するかバージョン間で安定しているか
難読化a, field_5678手動では誰もいいえ
インターメディエリーチclass_1234, method_5678配信されるMODバイナリはい
Yarn / MojmapMinecraftClient, isPlayerSpawned()ビルド時の開発者読みやすい、バージョン管理されている

この分離により、開発者はフレンドリーな名前でコーディングしながら、実際に配布されるものはバージョン安定性を維持できます。読みやすいマッピングは交換可能ですが、インターメディエリーチは誰もが合意する共通の基盤です。

MODのライフサイクルにおける役割

  1. 開発者は、Yarn や Mojmap のような読みやすいマッピングを参照してコードを記述します。
  2. ビルドプロセスでは、それらの名前がインターメディアリ名に変換されます。
  3. その Mod は、インターメディアリシンボルを参照する jar ファイルとして配布されます。
  4. 起動時に、Fabric は実行中のゲームの難読化された名前をインターメディアリにリマップし、Mod とゲームが整合するようにします。

マッピングは、Fabric Modding において目立たないものの重要な役割を果たしています。アップデート後も Mod が正しいコードを指し示すための契約のようなものです.

よくある質問