MCTOOLBOX
MC ToolboxMC TOOLBOX
โปรโตคอลเซิร์ฟเวอร์ Java Edition

เครื่องมือสำรวจ API การจัดการเซิร์ฟเวอร์ Minecraft

เรียกดูเมธอด JSON-RPC แบบ vanilla สร้างพารามิเตอร์ตามตำแหน่ง ตรวจสอบสคีมาการตอบกลับ และเตรียมการเชื่อมต่อ WebSocket ที่ปลอดภัยโดยไม่ต้องเปิดเผยความลับของเซิร์ฟเวอร์จริง

68
เมธอด
17
การแจ้งเตือน
15
สคีมา
3.0
โปรโตคอลใน 26.2
เมธอดที่เรียกได้อ่านอย่างเดียว1.21.9+
minecraft:server/status

อ่านสถานะการเริ่มต้น ผู้เล่นออนไลน์ และเวอร์ชัน Minecraft ที่กำลังทำงานอยู่

พารามิเตอร์

เมธอดนี้ไม่มีพารามิเตอร์

ผลลัพธ์

ประเภทผลลัพธ์
Server State
คำขอ JSON-RPC
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "minecraft:server/status"
}
ตัวอย่างการตอบกลับ
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "started": true,
    "players": [
      {
        "id": "853c80ef-3c37-49fd-aa49-938b674adae6",
        "name": "jeb_"
      }
    ],
    "version": {
      "name": "26.2",
      "protocol": 774
    }
  }
}

ตัวสร้างการเชื่อมต่อและ server.properties

ใช้พอร์ตคงที่สำหรับเครื่องมือและเว้นช่องความลับว่างไว้หนึ่งครั้งเพื่อให้ Minecraft สร้างค่า 40 ตัวอักษรที่ถูกต้อง

หมายเหตุด้านความปลอดภัย: ห้ามวางความลับการจัดการจริงลงในเว็บไซต์สาธารณะเด็ดขาด ผูกกับ localhost หรือเครือข่ายส่วนตัว ใช้ไฟร์วอลล์ และใช้ TLS ข้ามเครือข่ายที่ไม่น่าเชื่อถือ
server.properties
management-server-enabled=true
management-server-host=localhost
management-server-port=25585
management-server-secret=
management-server-tls-enabled=true
management-server-tls-keystore=management-server.p12
management-server-allowed-origins=http://localhost:3000
การเชื่อมต่อเทอร์มินัล
wscat -c wss://localhost:25585 -s minecraft-v1 -H "Authorization: Bearer YOUR_40_CHARACTER_SECRET"
ตัวอย่าง Browser WebSocket
const socket = new WebSocket('wss://localhost:25585', [
  'minecraft-v1',
  'YOUR_40_CHARACTER_SECRET'
]);

socket.addEventListener('open', () => {
  socket.send("{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"minecraft:server/status\"}");
});

socket.addEventListener('message', ({ data }) => {
  console.log(JSON.parse(data));
});
คู่มือโปรโตคอล

Minecraft Server Management Protocol คืออะไร?

Server Management Protocol เป็น API ของเซิร์ฟเวอร์ Java Edition โดยเฉพาะที่เปิดตัวในเวอร์ชัน 1.21.9 ซึ่งส่งข้อความ JSON-RPC 2.0 ผ่าน WebSocket ทำให้แดชบอร์ดและระบบอัตโนมัติสามารถทำงานกับผู้เล่นที่ระบุประเภท การแบน การตั้งค่า กฎของเกม และสถานะเซิร์ฟเวอร์ แทนที่จะต้องแยกวิเคราะห์ข้อความคอนโซล

Minecraft 26.2 ใช้โปรโตคอลเวอร์ชัน 3.0 และสามารถเปิดเผย rpc.discover ก่อนที่เซิร์ฟเวอร์เกมจะเริ่มทำงานอย่างสมบูรณ์ การค้นหาเป็นวิธีที่ปลอดภัยที่สุดสำหรับไคลเอนต์ในการเรียนรู้เมธอดและการแจ้งเตือนที่เซิร์ฟเวอร์ที่เข้าถึงรองรับ

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

คำแนะนำการปฏิบัติงาน

Management API เทียบกับ RCON

RCON ส่งคำสั่งคอนโซลและส่งคืนข้อความที่ไม่มีโครงสร้าง Management API ส่งคืน JSON ที่ระบุประเภทและสามารถส่งเหตุการณ์การเข้าร่วม ออก บันทึก กฎของเกม และสถานะ ซึ่งทำให้เหมาะสำหรับแผงควบคุม การตรวจสอบ และบอท

API นี้สำหรับ Java Edition เท่านั้นและถูกปิดใช้งานโดยค่าเริ่มต้น ไคลเอนต์ที่ใช้งานจริงควรตรวจสอบสคีมาที่ค้นพบ จัดการออบเจกต์ข้อผิดพลาด JSON-RPC มาตรฐาน เชื่อมต่อใหม่ด้วย backoff และถือว่าการเขียน stop, clear, set, ban, kick และ operator เป็นการกระทำที่มีสิทธิ์

พอร์ต 0 ขอให้ Minecraft เลือกพอร์ตแบบสุ่ม ซึ่งไม่ได้ปิดใช้งานบริการ TLS ถูกเปิดใช้งานโดยค่าเริ่มต้น และไคลเอนต์เบราว์เซอร์ยังต้องการ Origin ที่อนุญาตพร้อมกับ WebSocket subprotocol minecraft-v1

คำถามที่พบบ่อย

หน้านี้สามารถเชื่อมต่อกับเซิร์ฟเวอร์ Minecraft จริงของฉันได้หรือไม่?

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

ทำไมพารามิเตอร์ถึงแสดงเป็น JSON array?

เมธอดของ Minecraft API ใช้พารามิเตอร์ JSON-RPC แบบตำแหน่ง แม้แต่เมธอดที่มีอาร์กิวเมนต์เชิงตรรกะเพียงตัวเดียวก็ยังส่งค่านั้นภายในอาร์เรย์ params

โปรโตคอลนี้ใช้งานได้กับ Bedrock Edition หรือไม่?

ไม่ Minecraft Server Management Protocol เป็นคุณสมบัติของเซิร์ฟเวอร์ Java Edition โดยเฉพาะในปัจจุบัน

ฉันควรฮาร์ดโค้ดรายการเมธอดในแผงเซิร์ฟเวอร์หรือไม่?

ใช้ rpc.discover ในขณะรันไทม์เมื่อเป็นไปได้ โปรโตคอลได้เปลี่ยนแปลงไปแล้วในเวอร์ชัน 1.21.9, 1.21.11 และ 26.2