Guides / Troubleshooting

数据包加载失败?文件夹结构和三个必须匹配的名称

如果数据包没有出现在 /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

有三个名称必须保持一致,其中一个并不那么显而易见:

  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/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. 已列出并启用但无反应 — pack_format 错误,或文件夹名称为复数。
  4. /reload 并阅读聊天信息。函数中的语法错误会在此处显示,而不会静默失败。

是否压缩

两种方式都有效。压缩意味着 pack.mcmeta 位于 zip 文件的根目录,与资源包完全相同。在开发过程中,文件夹形式更方便,因为 /reload 无需重新压缩即可识别编辑。

服务器放置位置

在服务器上,路径是 <world>/datapacks/,其中 <world>level-nameserver.properties 中的值 — 而不是服务器根目录。将数据包直接放入服务器文件夹是服务器端最常见的错误。

使用当前文件夹名称、有效的 pack.mcmeta 和已连接的加载标签来组装一个数据包,然后使用 Datapack Studio 下载它,即可直接放入。

数据包工作室 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。