MC Toolkit

คู่มือ / การแก้ไขปัญหา

การแปลง .mrpack เป็นไฟล์ zip มอดแพ็กปกติ — และทำไมโปรแกรมแตกไฟล์ถึงล้มเหลว

.mrpack คือไฟล์ manifest ไม่ใช่ไฟล์เก็บมอด การแตกไฟล์ zip จะได้แค่ไฟล์ 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

แต่ละรายการใน manifest จะมีหน้าตาแบบนี้:

{
  "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. ดึงทุกรายการจาก URL ของ CDN
  3. ตรวจสอบแต่ละไฟล์เทียบกับ sha512 ใน manifest การข้ามขั้นตอนนี้คือหนทางที่ทำให้ ไฟล์ jar ที่เสียหายหรือถูกสับเปลี่ยนหลุดเข้าไปในแพ็ก
  4. วางแต่ละไฟล์ไว้ที่ path ของมัน
  5. คัดลอก overrides/ แล้วตามด้วย client-overrides/ หรือ server-overrides/ ทับลงไป — ไฟล์ override ชนะ นั่นคือจุดประสงค์ของมัน
  6. บีบอัดผลลัพธ์เป็น zip

ขั้นตอนที่ 3 คือขั้นที่ตัวแปลงมักเงียบ ๆ ข้ามไป แฮชที่ไม่ตรงกันหมายความว่าการดาวน์โหลด ถูกตัดขาดหรือไฟล์เปลี่ยนไป การติดตั้งต่อไปทั้งอย่างนั้นจะได้แพ็กที่แครชตอนโหลด พร้อมข้อผิดพลาดที่ชี้ไปผิดมอด

แล้วทำไปทำไม

  • ตัวเรียกเกมที่ไม่รู้จัก mrpack ATLauncher, MultiMC และการติดตั้งด้วยมือต้องการ โฟลเดอร์ที่เต็มไปด้วยไฟล์ jar
  • ฝั่งเซิร์ฟเวอร์ โฮสต์เซิร์ฟเวอร์แทบไม่เคยรับ .mrpack พวกเขาต้องการ โฟลเดอร์ mods
  • ติดตั้งแบบออฟไลน์ เมื่อแปลงแล้ว แพ็กไม่ต้องใช้ CDN อีกต่อไป

ฟิลด์ env เป็นตัวตัดสินว่าฝั่งไคลเอนต์หรือเซิร์ฟเวอร์

แต่ละไฟล์มี:

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

แพ็กเซิร์ฟเวอร์ต้อง ข้าม ทุกอย่างที่ทำเครื่องหมาย unsupported ทางฝั่งเซิร์ฟเวอร์ — ส่วนใหญ่ คือเชดเดอร์ มินิแมป และมอด HUD การคัดลอกโฟลเดอร์มอดไคลเอนต์ทั้งหมดลงเซิร์ฟเวอร์ มักเป็นสาเหตุของการแครชตอนเริ่มระบบที่ระบุชื่อคลาสเกี่ยวกับการเรนเดอร์

ไปในทิศทางกลับกัน

การสร้าง .mrpack จากโฟลเดอร์คือการทำย้อนกลับ และมีกับดักอยู่อย่างหนึ่ง: มอดใดก็ตามที่ไม่ได้ โฮสต์บน Modrinth, GitHub หรือ GitLab ไม่สามารถเป็นรายการใน manifest ได้ — และ Modrinth เองก็ รับเฉพาะ CDN ของตัวเองสำหรับแพ็กที่เผยแพร่ มันจึงต้องไปอยู่ใน overrides/mods/ ซึ่งทำให้ แพ็กใหญ่ขึ้นแต่ยังใช้งานได้ การทิ้งมอดเหล่านั้นไปเงียบ ๆ จะได้แพ็กที่ ติดตั้งได้เรียบร้อยแต่ขาดเนื้อหา

แปลง .mrpack เป็น ZIP สำหรับไคลเอนต์หรือเซิร์ฟเวอร์ พร้อมการตรวจสอบแฮชและการแยก env ให้เรียบร้อย ได้ที่ MRPACK to ZIP Converter

เครื่องมือ zip รีซอร์สแพ็ก →

คู่มือเพิ่มเติม

ดูทั้งหมด →