คู่มือ
วิธีทำปลั๊กอินเมนู GUI ของ Minecraft
อัปเดตเมื่อ 18 ตุลาคม 2569
เมนูของเซิร์ฟเวอร์ (วาร์ป ร้านค้า คิท การตั้งค่า) คืออินเวนทอรีแบบหีบที่ปลั๊กอินเปิดและควบคุม แต่ละช่องมีไอเทมที่ทำหน้าที่เป็นปุ่ม ดูเหมือนง่าย แต่เมนูที่ไม่ยกเลิกการคลิกทุกแบบจะทำให้ผู้เล่นหยิบปุ่มกลับบ้านไปได้ คู่มือนี้อธิบายว่าเมนูทำงานอย่างไร และจะสร้างและทดสอบเมนูได้อย่างไร
เริ่มจากตัวอย่างนี้
สร้างสิ่งนี้ด้วย Codexeทีละขั้นตอน
1.ร่างเมนู
เมนูแบบหีบมี 1 ถึง 6 แถว แถวละ 9 ช่อง (9 ถึง 54) ระบุว่าไอเทมไหนอยู่ช่องไหน แต่ละคลิกทำอะไร และช่องไหนเป็นแค่ของตกแต่งอย่างบานกระจก
2.สร้างอินเวนทอรีพร้อม holder
เปิดด้วย
Bukkit.createInventory(holder, size, title)โดยใช้คลาสInventoryHolderของคุณเอง holder คือสิ่งที่ทำให้ปลั๊กอินรู้ว่าการคลิกเกิดขึ้นในเมนูของมัน ไม่ใช่ในหีบธรรมดา3.จัดการการคลิก
ใน
InventoryClickEventให้เช็ก holder ยกเลิกอีเวนต์ แล้วจึงทำแอ็กชันของช่องนั้น ปิดเมนูหรือรีเฟรชหลังทำแอ็กชันเสร็จ4.บล็อกทุกวิธีอื่นในการย้ายไอเทม
ยกเลิก
InventoryDragEventด้วย และจัดการ shift-click ปุ่มตัวเลข และการคลิกในอินเวนทอรีของผู้เล่นเองระหว่างที่เมนูเปิดอยู่5.เพิ่มหลายหน้าถ้ารายการยาว
สำหรับวาร์ปหรือไอเทมในร้านค้าที่ใส่ไม่พอ ให้กันแถวล่างสุดไว้สำหรับปุ่มก่อนหน้า ถัดไป และปิด
6.เปิดจากคำสั่ง
เช่น
/warpsหรือเปิดจากไอเทมหรือ NPC ใส่ permission ให้คำสั่งถ้าเมนูไม่ได้มีไว้สำหรับทุกคน7.บิลด์แล้วคลิกไล่ดูทั้งหมด
ให้ Codexe คอมไพล์ปลั๊กอิน เข้าเซิร์ฟเวอร์ทดสอบ แล้วคลิกทุกปุ่ม ผู้เล่นทดสอบก็เปิดเมนูและคลิกช่องต่างๆ แทนคุณได้
กฎที่ทำให้เมนูปลอดภัย
- ระบุเมนูจากholder ห้ามใช้ชื่อเมนู: หีบที่ถูกเปลี่ยนชื่อใบไหนก็ลอกชื่อได้
- ยกเลิกการคลิกก่อนทำอย่างอื่น เพื่อที่ข้อผิดพลาดในแอ็กชันจะไม่ทิ้งไอเทมไว้ที่เคอร์เซอร์ของผู้เล่น
- ยกเลิกการลากและshift-clickจากอินเวนทอรีของผู้เล่น ไม่อย่างนั้นไอเทมจะถูกดันเข้าไปในเมนูได้
- อย่าเชื่อไอเทมในช่อง: หาแอ็กชันจากหมายเลขช่องหรือจากแท็กบนไอเทม
- ย้ายงานที่ช้า (อ่านฐานข้อมูล คำขอเว็บ) ออกจากเธรดหลัก แล้วอัปเดตเมนูเมื่อเสร็จ
เมนูจากไฟล์คอนฟิก
เจ้าของเซิร์ฟเวอร์ชอบเปลี่ยนเมนูโดยไม่ต้องบิลด์ใหม่ ขอให้กำหนดแต่ละเมนูในไฟล์คอนฟิก โดยมีขนาด ชื่อเมนู และสำหรับแต่ละปุ่มมีช่อง วัสดุ ชื่อ lore และแอ็กชัน:
| คีย์ | ตัวอย่าง | หน้าที่ |
|---|---|---|
size | 27 | จำนวนช่อง ต้องเป็นผลคูณของ 9 |
slot | 13 | ตำแหน่งของปุ่ม นับจาก 0 |
material | ENDER_PEARL | ไอเทมที่แสดง |
action | warp:spawn | สิ่งที่คลิกทำ: วาร์ป คำสั่ง หรือเมนูอื่น |
ตัวอย่างคำอธิบาย
"ปลั๊กอิน Paper 1.21.4 ชื่อ WarpMenu คำสั่ง /warps เปิดเมนู 6 แถว มีหนึ่งปุ่มต่อหนึ่งวาร์ป หน้าละ 45 ปุ่ม พร้อมปุ่มก่อนหน้า ถัดไป และปิดที่แถวล่างสุด แอดมินเพิ่มวาร์ปด้วย /setwarp <name> <material> และลบด้วย /delwarp คลิกวาร์ปแล้วจะเทเลพอร์ตหลังรอ 3 วินาที ซึ่งยกเลิกถ้าขยับตัว ผู้เล่นหยิบหรือย้ายไอเทมใดๆ ในเมนูไม่ได้ วาร์ปบันทึกใน warps.yml ชื่อเมนู ชื่อปุ่ม และข้อความอยู่ใน config.yml"
ทดสอบเมนูด้วยผู้เล่นทดสอบ
ผู้เล่นทดสอบของ Codexe เปิดเมนูและคลิกช่องได้ จากนั้นเช็กว่ามีเมนูเปิดขึ้น มีข้อความแสดง หรือได้รับไอเทม เพิ่มการทดสอบด้วยคำพูดของคุณเอง เช่น "ผู้เล่นปกติรัน /warps แล้วคลิกช่อง 0 และเห็นข้อความเทเลพอร์ต" แล้วมันจะรันซ้ำทุกครั้งที่ Codexe ส่งการเปลี่ยนแปลงมา
คำถาม
ใช้กับ 1.8 ได้ไหม?
เมนูแบบหีบมีในทุกเวอร์ชันตั้งแต่ 1.8 API ต่างกันในรายละเอียด (ชื่อวัสดุ ชื่อเมนู) จึงควรระบุเวอร์ชันในคำขอ
ทำเมนูด้วย Skript แทนได้ไหม?
ได้ ด้วยส่วนเสริม skript-gui ซึ่งติดตั้งไว้บนเซิร์ฟเวอร์ทดสอบ Skript ของ Codexe แล้ว สำหรับเมนูขนาดใหญ่หรือใช้งานหนัก ปลั๊กอินจะดีกว่า
เมนูมีหน้าตาเป็นเท็กซ์เจอร์แบบกำหนดเองได้ไหม?
ได้เฉพาะเมื่อใช้รีซอร์สแพ็กที่เปลี่ยนไอเทมหรือพื้นหลังอินเวนทอรี ฝั่งปลั๊กอินยังเหมือนเดิม: ช่อง ไอเทม และการคลิก
สร้างเมนูของคุณ
พรอมต์นี้จะเปิดขึ้นพร้อมส่งได้ทันที:
“ปลั๊กอิน Paper 1.21.4 ชื่อ WarpMenu: /warps เปิดเมนู 6 แถว หนึ่งปุ่มต่อหนึ่งวาร์ป หน้าละ 45 ปุ่ม ปุ่มก่อนหน้า/ถัดไป/ปิดที่แถวล่างสุด, /setwarp พร้อมชื่อและวัสดุ และ /delwarp สำหรับแอดมิน, รอเทเลพอร์ต 3 วินาทีและยกเลิกถ้าขยับตัว, หยิบหรือย้ายไอเทมไม่ได้, วาร์ปบันทึกใน warps.yml, ชื่อเมนูและข้อความอยู่ใน config.yml”
สร้างสิ่งนี้ด้วย Codexe