MinecraftのNeoForge向けMod作成:ブロック追加編

公開日: 2025年3月27日
最終更新日: 2025年4月2日

ラベル: ゲーム プログラミング

前回に引き続き、MinecraftのNeoForge向けMod作成について、となります。

今回はブロック追加編として、「謎のブロック」を追加してみたいと思います。ブロックですので配置と破壊くらいしかできませんが、今後「謎の原石」を追加し、謎のブロックを破壊した時に謎の原石をドロップするようにしたいと思います。

もちろんその後はかまどで原石を「謎のインゴット」にできるようにして・・・と続けていくつもりですので、楽しみにしていてください。

独自ブロックの追加方法を紹介し、実際にゲームに登場させます。

今回の対象バージョンは前回に引き続きMinecraft:1.21.4、NeoForge:21.1.114-betaです。なお、ブログ記事中に出てくるパスに「mod_id」などが含まれている場合がありますので必要に応じて適宜読み替えてください。
例:src/main/java/com/hashibiro/kamomod → src/main/java/com/test/samplemod


前回のブログ記事は「MinecraftのNeoForge向けMod作成:最新開発環境DL&設定編」です。


ソースの変更

IntelliJ IDEAでソースを変更します。「src/main/java/com/hashibiro/kamomod」配下にある「Config」を右クリック→「削除...」を選択して削除します。

続いて同じ階層にある「ExampleMod」を変更します。右クリック→「名前の変更」を選択して、ファイル名を変更してください。中核となるファイルとしてわかりやすい名前が良いと思います。本ブログ記事では「KamoMod」とします。続いてファイルの内容を下記に書き換えます。

@Mod(KamoMod.MODID)
public class KamoMod
{
    // 参照用MOD ID
    public static final String MODID = "kamomod";

    // 登録用
    public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(MODID);
    public static final DeferredRegister.Items ITEMS = DeferredRegister.createItems(MODID);

    // ブロック追加と、追加ブロックをもとにしたアイテムの追加
    public static final DeferredBlock<block> MYSTERY_BLOCK = BLOCKS.registerSimpleBlock("mystery_block",
            BlockBehaviour.Properties.of().mapColor(MapColor.COLOR_GRAY));
    public static final DeferredItem<blockitem> MYSTERY_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("mystery_block", MYSTERY_BLOCK);

    // クリエイティブモードのタブ登録用
    public static final DeferredRegister<creativemodetab> CREATIVE_MODE_TABS = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);
    // 設定と、タブに追加アイテムを登録
    public static final DeferredHolder<creativemodetab creativemodetab=""> EXAMPLE_TAB = CREATIVE_MODE_TABS.register("kamomod_tab",
            () -> CreativeModeTab.builder()
                    .title(Component.translatable("itemGroup.kamomod"))
                    .withTabsBefore(CreativeModeTabs.COMBAT)
                    .icon(() -> MYSTERY_BLOCK_ITEM.get().getDefaultInstance())
                    .displayItems((parameters, output) -> {
                        output.accept(MYSTERY_BLOCK_ITEM.get());
                    }).build());

    // コンストラクタ
    public KamoMod(IEventBus modEventBus, ModContainer modContainer) {
        // IEventBusに登録
        BLOCKS.register(modEventBus);
        ITEMS.register(modEventBus);
        CREATIVE_MODE_TABS.register(modEventBus);
    }
}

内容は「謎のブロック」を「ブロック」と「アイテム」に追加するコードと、クリエイティブモードのタブを追加するコードとなっています。

5、19、21行目などの「kamomod」としている文字列は、設定したMOD IDに置き換えてください。


画像の追加

謎のブロック用の画像(テクスチャ)を追加し、マイクラ内で表示されるようにします。

今回は以下の画像を用意しました。解像度は256×256ピクセルとしています。ひとまずこの解像度で好きな柄のpng画像を用意してみましょう。

ブロック用の画像です。

用意した画像を「src/main/resources/assets/kamomod/textures/block」配下にソース上の名称と同じファイル名で格納します。今回は「mystery_block.png」です。


モデルなどの追加

謎のブロックは「ブロック」として追加するのと共に「アイテム」としても追加するため、以降では両方のデータを追加します。

「src/main/resources/assets/kamomod/blockstates」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "variants": {
    "": [
      {
        "model": "kamomod:block/mystery_block"
      },
      {
        "model": "kamomod:block/mystery_block",
        "y": 90
      },
      {
        "model": "kamomod:block/mystery_block",
        "y": 180
      },
      {
        "model": "kamomod:block/mystery_block",
        "y": 270
      }
    ]
  }
}

次に「src/main/resources/assets/kamomod/models/block」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "parent": "minecraft:block/cube_all",
  "textures": {
    "all": "kamomod:block/mystery_block"
  }
}

以上でブロックとしての追加は完了です。続けてアイテムとしての追加を行います。

「src/main/resources/assets/kamomod/items」配下に「mystery_block.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "model": {
    "type": "minecraft:model",
    "model": "kamomod:block/mystery_block"
  }
}

以上でアイテムとしての追加も完了です。同じファイル名で作業しますので、中身と格納先を間違えないよう十分注意して作業してください。

なお、各ファイル中の「kamomod」としている文字列は、設定したMOD IDに置き換えてください。また各ファイルの中身の詳細については「Minecraft Wiki:モデル」を参照ください。


言語ファイルの追加

最後にマイクラを日本語環境で動かした際の名称を登録します。

「src/main/resources/assets/kamomod/lang」配下に「ja_jp.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "itemGroup.kamomod": "KamoModタブ",
  "block.kamomod.mystery_block": "謎のブロック"
}

以上ですべて完了です。なお、ファイル中の「kamomod」としている文字列は、設定したMOD IDに置き換えてください。

お疲れさまでした。

念のため、各ファイルの配置例を載せておきます。

ファイルの配置例です。


動作確認

クリエイティブモードのワールドで動作確認をしてみましょう(まだワールド生成時用の生成設定を行っていないため、新規にワールドを作ってもワールド内に謎のブロックが生成されることはありません。ワールド生成時用の生成設定は今後ブログ記事にしたいと思っています)。

まずタブが追加されていること、追加した画像の見た目のアイテムが追加されていることを確認しましょう。

タブが追加されているかの動作確認です

続けてブロックを手に持ち、ワールドに配置してみましょう。

ブロックをワールドに配置します。

手に持っているブロックや、配置したブロックの見た目が追加した画像の見た目になっているか確認しましょう。色々な方向から見て、すべての面が画像の見た目になっているか確認しておきましょう。

最後に

今回はMinecraftのNeoForge向けMod作成のブロック追加編として「謎のブロック」を追加しました。

ブロック自体に新しい機能などはありませんが、好きな画像のブロックを追加でき、見た目もわかりやすいので、「作っている感」はあったのではないでしょうか。

少しでも参考になれば幸いです。次回は原石を追加したいと思います。


このブログを検索

自己紹介

kamo
kamoと申します。 プログラミングやDIYなど、何か作ったりすることが好きな者です。 プログラミングはC言語やC#、Javaあたりに理解があります。 よろしくお願いします。
詳細プロフィールを表示