ดาต้าแพ็กไม่โหลด? โครงสร้างโฟลเดอร์และ 3 ชื่อที่ต้องตรงกัน
ดาต้าแพ็กที่ไม่แสดงใน /datapack list มักมีปัญหาที่พาธ ไม่ใช่ที่โค้ด นี่คือโครงสร้างที่ถูกต้อง กฎของเนมสเปซ และโฟลเดอร์ที่เปลี่ยนชื่อไป
/datapack list ไม่แสดงอะไรเลย หรือแสดงว่าแพ็กถูกปิดใช้งาน ส่วนใหญ่แล้วไฟล์ JSON จะถูกต้อง แต่โฟลเดอร์ผิด
โครงสร้าง
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
└── my_namespace/
├── function/ one .mcfunction per file
├── recipe/
├── loot_table/
├── advancement/
├── predicate/
└── 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/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/และเครื่องหมายคำพูด - แสดงและเปิดใช้งานแต่ไม่ทำงาน —
pack_formatผิด หรือชื่อโฟลเดอร์เป็นพหูพจน์ /reloadและอ่านข้อความในแชท ข้อผิดพลาดทางไวยากรณ์ในฟังก์ชันจะแสดงที่นั่น ไม่ใช่เงียบๆ
บีบอัดหรือไม่บีบอัด
ทั้งสองวิธีใช้ได้ การบีบอัดหมายถึง pack.mcmeta ที่ รูทของไฟล์ zip เช่นเดียวกับแพ็กทรัพยากร รูปแบบโฟลเดอร์จะง่ายกว่าในขณะพัฒนา เพราะ /reload จะรับการแก้ไขโดยไม่ต้องบีบอัดใหม่
การจัดวางบนเซิร์ฟเวอร์
บนเซิร์ฟเวอร์ พาธคือ <world>/datapacks/ โดยที่ <world> คือค่าของ level-name ใน server.properties — ไม่ใช่รูทของเซิร์ฟเวอร์ การวางแพ็กในโฟลเดอร์เซิร์ฟเวอร์เป็นข้อผิดพลาดที่พบบ่อยที่สุดบนฝั่งเซิร์ฟเวอร์
สร้างแพ็กด้วยชื่อโฟลเดอร์ปัจจุบัน, pack.mcmeta ที่ถูกต้อง และแท็กโหลดที่เชื่อมต่อไว้แล้ว จากนั้นดาวน์โหลดเพื่อพร้อมใช้งานด้วย Datapack Studio