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를 대체하는 타입 안전 데이터 저장툴팁 커스터마이즈아이템 태그 시스템
아이템

방어구와 ArmorItem

ArmorMaterials enum과 4종 슬롯을 이해하고, 커스텀 방어구 세트를 등록하는 방법을 학습합니다.

방어구와 ArmorItem

방어구는 아이템 중에서도 특별한 위치를 차지합니다. 단순히 인벤토리에 들어가는 게 아니라 캐릭터 모델에 직접 렌더링되고, 방어력 수치가 전투 계산에 반영됩니다. NeoForge 26.1에서는 ArmorItem 클래스와 ArmorMaterials enum을 조합해서 방어구를 등록합니다.


1. ArmorMaterials — 바닐라 재질 목록

ArmorMaterials는 바닐라 방어구 재질을 정의하는 enum입니다. 각 재질은 방어력 수치, 인첸트 가중치, 내구도 배수, 넉백 저항, 장착 사운드를 포함합니다.

재질방어력 합계인첸트 가중치특징
LEATHER715가장 낮은 방어력, 염색 가능
CHAINMAIL1212중간 방어력, 제작 불가 (용광로)
IRON159기본 금속 방어구
GOLD1125낮은 방어력이지만 인첸트 가중치 최고
DIAMOND2010높은 방어력, 내구도 우수
NETHERITE2015다이아몬드와 동일 방어력, 용암 면역
TURTLE29헬멧 전용, 수중 호흡 효과

커스텀 방어구를 만들 때는 기존 재질 중 하나를 그대로 빌려 쓰는 게 가장 빠릅니다. 이 챕터에서는 ArmorMaterials.DIAMOND를 재질로 사용하는 루비 방어구 세트를 만듭니다.


2. 4종 슬롯 — ArmorItem.Type

방어구는 착용 위치에 따라 4가지 타입으로 나뉩니다.

ArmorItem.Type.HELMET      // 머리 슬롯
ArmorItem.Type.CHESTPLATE  // 가슴 슬롯
ArmorItem.Type.LEGGINGS    // 다리 슬롯
ArmorItem.Type.BOOTS       // 발 슬롯

각 타입은 방어력 분배 비율이 다릅니다. 예를 들어 다이아몬드 기준으로 헬멧 3, 체스트플레이트 8, 레깅스 6, 부츠 3으로 총 20이 됩니다.


3. 방어구 등록 코드

ExampleMod.java에 루비 방어구 4종을 등록합니다.

// examplemod-template-26.1.2/src/main/java/com/example/examplemod/ExampleMod.java
 
// 방어구 4종 등록
public static final DeferredItem<ArmorItem> RUBY_HELMET = ITEMS.registerItem("ruby_helmet",
    props -> new ArmorItem(ArmorMaterials.DIAMOND, ArmorItem.Type.HELMET, props));
 
public static final DeferredItem<ArmorItem> RUBY_CHESTPLATE = ITEMS.registerItem("ruby_chestplate",
    props -> new ArmorItem(ArmorMaterials.DIAMOND, ArmorItem.Type.CHESTPLATE, props));
 
public static final DeferredItem<ArmorItem> RUBY_LEGGINGS = ITEMS.registerItem("ruby_leggings",
    props -> new ArmorItem(ArmorMaterials.DIAMOND, ArmorItem.Type.LEGGINGS, props));
 
public static final DeferredItem<ArmorItem> RUBY_BOOTS = ITEMS.registerItem("ruby_boots",
    props -> new ArmorItem(ArmorMaterials.DIAMOND, ArmorItem.Type.BOOTS, props));

패턴이 단순합니다. ITEMS.registerItem(이름, props -> new ArmorItem(재질, 타입, props)). 4종 모두 같은 구조이고 타입만 바뀝니다. NeoForge 26.1.2에서는 registerItem 람다가 넘겨주는 props를 그대로 생성자에 전달해야 합니다. 람다 밖에서 new Item.Properties()를 직접 만들면 등록 시 ID가 설정되지 않아 크래시합니다.

필요한 import도 추가합니다.

import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.ArmorMaterials;
import net.neoforged.neoforge.registries.DeferredItem;

4. 텍스처 파일 — Layer 시스템

방어구 텍스처는 아이템 텍스처와 별개입니다. 인벤토리에 보이는 아이콘은 일반 아이템 텍스처(textures/item/)를 쓰지만, 캐릭터 모델에 장착됐을 때 보이는 텍스처는 별도의 layer 파일을 씁니다.

assets/<modId>/textures/models/armor/
├── ruby_layer_1.png   ← 헬멧, 체스트플레이트, 부츠 (상반신 레이어)
└── ruby_layer_2.png   ← 레깅스 (하반신 레이어)

파일명 규칙은 <재질명>_layer_1.png / <재질명>_layer_2.png입니다. 여기서 재질명은 ArmorMaterials enum 값이 아니라 텍스처 경로에 쓸 임의 문자열입니다. 바닐라 코드에서는 ArmorMaterial 인터페이스의 getName() 반환값을 씁니다.

바닐라 ArmorMaterials.DIAMOND를 재질로 쓰면 게임은 자동으로 diamond_layer_1.png와 diamond_layer_2.png를 찾습니다. 커스텀 재질을 만들면 직접 이름을 지정할 수 있습니다.

권장 해상도는 64×32 픽셀입니다. 바닐라 텍스처를 참고해서 UV 레이아웃을 맞춰야 합니다.


5. 아이템 텍스처 등록

장착 텍스처 외에 인벤토리 아이콘도 필요합니다. 일반 아이템과 동일하게 textures/item/ 경로에 추가합니다.

assets/examplemod/textures/item/
├── ruby_helmet.png
├── ruby_chestplate.png
├── ruby_leggings.png
└── ruby_boots.png

모델 파일도 각각 필요합니다.

// assets/examplemod/models/item/ruby_helmet.json
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "examplemod:item/ruby_helmet"
  }
}

4종 모두 같은 구조입니다. layer0 값만 각 아이템 이름으로 바꿉니다.


6. 장착 효과와 방어 수치

ArmorMaterials.DIAMOND를 재질로 쓰면 다이아몬드 방어구와 동일한 수치를 가집니다.

슬롯방어력인첸트 가중치
헬멧310
체스트플레이트810
레깅스610
부츠310

방어력 수치를 바꾸려면 커스텀 ArmorMaterial을 구현해야 합니다. 이 챕터에서는 바닐라 재질을 그대로 빌려 쓰는 방식만 다룹니다.


7. 인게임 확인

방어구를 등록하고 빌드한 뒤 게임을 실행하면 크리에이티브 인벤토리에서 확인할 수 있습니다. 방어구를 장착하고 F5 키로 3인칭 시점으로 전환하면 캐릭터 모델에 텍스처가 적용된 모습을 볼 수 있습니다.

텍스처 파일을 아직 추가하지 않았다면 장착 시 보라/검정 패턴이 나타납니다. 아래 안티패턴 섹션을 참고하세요.


⚠️ Layer 텍스처 누락

<material>_layer_1.png 누락 시:

  • 장착 후 캐릭터 모델에 보라/검정 텍스처가 나타납니다.
  • 콘솔 경고: "Missing model for armor layer"

해결: layer_1과 layer_2 모두 추가하세요 (64×32 권장).


정리

  • ArmorItem은 (재질, 타입, 속성) 세 인자를 받습니다.
  • 바닐라 ArmorMaterials enum 7종 중 하나를 재질로 쓸 수 있습니다.
  • 장착 텍스처는 textures/models/armor/<재질명>_layer_1.png / _layer_2.png 두 파일이 필요합니다.
  • 인벤토리 아이콘은 일반 아이템과 동일하게 textures/item/ 경로를 씁니다.

다음 챕터에서는 커스텀 ArmorMaterial을 직접 구현해서 방어력 수치와 인첸트 가중치를 원하는 대로 조정하는 방법을 다룹니다.

도구 아이템 — Tier 시스템과 4종 도구 등록

NeoForge 26.1.2의 도구 아이템 등록을 학습합니다. PickaxeItem·SwordItem은 삭제되어 ToolMaterial.applyToolProperties/applySwordProperties로 대체되고, AxeItem·ShovelItem은 ToolMaterial을 받습니다.

DataComponents — NBT를 대체하는 타입 안전 데이터 저장

NeoForge 26(Minecraft 1.20.5+)에서 도입된 DataComponentType<T>로 ItemStack에 타입 안전하게 데이터를 저장하고 읽는 방법을 학습합니다.

On this page

방어구와 ArmorItem1. ArmorMaterials — 바닐라 재질 목록2. 4종 슬롯 — ArmorItem.Type3. 방어구 등록 코드4. 텍스처 파일 — Layer 시스템5. 아이템 텍스처 등록6. 장착 효과와 방어 수치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