안녕하세요. 럽홀입니다.


우\연히 옛날 남자친구 ㄴㄴ구글플러스를 봤는데

ㄴㅇㅁ러ㅏㄴ어람너함나히ㅓㅁ니ㅏㅇ하ㅣㄴ머히ㅏㅓㅁ너ㅏㅣㅎㄹ

ㄹㅇㄴ호렇농러ㅏ혼ㅇ러ㅏ혼ㅇ러ㅏ호ㅓ랑놓ㅇ



두개의...패키지...와...두개의...클래스를....만듭니다.

위에 있는 RegistryHandmill은 레시피들을 관리하고

밑에 있는 RecipeHandmill은 말 그대로 레시피입니다.


자바의 클래스는 쉽게 말해서 사용자가 선언할 수 있는 변수형 타입입니다.

저는 Recipe라는 변수를 선언한 것이지요.

어차피 다 0과 1쪼가리들 뿐입니다.



대충 이렇게 만들어줍시다. 

뭐 특별하게 아이템에서 어떤 능력을 사용하거나 그러진 않았고 온니 Java로만 짠 부분입니다. 마크 모딩을 모르셔도 이해하는 부분이에요.




사실 위에꺼 하기 전에 이걸 먼저 설계해야 합니다 뿌잉뿌잉



그리고 기계로 갈아서 나오는 더스트가 있어야겠졈.

새로운 아이템을 하나 만들어줍니다.



구리 가루를 추가하였습니다.


이렇게 레지스트리를 하나 더 만들었습니다. 

아 참 Items와 Blocks를 다 Item과 Block으로 바꿨습니다. 하지 않으셔도 되지만 전 이런거 꼭 고쳐야 하는 성격이라

고치는거 좀 귀찮으니 안하실분들은 안하셔도 됩니다.



LoveHolyTech 클래스에서 초기화하는 부분에도 추가를 시켰습니다.



이번 기계를 만들면서 아이템을 받을 공간이 하나 필요하다고 생각했습니다.

그래서 아이템 슬롯이 있다는것을 알려주는 ISideedInventory를 받아서 넣어줬습니다.

그리고 인벤토리 내용을 저장하는 배열을 하나 선언을 했구요.

volume값은 진행도입니다. 얼마나 갈아졌는지 진행바를 기록해주는 부분이죠.

그리고 이제 인벤토리에 아이템이 있으면 그 아이템을 엔티티화 해서 월드에 뿌려준 다음에 (그러니까 땅바닥에 톡 튀어 나옵니다 ㄲㄲ)

인벤토리에 있던걸 하나 깎습니다. 레시피대로 나오게 되죠.


그 밑에 NBT 부분은 이제 아이템과 volume, rotation값을 저장해줍니다.

NBT를 저장하지 않으면 게임을 저장하고 나갔다가 들어오면 아이템이 사라지는 극현상이 일어날수 있으니까 꼭 추가해줘야합니다.

나머지 밑 부분은 ISideedInventory를 가져오면 따라오는 메소드들인데 적당히 보면 뭐가 뭔지 알수 있습니다. 알수 없으면... 포기하세요 모딩;



BlockHandmill 부분에도 마찬가지로 좀 바꿨습니다.

그냥 블록을 누르는게 아니고 쉬프트 + 블록을 오른쪽 클릭 하였을때 돌아가도록 해놨습니다. (나중에 GUI를 열땐 그냥 오른쪽 클릭으로 하기 위해서)

Volume값을 1씩 증가시켜주고 Rotation값을 0.4씩 증가시킵니다.

위에 import 부분은 Keyboard를 입력받기 위해서 사용되었습니다.


이렇게하면?



WTF?


제가 잘못짰습니다. TileEntityHandmill 55번째 줄을 봅시다.



이런 젠장... 생각해보니까 inventory를 초기화를 안해줘서 Nullpointer exception이 뜬거 같습니다. 헤헿




생성자를 하나 만들어서 냅다 초기화하는 부분을 넣었습니다.



0아이템을 넣기 위해서 호퍼를 달아줬습니다.



제가 구리광물 2스택을 넣었는데 벌써 한스택은 다 들어갔습니다.

이제 더 이상 들어가지 않아요. 한번 갈아봅시당




오오 튀어나왔습니다.




이렇게 안에 인벤이 갈아졌으니까 아이템이 더 들어갔습니다. 

(처음에 튀어나온 구리 가루가 호퍼로 바로 들어가버려서 스샷을 못찍어서 두번째 간걸 스샷을 찍었습니다 -_-;;)



오늘 따라 참 우울한 날이네요.

+ Recent posts