クリエイティブタブの追加 (1.19.4)

概要

MOD固有のクリエイティブタブを追加します。

動作確認

2023年12月26日

  • Minecraft 1.19.4
  • Forge 45.2.0

解説

GitHub

ExampleTNTEvents.java

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


package com.tntmodders.exampletnt;

import net.minecraft.network.chat.Component;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.CreativeModeTabs;
import net.minecraft.world.level.block.Blocks;
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 {

    public static CreativeModeTab TAB_TNT;

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

    @SubscribeEvent
    public static void creativeTabRegisterEvent(CreativeModeTabEvent.Register event) {
        TAB_TNT = event.registerCreativeModeTab(new ResourceLocation(ExampleTNT.MOD_ID, "tab_tnt"),
                builder -> builder
                        .icon(() -> ExampleTNTItems.SMALL_TNT.get().getDefaultInstance())
                        .displayItems((parameters, output) -> {
                            output.accept(ExampleTNTItems.SMALL_TNT.get());
                            output.accept(ExampleTNTBlocks.LARGE_TNT.get());
                            output.accept(Blocks.TNT);
                        })
                        .title(Component.translatable("block.minecraft.tnt")));
    }
}

CreativeModeTabEvent.Registerを呼ぶことでタブの登録処理ができます。今回はあとから参照の必要がありませんが、必要になったとき用にstaticフィールドとして保持しておくことをおすすめします。
builderから呼ぶメソッドとして以下の処理を行います。

  • iconでは、タブのアイコンになるアイテムを設定します。今回はsmall_tntをItemStackとして呼び出しアイコンにしています。
  • displayItemsでは、creativeTabsBuildEventで利用したようにタブに表示するアイテムをacceptすることができます。複数のタブで表示させることもできるので、このチュートリアルではcreativeTabsBuildEventで他のタブに表示させたMOD追加アイテムや、バニラのTNTを表示させています。
  • titleでは、表示名を設定できます。Component.translatableで.langファイルに設定した翻訳鍵を渡すことで、各言語に翻訳されて表示されます。今回はバニラのTNTの翻訳鍵を設定しました。

リンク


前:レシピの追加

次:進捗の追加