mrpack คือไฟล์ zip ที่โกหกว่าตัวเองเป็น zip
การเปลี่ยนชื่อไฟล์ .mrpack เป็น .zip จะได้ manifest กับโฟลเดอร์ overrides ไม่ใช่ตัวมอด — ไฟล์ jar อยู่บน CDN ของ Modrinth และถูกดึงมาด้วยแฮช
.mrpack เป็นไฟล์ ZIP ดังนั้นการเปลี่ยนชื่อเป็น .zip แล้วแตกไฟล์จึงทำได้ — แต่แทบไม่ได้อะไรที่มีประโยชน์เลย คุณจะได้ modrinth.index.json, โฟลเดอร์ overrides และไม่มีมอดเลยสักตัว ไฟล์ jar ไม่เคยอยู่ข้างในตั้งแต่แรก
ทำไมมอดถึงหายไป
แพ็กของ Modrinth เก็บ manifest ไม่ใช่ตัวไฟล์ แต่ละรายการใน modrinth.index.json จะระบุ URL ดาวน์โหลด พร้อมแฮช SHA-1 และ SHA-512 ของไฟล์ที่ URL นั้นควรจะคืนค่า ตัว launcher จะอ่าน manifest ดึงไฟล์แต่ละไฟล์ ตรวจสอบแฮช และค่อยวางลงในอินสแตนซ์
การออกแบบนี้ทำให้แพ็กมีขนาดเล็ก และอัปเดตแพ็กได้โดยไม่ต้องอัปโหลด jar ใหม่ทั้งหมด แต่ก็หมายความว่าแพ็กจะใช้งานออฟไลน์ไม่ได้จนกว่าจะมีคนแก้มันสักครั้ง
manifest มีอะไรอยู่ข้างในจริง ๆ
| ฟิลด์ | ความหมาย |
|---|---|
formatVersion | เวอร์ชันสคีมาของ manifest |
game | เวอร์ชัน Minecraft เป้าหมายและ loader |
files | อาร์เรย์ของ path, hashes, downloads, env |
dependencies | เวอร์ชัน loader และ Minecraft ที่ต้องติดตั้งก่อน |
ฟิลด์ env ในแต่ละไฟล์คือสิ่งที่คนมักมองข้าม มันระบุว่าไฟล์นั้นเป็น client, server หรือทั้งสองอย่าง มอดที่ทำเครื่องหมายว่า client-only ไม่ควรถูกคัดลอกลงโฟลเดอร์ mods ของเซิร์ฟเวอร์เลย — การทำเช่นนั้นเป็นสาเหตุ常見ที่ทำให้เซิร์ฟเวอร์ไม่ยอมบูต
การตรวจแฮชไม่ใช่ตัวเลือกเสริม
ถ้า SHA-1 ของไฟล์ที่ดาวน์โหลดมาไม่ตรงกับ manifest ไฟล์นั้นผิด: ดาวน์โหลดขาด, หน้า error ของ CDN ที่ถูกบันทึกเป็น jar หรือมิเรอร์ที่ถูกดัดแปลง ตัวแปลงที่ข้ามการตรวจสอบจะแพ็กอินสแตนซ์ที่พังได้อย่างสบายใจ การตรวจสอบคือเหตุผลทั้งหมดที่ควรทำแบบนี้ในเครื่องแทนที่จะเชื่อ repack สุ่ม ๆ
ผลลัพธ์ฝั่งไคลเอนต์กับเซิร์ฟเวอร์
manifest เดียวกันให้ไฟล์เก็บสองแบบที่ต่างกันตามเป้าหมาย:
- แพ็กไคลเอนต์ — ทุกอย่าง บวก
overridesที่ถูกรวมไว้ที่รากของอินสแตนซ์ พร้อมสำหรับ launcher ที่รับ ZIP - แพ็กเซิร์ฟเวอร์ — ข้ามรายการ
env: clientเก็บenv: serverและรายการที่ไม่มีเครื่องหมาย และตัด config ที่เป็น client-only ออกจาก overrides
เฉพาะ Java Edition เท่านั้น Bedrock ไม่มีรูปแบบที่เทียบเท่า; Bedrock add-ons เป็นไฟล์เก็บ .mcaddon/.mcpack ที่มี manifest.json รูปร่าง完全不同 และไม่มีแพ็ก Modrinth ใดแก้ไขออกมาเป็นแบบนั้นได้
overrides เขียนทับ ไม่ได้รวมเข้าด้วยกัน
ไฟล์ใต้ overrides/ จะถูกคัดลอกทับอินสแตนซ์หลังจากวางมอดแล้ว ไฟล์ config ใน overrides จะแทนที่ค่าเริ่มต้นของมอด outright ถ้าแพ็กมี config ใน overrides และคุณแก้ config นั้นในอินสแตนซ์ด้วย สำเนาใน overrides จะชนะในการแก้ครั้งถัดไป
แปลง manifest ตรวจทุกแฮช แล้วได้ ZIP ที่พร้อมใช้กับ launcher หรือเซิร์ฟเวอร์ที่ MRPACK to ZIP Converter