🧱

AIが迷わないMinecraft Mod開発 ― Fabric Loomでデコンパイルしたソースを用意する方法

に公開

はじめに

MinecraftのMod開発では、ドキュメントがまったくといっていいほど充実していない。
そのため、AIエージェントは当てずっぽうでAPIを使おうとしてビルドエラーとなり、精度が大幅に落ちてしまう。
そこで、今回は、Fabric Loomのデコンパイル機能を活用して、実際のMinecraftソースコードから正確なAPI情報を取得する手法を解説する。

なぜソースコードが必要なのか?

Web開発などでAI使っている人なら「ソースなんて用意しなくてもAIは正しく関数を使いこなしてくれるよ」と思うだろう。
Minecraft Mod開発だと下記の特殊な事情があり、そう上手くはいかない。

  • 限定的なドキュメント: APIドキュメントがどこにも存在しない事が多い。
  • 頻繁なAPI変更: マイナーバージョンアップでもAPIが大幅に変更される。ググって見つかった情報も古かったということがよく起こる。
  • 検索情報の不足: Web検索では最新バージョンの正確な情報が見つからない。

なのでソースコードを用意して「AIエージェントに必要なコンテキストを用意してあげる」必要がある。

解決手法: Fabric Loomデコンパイル活用

1. デコンパイル環境の準備

前提条件

  • Fabric Loom 1.10+が設定されたGradleプロジェクト
  • 対象Minecraftバージョンのマッピングが利用可能

基本設定確認

// build.gradle.kts
minecraft {
    version = "1.21.7"
    mappings = "1.21.7:2025.07.18" // 利用可能な最新マッピング
}

2. ソースコード生成手順

ステップ1: デコンパイル実行

# Vineflowerデコンパイラーを使用(推奨:最も綺麗にデコンパイルできる)
./gradlew genSourcesWithVineflower

# 他のデコンパイラーオプション
./gradlew genSourcesWithFernFlower  # FernFlower使用
./gradlew genSourcesWithCfr        # CFR使用
./gradlew genSources              # デフォルトデコンパイラー使用

ステップ2: 生成場所の確認

デコンパイルされたソースはプロジェクトディレクトリの以下の場所に保存される:

クライアントコード(GUI、レンダリング等):

.gradle/loom-cache/minecraftMaven/net/minecraft/
minecraft-clientOnly-{hash}/
{version}-loom.mappings.{mapping-version}-v2/
minecraft-clientOnly-{hash}-{version}-{mapping-info}-sources.jar

サーバーコード(ゲームロジック、アイテム、ブロック等):

.gradle/loom-cache/minecraftMaven/net/minecraft/
minecraft-common-{hash}/
{version}-loom.mappings.{mapping-version}-v2/
minecraft-common-{hash}-{version}-{mapping-info}-sources.jar

実際の例:

.gradle/loom-cache/minecraftMaven/net/minecraft/
# クライアントコード(GUI、レンダリング等)
minecraft-clientOnly-651a196763/1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2/
minecraft-clientOnly-651a196763-1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2-sources.jar

# サーバーコード(ゲームロジック、両方で使用)
minecraft-common-651a196763/1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2/
minecraft-common-651a196763-1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2-sources.jar

ステップ3: ソースの展開

# 作業用ディレクトリ作成
mkdir -p build/minecraft-sources-client
mkdir -p build/minecraft-sources-common

# クライアントソースの展開
cd build/minecraft-sources-client
jar -xf ../../.gradle/loom-cache/minecraftMaven/net/minecraft/minecraft-clientOnly-651a196763/1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2/minecraft-clientOnly-651a196763-1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2-sources.jar

# サーバーソースの展開
cd ../minecraft-sources-common
jar -xf ../../.gradle/loom-cache/minecraftMaven/net/minecraft/minecraft-common-651a196763/1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2/minecraft-common-651a196763-1.21.7-loom.mappings.1_21_7.layered+hash.1193695709-v2-sources.jar

3. トラブルシューティング

よくある問題と解決法

問題: デコンパイルが失敗する

# キャッシュクリア
./gradlew clean
# 再実行
./gradlew genSourcesWithVineflower

問題: ファイルが見つからない

# ハッシュ値が変わる場合があるため、実際のディレクトリを確認
find .gradle/loom-cache -name "*sources.jar" -type f

まとめ

Fabric Loomのデコンパイル機能とAIツールを組み合わせることで、Minecraft Mod開発における情報不足の問題を大幅に軽減できる。

  • 正確なAPI情報の取得: 推測ではなく実際のソースから確認してくれる。
  • 効率的な開発: 正しいシグネチャを1発で使えるから、トライアンドエラーの時間を大幅短縮できる。
  • バージョン対応も簡単: 新しいMinecraftバージョンでAPIが変わり、まだネットに情報がない段階でもソースから正しいAPIを見て実装できる。

参考

GitHubで編集を提案

Discussion