MC Toolkit

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

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 ใหม่ทุกไฟล์ แต่ก็หมายความว่าแพ็กจะใช้งานออฟไลน์ไม่ได้จนกว่าจะมีคน resolve มันสักครั้ง

manifest มีอะไรอยู่ข้างในจริง ๆ

ฟิลด์ความหมาย
formatVersionเวอร์ชันสคีมาของ manifest
gameเป็น "minecraft" เสมอ — เวอร์ชันต่าง ๆ อยู่ใน dependencies
filesอาร์เรย์ของ path, hashes, downloads, env
dependenciesเวอร์ชัน loader และ Minecraft ที่ต้องติดตั้งก่อน

ฟิลด์ env ในแต่ละไฟล์คือสิ่งที่คนมักมองข้าม มันระบุแยกกันสำหรับ client และ server ว่าไฟล์นั้นเป็น required, optional หรือ unsupported — และไฟล์ที่ไม่มี env จะถูกบังคับใช้ทั้งสองฝั่ง มอดที่ทำเครื่องหมายว่า client-only ไม่ควรถูกคัดลอกลงโฟลเดอร์ mods ของเซิร์ฟเวอร์เลย — การทำเช่นนั้นเป็นสาเหตุ常見ที่ทำให้เซิร์ฟเวอร์บูตไม่ขึ้น

การตรวจสอบแฮชไม่ใช่ตัวเลือกเสริม

ถ้า SHA-1 ของไฟล์ที่ดาวน์โหลดมาไม่ตรงกับ manifest แสดงว่าไฟล์นั้นผิด: ดาวน์โหลดไม่ครบ, หน้า error ของ CDN ที่ถูกบันทึกเป็น jar, หรือมิเรอร์ที่ถูกแก้ไข ตัวแปลงที่ข้ามการตรวจสอบจะแพ็กอินสแตนซ์ที่พังได้อย่างสบายใจ การตรวจสอบคือเหตุผลทั้งหมดที่ควรทำแบบนี้ในเครื่องแทนที่จะเชื่อ repack สุ่ม ๆ

ผลลัพธ์ฝั่งไคลเอนต์กับเซิร์ฟเวอร์

manifest เดียวกันให้ไฟล์เก็บสองแบบที่ต่างกันขึ้นอยู่กับเป้าหมาย:

  • แพ็กไคลเอนต์ — ทุกอย่าง บวก overrides ที่รวมไว้ที่รากของอินสแตนซ์ พร้อมสำหรับ launcher ที่รับ ZIP
  • แพ็กเซิร์ฟเวอร์ — ข้ามรายการที่มี env.server เป็น unsupported เก็บที่เหลือไว้ และวาง server-overrides/ ทับ overrides/ แทนที่จะเป็น client-overrides/

สำหรับ Java Edition เท่านั้น Bedrock ไม่มีรูปแบบที่เทียบเท่า; Bedrock add-ons เป็นไฟล์เก็บ .mcaddon/.mcpack ที่มี manifest.json รูปร่าง完全不同 และไม่มีแพ็ก Modrinth ใด resolve เป็นไฟล์เหล่านั้นได้

Overrides เขียนทับ ไม่ได้รวมเข้าด้วยกัน

ไฟล์ใต้ overrides/ จะถูกคัดลอกทับอินสแตนซ์หลังจากวางมอดแล้ว ไฟล์ config ใน overrides จะแทนที่ค่าเริ่มต้นของมอด outright ถ้าแพ็กมี config ใน overrides และคุณแก้ไข config นั้นในอินสแตนซ์ด้วย สำเนาใน overrides จะชนะในการ resolve ครั้งถัดไป

แปลง manifest ตรวจสอบทุกแฮช แล้วได้ ZIP ที่พร้อมใช้กับ launcher หรือเซิร์ฟเวอร์ได้ที่ MRPACK to ZIP Converter

ตัวแปลง MRPACK เป็น ZIP →

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

ดูทั้งหมด →