Minecraft 本体では 1.21.6 が 2025年6月18日にリリースされたようで、子供が空を飛ぶ乗り物のスポーンエッグを使って遊んでいました。
ということは Minecraft Forge 1.21.6 も当然存在すると考えられます。
2025年6月21日時点では下記サイトで同バージョンがDLできました。
https://files.minecraftforge.net/net/minecraftforge/forge/
しかし、実行時に以下エラーが発生しました。
PS D:\Program Files2\forge-1.21.6> ./gradlew runClient
To honour the JVM settings for this build a single-use Daemon process will be forked. For more on this, please refer to https://docs.gradle.org/8.12.1/userguide/gradle_daemon.html#sec:disabling_the_daemon in the Gradle documentation.
Daemon will be stopped at the end of the build
> Configure project :
Java: 21.0.7, JVM: 21.0.7+6-LTS (Eclipse Adoptium), Arch: amd64
> Task :compileJava
繧ィ繝ゥ繝シ: 繧キ繝ウ繝懊Ν繧定ヲ九▽縺代i繧後∪縺帙s
繧キ繝ウ繝懊Ν: 繧ッ繝ゥ繧ケ <captured wildcard>
蝣エ謇: 繧ッ繝ゥ繧ケ Config
D:\Program Files2\forge-1.21.6\src\main\java\com\example\examplemod\Config.java:58: 繧ィ繝ゥ繝シ: 荳埼←蜷医↑蝙・ 謗ィ隲門、画焚T縺ォ縺ッ縲∽ク埼←蜷医↑蠅・阜縺後≠繧翫∪縺・
.collect(Collectors.toSet());
^
遲我セ。蛻カ邏・ Item
荳矩剞: Object
T縺悟梛螟画焚縺ョ蝣エ蜷・
繝。繧ス繝・ラ <T>toSet()縺ァ螳」險縺輔l縺ヲ縺・kT extends Object
繧ィ繝ゥ繝シ2蛟・[0K% EXECUTING [19s]
> Task :compileJava FAILED
[Incubating] Problems report is available at: file:///D:/Program%20Files2/forge-1.21.6/build/reports/problems/problems-report.html
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
> Compilation failed; see the compiler output below.
繧ィ繝ゥ繝シ: 繧キ繝ウ繝懊Ν繧定ヲ九▽縺代i繧後∪縺帙s
繧キ繝ウ繝懊Ν: 繧ッ繝ゥ繧ケ <captured wildcard>
蝣エ謇: 繧ッ繝ゥ繧ケ Config
D:\Program Files2\forge-1.21.6\src\main\java\com\example\examplemod\Config.java:58: 繧ィ繝ゥ繝シ: 荳埼←蜷医↑蝙・ 謗ィ隲門、画焚T縺ォ縺ッ縲∽ク埼←蜷医↑蠅・阜縺後≠繧翫∪縺・
.collect(Collectors.toSet());
^
遲我セ。蛻カ邏・ Item
荳矩剞: Object
T縺悟梛螟画焚縺ョ蝣エ蜷・
繝。繧ス繝・ラ <T>toSet()縺ァ螳」險縺輔l縺ヲ縺・kT extends Object
繧ィ繝ゥ繝シ2蛟・
* Try:
> Check your code and dependencies to fix the compilation error(s)
> Run with --scan to get full insights.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.12.1/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD FAILED in 25s
1 actionable task: 1 executed
PS D:\Program Files2\forge-1.21.6>
原因は Minecraft Forge 1.21.6 の同梱ファイルが最初から間違っていたこと(配布元のミス)です。
具体的には
ディレクトリ src\main\java\com\example\examplemod
ファイル Config.java
55行目 static void onLoad(final ModConfigEvent event) 定義中の変数 items の宣言です。
ただ、その行だけを書き換えだとかえってややこしいので、同ファイルの
static void onLoad(final ModConfigEvent event)
定義内容をそっくり以下の内容でコピー&貼り付けが楽です。
@SubscribeEvent
static void onLoad(final ModConfigEvent event) {
logDirtBlock = LOG_DIRT_BLOCK.get();
magicNumber = MAGIC_NUMBER.get();
magicNumberIntroduction = MAGIC_NUMBER_INTRODUCTION.get();
List<String> itemStrings = ITEM_STRINGS.get().stream().map(String::valueOf).toList();
items = itemStrings.stream()
.map(itemName -> ForgeRegistries.ITEMS.getValue(ResourceLocation.tryParse(itemName)))
.collect(Collectors.toSet());
}
上記編集後、ターミナルにて
./gradlew runClient
を実行したところ Minecraft Forge 1.21.6 の起動が確認できました。
念のためタイトル画面の閲覧だけではなく、新しいワールドを作って操作もしてみました。

ただし、動くのはあくまでも最初からある ExampleMod.java のみです。
自分で編集した ExampleMod.java は動きませんでした。
理由は、 1.21.5 まで存在していた
net.minecraftforge.eventbus.api.IEventBus
net.minecraftforge.eventbus.api.SubscribeEvent
が 1.21.6 ではなくなってしまったためです。
通常ソフトウェアのバージョンアップでは下位互換性と言って、以前できたことが全部できる前提で新機能が実装されます。
しかし、 Forge には下位互換性がないことがわかりました。
代替でイベントドリブンを可能にする手段があるとは思いたいですが、それでもソースコードを全面書き換えになります。
少し試してみましたが、工数がかかり過ぎること、そして膨大な手間と時間をかけてソースコードを改修できたとしても、見た目には従来と同じことができるだけにすぎません。
それに、数か月後にバージョンアップで 1.21.7 あるいは 1.22.x などが出てきたときに同じことの繰り返しになります。
そういう理由で、 Forge を使うのは 1.21.5 で留めておき、バージョンアップによる下位互換性もしっかりしていると言われる Fabric for Minecraft を使ってみることにしました。
そちらについては次回エントリ Fabric for Minecraft の導入 にて。