Learn · concepts
インターメディエリーチって何?Minecraftのマッピング解説
Fabricの安定した命名レイヤーであるIntermediaryは、難読化されたMinecraftのコードを管理します。フィールドの名前が変更されても、Modはバージョン間で動作を停止することなく引き続き機能します.
インターメディアリとは?
インターメディアリとは、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 / Mojmap | MinecraftClient, isPlayerSpawned() | ビルド時の開発者 | 読みやすい、バージョン管理されている |
この分離により、開発者はフレンドリーな名前でコーディングしながら、実際に配布されるものはバージョン安定性を維持できます。読みやすいマッピングは交換可能ですが、インターメディエリーチは誰もが合意する共通の基盤です。
MODのライフサイクルにおける役割
- 開発者は、Yarn や Mojmap のような読みやすいマッピングを参照してコードを記述します。
- ビルドプロセスでは、それらの名前がインターメディアリ名に変換されます。
- その Mod は、インターメディアリシンボルを参照する jar ファイルとして配布されます。
- 起動時に、Fabric は実行中のゲームの難読化された名前をインターメディアリにリマップし、Mod とゲームが整合するようにします。
マッピングは、Fabric Modding において目立たないものの重要な役割を果たしています。アップデート後も Mod が正しいコードを指し示すための契約のようなものです.
よくある質問
いいえ。Yarn は、開発者のコードに対する読みやすいマッピングです。Intermediary は、実際に配布されるコンパイル済み Mod が依存する、安定した機械生成されたレイヤーです。Yarn の名前は、ビルド時に Intermediary にコンパイルされます.
生成されるもので、書かれるものではありません。class_1234のような名前は、美しければいいというものではなく、ユニークで永続的である必要だけがあります。読みやすさは、YarnやMojmapによって後から処理されます.
いいえ。仲介者は名前を安定させますが、Mojangがメソッドを削除または書き換えると、名前に関わらず、その下のコードは消えます。これにより、破損は軽減されますが、完全に排除されるわけではありません.
それほどでもない。Fabric の内部で動いているだけなんだ。開発者か、何らかの仲介シンボルが記載されたクラッシュログを読む場合にしか出会わない.