'모딩강좌'에 해당되는 글 2건

  1. 2015.07.23 [모딩 강좌] 1. 블럭 제작 2
  2. 2015.07.19 [모딩 강좌] 0. 모딩 환경 세팅 14

​안녕 잉여에요

학교 갔다오면 시간이 너무 애매한듯

방학 언제하냐


​안녕 앨빈입니다
지난 회에서 차회 예고를 블럭이라 했는데에...
실상 메인 클래스 하나 만들지 않았습니다(!) 그래서 살짝 길어질 듯 한데...
​보는 사람 없으니까 상관 없을 지도

준비물 : 저번 시간에 한 거.

선택 준비물 : 필자를 뛰어넘는 자바 지식

0. 메인 클래스 제작

메인 클래스를 만들어 봅시다.

메인 클래스는 모드의 중심, 모드를 돌아가게 해 주는 이벤트들이 모아져 있고,

핵심이라 볼 수 있습니다.

한줄 요약 : 이거 없으면 모드가 노답

우리는 배운 사람이기 때문에 먼저 패키지(폴더 개념)을 만들어 줍시다.



그 후 패키지 내에 당신의 모드의 메인 클래스를 만들어 주세요.

표준형(?)은 모드 이름이라고.

그 후 클래스 대가리에 @Mod 어노테이션을 박아줍시다.

어노테이션이 뭐냐고요? 내가 어떻게 알아

사실 자바 하나도 모르는거 아니냐

아악 돌직구다

틱팀이냐

대충대충 때려맞춰서 @가 붙어있는 듯 합니다. 자세한 건 여담으로

@Mod어노테이션에는 변수(?)가 있는데 먼저 modid, version 등등이 있다 하는데 우리는 이 정도만 알면 됩니다.

나머지는 사치

public static final String으로 선언해주시던가, 아니면 직접 쓰시던가. 저는 당연히 전자를 선호합니다.


이렇게요.

자 그럼 모드의 기초적인 클래스...는 한참 멀었습니다만

Preinit, init, postinit 이벤트를 넣어야 합니다. 물론 위에 @EventHandler 어노테이션 넣어 줘야 하구요.

preinit, init, postinit는 예전에는 안 나왔지만 요즈음에는 포지 로딩하는데 다 나오니 생략



이렇게 넣어주시면 됩니다.

참고로, @EventHandler와 void 메소드, 그리고 저 FML...머시기들, 저것만 만족하면 실행됩니다.

그니까 메소드 이름은 전---혀 상관 없어요.

자, 이제 똑바로 돌아가는지 테스트를 해 볼까요.

당신의 실력을 최대한 발휘해서 로거를 짜 넣으세요..는 나중이고

일단 로깅하는거를 짜 넣으시면 됩니다.

정답



겨우 이거(...)면 됩니다

자바니깐요

실행해 봅시다.







이 버튼을 클릭해 주세요.

당연히 초록색 버튼이지 옆에 있는 화살표 누르지 마세요

그리고 눈을 크게 뜨고 밑 콘솔창에서 뭔가 긴 문구를 찾아보세요



이런 문구가 떠야 하는데

성공했나요. 아 물론 저 문구는 당신이 쓴 것에 따라 다를 수 있습니다.

일단 이게 된 거면 모드 본체, 즉 빠다구는 완성되었습니다(!)

이제 이 글의 주제인 블럭을 만들어 보죠.

1. 블럭

뭐 일단 블럭은 모든 모드에서의 적용 과정이 다 똑같을..거라고 생각합니다.

블럭 객체 생성 -> 게임레지스트리 등록. 엄청 간소화 된..건가. 하여간 포지 짱짱.

일단 블럭의 기본적은 틀은 Block 클래스를 상속받습니다. 으음..역시 실습이 좋겠군요.



배운 사람이니 블럭 패키지를 만들어 줍시다.

그 후, 모드의 블럭 패키지의 메인인 클래스를 만들어 줍시다.

표준형(?)은 역시나 모드이름Blocks.

여기에서는 블럭들의 겍체 생성부터 레지스트리 등록까지 전부 합니다.

뭐 필수는 아니지만, 이게 싫으면 전부 메인 클래스에 때려박던가. 블럭 많아지면 아마 이렇게 할 겁니다.

위에 언급한 저 일 외에는 안 하기 때문에, 여기는 일단 저 일을 하는 void 메소드 하나를 만들어 줍시다.

표준형 : public static void registerBlocks()

입니다. 하여간 일단 만들면 끝 난 거.

이제 뭘 하냐고요, 당연히 블럭 만들어야지

예시로 기계모드의 흔한 광석인 구리 광석을 만들어 봅시다.



구리 광석 클래스를 하나 생성해 주세요. 저 사랑이 떠나가요는 무시좀

광석을 나중에 대량으로 추가하시려면은 대강 지으셔도 됩니다. 갈아엎을거거든요.

자, 빠르게 설명할겁니다 잘 들으세요.

먼저블럭클래스를상속받은뒤에생성자를만든다음슈퍼메소드를넣은후각종메소드를넣어주시면됩니다

헉헉

사진과 함께 천천히 봅시다.



1. 블럭 클래스를 상속받습니다. (extends Block)



2. 생성자를 만들고 안에 Super메소드를 넣어 봅시다.

이때 Super 메소드 내의 변수(?)는 재질을 설정해 줍니다.

실수로 이걸 Wooden으로 설정하면 연료로 쓸 수 있게 됩니다! 그런데 이 미친짓을 누가 하겠냐

사실 오르트에 철 기어를 나무로 한 건 안 비밀, 깃헙 들어가면 다 나오잖아?



3. 각종 메소드를 삽입해 봅시다.

이때 각종 메소드는 크리탭 설정, 단단도(?) 설정, 팔 수 있는 도구 관련 설정이 되겠습니다.

먼저 setCreativeTab 괄호 안에 들어갈 거는 크리에이티브 탭. 추후에 자신의 모드에서 만들 수 있지만

아직 강좌할 게 산더미이므로 넘어가고 다음에 후술하도록 하겠습니다. 잠깐 뭐?

저 위 중 밑에 @Override 붙어있는 건 랭귀지 파일 쓸 때 필요한 메소드. 직접 오버라이딩 해 줘야 할 텐데에에에에

나머지는 뭐 자바이니 스피드웨건에게 맡기죠

사실 모르는거 아냐?

푸욱, 심장 쇼크다!

음 뭐. 이렇게 하면

1. 텍스쳐도 없고

2. 강도도 없고

3. 그걸 캘 수 있는 도구도 없는

블럭이 완성되었습니다! 뭐야 이 내 인생같은 블럭

아 물론 크리탭은 있습니다. 마인크래프트 바닐라 탭 1번째 탭이요


자, 블럭을 만들었습니다. 테스트 해 볼까요?

월드를 만들고....

??


???



??????????

잠깐, 위 쪽 강좌를 다시 보죠

"블럭 객체 생성 -> 게임레지스트리 등록"

"블럭 객체 생성 -> 게임레지스트리 등록"

"게임레지스트리 등록"

그렇습니다. 가장 중요한 것을 빼 먹은 겁니다.

그럼 앞에 생성과 void 메소드 하나만 땡겨놓은 메인 블럭 클래스로 갑시다.

으음... 이 휑 한 곳에

public static Block CopperOre;

를 그 메소드 위에 박아줍시다.

그 후 그 메소드 안에 방금 전 그 CopperOre는 새로운 CopperOre.java 이다! 라고 말을 해주는

CopperOre = new CopperOre();

를 삽입해 주세요.

그 후, 중요한 게임레지스트리에 등록해 줍시다.

GameRegistry.registerBlock(CopperOre, "CopperOre");

일단 왼쪽에 CopperOre는 블럭입니다. 다른 걸로 대체 가능합니다.

오른쪽에 "CopperOre"는 블럭의 이름입니다. 아까전에 grf:CopperOre를 사용했다시피, 뒤쪽에 붙는 이릅입니다.

자, 끝? 실행?

...

망할 포지가 이걸로 끝날 리가 있겠습니까

메인 클래스로 가 줍시다.

FMLinit..머시기 이벤트가 있는 곳에 메인 블럭 클래스.registerBlocks();를 박아주시면 됩니다.

저같은 경우는 GRFBlocks.registerBlocks();겠죠? 저 registerBlocks();는 방금 게임레지스트리를 입력했던 그 메소드입니다.

필요에 따라 이름을 바꿀수 있죠.(당연

자 그럼 실행해서 확인해 봅시다.



축하드립니다! 당신의 첫 블럭을 만들었습니다!



2. 여담

역시나 이번 회차도 여담 먼저 작성되었습니다.

사실 이 여담을 쓰는 날은 이미 방학이였습니다(!!!)

그럼 몇 일이 흘렀을까요 수학 ㅈ까

남은 방학은 즐겁게 즐기고

방학 안 한 분들은

분들은

...

뭐 알아서 잘 하겠지

사실 여담에 전부 때려 박는 습관이 이 블로그 왔더니

겁나 재밌더군요

여담이 이렇게 재미있는 건 줄 몰랐음

여담이지만 모딩하는데 가장 좋은 방법은 안 들키게 배끼는 것 입니다.

이걸 쓰면서 노래를 들으면서 게임을 다운받고 게임을 하고 있으니

막 음악이 끊기고 난리도 아니더군요

여러분은 저같은 미친 짓 하지 말고 따로따로 하시기 바랍니다.

오타, 오역, 댓글, 악플받아요

3. 차회 예고

아이템


Posted by alvin137

안녕, 앨빈입니다..만
뭐라도 써야 할 것 같아서 왔습니다!

오르트의 정보를 전부 빼 가지고 오죠. 


준비물 : 허접한 모딩강좌에 실망하지 않을 마음, 이클립스, 자바를 보고 어느정도는 이해 가능한 지능



0. 준비물


​이 인간이 치매 걸렸나​ 위에 한 준비물 외에 다른 준비물이 하나 있습니다! ​그럼 위에다 박으라고 위에다​​

 바로 포지 src인데요, 포지-> 포지 사이트니 갑시다


포지 사이트에 접속해줍시다 사이트만 신경쓰시고 나머지는 신경 안 쓰셔도 됩니다.


그 후 추천버전 src나 최소 1355 이상의 포지를 받아 주세요. 아니면 엑체가 위 버전하고 호환이 안 되서 ​그럼 오르트는​아 몰라

언젠지는 모르겠지만 틱팀이 저것 때문에 빡친 적이 있었죠

그렉때문에 포지를 내리던 기이한 현상이.... 아 물론 언오피셜로 해결 일등 공신

.... 잠깐만, 이거 1.8 포지 아니야?

....

죄송합니다. 처음에다가 이 말만 다시 더하시면 됩니다.


1.7에 마우스를 올리고 1.7.10을 클릭해 주시면 되겠습니다. 1.7.10_pre4 말고!


옆은 신경쓰지 마세요

역시 내 기억은 틀리지 않았습니다. 모두 1448의 포지를 받아 주세요. 물론 src



아무 폴더나 압축을 푸세요! 앗 실명


그 후 명령창을 띄워야 하는데 에... 뭐 재량껐 띄우시면......
죄송합니다​​살려주세요

Win8 이상은 쉽게 띄울 수 있습니다. Shift+우클릭


Win 8 미만은..될지는 모르겠습니다. cd 명령어를 적절히 활용하여 하던가 해 보세요.


자. 창을 띄웠습니다! 나는

그리고 명령어 하나

gradlew setupDecompWorkspace를 치시면


이랬던 놈이

뭔가 좀 하얀 글씨가 생기게 됩니다. 이제 뭘 하냐고? 쉬세요. 푹.

앗 잠깐, 이거 하는 시점은 이미 준비물이 아니지 않나.

그럼 바꾸면 되지

1. 환경 조성

몇 분후---


윗 말은 전부 싸그리 무시하시고

BUILD SUCCESSFUL. 끝난 겁니다. 이 지루한 검은 창을 안 봐도 되는 겁니다! 오늘은

이렇게 사진 한 장으로 카테고리가 끝...나진 않을 겁니다.

그리고 윗 말? 전부 구라입니다만

gradlew eclipse를 쳐 주세요. 진행이 안 된다고? 기다라시면 됩니다.

음.. 기다리는 와중에 버그나 써 보죠

2. BUG벌레

1. jdk가 없는 경우던가... 이럴 경우에는 자바 홈페이지에서 jdk 1.7 받고 오시면 되겠습니다.

더 있던가아... 아, 파일에 한글명이 있어도 안 됬던 것 같습니다.

자 그럼 다시 1. 로 가 볼까요


BUILD SUCCESSFUL. 이제 안 봐도 될 겁니다 역시 오늘만

자. 이클립스를 세팅해보죠

3. ECLIPSE 세팅

아무 버전의 이클립스를 준비하세요. 여기는 자바 초보 강좌가 아니기 때문에 이클립스 설치방법을 강좌하지 않습니다.

여기는? 그래 여기는. 이 글이 맞지 않을까

키세요

워크스페이스의 경로를 포지 src\eclipse 로 맞추시면 됩니다. 끝!

사진이 한장도 없었다 카더라


4. 여담

사실 다 제쳐놓고 이 여담부터 쓴게 여담입니다.

더 있냐고?

당연

포지 추천 버전이 어느재 1450이 되어 있더군요. 엇그제는 1448이더만.

여담으로 오르트 팀은 1291인가 그 쯤 쓰고 있습니다. 사실 귀찮아서 업뎃 안하는걸지도.

여담이지만 이거 전부 저쪽에 비밀입니다. 사실 들키든 말든 상관 없다랄까 뻐기면 되잖아! 배 째!

여담이지만 저랑 틱팀은 쓰는 스타일이 다릅니다.

저는 무턱대고 사진 갔다 붙여대고 쓰는데 틱팀은 뭔가 짜여져 있게 쓴다 해야 하나... 하여간 따라해 볼려다가 암걸려서 망함

오류/오타 제보 받음

덧글 받음. 스팸 받음. 악플 받음

4.5. 여담의 여담

사실 1450은 1.8 포지라네

5. 차 회 예고

블럭


Posted by alvin137