MC Toolkit

Hướng dẫn / Khắc phục sự cố

Datapack không tải? Cấu trúc thư mục và ba cái tên phải khớp nhau

Một datapack không xuất hiện trong /datapack list là do lỗi đường dẫn, không phải lỗi code. Đây là cây thư mục chính xác, quy tắc namespace, và những thư mục đã bị đổi tên.

/datapack list không hiện gì, hoặc hiện pack ở trạng thái disabled. Gần như luôn là do JSON ổn cả mà thư mục sai.

Cây thư mục

world/datapacks/my_pack/
├── pack.mcmeta
└── data/
    ├── my_namespace/
    │   ├── function/         one .mcfunction per file
    │   ├── recipe/
    │   ├── loot_table/
    │   ├── advancement/
    │   └── predicate/
    └── minecraft/
        └── tags/
            └── function/
                └── load.json

Ba cái tên phải khớp với nhau và một trong số đó không hề dễ thấy:

  1. pack.mcmeta ở gốc pack — nằm cạnh data/, không phải bên trong nó.
  2. data/<namespace>/ — namespace của bạn, viết thường, không dấu cách. Nó trở thành tiền tố trong my_namespace:my_function.
  3. Tên các thư mục category, thứ đã thay đổi và là thủ phạm quen thuộc.

Các thư mục đã được đổi sang số ít

Điều này làm hỏng rất nhiều pack và rất nhiều tutorial:

CũHiện tại
functions/function/
recipes/recipe/
loot_tables/loot_table/
advancements/advancement/
predicates/predicate/
structures/structure/

Một pack dùng tên số nhiều vẫn tải — nó xuất hiện trong /datapack list — và đơn giản là không làm gì cả, đây chính là kiểu lỗi khó hiểu nhất trong nhóm. tags/ vẫn giữ số nhiều, nhưng các thư mục bên trong nó đã chuyển sang số ít cùng với mọi thứ khác — tags/functions/ giờ là tags/function/. Đúng, nghe thật thiếu nhất quán.

Chạy thứ gì đó tự động

Hai tag đặc biệt:

data/minecraft/tags/function/load.json   → runs once on load/reload
data/minecraft/tags/function/tick.json   → runs every tick

Lưu ý data/minecraft/, không phải namespace của bạn — tag thuộc về Minecraft, còn các function mà nó trỏ tới thuộc về bạn:

{ "values": ["my_namespace:setup"] }

Chẩn đoán theo thứ tự

  1. /datapack list — nếu pack hoàn toàn không được liệt kê, thì pack.mcmeta bị thiếu, sai định dạng, hoặc nằm sâu quá một cấp.
  2. Được liệt kê nhưng disabled — /datapack enable "file/my_pack". Chú ý tiền tố file/ và các dấu ngoặc kép.
  3. Được liệt kê và enabled nhưng không hoạt động — tên thư mục số nhiều, hoặc load tag nằm trong namespace của bạn thay vì minecraft.
  4. /reload và đọc log (logs/latest.log, hoặc output của launcher). Một function có lỗi cú pháp sẽ bị bỏ ở đó kèm dòng "Failed to load function …"; chat chỉ báo rằng reload đã xong.

Nén zip hay không

Cả hai đều chạy được. Nén zip nghĩa là pack.mcmeta nằm ở gốc file zip, đúng như với resource pack. Dạng thư mục thì tiện hơn khi đang phát triển vì /reload nhận các chỉnh sửa mà không cần nén zip lại.

Vị trí trên server

Trên server, đường dẫn là <world>/datapacks/, trong đó <world> là giá trị của level-name trong server.properties — không phải gốc server. Thả pack vào thư mục server là lỗi phía server phổ biến nhất.

Hãy lắp một pack với tên thư mục hiện hành và một pack.mcmeta hợp lệ, rồi tải về sẵn sàng để thả vào, với Datapack Studio — và đặt load tag của bạn trong data/minecraft/tags/function/, như trên.

Datapack Studio →

Hướng dẫn khác

Xem tất cả →