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

맠모딩 ) 다른사람의 엔티티 모델 가져오기

kimchangmin02 2025. 12. 27. 18:05

 

 

[목차] 블록벤치에서 게코립 모딩까지의 가이드

제1장: 블록벤치(Blockbench) 준비 및 모델링 기초

  1. 그룹화(Grouping)와 피벗 포인트(Pivot Point) 설정: 애니메이션의 뼈대 구성 및 관절 중심점 설정법
  2. 게코립(GeckoLib) 플러그인 설치: 자바 에디션 애니메이션을 위한 필수 도구 설치법
  3. 프로젝트 형식 변환(Convert): 일반 모델을 게코립용(GeckoLib Animated Model)으로 변환하기

제2장: 외부 리소스 활용 및 데이터 추출

  1. 커스포지(CurseForge) 모드/리소스팩 활용: .jar  .zip 파일에서 모델 파일 추출하기
  2. 파일명 확장자 변경: .jar .zip으로 속여 assets 폴더 내의 .json .png 찾아내기
  3. 외부 모델 임포트(Import): 다른 모드의 모델(geo), 텍스처(texture), 애니메이션(animation)을 내 프로젝트에 합치기

제3장: 게코립 애니메이션(Animate) 제작

  1. 애니메이션 탭 활용: 루프(Loop) 설정 및 타임라인 이해
  2. 키프레임(Keyframe) 녹화: 시간별 포즈 설정을 통한 동작 구현(대기, 걷기, 공격 등)
  3. 자연스러운 움직임 팁: 엇박자 걷기, 날개 파닥이기 등 역동적인 효과 연출

제4장: 에셋 내보내기(Export) 및 경로 설정

  1. 게코립 3종 세트 내보내기:
    • .geo.json (모델 데이터)
    • .animation.json (움직임 데이터)
    • .png (텍스처 이미지)
  2. 모드 폴더 구조(Assets Path): src/main/resources/assets/모드ID/... 하위 경로(geo, animations, textures) 설정

제5장: 개발 환경 설정 (Gradle & Config)

  1. build.gradle 라이브러리 추가: GeckoLib 의존성(Dependencies) 및 리포지토리 설정
  2. mods.toml 설정: 모드 실행 시 게코립 모드가 필수로 설치되어 있도록 의존 관계 명시하기
  3. Gradle 새로고침: 변경된 설정 적용 및 라이브러리 다운로드 프로세스

제6장: 자바 코딩(Java Coding) - 몹에게 영혼 불어넣기

  1. 엔티티 등록(Init): EntityTypeInit ItemInit(스폰알)의 차이 및 등록 방법
  2. 엔티티 클래스(Entity Class): 몹의 AI, 체력, 애니메이션 컨트롤러 로직 작성
  3. 모델 클래스(Model Class): 자바 코드와 .geo.json/.animation.json 파일 연결하기
  4. 렌더러 클래스(Renderer Class): 모델을 화면에 그리는 방식 설정 및 클라이언트 등록

제7장: 트러블슈팅 (에러 해결)

  1. 'software' 심볼 오류: 라이브러리 인식 불가 시 해결법
  2. Generic 타입 추론 오류: 렌더러 등록 시 발생하는 코드 오류 해결 (람다식 및 캐스팅)
  3. 강력 새로고침(The Nuclear Option): .gradle, build, out 폴더 삭제 및 캐시 초기화를 통한 인텔리제이 정화법

 

 

 

 

 

 


 

1. 그룹화(Grouping)와 피벗 포인트(Pivot Point) 설정 (가장 중요!)

애니메이션을 만들기 전에 모델링 탭에서 반드시 해야 할 작업입니다.

  • 그룹화: 움직일 부위별로 폴더(Group)를 묶어야 합니다. 예를 들어 '머리', '몸통', '왼다리', '오른다리' 식으로요. 애니메이션은 블록 단위가 아니라 **'그룹 단위'**로 움직입니다.
  • 피벗 포인트(중심점) 설정: 관절 위치를 정하는 것입니다.
    • 상단 도구 모음에서 **Pivot Tool(P)**을 선택합니다.
    • 다리가 몸통에 붙은 지점, 머리가 목에 붙은 지점으로 중심점(노란색 점)을 옮기세요. 이 점을 기준으로 회전하게 됩니다.

2. 애니메이션 탭으로 전환

블록벤치 오른쪽 상단에 보면 **'Animate'**라는 탭이 있습니다. 여기를 클릭하세요.

  1. 왼쪽 Animations 패널에서 + 버튼을 눌러 새 애니메이션을 만듭니다.
  2. 이름을 정합니다 (예: animation.mymob.walk 또는 walk).
  3. Loop Mode를 'Loop'로 설정하면 걷기나 숨쉬기처럼 반복되는 동작을 만들 수 있습니다.

3. 키프레임(Keyframe) 찍기

하단에 타임라인이 생깁니다.

  1. 타임라인의 파란색 선(재생 헤드)을 0초에 둡니다.
  2. 움직이고 싶은 그룹을 클릭합니다.
  3. 왼쪽의 **Rotation(회전)**이나 Position(위치) 옆의 + 아이콘을 눌러 키프레임을 생성합니다.
  4. 시간선을 조금 뒤로(예: 0.5초) 옮긴 후, 모델의 다리나 머리를 회전시킵니다. 그러면 자동으로 키프레임이 찍힙니다.
  5. 스페이스바를 눌러 재생해 보면서 움직임을 확인합니다.

4. 자연스러운 움직임 팁 (걷기 기준)

  • 엇박자: 왼쪽 다리가 앞으로 나갈 때, 오른쪽 다리는 뒤로 가야 합니다.
  • 반복 작업: 0초의 자세와 애니메이션 끝나는 지점의 자세가 같아야 끊기지 않고 부드럽게 반복됩니다.
  • Lerp(보간): 키프레임 사이를 컴퓨터가 자동으로 채워주기 때문에, 너무 촘촘하게 찍지 않아도 됩니다.

5. 적용 방식 선택 (중요!)

만드시는 몹이 어떤 용도냐에 따라 적용 방법이 다릅니다.

  • 베드락 에디션 (BE/Add-on): 블록벤치에서 만든 .animation.json 파일을 그대로 리소스 팩에 넣으면 됩니다.
  • 자바 에디션 (Mod/GeckoLib): 자바 에디션은 기본적으로 애니메이션을 지원하지 않아서 GeckoLib(게코립) 같은 모드 라이브러리를 사용해야 합니다. (이 경우 프로젝트를 만들 때 처음부터 GeckoLib 모델로 시작해야 합니다.)
  • 자바 에디션 (Vanilla/아이템 변형): 모델 엔진(Model Engine) 플러그인을 서버에 설치해서 사용합니다.

 

 

 

 

 

 

 

 

 

 

 

아하, **GeckoLib(게코립)**은 블록벤치에 기본적으로 들어있는 메뉴가 아니라, **'플러그인'**을 따로 설치해야 나타나는 기능입니다!

지금 화면에는 안 보이는 게 정상이에요. 아래 순서대로 따라하시면 바로 생깁니다.


1단계: GeckoLib 플러그인 설치하기

  1. 상단 메뉴에서 File(파일) -> **Plugins...(플러그인)**를 클릭합니다.
  2. 상단 탭에서 Available(사용 가능) 탭을 누르세요.
  3. 검색창에 **"GeckoLib"**을 검색합니다.
  4. GeckoLib Animation Utils라는 플러그인이 나오면 옆의 Install(설치) 버튼을 누르세요.
  5. 설치가 끝나면 창을 닫습니다.

2단계: 다시 'New(새로 만들기)' 화면 확인하기

플러그인을 설치하고 나면, 아까 보셨던 시작 화면의 Minecraft 항목 아래에 새로운 메뉴가 생겼을 겁니다.

  • GeckoLib Animated Model 이라는 메뉴가 생겼는지 확인해 보세요!
  • 만약 바로 안 보인다면 블록벤치를 껐다 켜거나, 그냥 Modded Entity를 누르셔도 됩니다. (플러그인을 설치하면 Modded Entity 안에서도 GeckoLib 기능을 쓸 수 있게 됩니다.)

3단계: 왜 GeckoLib을 쓰나요? (자바 에디션 필수 이유)

자바 에디션 마인크래프트는 원래 몹이 흐물흐물하게 움직이거나 관절이 꺾이는 애니메이션을 지원하지 않습니다.

  • GeckoLib은 자바 에디션에서도 베드락처럼 화려한 애니메이션이 가능하도록 만들어주는 '마법 도구' 같은 거예요.
  • 이걸로 만들면 나중에 모딩(MCreator나 코딩)을 할 때 .geo.json(모델) 파일과 .animation.json(움직임) 파일을 넣어서 게임에 적용할 수 있습니다.

4단계: '녹화'처럼 움직임 만들기 (Animate 탭)

플러그인 설치 후 모델을 만드셨다면(또는 불러오셨다면):

  1. 오른쪽 상단 Animate 탭으로 가세요.
  2. 아래쪽 타임라인에서 파란색 재생 바를 움직이면서 모델을 회전시키면, 그게 바로 애니메이션 데이터로 '녹화' 되는 과정입니다.
  3. 다 만든 후에는 File -> Export -> Export GeckoLib Animations를 눌러서 저장하면 끝입니다!

 

 

 

 

구버전(Deprecated) 플러그인을 찾으셨네요!

블록벤치가 업데이트되면서 예전 플러그인은 더 이상 작동하지 않습니다. 이미지 설명에도 나와 있듯이 새로운 버전을 설치해야 합니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

이걸 따라만들려니깐 도저히 엄두가 안나서

그리고 어차피 프로토콜 용이니깐 

 

 

 

 

 

모델을 구할 수 있는 주요 사이트

마인크래프트 전용 모델(.bbmodel, .json)을 구하는 것이 가장 편합니다.

  • Planet Minecraft (플래닛 마인크래프트):
    • 특징: 가장 대중적인 사이트입니다. 'Mob Models' 카테고리에서 사람들이 공유한 모델을 받을 수 있습니다.
    • 주소: planetminecraft.com
  • Blockbench 공식 Discord & Gallery:
    • 특징: 블록벤치 사용자들이 만든 고퀄리티 모델이 많습니다. 앱 내의 'Built-in Plugins'에서 'Gallery' 플러그인을 설치하면 앱 안에서 바로 구경하고 받을 수도 있습니다.
  • Sketchfab (스케치팹):
    • 특징: 전 세계 3D 아티스트들의 모델이 모이는 곳입니다. 'Minecraft' 또는 'Low Poly'로 검색하면 멋진 모델이 많습니다. 단, 마크 전용이 아닌 .obj .gltf 파일이 많아 수정이 필요할 수 있습니다.
    • 주소: sketchfab.com
  • McModel / Modelers Central (유료/무료):
    • 특징: 주로 서버 운영자들이 사용하는 고퀄리티 전문 모델들이 올라옵니다. 무료 모델도 꽤 있습니다.

 

 

 

 

 

 

2. 다른 사람의 모델 가져오는 방법 (Import)

파일 형식에 따라 가져오는 방법이 다릅니다.

(1) .bbmodel 파일인 경우 (가장 권장)

블록벤치 전용 파일입니다. 만든 사람이 설정한 그룹, 피벗 포인트, 애니메이션이 그대로 보존됩니다.

  • 방법: File -> Open Model로 파일을 선택하면 끝입니다.

(2) .json 파일인 경우 (바닐라 모델)

마인크래프트 기본 리소스팩용 모델입니다.

  • 방법: File -> Import -> Minecraft JSON Model을 선택합니다.
  • 주의: 애니메이션 데이터가 포함되지 않았을 확률이 높습니다.

(3) .obj 파일인 경우 (일반 3D 모델)

일반적인 3D 프로그램에서 만든 파일입니다.

  • 방법: File -> Import -> OBJ Model을 선택합니다.
  • 주의: 마크 특유의 '박스' 형태가 아닐 수 있고, 텍스처(색상)가 깨져서 보일 수 있습니다. 또한, 그룹화가 안 되어 있어 애니메이션을 위해 직접 그룹을 나누고 피벗 포인트를 찍어야 합니다.

3. 가져올 때 주의할 점 (꿀팁)

지금 GeckoLib(게코립) 프로젝트를 만드셨잖아요? 다른 사람의 모델을 가져올 때 꼭 체크해야 할 점이 있습니다.

  1. 포맷 변환: 만약 가져온 모델이 Generic Model이나 Java Block/Item 타입이라면, 상단 메뉴의 **File -> Convert Project**를 눌러 **GeckoLib Animated Model**로 바꿔줘야 합니다.
  2. 그룹 구조 확인: 가져온 모델이 폴더(Group) 없이 큐브(Cube)들만 쭉 나열되어 있다면, 움직이게 만들 수 없습니다. 제가 앞서 설명해 드린 대로 부위별로 새 폴더를 만들고 큐브들을 직접 넣어줘야 합니다.
  3. 저작권: 모델을 다운로드할 때 'Credit' 표시(출처 밝히기)가 필요한지, 상업적 이용이 가능한지 꼭 확인하세요.

 

 

 

궁금하신 점들을 하나씩 쉽게 풀어서 설명해 드릴게요!

1. 리소스팩(Resource Pack)이란?

쉽게 말해 마인크래프트의 '옷'과 '외모'를 바꿔주는 패키지입니다.

  • 들어있는 것: 블록이나 몹의 색깔(텍스처), 소리, 그리고 우리가 찾고 있는 3D 모양(모델) 데이터가 들어있습니다.
  • 형태: 보통 .zip 형태의 압축 파일입니다.

2. 리소스팩을 블록벤치로 가져올 수 있나요?

네, 가능합니다! 다만 리소스팩 통째로 넣는 게 아니라, 그 안에 들어있는 **'모델 파일'**만 골라서 꺼내야 합니다.


3. 커스포지(CurseForge)에서 받은 걸 어떻게 블록벤치로? (단계별 방법)

커스포지나 플래닛 마인크래프트에서 다운로드 버튼을 누르면 보통 ZIP 파일이 저장됩니다. 그 이후 과정은 이렇습니다.

1단계: 압축 풀기

다운로드한 ZIP 파일의 압축을 풉니다.

2단계: 모델 파일 찾기 (보물찾기)

폴더 안으로 깊숙이 들어가야 합니다. 보통 경로는 이렇습니다.

  • 일반적인 모델: assets -> minecraft -> models -> entity (여기에 .json 파일이 있음)
  • 홀로라이브 같은 특수 모델: assets -> minecraft -> optifine -> cem (여기에 .jem 혹은 .jpm 파일이 있음)

3단계: 블록벤치에서 불러오기 (Import)

블록벤치를 켜고 왼쪽 상단 메뉴를 누르세요.

  1. File -> Import 클릭
  2. 파일 확장자에 맞춰 선택:
    • .json 파일이면 -> Minecraft JSON Model
    • .jem 파일이면 -> OptiFine JEM
  3. 아까 찾은 파일을 선택하면 블록벤치 화면에 짠! 하고 나타납니다.

4. 하지만 주의할 점! (중요)

방금 가져온 그 모델은 **'그냥 모양'**일 뿐입니다. 질문자님이 처음에 만들려고 했던 "움직이는(GeckoLib)" 상태가 아니에요.

가져온 모델을 내가 만든 '실험용몹1'에 합치는 방법:

  1. 가져온 모델 창에서 모든 폴더(그룹)를 마우스로 드래그해서 잡습니다.
  2. Ctrl + C (복사) 합니다.
  3. 내가 만든 '실험용몹1' (GeckoLib 프로젝트) 창으로 가서 Ctrl + V (붙여넣기) 합니다.
  4. 텍스처 입히기: 리소스팩 폴더 안의 textures 폴더에 있는 .png 이미지 파일을 블록벤치 왼쪽 하단 Textures 칸에 드래그해서 넣으면 색깔이 입혀집니다.

 

 

 

 

 

 

커스포지(CurseForge) 앱으로 설치하셨군요! 앱에 설치되었다는 건 이미 질문자님 컴퓨터의 특정 폴더에 ZIP 파일로 저장되어 있다는 뜻입니다.

그 파일을 찾아서 꺼내기만 하면 됩니다. 아래 순서대로 따라 해보세요.


1단계: 설치된 폴더 열기

  1. 커스포지 앱 화면에서 지금 보고 계신 1.18.2 내 창작물 이미지 옆에 있는 점 3개(⋮) 버튼을 누르세요.
  2. 메뉴에서 **[Open Folder] (폴더 열기)**를 클릭합니다.
  3. 그러면 윈도우 탐색기 창이 뜰 겁니다. 거기서 **resourcepacks**라는 폴더로 들어가세요.
  4. 그 안에 hololive 2 (v1.1).zip 파일이 들어있을 겁니다!

2단계: 파일 복사 및 압축 풀기

  1. 그 ZIP 파일을 바탕화면이나 작업하기 편한 곳으로 복사(Ctrl+C)해서 붙여넣기(Ctrl+V) 하세요.
  2. 복사한 파일의 마우스 오른쪽 버튼을 눌러 **[압축 풀기]**를 합니다.

ㅇㅋ 이까지는 햇어

 


3단계: 모델 파일 찾아내기

압축을 푼 폴더 안에서 모델 파일을 찾아야 합니다. 보통 이런 캐릭터 리소스팩은 옵티파인(OptiFine) 기능을 사용하기 때문에 아래 경로에 파일이 있을 확률이 매우 높습니다.

  • 경로: assets -> minecraft -> optifine -> cem
  • 찾아야 할 파일: 확장자가 .jem 혹은 **.jpm**으로 된 파일 (예: fox.jem, rabbit.jem 등)

4단계: 블록벤치로 가져오기

이제 블록벤치를 켭니다.

  1. 메뉴: File -> Import -> OptiFine JEM 클릭
  2. 방금 찾은 그 .jem 파일을 선택합니다.
  3. 모델이 나타나면 성공!

⚠️ 가져온 후 꼭 해야 할 일 (복습)

지금 가져온 모델은 '리소스팩용'이라 질문자님이 만들려는 **'게코립(GeckoLib) 몹'**과는 형식이 다릅니다.

  1. 가져온 모델을 전체 선택해서 복사(Ctrl + C) 하세요.
  2. 아까 만들어둔 [실험용몹1] 프로젝트 탭으로 가서 붙여넣기(Ctrl + V) 하세요.
  3. 그다음 애니메이션(Animate) 탭으로 가서 움직임을 만들기 시작하면 됩니다.

혹시 폴더 안에서 .jem 파일을 못 찾겠다면, 압축 푼 폴더 안에 어떤 이름의 폴더들이 있는지 알려주세요! 어디에 숨어있는지 바로 찾아드릴게요.

 

 

 

 

 

 

근데 커스포지에서 폴더열기로 가져올수있다면

굳이 다른 웹사이트에서 가져올필요없이

커스포지 모드에서 가져올수도 

 

 

사실 .jar 파일은 이름만 JAR일 뿐, 실제로는 .zip 파일과 똑같은 압축 파일입니다. 그래서 그 안을 열어보면 모드 제작자가 사용한 모델과 텍스처가 모두 들어있습니다.

어떻게 꺼내는지 단계별로 알려드릴게요.


1단계: JAR 파일 열기 (압축 풀기)

  1. 가져오고 싶은 모드 파일(예: minecolonies...jar)을 마우스 오른쪽 버튼으로 클릭합니다.
  2. 알집, 반디집, WinRAR 같은 압축 프로그램이 있다면 [여기에 압축 풀기] 혹은 **[압축 파일 열기]**를 누르세요.
    • 만약 압축 프로그램 메뉴가 안 보인다면, 파일 이름 뒤의 .jar.zip으로 이름을 바꾼 뒤 압축을 풀어도 됩니다.

2단계: 텍스처와 모델 찾기 (보물찾기)

압축을 풀면 폴더가 많이 나올 텐데, 우리가 필요한 건 딱 하나입니다. assets 폴더만 찾으시면 됩니다.

  • 텍스처(이미지) 위치: assets -> (모드이름) -> textures -> entity
    • 여기에 모드에 나오는 몹들의 색칠된 이미지(.png)가 들어있습니다.
  • 모델(형태) 위치: assets -> (모드이름) -> models -> entity
    • 여기에 3D 모양 데이터인 .json 파일이 들어있습니다.
  • 게코립(GeckoLib) 모델인 경우: 만약 그 모드가 게코립을 쓴다면 위치가 조금 다를 수 있습니다.
    • assets -> (모드이름) -> geo (모델 파일)
    • assets -> (모드이름) -> animations (움직임 파일)

3단계: 블록벤치로 가져오기

이제 파일을 찾았으니 블록벤치로 가져오는 건 식은 죽 먹기입니다.

  1. 텍스처만 가져올 때: 블록벤치에서 모델을 열어둔 상태로, 찾은 .png 파일을 왼쪽 하단 Textures 패널로 드래그 앤 드롭 하세요.
  2. 모델까지 가져올 때: 찾은 .json이나 .geo.json 파일을 블록벤치 화면 중앙으로 드래그 하거나, File -> Import 메뉴로 불러옵니다.

💡 꿀팁: 왜 리소스팩이랑 똑같나요?

모드(.jar)는 사실 **[리소스팩(그래픽/소리)] + [코드(작동 방식)]**가 합쳐진 형태입니다. 그래서 리소스팩에서 파일을 꺼내는 방식과 모드에서 파일을 꺼내는 방식이 100% 똑같습니다.

⚠️ 주의사항

다른 사람이 만든 모드의 텍스처나 모델을 가져와서 혼자 공부하고 실험하는 건 괜찮지만, 그걸 그대로 다시 인터넷에 올리거나 본인의 모드인 것처럼 배포하면 저작권 문제가 생길 수 있으니 주의하세요!

지금 저 폴더에 있는 모드 중 하나를 골라서 압축을 풀어보세요. assets 폴더가 바로 보일 거예요! 어떤 모드의 텍스처를 가져오고 싶으신가요? (예: 마인콜로니 몹 등) 알려주시면 더 자세히 찾아드릴 수도 있습니다.

 

 

 

 

 

 

 

그러면, 마인콜로니에서 그 코드가 어떻게 실행되는지도 볼수잇을지도 

 

 

 

 

근데 압축풀기는 없는디 

 

 

아, 정말 예리하시네요! 맞습니다. 지금 보여주신 메뉴에서 **[압축 대상...]**을 누르면, jar 파일이라는 상자를 zip이라는 더 큰 상자에 한 번 더 집어넣는 꼴이 됩니다. 그러면 상자를 열었을 때 또 상자가 나오니까 아무 소용이 없죠.

우리가 해야 할 건 '상자를 또 포장하는 것'이 아니라, "이 상자(jar)는 사실 압축 풀 수 있는 상자(zip)야"라고 이름표만 바꿔주는 것입니다.

이렇게 따라 해보세요:


1. 이름 바꾸기 (상자 포장X, 이름표만 교체O)

  1. 파일을 선택하고 키보드의 [F2] 키를 누르거나, 상단 메뉴의 [이름 바꾸기] 아이콘을 누릅니다.
  2. 파일명 맨 뒤에 있는 .jar 글자만 지우고 **.zip**이라고 직접 타이핑해서 바꿉니다.
    • 예: hmag-mc1.18.2...jarhmag-mc1.18.2...zip
  3. "파일이 사용할 수 없게 될 수도 있다"는 경고창이 뜨면 **[예]**를 누르세요.

2. 이제 압축을 풉니다

  1. 이름을 .zip으로 바꾸면 아이콘이 지퍼 달린 폴더 모양으로 변합니다.
  2. 이제 다시 마우스 오른쪽 버튼을 누르면, 아까는 없던 [압축 풀기] 메뉴가 생깁니다!
  3. 압축을 풀면 그 안에 우리가 그토록 찾던 assets 폴더가 들어있습니다.

💡 만약 이름 뒤에 .jar라는 글자가 안 보인다면?

지금 사진상으로는 확장자(.jar)가 안 보이는 상태일 수도 있습니다. 그럴 땐 이름표를 바꿀 수 없으니 아래 설정을 먼저 하세요:

  1. 폴더 창 맨 위 메뉴에서 [보기] 클릭
  2. [표시] -> **[파일 확장명]**을 클릭해서 체크 표시가 나오게 합니다.
  3. 이제 파일 이름 뒤에 .jar가 보일 거예요. 그때 이름을 바꾸시면 됩니다!

요약

  • 압축하기(X): 상자를 또 상자에 넣는 것 (사용 금지)
  • 이름 바꾸기(O): .jar.zip으로 글자만 고쳐서 윈도우를 속이는 것 (우리가 할 일)

이렇게 해서 압축을 풀면, 그 안에 있는 **이미지(텍스처)**들을 마음껏 블록벤치로 가져올 수 있습니다! 한번 해보시겠어요?

 

 

 

아니 이게 된다고 ?

 

 

 

 

 

 

 

 

아니 이게 왜됨

신가히네

근데 압축폴더 지정안해주고, 걍 바탕화면으로 하니깐, 

폴더가 다따로나오내ㅔ 

 

 

 

assets 폴더를 찾아내셨네요.

1. 텍스처(색칠 이미지) 찾기

가장 먼저 몹의 피부에 해당하는 이미지를 찾아봅시다.

  1. assets 폴더를 더블 클릭해서 들어갑니다.
  2. 거기에 모드 이름으로 된 폴더가 하나 더 있을 거예요. (예: hmag 등) 거기로 들어갑니다.
  3. textures 폴더로 들어갑니다.
  4. entity 폴더로 들어갑니다.
  5. 여기에 몹들의 이름이 적힌 .png 파일들이 쭉 있을 겁니다. 이게 바로 우리가 찾던 텍스처입니다!

2. 모델(3D 형태) 찾기

이미지뿐만 아니라 몹의 모양 자체도 가져오고 싶다면?

  1. 다시 assets -> (모드이름) 폴더까지 뒤로 나옵니다.
  2. 이번에는 models -> entity 폴더로 들어갑니다. (만약 GeckoLib을 쓰는 모드라면 geo 폴더에 있을 수도 있습니다.)
  3. 여기에 있는 .json 혹은 .geo.json 파일이 몹의 형태 데이터입니다.

3. 블록벤치로 가져오는 방법

이제 파일을 찾았으니 내 프로젝트에 적용해 봅시다.

  • 이미지만 가져오고 싶을 때:
    • 찾으신 .png 파일을 블록벤치 왼쪽 하단 Textures 패널로 그냥 마우스로 끌어다 놓으세요(드래그).
  • 모양까지 통째로 가져오고 싶을 때:
    • 찾으신 .json 파일을 블록벤치 화면 정중앙으로 끌어다 놓으세요.

 

 

 

아주 날카로운 질문입니다! 개발 방식의 차이 때문에 생기는 혼란인데, 이걸 이해하면 마크 모딩의 고수가 될 수 있습니다.

결론부터 말씀드리면, 지금 하려는 'GeckoLib(게코립)' 방식은 모델 데이터를 코드가 아니라 별도의 파일(.json)로 관리하는 방식이기 때문입니다.

1. 두 가지 방식의 차이 (중요!)

질문자님이 예전에 하셨던 방식과 지금 하려는 방식은 모델을 게임에 넣는 "방법" 자체가 다릅니다.

방식 A: 옛날 방식 (Java Class 내보내기)

  • 파일: .java (코드 파일)
  • 원리: 자바 코드 안에 "여기에 가로 2, 세로 5짜리 상자를 만들어라"라고 직접 숫자를 써넣는 방식입니다.
  • 장점: 추가 모드(라이브러리)가 필요 없습니다.
  • 단점: 애니메이션(팔다리 휘두르기 등)을 만들려면 자바 코드를 수학적으로 복잡하게 짜야 합니다. (매우 어렵습니다.)

방식 B: 요즘 방식 (GeckoLib / JSON 내보내기)

  • 파일: .geo.json (모델 데이터) + .animation.json (움직임 데이터)
  • 원리: 자바 코드에는 "엔티티의 행동(AI, 체력)"만 적고, 겉모습과 움직임은 외부 파일인 JSON에서 불러오는 방식입니다.
  • 장점: 블록벤치에서 만든 화려한 애니메이션을 코드 한 줄 안 쓰고 그대로 게임에 넣을 수 있습니다.
  • 단점: GeckoLib이라는 모드 라이브러리가 반드시 설치되어 있어야 합니다.

2. ".java 파일이 없으면 엔티티 클래스가 없는 거 아닌가요?"

아니요, 엔티티 클래스는 여전히 필요합니다! 다만 역할이 바뀝니다.

  1. 엔티티 자바 클래스(MyMobEntity.java): 이 몹의 체력, 공격력, AI(공격할지 도망갈지)를 담당합니다.
  2. 렌더러 자바 클래스(MyMobRenderer.java): 이 몹이 화면에 보일 때 **"어떤 .json 파일을 불러와서 보여줄지"**를 결정합니다.
  3. JSON 파일: 렌더러가 불러오는 실제 설계도입니다.

즉, 예전에는 자바 파일 하나가 **[행동 + 설계도]**를 다 가지고 있었다면, 지금은 **[행동은 자바] / [설계도는 JSON]**으로 역할을 나눈 것입니다.


3. 그럼 왜 아까 모드 압축 풀었을 때 .java가 안 나왔나요?

모드(.jar)를 배포할 때는 자바 코드를 컴퓨터가 읽기 쉬운 .class 파일로 변환해서 넣기 때문입니다. 텍스처(.png)나 모델(.json)은 변환할 필요가 없으니 그대로 들어있는 거고요.

 

 

 

 

 

 

 

스폰알 json은 걍 스폰알이 어떻게 생겻는지 그걸 정의하는거 아닌ㄱ사 

 

geo 폴더나 animations 폴더가 없다는 것은, 이 모드 제작자가 **'옛날 방식(자바 코드 방식)'**으로 몹을 만들었다는 뜻입니다. 이 방식은 모델의 설계도가 별도의 파일로 저장되지 않고 자바 코드(.class) 안에 숫자로 박혀 있어서, 블록벤치로 모델을 불러오는 것이 불가능합니다.

 

 

 

 

 

 

 

 

지금 바로 아래 순서대로 파일을 블록벤치에 던져 넣어보세요!

1단계: 모델(뼈대) 불러오기

  1. geo 폴더로 들어갑니다.
  2. 거기에 있는 .geo.json 파일을 마우스로 잡아서 블록벤치 화면 중앙에 드롭하세요.
  3. 화면에 몹의 3D 형태(하얀색 뼈대)가 나타날 겁니다.

2단계: 텍스처(피부) 입히기

  1. textures -> entity (또는 그 안의 폴더)로 이동합니다.
  2. 해당 몹과 이름이 같은 .png 파일을 블록벤치 왼쪽 하단의 Textures 패널로 드래그합니다.
  3. 이제 몹에 색깔이 입혀집니다.

3단계: 애니메이션(움직임) 불러오기

  1. animations 폴더로 들어갑니다.
  2. 거기에 있는 .animation.json 파일을 블록벤치 화면으로 드래그합니다.
  3. 화면 하단에 "Animations Imported"라는 메시지가 뜰 겁니다.

4단계: 움직여보기 (하이라이트!)

  1. 블록벤치 오른쪽 상단에서 Animate 탭을 클릭합니다.
  2. 왼쪽 Animations 패널을 보면 walk, idle, attack 같은 목록이 생겨 있을 거예요.
  3. 그중 하나를 클릭하고 타임라인의 재생(Play) 버튼을 누르면 몹이 움직이기 시작합니다!

 

 

 

 

 

 

 

지금 상황(몹에게 색을 입히는 작업)에서는 무조건 첫 번째인 **[Import Texture]**를 클릭하시면 됩니다!

각 메뉴의 의미는 다음과 같습니다:

  1. Import Texture (이거 클릭!): 모델에 색을 입히는 **'텍스처'**로 가져옵니다. 왼쪽 하단 Textures 패널에 등록됩니다.
  2. Extrude Image: 2D 이미지를 두께가 있는 3D 블록으로 자동 변환합니다. (지금은 필요 없습니다.)
  3. Reference Image: 모델링할 때 참고용으로 배경에 띄워두는 사진으로 가져옵니다. (바닥이나 옆에 가이드로 두는 용도)
  4. Edit Image: 그냥 이 그림을 수정(도트 찍기)만 할 때 사용합니다.

 

오 되네 

신기

 

 

 

 

 

 

 

 

 

 

 

 

 

  1. 먼저 beegirl.geo 탭을 클릭해서 모델이 화면에 보이게 하세요.
  2. 오른쪽 상단 탭에서 Animate 버튼을 눌러 애니메이션 화면으로 전환합니다. (이게 더 확실합니다.)
  3. 이제 윈도우 폴더에서 .animation.json 파일을 가져오는데, 이번에는 탭 위가 아니라 모델이 서 있는 '중앙 화면(검은 공간)'이나 왼쪽 'Animations' 패널 칸으로 직접 드래그해서 던지세요.

 

 

 

 

 

 

지금 바로 하실 일

  1. 화면에 떠 있는 창에서 [OK] 버튼을 누르세요. (체크 표시된 idleride 동작을 가져오겠다는 뜻입니다.)
  2. 그러면 왼쪽 ANIMATIONS 패널에 idleride라는 이름이 생길 겁니다.

움직임 확인하는 법 (드디어!)

  1. 왼쪽 ANIMATIONS 목록에서 **idle**을 클릭해 보세요.
  2. 이제 화면 아래쪽에 긴 막대(타임라인)와 파란색 선들이 나타날 겁니다.
  3. 키보드의 **스페이스바(Space)**를 누르거나, 하단 중앙에 있는 재생(▶) 버튼을 눌러보세요.
  4. 이제 화면 속의 꿀벌 소녀가 숨을 쉬거나 움직이기 시작할 겁니다!

💡 만약 내가 직접 움직임을 '녹화'하거나 수정하고 싶다면?

이미 만들어진 애니메이션이 마음에 안 들거나, 새로운 동작을 만들고 싶을 때 아까 말씀드린 '녹화' 개념을 쓰시면 됩니다.

  1. 새 동작 만들기: 왼쪽 ANIMATIONS 패널의 + (Add Animation) 버튼을 눌러 이름을 정합니다 (예: walk_new).
  2. 키프레임 찍기: 하단 타임라인의 파란색 선을 원하는 시간(예: 0.5초)으로 옮깁니다.
  3. 모델 움직이기: 화면에 있는 몹의 팔이나 다리를 클릭해서 회전시킵니다.
  4. 결과: 그러면 자동으로 타임라인에 **점(Keyframe)**이 찍히며 그 움직임이 기록됩니다.

자, 이제 OK 누르고 재생해 보셨나요? 소녀가 잘 움직이나요? 혹시 모델이 투명하게 보이거나 색깔이 이상하면 말씀해 주세요! 텍스처 입히는 법을 다시 짚어드릴게요.

 

 

 

 

 

 

 

 

다른 모델(지팡이) 가져와서 쥐어주는 법

이미 만든 지팡이가 있거나 인터넷에서 다운받은 모델이 있다면, 현재 꿀벌 소녀 모델에 합칠 수 있습니다.

방법 A: 복사해서 붙여넣기 (가장 쉬움)

  1. 지팡이 모델(.bbmodel 또는 .json)을 블록벤치에서 새 탭으로 엽니다.
  2. 오른쪽 Outliner 패널에서 지팡이의 모든 블록이나 그룹을 선택하고 Ctrl + C (복사) 합니다.
  3. 다시 꿀벌 소녀 탭으로 돌아와서 Ctrl + V (붙여넣기) 합니다.

방법 B: 파일 합치기 (Import)

  1. 상단 메뉴에서 File -> Import -> Minecraft JSON (또는 해당 형식)을 눌러 지팡이 파일을 선택합니다.
  2. 이때 "현재 프로젝트에 합칠까요?"라는 메시지가 뜨면 확인을 누릅니다.

 

 

 

 

일단 지팡이 추가는, 공격 애니메이션 추가하고 나서 하자 

 

 

 

1단계: 애니메이션 슬롯 만들기

이미 idle, ride가 있는 목록에 새로운 줄을 하나 추가하는 작업입니다.

  1. 오른쪽 상단 탭에서 Animate 모드인지 확인합니다.
  2. 왼쪽 ANIMATIONS 패널 상단에 있는 + (Add Animation) 아이콘을 클릭합니다.
  3. 설정창이 뜨면 이름을 입력합니다. (예: attack 또는 animation.beegirl.attack)
  4. Loop Mode(루프 모드) 설정:
    • 공격은 한 번 하고 끝나야 하므로 Play Once (한 번 재생) 혹은 **Hold on last frame (마지막 자세 유지)**를 선택합니다. (숨쉬기 같은 건 Loop이지만 공격은 다릅니다.)
  5. Confirm을 누르면 왼쪽 목록에 attack이 생깁니다. 클릭해서 선택하세요.

2단계: 키프레임 찍기 (실전 애니메이팅)

이제 하단 타임라인에 **파란색 선(재생 바)**이 보일 겁니다. 이 선을 옮겨가며 동작을 기록하는 것이 '녹화'의 핵심입니다.

  1. 시작 자세 (0초):
    • 파란 선을 0에 둡니다.
    • 지팡이를 든 팔(rightarm)을 클릭하고 왼쪽 Rotation 옆의 +를 눌러 점을 찍습니다. (준비 자세 저장)
  2. 기 모으기 (0.2~0.3초):
    • 파란 선을 약간 뒤로 옮깁니다.
    • 팔을 뒤로 쑥 뺍니다. (자동으로 점이 찍힙니다.)
  3. 공격 발사! (0.5초):
    • 파란 선을 조금 더 뒤로 옮깁니다.
    • 팔을 앞으로 강하게 내뻗습니다. 이때 몸통(body)도 약간 앞으로 숙여주면 훨씬 박진감 넘칩니다.
  4. 끝 자세 (0.8~1초):
    • 다시 원래 자세로 돌아오도록 팔을 움직여줍니다.

3단계: 더 역동적으로 만드는 꿀팁 (중요!)

새 애니메이션을 만들 때 이 3가지만 기억하면 퀄리티가 확 올라갑니다.

  • 날개 파닥이기: 공격하는 순간 날개(leftwing, rightwing)의 회전 속도를 빠르게 조절해 보세요. "힘을 쓰고 있다"는 느낌이 팍 옵니다.
  • 지팡이 효과: 지팡이를 든 손목만 살짝 까닥거리는 키프레임을 추가해 보세요.
  • 간격 조절: 키프레임(점) 사이의 간격이 좁으면 빠른 동작, 넓으면 느린 동작이 됩니다. 공격은 '휘두를 때' 점 사이 간격을 아주 좁게 만드는 게 핵심입니다.

4단계: 만든 애니메이션 저장 및 확인

  1. 하단 타임라인의 **재생 버튼(▶)**을 눌러서 확인합니다.
  2. 수정이 끝나면 상단 메뉴 File -> Save Project를 눌러서 전체 프로젝트(.bbmodel)를 저장하세요.
  3. 나중에 게임에 넣을 때:
    • File -> Export -> Export GeckoLib Animations를 눌러서 .animation.json 파일을 다시 내보내야 게임에서 이 새로운 공격 동작을 인식합니다.

질문: 어떤 공격 모션으로 결정하셨나요?
만약 지팡이를 휘두르는 건지, 아니면 마법을 쏘는 건지 알려주시면 어떤 부위를 몇 도 정도 돌려야 예쁜지 구체적으로 알려드릴 수 있습니다! (예: "지팡이 휘두르기라면 0.3초에 팔을 -45도 뒤로 제치세요" 같은 식)

 

 

 

 

 

 

1. 블록벤치에서 내보낼 파 (3종 세트)

블록벤치 상단 메뉴 File -> Export를 눌러 다음 파일들을 저장하세요.

  1. 모델 파일: Export GeckoLib Model 클릭
    • 파일명: beegirl.geo.json (예시)
  2. 애니메이션 파일: Export GeckoLib Animations 클릭
    • 파일명: beegirl.animation.json
  3. 텍스처 파일: 왼쪽 하단 Textures 패널의 이미지 우클릭 -> Save As
    • 파일명: beegirl.png

2. 내 모드 프로젝트 폴더의 어디에 넣나요?

마인크래프트 자바 에디션 모드 구조는 폴더 경로가 매우 엄격합니다. (보통 src/main/resources/assets/모드ID/ 아래에 넣습니다.)

  • 모델: .../assets/모드ID/geo/beegirl.geo.json
  • 애니메이션: .../assets/모드ID/animations/beegirl.animation.json
  • 텍스처: .../assets/모드ID/textures/entity/beegirl.png

주의: 폴더가 없다면 직접 마우스 우클릭으로 새 폴더를 만드셔야 합니다 (geo, animations 등).


3. ".java 파일이 없는데 몹이 어떻게 소환되나요?"

이게 가장 헷갈리시는 부분일 텐데, 자바 코드는 질문자님이 직접 짜거나 MCreator를 통해 만들어야 합니다. 블록벤치는 '그림'만 그려줄 뿐 '영혼(코드)'은 만들어주지 않거든요.

GeckoLib을 쓸 때 자바 코드는 보통 3개가 필요합니다:

  1. 엔티티 클래스 (BeeGirlEntity.java):
    • "이 몹은 체력이 20이고, 플레이어를 공격한다" 같은 AI를 적습니다.
    • 여기서 "공격할 때 attack 애니메이션을 틀어라!"라고 명령을 내립니다.
  2. 모델 클래스 (BeeGirlModel.java):
    • 자바에게 "가서 beegirl.geo.json이랑 beegirl.animation.json 파일을 읽어와!"라고 알려주는 연결 다리입니다.
  3. 렌더러 클래스 (BeeGirlRenderer.java):
    • "이 몹을 화면에 그릴 때 방금 만든 모델 클래스를 사용해라"라고 설정합니다.

 

 

 

 

 

이미지를 보니 프로젝트 형식이 GeckoLib으로 설정되어 있지 않아서 메뉴가 안 나오는 것입니다! (지금 메뉴 상단에 'Export Bedrock Geometry'가 떠 있는 걸 보니 베드락 형식이거나 일반 모델 형식으로 되어 있는 것 같네요.)

당황하지 마시고 아래 순서대로 딱 **'전환'**만 해주면 메뉴가 생깁니다.


1단계: 프로젝트 형식 변환하기 (가장 중요)

  1. 상단 메뉴에서 File -> Convert Project를 클릭하세요.
  2. 여러 가지 목록 중에서 **[GeckoLib Animated Model]**을 선택합니다.
  3. Confirm(확인) 버튼을 누르세요.

2단계: 다시 Export 메뉴 확인하기

자, 이제 다시 File -> Export를 눌러보세요. 아까와는 다르게 아래와 같은 메뉴들이 생겼을 겁니다!

  • Export GeckoLib Model (이걸로 .geo.json 저장)
  • Export GeckoLib Animations (이걸로 .animation.json 저장)

💡 왜 안 보였던 건가요?

다른 사람이 만든 모델을 가져오면 블록벤치가 "이게 무슨 형식이지?" 하고 헷갈려 할 때가 있습니다. 그래서 **"이건 자바 에디션 게코립용이야!"**라고 확실히 도장을 찍어주는 과정(Convert)이 필요한 거예요.


3단계: 이제 내보내기(Export) 하세요

변환을 마쳤다면 이제 다음 파일들을 저장해서 본인의 모드 폴더로 옮기시면 됩니다.

  1. 모델: Export GeckoLib Model -> beegirl.geo.json
  2. 애니메이션: Export GeckoLib Animations -> beegirl.animation.json
  3. 텍스처: 왼쪽 하단 Textures 패널의 bee.png 우클릭 -> Save As

잠깐! 혹시 직접 코딩을 하고 계신가요, 아니면 MCreator 같은 툴을 쓰고 계신가요?
.java 파일이 없어서 걱정하셨는데, MCreator를 쓰신다면 방금 내보낸 파일들을 넣기만 하면 자바 코드를 알아서 만들어줍니다!

(직접 코딩 중이시라면 제가 게코립용 자바 코드 예시를 짜드릴 수 있으니 말씀해 주세요.)

 

 

 

 

 

 

 

 

ModelBeegirl.animation.json

ModelBeegirl.geo.json

ModelBeegirl.png

 

 

 

 

software 심볼을 해결할 수 없다는 에러는 프로젝트의 설정 파일(build.gradle)에 GeckoLib 라이브러리가 등록되지 않았기 때문입니다.

컴퓨터에 비유하자면, 코드는 작성했지만 그 코드를 실행하기 위한 '프로그램(라이브러리)'이 설치되지 않은 상태입니다. 아래 순서대로 build.gradle 파일을 수정하면 해결됩니다.


1단계: build.gradle 파일 열기

프로젝트 폴더 맨 상위 폴더(src 폴더와 같은 위치)에 있는 build.gradle 파일을 더블 클릭해서 여세요.

2단계: 리포지토리(Repositories) 추가

라이브러리를 어디서 다운로드할지 알려줘야 합니다. repositories 섹션을 찾아 아래 내용을 추가하세요.

    repositories {
    maven { url 'https://dl.cloudsmith.io/public/geckolib3/geckolib/maven/' }
    // 다른 리포지토리들이 이미 있을 수 있습니다. 그 아래에 추가하세요.
}
  

3단계: 의존성(Dependencies) 추가

이제 실제로 GeckoLib 1.18.2 버전을 설치하라고 명령을 내려야 합니다. dependencies 섹션을 찾아 아래 줄을 추가하세요.

    dependencies {
    // 1.18.2용 GeckoLib Forge 버전입니다.
    implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.59')
    
    // 만약 기존에 minecraft 'net.minecraftforge:forge:...' 이런 줄이 있다면 그 아래에 두시면 됩니다.
}
  

4단계: Gradle 새로고침 (매우 중요!)

설정을 바꿨으니 적용을 해야 합니다.

  1. IntelliJ 사용자: 오른쪽 상단에 작게 뜨는 **코끼리 모양 아이콘(Load Gradle Changes)**을 누르거나, 오른쪽 사이드바의 Gradle 탭을 열고 새로고침(새로고침 화살표 모양) 버튼을 누르세요.
  2. Eclipse 사용자: 프로젝트 우클릭 -> Gradle -> Refresh Gradle Project를 누르세요.

 

 

 

쉼표(,)는 전혀 필요 없습니다.

그루비(Groovy) 기반의 build.gradle 파일에서는 줄바꿈이 항목을 구분해주기 때문에 쉼표를 쓰지 않는 것이 규칙입니다.

 

 

 

 

 

두 클래스의 차이점은 마인크래프트라는 게임 시스템 내에서 **'등록하는 대상'**이 아예 다르다는 점에 있습니다.

쉽게 비유하자면, 하나는 **'생명체(몸)'**를 만드는 설계도이고, 다른 하나는 그 생명체를 꺼낼 수 있는 **'도구(리모컨)'**를 만드는 설계도입니다.


1. BeeGirlEntityTypeInit (생명체 그 자체)

  • 등록 대상: EntityType (엔티티 타입)
  • 역할: 마인크래프트 월드 안에 실제로 돌아다니는 **'살아있는 존재'**를 등록합니다.
  • 주요 정보:
    • 이 몹은 BeeGirlEntity.java라는 인공지능(AI) 코드를 사용한다.
    • 이 몹의 크기(히트박스)는 가로 0.6, 세로 1.8이다.
    • 이 몹은 몬스터(MONSTER) 카테고리에 속한다.
  • 게임에서의 모습: 길 가다가 마주치는 진짜 꿀벌 소녀 몹 그 자체입니다.

2. BeeGirlItemInit (인벤토리에 들어가는 아이템)

  • 등록 대상: Item (아이템)
  • 역할: 플레이어의 인벤토리 창에 생기는 아이템을 등록합니다.
  • 주요 정보:
    • 이 아이템의 이름은 bee_girl_spawn_egg이다.
    • 이 아이템을 땅에 우클릭하면 위에서 만든 BEE_GIRL 엔티티가 소환된다.
    • 이 아이템은 기타(MISC) 탭에 들어간다.
  • 게임에서의 모습: 상자나 인벤토리에 들어있는 알(Spawn Egg) 모양 아이템입니다.

 

 

  • MODID: 작성하신 클래스 최상단에 public static final String MODID = "mymod";라고 되어 있으므로, 제가 드린 코드의 MyMod.MODID를 그대로 쓰시면 됩니다. (모두 소문자 mymod여야 합니다.)
  • 대소문자: 자바 코드는 대소문자를 엄격하게 구분합니다. 특히 패키지 경로(BeeGirl)와 변수 이름(ENTITIES, ITEMS)을 제가 드린 것과 똑같이 맞추셔야 에러가 나지 않습니다.

 

 

[[dependencies.mymod]]
modId="geckolib3"
mandatory=true
versionRange="[3.0.59,)"
ordering="NONE"
side="BOTH"

 

mymod.tml이엇나

아무튼

 

 

 

 

 

Java의 제네릭(Generic) 타입 추론 과정에서 발생하는 문제입니다. Forge의 registerEntityRenderer 메서드는 두 개의 인자(엔티티 타입, 렌더러 팩토리) 사이의 타입 T가 서로 일치해야 하는데, 람다식이나 복잡한 상속 구조에서 컴파일러가 이를 정확히 연결하지 못할 때 발생합니다.

 

 

import를 못해오는 문제 

 

 

코드 절대 안 날아가 .

왜 안전한지 정확히 설명해줄게 .

1 . 지우는 것들의 정체 .
우리가 지우는 건 .

.gradle
build
out

이 세 개야 .

이건 전부 .
Gradle 이 자동으로 다시 만드는 캐시 / 빌드 결과물이야 .
네가 작성한 코드랑은 완전히 분리돼 있어 .

 

 

 

 

👉 Gradle 캐시 꼬임 / 프로젝트 재임포트 안 됨 .

아래 순서대로 해 .
중간에 하나라도 빼먹으면 계속 빨간 줄 남아 .

① IntelliJ 완전히 종료 .

② 프로젝트 폴더에서 이것들 삭제 .

.gradle
build
out   (있으면)
 

③ 다시 IntelliJ 실행 → Open Project 로 build . gradle 선택 .

④ 오른쪽 Gradle 창에서 .

Reload All Gradle Projects
 

끝날 때까지 절대 건드리지 말기 .

⑤ 그래도 안 되면 마지막 수단 .

 
File → Invalidate Caches / Restart → Invalidate and Restart