MC Toolkit

คู่มือ / การแก้ไขปัญหา

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

มีสามชื่อที่ต้องตรงกัน และหนึ่งในนั้นไม่ชัดเจน:

  1. pack.mcmeta ที่รากของแพ็ก — อยู่ข้าง ๆ data/ ไม่ใช่ข้างใน
  2. data/<namespace>/ — เนมสเปซของคุณ ตัวพิมพ์เล็ก ไม่มีเว้นวรรค ซึ่งจะกลายเป็นคำนำหน้า ใน my_namespace:my_function
  3. ชื่อโฟลเดอร์หมวดหมู่ ซึ่งเปลี่ยนไปแล้วและมักเป็นตัวการ

โฟลเดอร์ถูกเปลี่ยนชื่อเป็นรูปเอกพจน์

สิ่งนี้ทำให้แพ็กจำนวนมากและบทสอนจำนวนมากพัง:

เดิมปัจจุบัน
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"] }

การวินิจฉัยตามลำดับ

  1. /datapack list — ถ้าแพ็กไม่ปรากฏเลย pack.mcmeta หายไป รูปแบบผิด หรืออยู่ลึกเกินไปหนึ่งระดับ
  2. ปรากฏแต่ ปิดใช้งาน — /datapack enable "file/my_pack" สังเกตคำนำหน้า file/ และเครื่องหมายคำพูด
  3. ปรากฏและเปิดใช้งานแต่ไม่ทำงาน — ชื่อโฟลเดอร์เป็นพหูพจน์ หรือแท็กโหลดอยู่ในเนมสเปซของคุณเอง แทนที่จะเป็น minecraft
  4. /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/ ตามข้างต้น

สตูดิโอดาต้าแพ็ก →

คู่มือเพิ่มเติม

ดูทั้งหมด →