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