วิธีแก้ไขข้อผิดพลาด “Payload Custom Minecraft Clientbound Encode Failed”
หาก Minecraft Java Edition ตัดการเชื่อมต่อพร้อม ข้อความ "Payload Custom Minecraft Clientbound Encode Failed"ให้เริ่มต้นด้วยการตรวจสอบให้แน่ใจว่าชุดม็อด เวอร์ชัน Minecraft และตัวโหลดม็อดของทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์ตรงกันทุกประการ จากนั้นแยกการเปลี่ยนแปลงในโปรไฟล์ที่คัดลอกมาและตรวจสอบบันทึกทั้งหมด ข้อความนี้ไม่ได้ระบุสาเหตุเดียวที่ทำให้เกิดปัญหา แต่ชี้ไปที่ความล้มเหลวที่เกี่ยวข้องกับข้อมูลที่กำหนดเองซึ่งส่งจากเซิร์ฟเวอร์ไปยังไคลเอนต์ ซึ่งอาจเกิดจากม็อดที่ไม่เข้ากัน ตัวแปลงสัญญาณเพย์โหลดที่เสียหาย หรือปัญหาของเซิร์ฟเวอร์หรือพร็อกซี
นี่เป็นปัญหาการเชื่อมต่อเครือข่ายของ Java ที่มีการดัดแปลง ไม่ใช่การตั้งค่าของ Bedrock คำว่า “Clientbound” อธิบายทิศทางของแพ็กเก็ต: จากเซิร์ฟเวอร์ไปยังไคลเอนต์ของผู้เล่น มันไม่ได้พิสูจน์ว่าคอมพิวเตอร์ของผู้เล่นมีปัญหา หากผู้เล่นคนอื่นก็หลุดการเชื่อมต่อเช่นกัน ให้ขอให้เจ้าของเซิร์ฟเวอร์ตรวจสอบบันทึกของเซิร์ฟเวอร์ก่อนที่จะเปลี่ยนแปลงการติดตั้งของคุณ
ข้อผิดพลาดเกี่ยวกับเพย์โหลดหมายความว่าอย่างไร
ม็อดใช้เพย์โหลดแบบกำหนดเองเพื่อแลกเปลี่ยนข้อมูลที่เกมหลักไม่ได้กำหนดไว้ ตัวโหลดหรือม็อดจำเป็นต้องตกลงกันเกี่ยวกับตัวระบุ ทิศทาง และรูปแบบข้อมูลของเพย์โหลด ฝั่งผู้รับต้องรู้วิธีจัดการกับมัน คู่มือเครือข่ายของ Fabric อธิบายการลงทะเบียนเพย์โหลดเฉพาะทิศทางและตัวแปลงสัญญาณสตรีม ในขณะที่ NeoForge จัดทำเอกสารเกี่ยวกับการลงทะเบียนประเภทเพย์โหลด ตัวแปลงสัญญาณ และตัวจัดการ เอกสารอ้างอิงสำหรับนักพัฒนาเหล่านั้นอธิบายว่าเหตุใดความไม่ตรงกันระหว่างม็อดฝั่งไคลเอนต์/เซิร์ฟเวอร์จึงอาจล้มเหลวระหว่างการเข้ารหัสหรือการจัดการ แต่คำพูดเพียงอย่างเดียวไม่สามารถบอกคุณได้ว่าม็อดใดเป็นผู้รับผิดชอบ
ใช้ข้อมูลบันทึกที่เหลือและรูปแบบของความล้มเหลวเพื่อจำกัดขอบเขตให้แคบลง การเชื่อมต่ออินเทอร์เน็ตปกติยังคงสามารถส่งข้อมูลที่ม็อดไม่สามารถแปลงเป็นลำดับได้อย่างถูกต้อง ดังนั้นการเปลี่ยน Wi-Fi การเปิดพอร์ต หรือการบังคับใช้ IPv4 จึงไม่ใช่วิธีแก้ปัญหาเบื้องต้น
แก้ไขข้อผิดพลาดในการตรวจสอบควบคุมสี่รายการ
ก่อนที่จะเปลี่ยนแปลงอะไร ให้บันทึกสำเนาของlatest.logรายงานข้อผิดพลาดของไคลเอนต์และรายงานข้อผิดพลาดใหม่ใดๆ ไว้ด้วย บันทึกเวลาที่การตัดการเชื่อมต่อเกิดขึ้น ที่อยู่หรือชื่อของเซิร์ฟเวอร์ และเวอร์ชันของม็อดแพ็คที่คุณเปิดใช้งาน เก็บรักษาอินสแตนซ์และโลกดั้งเดิมของคุณไว้เหมือนเดิมในระหว่างการแก้ไขปัญหา
1. จับคู่เวอร์ชันไคลเอ็นต์และเซิร์ฟเวอร์
ตรวจสอบรายการเหล่านี้กับไฟล์ manifest ของ modpack หรือคำแนะนำในการติดตั้งของเจ้าของเซิร์ฟเวอร์:
- เวอร์ชัน Minecraft Java ที่แน่นอน รวมถึงเวอร์ชันแพทช์ด้วย
- ตระกูลและโครงสร้างของตัวโหลด: Fabric, Forge หรือ NeoForge ไม่สามารถใช้แทนกันได้
- ชุดม็อดเดียวกันและเวอร์ชันที่จำเป็นของม็อดที่ใช้ร่วมกันและส่วนประกอบที่เกี่ยวข้อง
- คำแนะนำเฉพาะเซิร์ฟเวอร์เกี่ยวกับม็อดที่ใช้งานได้เฉพาะฝั่งไคลเอนต์หรือเฉพาะฝั่งเซิร์ฟเวอร์
อย่าอัปเดตม็อดทุกตัวเป็นเวอร์ชันล่าสุดเพียงเพราะเกิดข้อผิดพลาดขึ้น แพ็กที่คัดสรรมาอาจขึ้นอยู่กับการใช้งานร่วมกันที่เฉพาะเจาะจง ติดตั้งเวอร์ชันที่ระบุไว้ในแพ็ก และขอให้ผู้ดูแลระบบยืนยันว่าเซิร์ฟเวอร์ได้รับการอัปเดตเป็นเวอร์ชันเดียวกันแล้ว หากคุณเป็นผู้ดูแลม็อด ให้ใช้เอกสารประกอบการเชื่อมต่อเครือข่าย Fabric ของตัวโหลดที่เกี่ยวข้อง หรือเอกสารประกอบเพย์โหลด NeoForgeเพื่อตรวจสอบว่าประเภทเพย์โหลด ทิศทาง ตัวแปลงสัญญาณ และตัวจัดการตรงกันทั้งสองฝั่ง
เปรียบเทียบเวอร์ชัน Minecraft, ตัวโหลด และเวอร์ชันของม็อดแพ็คในทั้งสองฝั่งก่อนทำการแก้ไขไฟล์
2. แยกการเปลี่ยนแปลงม็อดล่าสุดอย่างปลอดภัย
หากข้อผิดพลาดเริ่มเกิดขึ้นหลังจากเพิ่มหรืออัปเดตม็อด ให้ทดสอบการเปลี่ยนแปลงนั้นในตัวเรียกใช้งาน (launcher) ที่ซ้ำกันหรือแพ็กม็อดที่คัดลอกมา อย่าลบไฟล์จากเซิร์ฟเวอร์หรือโหลดโลกสำคัญที่มีม็อดที่จำเป็นหายไป ในสำเนา ให้ลบม็อดที่สงสัยและส่วนประกอบที่เกี่ยวข้องออกชั่วคราวเท่านั้น หากคำแนะนำของแพ็กอนุญาต จากนั้นทดสอบอีกครั้ง หากมีการเปลี่ยนแปลงล่าสุดหลายอย่าง ให้เพิ่มกลับเข้าไปทีละกลุ่มเล็ก ๆ จนกว่าข้อผิดพลาดจะกลับมา เปลี่ยนตัวแปรทีละตัวและจดบันทึกเพื่อให้ผลลัพธ์มีประโยชน์
ม็อดบางตัวมีไว้สำหรับใช้งานเฉพาะฝั่งไคลเอนต์หรือเฉพาะฝั่งเซิร์ฟเวอร์ ในขณะที่บางตัวต้องมีอยู่ทั้งสองฝั่ง ตรวจสอบหมายเหตุความเข้ากันได้ของม็อดแต่ละตัวแทนที่จะคิดเอาเองว่าทุกไฟล์ควรอยู่ในทั้งสองโฟลเดอร์ หากคุณไม่ได้ควบคุมเซิร์ฟเวอร์ อย่าทดสอบโดยการแก้ไขไฟล์ของเซิร์ฟเวอร์ ให้ส่งผลการทดสอบของคุณไปยังผู้ดูแลระบบ
ใช้โปรไฟล์สำรองเพื่อลบหรือกู้คืนม็อดที่ต้องสงสัยโดยไม่ต้องแก้ไขการติดตั้งหลัก
3. อ่านบันทึกเหตุการณ์ที่เกิดขึ้นในช่วงที่เกิดความล้มเหลวครั้งแรก
เปิดไฟล์บันทึกที่บันทึกไว้ทันทีหลังจากการตัดการเชื่อมต่อ ค้นหาคำหรือวลีต่างๆ เช่นFailed to encode, custom_payload, หรือCaused by, จากนั้นอ่านข้อความแสดงข้อผิดพลาดโดยรอบ ข้อผิดพลาดพื้นฐานแรกมักจะมีประโยชน์มากกว่าบรรทัดการตัดการเชื่อมต่อสุดท้าย มองหารหัสโมดูล ชื่อแพ็กเกจ ตัวระบุเพย์โหลด หรือตัวแปลงสัญญาณที่กล่าวถึงใกล้กับข้อผิดพลาด นอกจากนี้ ให้ตรวจสอบบันทึกของเซิร์ฟเวอร์ในช่วงเวลาเดียวกันหากคุณสามารถเข้าถึงได้ เซิร์ฟเวอร์อาจมีข้อผิดพลาดที่ชัดเจนกว่า
ไฟล์บันทึกอาจชี้ไปที่ม็อดโดยไม่ได้พิสูจน์ว่าม็อดนั้นเสียเพียงอย่างเดียว สาเหตุหลักอาจเกิดจากเวอร์ชันที่ไม่เข้ากัน การขาดส่วนประกอบที่จำเป็น ข้อมูลที่ไม่คาดคิด หรือพร็อกซีที่ส่งต่อช่องทางที่แบ็กเอนด์ไม่รองรับ เก็บรักษาข้อความที่เกี่ยวข้องทั้งหมดไว้สำหรับผู้สร้างม็อดหรือผู้ดูแลระบบเซิร์ฟเวอร์ ก่อนที่จะเผยแพร่ต่อสาธารณะ โปรดลบที่อยู่เซิร์ฟเวอร์ส่วนตัว ชื่อบัญชี หรือรายละเอียดส่วนบุคคลอื่นๆ ที่ปรากฏในไฟล์ออก
ใช้ข้อความแสดงข้อผิดพลาดและข้อมูลการติดตามการทำงานของโปรแกรมที่อยู่ใกล้เคียงเพื่อค้นหาตัวระบุโมดูลหรือเพย์โหลด บรรทัด "การตัดการเชื่อมต่อ" เพียงอย่างเดียวไม่เพียงพอ
4. เปรียบเทียบตำแหน่งที่เกิดความไม่สอดคล้องกัน
ควรใช้เฉพาะอินสแตนซ์ทดสอบและเซิร์ฟเวอร์ที่เข้ากันได้ที่ทราบแล้วเท่านั้น เซิร์ฟเวอร์แบบธรรมดาสามารถช่วยตรวจสอบว่าตัวเรียกใช้งานเริ่มต้นและเชื่อมต่อได้หรือไม่ แต่ไม่สามารถตรวจสอบความถูกต้องของเพย์โหลดแบบกำหนดเองที่ดัดแปลงได้ เนื่องจากเซิร์ฟเวอร์แบบธรรมดาไม่ได้ใช้ข้อความของชุดม็อดเดียวกัน
| เกิดอะไรขึ้น | ควรตรวจสอบที่ไหนก่อน |
| ไคลเอนต์ของคุณใช้งานไม่ได้บนเซิร์ฟเวอร์ที่มีการดัดแปลงหลายเครื่องที่เข้ากันได้ | โปรไฟล์ที่คัดลอกของคุณ, ตัวโหลด หรือม็อดฝั่งไคลเอ็นต์ที่แชร์ |
| ลูกค้าของคุณประสบปัญหาบนเซิร์ฟเวอร์เพียงเครื่องเดียว ในขณะที่แพ็กเกจเดียวกันนี้ใช้งานได้ปกติบนเซิร์ฟเวอร์อื่น | เวอร์ชันม็อด การกำหนดค่า หรือเส้นทางพร็อกซีของเซิร์ฟเวอร์นั้น |
| ผู้เล่นหลายคนล้มเหลวในขั้นตอนการเข้าร่วมหรือการกระทำในเกมเดียวกัน | บันทึกเซิร์ฟเวอร์และม็อดที่ส่งข้อมูลนั้น |
| ปัญหาเริ่มเกิดขึ้นทันทีหลังจากการอัปเดตแพ็กเกจครั้งหนึ่ง | ม็อดที่เปลี่ยนแปลงและส่วนประกอบที่เกี่ยวข้องทั้งสองฝั่ง |
นี่เป็นเพียงเบาะแส ไม่ใช่การรับประกัน “Clientbound” หมายความว่าเซิร์ฟเวอร์กำลังส่งข้อมูลไปยังไคลเอนต์ ดังนั้นเจ้าของเซิร์ฟเวอร์ควรตรวจสอบข้อมูลที่ส่งออกไปและพร็อกซีใดๆ ที่อยู่ระหว่างเซิร์ฟเวอร์และผู้เล่น ผู้เล่นที่ได้รับผลกระทบเพียงคนเดียวอาจยังคงมีปัญหาความเข้ากันได้ในเครื่อง โปรดแชร์เวอร์ชันที่แน่นอน เวลาที่เกิดความล้มเหลว และส่วนหนึ่งของบันทึกเพื่อให้ผู้ดูแลระบบสามารถเปรียบเทียบทั้งสองฝั่งได้
การเปรียบเทียบไคลเอ็นต์เดียวกันกับเซิร์ฟเวอร์ที่ทราบว่าเข้ากันได้ จะช่วยให้เห็นว่าปัญหาเกิดจากไคลเอ็นต์หรือจากฝั่งเซิร์ฟเวอร์
สิ่งที่ไม่ควรเปลี่ยนแปลงเป็นอันดับแรก
- อย่าเพิ่ม RAM เพื่อแก้ไขปัญหาแพ็กเก็ต การเพิ่มหน่วยความจำจะช่วยได้ก็ต่อเมื่อบันทึกแสดงว่ามีปัญหาเรื่องหน่วยความจำไม่เพียงพอเท่านั้น ไม่ได้ช่วยแก้ไขรูปแบบเพย์โหลดที่ไม่ตรงกัน
- อย่าบังคับใช้ IPv4 หรือปิดไฟร์วอลล์ของคุณโดยทั่วไปข้อความแสดงข้อผิดพลาดไม่ได้ระบุสาเหตุจากการกำหนดเส้นทางหรือไฟร์วอลล์ หลีกเลี่ยงการลดระดับการตั้งค่าความปลอดภัยโดยไม่มีหลักฐานเพิ่มเติม
- อย่าลบโฟลเดอร์ config หรือ mods ทั้งหมดเพราะอาจลบข้อมูลสำคัญและทำให้ยากต่อการจำลองปัญหา ให้ทดสอบในสำเนาแทน
- อย่าติดตั้งม็อดแก้ไขข้อบกพร่องแพ็กเก็ตที่ไม่เกี่ยวข้องบนเซิร์ฟเวอร์ที่ใช้งานอยู่เริ่มต้นด้วยบันทึกที่ Minecraft และตัวโหลดสร้างขึ้นอยู่แล้ว
ป้องกันไม่ให้เกิดข้อผิดพลาดซ้ำอีก
จดบันทึกหรือส่งออกข้อมูลเวอร์ชันของม็อดแพ็คที่เซิร์ฟเวอร์ใช้งานอยู่ อัปเดตทั้งฝั่งไคลเอนต์และเซิร์ฟเวอร์ไปพร้อมกัน สำรองข้อมูลโลกก่อนเปลี่ยนม็อดเซิร์ฟเวอร์ และทดสอบม็อดแพ็คเวอร์ชันใหม่ในอินสแตนซ์แยกต่างหากก่อนที่จะใช้งานจริง คู่มือสนับสนุนของ Minecraft อธิบายวิธีการบันทึกข้อมูลสำรองของโลกใน Java Editionหากข้อผิดพลาดยังคงอยู่ ให้ส่งเวอร์ชันของแพ็คและตัวโหลด บันทึกข้อความแรกๆ ที่เป็นสาเหตุ และผลลัพธ์ของการเปรียบเทียบที่คุณควบคุมไว้ให้ผู้ดูแลระบบ หลักฐานเหล่านั้นมีประโยชน์มากกว่าการเปลี่ยนการตั้งค่าหน่วยความจำหรือเครือข่ายแบบสุ่ม