Guides / Troubleshooting

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

ไฟล์ .mrpack เป็นเพียงรายการข้อมูล (manifest) ไม่ใช่ไฟล์เก็บถาวรของม็อด การแตกไฟล์ออกมาจะได้ไฟล์ 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/ ทับลงไป — ไฟล์ที่ทับจะชนะ นั่นคือวัตถุประสงค์ของมัน
  6. บีบอัดผลลัพธ์เป็นไฟล์ zip

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

ทำไมต้องทำแบบนี้เลย

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

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

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

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

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

การทำในทางกลับกัน

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

แปลงได้ทั้งสองทิศทาง พร้อมการตรวจสอบแฮชและการจัดการการแยก env ได้ที่ Resource Pack Zip Tools

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

More guides

Browse all →

กำลังหาเครื่องมือ Minecraft อื่นอยู่ไหม

ชุดเครื่องมือสร้าง ดู และแปลงไฟล์ที่ทำงานในเบราว์เซอร์ ฟรีทั้งหมด