Datapack โหลดไม่ขึ้น? โครงสร้างโฟลเดอร์และสามชื่อที่ต้องตรงกัน
Datapack ที่ไม่ปรากฏใน /datapack list มีปัญหาเรื่องพาธ ไม่ใช่ปัญหาเรื่องโค้ด นี่คือโครงสร้างที่แน่นอน กฎของเนมสเปซ และโฟลเดอร์ที่ถูกเปลี่ยนชื่อ
/datapack list ไม่แสดงอะไรเลย หรือแสดงแพ็กเป็นปิดใช้งาน เกือบทุกครั้ง JSON ไม่มีปัญหา แต่โฟลเดอร์ผิด
โครงสร้าง
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
มีสามชื่อที่ต้องตรงกัน และหนึ่งในนั้นไม่ชัดเจน:
pack.mcmetaที่รากของแพ็ก — อยู่ข้าง ๆdata/ไม่ใช่ข้างในdata/<namespace>/— เนมสเปซของคุณ ตัวพิมพ์เล็ก ไม่มีเว้นวรรค ซึ่งจะกลายเป็นคำนำหน้า ในmy_namespace:my_function- ชื่อโฟลเดอร์หมวดหมู่ ซึ่งเปลี่ยนไปแล้วและมักเป็นตัวการ
โฟลเดอร์ถูกเปลี่ยนชื่อเป็นรูปเอกพจน์
สิ่งนี้ทำให้แพ็กจำนวนมากและบทสอนจำนวนมากพัง:
| เดิม | ปัจจุบัน |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
แพ็กที่ใช้ชื่อรูปพหูพจน์โหลดได้ — มันปรากฏใน /datapack list — และไม่ทำอะไรเลย ซึ่งเป็นรูปแบบ ความล้มเหลวที่สับสนที่สุดในกลุ่มนี้ tags/ ยังคงเป็นพหูพจน์ แต่โฟลเดอร์ข้างใน เปลี่ยนเป็นเอกพจน์พร้อมกับอย่างอื่นหมด — tags/functions/ ตอนนี้คือ tags/function/ ใช่แล้ว มันไม่สอดคล้องกัน
การรันอะไรบางอย่างโดยอัตโนมัติ
แท็กพิเศษสองอัน:
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
สังเกต data/minecraft/ ไม่ใช่เนมสเปซของคุณเอง — แท็กเป็นของ Minecraft แต่ฟังก์ชันที่มันชี้ไปเป็นของคุณ:
{ "values": ["my_namespace:setup"] }
การวินิจฉัยตามลำดับ
/datapack list— ถ้าแพ็กไม่ปรากฏเลยpack.mcmetaหายไป รูปแบบผิด หรืออยู่ลึกเกินไปหนึ่งระดับ- ปรากฏแต่ ปิดใช้งาน —
/datapack enable "file/my_pack"สังเกตคำนำหน้าfile/และเครื่องหมายคำพูด - ปรากฏและเปิดใช้งานแต่ไม่ทำงาน — ชื่อโฟลเดอร์เป็นพหูพจน์ หรือแท็กโหลดอยู่ในเนมสเปซของคุณเอง แทนที่จะเป็น
minecraft /reloadแล้วอ่านบันทึก (logs/latest.logหรือเอาต์พุตของตัวเรียกเกม) ฟังก์ชันที่มี ข้อผิดพลาดทางไวยากรณ์จะถูกทิ้งที่นั่นพร้อมข้อความ "Failed to load function …" แชทเพียงบอกว่า การโหลดซ้ำเสร็จสิ้น
ซิปหรือไม่ซิป
ทั้งสองแบบใช้ได้ ซิปหมายถึง pack.mcmeta ที่ รากของไฟล์ซิป เหมือนกับ resource pack ทุกประการ รูปแบบโฟลเดอร์ง่ายกว่าในระหว่างพัฒนาเพราะ /reload รับการแก้ไขได้ทันทีโดยไม่ต้อง ซิปใหม่
ตำแหน่งบนเซิร์ฟเวอร์
บนเซิร์ฟเวอร์ พาธคือ <world>/datapacks/ โดยที่ <world> คือค่าของ level-name ใน server.properties — ไม่ใช่รากของเซิร์ฟเวอร์ การวางแพ็กในโฟลเดอร์เซิร์ฟเวอร์ เป็นความผิดพลาดฝั่งเซิร์ฟเวอร์ที่พบบ่อยที่สุด
ประกอบแพ็กด้วยชื่อโฟลเดอร์ปัจจุบันและ pack.mcmeta ที่ถูกต้อง แล้วดาวน์โหลดมัน พร้อมวางได้เลย ด้วย Datapack Studio — และใส่แท็กโหลดของคุณใน data/minecraft/tags/function/ ตามข้างต้น