NeoForge 26.1 Docs
  • 문서
  • 노트
NeoForge 26.1
NeoForge 26.1
v26.1
학습 진도
0 / 77 챕터 완료방문 0
첫 아이템 등록 — first_itemItem.Properties — stacksTo, rarity, fireResistant, food, durability모드 전용 크리에이티브 탭 만들기음식 아이템과 FoodProperties도구 아이템 — Tier 시스템과 4종 도구 등록방어구와 ArmorItemDataComponents — NBT를 대체하는 타입 안전 데이터 저장툴팁 커스터마이즈아이템 태그 시스템
아이템

모드 전용 크리에이티브 탭 만들기

CreativeModeTab.Builder로 모드 전용 크리에이티브 탭을 등록하고 displayItems에 아이템들을 추가하는 방법, BuildCreativeModeTabContentsEvent로 Vanilla 탭에 추가하는 방법을 학습합니다.

모드 전용 크리에이티브 탭 만들기

아이템을 등록했다면 다음 단계는 크리에이티브 모드에서 찾을 수 있게 만드는 것입니다. NeoForge 26에서는 CreativeModeTab.builder()로 모드 전용 탭을 만들거나, BuildCreativeModeTabContentsEvent로 기존 Vanilla 탭에 아이템을 끼워 넣을 수 있습니다.


1. DeferredRegister 선언

크리에이티브 탭도 아이템·블록과 마찬가지로 DeferredRegister로 등록합니다. 레지스트리 키는 Registries.CREATIVE_MODE_TAB입니다.

// examplemod-template-26.1.2/src/main/java/com/example/examplemod/ExampleMod.java, 46번째 줄
public static final DeferredRegister<CreativeModeTab> CREATIVE_MODE_TABS =
        DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID);

DeferredRegister.Items나 DeferredRegister.Blocks와 달리, 크리에이티브 탭은 전용 서브클래스가 없습니다. 범용 DeferredRegister.create(레지스트리키, MODID) 형태를 씁니다.


2. 탭 등록

CREATIVE_MODE_TABS.register(이름, 팩토리)로 탭을 등록합니다. 팩토리 람다 안에서 CreativeModeTab.builder()를 호출해 탭을 구성합니다.

// examplemod-template-26.1.2/src/main/java/com/example/examplemod/ExampleMod.java, 58~64번째 줄
public static final DeferredHolder<CreativeModeTab, CreativeModeTab> EXAMPLE_TAB =
        CREATIVE_MODE_TABS.register("example_tab", () -> CreativeModeTab.builder()
                .title(Component.translatable("itemGroup.examplemod"))
                .withTabsBefore(CreativeModeTabs.COMBAT)
                .icon(() -> EXAMPLE_ITEM.get().getDefaultInstance())
                .displayItems((parameters, output) -> {
                    output.accept(EXAMPLE_ITEM.get());
                })
                .build());

각 빌더 메서드의 역할:

메서드설명
.title(Component)탭 이름. Component.translatable(키)로 다국어 지원
.withTabsBefore(탭키)이 탭 앞에 올 Vanilla 탭 지정 (정렬 순서)
.icon(Supplier<ItemStack>)탭 아이콘 아이템
.displayItems((params, output) -> ...)탭에 표시할 아이템 목록
.build()CreativeModeTab 인스턴스 생성

lang 파일에 탭 이름 추가

resources/assets/examplemod/lang/ko_kr.json에 번역 키를 추가합니다.

{
  "itemGroup.examplemod": "예시 모드 탭"
}

영어 파일(en_us.json)에도 추가합니다.

{
  "itemGroup.examplemod": "Example Mod Tab"
}

3. displayItems로 아이템 추가

displayItems 콜백은 탭이 열릴 때 호출됩니다. output.accept(아이템)으로 탭에 표시할 아이템을 추가합니다.

.displayItems((parameters, output) -> {
    output.accept(EXAMPLE_ITEM.get());
    // 아이템을 더 추가하려면 계속 accept 호출
    // output.accept(RUBY.get());
})

parameters에는 CreativeModeTab.ItemDisplayParameters가 담겨 있어 현재 게임 상태(난이도, 플레이어 등)에 따라 조건부로 아이템을 추가할 수 있습니다.


4. modEventBus에 등록

CREATIVE_MODE_TABS를 생성자에서 modEventBus에 연결해야 탭이 실제로 등록됩니다.

// examplemod-template-26.1.2/src/main/java/com/example/examplemod/ExampleMod.java, 68~77번째 줄
public ExampleMod(IEventBus modEventBus, ModContainer modContainer) {
    BLOCKS.register(modEventBus);
    ITEMS.register(modEventBus);
    CREATIVE_MODE_TABS.register(modEventBus);  // 탭 등록 필수
    // ...
}

ITEMS.register(modEventBus) 다음에 CREATIVE_MODE_TABS.register(modEventBus)를 추가합니다. 순서는 상관없지만 세 줄 모두 있어야 합니다.


5. Vanilla 탭에 아이템 추가 (BuildCreativeModeTabContentsEvent)

모드 전용 탭 대신 기존 Vanilla 탭(재료, 건축 블록 등)에 아이템을 끼워 넣고 싶을 때는 BuildCreativeModeTabContentsEvent를 씁니다.

// examplemod-template-26.1.2/src/main/java/com/example/examplemod/ExampleMod.java, 104~109번째 줄
private void addCreative(BuildCreativeModeTabContentsEvent event) {
    if (event.getTabKey() == CreativeModeTabs.BUILDING_BLOCKS) {
        event.accept(EXAMPLE_BLOCK_ITEM);
    }
}

이 메서드를 생성자에서 modEventBus에 연결합니다.

public ExampleMod(IEventBus modEventBus, ModContainer modContainer) {
    // ...
    modEventBus.addListener(this::addCreative);
}

event.getTabKey()로 어느 탭인지 확인하고, 원하는 탭에만 아이템을 추가합니다. 자주 쓰는 탭 키:

탭 키설명
CreativeModeTabs.BUILDING_BLOCKS건축 블록
CreativeModeTabs.INGREDIENTS재료
CreativeModeTabs.TOOLS_AND_UTILITIES도구 및 유틸리티
CreativeModeTabs.COMBAT전투
CreativeModeTabs.FOOD_AND_DRINKS음식 및 음료

⚠️ Vanilla 탭 직접 수정 금지

BuiltInRegistries나 리플렉션으로 Vanilla 탭 내부를 직접 수정하면 다른 모드와 충돌합니다. 반드시 BuildCreativeModeTabContentsEvent를 통해서만 추가하세요.


6. 안티패턴: ItemGroup 구식 패턴

⚠️ ItemGroup 구식 패턴

1.19.3+ 부터 ItemGroup → CreativeModeTab 으로 변경됐습니다:

// ❌ 구식 (1.19.2 이하)
new ItemGroup("examplemod") { ... }
 
// ✅ NeoForge 26
CreativeModeTab.builder().title(...).build()

구식 ItemGroup API는 NeoForge 26에 존재하지 않습니다. 오래된 튜토리얼을 참고할 때 주의하세요.


7. 인게임 확인

게임을 실행하고 크리에이티브 모드에서 확인합니다.

  1. E 키로 인벤토리 열기
  2. 상단 탭 목록에서 모드 탭 아이콘 클릭
  3. 등록한 아이템이 탭 안에 보이는지 확인
  4. Vanilla 탭(건축 블록 등)에도 추가한 아이템이 보이는지 확인

요약

  • DeferredRegister.create(Registries.CREATIVE_MODE_TAB, MODID)로 탭 레지스트리 바구니를 만듭니다.
  • CreativeModeTab.builder()로 탭을 구성하고 displayItems에 아이템을 추가합니다.
  • 생성자에서 CREATIVE_MODE_TABS.register(modEventBus)를 호출해야 탭이 등록됩니다.
  • Vanilla 탭에 아이템을 추가할 때는 BuildCreativeModeTabContentsEvent를 씁니다.
  • 구식 ItemGroup API는 NeoForge 26에 없습니다.

다음 챕터에서는 아이템에 커스텀 속성(내구도, 스택 크기, 음식 효과 등)을 추가하는 방법을 학습합니다.

Item.Properties — stacksTo, rarity, fireResistant, food, durability

Item.Properties 빌더의 주요 메소드를 학습하고 각 속성이 인게임 아이템에 어떤 효과를 주는지 이해합니다.

음식 아이템과 FoodProperties

FoodProperties.Builder 패턴으로 먹을 수 있는 아이템을 만들고, nutrition·saturationModifier·effect 등 주요 메소드를 학습합니다.

On this page

모드 전용 크리에이티브 탭 만들기1. DeferredRegister 선언2. 탭 등록lang 파일에 탭 이름 추가3. displayItems로 아이템 추가4. modEventBus에 등록5. Vanilla 탭에 아이템 추가 (BuildCreativeModeTabContentsEvent)6. 안티패턴: ItemGroup 구식 패턴7. 인게임 확인요약
NeoForge 26.1 Docs

NeoForge 26.1 모딩 개발 문서 사이트

GitHubDiscord

문서

  • 문서
  • 노트

GitHub

  • GitHub
  • Discord

© 2026 NeoForge 26.1 Docs. 콘텐츠는 MIT 라이선스로 제공됩니다.

Built with Next.js · Tailwind CSS · shadcn/ui