MinecraftのNeoForge向けMod作成:インゴット追加編

公開日: 2025年4月10日

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

前回に引き続き、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作成:原石追加編」です。

ソースの編集

「謎のインゴット」を追加するためソースコードを追加します。

@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().
                    destroyTime(1).
                    mapColor(MapColor.COLOR_GRAY));
    public static final DeferredItem<BlockItem> MYSTERY_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("mystery_block", MYSTERY_BLOCK);
    public static final DeferredItem<Item> MYSTERY_RAW = ITEMS.registerSimpleItem("mystery_raw");

    // 謎のインゴット追加 ★
    public static final DeferredItem<Item> MYSTERY_INGOT = ITEMS.registerSimpleItem("mystery_ingot");

    // クリエイティブモードのタブ登録用
    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());
                        output.accept(MYSTERY_RAW.get());
                        output.accept(MYSTERY_INGOT.get()); // タブに謎のインゴットを追加 ★
                    }).build());

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

前回同様、ファイルの追加ではなく、すでにあるファイルを編集する形で、追加する内容も同じです。前回のソースコードと変更がある部分に「★」マークを入れていますので、その部分だけコピー&ペーストすることをおすすめします。まとめてコピー&ペーストする場合には必要に応じてMod IDやクラス名を修正してください。

画像の追加

謎のインゴット用の画像(テクスチャ)を追加します。前回同様、透過部分が含まれますので、対応した画像編集ソフトで作成してください。

謎のインゴット用画像です

Minecraftのバニラにある「鉄のインゴット」(iron_ingot.png)の画像をコピーし、Windows11のペイントで色だけ変更すると簡単です。探し方はIntelliJ IDEAの右上の虫眼鏡マークを押下後、「ファイル」を選択して「すべての場所」となっていることを確認して「iron_ingot.png」を入力、です。

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

モデルなどの追加

謎のインゴットのモデルなどを追加します。

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

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "kamomod:item/mystery_ingot"
  }
}

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

{
  "model": {
    "type": "minecraft:model",
    "model": "kamomod:item/mystery_ingot"
  }
}

以上です。各ファイルの詳細は前回同様「Minecraft Wiki:モデル」を参照ください。

言語ファイルの編集

謎のインゴットのアイテム名を登録します。

「src/main/resources/assets/kamomod/lang」配下にある「ja_jp.json」を編集します。

{
  "itemGroup.kamomod": "KamoModタブ",
  "block.kamomod.mystery_block": "謎のブロック",
  "item.kamomod.mystery_raw": "謎の原石",
  "item.kamomod.mystery_ingot": "謎のインゴット"
}

5行目が追加行となります。4行目の最後に「,」を追加し5行目を追加しましょう。

レシピの追加

かまどなどで、追加したアイテムを製錬できるようにするには「レシピ」を追加します。

今回は「かまど」と「溶鉱炉」で謎の原石を謎のインゴットに製錬するためのレシピを追加します。

まずはかまどのレシピです。「src/main/resources/data/kamomod/recipe」配下に「mystery_ingot_from_smelting_mystery_raw.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "type": "minecraft:smelting",
  "category": "misc",
  "cookingtime": 250,
  "experience": 1.0,
  "group": "mystery_ingot",
  "ingredient": "kamomod:mystery_raw",
  "result": {
    "id": "kamomod:mystery_ingot"
  }
}
  

次に溶鉱炉のレシピです。「src/main/resources/data/kamomod/recipe」配下に「mystery_ingot_from_blasting_mystery_raw.json」というファイルを新規作成し、中身を下記の通りとします。

{
  "type": "minecraft:blasting",
  "category": "misc",
  "cookingtime": 125,
  "experience": 1.0,
  "group": "mystery_ingot",
  "ingredient": "kamomod:mystery_raw",
  "result": {
    "id": "kamomod:mystery_ingot"
  }
}

今回もバニラの「鉄のインゴット」を参考にしています。ファイルの詳細は「Minecraft Wiki:レシピ」を参照ください。少し見ると、製錬に必要な時間(cookingtime)や製錬したときに入手できる経験値(experience)といった設定があることがわかります。また製錬に必要な時間(cookingtime)をかまどと溶鉱炉で比較するとかまどの方が2倍になっていることがわかります。

最後にファイルの配置例を載せておきます。似たようなパスやファイル名で作業しますので間違えないように注意してください。

それぞれのファイルの格納先です

動作確認

動作確認を行います。

まずはクリエイティブモードのタブに謎のインゴットが追加されているか確認します。

タブに謎のインゴットが追加されています

続いて、かまどと溶鉱炉で謎の原石が製錬できるか確認します。かまどと溶鉱炉をワールドに設置し、謎の原石と燃料となるアイテムを持ちましょう。あとは製錬するだけです。

謎のインゴットが製錬できたら成功です。お疲れさまでした!

最後に

今回はMinecraftのNeoForge向けMod作成のインゴット追加編として「謎のインゴット」を追加しました。また製錬用のレシピを設定することで、謎の原石をかまどなどに投入した際に、謎のインゴットになるようにしました。

次回は謎のインゴットを使ったツールを追加したいと思います!

以上、少しでも参考になれば幸いです。

このブログを検索

自己紹介

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