JDK 25와 IntelliJ IDEA를 설치했다면 이제 실제 모드 프로젝트를 마련할 차례입니다. NeoForge는 빈 프로젝트를 손으로 구성하게 하지 않고, 공식 Mod Generator(모드 제너레이터)로 빌드 스크립트·런 설정·예제 코드가 모두 갖춰진 스타터 템플릿을 만들어 내려받게 합니다. 이 챕터에서는 공식 사이트에서 examplemod 템플릿을 생성·다운로드해 압축을 풀고, IntelliJ에서 연 뒤 JDK 25를 Project SDK·Gradle JVM에 연결하고 Gradle Sync까지 완료하는 전 과정을 다룹니다.
JDK 연결 설정(Project SDK·Gradle JVM)을 이 챕터에서 다루는 이유가 있습니다. IntelliJ의 Gradle 설정은 프로젝트별 설정이라, 프로젝트가 열려 있지 않으면 설정 패널이 비어 있어 손댈 수 없습니다. 그래서 템플릿을 연 직후인 지금이 JDK를 연결할 정확한 시점입니다.
Mod ID 규칙: 비워 두면 모드 이름에서 자동 생성됩니다. 직접 적을 때는 소문자·숫자·언더스코어(_)만 사용할 수 있습니다. 이 코스의 모든 예제 코드가 examplemod를 모드 ID로 가정하므로 반드시 examplemod로 지정하세요.
값을 모두 채웠으면 Download Mod Project 버튼을 클릭합니다. 잠시 후 .zip 파일이 내려받아집니다.
버전 목록에 26.1.2가 없다면 Mod Generator의 Minecraft 버전 드롭다운은 그 시점에 NeoForge가 정식 지원하는 버전만 보여 줍니다. 이 코스가 기준으로 삼는 26.1.2가 보이지 않으면 가장 가까운 26.1.x 버전을 선택해도 됩니다. (gradle.properties의 neo_version은 이후 챕터에서 직접 확인합니다.)
이 구조가 앞으로 phase-0부터 phase-5까지 모든 실습의 기반이 됩니다. 파일을 직접 수정하거나 새 파일을 추가하는 것은 각 챕터의 실습 단계에서 진행합니다.
⚠️
ZIP 안에 폴더가 한 겹 더 들어 있을 수 있습니다. 압축 관리자에 따라 examplemod-template-26.1.2/examplemod/...처럼 한 단계 중첩될 수 있습니다. build.gradle이 바로 보이는 폴더가 진짜 프로젝트 루트이며, IntelliJ로 열어야 하는 폴더도 이쪽입니다. 한 겹 더 중첩돼 있다면, build.gradle이 직접 들어 있는 그 안쪽 폴더가 examplemod-template-26.1.2 작업 폴더가 되도록 정리하세요(불필요한 바깥 폴더는 제거).
Project SDK를 지정했어도 Gradle이 사용하는 JVM은 별도 설정입니다. 프로젝트가 열려 있는 지금은 설정 패널이 정상적으로 채워집니다.
Settings (Ctrl+Alt+S) 열기
Build, Execution, Deployment > Build Tools > Gradle 이동
Gradle JVM 드롭다운에서 Project SDK (JDK 25) 또는 방금 등록한 JDK 25 선택
Apply > OK 클릭
⚠️
설정 패널이 비어 있고 "Select configuration element in the tree to edit its settings"만 보인다면 두 경우를 구분하세요.
프로젝트가 열리지 않은 상태에서 Settings를 연 경우 — Gradle 설정은 프로젝트별 설정이라, 반드시 3단계에서 연 템플릿 프로젝트 창에서 Settings를 열어야 Gradle JVM 드롭다운이 나타납니다. (화면 하단에 "Project-level settings will be applied to new projects"가 보이면 프로젝트가 열리지 않은 상태라는 신호입니다.)
프로젝트도 열려 있고 Gradle 툴 윈도(코끼리 아이콘)에 Tasks·Dependencies까지 보이는데도 비어 있는 경우 — IntelliJ 2025.1 이상의 알려진 UI 버그(JetBrains 이슈 IDEA-381808)입니다. 사용자 설정 문제가 아니므로, 아래 트러블슈팅의 "Gradle JVM 설정 화면이 비어 있음" 항목에 정리한 우회책을 따르세요.
이 설정이 빠지면 Gradle이 시스템 기본 JVM을 사용해 버전 불일치 문제가 생길 수 있습니다.
JDK 연결이 끝나면 Gradle Sync를 실행합니다. Trust Project 직후 이미 자동으로 시작됐다면, Gradle 패널에서 🔄 Reload All Gradle Projects를 눌러 새 JDK 설정으로 다시 동기화합니다. 화면 우하단에 진행 표시줄이 나타납니다.
첫 실행 시 보통 5~15분이 소요됩니다. Gradle이 다음 항목들을 다운로드·디컴파일하기 때문입니다.
NeoForge 26.1.2.64-beta 라이브러리
Minecraft 26.1.2 에셋 및 소스
빌드 도구 의존성 (ModDevGradle, Mixin 등)
인터넷 속도와 하드웨어 성능에 따라 더 걸릴 수 있으며, 처음 한 번은 최대 1시간까지 걸리기도 합니다. 진행 표시줄이 사라질 때까지 기다립니다.
⚠️ No matching toolchain found: {languageVersion=25} 오류
JDK 25를 시스템에 설치했더라도 IntelliJ의 Project SDK·Gradle JVM이 JDK 25로 연결되지 않으면 이 오류로 Sync가 실패합니다. 이 템플릿의 build.gradle이 java.toolchain.languageVersion = JavaLanguageVersion.of(25)로 Java 25 툴체인을 요구하기 때문입니다.
해결: 위 5단계(Project SDK)·**6단계(Gradle JVM)**가 모두 JDK 25를 가리키는지 다시 확인하세요.
🐞 Gradle JVM 설정 화면이 비어 있음 (IntelliJ 2025.1+ 표시 버그)
프로젝트가 열려 있고 Gradle 툴 윈도(코끼리 아이콘)에 Tasks·Dependencies까지 보이는데도 Settings > Build, Execution, Deployment > Build Tools > Gradle 페이지가 Select configuration element in the tree to edit its settings만 표시한다면, IntelliJ 2025.1 이상의 알려진 UI 버그(JetBrains 이슈 IDEA-381808)입니다. Gradle 자체는 정상 동작하며 설정 화면만 렌더되지 않는 표시 문제이므로 대개 그대로 진행해도 됩니다.
이 템플릿은 settings.gradle의 foojay-resolver-convention 덕분에 Gradle을 띄우는 JVM과 무관하게 컴파일용 Java 25 toolchain을 자동 확보합니다. Gradle 툴 윈도에 태스크가 보이면 이미 Sync가 끝난 것이며, 다음으로 실제 JVM 버전을 확인할 수 있습니다.
.\gradlew.bat --version
출력의 JVM: 줄이 25.x이면 그대로 다음 챕터의 runClient로 진행해도 됩니다. Gradle JVM을 굳이 JDK 25로 고정하려면 아래 우회책을 씁니다.
코끼리(Gradle) 툴 윈도 상단 툴바의 ⚙ (Gradle Settings) 아이콘으로 같은 페이지를 다시 열어 봅니다. 가끔 정상 렌더됩니다.
그래도 비어 있으면 .idea/gradle.xml 직접 편집: IntelliJ 프로젝트 창을 먼저 닫고(열린 채 편집하면 IDE가 덮어씀), 프로젝트 루트의 .idea/gradle.xml에서 <GradleProjectSettings> 안에 <option name="gradleJvm" value="#JAVA_HOME" />를 추가하거나 값을 바꾼 뒤, 프로젝트를 다시 열고 🔄 Reload All Gradle Projects를 누릅니다. #JAVA_HOME은 01장에서 JDK 25로 지정한 환경변수를 그대로 씁니다. (특정 SDK 이름을 쓰려면 Project Structure > SDKs에 등록된 이름, 예: temurin-25를 넣습니다.)
근본 해결은 Help > Check for Updates로 패치를 적용하거나, 한 단계 낮은 IntelliJ 버전(예: 2024.3)으로 내리는 것입니다.
💡 Gradle Sync 실패 시 (일반)
File > Invalidate Caches... 클릭
Invalidate and Restart 선택
IntelliJ 재시작 후 Gradle 패널에서 🔄 Refresh 클릭
이 방법으로도 해결되지 않으면 터미널에서 직접 실행해 오류 메시지를 확인합니다.
cd examplemod-template-26.1.2./gradlew --refresh-dependencies