🧱
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を見て実装できる。
Discussion