ข้ามไปที่เนื้อหา
แพลตฟอร์ม

ปลั๊กอิน Folia

มัลติเธรดแบบแบ่งภูมิภาคของ Folia เปลี่ยนวิธีที่ปลั๊กอินจัดตารางงาน Codexe สร้างปลั๊กอินที่ปลอดภัยสำหรับ Folia อย่างไร และควรใส่อะไรในคำขอ

อัปเดตเมื่อ

ในหน้านี้
  1. สิ่งที่ Codexe ทำต่างออกไป
  2. สิ่งที่ควรใส่ในคำขอ
  3. การบิลด์และการตรวจสอบ
  4. ปัญหาที่พบบ่อย

Folia คือ fork ของ Paper ที่ประมวลผลแต่ละภูมิภาคของโลกบนเธรดต่างกัน ไม่มี "main thread" เดียว การจัดตารางงานแบบ Bukkit ปกติ (Bukkit.getScheduler().runTask(...)) จึงใช้ไม่ได้

#สิ่งที่ Codexe ทำต่างออกไป

เมื่อคุณเลือกประเภท Folia ปลั๊กอินที่สร้างจะ:

  • จัดตารางงานด้วย scheduler แบบ region, entity, global region และ async แทน scheduler ของ Bukkit
  • ประกาศ folia-supported: true ใน plugin.yml
  • บิลด์กับ API ของ Folia (Maven)

#สิ่งที่ควรใส่ในคำขอ

ทุกอย่างจากคู่มือ Spigot และ Paper บวกกับรายละเอียดที่เกี่ยวกับจังหวะเวลา เช่น "เทเลพอร์ตหลัง 3 วินาที", "ทำซ้ำทุกนาทีสำหรับผู้เล่นออนไลน์แต่ละคน" ตรงนี้คือจุดที่โค้ด Folia ต่างออกไปมากที่สุด

#การบิลด์และการตรวจสอบ

ปลั๊กอิน Folia จะถูกคอมไพล์และตรวจเหมือนปลั๊กอินอื่นๆ ก่อนจะพร้อม การคอมไพล์พิสูจน์ว่าโค้ดบิลด์กับ API ของ Folia ได้ แต่ความปลอดภัยของเธรดตอนรันยังขึ้นกับตรรกะของโค้ด จึงควรทดสอบบนเซิร์ฟเวอร์ Folia

#ปัญหาที่พบบ่อย

อาการสาเหตุที่น่าจะเป็น
UnsupportedOperationException เกี่ยวกับ schedulerโค้ด (มักมาจาก dependency) ใช้ scheduler ของ Bukkit ขอให้แชตย้ายไปใช้ scheduler แบบ region หรือ entity
ปลั๊กอินไม่ยอมโหลดบน Foliaไม่มี folia-supported: true ใน plugin.yml
ปลั๊กอิน Folia | Codexe Docs