0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

VSCodeでMinecraft Forge(1.20.1)のModを作る方法【初心者向け】

0
Last updated at Posted at 2026-02-19

はじめに

Minecraft Java版では「Mod」を導入することで、ブロック・アイテム・システムなどを自由に拡張できます。

本記事では Minecraft Forge 1.20.1 を使用し、VSCodeでMod開発環境を構築 → 「/hello」コマンドの実装 までを解説します。

本記事ではJavaの文法解説は行いません
環境構築〜簡単なMod作成までを対象にしています。

対象読者:

  • Mod制作に初挑戦
  • Forgeを触ったことがない
  • IntelliJではなくVSCodeを使いたい
  • Javaはなんとなく触ったことがある

開発環境

今回の環境:

  • Minecraft:1.20.1
  • Forge:1.20.1
  • Java:17
  • エディタ:VSCode
  • OS:Windows想定(Mac/Linuxでも概ね同じ)

① Java 17 をインストール

Forge 1.20.1 では Java 17 が必須です。

ダウンロード

Adoptium などからJDK17を取得します。
下記のサイトから自身の環境に合わせてダウンロードし、インストールしてください。

image.png

インストール後、ターミナルで確認:

java -version

17 と表示されればOK。

インストール後に再起動をしないとエラーが出る可能性があります。

② Forge MDK をダウンロード

Forge公式サイトへアクセス:

  • Version:1.20.1
  • MDK(Mod Development Kit)をダウンロード

image.png

ZIPを任意のフォルダに展開します。

例:

C:\MinecraftMod\helloworld

③ VSCode を準備

VSCodeをインストール後、以下拡張機能を導入:

  • Extension Pack for Java
  • Gradle for Java

④ プロジェクトをVSCodeで開く

展開したMDKフォルダをVSCodeで開きます。

File → Open Folder

⑤ Gradleセットアップ

この操作は、VSCodeのメニューからMinecraftを起動するための設定ファイルを作成するものです。ターミナルからコマンドのみで起動する場合はスキップ可能ですが、デバッグ機能が便利なので実行しておくことをおすすめします。

VSCodeでデバッグ機能(ボタン一つでMinecraftを起動する機能)を使えるようにするための準備をします。

ターミナルを開き、以下のコマンドを実行してください:

./gradlew genVSCodeRuns

これが完了すると、プロジェクト内に .vscode フォルダが自動生成され、後の手順で紹介する「デバッグ起動」が可能になります。

※この手順は一度実行すればOKです。これを行わないと、VSCodeのメニューに「runClient」が表示されません。

⑥ 動作確認(Minecraft起動)

VSCodeの「実行とデバッグ」から:

runClient

を起動。

image.png

Forge入りMinecraftが立ち上がれば成功。

image.png

よくあるエラー: `java.util.NoSuchElementException: No value present`

起動時にこのエラーが出て止まる場合、プロジェクトを置いているフォルダ名(パス)にスペースが含まれているのが原因であることがほとんどです。

  • NG: C:\Minecraft Mod\Project (スペースがある)
  • OK: C:\MinecraftMod\Project (スペースなし)

対策: スペースを含まないパスにフォルダごと移動し、再度 gradlew genVSCodeRuns を実行してください。

⑦ Mod情報を編集

src/main/resources/META-INF/mods.toml

を編集。

例:

modId="helloworld"
displayName="Say Hello World!"
version="1.0.0"

⑧ メインModクラス

src/main/java/com/example/helloworld/Helloworld.java

Forge MDKに最初から入っています(デフォルトでは ExampleMod.java という名前なので、リネームするか中身を書き換えてください)。

基本構造:

package com.example.helloworld;

import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

@Mod(Helloworld.MODID)
public class Helloworld {
    public static final String MODID = "helloworld";

    public Helloworld() {
        IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
    }
}

ここがModのエントリーポイント。

⑨ コマンドを実装する

「/hello」と打つと「Hello World!」と表示されるコマンドを作ります。

コマンドクラスの作成

src/main/java/com/example/helloworld/HelloCommand.java を作成します。

package com.example.helloworld;

import com.mojang.brigadier.CommandDispatcher;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;
import net.minecraft.network.chat.Component;

public class HelloCommand {
    public static void register(CommandDispatcher<CommandSourceStack> dispatcher) {
        dispatcher.register(Commands.literal("hello")
            .executes(context -> {
                // チャットにメッセージを表示
                context.getSource().sendSuccess(() -> Component.literal("Hello World!"), false);
                return 1;
            })
        );
    }
}

⑩ イベントに登録する

作成したコマンドをMinecraftに認識させるため、イベントに登録します。

メインクラスの編集

Helloworld.java に追記します。Forgeのイベントバスを使用します。

package com.example.helloworld;

import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

@Mod(Helloworld.MODID)
public class Helloworld {
    public static final String MODID = "helloworld";

    public Helloworld() {
        IEventBus bus = FMLJavaModLoadingContext.get().getModEventBus();
        // Forgeのイベントバスに自身を登録
        MinecraftForge.EVENT_BUS.register(this);
    }

    // コマンド登録イベント
    @SubscribeEvent
    public void onCommandsRegister(RegisterCommandsEvent event) {
        HelloCommand.register(event.getDispatcher());
    }
}

⑪ 再起動して確認

再度 runClient を実行します。

ワールドに入り、チャット欄(Tキー)で以下を入力:

/hello

チャットに Hello World! と表示されれば成功です!

⑫ Modをビルドする(配布用ファイルの作成)

開発したModを他の人に渡したり、実際のMinecraft環境(VSCode外)で動かしたりするには、JARファイルとしてビルドする必要があります。

ターミナルで以下のコマンドを実行します:

./gradlew build

ビルドが成功すると、プロジェクトフォルダ内の以下の場所にJARファイルが生成されます:

build/libs/helloworld-1.0.0.jar

(※ファイル名は mods.tomlbuild.gradle の設定により変わります)

このJARファイルを、Minecraftの実行フォルダにある mods フォルダに入れれば、作成したModが読み込まれます。

トラブルシューティング

Javaバージョン違い

  • 17以外 → 起動失敗

コマンドが認識されない

  • MinecraftForge.EVENT_BUS.register(this) を忘れている
  • @SubscribeEvent が付いていない

構文エラー

  • セミコロンや波括弧の閉じ忘れ

まとめ

  • Forge MDK をDL
  • VSCode + Java拡張導入
  • gradlew genVSCodeRuns
  • HelloCommand クラスを作成
  • RegisterCommandsEvent で登録
  • runClient で動作確認
  • gradlew build で製品版ビル

ここまでできれば、引数付きのコマンドや、プレイヤーの座標を操作するコマンドなどへ発展できます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?