MC Toolkit

คู่มือ / คำสั่งและข้อมูล

หน้าจอไดอะล็อก: สร้างเมนูจริงโดยไม่ต้องใช้ม็อด

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

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

ไดอะล็อกคืออะไร

ไฟล์ JSON ในดาต้าแพ็กที่อธิบายหน้าต่าง:

data/<namespace>/dialog/welcome.json
{
  "type": "minecraft:notice",
  "title": { "text": "Welcome" },
  "body": [{ "type": "minecraft:plain_message",
             "contents": { "text": "Pick a class to begin." } }],
  "action": { "label": { "text": "Continue" } }
}

จากนั้น /dialog show @p my_pack:welcome

ประเภทต่าง ๆ

ประเภทรูปร่าง
noticeข้อความพร้อมปุ่มปิดหนึ่งปุ่ม
confirmationใช่ / ไม่ใช่ แต่ละปุ่มมีแอ็กชันของตัวเอง
multi_actionตารางปุ่ม
server_linksรายการลิงก์ที่มีมาให้ในตัว
dialog_listเมนูที่เปิดไดอะล็อกอื่น

multi_action คือตัวหลักที่ใช้งานจริง — มันคือตัวเลือกคลาส ร้านค้า รายการวาร์ป

ปุ่มรันคำสั่ง

{ "label": { "text": "Warp to spawn" },
  "action": { "type": "minecraft:run_command", "command": "/spawn" } }

เหมือนกับ clickEvent ในแชท อันนี้รัน ในนามของผู้เล่นที่คลิก ที่ระดับสิทธิ์ของพวกเขา ปุ่มที่เรียกคำสั่งสำหรับ op เท่านั้นจะไม่ทำอะไรให้ผู้เล่นธรรมดา วิธีแก้แบบมาตรฐานคือใช้ objective trigger: ปุ่มรัน /trigger warp set 1 และฟังก์ชันที่ทำงานทุกติ๊กทำส่วนที่ต้องใช้สิทธิ์พิเศษ

ช่องกรอกข้อมูล

"inputs": [
  { "type": "minecraft:text", "key": "name", "label": { "text": "Your name" }, "max_length": 16 },
  { "type": "minecraft:boolean", "key": "pvp", "label": { "text": "Enable PvP" } },
  { "type": "minecraft:single_option", "key": "class", "label": { "text": "Class" }, "options": [
      { "id": "mage", "display": { "text": "Mage" } },
      { "id": "rogue", "display": { "text": "Rogue" } } ] }
]

ค่าต่าง ๆ ส่งถึงคำสั่งผ่านปุ่มที่มีแอ็กชันเป็น minecraft:dynamic/run_command: template ของมันรับ $(key) สำหรับแต่ละช่องกรอก ปุ่ม run_command ธรรมดาจะไม่ได้รับอะไรเลย

"action": {
  "type": "minecraft:dynamic/run_command",
  "template": "function my_pack:join {name:'$(name)',class:'$(class)'}"
}

ฟังก์ชันที่มันเรียกก็จะเป็นแมโคร:

$say Welcome $(name), you chose $(class)

คำนำหน้า $ ที่ต้นบรรทัด และ $(key) สำหรับการแทนค่า ที่ทั้งสองฝั่ง นั่นคือกลไกการผูกทั้งหมด และเป็นสิ่งที่ทำให้ไดอะล็อกมีประโยชน์จริง ๆ ไม่ใช่แค่ของประดับ

ทำไมถึงดีกว่าการแฮ็กด้วยหนังสือ

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

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

สไตล์เวย์พอยต์

เครื่องมือเดียวกันนี้ครอบคลุมเวย์พอยต์บนแถบระบุตำแหน่ง ซึ่งสไตล์ของมันเป็นแอสเซ็ตของรีซอร์สแพ็ก (assets/<namespace>/waypoint_style/) ที่ควบคุมสไปรต์และระยะการจางหายของ ผู้เล่น หรือตำแหน่งที่ติดตามอยู่ ส่วนสีตั้งแยกต่างหากด้วย /waypoint modify <target> color มีประโยชน์สำหรับมาร์กเกอร์ทีมที่บอสบาร์จะรบกวนสายตาเกินไป

สร้างหน้าจอไดอะล็อกพร้อมช่องกรอกข้อมูลและปุ่มกด และปรับแต่งสไตล์เวย์พอยต์ได้ที่ Dialog Input & Waypoint Style Builder

ตัวสร้างกล่องข้อความและสไตล์จุดหมาย →

คู่มือเพิ่มเติม

ดูทั้งหมด →