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

마크) 1.18.2 게코립 설정 시 1.18.2가 아닌 1.18을 써야 하는 이유

kimchangmin02 2025. 12. 28. 08:30

 

걍 웹서버에 1.18.2가 없어서가 문제엿음

1.18로 build.gradle작성해야함

 

 

 

build.gradle 파일의 dependencies 부분을 다음과 같이 수정하세요. .2를 빼는 것이 핵심입니다.

수정 전

implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.59')

 

수정 후 

// 1.18.2용이지만 이름은 1.18로 적어야 서버에서 파일을 찾을 수 있습니다.
// 가장 안정적인 최신 버전인 3.0.106을 권장합니다.
implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18:3.0.106')

수정 후 조치 사항:

  1. 위 코드로 수정하고 저장합니다.
  2. 오른쪽 상단 **코끼리 아이콘(Load Gradle Changes)**을 누릅니다.

 

 

 

 

 

 

 

(혹시 build.gradle에서 가져올때, 문제가 생긴다면, 실제로 웹사이트에 있는 자료인지 url로 들어가서 확인해보는것도 )

 

추가)

 

 

Caused by: org.gradle.internal.resolve.ModuleVersionNotFoundException: Could not find software.bernie.geckolib:geckolib-forge-1.18:3.0.106.

1.18만 햇다고 되는게 아니라,, 

뒤의 버전 정보도, 실제로 잇는 버전을 가져와야함

 

 

3.0.106버전은 1.18에 없음

없는걸 가져오려고 하니깐 오류가 나지 

 

 

 

 

 


 

 

 

 

 

 

 

제네틱 관련 문제및

import안되는 문제

(어제 word, 원드라이브 삭제 문제도 해결햇으니, 

 


 

 

 

 

1. Gradle 새로고침 및 캐시 초기화 (가장 권장)

단순히 Gradle Refresh 버튼을 누르는 것으로 해결되지 않을 때가 많습니다.

  • IntelliJ 사용자:
    1. 상단 메뉴에서 File -> Invalidate Caches... 클릭
    2. 모든 항목 체크 후 Invalidate and Restart 버튼 클릭
    3. 재부팅 후 오른쪽 Gradle 탭에서 새로고침(순환 화살표 아이콘) 클릭
  • 터미널 이용: 프로젝트 폴더 내 터미널에서 다음 명령어를 입력하여 강제로 의존성을 다시 받으세요.
        gradlew --refresh-dependencies
      

2. Forge 전용 IDE 설정 작업 수행

Forge 프로젝트는 단순히 라이브러리를 받는 것 외에, IDE가 이를 인식하도록 매핑(Mapping)을 맞추는 과정이 필요합니다.

  • IntelliJ: 터미널에 ./gradlew genIntellijRuns 입력 후 완료되면 다시 Gradle 새로고침
  • Eclipse: 터미널에 ./gradlew genEclipseRuns 입력

3. 라이브러리 버전 확인 및 변경

현재 3.0.59 버전을 사용 중이신데, 1.18.2 버전에서 가장 안정적인 최신 버전으로 교체해 보는 것도 방법입니다. (버전만 살짝 바꿔도 Gradle이 다시 다운로드하면서 인식되는 경우가 있습니다.)

build.gradle의 해당 부분을 아래와 같이 수정해 보세요.

    dependencies {
    minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
    
    // 3.0.59 대신 3.0.106 또는 최신 버전 사용 시도
    implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.106')
}
  

4. External Libraries 확인

라이브러리가 정상적으로 들어왔는지 눈으로 확인해야 합니다.

  1. IDE 왼쪽 프로젝트 구조 창에서 최하단의 External Libraries 항목을 펼칩니다.
  2. 목록 중에 geckolib-forge-1.18.2-3.0.xx 가 있는지 확인합니다.
  3. 만약 여기에 없다면: repositories 설정에서 GeckoLib Maven 주소를 읽어오지 못한 것입니다. 네트워크 문제나 프록시 설정을 확인해야 합니다.

5. 패키지 이름 재확인 (중요)

GeckoLib 3 버전(1.18.2용)은 패키지 명에 geckolib3가 들어가는 것이 맞습니다. 하지만 간혹 버전업 과정에서 패키지 구조가 바뀌는 경우가 있습니다.

빨간 줄이 뜨는 위치에서 software.bernie. 까지만 치고 IDE의 자동 완성(Ctrl + Space)이 무엇을 추천하는지 확인해 보세요.

  • 만약 software.bernie.geckolib. (숫자 3 없음)으로 뜬다면 해당 버전은 4.0 방식의 패키지를 사용하는 것입니다. (하지만 1.18.2용 3.0.x 버전은 geckolib3가 맞습니다.)

6. mods.toml 확인 (실행 시 문제 방지)

지금 당장 IDE의 빨간 줄과는 상관없지만, 나중에 게임 실행 시 에러가 나지 않으려면 src/main/resources/META-INF/mods.toml 파일 하단에 의존성 설정을 추가해줘야 합니다.

    [[dependencies.mod_id]] # mod_id는 본인의 모드 ID로 변경
    modId="geckolib"
    mandatory=true
    versionRange="[3.0.0,)"
    ordering="AFTER"
    side="BOTH"
  

요약하자면:
대부분의 경우 File -> Invalidate Caches 후 **./gradlew genIntellijRuns**를 실행하면 해결됩니다. 만약 그래도 안 된다면 External Libraries 목록에 라이브러리 파일 자체가 있는지 먼저 확인해 보세요!

 

 

 

 

 

 

 

 

 

 

 

1. 일반적인 문제 해결 (가장 추천)

단순히 IDE가 꼬여서 재시작하고 싶다면, 아무 체크박스도 선택하지 말고 하단의 파란색 버튼인 **[무효화 및 다시 시작(R)]**을 누르세요.

  • 결과: 대부분의 인덱싱 오류나 일시적인 버그가 해결됩니다. 다시 켜질 때 프로젝트 파일을 새로 읽는(Indexing) 시간이 조금 걸릴 수 있습니다.

해결안됨

 

 

2. 조금 더 확실하게 초기화하고 싶을 때

만약 1번 방법으로 해결되지 않는다면 첫 번째 체크박스인 **[파일 시스템 캐시 및 로컬 기록 지우기]**를 체크하고 실행하세요.

  • 주의: '로컬 기록(Local History)'이 삭제되므로, Git 같은 버전 관리 도구에 커밋하지 않은 작업 내역 중 예전 버전으로 되돌리는 기능이 사라집니다.

 

 

 

 

 

제시해주신 build.gradle 설정과 상황을 보니, 설정 자체는 크게 틀린 게 없지만 IntelliJ가 라이브러리를 제대로 색인(Indexing)하지 못하고 있는 전형적인 상태입니다.

현재 띄워놓으신 [캐시 무효화] 창부터 해결하고, 그 다음 단계를 진행해 보세요.


1단계: 캐시 무효화 실행 (지금 떠 있는 창)

  1. 첫 번째 체크박스(파일 시스템 캐시 및 로컬 기록 지우기)를 체크하세요.
  2. 하단의 **[무효화 및 다시 시작(R)]**을 클릭합니다.
  3. IntelliJ가 완전히 꺼졌다가 다시 켜지면서 하단에 **"Indexing..."**이라는 로딩 바가 뜰 겁니다. 이게 다 끝날 때까지 기다리세요.

2단계: 터미널에서 '마법의 명령어' 입력 (가장 중요)

캐시 무효화 후에도 여전히 빨간 줄이 뜬다면, Forge 라이브러리와 외부 라이브러리(GeckoLib)를 IntelliJ용으로 완전히 매핑시켜줘야 합니다.

  1. IntelliJ 하단의 Terminal(터미널) 탭을 엽니다.
  2. 다음 명령어를 입력하고 Enter를 누르세요:(윈도우라면 gradlew genIntellijRuns 또는 .\gradlew genIntellijRuns)
        ./gradlew genIntellijRuns
      
  3. BUILD SUCCESSFUL이 뜰 때까지 기다립니다.
  4. 다 끝나면 오른쪽 상단에 있는 **Gradle 탭(코끼리 아이콘)**을 눌러서 **새로고침(순환 화살표)**을 한 번 더 눌러주세요.

3단계: build.gradle 미세 수정 (오타 및 버전 확인)

작성하신 코드 중에 minecraft 설정 부분에 오타가 있을 가능성이 보입니다. (텍스트 변환 과정의 오류일 수 있지만 확인해 보세요)

수정 전:

    minecraft "net.minecraftforge:forge:minecraftversion-{forge_version}"
  

수정 후 (이렇게 되어 있어야 합니다):

    minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"
  
  • $ { } 기호가 빠지면 변수를 인식하지 못해 라이브러리를 못 불러옵니다. gradle.properties 파일에 해당 버전들이 잘 적혀있는지도 확인하세요.

또한, GeckoLib 버전을 조금 더 최신으로 올려보시는 것을 추천합니다 (1.18.2 Forge용 최신 버전):

    implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.106')
  

4단계: 실제로 라이브러리가 들어왔는지 확인하는 법

위의 과정을 다 했는데도 software...에 빨간 줄이 뜨면, 진짜로 파일이 다운로드됐는지 확인해야 합니다.

  1. IntelliJ 왼쪽 프로젝트 탐색기 맨 아래에 External Libraries를 펼칩니다.
  2. 목록 중에 geckolib-forge-1.18.2-3.0.xx 가 있는지 찾습니다.
  3. 만약 목록에 없다면: build.gradlerepositoriesdependencies 설정이 실제 작동하지 않은 것입니다. (인터넷 연결 문제나 Gradle 설정 오류)
  4. 목록에 있는데 빨간 줄이 뜬다면: 1단계(캐시 무효화)를 다시 하거나, 위에서 말한 genIntellijRuns 명령어가 누락된 것입니다.

 

 

 

 

 

결론부터 말씀드리면, 현재 작성하신 코드(소스 파일)는 절대 삭제되지 않으니 안심하셔도 됩니다.

'로컬 기록(Local History)'이 무엇인지 정확히 알면 걱정을 덜 수 있습니다.

1. '로컬 기록(Local History)'이란?

  • 이것은 작성 중인 실제 파일이 아니라, IntelliJ가 자체적으로 저장해두는 **'임시 백업 기록'**입니다.
  • 예를 들어, 1시간 전에 썼던 코드를 지웠는데 Ctrl + Z로도 되돌릴 수 없을 때, 과거 상태로 되돌릴 수 있게 도와주는 일종의 '스냅샷' 로그입니다.

2. 이 옵션을 체크하면 생기는 일

  • 실제 코드 파일: 그대로 유지됩니다.
  • 삭제되는 것: "10분 전 상태", "1시간 전 상태"로 되돌릴 수 있는 과거 기록 로그만 삭제됩니다.

3. 언제 체크하면 좋나요?

  • 지금처럼 라이브러리 인식 문제나 빨간 줄이 해결되지 않을 때는, IntelliJ가 파일을 잘못 기억하고 있는 경우가 많습니다. 이때 이 옵션을 체크하면 잘못된 기억(캐시)을 완전히 지우고 파일을 처음부터 다시 읽어오기 때문에 문제 해결 확률이 훨씬 높아집니다.

4. 주의할 점 (딱 하나)

  • 만약 Git 같은 버전 관리 도구를 사용하지 않고 있으며, 방금 코드를 실수로 왕창 지웠는데 Ctrl + Z가 안 돼서 '로컬 기록' 기능을 통해 복구하려고 했던 상황이라면 체크하면 안 됩니다.
  • 하지만 평소처럼 코딩 중이고 단순히 에러를 잡으려는 상황이라면 체크하고 진행하시는 것이 문제 해결에 더 효과적입니다.

요약: 지금 작성된 코드가 날아가는 일은 없으니, 안심하고 **체크한 뒤 [무효화 및 다시 시작]**을 누르셔도 됩니다!

 

 

 

 

 

 

 

 

 

 

걍, 이 외부 라이브러리에 

geo가 없엇음

왜 다운이 안된거지 

 

 

 

 

1. gradle.properties 파일 확인

build.gradle 안의 ${minecraft_version}이나 ${forge_version} 같은 글자들은 gradle.properties라는 별도의 파일에 적힌 숫자를 가져오는 방식입니다.

프로젝트 왼쪽 폴더 목록에서 gradle.properties 파일을 열어 다음 내용이 잘 들어있는지 확인하세요:

  • minecraft_version=1.18.2
  • forge_version=40.2.0 (혹은 사용 중인 포지 버전 숫자)
  • 만약 이 파일에 숫자가 제대로 안 적혀 있으면 Gradle이 라이브러리를 아예 못 불러옵니다.

2. (테스트용) 버전 숫자 직접 적기

변수가 꼬인 것인지 확인하기 위해, dependencies 부분을 아래처럼 직접 숫자로 바꿔서 저장해 보세요:

    dependencies {
    // 변수 대신 숫자를 직접 입력 (테스트용)
    minecraft "net.minecraftforge:forge:1.18.2-40.2.0" 
    implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.59')
}
  

이렇게 바꾸고 나서 오른쪽 상단에 뜨는 **코끼리 아이콘(Gradle Sync)**을 다시 눌러보세요. 만약 이렇게 해서 라이브러리가 나타난다면 gradle.properties 파일 설정에 문제가 있었던 것입니다.

3. Gradle 새로고침 강제 실행 (터미널)

가끔 IntelliJ UI가 멈춰서 새로고침이 안 될 때가 있습니다. 이럴 땐 터미널에 직접 명령어를 쳐서 강제로 받아야 합니다.

  1. IntelliJ 하단 Terminal 클릭
  2. 아래 명령어 입력 후 엔터:(윈도우면 gradlew 앞에 ./ 대신 .\를 붙이거나 그냥 gradlew만 치세요)
        ./gradlew dependencies --refresh-dependencies
      

 

 

 

 

 

build.gradle gradle.properties가 모두 완벽한데도 라이브러리가 안 뜬다면, Gradle이 설정을 새로 읽어오는 과정에서 멈췄거나 오류가 난 상태입니다.

 

 

 

현재 gradle.properties 파일은 내용상 아무런 문제가 없습니다. 버전 설정(1.18.2, 40.3.0)도 아주 정확합니다.

다만, 한 가지 작은 불일치가 보이는데, 이건 라이브러리 인식과는 별개로 나중에 실행 에러를 일으킬 수 있으니 수정하는 것이 좋습니다.

1. mod_id 수정 (권장)

  • 아까 보여주신 mods.toml에서는 모드 ID를 **mymod**로 설정하셨는데, 현재 gradle.properties에는 **mod_id=examplemod**라고 되어 있습니다.
  • 수정: mod_id=examplemod를 **mod_id=mymod**로 바꿔주세요. (그래야 나중에 파일들이 꼬이지 않습니다.)

2. 왜 여전히 빨간 줄이 뜰까요? (진단 및 해결)

build.gradlegradle.properties가 모두 완벽한데도 라이브러리가 안 뜬다면, Gradle이 설정을 새로 읽어오는 과정에서 멈췄거나 오류가 난 상태입니다.

아래 단계들을 순서대로 꼭 확인해 보세요.

① Gradle 동기화 에러 확인 (가장 중요)

IntelliJ 하단에 [Build] 탭을 클릭해 보세요.

  • 거기에 빨간색 느낌표나 X와 함께 영어 에러 메시지가 떠 있나요?
  • 만약 "Could not resolve..." 혹은 "Network connection refused" 같은 말이 있다면, 인터넷 문제거나 저장소 주소를 일시적으로 못 읽는 것입니다.
  • 에러 메시지가 있다면 그 내용을 저에게 알려주세요.

② Gradle 수동 새로고침 클릭

오른쪽 맨 끝에 있는 [Gradle] 탭을 누르고, 왼쪽 상단에 있는 **순환 화살표(새로고침 아이콘)**를 누르세요.

  • 이걸 눌렀을 때 하단에 Importing Gradle project...라는 진행바가 생기면서 끝까지 완료되는지 확인해야 합니다.

③ 진짜 최후의 수단: .gradle 폴더 삭제

설정이 꼬였을 때 가장 확실한 방법입니다.

  1. IntelliJ를 끕니다.
  2. 내 프로젝트 폴더(소스 코드가 있는 폴더)로 들어갑니다.
  3. 거기 있는 .gradle 이라는 숨겨진 폴더를 통째로 삭제하세요. (코드는 안전합니다. 이건 캐시 폴더입니다.)
  4. 다시 IntelliJ를 켜면 자동으로 라이브러리를 처음부터 다시 다운로드합니다.

 

gradle폴더삭제도 소용없엇잖아

 

 

 

 

로그에 나오는 복잡한 용어들 때문에 혼란스러우시죠? 하나씩 명쾌하게 설명해 드리고 해결책을 드릴게요.

1. 왜 자바인데 코틀린(Kotlin) 관련 오류가 뜨나요?

  • 답변: 본인의 코드가 자바여도 IntelliJ와 Gradle은 내부적으로 프로젝트를 분석할 때 코틀린 엔진을 일부 사용합니다.
  • 로그에 보이는 :prepareKotlinBuildScriptModel은 IntelliJ가 빌드 설정을 읽어오기 위해 실행하는 내부적인 준비 단계일 뿐입니다.
  • 즉, 코틀린 에러가 아니라, 자바 프로젝트를 분석하는 도구가 에러 때문에 멈춘 것입니다. 이건 무시하셔도 됩니다.

2. 'Root project' 관련 에러는 무엇인가요?

  • 답변: Gradle에서 'Root project'는 그냥 **본인의 모드 폴더(최상위 폴더)**를 말합니다.
  • "Root project에서 의존성을 찾을 수 없다"는 말은 **"이 모드 프로젝트에서 GeckoLib 파일을 가져오려고 시도했는데 실패했다"**는 뜻입니다.

3. 진짜 에러의 핵심 (여기를 고쳐야 합니다)

에러 로그의 가장 중요한 부분은 이겁니다:

Could not find software.bernie.geckolib:geckolib-forge-1.18.2:3.0.59

이유: GeckoLib 서버(Cloudsmith)에 확인해 본 결과, 1.18.2라는 이름의 파일은 존재하지 않습니다. GeckoLib 3버전은 마인크래프트 1.18.1과 1.18.2를 통합해서 **1.18**이라는 이름을 사용합니다.


4. 해결 방법 (이대로만 따라하세요)

build.gradle 파일의 dependencies 부분을 다음과 같이 수정하세요. .2를 빼는 것이 핵심입니다.

수정 전:

    implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18.2:3.0.59')
  

수정 후 (반드시 이 코드로 복사하세요):

    // 1.18.2용이지만 이름은 1.18로 적어야 서버에서 파일을 찾을 수 있습니다.
// 가장 안정적인 최신 버전인 3.0.106을 권장합니다.
implementation fg.deobf('software.bernie.geckolib:geckolib-forge-1.18:3.0.106')
  

왜 이렇게 해야 하나요?

GeckoLib 개발자가 파일을 올릴 때 이름을 geckolib-forge-1.18-3.0.106.jar 이런 식으로 올렸기 때문입니다. 우리가 1.18.2라고 적으면 Gradle은 "그런 이름의 파일은 인터넷 서버에 없는데?"라고 반응하며 에러를 뿜는 것입니다.

요약: 자바/코틀린/루트 문제는 신경 쓰지 마시고, 버전 이름에서 .2만 지우고 다시 빌드하시면 모든 빨간 줄이 해결될 것입니다!

 

 

 

 

 

 

미친, 진짜 1.18.2가 없잖아 씹

 

 

 

 

GeckoLib의 모든 버전 파일들을 직접 눈으로 확인하실 수 있는 주소는 다음과 같습니다.

1. 웹 브라우저로 편하게 보는 주소 (추천)

아래 주소로 들어가시면 GeckoLib 팀이 올린 모든 패키지 목록을 검색하고 버전을 확인하실 수 있습니다.


2. 실제 파일들이 들어있는 Maven 폴더 주소

build.gradle에 적어주는 Maven 경로를 통해 직접 파일 구조(Directory Listing)를 보고 싶다면 아래 주소로 들어가시면 됩니다. (폴더 형태로 되어 있습니다.)


들어가서 확인해 보시면 알 수 있는 사실:

위 2번 주소(폴더)에 들어가 보시면 목록에 3.0.106, 3.0.59 등 숫자들이 보이실 겁니다. 하지만 그 상위 폴더 이름 자체가 **geckolib-forge-1.18**로 되어 있습니다.

  • 우리가 build.gradle에 적는 형식은 그룹아이디:아티팩트아이디:버전 입니다.
  • 그룹아이디: software.bernie.geckolib
  • 아티팩트아이디: geckolib-forge-1.18 (여기에 .2가 없습니다!)
  • 버전: 3.0.59 또는 3.0.106

그래서 코드에서 geckolib-forge-1.18.2라고 적으면, 서버에서는 그런 이름의 폴더를 찾지 못해 아까와 같은 ModuleVersionNotFoundException 에러가 났던 것입니다.

이제 주소에서 직접 파일이 있는 것을 확인하셨으니, 안심하고 .2를 뺀 이름으로 수정해서 진행해 보세요!

 

 

 

 

 

 


근데 새로고침해도 계속 빨간줄인데

캐시비우기 해야하나

 

 

이 뒤의 버전정보도 중요한가 

 

 

 

 

 3.0.106이 없었을까요?

  • 버전 파편화: GeckoLib은 마인크래프트 버전마다 지원하는 빌드 번호가 다릅니다.
  • 1.18.2: 개발이 중단되기 전 마지막으로 배포된 버전이 3.0.59 근처입니다.
  • 1.19 이상: 그 이후에 나온 빌드들이 3.0.100대를 넘어가게 됩니다.

 

 

 

 

오류가 안나는 모습!!