Learn · mappings
何ですか Minecraft マッピング?解説
Minecraft マッピングは、a.b.cのような難読化されたコードを、modsやクライアントが読みやすく理解し、フックできるような名前のテーブルです.
マインクラフトのマッピングとは?
マインクラフトのマッピングとは、ゲームの難読化されたシンボルと人間が読める名前を紐付ける翻訳テーブルです。リテール版には、クラス、メソッド、フィールドがa、bk、c.d.eのような意味不明な短い文字列にリネームされて出荷されます。MCP、Yarn、またはMojangのマッピングのようなマッピングセットは、その混乱の上に実際の名前を重ねることで、開発者がコードを読み、そこにフックできるようになります。
マッピングがない場合、ゲームは技術的にはオープンですが、実質的には判読不能です。マッピングを適用すると、field_71090_bLとラベル付けされたフィールドがexperienceLevelのように読み取れるようになり、コードベース全体が突然通常のソフトウェアのように見えます。
なぜマインクラフトはマッピングが必要なのでしょうか?
マッピングは、MojangがMinecraftのリリースごとに難読化を行うために存在します。ビルドステップでは、すべてのクラスとメンバーが短いトークンに書き換えられます。これによりjarファイルがわずかに小さくなりますが、主にコードを理解しにくくします。これが、すべてのMODやクライアントが乗り越えなければならない壁です。
マッピングは、その壁の鍵です。それは一対一のリストです。左が難読化された名前、右が読み取り可能な名前です。これをゲーム全体に適用すると、スクランブルされたjarファイルが作業可能なソースツリーに戻ります.
話されることになる3つのマッピングセット
マッピングプロジェクトは数多く存在しますが、その中でも3つが主要な話題となっています。それぞれ異なる時代と異なる所有者に属しています。
MCP (Mod Coder Pack)
MCPは、1.14以前のモディフィケーションを可能にしたコミュニティマッピングです。これは2つのレイヤーで動作していました。Seargeプロジェクトが安定しているものの魅力的な名前ではない中間名(例:func_70071_h_)を生成し、MCPがそれらにフレンドリーな名前(例:onUpdate)を付与していました。多くの古い1.8.9スタンドアロンクライアントは、依然としてMCPマッピングされたツリーに対してコンパイルされ、MCPまたはSeargeの名前を反映させています。
Yarn
Yarnは、FabricMCによってFabricエコシステム向けに維持されているオープンソースのマッピングです。コミュニティによって書かれ、自由にライセンスされており、新しいMinecraftバージョンがリリースされると迅速にアップデートされる傾向があります。この迅速な対応こそが、Fabricのモッドが新しいバージョンを早期にリリースできる大きな理由の一つです。
Mojangのマッピング
Mojangのマッピング(しばしばMojmapと略される)は、1.14.4以降、すべてのリリースに添付されて公開されているMojang自身の公式の名前です。ソースから直接提供されるため、名前はMojangの開発者が実際に使用する名称と一致します。それらは、現代のクライアントにとってのデフォルトの出発点として、MCPとSeargeを事実上置き換えています。
MCP vs Yarn vs Mojangのマッピング
簡潔に言うと、MCPはレガシーのツールチェーン、Mojangのマッピングは公式の代替、そしてYarnはそれらの中間に位置し、多くのFabricプロジェクトで使用されているオープンなコミュニティセットです。重要な点において、これら3つを比較してみましょう。
| MCP | Yarn | Mojangマッピング | |
|---|---|---|---|
| メンテナンス | コミュニティ (Searge + MCP) | FabricMC | Mojang |
| 時代 | 1.14以前 (1.7から1.12) | 1.14以降 | 1.14.4以降 |
| 起源 | コミュニティ由来 | コミュニティ由来 | 最初の公式製品 |
| 典型的な用途 | レガシークライアント、古いモディング | Fabric | Fabric、Forge、NeoForge |
| 状態 | Mojmapに取って代わられ、廃止 | 稼働中 | アクティブなデフォルト |
マッピングがモッドツールチェーンにどのように適合するか
マッピングはコンパイル時にのみ機能し、実行時には機能しません。ビルドツールは難読化されたゲームを取り、マッピングを適用して、開発者が記述できる読みやすいコピーを渡します。モッドが完成すると、ツールチェーンはそれを再度マッピングして、参照がプレイヤーの実際のjarに含まれる難読化された名前と一致するようにします。
ローダーはこれに異なるアプローチを取ります。Fabricはプロジェクトに応じてYarnまたはMojangマッピングされたベースに対してビルドします。Forgeは歴史的に作業を分割し、一方のマッピングを通してコードを読みながら、別のマッピングに対して実行していました。Mojangマッピングのライセンスはビルド時に使用できるほど寛容であるため、現在のほとんどのツールチェーンはこれに依存しています.
中間層:MODを安定させる層
知っておくべき名前が一つあります。中間層(Intermediary)は、Fabricが採用している安定した中間層で、コンパイルされたMODが、読みやすいマッピングが変更されても引き続き動作するようにしています。読みやすい名前(YarnやMojmap)は人間が利用するために上に配置され、中間層は実行中のゲームのためにその下に一定の状態で存在します。以前のMCPの世界では、Seargeが同様の役割を担っていました。その考え方は単純です。バイナリに対する固定層、開発者にとって使いやすい層。
よくある質問
いいえ。マッピングは、コードを書く人にとってだけ名前を変更するものです。完成したMODは再び難読化された名前に再マッピングされるので、あなたが作業する読みやすい名前は、プレイヤーのゲームには決して到達しません.
歴史と所有権。MCPが最初で、1.14以前の時代を通してModdingを担いました。YarnはFabricと共にオープンなコミュニティとして成長し、MojangのマッピングはMojangが1.14.4で公式の名前を同梱し始めたときに登場しました.
現在のMinecraftでは、MojangのマッピングやYarnが標準的な選択肢です。MCPは主に、古いツールチェーンがまだ使用されている1.8.9以前のバージョンに関する作業で関連性があります.
いいえ。マッピングは名前のテーブルです。FabricのようなMODローダーは、ゲームにMODを注入するランタイムです。それらは協力しますが、全く異なる問題を解決します.
Terminus を手に入れろ
Built to track Minecraft's mappings so its modules keep working across versions.