Minecraft ออกรุ่นใหม่ หรือม็อดที่อยากได้มีเฉพาะเวอร์ชันหนึ่ง คำถามที่ตามมาเหมือนกันทุกครั้งคือย้ายเซิร์ฟได้ไหมโดยไม่ทำโลกที่สร้างกันมาทั้งกลุ่มพัง บน uniz.host ย้ายได้ และระบบถูกวางให้คัดลอกโลกเก็บไว้ให้ก่อนเสมอ ก่อนที่จะแตะอะไรทั้งนั้น บทความนี้ไล่ว่าเบื้องหลังทำอะไรบ้าง เรียงลำดับยังไง และทิศทางไหนคือทิศที่จบด้วยเซิร์ฟเปิดไม่ติด
กดปุ่มแล้วยังไม่มีอะไรเปลี่ยนทันที
ตัวควบคุมอยู่ที่การ์ด "เวอร์ชันและซอฟต์แวร์" ในแท็บ "ตั้งค่า" ของเซิร์ฟตัวนั้น กดปุ่ม "เปลี่ยนเวอร์ชัน" แล้วจะได้หน้าต่างขึ้นมา ยังไม่มีอะไรเกิดขึ้นกับเซิร์ฟ บรรทัดเปิดหัวหน้าต่างคือประโยคสำคัญที่สุด ว่าระบบจะสำรองข้อมูลก่อนเสมอ แล้วจึงเปลี่ยนหลังสำรองสำเร็จเท่านั้น
การกดส่งคำขอจึงทำแค่สองอย่าง คือสั่งสำรองข้อมูลทั้งโฟลเดอร์ของเซิร์ฟหนึ่งชุด และประทับคำขอนั้นค้างไว้บนเซิร์ฟ เวอร์ชันกับซอฟต์แวร์ยังไม่ขยับ คุณจะเห็นข้อความแจ้งว่าเริ่มสำรองข้อมูลแล้ว การ์ดจะขึ้นแถบบอกว่ากำลังสำรองข้อมูลอยู่และจะเปลี่ยนให้อัตโนมัติเมื่อสำรองเสร็จ และปุ่มเปลี่ยนเวอร์ชันจะกดไม่ได้ตลอดช่วงที่แถบนี้ยังอยู่ คำขอที่สองจึงซ้อนทับคำขอแรกไม่ได้
อีกไม่กี่นาทีต่อมา ลูปเบื้องหลังจะเห็นว่างานสำรองจบแล้ว แล้วสะสางคำขอตามผลลัพธ์
| ผลของการสำรอง | เกิดอะไรกับคำขอเปลี่ยนเวอร์ชัน |
|---|
| สำเร็จ | เขียนเวอร์ชันและซอฟต์แวร์ใหม่ลงเซิร์ฟ ล้างรายการม็อดถ้าตกลงกันไว้แบบนั้น แล้วอัปเดตแม่แบบของพ็อด |
| ล้มเหลว | ทิ้งคำขอโดยไม่เปลี่ยนอะไรเลย เซิร์ฟคงเวอร์ชันเดิม และบันทึกข้อผิดพลาดไว้บนเซิร์ฟพร้อมส่งแจ้งเตือน |
| งานสำรองหายไปเฉย ๆ | ถือเป็นล้มเหลวหลังตรวจซ้ำไม่กี่รอบ ไม่มีอะไรถูกเปลี่ยน |
ตรงนี้ตั้งใจออกแบบมาแบบนี้ และคือหัวใจของความปลอดภัยทั้งหมด เพราะทางเดียวที่เวอร์ชันจะเปลี่ยนได้คือทางที่ผ่านแบ็คอัพซึ่งพิสูจน์แล้วว่ามีอยู่จริง ผลพลอยได้อีกข้อคือคุณปิดแท็บเบราว์เซอร์ไปได้เลย เพราะคนสะสางคำขอคือฝั่งเซิร์ฟเวอร์ ไม่ใช่หน้าเว็บที่คุณเปิดค้างไว้
แบ็คอัพนิรภัยรอบนี้ไม่กินโควตาที่คุณกดเอง
แบ็คอัพที่เกิดตรงนี้ถูกบันทึกเป็นแบ็คอัพอัตโนมัติ ส่วนเพดานที่กันไม่ให้สะสมแบ็คอัพนับเฉพาะอันที่กดเอง การเปลี่ยนเวอร์ชันจึงไม่กินช่องของคุณสักช่อง แต่สิ่งที่มันทำคือไปอยู่ในกองอัตโนมัติ ซึ่งจะถูกตัดให้เหลือเฉพาะไฟล์ล่าสุดไม่กี่ไฟล์ทุกครั้งที่แบ็คอัพอัตโนมัติเสร็จ ค่าเริ่มต้นคือสามไฟล์ ถ้าไม่ได้ไปเพิ่มไว้ในตารางสำรองข้อมูล ภาพก่อนเปลี่ยนที่คุณอยากเก็บไว้เป็นสัปดาห์จึงควรกดสำรองเองไว้อีกชุด
มีข้อต่างกันหนึ่งข้อระหว่างฉบับเกม เซิร์ฟ Java ที่รันอยู่สำรองข้อมูลสด ๆ ได้ ระบบจะสั่งให้เซิร์ฟเขียนโลกลงดิสก์แล้วหยุดเซฟอัตโนมัติชั่วคราวตลอดช่วงที่คัดลอก แล้วเปิดเซฟอัตโนมัติกลับมาเมื่องานจบ ผู้เล่นจึงไม่ถูกเตะออก ส่วน Bedrock ไม่มีเส้นทางสำรองแบบสด คำขอเปลี่ยนเวอร์ชันของเซิร์ฟ Bedrock ที่กำลังรันอยู่จึงถูกปฏิเสธจนกว่าจะหยุดเซิร์ฟก่อน
เปลี่ยนเวอร์ชันทีละขั้น
เปิดแท็บตั้งค่าแล้วหาการ์ดเวอร์ชันและซอฟต์แวร์
การ์ดนี้อยู่เหนือการ์ดตั้งค่าประจำเกมของเซิร์ฟ Minecraft และแสดงซอฟต์แวร์พร้อมไอคอน เวอร์ชันที่ปักไว้ตอนนี้ และป้าย "มีอัปเดตใหม่" เมื่อซอฟต์แวร์ที่เซิร์ฟคุณใช้ปล่อยรุ่นใหม่กว่าที่คุณปักไว้ คนที่จะกดได้ต้องมีสิทธิ์ตั้งค่า เจ้าของเซิร์ฟมีอยู่แล้ว ส่วนสมาชิกทีมต้องได้รับสิทธิ์นี้มาก่อน
เลือกเวอร์ชันปลายทาง หรือซอฟต์แวร์ หรือทั้งสองอย่าง
รายการเวอร์ชันไม่ใช่รายการกลางรายการเดียว แต่ดึงแยกตามซอฟต์แวร์ จากรายการบิลด์ของโครงการนั้นเอง คุณจึงเลือกได้เฉพาะเวอร์ชันที่ซอฟต์แวร์ของคุณมีบิลด์ออกมาจริง ๆ และเหนือรายการเวอร์ชันจะมีตัวเลือก "ล่าสุด (อัปเดตอัตโนมัติ)" อยู่บนสุด
ช่อง "ซอฟต์แวร์" จะขึ้นเฉพาะเซิร์ฟ Java ที่อยู่ในกลุ่มสิบสามชนิดที่สลับกันได้ จัดกลุ่มแบบเดียวกับตอนสร้างเซิร์ฟ ส่วน Bedrock ไม่มีแกนซอฟต์แวร์เลย มีแค่ช่องเวอร์ชัน และถ้าคุณสลับซอฟต์แวร์ ระบบจะเอาเวอร์ชันที่ปักไว้ไปเทียบกับรายการของซอฟต์แวร์ใหม่ แล้วย้ายไปที่บิลด์ใหม่สุดของตัวนั้นให้ ถ้าซอฟต์แวร์ใหม่ไม่เคยทำเวอร์ชันของคุณออกมา
อ่านคำเตือนทุกกล่องที่ขึ้นในหน้าต่างนั้น
กล่องแดงทุกกล่องในหน้าต่างนี้กำลังบอกถึงความพังแบบใดแบบหนึ่งที่เกิดขึ้นได้จริง และขึ้นพร้อมกันหลายกล่องได้ สามหัวข้อถัดจากนี้คือคำอธิบายของแต่ละกล่อง
ตัดสินใจว่าจะให้รีสตาร์ทหลังเปลี่ยนเสร็จหรือไม่
ท้ายหน้าต่างมีช่องติ๊ก "รีสตาร์ทเซิร์ฟเวอร์หลังเปลี่ยนแปลงเสร็จ" ซึ่งถูกติ๊กไว้ให้แล้วเมื่อเซิร์ฟกำลังรันอยู่ ปล่อยติ๊กไว้ การเปลี่ยนจะมีผลจริงทันทีที่การสำรองข้อมูลจบ ถ้าเอาติ๊กออก ค่าใหม่จะถูกบันทึกไว้ แต่พ็อดที่รันอยู่ยังใช้เวอร์ชันเดิมจนกว่าจะรีสตาร์ทครั้งถัดไป เพราะพ็อดของเซิร์ฟที่รันอยู่จะถูกแทนที่ก็ต่อเมื่อมีการรีสตาร์ทจริงเท่านั้น ส่วนเซิร์ฟที่หยุดอยู่ ช่องนี้ไม่มีผลอะไร เพราะเวอร์ชันใหม่คือสิ่งที่จะบูตในครั้งถัดไปอยู่แล้ว
ส่งคำขอแล้วรอแถบแจ้งการสำรองข้อมูล
ปุ่มส่งจะกดไม่ได้จนกว่าจะมีอะไรเปลี่ยนจริง ๆ และช่องรับทราบทุกช่องที่โผล่ขึ้นมาถูกติ๊กครบ หลังส่งแล้ว แถบบนการ์ดคือตัวบอกความคืบหน้า เมื่อแถบหายไป การ์ดจะแสดงซอฟต์แวร์และเวอร์ชันใหม่
การย้อนเวอร์ชันคือทิศทางที่ทำโลกพัง
ขึ้นเวอร์ชันใหม่เป็นเรื่องปกติ แต่การย้อนลงคือทิศที่จบด้วยเซิร์ฟบูตไม่ขึ้น และหน้าต่างพูดตรง ๆ ว่า Minecraft โหลดโลกที่เซฟด้วยเวอร์ชันใหม่กว่าไม่ได้ เซิร์ฟจะเปิดไม่ติดจนกว่าจะเปลี่ยนกลับหรือกู้จากแบ็คอัพ ไม่มีวิธีซ่อม ไม่มีตัวแปลง และแก้จากคอนโซลไม่ได้ เพราะไฟล์โลกใหม่กว่าเกมที่กำลังอ่านมันอยู่ เท่านั้นเอง
หน้าต่างจะขึ้นคำเตือนนี้ทุกครั้งที่พิสูจน์ได้ว่าเวอร์ชันปลายทางอยู่ต่ำกว่าเวอร์ชันที่ปักไว้ในรายการเดียวกัน และจะขึ้นคำเตือนแบบอ่อนกว่าเมื่อพิสูจน์ทิศทางไม่ได้ เช่นเซิร์ฟคุณตั้งเป็นล่าสุดอยู่ หรือเวอร์ชันที่ปักไว้ถูกถอดออกจากรายการที่ใช้เทียบไปแล้ว หรือคุณสลับไปซอฟต์แวร์ที่บิลด์ใหม่สุดยังเก่ากว่าเวอร์ชันปัจจุบันของคุณ ถ้อยคำที่อ่อนลงนั้นไม่ใช่การพูดกำกวม แต่คือการที่ระบบไม่ยอมเดาแทนโลกของคุณ
ถ้าจะย้อนเวอร์ชันโดยตั้งใจ เพราะม็อดที่ต้องใช้ไม่เคยอัปเดตตาม ก็ทำได้ แต่ต้องรู้ว่าทางกลับคือแบ็คอัพ และควรกดสำรองเองไว้หนึ่งชุดก่อน เพื่อไม่ให้ภาพนั้นไปแย่งที่ในกองอัตโนมัติ
เปลี่ยนตระกูลซอฟต์แวร์แล้วม็อดที่ติดตั้งไว้จะถูกล้าง
ซอฟต์แวร์เซิร์ฟเวอร์แบ่งเป็นตระกูล ตระกูลปลั๊กอิน (Paper, Purpur, Leaf, Folia, Spigot, Bukkit) ตระกูล Fabric (Fabric, Quilt) และตระกูล Forge (Forge, NeoForge และพวกลูกผสม) ส่วน Vanilla ล้วนไม่ได้อยู่ในตระกูลไหนเลย การย้ายเข้าไปหามันจึงนับเป็นการออกจากตระกูลที่คุณอยู่
ย้ายภายในตระกูลเดียวกัน รายการที่ติดตั้งไว้ยังอยู่ครบ แต่ข้ามตระกูลแล้วเก็บไว้ไม่ได้ เพราะปลั๊กอินโหลดบนตัวโหลดม็อดไม่ขึ้น และม็อดก็โหลดบนเซิร์ฟปลั๊กอินไม่ขึ้น มันคือไฟล์ของซอฟต์แวร์คนละตัวกันโดยสิ้นเชิง ระบบจึงล้างรายการทิ้งไปพร้อมกับตอนที่เปลี่ยนจริง และถ้าคุณยังมีม็อดที่ติดตั้งเป็นไฟล์อยู่ คำขอจะไม่ถูกส่งจนกว่าจะติ๊กช่องรับทราบว่าม็อดจะถูกลบออก สังเกตความต่างของสองสิ่งนี้ กล่องเตือนเรื่องข้ามตระกูลขึ้นทุกครั้งที่ข้าม ส่วนช่องรับทราบขึ้นเฉพาะตอนที่มีของให้เสียจริง ๆ
จดรายการที่ติดตั้งไว้เก็บไว้ก่อนข้ามด้วย เพราะรายการนั้นถูกล้าง ไม่ได้ถูกเก็บเข้าคลังให้อ่านย้อนหลังได้
ตัวเลือกล่าสุด กับการปักเวอร์ชันไว้
ตัวเลือก "ล่าสุด (อัปเดตอัตโนมัติ)" ถูกเก็บเป็นค่าสัญลักษณ์ ไม่ใช่ตัวเลข และรุ่นใหม่ที่สุดของซอฟต์แวร์นั้นจะถูกตัดสินตอนเซิร์ฟสตาร์ท ตามมาสองข้อ ข้อแรกเซิร์ฟที่ตั้งเป็นล่าสุดจะไม่ขึ้นป้ายแจ้งอัปเดตเลย เพราะมันตามหลังใครไม่ได้อยู่แล้ว ข้อสองการรีสตาร์ทธรรมดา รวมถึงรีสตาร์ทด้วยเหตุอื่นที่ไม่เกี่ยวกัน ก็ทำให้เซิร์ฟกระโดดไปรุ่นที่เพิ่งออกเมื่อวานได้
บนเซิร์ฟ Vanilla เรื่องนี้ไม่มีปัญหา แต่บนเซิร์ฟที่ลงม็อดไว้คืออันตรายจริง เพราะม็อดและปลั๊กอินถูกสร้างมาให้ตรงเวอร์ชัน และรุ่นใหญ่ที่ออกใหม่มักทิ้งของพวกนี้ไว้ข้างหลังเป็นสัปดาห์ ๆ เซิร์ฟที่มีโค้ดจากภายนอกอยู่จึงควรปักเวอร์ชันไว้ แล้วค่อยขยับเมื่อพร้อม
เซิร์ฟที่ปักเวอร์ชันไว้จะเทียบตัวเองกับรายการของซอฟต์แวร์ตัวเอง แล้วขึ้นป้ายแจ้งอัปเดตเมื่อซอฟต์แวร์นั้นปล่อยรุ่นใหม่กว่า แต่จะเทียบก็ต่อเมื่อรายการนั้นยังมีเวอร์ชันที่คุณปักไว้อยู่ เวอร์ชันที่เก่าจนถูกถอดออกจากรายการไปแล้วจึงเงียบ แทนที่จะเตือนมั่ว ณ วันที่ 14 สิงหาคม 2026 รุ่นใหม่ที่สุดของ Minecraft ฉบับ Java คือ 26.2 และรายการฝั่ง Vanilla ของตัวเลือกเวอร์ชันก็มาจากแมนิเฟสต์ของ Mojang เอง
Java runtime ที่ปักไว้จะติดไปกับเซิร์ฟด้วย
ถ้าคุณเคยตั้งช่อง "Java runtime" ในการ์ดตั้งค่าเองด้วยมือ ค่านั้นจะอยู่ที่เดิมไม่ขยับตามการเปลี่ยนเวอร์ชัน นี่คือกับดักที่ทำให้เซิร์ฟไปติดวนบูตซ้ำ ๆ เพราะ Java เก่าเกินกว่าเวอร์ชันที่เพิ่งย้ายไป รุ่นใหม่ล่าสุดของเกมต้องการ Java 25 เซิร์ฟที่เคยปักไว้ที่ java8 เพื่อแพ็กยุค 1.12 จึงบูตบนรุ่นใหม่ไม่ขึ้น
หน้าต่างเปลี่ยนเวอร์ชันจะตรวจเรื่องนี้เทียบกับเวอร์ชันและซอฟต์แวร์ปลายทาง แล้วขึ้นคำเตือนแยกอีกกล่อง ระบุชื่อ runtime ที่คุณปักไว้ พร้อมช่องรับทราบของตัวเอง มันเป็นคำเตือน ไม่ใช่การบล็อก ไม่มีอะไรห้ามคุณเปลี่ยน และช่องเลือก runtime ในการ์ดตั้งค่าไม่เคยถูกปิดตามสถานะเซิร์ฟ ก็เพื่อให้คุณปีนกลับออกมาได้ตอนเซิร์ฟล่มพอดี ทางแก้เกือบทุกกรณีคือตั้งช่องนั้นกลับไปเป็น Auto รายละเอียดทั้งหมดอยู่ที่
คำขอที่ระบบจะปฏิเสธตรง ๆ
บางกรณีไม่ได้เตือน แต่ปฏิเสธไปเลย
| สถานการณ์ | เหตุผล |
|---|
| ผูกม็อดแพ็กอยู่ | ตัวแพ็กเป็นคนกำหนดทั้งซอฟต์แวร์และเวอร์ชัน |
| ถอดแพ็กไปแล้วแต่ชนิดซอฟต์แวร์ยังเป็นชนิดของแพ็ก | ไม่มีรายการเวอร์ชันรองรับอยู่เบื้องหลัง |
| เปลี่ยนซอฟต์แวร์บนเซิร์ฟ Bedrock | Bedrock ไม่มีแกนซอฟต์แวร์ |
| ไม่ได้เปลี่ยนอะไรเลย | คำขอต้องมีอย่างน้อยหนึ่งแกนที่ขยับ |
| มีคำขอเปลี่ยนเวอร์ชันค้างอยู่ | สายการสำรองข้อมูลนิรภัยเดินได้ทีละหนึ่ง |
| มีคำขอรีเซ็ตโลกค้างอยู่ | กติกาเดียวกัน แค่มาจากอีกฝั่ง |
| เวอร์ชันที่ซอฟต์แวร์นั้นไม่เคยบิลด์ | ตัวเลือกจะไม่มีให้เลือก และฝั่ง API ก็ปฏิเสธซ้ำ |
ถ้าเวอร์ชันใหม่บูตไม่ขึ้น
ไล่ตามลำดับนี้ ดีกว่ากดรีสตาร์ทซ้ำ ๆ แล้วหวัง
- อ่านคอนโซล โลกที่ใหม่เกินไปกับ Java ที่เก่าเกินไปพังคนละแบบและมองออก บรรทัดแรก ๆ หลังพยายามบูตมักบอกอยู่แล้วว่าเป็นแบบไหน
- ดูช่อง "Java runtime" ในการ์ดตั้งค่า ถ้าเป็นอย่างอื่นที่ไม่ใช่ Auto ให้ตั้งกลับเป็น Auto แล้วสตาร์ทใหม่ ช่องนี้แก้ได้แม้ตอนเซิร์ฟกำลังวนบูตซ้ำอยู่
- เปลี่ยนเวอร์ชันกลับ การกลับขึ้นไปที่เดิมคือทางกู้ที่เร็วที่สุดของกรณีย้อนเวอร์ชัน และระบบก็สำรองข้อมูลให้อีกชุดระหว่างทางอยู่ดี
- กู้จากแท็บ "แบ็คอัพ" แบ็คอัพนิรภัยที่การเปลี่ยนรอบนั้นทำไว้ให้รออยู่ตรงนั้น กู้แล้วโลกจะกลับไปเป็นก่อนเปลี่ยน แลกกับทุกอย่างที่สร้างหลังจากนั้น
อ่านต่อ
- — Minecraft แต่ละเวอร์ชันต้องการ Java รุ่นไหน และโหมด Auto เลือกยังไง
- — การ์ดตั้งค่าที่ช่อง Java runtime อยู่
- — สิ่งเดียวที่อยู่ในไฟล์โลก ไม่ได้อยู่ในฐานข้อมูลของเรา
- — งานเดียวกันนี้หน้าตาเป็นยังไงถ้าไม่มีแผงควบคุม