คู่มือ
วิธีทำปลั๊กอินเควสต์ Minecraft
อัปเดตเมื่อ 18 ตุลาคม 2569
เควสต์ให้เหตุผลในการเล่นแก่ผู้เล่น: ฆ่าซอมบี้ 20 ตัว ขุดเหล็ก 64 ชิ้น เอาขนมปัง 10 ก้อนไปให้ชาวบ้าน ปลั๊กอินเควสต์มีสามส่วน: เป้าหมายที่ฟังอีเวนต์ของเกม ความคืบหน้าที่บันทึกไว้สำหรับผู้เล่นทุกคน และรางวัล การกำหนดเควสต์ในไฟล์คอนฟิกช่วยให้คุณเพิ่มเควสต์ใหม่ได้โดยไม่ต้องแตะโค้ด
เปลี่ยนเควสต์และรางวัลให้เป็นของคุณ
สร้างสิ่งนี้ด้วย Codexeทีละขั้นตอน
1.เลือกประเภทเป้าหมาย
เริ่มจากไม่กี่แบบ: ฆ่ามอนสเตอร์ประเภทหนึ่ง ทุบหรือวางบล็อก เก็บไอเทม คราฟต์ ไปถึงสถานที่ คุยกับ NPC เควสต์ทุกเควสต์สร้างจากสิ่งเหล่านี้
2.กำหนดเควสต์ในไฟล์
แต่ละเควสต์ใน
quests.yml: id ชื่อ คำอธิบาย เป้าหมายพร้อมจำนวน รางวัล และเงื่อนไข (ต้องทำเควสต์อื่นก่อน permission หรือเลเวล)3.ติดตามความคืบหน้าของผู้เล่นแต่ละคน
ฟังอีเวนต์ที่อยู่เบื้องหลังแต่ละเป้าหมายแล้วเพิ่มความคืบหน้าให้ผู้เล่น บันทึกลง SQLite หรือไฟล์เพื่อให้อยู่รอดหลังออกจากเกมและรีสตาร์ต
4.แสดงความคืบหน้า
เมนู
/questsแสดงเควสต์ที่กำลังทำและที่ทำเสร็จแล้ว พร้อมข้อความ ไตเติล หรือบอสบาร์เมื่อความคืบหน้าเปลี่ยน5.แจกรางวัล
ไอเทม ค่าประสบการณ์ เงินผ่าน Vault หรือคำสั่งคอนโซลอย่าง
lp user %player% permission set ...สำหรับอย่างอื่น6.บิลด์แล้วทำเควสต์ให้จบในเกม
ให้ Codexe คอมไพล์ เข้าเซิร์ฟเวอร์ทดสอบ รับเควสต์แล้วทำให้เสร็จ จากนั้นรีสตาร์ตแล้วเช็กว่าความคืบหน้าและรางวัลถูกบันทึกไว้
เป้าหมายและอีเวนต์เบื้องหลัง
| เป้าหมาย | เหตุการณ์ | รายละเอียดที่ต้องตัดสินใจ |
|---|---|---|
| ฆ่ามอนสเตอร์ | EntityDeathEvent | นับเฉพาะที่ผู้เล่นฆ่าเอง หรือนับรวมสัตว์เลี้ยงและลูกธนูของผู้เล่นด้วย |
| ทุบบล็อก | BlockBreakEvent | ไม่นับบล็อกที่ผู้เล่นวางเอง ไม่อย่างนั้นผู้เล่นจะวางแล้วทุบบล็อกเดิมซ้ำๆ |
| เก็บไอเทม | เช็กอินเวนทอรีหรืออีเวนต์เก็บของ | จะเอาไอเทมออกไปตอนส่งเควสต์หรือไม่ |
| คราฟต์ไอเทม | CraftItemEvent | คราฟต์ด้วย shift-click จะได้หลายชิ้นพร้อมกัน |
| ไปถึงสถานที่ | PlayerMoveEvent | เช็กเฉพาะตอนผู้เล่นเปลี่ยนบล็อก ไม่ใช่ทุกการขยับ |
| คุยกับ NPC | PlayerInteractEntityEvent | เอนทิตีไหนเป็นผู้ให้เควสต์ |
ผู้ให้เควสต์
ผู้ให้เควสต์ที่ง่ายที่สุดคือคำสั่งหรือเมนู ถ้าเป็นตัวละครในโลก ชาวบ้านหรือ armor stand ที่มีชื่อแบบกำหนดเองและแท็ก PersistentDataContainer ก็ใช้ได้โดยไม่ต้องมีปลั๊กอินอื่น: ปลั๊กอินจะจำได้เมื่อผู้เล่นคลิกขวา ถ้าเซิร์ฟเวอร์ของคุณใช้ปลั๊กอิน NPC อย่าง Citizens อยู่แล้ว ให้ระบุชื่อในคำขอเพื่อให้ปลั๊กอินเชื่อมต่อกับมัน
ตัวอย่างคำอธิบาย
"ปลั๊กอินเควสต์ Paper 1.21.4 ชื่อ Quests ประเภทเป้าหมาย: ฆ่ามอนสเตอร์ ทุบบล็อก (ที่ผู้เล่นไม่ได้วาง) เก็บไอเทม และคุยกับชาวบ้านที่ติดแท็กเป็นผู้ให้เควสต์ เควสต์กำหนดใน quests.yml พร้อมชื่อ เป้าหมาย เควสต์ที่ต้องทำก่อน และรางวัล (ไอเทม ค่าประสบการณ์ เงิน Vault คำสั่งคอนโซล) /quests เปิดเมนูแสดงเควสต์ที่รับได้ ที่กำลังทำ และที่ทำเสร็จแล้ว ความคืบหน้าแสดงที่แอ็กชันบาร์ รับเควสต์พร้อมกันได้สูงสุด 3 เควสต์ เควสต์รายวันรีเซ็ตตอนเที่ยงคืนตามเวลาเซิร์ฟเวอร์ ความคืบหน้าบันทึกใน SQLite"
เควสต์รายวันและเควสต์ที่ทำซ้ำได้
- ระบุว่ารีเซ็ตเมื่อไร: เวลาเดิมทุกวัน หรือ 24 ชั่วโมงหลังจากผู้เล่นทำเสร็จ
- ระบุว่าเควสต์รายวันจะสุ่มให้ผู้เล่นแต่ละคน หรือเหมือนกันสำหรับทุกคน
- เก็บเวลาที่ทำเสร็จครั้งล่าสุด ไม่ใช่แค่แฟล็ก เพื่อให้การรีเซ็ตยังทำงานได้แม้ตอนที่เซิร์ฟเวอร์ปิดอยู่
คำถาม
เควสต์ใช้ PlaceholderAPI ได้ไหม?
ได้ ขอ placeholder อย่างเควสต์ที่กำลังทำและความคืบหน้า เพื่อให้สกอร์บอร์ดและแท็บลิสต์แสดงได้ ระบุชื่อ PlaceholderAPI ในคำขอเพื่อให้ถูกเพิ่มเป็น dependency
เขียนเควสต์ด้วย Skript ได้ไหม?
ระบบเควสต์เล็กๆ ใส่ใน Skript ที่ใช้ตัวแปรได้ ส่วนเป้าหมายหลายประเภท เมนู และการบันทึกความคืบหน้าของผู้เล่นหลายร้อยคน ทำให้เร็วและเป็นระเบียบในปลั๊กอินได้ง่ายกว่า
จะเช็กได้อย่างไรว่าเควสต์ใช้งานได้?
เล่นบนเซิร์ฟเวอร์ทดสอบของ Codexe และเพิ่มการทดสอบด้วยคำพูดของคุณเอง เช่น "ผู้เล่นปกติรัน /quests แล้วเห็นเมนูเปิดขึ้น" การทดสอบจะเช็กข้อความ ไอเทม และเมนู ไม่ได้เช็กมอนสเตอร์หรือบล็อกในโลก
สร้างปลั๊กอินเควสต์ของคุณ
พรอมต์นี้จะเปิดขึ้นพร้อมส่งได้ทันที:
“ปลั๊กอินเควสต์ Paper 1.21.4: ประเภทเป้าหมายคือฆ่ามอนสเตอร์ ทุบบล็อกที่ผู้เล่นไม่ได้วาง เก็บไอเทม และคุยกับชาวบ้านที่ติดแท็กไว้; เควสต์ใน quests.yml พร้อมเป้าหมาย เควสต์ที่ต้องทำก่อน และรางวัล (ไอเทม XP เงิน Vault คำสั่งคอนโซล); เมนู /quests แสดงเควสต์ที่รับได้ ที่กำลังทำ และที่ทำเสร็จแล้ว; ความคืบหน้าที่แอ็กชันบาร์; รับได้สูงสุด 3 เควสต์; เควสต์รายวันรีเซ็ตตอนเที่ยงคืน; ความคืบหน้าบันทึกใน SQLite”
สร้างสิ่งนี้ด้วย Codexe