คำสั่งไม่ทำงาน แก้ยังไง

เกมบอกอยู่แล้วว่าติดตรงไหน แค่บอกเป็นภาษาอังกฤษและสั้นมากจนดูเหมือนไม่ได้บอกอะไร หน้านี้แปลข้อความที่เจอบ่อยและบอกว่าแต่ละแบบมักมาจากอะไร

เช็คสามอย่างนี้ก่อน

ปัญหาส่วนใหญ่จบตรงนี้ ก่อนจะไปไล่ดูไวยากรณ์ทีละตัวอักษร

  1. เปิด cheats แล้วหรือยัง — ถ้ายัง คำสั่งเกือบทั้งหมดจะใช้ไม่ได้เลย ดูวิธีเปิด
  2. เอดิชันตรงกันไหม — คำสั่งจากคู่มือ Java ส่วนใหญ่ใช้บน Bedrock ไม่ได้ตรงๆ และกลับกัน
  3. เวอร์ชันตรงกันไหม — ไวยากรณ์ของไอเทมเปลี่ยนไปสองครั้งใหญ่ คำสั่งจากคลิปเก่าจึงใช้ไม่ได้แม้จะเป็น Java เหมือนกัน อ่านรายละเอียด

ข้อความที่เกมขึ้นให้ แปลว่าอะไร

ข้อความ แปลว่า มักมาจาก
Unknown or incomplete command ไม่รู้จักคำสั่งนี้ หรือพิมพ์ยังไม่ครบ สะกดชื่อคำสั่งผิด หรือคำสั่งนั้นไม่มีในเอดิชันนี้
Expected whitespace to end one argument ตรงนี้ควรจบพารามิเตอร์แล้ว แต่ยังมีตัวอักษรต่อ ลืมเว้นวรรค หรือมีวงเล็บ/เครื่องหมายคำพูดเกินมาหนึ่งตัว
Incorrect argument for command ค่าที่ใส่ผิดชนิด ใส่ตัวอักษรในช่องที่ต้องการตัวเลข หรือใส่รหัสไอเทมที่ไม่มีจริง
No entity was found ไม่มีเป้าหมายไหนตรงกับที่ระบุ เงื่อนไขในวงเล็บเหลี่ยมแคบเกินไป หรือไม่มีม็อบชนิดนั้นอยู่ใกล้
You do not have permission to use this command ไม่มีสิทธิ์ใช้คำสั่งนี้ ยังไม่ได้เปิด cheats หรือไม่ได้เป็น operator บนเซิร์ฟเวอร์
That position is not loaded พื้นที่ตรงนั้นยังไม่ได้ถูกโหลด พิกัดอยู่ไกลเกินไปจากผู้เล่นทุกคน

รันผ่านแต่ไม่มีอะไรเกิดขึ้น

กรณีนี้ยากกว่า เพราะเกมไม่ได้บอกอะไรเลย แปลว่าคำสั่งถูกไวยากรณ์ แต่ไปทำงานกับ "ไม่มีใคร" หรือ "ผิดที่"

น่าจะเป็นเพราะวิธีพิสูจน์
ตัวเลือกเป้าหมายไม่โดนใคร เปลี่ยนคำสั่งเป็น say ชั่วคราวโดยใช้เป้าหมายเดิม ถ้าเงียบแปลว่าเป้าหมายไม่มีจริง
พิกัดอ้างอิงผิดจุด ลองใส่พิกัดตัวเลขตายตัวแทน ~ ถ้าใช้ได้แสดงว่าปัญหาอยู่ที่จุดอ้างอิง
คอมมานด์บล็อกยังไม่ได้ทำงานเลย ใส่ say ทดสอบ ไว้ในบล็อกก่อน ถ้าไม่มีข้อความขึ้น แปลว่าปัญหาอยู่ที่การตั้งค่าบล็อก ไม่ใช่ที่คำสั่ง
เงื่อนไข if ไม่เป็นจริง ถอดส่วน if ออกชั่วคราว ถ้าคำสั่งทำงาน แปลว่าเงื่อนไขคือตัวปัญหา

วิธีไล่หาสาเหตุอย่างเป็นระบบ

แทนที่จะจ้องคำสั่งยาวๆ ทั้งบรรทัด ให้ตัดออกทีละส่วนจนกว่าจะเหลือส่วนที่สั้นที่สุดที่ยังพัง วิธีนี้หาต้นเหตุได้เร็วกว่ามาก

  1. ลองคำสั่งแบบสั้นที่สุดก่อน เช่น /give @s minecraft:stone 1 ถ้าอันนี้ยังไม่ผ่าน ปัญหาไม่ได้อยู่ที่ตัวเลือกขั้นสูง
  2. ใส่ส่วนที่ตัดออกกลับเข้าไปทีละส่วน แล้วรันทุกครั้ง
  3. ส่วนที่ใส่กลับแล้วพังทันที คือส่วนที่มีปัญหา
  4. เอาส่วนนั้นมาสร้างใหม่ด้วยเครื่องมือของเรา แล้วเทียบกับที่พิมพ์เอง

ในแชทของ Java คำสั่งจะเปลี่ยนสีขณะพิมพ์ ส่วนที่กลายเป็นสีแดงคือจุดที่เกมอ่านไม่เข้าใจ ใช้เป็นตัวชี้ตำแหน่งได้เลยโดยไม่ต้องกด Enter

ยังแก้ไม่ได้

ถ้าคำสั่งที่เครื่องมือของเราสร้างให้ใช้ไม่ได้จริงในเกม นั่นคือข้อผิดพลาดของเรา ไม่ใช่ของคุณ ช่วยแจ้งเข้ามาพร้อมบอกเอดิชันกับเวอร์ชันที่ใช้ เราจะได้ตามแก้ได้ตรงจุด

คู่มืออื่นที่น่าอ่านต่อ

  • พื้นฐานคำสั่ง Minecraft — เริ่มจากศูนย์: เปิด cheats ยังไง พิมพ์คำสั่งที่ไหนได้บ้าง และรู้จักตัวเลือกเป้าหมายกับพิกัดแบบพอใช้งานได้
  • ตัวเลือกเป้าหมายแบบละเอียด — เจาะลึกเงื่อนไขในวงเล็บเหลี่ยม ตั้งแต่ type และ distance ไปจนถึง limit กับ sort และวิธีเช็คว่าทำไมคำสั่งไม่โดนใครเลย
  • พิกัด: ตัวเลข, ~ และ ^ — ทำไม ~ กับ ^ ถึงผสมกันไม่ได้ ทำไมบล็อกไปโผล่ผิดที่ และวิธีเลือกใช้พิกัดแต่ละแบบให้ถูกงาน
  • คอมมานด์บล็อก — เอาคำสั่งที่สร้างไว้ไปรันอัตโนมัติ ทั้งแบบกดครั้งเดียว แบบวนซ้ำ และแบบต่อกันเป็นลูกโซ่
  • ทำไมคำสั่ง give ของเวอร์ชันเก่าใช้ไม่ได้ — NBT แบบเก่า, component แบบ 1.20.5 และ component แบบ 1.21.5 ต่างกันตรงไหน เทียบให้ดูจากคำสั่งที่สร้างจริง
  • ระบบคะแนน scoreboard เบื้องต้น — สร้าง objective ให้เกมนับคะแนนเอง หรือนับเองจากคอมมานด์บล็อก แล้วเอาคะแนนไปใช้เป็นเงื่อนไขของคำสั่งอื่น
  • คำสั่ง execute — คำสั่งที่ทรงพลังที่สุดใน Minecraft อธิบายทีละส่วน ว่า as กับ at ต่างกันยังไง และทำไมสลับลำดับแล้วผลเปลี่ยน