본문 바로가기
Game Dev/MineCraft - Mod

새로운 아이템 추가하기

by [방울] 2014. 11. 28.

 

 

저번에 패키지가 맘에 안들어서 패키지좀 바꿨습니다. (Bell.BellCraft -> bellcraft)

강좌를 보는데 오해 없으시길 바랍니다.

 

또한, 제가 개발하는 모드 위주로 강좌를 올리니 변수명, 클래스명, 패키지명이 독자분들과 다를 수 있습니다.

상황에 맞게 수정하는 센스를 가집시다. *^____^*

 

 

이젠 아이템을 생성해봅시다!

 

먼저, 아이템 관련 클래스를 모아둘 패키지를 생성해줍니다.

저는 bellcraft.items 에 아이템관련 클래스를 다 몰아둘 예정입니다.

 

그 다음 bellcraft.items 패키지에 Items 클래스를 추가해줍니다.

 

 

소스는 아래와 같습니다.

저는 먼저 랜덤 선물 상자를 만들어보려고 합니다.

package bellcraft.items;

import cpw.mods.fml.common.registry.GameRegistry;
import net.minecraft.item.Item;

public class Items {
	public static Item RandomBox;
	
	public static void registerItems()
	{
		RandomBox = new ItemRandomBox();
		GameRegistry.registerItem(RandomBox, "RandomBox");
	}
}

 

 

위와 같이 소스를 입력하면 아마 ItemRandomBox에 빨간 밑줄이 쳐져있을겁니다.

이유는 해당 클래스가 존재하지 않으므로 에러가 발생할 수 밖에 없습니다.

bellcraft.items 패키지에 ItemRandomBox 클래스를 추가해줍니다.

 

 

package bellcraft.items;

import bellcraft.BellCraft;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;

public class ItemRandomBox extends Item {
	public ItemRandomBox()
	{
		super();
		setCreativeTab(CreativeTabs.tabMisc); //기타 탭에 아이템 추가
	}
	
	@Override
	public String getUnlocalizedName()
	{
		return BellCraft.MODID + ".RandomBox"; //아이템 고유이름 지정
	}
	
	@Override
	public String getUnlocalizedName(ItemStack item)
	{
		return BellCraft.MODID + ".RandomBox"; //아이템 고유이름 지정 
	}
	
	@Override
	public void registerIcons(IIconRegister register)
	{
		this.itemIcon = register.registerIcon(BellCraft.MODID + ":ItemRandomBox"); //아이템의 이미지 경로지정
	}
}

 

그 다음 ItemRandomBox 클래스에 위와같이 코딩해줍니다.

 

다음으로 이제 모드가 시작할때 아이템을 등록하기위해 모드 메인클래스(bellcraft.BellCraft)에 아래 소스를 추가해줍니다.

선언부분과 소스부분은 직접 나눠서 작성하세요.

import cpw.mods.fml.common.event.FMLPreInitializationEvent;


@EventHandler
	public void PreInitialize(FMLPreInitializationEvent event)
	{
		Items.registerItems(); //아이템 등록
	}

 

 

그 다음, 아이템의 텍스쳐 파일을 추가하기위해 src/main/resources 폴더에 패키지를 추가해줍니다.

패키지명은 assets.bellcraft.textures.items 로 지정합니다.

그 다음, 방금 생성한 패키지에 텍스쳐파일을 추가해줍니다.

 

 

저는 그림실력이 없어서 일단 급한데로 다른모드에 있는 텍스쳐를 빼왔습니다. (....)

그런다음 이클립스에서 디버깅으로 모드가 잘 작동하는지 확인해봅니다.

 

 

그럼 위와같이 아이템이 정상적으로 등록된것을 볼 수 있으나, 아이템 이름이 지정되지 않았습니다.

 

이젠 언어등록을 위해 리소스폴더에서 패키지를 생성해줍니다.

패키지명은 assets.bellcraft.lang 입니다.

그 다음, 해당 패키지에 파일을 하나 추가해줍니다. (주의. 클래스 아님)

 

파일명은 ko_KR.lang 으로 생성해줍니다. (한국어)

그런데, 초기 언어설정은 영어고, 설정된 언어에 해당하는 언어파일이 없을경우 영어로 출력되므로 en_US.lang 파일도 생성합니다.

 

그 다음 한국어 언어파일에는

BellCraft.RandomBox.name=랜덤 아이템 박스

로 작성해주고, 영어 언어파일에는

BellCraft.RandomBox.name=Random Item Box

로 작성해주시면 됩니다.

 

난 다국어를 지원하는 모드를 만들 생각이 없다! 하시는분들은 그냥 영어 언어파일을 생성하신 후, 그곳에 그냥 한국어로 입력하시면 됩니다.

그 다음 언어설정에서 한국어를 설정하고 확인하시면 됩니다.

 

잘 등록되었네요!

 

 

다른 아이템들도 위와 같은 방법으로 추가하시면 됩니다.

아이템에 기능을 넣는건 다음에 강좌로 올리도록 할게요.

댓글