====== Minecraft のソースコードの読み方 ====== Minecraft のソースを読むことは、 Mod 製作において重要なスキルです。これは主に以下のような事実から分かるでしょう。 * Minecraft のほとんどは文書化されていません * ドキュメントやチュートリアルはすぐに古くなってしまいます Minecraft のソースを読み取るには、まずソースを生成する必要があります。 [[tutorial:setup|Mod 開発環境のセットアップ]] の "Generating Minecraft Sources" 〔Minecraft ソースの生成〕セクションを参照してください。 ===== Minecraft のクラスを探す ==== Minecraft クラスを検索するには、次の手順に従います。 ==== Intellij IDEA ==== - ''Ctrl + N'' で検索ペインを開く - 検索範囲を ''Project and Libraries'' 〔プロジェクトとライブラリ〕以上に設定します - 検索ボックスにクラス名を入力します ==== Visual Studio Code ==== - ''Ctrl + P'' で検索ペインを開く - プレフィックス ''#'' を付けてクラス名を入力します Visual Studio Code では、''Ctrl + T'' を使用してクラス検索を直接開くこともできます。 ===== 見たいクラスの検索 ==== 見たいコードの部分を見つけるのは難しい作業です。ここにいくつかのヒントがあります。 * ''Call hierarchy'' 〔呼び出し階層〕、 ''Method hierarchy'' 〔メソッド階層〕、 ''Type hierarchy'' 〔型階層〕などの関連コードを検索する IDE の機能を最大限に活用します。 * あなたが作りたいものに似ているオープンソースの Mod を見てください。 * 新しいコンテンツを追加する場合、 ''net.minecraft.util.registry.Registry'' で定義されたレジストリにアクセスする必要がある可能性が高くなります。 * すべてが 1 つのメイン クラス (クライアントの場合は ''net.minecraft.client.main.Main''、専用サーバーの場合は ''net.minecraft.server.Main'') から始まることに注意してください。 ===== バイトコードの読み方 ===== バイトコードの読み取りが必要になる場合があります * ミックスインは、ソースコードではなく、バイトコードで動作します。 複雑なミックスインを作成するときは、バイトコードを理解することが不可欠です。 * 逆コンパイラ(FernFlower)は完璧ではありません。 ''int i = true;'' などの無効な Java コードを生成することがあります。 Java バイトコードに慣れていない場合は、 [[https://docs.oracle.com/javase/specs/jvms/se17/html/jvms-6.html|JVM 仕様]] を参照してください。 バイトコードを表示するには、次の手順に従います。 ==== Intellij IDEA ==== - バイトコードを表示するクラスを開きます - メインメニューから ''View'' 〔表示〕を選択 - ''Show Bytecode'' 〔バイトコードを表示〕を選択 ==== 外部ツール ==== IDE がバイトコード表示をサポートしていない場合は、 https://github.com/Konloch/bytecode-viewer などの外部バイトコードビューアを使用してください。 ===== よくある質問 ===== **生成されたソースはどこにありますか?** これは、ユーザー Gradle キャッシュ(''~/.gradle/caches/fabric-loom'')またはプロジェクト Gradle キャッシュ(''./.gradle/loom-cache'')にあります。 jar ソースは IDE の外部で使用できます。