Minecraft Modification

[개념이해]Main 클래스

강좌/기타/모딩


준비물 : 자바에 대한 기본 이해



안녕 여러분 프요에요.

뭐 럽*님이라던가 방*님이라던가 *님이라던가

모딩 강좌는 차고 넘쳐요

물론 고급으로 들어가는 내용은 별로 안보여서 어쩌피 영문으로 구글링할 운명이지만



그러니까  저는 대충대충 하고 다른 분 링크를 휙 던지면 되는겁니다 꺄륵

왜냐면 프요도 배우고 있기때문에 모알못입니다


일단 기본적인 환경조성은 이거 보고 따라하세요.






(생략)

@Mod(modid = Yourmod.MODID, name = Yourmod.MODNAME, version = Yourmod.VERSION)
public class Yourmod{

    public static final String MODID = "yourmod id";
    public static final String MODNAME = "yourmod name";
    public static final String VERSION = "yourmod version";    
   

    @Instance
    public static Yourmod instance = new Yourmod();

  

    @EventHandler
    public void preInit(FMLPreInitializationEvent e) {
               
    }
   
    @EventHandler
    public void init(FMLInitializationEvent e) {
               
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent e) {
               
    }
}


코드 하이라이트 넣기 귀찮아



오늘 알아볼 코드는 이겁니다.


이 코드들이 어떤역할을 하고 어떻게 쓰는지 알아보도록해요.




1. @Mod



@Mod(modid = Yourmod.MODID, name = Yourmod.MODNAME, version = Yourmod.VERSION) 


일반적인'@'는 어노테이션으로 불리는 녀석으로 프요가 배울때는 그냥 '주석'으로 배웠습니다만..

이클립스에서는 안쓰면 오류를 내뿜으니 잘 쓰도록 합니다.



일단 이 모드 어노테이션은 보시면 아시다 싶이 모드아이디, 모드 이름, 모드 버전과 뭐.. 추가적으로 모드의 부모모드라던가 자식모드들도 설정할 수 있습니다.


처음 마인크래프트를 실행하면 포지는 모드들의 모든 클래스를 검색해서 이 어노테이션을 찾습니다. 그리고 그 클래스가 메인클래스가 되는거라고 들었습니다만 뭐 따로 써서 그냥 불러와도 똑같은 역할은 하긴하는 듯 합니다(후비적




2. public static final String MODID, MODNAME, VERSION



     public static final String MODID = "yourmod id";
    public static final String MODNAME = "yourmod name";
    public static final String VERSION = "yourmod version";  



static final 변수입니다. (중략) final 변수명은 모두 대문자로 아시죠?(찡긋

이걸 잘쓰면 나중에 아이디라던가 이름이라던가 버전 바꿀때 메인클래스에서 이 곳만 바꾸면되니 개이득. 되시겠습니다.




3. Instance


    @Instance
    public static Yourmod instance = new MCFStudy(); 



인스턴스는 객체를 사용하기 전에 정의해두는 걸 말합니다.

뭐, 이것도 그거겠죠 자바니까요.


이건 안써도 포지에서 자동적으로 생성을 해줍니다만

엑세스 권한이 없습니다.

그러니까 수동으로 만들어주도록해요.




4. Init


    @EventHandler
    public void preInit(FMLPreInitializationEvent e) {
               
    }
   
    @EventHandler
    public void init(FMLInitializationEvent e) {
               
    }

    @EventHandler
    public void postInit(FMLPostInitializationEvent e) {
               
    }


Init..뭐.. 처음 초기화 이런 뜻입니다.




4-1. preInit


    @EventHandler
    public void preInit(FMLPreInitializationEvent e) {
               
    }


시작루틴 가장 처음에 호출되는 핸들러입니다.

아이템,블럭등 생성하는 기능이나 레지스트리 등록할때 사용하시면됩니다.



4-2. init



     @EventHandler
    public void init(FMLInitializationEvent e) {
               
    }


preInit다음으로 실행되는 녀석입니다.

데이터 구조구축기능을 합니다

뭐, 조합법추가 등에 사용하시면됩니다.


4-3. postInit


     @EventHandler
    public void postInit(FMLPostInitializationEvent e) {
               
    }


제일 마지막에 실행되는 녀석입니다.


다른모드와의 통신이나 컨피그 설정(?)등에 사용하면된답니다.





이걸로 MAIN클래스의 가장 기본적인 아이들을 모두 익혔습니다 HAYO??



다음은 프록시


프록시와 서버사이드, 클라이언트 사이드는

http://cafe.naver.com/craftproducer/13685

여기에 잘 설명되어있으니 한번쯤 보도록해요



이 게시글에 나온 코드와 설명은

여기서도 확인할 수 있어요