แก้ไขข้อผิดพลาด NullPointerException “Failed to Sync Registries from Server” ใน Minecraft
หาก Minecraft Java Edition ตัดการเชื่อมต่อด้วย ข้อความ “Failed to sync registries from server: java.lang.NullPointerException”ให้เริ่มต้นด้วยการตรวจสอบเวอร์ชัน Minecraft, ตัวโหลดม็อด และเวอร์ชันของแพ็กม็อดบนเครื่องไคลเอนต์และเซิร์ฟเวอร์ จากนั้นเปรียบเทียบบันทึกรอบๆ ข้อผิดพลาดรีจิสทรีแรก ข้อความนี้ระบุขั้นตอนการซิงโครไนซ์ที่ล้มเหลว แต่ไม่ได้ระบุชื่อม็อดหรือพิสูจน์ว่า Java เครือข่ายของคุณ หรือแคชเป็นสาเหตุ
วิธีแก้ไขเบื้องต้นที่ปลอดภัยที่สุดคือการกู้คืนไคลเอ็นต์และเซิร์ฟเวอร์ให้กลับไปใช้เวอร์ชันม็อดแพ็คและตัวโหลดที่รองรับเหมือนเดิมทำการสำรองข้อมูลก่อนเปลี่ยนแปลงไฟล์เซิร์ฟเวอร์หรือข้อมูลโลก ตรวจสอบตามขั้นตอนด้านล่างตามลำดับ และทดสอบการเปลี่ยนแปลงในสำเนาเมื่อเป็นไปได้
ข้อผิดพลาดการซิงค์รีจิสทรีของ Minecraft หมายความว่าอย่างไร
ระบบรีจิสทรีของ Minecraft ทำหน้าที่แมปตัวระบุต่างๆ กับวัตถุในเกม เช่น บล็อก ไอเท็ม และเอนทิตี้ ข้อมูลรีจิสทรีบางส่วนจากม็อดจะถูกซิงโครไนซ์เมื่อไคลเอนต์เข้าร่วมโลกเอกสารรีจิสทรีของ Fabricอธิบายวิธีการที่เซิร์ฟเวอร์สามารถส่งข้อมูลรีจิสทรีที่ซิงโครไนซ์แล้วไปยังไคลเอนต์ หากข้อมูลนั้นไม่สามารถนำไปใช้ได้ตามที่คาดหวัง เกมอาจตัดการเชื่อมต่อพร้อมข้อความแจ้งการซิงโครไนซ์รีจิสทรี
NullPointerException หมายความว่าโค้ดพบค่าที่หายไปในตำแหน่งที่คาดหวังว่าจะเป็นอ็อบเจ็กต์ ข้อความการตัดการเชื่อมต่อเป็นเพียงสรุป ไม่ใช่การวินิจฉัยปัญหา เบาะแสที่มีประโยชน์มักจะเป็นข้อผิดพลาดก่อนหน้านี้ รายการรีจิสทรีที่ไม่ถูกต้อง การพึ่งพาที่ขาดหายไป หรือรหัสโมดูลในบันทึกของไคลเอนต์หรือเซิร์ฟเวอร์ นั่นเป็นเหตุผลว่าทำไมการลบโฟลเดอร์แบบสุ่ม การเพิ่มหน่วยความจำ หรือการติดตั้งเซิร์ฟเวอร์ใหม่ทั้งหมดจึงเป็นขั้นตอนแรกที่ไม่ดี
การวินิจฉัยอย่างรวดเร็ว: ระบุว่าด้านใดมีการเปลี่ยนแปลง
| สิ่งที่คุณสังเกตเห็น | ควรตรวจสอบที่ไหนก่อน |
| ผู้เล่นเพียงคนเดียวไม่สามารถเข้าร่วมได้ | โปรไฟล์ตัวเรียกใช้งานของผู้เล่น, เวอร์ชันของชุดม็อด, ม็อด และการตั้งค่าในเครื่อง |
| ผู้เล่นหลายคนไม่สามารถเล่นได้หลังจากอัปเดตเซิร์ฟเวอร์ | ตัวโหลดของเซิร์ฟเวอร์ ไฟล์แพ็กเซิร์ฟเวอร์ แพ็กข้อมูล และประวัติการอัปเดต |
| ข้อผิดพลาดเริ่มเกิดขึ้นหลังจากเพิ่มหรืออัปเดตม็อด | ม็อดนั้น รวมถึงส่วนประกอบที่จำเป็น และข้อมูลรีจิสทรีหรือสคริปต์ใดๆ ที่ม็อดนั้นจัดหาให้ |
| โลกเล่นคนเดียวที่ดัดแปลงก็ล้มเหลวเช่นกัน | อินสแตนซ์ที่แก้ไขแล้วในเครื่องหรือตัวโหลดของมัน โหมดเล่นคนเดียวยังคงเรียกใช้เซิร์ฟเวอร์ในเครื่องอยู่ |
| เกมล้มเหลวก่อนที่จะเปิด หรือแสดงข้อความแจ้งว่าเวอร์ชัน Java ไม่รองรับ | รันไทม์ Java ที่ถูกเลือกใช้สำหรับ Minecraft เวอร์ชันนั้นๆ ตัวเรียกใช้งาน หรือกระบวนการเซิร์ฟเวอร์นั้นๆ |
วิธีแก้ไขปัญหา “ไม่สามารถซิงค์รีจิสทรีจากเซิร์ฟเวอร์ได้”
ก่อนเริ่มแก้ไขปัญหา ให้จดบันทึกเวอร์ชัน Minecraft, โหลดเดอร์และบิลด์ของโหลดเดอร์, ชื่อและรุ่นของม็อดแพ็ค และว่าปัญหาเกิดขึ้นกับผู้เล่นคนเดียวหรือทุกคน หากคุณเป็นผู้ดูแลเซิร์ฟเวอร์ ให้สำรองข้อมูลโลกและไฟล์ปัจจุบันของเซิร์ฟเวอร์ก่อนที่จะอัปเดต ลบ หรือย้อนกลับสิ่งใดๆ
1. ตรวจสอบเวอร์ชัน Minecraft และตัวโหลดม็อด
ตรวจสอบเวอร์ชันที่เลือกในตัวเรียกใช้งานไคลเอ็นต์และเวอร์ชันที่เซิร์ฟเวอร์เริ่มต้นใช้งานจริง สำหรับเกมที่มีการดัดแปลง ให้บันทึกตัวโหลดด้วย: Fabric, Forge และ NeoForge เป็นตระกูลตัวโหลดที่แยกจากกัน ใช้เวอร์ชันที่กำหนดโดยชุดม็อดหรือเจ้าของเซิร์ฟเวอร์ เวอร์ชัน Minecraft ที่ตรงกันเพียงอย่างเดียวไม่เพียงพอ หากไคลเอ็นต์และเซิร์ฟเวอร์ใช้ตัวโหลดที่ไม่เข้ากัน
ตรวจสอบเวอร์ชัน Minecraft และตัวโหลดที่รองรับของแต่ละม็อดก่อนที่จะทำการเปลี่ยน ม็อดนั้นคู่มือการติดตั้งม็อด Fabricแนะนำให้เลือกม็อดที่เหมาะสมกับเวอร์ชัน Minecraft ตัวโหลด Fabric และ Java Edition ที่ต้องการใช้งาน อย่าเปลี่ยนโปรไฟล์ Forge เป็น Fabric หรือใช้ม็อดที่สร้างขึ้นสำหรับเวอร์ชันเกมอื่นเพื่อทดสอบ
รูปแบบการจัดวางนี้เป็นเพียงตัวอย่างเท่านั้น โปรดใช้เวอร์ชัน Minecraft, loader และ pack ที่ระบุไว้สำหรับเซิร์ฟเวอร์ของคุณ
2. คืนค่าเวอร์ชันม็อดแพ็คที่ต้องการ
หากคุณเข้าร่วมผ่านแพ็กม็อด ให้เลือกหรือติดตั้งแพ็กเวอร์ชันเดียวกับที่เซิร์ฟเวอร์ใช้งานอีกครั้ง ใช้โปรไฟล์ไคลเอ็นต์ของแพ็ก และสำหรับผู้ดูแลระบบ ให้ใช้คำแนะนำในการดาวน์โหลดหรือติดตั้งแพ็กเซิร์ฟเวอร์ที่ตรงกัน เปรียบเทียบเวอร์ชันของม็อดที่แพ็กต้องการในทั้งสองฝั่ง ม็อดบางตัวใช้งานได้เฉพาะไคลเอ็นต์หรือเฉพาะเซิร์ฟเวอร์ ดังนั้นการคัดลอกไฟล์ JAR ทั้งหมดจากโฟลเดอร์หนึ่งไปยังอีกโฟลเดอร์หนึ่งโดยไม่ตรวจสอบอาจทำให้เกิดปัญหาอื่นได้
ตรวจสอบการตั้งค่าที่จัดการโดยแพ็กเกจ สคริปต์ และแพ็กเกจข้อมูลด้วย หากคำแนะนำในการเผยแพร่ระบุว่าสิ่งเหล่านี้ควรอยู่ในเซิร์ฟเวอร์ การอัปเดตม็อดอาจเปลี่ยนแปลงข้อมูลรีจิสทรีได้ แม้ว่ารายการม็อดที่มองเห็นได้จะดูเหมือนเดิมเกือบทุกอย่าง หากปัญหาเริ่มเกิดขึ้นทันทีหลังจากการอัปเดต ให้กู้คืนแพ็กเกจเวอร์ชันก่อนหน้าที่มีความเข้ากันได้บนสำเนาทดสอบ และให้ไคลเอนต์ใช้เวอร์ชันเดียวกันนั้น
ตัวอย่างการเปรียบเทียบเท่านั้น ชื่อและเวอร์ชันของม็อดที่แสดงเป็นเพียงแบบจำลอง โปรดเปรียบเทียบไฟล์ manifest ของแพ็กและเวอร์ชันที่เผยแพร่บนเซิร์ฟเวอร์ของคุณเอง
3. อ่านบันทึกทั้งสองส่วนที่แสดงข้อมูลเกี่ยวกับความล้มเหลว
ค้นหาไฟล์บันทึกของไคลเอนต์logs/latest.logและหากคุณสามารถเข้าถึงได้ ให้ค้นหาไฟล์บันทึกของเซิร์ฟเวอร์ด้วยlogs/latest.logโดยปกติแล้ว ไฟล์บันทึกจะอยู่ในไดเร็กทอรีเกม Minecraft ตามค่าเริ่มต้น%appdata%\.minecraft\logsบน Windows, ~/Library/Application Support/minecraft/logsบน macOS และ~/.minecraft/logsบน Linux โปรแกรมเรียกใช้งานจากผู้พัฒนาภายนอกมักใช้ไดเร็กทอรีอินสแตนซ์แยกต่างหากคู่มือการแก้ไขปัญหาไฟล์บันทึก ของ Fabric จะอธิบายว่าควรค้นหาไฟล์บันทึกได้ที่ใดและวิธีการแชร์ไฟล์บันทึกเหล่านั้น
ค้นหาคำต่างๆ ใกล้กับจุดที่เกิดการตัดการเชื่อมต่อ เช่นregistry, Caused by, unknown, missingหรือรหัส mod อ่านขึ้นไปจากบรรทัดสุดท้ายที่ระบุว่า “การซิงค์ล้มเหลว”: คำเตือนหรือข้อยกเว้นเฉพาะแรกอาจระบุรายการหรือการพึ่งพาที่ไม่ถูกต้อง เปรียบเทียบเวลาประทับของไคลเอนต์และเซิร์ฟเวอร์ และรายงานเวอร์ชัน Minecraft, บิลด์ตัวโหลด, รุ่นของแพ็ก และส่วนบันทึกที่เกี่ยวข้องให้กับเจ้าของเซิร์ฟเวอร์หรือทีมสนับสนุน modpack ลบที่อยู่เซิร์ฟเวอร์ ชื่อบัญชี หรือรายละเอียดส่วนตัวอื่นๆ ก่อนที่จะโพสต์บันทึกต่อสาธารณะ
ข้อความบันทึกที่แสดงเป็นเพียงแผนผัง ไม่ใช่รายงานข้อผิดพลาดที่แท้จริง โปรดใช้ข้อผิดพลาดก่อนหน้านี้ในบันทึกของไคลเอนต์และเซิร์ฟเวอร์ของคุณเอง
4. ทดสอบการเปลี่ยนแปลงล่าสุดในสำเนาแยกต่างหาก
ก่อนเริ่มแก้ไขปัญหา ให้คัดลอกอินสแตนซ์ของตัวเรียกใช้งานหรือคัดลอกเซิร์ฟเวอร์ไปยังตำแหน่งทดสอบก่อน ปิดใช้งานหรือย้อนกลับเวอร์ชันม็อดที่เพิ่มหรืออัปเดตล่าสุดทีละตัว โดยคงไว้ซึ่งส่วนประกอบที่จำเป็นอื่นๆ และลองเข้าร่วมอีกครั้ง หากมีการเปลี่ยนแปลงม็อดจำนวนมาก ให้แบ่งการเปลี่ยนแปลงล่าสุดออกเป็นกลุ่มย่อยๆ เพื่อจำกัดสาเหตุ อย่าลบม็อดครึ่งหนึ่งออกจากโลกที่ใช้งานอยู่
หากโลกทดสอบที่สะอาดในอินสแตนซ์ที่คัดลอกมายังแสดงข้อผิดพลาดเดียวกัน ให้เน้นที่การตั้งค่า mod หรือ loader ในเครื่อง หากไคลเอนต์สามารถเปิดโลกทดสอบได้ แต่ล้มเหลวเฉพาะบนเซิร์ฟเวอร์เฉพาะเครื่องเดียว ให้เปรียบเทียบแพ็ก การกำหนดค่า และแพ็กข้อมูลของเซิร์ฟเวอร์นั้นกับเวอร์ชันที่ไคลเอนต์ได้รับคำแนะนำให้ติดตั้ง
ควรทำการสำรองข้อมูลและสร้างสำเนาทดสอบแยกต่างหากก่อนที่จะเปลี่ยนแปลงโลกที่ใช้งานจริงหรือย้อนกลับแพ็กเซิร์ฟเวอร์
5. ถ้าคุณเป็นผู้ดูแลระบบเซิร์ฟเวอร์ โปรดตรวจสอบการอัปเดตครั้งล่าสุดของเซิร์ฟเวอร์ด้วย
ตรวจสอบบันทึกการเริ่มต้นเซิร์ฟเวอร์เพื่อหาข้อผิดพลาดในรีจิสทรี แพ็กข้อมูล หรือการโหลดม็อด ก่อนที่ผู้เล่นจะเชื่อมต่อ ยืนยันว่าเซิร์ฟเวอร์ใช้ไฟล์แพ็กเซิร์ฟเวอร์และตัวโหลดที่ถูกต้อง ไม่ใช่แค่เวอร์ชัน Minecraft ที่ถูกต้อง หากความล้มเหลวเริ่มต้นหลังจากอัปเดตแพ็ก ให้ทดสอบแพ็กเซิร์ฟเวอร์ฉบับสมบูรณ์ก่อนหน้ากับเวอร์ชันไคลเอ็นต์ที่ตรงกันในสำเนา เปลี่ยนส่วนประกอบทีละอย่างและเก็บโลกต้นฉบับไว้โดยไม่เปลี่ยนแปลงจนกว่าการทดสอบจะใช้งานได้
หากบันทึกข้อผิดพลาดชี้ไปยังม็อดหรือรายการรีจิสทรีเฉพาะ ให้ส่งบรรทัดข้อผิดพลาดและรายละเอียดเวอร์ชันที่แน่นอนไปยังผู้ดูแลแพ็กม็อดหรือผู้สร้างม็อด หลีกเลี่ยงการลบconfigโฟลเดอร์ cache, world หรือ player-data เป็นวิธีแก้ปัญหาทั่วไป การกระทำเหล่านั้นไม่สมเหตุสมผลจากข้อความการตัดการเชื่อมต่อเพียงอย่างเดียว และอาจลบการตั้งค่าหรือความคืบหน้าที่บันทึกไว้ได้
Java 21 แก้ไขข้อผิดพลาดนี้หรือไม่?
ตรวจสอบ Java เฉพาะเมื่อรันไทม์ที่เลือกไม่ตรงตามข้อกำหนดสำหรับเวอร์ชัน Minecraft หรือเมื่อบันทึกของเกมหรือเซิร์ฟเวอร์รายงานปัญหาเกี่ยวกับเวอร์ชัน Java ข้อกำหนดขึ้นอยู่กับเวอร์ชันของเกม: บันทึกของ Mojang สำหรับ Minecraft 1.20.5ระบุ Java 21 ในขณะที่บันทึกของ Minecraft 26.1ระบุ Java 25 ตัวเรียกใช้งานอย่างเป็นทางการมีรันไทม์ Java ของตัวเองสำหรับเวอร์ชันเหล่านี้ เซิร์ฟเวอร์เฉพาะ ตัวเรียกใช้งานแบบกำหนดเอง และตัวเรียกใช้งานแพ็กม็อดบางตัวอาจใช้รันไทม์ที่เลือกแยกต่างหาก
ดังนั้น “ติดตั้ง Java 21” จึงไม่ใช่วิธีแก้ปัญหาแบบครอบคลุม และจะเป็นคำแนะนำที่ไม่ถูกต้องสำหรับเวอร์ชันใหม่กว่า เช่น 26.1 หากคุณใช้เส้นทาง Java แบบกำหนดเอง ให้ตรวจสอบรันไทม์ที่ใช้โดยตัวเรียกใช้งานหรือกระบวนการเซิร์ฟเวอร์จริง ความไม่ตรงกันของ Java อาจทำให้เกมไม่สามารถเปิดใช้งานได้ แต่ข้อความการซิงค์รีจิสทรีเพียงอย่างเดียวไม่ได้ระบุว่า Java เป็นสาเหตุ
คำถามที่พบบ่อย
ข้อความนี้หมายความว่าเซิร์ฟเวอร์ Minecraft ออฟไลน์ใช่หรือไม่?
ไม่ครับ หมายความว่าไคลเอนต์ไม่สามารถจัดการข้อมูลรีจิสทรีให้เสร็จสมบูรณ์ระหว่างการเชื่อมต่อได้ หากผู้เล่นคนอื่นสามารถเข้าร่วมได้ ให้เริ่มต้นด้วยแพ็กและโปรไฟล์ของไคลเอนต์ที่ได้รับผลกระทบ หากทุกคนยังคงล้มเหลวหลังจากเปลี่ยนเซิร์ฟเวอร์แล้ว ให้ขอให้ผู้ดูแลระบบเซิร์ฟเวอร์ตรวจสอบบันทึกเซิร์ฟเวอร์และประวัติการอัปเดต
รายชื่อม็อดของไคลเอนต์และเซิร์ฟเวอร์ต้องเหมือนกันหรือไม่?
พวกเขาจำเป็นต้องใช้เวอร์ชันของม็อดแพ็คเดียวกันตามที่ตั้งใจไว้ รวมถึงเวอร์ชันของม็อดที่เข้ากันได้ซึ่งจำเป็นสำหรับทั้งสองฝั่ง ม็อดที่ใช้งานได้เฉพาะฝั่งไคลเอนต์และม็อดที่ใช้งานได้เฉพาะฝั่งเซิร์ฟเวอร์ หมายความว่าโฟลเดอร์ทั้งสองไม่จำเป็นต้องมีไฟล์ที่เหมือนกันเสมอไป ให้ปฏิบัติตามคำแนะนำในการติดตั้งฝั่งเซิร์ฟเวอร์ของแพ็คแทนที่จะคัดลอกโฟลเดอร์โดยไม่ตรวจสอบข้อกำหนดของม็อดก่อน
ฉันควรล้างแคชของ Minecraft หรือติดตั้งเซิร์ฟเวอร์ใหม่ดี?
ไม่ใช่คำตอบแรก ข้อผิดพลาดนี้ไม่ได้พิสูจน์ว่าแคชเสียหายหรือการติดตั้งโลกมีปัญหา ให้เก็บรักษาโลกไว้ เปรียบเทียบเวอร์ชัน ตรวจสอบบันทึกทั้งสอง และทดสอบการเปลี่ยนแปลงที่ต้องการในสำเนาดูก่อน
ข้อมูลอ้างอิงอย่างเป็นทางการ