ปลั๊กอิน Python ตัวแรกสำหรับ Endstone — จากเทมเพลตของ Endstone ไปจนปลั๊กอินรันได้จริง
อัปเดตล่าสุด 16 ตุลาคม 2569
เริ่มจากเทมเพลตทางการของ Endstone คือ EndstoneMC/python-example-plugin บน GitHub สร้าง repository ของคุณเองจากมัน เปลี่ยนชื่อแพ็กเกจ entry point และคลาสปลั๊กอินให้เป็นชื่อปลั๊กอินของคุณ ตั้ง api_version เป็นรุ่น Endstone ที่คุณต้องการรองรับ แล้วสร้าง wheel ด้วย `uv build` ไฟล์ `.whl` จะอยู่ในโฟลเดอร์ `dist` อัปโหลดที่ "คอนเทนต์" แล้วเลือก "ปลั๊กอิน" บนเซิร์ฟ Endstone ของคุณ จากนั้นรีสตาร์ท คอนโซลควรแสดงว่าปลั๊กอินโหลด ใช้แค่ความรู้ Python ก็พอ ไม่ต้องรู้ C++ หรือภายใน Bedrock แต่เซิร์ฟอัปเดต Endstone เอง เมื่อมีรุ่นใหม่ออกให้ตรวจ API version อีกครั้ง
- สร้าง repository ของคุณเองจากเทมเพลต
- เปลี่ยนชื่อแพ็กเกจและตั้ง API version
- สร้างไฟล์ wheel
- อัปโหลด wheel ที่คอนเทนต์ > ปลั๊กอิน
- รีสตาร์ทแล้วหาปลั๊กอินของคุณในคอนโซล
ในหน้านี้ · 4 หัวข้อ
นี่คือทางสั้นที่สุดจาก "ผมเขียน Python เป็นนิดหน่อย" ไปสู่ปลั๊กอินที่รันบนเซิร์ฟ Endstone ของคุณ ใช้เทมเพลตทางการของ Endstone เพื่อให้คุณเริ่มจากของที่โหลดได้อยู่แล้ว ถ้ายังไม่เคยเห็นว่าอัปโหลดไฟล์ปลั๊กอินอย่างไร อ่าน ติดตั้งปลั๊กอินบนเซิร์ฟเวอร์ Endstone ก่อน บทความนี้ถือว่าคุณมีเซิร์ฟ Endstone แล้ว
สิ่งที่ต้องมีบนคอมพิวเตอร์ของคุณ
- Python และที่เก็บ Git repository (GitHub ใช้ได้)
uvเครื่องมือสร้างที่ README ของเทมเพลตใช้ ถ้าไม่มี เอกสารของ Endstone สร้าง wheel ด้วยpipx run build --wheelได้เหมือนกัน ผลลัพธ์เป็นไฟล์ชนิดเดียวกัน- โปรแกรมแก้ไขข้อความ
บนเซิร์ฟเวอร์ไม่ต้องติดตั้งอะไรเลย
ลงมือสร้าง
สร้าง repository ของคุณเองจากเทมเพลต
ไปที่ EndstoneMC/python-example-plugin บน GitHub แล้วสร้าง repository ของคุณเองจากมัน จะ fork หรือ clone ก็ได้ เทมเพลตใช้สัญญาอนุญาต MIT
เปลี่ยนชื่อแพ็กเกจและตั้ง API version
เทมเพลตบอกไว้ว่าต้องเปลี่ยนอะไรเพื่อให้ปลั๊กอินเป็นของคุณ สรุปคือ
| อะไร | ในเทมเพลต | เปลี่ยนแล้ว (ปลั๊กอินชื่อ greeter) |
|---|---|---|
ชื่อ distribution ใน pyproject.toml | endstone-example | endstone-greeter |
| โฟลเดอร์แพ็กเกจ | src/endstone_example/ | src/endstone_greeter/ |
| Entry point | example = "endstone_example:ExamplePlugin" | greeter = "endstone_greeter:GreeterPlugin" |
คลาสปลั๊กอินและ prefix | ExamplePlugin | GreeterPlugin |
สองชื่อนี้ผูกกัน ชื่อ distribution ต้องเป็น endstone- ตามด้วยชื่อ entry point ตัวโหลดของ Endstone ตรวจเรื่องนี้ทุกครั้งที่เริ่ม ถ้าไม่ตรงจะปฏิเสธปลั๊กอินพร้อมข้อความ "Invalid name" ในคอนโซล ขีดล่างกับขีดกลางนับเป็นตัวเดียวกัน ส่วน prefix ของสิทธิ์ในคลาสปลั๊กอิน ให้เปลี่ยนในทำนองเดียวกันตามที่ README บอก
ตั้ง api_version เป็นรุ่น Endstone ที่คุณต้องการรองรับ ตัวอย่างในเทมเพลตใช้ "0.11" แดชบอร์ดแสดงว่าเซิร์ฟของคุณรัน Endstone รุ่นไหน จากนั้นลบคำสั่งและ listener ตัวอย่างทิ้ง หรืออ่านมันก่อน เพราะมันแสดงวิธีเขียนคำสั่ง อีเวนต์ผู้เล่นเข้าเกม และไฟล์คอนฟิก
โปรเจกต์มีสี่ไฟล์ที่สำคัญ __init__.py ส่งออกคลาสปลั๊กอิน plugin.py เก็บวงจรชีวิต คำสั่ง และคอนฟิก listener.py เก็บตัวรับอีเวนต์ และ config.toml เป็นคอนฟิกเริ่มต้นที่ถูกคัดลอกเมื่อรันครั้งแรก
สร้างไฟล์ wheel
ที่โฟลเดอร์โปรเจกต์ รัน
uv build
ไฟล์ .whl ที่เสร็จแล้วอยู่ในโฟลเดอร์ dist ถ้าคุณเพิ่มไลบรารีในรายการ dependencies ของ pyproject.toml เซิร์ฟเวอร์จะดาวน์โหลดจาก PyPI ตอนเริ่ม จึงต้องออกอินเทอร์เน็ตได้ในครั้งแรก
ขึ้นเซิร์ฟเวอร์
อัปโหลด wheel ที่คอนเทนต์ > ปลั๊กอิน
เปิดเซิร์ฟ Endstone บนแดชบอร์ด ไปที่แท็บ "คอนเทนต์" แล้วเลือกหัวข้อปลั๊กอิน อัปโหลดไฟล์ .whl จาก dist ทำได้ตอนเซิร์ฟหยุดอยู่ การอัปโหลดต้องให้เจ้าของเซิร์ฟเคยเติมเงินจริงรวมอย่างน้อย ฿20 ถ้ายังไม่ถึง แดชบอร์ดจะไม่รับไฟล์ เครดิตจากคูปองหรือการแนะนำเพื่อนไม่นับ ปลั๊กอินของคุณจะอยู่ในรายการข้าง uniz-link ซึ่งเป็นปลั๊กอินของแพลตฟอร์มเอง
รีสตาร์ทแล้วหาปลั๊กอินของคุณในคอนโซล
เปิดหรือรีสตาร์ทเซิร์ฟ แล้วเปิดแท็บ "คอนโซล" เอกสารของ Endstone บอกว่าหลังรีสตาร์ท ว่า "you should see your plugin has been successfully loaded" (คุณควรเห็นว่าปลั๊กอินโหลดสำเร็จ) ถ้าไม่เห็น ให้ไล่ดูข้อเช็กในคำถามที่พบบ่อยด้านบน เมื่อต้องการแก้ปลั๊กอิน ให้สร้าง wheel ใหม่ ลบไฟล์เก่าที่หัวข้อปลั๊กอินในแท็บคอนเทนต์ อัปโหลดไฟล์ใหม่ แล้วรีสตาร์ทอีกครั้ง wheel ของปลั๊กอินตัวเดียวกันสองไฟล์วางคู่กันจะชนกัน
อ่านต่อ
- ติดตั้งปลั๊กอินบนเซิร์ฟเวอร์ Endstone — ชนิดไฟล์ การหาปลั๊กอินของคนอื่น และสิ่งที่ต้องทำเมื่อปลั๊กอินทำให้เซิร์ฟล้ม
- Endstone บนเซิร์ฟเวอร์ Bedrock — Endstone คืออะไรและอัปเดตอย่างไร
- แท็บไฟล์ — ดูโฟลเดอร์ปลั๊กอินบนเซิร์ฟ
คำถามที่พบบ่อย
ต้องรู้ C++ หรือรู้ว่า Bedrock ทำงานข้างในอย่างไรไหม
ไม่ต้อง ปลั๊กอิน Python คือโค้ด Python ธรรมดาที่เรียกใช้ API ของ Endstone ทั้งคำสั่ง อีเวนต์ เช่นผู้เล่นเข้าเกม ค่าคอนฟิก และสิทธิ์ เทมเพลตมีตัวอย่างเล็ก ๆ ของแต่ละอย่างอยู่แล้ว คุณแก้จากของที่มี ไม่ต้องเริ่มจากไฟล์ว่าง
ต้องเขียนปลั๊กอินบนเซิร์ฟเวอร์เลยไหม
ไม่ต้อง คุณสร้างปลั๊กอินบนคอมพิวเตอร์ของคุณเอง แล้วอัปโหลดไฟล์ `.whl` ที่เสร็จแล้ว เซิร์ฟเวอร์ไม่ได้คอมไพล์อะไรให้ มันติดตั้ง wheel ที่คุณให้ตอนเริ่ม
ทดสอบการแก้ไขโดยไม่ต้องรีสตาร์ททุกครั้งได้ไหม
บนเครื่องตัวเองได้ เอกสารของ Endstone อธิบายโหมดพัฒนาที่ติดตั้งปลั๊กอินเข้า Endstone บนเครื่องคุณแล้วรีโหลดด้วยคำสั่ง ส่วนบนแพลตฟอร์ม ไฟล์ใหม่มีผลเมื่อรีสตาร์ท จึงควรวนลูปทดสอบเร็ว ๆ บนเครื่องตัวเอง แล้วค่อยอัปโหลดรุ่นที่ใช้ได้
เอกสารของ Endstone เองอยู่ที่ไหน
เอกสารอยู่ใน GitHub repository ของ Endstone รวมถึงหน้าติดตั้งปลั๊กอินที่บทความนี้อ้างอิง และ README ของเทมเพลตอธิบายโครงสร้างโปรเจกต์ตัวอย่างและสิ่งที่ต้องเปลี่ยนชื่อ
ปลั๊กอินไม่โผล่ในคอนโซล ควรเช็กอะไรก่อน
เช็กว่าไฟล์ที่อัปโหลดลงท้าย `.whl` ว่าสร้างจากเทมเพลตที่เปลี่ยนชื่อแล้ว (ชื่อ distribution ต้องเป็น `endstone-` ตามด้วยชื่อ entry point เช่น entry point ชื่อ `greeter` ต้องใช้ `endstone-greeter` ถ้าไม่ตรง คอนโซลจะขึ้น "Invalid name" และปลั๊กอินถูกปฏิเสธ) และว่าหัวข้อปลั๊กอินในแท็บคอนเทนต์แสดงไฟล์นั้น จากนั้นรีสตาร์ทอีกครั้งแล้วอ่านคอนโซลตั้งแต่ต้นการเปิด
ปลั๊กอินของฉันจะเป็นอย่างไรเมื่อ Endstone อัปเดต
เซิร์ฟเวอร์ย้ายไป Endstone รุ่นใหม่ตอนรีสตาร์ทครั้งถัดไป ปลั๊กอินระบุ API version ที่เขียนไว้ ดังนั้นหลังอัปเดตให้ตรวจว่าปลั๊กอินยังโหลดได้ และปรับเลขเวอร์ชันในเทมเพลตถ้า API ของ Endstone เปลี่ยน เก็บซอร์สไว้ใน repository ของคุณเองเพื่อสร้างใหม่ได้
แหล่งอ้างอิง
- EndstoneMC python-example-plugin (README) (ตรวจลิงก์เมื่อ 15 ตุลาคม 2569)
- Endstone docs — Install your plugin (v0.11.14) (ตรวจลิงก์เมื่อ 15 ตุลาคม 2569)
- Endstone plugin_loader.py (v0.11.14) (ตรวจลิงก์เมื่อ 15 ตุลาคม 2569)
บทความที่เกี่ยวข้อง
อยากข้ามขั้นตอนพวกนี้ไปเลยไหม
เปิดเซิร์ฟบน uniz.host ได้ในไม่กี่นาที จ่ายรายชั่วโมงเฉพาะตอนเซิร์ฟเปิด เติมเครดิตขั้นต่ำ ฿20