문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 마인크래프트/모드/개발 (문단 편집) == 크리에이티브 탭 만들기 == 말 그대로 크리에이티브 모드에서 사용할 크리에이티브 탭이다. 일명 아이템 그룹이라고도 읽는다. 블록과 마찬가지로 크리에이티브 탭을 관리하는 클래스를 상속해 등록해 버리면 끝이다. 하지만 방식이 블록보다 단순해 클래스를 만드는 행위는 코딩의 낭비를 야기시킬 수 있다. 그렇기 때문에 다른 특별한 것을 넣기는 게 아니라면 새로운 클래스를 작성하는 방법보다 그냥 익명 클래스로 만들어버리면 끝이다. 심지어 '''등록할 필요도 없다'''. CreativeTabs 클래스의 객체를 만들어 버리고 getTabIconItem 함수를 재정의해 아이콘만 만들어주면 끝이다. 예제 {{{#!syntax java CreativeTabs tabs = new CreativeTabs("tab Namu") { public Item getTabIconItem() { return Items.bed; //아이콘을 블록으로 하고 싶다면 Item.getItemFromBlock 함수를 통해 블록을 아이템으로 변경 후 리턴하면 된다. } }; }}} 만약 아이템을 등록하고 싶지만 그럴 수 없는 경우[* 예를 들면 아이템 또는 블록을 리턴하는 함수로 등록을 시도할 때 아이템이 유동적으로 만들어지는 구조일 경우에는 해당 아이템 또는 블록을 찾을 수 없다. 대표적으로 묘목이 이런 경우.] 아이템을 임시로 아이콘 전용으로 만들어 등록하면 된다. {{{+1 '''1.13/1.14 이후'''}}} 몇가지 변경점이 있다. 우선 {{{CreativeTabs}}} 클래스가 {{{ItemGroup}}} 클래스로 변경되었다. 또한 {{{getTabIconItem()}}} 메소드가 {{{createIcon()}}}으로 바뀌었으며, {{{Item}}} 대신 {{{ItemStack}}}을 리턴한다. {{{ItemStack}}} 클래스는 여러 개 겹쳐 있는 아이템을 나타내기 위한 클래스다. {{{ItemStack}}} 클래스는 {{{IItemProvider}}} 인터페이스의 구현체를 생성자로 받는다. {{{IItemProvider}}}는 {{{asItem()}}} 메소드를 정의하고 있으며, 이 메소드는 구현하고 있는 오브젝트에 해당하는 아이템을 리턴하도록 되어 있다. {{{Item}}}과 {{{Block}}} 클래스가 {{{IItemProvider}}}를 구현하고 있으므로 이 둘을 생성자에 넘겨줄 수 있다. 단, {{{Block}}} 인스턴스를 넘겨줄 때에는 주의할 점이 있는데, 해당 블록의 아이템 형태가 구현되어 있어야 한다는 것이다. ItemStack의 생성자는 넘겨받은 {{{IItemProvider}}} 구현체의 {{{asItem()}}} 메소드를 호출하여 아이템 인스턴스를 받아 필드에 저장한다. 그런데 블록의 경우 블록의 아이템 형태가 정의되어 있지 않으면 기본적으로 공기를 반환하게 된다. 따라서 크리에이티브 탭의 아이콘이 정상적으로 나타나지 않는다. {{{#!syntax java package wiki.namu.mymod.item; import net.minecraft.item.ItemGroup; import net.minecraft.item.ItemStack; import wiki.namu.mymod.NamuMain; public final class NamuItemGroups { private NamuItemGroups() {} public static final ItemGroup NAMU = new ItemGroup("namu") { @Override public ItemStack createIcon() { return new ItemStack(NamuMain.RegistryEvents.NAMU_BLOCK); } }; } }}} 이런식으로 크리에이티브 탭을 따로 모아놓은 클래스를 만드는 것이 좋다. 이렇게 하면 따로 등록할 필요 없이 필요할 때 {{{ItemGroup}}}의 인스턴스를 가져다 쓰면 된다. 또한 게임 내에서 표시되는 크리에이티브 탭의 이름을 lang 패키지 내의 파일에 등록해줘야 한다. 이 때 프로퍼티의 이름은 itemGroup.<탭 이름>이며, 탭 이름은 {{{ItemGroup}}} 생성자에 넣은 문자열이다. {{{#!syntax json { "block.modnamu.namu_block": "Namu Block", "itemGroup.namu": "Namu" } }}}{{{파일명: assets/modnamu/lang/en_us.json}}} 이후 아이템을 등록할 때, {{{ItemGroup}}}으로 자신이 만든 탭을 전달하면 자동으로 게임 내에서 보여지게 된다. {{{#!syntax java public static final Item NAMU_BLOCK_ITEM = new BlockItem(NAMU_BLOCK, new Item.Properties().group(NamuItemGroups.NAMU)) .setRegistryName(NAMU_BLOCK.getRegistryName()); }}} 실행시 다음과 같이 크리에이티브 탭이 만들어진 것을 볼 수 있다. [[파일:2019-07-18_17.23.14.png]]저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기