Skip to content

マッピング

資料

Neoforge - What are Mappings

SpongePowered - MCP

マッピング - FabricMC

難読化とマッピング

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)

  1. プロジェクト直下の settings.gradle に以下の maven リポジトリを追加します。
    settings.gradle
    pluginManagement {
        repositories {
    +       maven { url = 'https://maven.parchmentmc.org' }
        }
    }
    
  2. build.gradle でプラグインを適用します。

    build.gradle
    plugins {
        id 'net.minecraftforge.gradle' version '[6.0.16,6.2)'
    +   id 'org.parchmentmc.librarian.forgegradle' version '1.+'
    }
    

    Warning

    必ず net.minecraftforge.gradle の下に追加してください。

  3. マッピング設定を変更します。

    build.gradle
    minecraft {
    -    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バージョンを確認して設定してください。

  1. Gradleの更新 設定を変更したら、Gradleプロジェクトをリフレッシュ、もしくは同期してください。IDE上で変更が反映されるはずです。

Parchmentの導入方法(Neoforge)

以下を参照してください。

https://docs.neoforged.net/toolchain/docs/parchment/