모딩/마인크래프트 모드 개발 일지

마크모딩) 사용자정의 법사 만들기(3d 엔티티로)

kimchangmin02 2025. 12. 24. 23:44

📗 마인크래프트 커스텀 모델링 & 모딩 가이드

제1장: 준비하기 (도구 소개)

  1. Blockbench (블록벤치): 3D 모델링 및 텍스처 제작
  2. MCreator & IntelliJ: 모드 로직 설정 및 코딩 환경 구축

제2장: Blockbench 모델링 기초

  1. 화면 조작법: 카메라 회전, 이동, 확대/축소 (단축키 F)
  2. 큐브 생성 및 변형: 큐브 추가, 위치(Move), 크기(Resize), 회전(Rotate)
  3. 제작 꿀팁: 삭제, 복제(Ctrl+D), 실행 취소(Ctrl+Z)
  4. 실습: 법사의 몸통과 머리 배치하기

제3장: 텍스처링 (색칠하기)

  1. 도화지(Texture) 만들기: 템플릿 기능을 활용한 전개도 생성
  2. 페인트 모드 활용: 브러시, 페인트통, 거울 모드(Mirror) 사용법
  3. 효율적인 채색: 2D 전개도 창에서 한 번에 칠하기
  4. [주의] 저장 규칙: 모델 파일과 별도로 .png 이미지 파일 반드시 저장하기

제4장: 파일 내보내기 및 프로젝트 연결

  1. 모델 내보내기: Java Entity(.java) 파일로 익스포트 및 클래스 이름 설정
  2. 텍스처 내보내기: .png 파일 저장
  3. IntelliJ 프로젝트 구조:
    • .java 파일 위치: src/main/java/.../feature/wizardVer2/
    • .png 파일 위치: src/main/resources/assets/mymod/textures/entity/
  4. 코드 수정: 패키지 경로(package) 및 클래스 이름 일치시키기

제5장: 코드의 역할과 시스템 등록

  1. 파일별 역할 이해:
    • .java: 뼈대(설계도) 정보
    • .png: 겉모습(옷) 정보
    • Renderer: 뼈대에 옷을 입혀 화면에 그려주는 지시서
  2. ModelLayer 등록: 커스텀 모델의 '이름표'를 시스템에 등록하는 이유
  3. Entity 등록 및 스폰 알 설정: 게임 내 아이템 이름 및 색상 지정

제6장: 최종 테스트 및 검수

  1. 체크리스트: 스폰 알 존재 여부, 3D 모델 출력, 텍스처 적용 확인
  2. 기능 검사: 머리 위 UI(HP/Level) 작동 및 전투 시스템 테스트

 



[ ok ]차이가 뭐지 

  • 모델(wizard.java)만 저장하면 색깔이 안 나옵니다.
  • 왼쪽 하단 텍스처 이름 옆에 있는 **작은 디스크 아이콘(Save)**을 눌러서 **이미지 파일(.png)**을 꼭 따로 저장해 주셔야 합니다.

 

[  ]

.png랑 render클래스 뭐가 다른겨

 

[   ]goal부분과, 투사체 부분은 바꾸어야할지도

 

혹은, 나쁜녀석들이 던전 지키는것처럼,

뭔가 데마시아처럼, 착한 편이지만, 

그곳도 침공할수잇도록 만드는아이디어도 

 

 

[  ]아니면 뭔가 게이지 같은거 이용해서

단시간에 너무 마법많이 사용하면, 

미쳐버리게되어서 아군도 공격할수잇게한다던가

마나를 사용안할수잇지만 패널티로서

혹은 마나 소모량 2배

그런것드 

 


1. 어떤 앱/프로그램을 쓰나요?

  • Blockbench (블록벤치): 마인크래프트 전용 3D 모델링 제작 도구입니다. 법사 캐릭터와 그 법사가 쏠 '마법 투사체'의 모양을 여기서 만듭니다. (PC 앱, 웹사이트 모두 가능)
  • MCreator (MC크리에이터): 코딩을 몰라도 클릭 몇 번으로 모드를 만들 수 있게 해주는 논코딩 모드 제작 도구입니다. 여기서 "이 투사체는 어떤 모양이고, 맞으면 어떤 효과가 난다"는 설정을 합니다. (PC용)

2. 구체적인 제작 순서 (코드 없이)

1단계: 3D 모델 만들기 (Blockbench)

  1. 법사 모델링: Blockbench에서 'Minecraft Entity'를 선택하고 법사 모양을 만듭니다.
  2. 투사체 모델링: 새로운 파일에서 법사가 던질 마법 구체, 불꽃, 얼음 송곳 같은 모양을 3D로 만듭니다. (크기가 너무 크지 않게 조절하는 게 핵심입니다.)
  3. 내보내기: 만든 모델들을 .java 파일(Java 에디션용)이나 .json(베드락 에디션용)으로 저장합니다.

2단계: 기능 넣기 (MCreator)

  1. 투사체(Ranged Item/Projectile) 만들기:
    • MCreator에서 '새 요소 추가(+)' 버튼을 누르고 '원거리 아이템(Ranged Item)' 또는 **'투사체(Projectile)'**를 선택합니다.
    • 여기서 '투사체의 모델(Texture/Model)' 설정 칸에 아까 Blockbench에서 만든 3D 투사체 모델을 불러와서 등록합니다.
    • '중력의 영향을 받는지', '속도는 얼마인지', '맞았을 때 폭발하는지' 등을 체크박스로 설정합니다.
  2. 법사(Entity) 만들기:
    • '새 요소 추가(+)'에서 **'엔티티(Living Entity)'**를 선택합니다.
    • 법사 모델을 적용하고, AI 설정에서 '원거리 공격(Ranged Attack)' 기능을 켭니다.
    • 이때 법사가 사용할 무기로 방금 만든 **'사용자 정의 투사체'**를 지정합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 화면 둘러보기 (카메라 조작)

  • 화면 회전 (돌려보기): 마우스 왼쪽 버튼을 누른 채로 드래그하세요.
  • 화면 이동 (옆으로 밀기): 마우스 오른쪽 버튼을 누른 채로 드래그하세요.
  • 확대 및 축소: 마우스 을 위아래로 굴리세요.
  • 모델 정중앙으로 맞추기: 혹시 모델을 찾기 힘들 정도로 화면이 돌아갔다면, 키보드의 F 키를 누르세요. (모델을 화면 꽉 차게 잡아줍니다.)

2. 물체(큐브) 만들고 움직이기

이제 법사를 만들기 위해 상자를 배치해야 합니다.

  1. 큐브 만들기: 오른쪽 패널의 'Outliner' 영역이나 상단 메뉴에서 [큐브 추가 (Add Cube)] 아이콘(주황색 정육면체 모양)을 누르세요.
  2. 위치 옮기기 (이동): 큐브를 클릭하면 빨강(X), 초록(Y), 파랑(Z) 화살표가 생깁니다. 이 화살표를 마우스로 잡고 끌면 움직입니다.
  3. 크기 키우기: 상단 도구 모음에서 [크기 조절 (Resize)] 아이콘(화살표 4개 모양)을 누르거나 단축키 **S**를 누르세요. 그 후 상자의 면을 잡고 당기면 커집니다.
  4. 회전시키기: 상단 도구 모음에서 [회전 (Rotate)] 아이콘(휘어진 화살표)을 누르거나 단축키 **V**를 누르세요.

3. 알아두면 좋은 꿀팁

  • 삭제: 큐브를 잘못 만들었다면 클릭하고 Delete 키를 누르세요.
  • 복제: 똑같은 팔이나 다리를 만들 때는 **Ctrl + D**를 누르면 그 자리에 똑같은 게 하나 더 생깁니다.
  • 뒤로 가기 (실수했을 때): **Ctrl + Z**를 누르면 방금 한 행동을 취소합니다.

다음 단계 추천:

일단 **'몸통'**이 될 커다란 상자 하나와 **'머리'**가 될 상자 하나를 배치해 보세요!

어느 정도 모양이 잡히면 **색칠(텍스처)**을 해야 하는데, 색칠하는 법이 궁금해지면 다시 말씀해 주세요. :)

 

 

 

 

 

 

 

 

 

 

 

일단 폴더별로 만들지말고, 걍 큐브별로 부위나눳음

 

 

 

색칠

1단계: 도화지(텍스처) 만들기

지금은 모양만 있고 색을 칠할 '도화지'가 없는 상태입니다.

  1. 왼쪽 하단에 있는 [텍스처(Textures)] 패널을 보세요.
  2. 거기서 [텍스처 만들기(Create Texture)] 버튼(또는 + 버튼)을 누르세요.
  3. 설정창이 뜨면:
    • 이름: wizard_texture (마음대로 정하셔도 됩니다)
    • 체크박스: **[Template(템플릿)]**에 체크하는 것을 강력 추천합니다! (이렇게 하면 팔, 다리 면을 자동으로 펼쳐줘서 색칠하기 편합니다.)
  4. **[확인]**을 누르면 모델의 면들이 펼쳐진 그림이 왼쪽에 생길 거예요.

2단계: 색칠 모드로 변경

이제 화면 오른쪽 상단을 봐주세요.

  1. 현재는 '편집(Edit)' 모드일 텐데, 그 옆에 있는 [페인트(Paint)] 탭을 클릭하세요.
  2. 그러면 도구들이 브러시, 페인트통, 지우개 등으로 바뀝니다.

3단계: 색칠하기

  1. 색상 선택: 왼쪽이나 오른쪽 아래에 있는 팔레트에서 원하는 색을 고르세요.
  2. 브러시 도구: 상단 도구 모음에서 **브러시(Brush)**를 선택하고 모델에 직접 슥슥 문지르면 색이 칠해집니다.
  3. 페인트통(Paint Bucket): 면 하나를 통째로 칠하고 싶을 때 사용하세요.
  4. 거울 모드(Mirror Painting): 법사의 왼쪽 팔과 오른쪽 팔을 동시에 똑같이 칠하고 싶다면, 상단에서 '거울(Mirror)' 아이콘을 켜고 칠해 보세요. (아주 편합니다!)

4단계: ⚠️ 가장 중요한 것 (저장)

마인크래프트 모델링에서 초보자들이 가장 많이 실수하는 부분입니다.

  • 모델(wizard.java)만 저장하면 색깔이 안 나옵니다.
  • 왼쪽 하단 텍스처 이름 옆에 있는 **작은 디스크 아이콘(Save)**을 눌러서 **이미지 파일(.png)**을 꼭 따로 저장해 주셔야 합니다.

팁: 법사 느낌을 내려면 몸통 아래에 큐브를 하나 더 길게 추가해서 **'치마(로브)'**처럼 만들면 훨씬 마법사 같아집니다!

색칠하다가 막히는 부분이 있거나, "이거 3D 투사체는 어떻게 만들지?" 하는 타이밍이 오면 다시 말씀해 주세요!

 

 

 

 

 

 

 

 

 

 

 

 

본격적으로 색칠하기 

[확인]을 누른 후, 화면 오른쪽 상단을 보세요.

  1. [페인트(Paint)] 탭 클릭: 현재 '편집(Edit)' 모드인데, 그 옆의 **[페인트]**를 눌러야 색칠 도구가 나옵니다.
  2. 도구 선택:
    • 브러시: 직접 그리기
    • 페인트통: 면 전체 채우기 (로브나 피부색 칠할 때 빠름)
  3. 색상 고르기: 왼쪽 하단 팔레트에서 원하는 색을 고릅니다.
  4. 칠하기: 3D 모델에 직접 마우스를 대고 슥슥 칠해보세요!

 

 

 

방법 1: 2D 텍스처 창에서 한 번에 칠하기 (가장 추천)

3D 모델에 대고 칠하지 말고, 왼쪽에 있는 평면 도화지에 대고 칠하면 됩니다.

  1. 상단 탭이 [페인트(Paint)] 모드인지 확인하세요.
  2. 도구 모음에서 **[페인트통(Paint Bucket)]**을 선택합니다.
  3. 원하는 파란색을 고르세요.
  4. 화면 왼쪽에 있는 2D 텍스처(전개도) 창의 빈 공간 아무 곳이나 클릭하세요.
    • 그러면 도화지 전체가 파란색으로 변하면서, 그 도화지를 쓰고 있는 3D 모델의 모든 면이 동시에 파란색이 됩니다.

 

 

 

 

 

 

 

폴더로 이동

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1단계: 블록벤치에서 파일 내보내기 (Export)

법사 모델과 투사체 모델 각각에 대해 아래 작업을 수행하세요.

  1. 모델 파일 (.java):
    • 상단 메뉴 **[파일(File)] -> [내보내기(Export)] -> [Export Java Entity]**를 클릭합니다.
    • Class Name: 코딩할 때 쓸 클래스 이름입니다. (예: WizardModel, MagicProjectileModel)
    • 저장하면 WizardModel.java 파일이 생성됩니다.
  2. 텍스처 파일 (.png):
    • 왼쪽 하단 텍스처 패널에서 저장 아이콘(디스크 모양)을 눌러 저장합니다. (예: wizard_texture.png)

2단계: 개발 환경(IntelliJ 등)에 파일 넣기

내보낸 파일들을 프로젝트 폴더의 정해진 위치에 복사해야 합니다.

  1. Java 모델 파일:
    • src/main/java/com/모드이름/client/model/ 폴더에 넣습니다.
    • 파일을 열어서 맨 위 package 경로를 본인의 프로젝트 경로에 맞게 수정합니다.
  2. 텍스처 파일:
    • src/main/resources/assets/모드id/textures/entity/ 폴더에 넣습니다.

 

 

일단 어떤 폴더에 넣어야하는지와

이름 같아야하는지등

 

 

 

 

 

1. Java 모델 파일 (.java) 배치

위치: src/main/java/changmin/myMod/feature/wizardVer2/
(원하신 대로 이 패키지 안에 넣으시면 됩니다.)

수정 사항 (중요!):
블록벤치에서 내보낸 .java 파일을 메모장이나 IntelliJ로 열면 맨 윗줄에 package ...;라고 적혀 있을 겁니다. 이걸 현재 위치에 맞게 수정해야 에러가 안 납니다.

  • 파일의 첫 줄을 다음과 같이 수정하세요
    package changmin.myMod.feature.wizardVer2;

2. 텍스처 파일 (.png) 배치

텍스처는 java 폴더가 아니라 resources 폴더에 넣어야 합니다. (사진에는 java 폴더만 보이는데, main 폴더 아래에 resources 폴더가 따로 있을 거예요.)

위치: src/main/resources/assets/mymod/textures/entity/

 

 

 

 

이름이 같아야 하나요? (.java와 .png)

결론부터 말씀드리면, 이름이 달라도 상관없습니다. 하지만 코드에서 연결만 정확히 해주면 됩니다.

  • Java 파일 이름: 클래스 명으로 쓰입니다. (예: WizardModel.java)
  • PNG 파일 이름: 리소스 경로로 쓰입니다. (예: wizard_skin.png)

 

 

 

1. 클래스 이름 변경에 대하여

네, 클래스 이름을 WizardVer2로 바꾸셔도 전혀 문제없습니다! 다만 자바의 규칙만 지키시면 됩니다.

  • 자바 규칙: 파일 이름이 WizardVer2.java라면, 코드 안의 클래스 선언도 public class WizardVer2여야 합니다. (대소문자까지 똑같아야 합니다.)
  • 추천: 보통 마인크래프트 모델 클래스는 뒤에 Model을 붙여서 **WizardModel**이나 WizardVer2Model 정도로 짓는 것이 나중에 엔티티 클래스와 헷갈리지 않아 좋습니다.

수정 방법:

  1. 파일 안에서 public class wizard public class WizardVer2로 수정합니다.
  2. IntelliJ에서 파일 선택 후 Shift + F6을 눌러 파일 이름도 WizardVer2.java로 바꿉니다.

2. 리소스 폴더 생성 및 위치

네, 현재 blockstates, lang, models 폴더만 보인다면 새로 만들어야 합니다. 마인크래프트가 텍스처를 찾는 정해진 경로가 있기 때문입니다.

만들어야 하는 경로:
src/main/resources/assets/mymod/ 폴더 안에서 우클릭하여 다음 구조를 만드세요.

  1. mymod 폴더 우클릭 -> New -> Directory -> textures 입력
  2. 생성된 textures 폴더 우클릭 -> New -> Directory -> entity 입력
  3. 최종 위치: assets/mymod/textures/entity/

여기에 블록벤치에서 만든 .png 파일을 넣으시면 됩니다.

 

 

 

 

 

 

1. .java 파일의 역할: "설계도이자 뼈대"

이 파일은 **"이 법사가 어떤 모양(부피)인가?"**를 결정합니다.

  • "머리는 가로세로 8칸짜리 상자다", "팔은 몸통 옆 어디에 붙어있다" 같은 입체적인 구조 정보가 들어있습니다.
  • 마치 조각상의 찰흙 덩어리 나무 뼈대와 같습니다. 색깔이 없는 순수한 '형체' 그 자체라고 보시면 됩니다.

2. .png 파일의 역할: "색칠된 옷(피부)"

이 파일은 **"뼈대 위에 어떤 색을 입힐 것인가?"**를 결정합니다.

  • 아무리 3D 모델(뼈대)을 잘 만들어도, 색칠 파일이 없으면 투명하거나 검은색 덩어리로 보일 겁니다.
  • 블록벤치에서 색칠한 그 그림을 뼈대 구석구석에 '스티커'처럼 딱 붙여주는 역할을 합니다.

3. Renderer 클래스가 왜 필요한가요? (핵심!)

**"뼈대(.java)와 옷(.png)이 준비됐다고 해서 게임 속에 자동으로 나타나지는 않기 때문"**입니다.

게임(마인크래프트) 입장에서는 이런 고민을 합니다.

"어떤 몬스터가 나타나야 하는데... 얘는 어떤 뼈대를 쓰고, 어떤 옷을 입혀서, 어떤 크기로 화면에 그려야 하지?"

이 질문에 답을 주는 **'지시서'**가 바로 Renderer 클래스입니다.

  • 연결고리: "이 법사 엔티티는 **wizard.java**라는 뼈대를 쓰고, 그 위에 **wizard.png**라는 옷을 입혀라"라고 연결해 줍니다.
  • 카메라 조절: "이 법사는 실제 사람 크기로 그려라", "그림자는 이만큼 생기게 해라" 같은 시각적인 설정을 담당합니다.
  • 실시간 변화: "법사가 데미지를 입으면 몸을 빨갛게 해라" 같은 효과도 렌더러가 처리합니다.

 

 

 

 

 

 

 

 

//여기서 스폰알의 이름을 결정하네 

init에서 

스폰알

 

 

 

 

 

 

 

 

결론부터 말씀드리면, 네, 3D 커스텀 모델(블록벤치 모델)을 쓴다면 무조건 해야 합니다.

이 코드가 왜 필요한지, 그리고 안 하면 어떻게 되는지 쉽게 설명해 드릴게요.


1. 이게 뭐 하는 코드인가요?

마인크래프트는 수많은 모델(주민, 좀비, 소, 돼지 등)을 가지고 있습니다. 게임이 시작될 때 이 모델들을 메모리에 올리는데, 이때 각각의 모델을 구분하기 위한 **'이름표(주소)'**가 필요합니다.

WizardModelLayers는 게임에게 이렇게 말하는 것과 같습니다:

"마인크래프트야, 내가 **wizard_ver2**라는 이름표를 붙인 3D 모델 정보를 하나 등록할 건데, 나중에 내가 이 이름표를 부르면 그 모델을 꺼내줘!"

2. 왜 꼭 해야 하나요?

사용자님이 블록벤치에서 만든 모델은 WizardVer2.java라는 파일로 존재하죠? 하지만 마크 엔진은 이 파일이 있는지 모릅니다.

  1. 등록: WizardModelLayers에서 정한 이름표를 가지고 모델의 실제 모양(데이터)을 게임 시스템에 등록합니다. (WizardEventsregisterLayerDefinitions 단계)
  2. 호출: 렌더러(WizardEntityRenderer)에서 "아까 그 이름표(WIZARD_LAYER)에 해당하는 모델을 가져와서 입혀줘!"라고 명령합니다.

만약 이걸 안 하면?

  • 게임 실행 중에 **"모델 레이어를 찾을 수 없습니다"**라는 에러가 나면서 튕기거나,
  • 법사가 투명하게 보이거나,
  • 그냥 하얀색 상자(Missing Texture/Model)로 나오게 됩니다.

3. 코드의 의미 (한 줄씩)

    public class WizardModelLayers {
    // 1. "mymod"라는 모드에서 "wizard_ver2"라는 이름의 모델 주소를 만든다.
    // 2. "main"은 이 모델의 메인 몸체라는 뜻입니다.
    public static final ModelLayerLocation WIZARD_LAYER = new ModelLayerLocation(
            new ResourceLocation(MyMod.MODID, "wizard_ver2"), "main");
}
  

4. 이미 다른 곳에 이 내용이 있다면?

만약 WizardEvents나 다른 파일 안에 ModelLayerLocation을 직접 적어주셨다면 이 파일을 따로 만들지 않아도 되지만, 관리 편의상 따로 빼두는 것이 정석입니다.

궁수(Archer)는 왜 안 했나요?
궁수는 마인크래프트 기본 모델(ModelLayers.VILLAGER)을 가져다 썼기 때문에 이름표를 새로 만들 필요가 없었습니다. 하지만 이번 법사는 사용자님이 직접 만든 커스텀 모델이기 때문에 이름표를 직접 발행해줘야 하는 것입니다.

 

 

 

 

 

 

 

 

실험 시 체크리스트 (성공 기준)

게임을 실행해서 다음 5가지가 정상적으로 작동한다면 성공입니다!

① 스폰 알이 있는가?

  • 인벤토리의 기타(Misc) 탭에서 사용자님이 지정한 색상(파란색/노란색 계열)의 스폰 알이 보이는지 확인하세요.
  • 아이템 이름이 **"마법사 V2"**라고 잘 나오는지 확인하세요.

② 3D 모델이 제대로 보이는가? (가장 중요)

  • 알을 사용해 법사를 소환했을 때, 블록벤치에서 만든 그 모양 그대로 입체적으로 나오는지 확인하세요.
  • 체크포인트: 만약 법사가 투명하거나 하얀색 상자로 보인다면 WizardEvents에서 레이어 등록(registerLayerDefinition)이 누락되었거나 이름이 안 맞는 것입니다.

③ 텍스처(색깔)가 입혀져 있는가?

  • 사용자님이 칠한 파란색 옷과 얼굴 등이 제대로 보이는지 확인하세요.
  • 체크포인트: 보라색/검은색 체크무늬로 나온다면 resources/assets/mymod/textures/entity/ 폴더에 .png 파일이 없거나 파일명이 코드와 다른 것입니다.

④ 머리 위 상태창(UI)이 나오는가?

  • 법사 머리 위에 Lv.1 Wizard, Kills: 0/1, 체력 바가 떠 있는지 확인하세요.
  • 거리에 따라 보였다 안 보였다 하는지도 확인해 보세요.

⑤ 실제로 전투하고 레벨이 오르는가?

  • 좀비를 한 마리 소환해 보세요. 법사가 활을 쏘아 좀비를 잡는지 확인하세요.
  • 좀비를 잡았을 때 머리 위의 Kills 숫자가 1/1로 올라가고, 곧이어 Lv.2가 되는지 확인하세요. (네트워크 패킷이 잘 작동하는지 보는 단계입니다.)

 

 

 

 

 

[  ]

씹 크기 너무 작은데, png랑 

.java파일만 교체하면 되나

모델 다시 내보내기 해서 ?

 

근데 일단 카이팅은 잘하기는 하네 

좀 약간 로봇같은 느낌이 들긴한다 

 

 

 

 

 

 

 

 

 

이건 블록벤치에서 모델링할 때 마인크래프트의 1블록 크기보다 훨씬 작게 만드셔서 그렇습니다. 네, .java 파일만 교체하면 바로 해결됩니다. (텍스처 위치가 바뀌지 않았다면 .png는 그대로 쓰셔도 됩니다.)


방법 1: 블록벤치에서 모델 키우기 (추천)

가장 깔끔한 방법입니다. 모델링 자체의 크기를 키우는 거예요.

  1. 블록벤치에서 해당 모델을 다시 엽니다.
  2. 오른쪽 패널에서 모든 큐브를 선택하거나 **Ctrl + A**를 눌러 전체를 잡습니다.
  3. 상단 도구에서 [크기 조절(Resize)] 도구를 쓰거나, 왼쪽 상단 [Transform] 메뉴에서 숫자를 직접 키웁니다.
    • 팁: 마인크래프트에서 사람 크기로 나오게 하려면 머리 꼭대기가 눈금 격자판에서 위로 약 24~30픽셀 정도 높이까지 올라와야 합니다. 현재 스크린샷으로 봐서는 최소 2~3배는 더 키워야 할 것 같습니다.
  4. 키운 후에 다시 **[내보내기(Export)] -> [Export Java Entity]**를 해서 기존 .java 파일을 덮어쓰기 합니다.
  5. 인텔리제이(IntelliJ)로 돌아와서 빌드하면 크기가 커져 있을 겁니다.

방법 2: 코드에서 강제로 키우기 (가장 빠름)

모델링을 다시 하기 귀찮다면, 화면에 그려주는 Renderer에서 돋보기를 갖다 대는 것처럼 크기를 뻥튀기할 수 있습니다.

WizardEntityRenderer.java 파일에 아래 코드를 추가하세요.

    @Override
protected void scale(WizardEntity entity, PoseStack poseStack, float partialTickTime) {
    // 2.0F는 2배, 3.0F는 3배입니다. 적당한 크기가 될 때까지 숫자를 키워보세요.
    poseStack.scale(2.5F, 2.5F, 2.5F); 
}
  

이 코드를 WizardEntityRenderer 클래스 안에 아무 데나 넣어주면 게임이 법사를 그릴 때 지정한 배율로 크게 그려줍니다.


⚠️ 주의사항 (히트박스)

모델이 커지면 **'클릭되는 범위(히트박스)'**도 맞아야 합니다.

만약 모델은 큰데 칼로 때릴 때 발부분만 맞거나 허공이 맞으면, **WizardEntityTypeInit.java**에서 설정한 크기를 수정하세요.

    .sized(0.6f, 1.95f) // 0.6은 가로 폭, 1.95는 높이입니다. (주민 크기)
  

현재 법사가 격자 1칸(1.0f)보다 작게 나오고 있으니, **방법 1(블록벤치에서 키우기)**을 먼저 해보시는 걸 추천합니다!

빌드 다시 해서 소환해 보시고, 크기 적당해지면 말씀해 주세요!

 

 

 

 

 

네, **방법 1(블록벤치에서 키우기)**로 하실 경우, 결론부터 말씀드리면 .java 파일만 교체하면 되고 다른 코드는 건드릴 필요가 없습니다.

구체적인 이유는 다음과 같습니다.

1. .png 파일(텍스처)은 왜 안 바꿔도 되나요?

  • 블록벤치에서 큐브의 크기를 키워도, 각 면에 지정된 UV(그림이 입혀지는 위치) 값은 비율에 따라 같이 움직입니다.
  • 이미 색칠을 다 해놓은 상태에서 큐브 크기만 키웠다면, 도화지(.png) 상의 그림 위치는 그대로여도 모델에 잘 입혀집니다. 따라서 텍스처 파일은 그대로 쓰셔도 됩니다.

2. 다른 자바 파일(Renderer, Events 등)은요?

  • 사용자님이 이미 WizardVer2.java라는 이름으로 클래스를 연동해 두셨기 때문에, 내용물(좌표값)만 바뀐 새 .java 파일로 덮어쓰기만 하면 됩니다.
  • 연결 지시서(Renderer)나 등록 코드(Init)는 "WizardVer2라는 모델을 가져와라"라는 명령만 내릴 뿐, 그 안의 좌표가 몇인지에는 관심이 없기 때문에 수정할 필요가 없습니다.

⚠️ 주의할 점 (딱 하나!)

블록벤치에서 모델을 다시 내보내기(Export) 하면, 파일 맨 윗줄의 package 경로가 사라지거나 기본값으로 바뀔 수 있습니다.

파일을 교체한 후 다음 두 가지만 확인하세요.

  1. 패키지 경로: 맨 윗줄이 package changmin.myMod.feature.wizardVer2;로 되어 있는지 확인 (안 되어 있으면 수정).
  2. 클래스 이름: 혹시 내보낼 때 클래스 이름을 다르게 설정했다면, 기존 코드에서 썼던 WizardVer2와 똑같이 맞춰주기.

💡 실행 전 팁

블록벤치 바닥에 있는 **격자(Grid) 한 칸이 마인크래프트의 1픽셀(1/16 블록)**입니다.

  • 보통 주민이나 좀비의 높이는 24~30칸(픽셀) 정도 됩니다.
  • 지금 소환된 크기를 보니 10픽셀도 안 되어 보입니다. 전체 선택(Ctrl+A) 후 3배 정도 확 키워서 내보내시면 딱 적당한 크기가 될 거예요!

지금 바로 .java 파일만 새 코드로 복사 붙여넣기 해서 다시 실행해 보세요! 바로 커진 법사를 보실 수 있을 겁니다.

 

 

 

 

 

이걸원한게아닌데 

 

 

 

블록벤치에서 폴더(그룹)의 크기 수치만 키우면, 안쪽에 있는 큐브들이 각각의 위치에서 크기만 커지거나 간격이 안 맞아서 서로 겹치거나 모양이 뭉개지게 됩니다. 텍스처(색칠)도 같이 깨질 수 있고요.

모델의 구조를 유지하면서 전체적으로 크기만 키우는 것은 생각보다 까다롭습니다

 

 

 

 

방법 1: [강력 추천] 코드(Renderer)에서 2.5배 키우기

블록벤치에서 모델을 다시 깎고 텍스처를 수정할 필요 없이, 게임이 이 모델을 그려줄 때 **"돋보기를 대고 크게 그려라"**라고 명령하는 방식입니다. 모양이 전혀 깨지지 않고 크기만 커집니다.

WizardEntityRenderer.java 파일 안에 아래 코드를 추가하세요

@Override
protected void scale(WizardEntity entity, PoseStack poseStack, float partialTickTime) {
    // 숫자를 조절해서 원하는 크기를 맞추세요. (2.5F는 2.5배)
    // 현재 너무 작으니 2.5~3.0 정도를 추천합니다.
    poseStack.scale(2.5F, 2.5F, 2.5F);
}
  • 장점: 모델링 파일(.java, .png)을 다시 건드릴 필요가 없습니다.
  • 단점: 없음. (가장 많이 쓰는 방식입니다.)

방법 2: 블록벤치에서 '전체 선택' 후 스케일 조절

블록벤치에서 직접 키우고 싶다면, 폴더의 숫자를 바꾸는 게 아니라 전체 스케일 도구를 써야 합니다.

  1. 되돌리기: 일단 아까 폴더 크기 늘려서 뭉개진 건 Ctrl + Z로 되돌리세요.
  2. 전체 선택: 오른쪽 리스트에서 모든 큐브를 선택하거나 화면에서 Ctrl + A를 누릅니다.
  3. 스케일 도구 사용:
    • 키보드의 S를 누르거나 상단 도구 모음에서 Scale 아이콘을 선택합니다.
    • 화면에 생기는 노란색 조절자를 잡고 당기면 모든 부위가 비율에 맞춰 같이 커집니다.
  4. 텍스처 수정 (중요):
    • 이렇게 키우면 큐브 면적이 넓어져서 기존 텍스처(색깔)가 듬성듬성하게 보일 수 있습니다.
    • 왼쪽 UV 창에서 텍스처 위치를 다시 맞춰줘야 할 수도 있습니다.

요약: 어떻게 하는 게 좋을까요?

무조건 [방법 1]을 추천합니다.

현재 사용자님의 법사는 모델 구조나 색칠이 이미 잘 되어 있습니다. 이걸 블록벤치에서 억지로 키우면 정성 들여 만든 큐브 배치와 색칠이 다 틀어질 가능성이 높습니다.

 

 

 

 

 

 

마인크래프트 렌더링 시스템이 내부적으로 알아서 호출해 줍니다.

1. 왜 내가 호출하지 않아도 되나요?

이 방식은 객체 지향 프로그래밍의 '오버라이드(Override, 재정의)' 원리를 이용한 것입니다.

  1. 사용자님의 WizardEntityRenderer는 상속 관계를 따라 올라가면 결국 마인크래프트의 **LivingEntityRenderer**라는 클래스를 상속받고 있습니다.
  2. 이 부모 클래스(LivingEntityRenderer) 안에는 엔티티를 그릴 때 순서대로 실행되는 render라는 거대한 함수가 있습니다.
  3.  render 함수 중간에 "혹시 이 몹을 그릴 때 크기를 조절할 설정(scale)이 있나?" 하고 확인하고 실행하는 코드가 이미 들어있습니다.

즉, 마인크래프트 엔진이 몹을 그릴 때마다 다음 과정을 반복합니다:

  • "자, 법사를 그려보자."
  • "먼저 위치 잡고..."
  • "오, 여기 scale이라는 함수가 있네? 실행해서 크기 조절하자." (← 이때 사용자님의 코드가 실행됨)
  • "이제 모델을 그리자!"

 

 

[  ]다음으로는 아주 간단한 투사체

코드로 하면 투사체 속도도 결정할수잇겟지 

아주 느리게도 해보고싶네 

 

 

 

 

 

 

 

오됫네

그 경험치바 위치 조정은 좀 해줘야겟는데 

 

 

 

 

 

 poseStack.translate 높이 계산식에 곱하기 2.5(렌더러에서 설정한 스케일 값)를 추가

 

 

 

히트박스가 안맞음

 

 

 

아 좀 복잡하네, 걍 새로디자인하는게 더 나을지도, 

scale부분 지우고 

걍 작은 버전으로 한 상태에서