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

마인크래프트 모드 개발환경 구축

by [방울] 2014. 11. 28.

 

 

 

[이 강좌는 독자가 자바 개발환경을 이미 구축하였고, JAVA에 대하여 어느정도 알거나 공부중인것으로 가정하고 작성합니다]

 

 

 

http://files.minecraftforge.net/

이곳에 접속하신 후,

 

저는 1.7.10버전의 모드를 개발해보려고 하니, 1.7.10 버전중에 권장버전 소스를 받아줍니다. (파란 원 안에 위치한 * 버튼)

모드개발은 짧은시간에 뚝딱! 하고 나오는게 아니므로 최신버전을 사용했다가 문제가 발생하면 곤란해질 수 있고, 보통의 유저들은 권장버전을 이용하기 때문에 맞춰서 개발하여야합니다.

 

그 다음, 받아온 소스 압축파일을 작업할 폴더에 압축해제해줍니다.

 

그럼 위와같이 나오실텐데요,

저 화면에서 쉬프트+우클릭을 해주시면 아래와 같은 메뉴가 나타납니다.

 

위 메뉴에서 여기서 명령 창 열기(W) 를 클릭해주시면

아래와 같은 창이 나타납니다.

 

 

cmd 창에서 경로는 개개인이 다릅니다.

왜냐? 각자 포지 소스 압축푼 폴더 경로가 다르기때문이죠.

 

저 상태에서 gradlew setupDevWorkspace eclipse 를 입력해주시면 자동으로 개발환경을 구축해줍니다.

아래는 이때 중간에 빨간색으로 에러가 발생하였을경우 예상할 수 있는 원인입니다.

1. JDK가 설치되어있지 않음.

2. 자바 환경변수 설정이 되어있지 않음.

위 예시에 해당하신다면 먼저 해결을 하셔야합니다.

 

 

자, 설치가 완료되었습니다.

그럼 이클립스를 실행해줍니다.

 

 

아마, 아무것도 건들이지 않으셨다면 이클립스가 켜지는 도중 작업공간 위치를 지정하라는 폼이 나올겁니다.

여기서 작업공간을 아까 압축해제한 포지소스폴더\eclipse 폴더로 지정한 후 확인을 눌러서 실행해줍니다.

 

저번에 모르고 기본값을 잘못 지정해서 이 창이 안뜨실경우에는 아래와같이 파일 - 작업공간 전환 - 기타 에서 전환하실 수 있습니다.

 

다 지정이 되었나요?

그럼 아래와 같은 화면이 나타납니다.

위 화면대로 펼쳐 들어가시면 예제 소스가 존재합니다.

예제소스를 삭제해줍니다.

 

 

그 다음 위와같이 패키지를 생성해줍니다.

 

 

저는 닉네임.모드명 으로 생성하겠습니다.

이때 모르고 패키지를 대문자로 해버렸네요.

패키지는 소문자로 선언하세요.

 

 

그 다음 클래스를 생성해줍니다.

 

 

클래스 생성창에서 다른건 건들이지 말고 이름만 추가해줍니다.

메인 클래스 제작을 할 예정이니, 메인 클래스 이름을 입력해줍니다.

저는 모드이름과 똑같이 생성하였습니다.

 

package Bell.BellCraft;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;

@Mod(modid = BellCraft.MODID, version = BellCraft.VERSION)
public class BellCraft {
	public static final String MODID = "BellCraft";
	public static final String VERSION = "1.0.0.0a"; // a=alpha / b=beta
	
	@EventHandler
	public void Initialize(FMLInitializationEvent event) //초기화
	{
		System.out.println("BellCraft is load."); //방울크래프트 로드 로그 출력
	}
}

 

 

그리고 생성된 클래스에 위와같이 코딩해줍니다.

 

 

그 다음 src/main/resources 폴더mcmod.info 파일을 오른쪽에 드래그&드롭 하여 이클립스로 열어주신 후, 양식에 맞게 수정하시면 됩니다.

 

또, 이번엔 build.gradle 파일을 오른쪽에 드래그&드롭 해서 그룹과 베이스 네임을 모드에 맞게 수정해줍니다.

 

 

그리고 현재 인코딩상태를 확인하기 위해 minecraft 프로젝트를 우클릭하여 특성으로 들어가줍니다.

 

특성에 자원 - 텍스트 파일 인코딩에서 기타를 선택하고 UTF-8로 인코딩해줍니다.

UTF-8로 인코딩하지 않으면, 프로젝트(주석포함)에 한글이 포함되어있으면 빌드시 에러를 내뿜습니다.

 

그 다음 Bell Easy Tool을 사용하여 build를 실행해줍니다.

BET를 사용하지 않으시는분은 명령프롬프트에 gradlew build를 입력해주시면 됩니다.

 

 

 

빌드가 완료되었습니다.

 

 

 

빌드된 모드는 프로젝트 메인폴더\build\libs에 저장됩니다.

이제 이 빌드 된 모드를 포지가 설치된 마인크래프트 클라이언트 mods폴더에 넣고 마인크래프트를 실행하시면 됩니다.

 

+ 파일명 뒤에 숫자는 버전을 나타냅니다.

빌드시 저 버전명을 지정하고 싶으시면 build.gradle에 version 값을 수정해주시면 됩니다.

버전정보는 개발자가 수동으로 변경해주셔야합니다.

 

 

그럼 이제 마인크래프트를 시작해볼까요?

 

마인크래프트를 실행하고 좀 기다리니 로그에 아까 적었던 BellCraft is load. 가 출력되었습니다.

당연히 아시겠지만 앞에 [Bell.BellCraft.BellCraft:Initialize:15] 는 Bell.BellCraft 패키지에 BellCraft 클래스의 Initialize 함수, BellCraft 클래스의 15번째 라인에서 로그 출력이 이뤄졌다는 뜻입니다.

 

 

이제 마인크래프트에 Mods 버튼을 눌러서 들어가보니 아래에 제 모드가 잘 적용이 되어있네요.

근데 모드 정보파일에에 문제가 있다는군요.

그건 다음에 수정하도록 하겠습니다. (..)

이클립스에서 디버깅하시면 모드 정보가 제대로 불러오지 않는거군요.

빌드해서 따로 실행하면 정상적으로 보여집니다.

 

이로써 모드 베이스가 구축되었습니다.

다음은 아이템 추가 등의 강좌를 진행할 예정입니다.

댓글