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

[마인크래프트 모드 개발 일지] 개발 환경 설정하기_모든 삽질의 진짜 범인을 찾아서

kimchangmin02 2025. 6. 23. 22:44

작년, 코드 한 줄 못 써보고 무너졌던 '개발 환경 설정'의 벽.

올해 다시 도전하며 그 벽을 넘겠다 다짐했음.

 

하지만 나의 재도전은 거대한 삽질의 서막에 불과했음을 깨닫기까지는 그리 오랜 시간이 걸리지 않았음.

이 글은 내가 범인으로 지목했던 수많은 용의자(자바 버전, Gradle, 클라우드 폴더)들을 거쳐,

마침내 모든 문제의 근원이자 진짜 범인을 찾아내는 과정을 담은 한 편의 추리극임.

 

-----------------------------------------------------------------------------------------------------------------------------------------------

 

마크 모드를 만들기 위해서

그냥 무작정, 구글창에 마크 모드 만들기를 검색해서 나온 가장 최근 글을 참고해서

개발환경설정을 했음

 

문제는 그 최신글이라는게..2016년글임

 

 

---------------------------------------------------------------------------------------------------------------------------------------------------

용의선상 #1: 자바(JDK)와 환경 변수

첫 번째 용의자는 단연 자바였음. 내 컴퓨터엔 여러 버전의 JDK가 뒤섞여 있었고, 터미널은 JAVA_HOME 경로가 잘못되었다는 에러를 쉴 새 없이 뿜어냈음. 나는 이것이 범인이라 확신했음.

모든 JDK 버전을 깨끗하게 삭제하고, 현재 Forge와 가장 호환되는 JDK 17 버전으로 통일했음. JAVA_HOME 환경 변수까지 직접 설정하며 경로에 특수문자가 없는지 꼼꼼히 확인했음.

상황은 조금 나아졌지만, 빌드는 여전히 실패했음. 자바는 공범일 뿐, 주범은 아니었음.

용의선상 #2: 클라우드 폴더(OneDrive)의 함정

두 번째로 의심한 것은 내가 편의를 위해 사용하던 OneDrive였음. 프로젝트 폴더를 클라우드와 동기화되는 경로에 둔 것이 문제라는 조언을 들었음. 실시간 동기화 과정에서 발생하는 파일 잠금 현상이 빌드 스크립트와 충돌한다는 논리적인 설명에, 이번에야말로 범인을 잡았다고 생각했음.

프로젝트 폴더를 C:\ 드라이브 직속의 깨끗한 경로로 옮기고, 이전의 실패 기록을 모두 지우기 위해 .idea 폴더와 build 폴더(캐시)를 삭제한 뒤 프로젝트를 처음부터 다시 로드했음.

빌드 속도는 빨라졌고 자잘한 오류도 줄었음. 하지만 결정적인 문제, 코드에 그어지는 빨간 줄은 사라지지 않았음. OneDrive는 확실히 문제를 일으켰지만, 이 사건의 진범은 아니었음.

진짜 범인: 존재하지 않는 '유령'을 찾고 있었다

모든 환경 설정을 마쳤다고 믿었을 때, 나는 마침내 사건의 현장, 즉 코드와 마주했음. 그리고 그곳에서 진짜 범인의 결정적인 단서를 발견했음.

import net.minecraft.world.entity.InteractionHand;

IntelliJ는 이 InteractionHand 클래스를 찾을 수 없다며 빨간 줄을 그어댔음. 나는 최후의 수단으로 IntelliJ 캐시를 초기화하고, 프로젝트를 수십 번 다시 로드했음. 하지만 유령처럼 빨간 줄은 사라지지 않았음.

그때 문득, 가장 기본적인 질문이 머리를 스쳤음.

"혹시... 이 클래스가 그냥 없는 거 아닐까?"

내 직감은 맞았음.

내가 참고한 예제 코드는 마인크래프트 최신 버전(1.16+) 기준이었음. 하지만 내가 build.gradle 파일에 설정한 프로젝트 버전은 1.12.2였음.

  • 최신 버전(1.16+)에서는: net.minecraft.world.entity.InteractionHand 클래스를 사용함.
  • 구버전(1.12.2)에서는: net.minecraft.util.EnumHand 라는 이름과 경로가 전혀 다른 클래스를 사용함.

나는 1.12.2 버전의 세계에서, 그곳에는 존재하지도 않는 **1.16+ 버전의 '유령 클래스'**를 필사적으로 import 하려고 했던 것임. IntelliJ가 클래스를 못 찾는 게 아니라, 정말로 없는 것이었음.

결론: 모든 길은 '버전'으로 통했다

JAVA_HOME 오류도, 불안정한 빌드도, 결국엔 내가 설정한 1.12.2라는 버전과 맞지 않는 환경과 코드에서 비롯된 '증상'에 불과했음. 진짜 병의 원인은 **'버전 불일치'**였음.

해결은 허무할 정도로 간단했음. InteractionHand를 버전에 맞는 EnumHand로 바꾸자, 지긋지긋했던 모든 빨간 줄이 거짓말처럼 사라졌음.

이번 경험을 통해 깨달았음. 개발에서 에러 메시지는 종종 진짜 범인이 아닌, 범인이 남긴 흔적을 가리킬 뿐이라는 것을. 그리고 그 흔적들을 따라가다 보면, 모든 길은 결국 가장 기본인   '버전 호환성'  이라는 하나의 진실로 통한다는 것을.

드디어, 진짜 범인을 잡았고 비로소 개발을 시작할 수 있게 되었음.