マッピング¶
資料¶
難読化とマッピング¶
Minecraft(Java版)のjarファイルは難読化されており、クラス名やメソッド名などが読解困難な名前になっています。
これらを開発者が理解できる名前に変換するための対応表をマッピングと呼びます。
Forgeでは、本番環境ではSRGマッピング、開発環境では指定したマッピングを使用します。
このマッピングの違いにより、Mixinなどの低レイヤー機能が開発環境と本番環境で異なる動作をすることがあります。
そのため開発環境だけでなく、ビルドしたjarファイルでの本番環境テストも必須です。
SRG¶
バージョン間で名前が変わってしまうため、共通化するのが目的の中間マッピングです。
m_286052_やf_90981_等のように表記されます。
マッピングの種類(Forge)¶
MCP (Mod Coder Pack)¶
古くから使われているコミュニティ主導のマッピングです。SRG名を経由する仕組みが特徴です。
Forge等は内部処理でSRG名を使用しているため、エラーログ等で見かけることがあります。
Official Mappings (Mojang Mappings)¶
Mojang公式のマッピングです。現在のMOD開発の主流ですが、引数名やローカル変数名までは復元されません。
Parchment¶
Official Mappingsを拡張し、引数名やローカル変数名を読みやすくしたマッピングです。
Official Mappingsと互換性があるため、開発の途中から導入しても基本的に問題ありません。
Parchmentの導入方法(1.20.1)¶
- プロジェクト直下の
settings.gradleに以下の maven リポジトリを追加します。 -
build.gradleでプラグインを適用します。build.gradleplugins { id 'net.minecraftforge.gradle' version '[6.0.16,6.2)' + id 'org.parchmentmc.librarian.forgegradle' version '1.+' }Warning
必ず
net.minecraftforge.gradleの下に追加してください。 -
マッピング設定を変更します。
build.gradleminecraft { - mappings channel: 'official', version: '1.20.1' + mappings channel: 'parchment', version: '2023.09.03-1.20.1' }mapping_channelなどと変数で指定されている場合は、gradle.propertiesから編集してください。
バージョンの指定について
上記は1.20.1の例(2023.09.03-1.20.1)です。
ParchmentMC 公式サイト や Mavenブラウザ で、使用しているMinecraftバージョンに対応するParchmentバージョンを確認して設定してください。
- Gradleの更新 設定を変更したら、Gradleプロジェクトをリフレッシュ、もしくは同期してください。IDE上で変更が反映されるはずです。
Parchmentの導入方法(Neoforge)¶
以下を参照してください。
https://docs.neoforged.net/toolchain/docs/parchment/