アイテムの追加 (1.19.4)

概要

特殊な機能を持たないアイテムを追加します。このページでは、翻訳やテクスチャなどのリソースは実装せず、追加操作のみを確認します。

動作確認

2023年12月13日

  • Minecraft 1.19.4
  • Forge 45.2.0

解説

GitHub

ExampleTNT.java

ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNT.java


package com.tntmodders.exampletnt;

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

@Mod(ExampleTNT.MOD_ID)
public class ExampleTNT {

    public static final String MOD_ID = "exampletnt";

    public ExampleTNT() {
        IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
        ExampleTNTItems.register(modEventBus);
    }
}

MODのプログラムをJavaで記述します。このクラスはMODの最初に読み込まれるものであり、各種処理をこのクラスより下の階層のクラスに割り振る役割を果たします。

MOD_IDmods.tomlに記載したものと一致する必要があります。すべて小文字にしてください。

ExampleTNTItems.java

ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNTItems.java


package com.tntmodders.exampletnt;

import net.minecraft.world.item.Item;
import net.minecraft.world.item.Rarity;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;

public class ExampleTNTItems {

    private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, ExampleTNT.MOD_ID);
    public static final RegistryObject<Item> SMALL_TNT = ITEMS.register("small_tnt", () -> new Item(new Item.Properties().rarity(Rarity.EPIC)));

    public static void register(IEventBus eventBus) {
        ITEMS.register(eventBus);
    }
}

ExampleTNTItems.register(modEventBus);でアイテムの追加処理をしています。DeferredRegister<Item> ITEMSで作成したリストを、メソッドpublic static void register(IEventBus eventBus)でまとめて登録しています。
ITEMS.register("small_tnt" ...でITEMSに任意のアイテムを追加することができます。Itemクラスの代わりに独自のItem継承クラスを登録することで、アイテムに機能をもたせることができます。
また、アイテムごとの一般的な性質はItem.Propertiesで設定しています。今回はEPICの装飾を施しています。

ExampleTNTEvents.java

ExampleTNT/src/main/java/com/tntmodders/exampletnt/ExampleTNTEvents.java


package com.tntmodders.exampletnt;

import net.minecraft.world.item.CreativeModeTabs;
import net.minecraftforge.event.CreativeModeTabEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;

@Mod.EventBusSubscriber(modid = ExampleTNT.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class ExampleTNTEvents {

    @SubscribeEvent
    public static void creativeTabsBuildEvent(CreativeModeTabEvent.BuildContents event) {
        if (event.getTab() == CreativeModeTabs.TOOLS_AND_UTILITIES) {
            event.accept(ExampleTNTItems.SMALL_TNT.get());
        }
    }
}

@Mod.EventBusSubscriber(modid = ... でアノテーションされたクラス内のメソッドは、@SubscribeEvent をアノテーションしイベントの引数を入れることで該当のイベントが呼ばれた際に動作します。今回は、クリエイティブタブのアイテム登録をイベントとし、CreativeModeTabs.TOOLS_AND_UTILITIESにアイテムを登録しています。

関連クラス

  • net.minecraft.item.Items:バニラのアイテムが記述されています。

リンク


前:環境構築

次:リソースの自動生成

コメントはこちらです。(スパム対策の為コメントは手動承認になっています。未承認のコメントは表示されないので連投はお控え下さい。)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください