MC Toolkit

가이드 / 문제 해결

.mrpack을 일반 모드팩 zip으로 변환하기 — 그리고 추출기가 실패하는 이유

.mrpack은 모드의 압축 파일이 아니라 매니페스트입니다. 압축을 풀면 JSON 파일 하나만 나오고 jar는 없습니다. 실제로 안에 무엇이 들어 있는지, 그리고 변환기가 해야 할 일을 정리합니다.

.mrpack의 이름을 .zip로 바꾸고 열어 보면 거의 아무것도 없습니다. modrinth.index.json 하나, 어쩌면 overrides/ 폴더 정도입니다. 모드들은 없습니다. 이것은 파일이 깨진 게 아니라, 이 형식이 원래 그렇게 설계된 것입니다.

안에 들어 있는 것

modrinth.index.json     the manifest: name, version, loader, and a list of downloads
overrides/              config files, resource packs, anything not on Modrinth

매니페스트의 각 항목은 이렇게 생겼습니다:

{
  "path": "mods/sodium.jar",
  "hashes": { "sha1": "…", "sha512": "…" },
  "downloads": ["https://cdn.modrinth.com/data/…/sodium.jar"],
  "fileSize": 812345
}

이 팩은 파일이 아니라 참조를 담아서 배포합니다. 그래서 모드 40개짜리 팩이 200 KB 다운로드에 불과하고, 모든 범용 추출기가 "실패"하는 것입니다 — 추출할 것이 없으니까요.

변환기가 해야 할 일

  1. modrinth.index.json을 읽습니다.
  2. 각 항목을 CDN URL에서 가져옵니다.
  3. 매니페스트의 sha512와 각 파일을 대조 검증합니다. 이걸 건너뛰면 손상되거나 바뀐 jar가 팩에 들어가게 됩니다.
  4. 각 파일을 해당 path 위치에 놓습니다.
  5. overrides/를 복사한 다음, client-overrides/ 또는 server-overrides/를 덮어씁니다 — 오버라이드가 우선하며, 그게 오버라이드의 목적입니다.
  6. 결과물을 압축합니다.

3번은 변환기들이 조용히 건너뛰는 단계입니다. 해시가 맞지 않는다는 것은 다운로드가 중간에 잘렸거나 파일이 변경되었다는 뜻입니다. 그대로 설치하면 로드할 때 엉뚱한 모드를 가리키는 오류와 함께 크래시하는 팩이 만들어집니다.

왜 굳이 변환할까

  • mrpack을 모르는 런처. ATLauncher, MultiMC, 수동 설치는 jar 폴더를 원합니다.
  • 서버 측. 서버 호스팅 업체는 .mrpack를 거의 받아 주지 않습니다. 모드 폴더를 원합니다.
  • 오프라인 설치. 한 번 변환하면 팩이 더 이상 CDN에 의존하지 않습니다.

env 필드가 클라이언트와 서버를 가릅니다

각 파일에는 이런 정보가 붙습니다:

"env": { "client": "required", "server": "unsupported" }

서버 팩은 서버 측에서 unsupported로 표시된 것을 모두 건너뛰어야 합니다 — 대부분 셰이더, 미니맵, HUD 모드입니다. 클라이언트 모드 폴더를 통째로 서버에 복사하는 것이, 시작할 때 렌더링 클래스를 지목하며 크래시하는 흔한 원인입니다.

반대 방향으로 갈 때

폴더에서 .mrpack를 만드는 것은 반대 과정이며 함정이 하나 있습니다. Modrinth, GitHub, GitLab에 호스팅되지 않은 모드는 매니페스트 항목이 될 수 없고, Modrinth 자체도 게시된 팩에는 자체 CDN만 허용합니다. 그런 모드는 overrides/mods/에 넣어야 하며, 팩은 커지지만 제대로 동작합니다. 이런 모드를 조용히 빼버리면 설치 자체는 깔끔하게 되지만 내용이 빠진 팩이 나옵니다.

해시 검증과 env 분기를 처리해 .mrpack을 클라이언트 또는 서버 ZIP으로 변환하려면 MRPACK to ZIP Converter를 이용하세요.

리소스 팩 zip 도구 →

더 많은 가이드

모두 보기 →