MC Toolkit

Guias / Solução de problemas

Datapack não carrega? A estrutura de pastas e os três nomes que precisam bater

Um datapack que não aparece em /datapack list tem um problema de caminho, não de código. Veja a árvore exata, a regra de namespace e as pastas que foram renomeadas.

/datapack list não mostra nada, ou mostra o pacote como desativado. Quase sempre o JSON está certo e as pastas estão erradas.

A árvore

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

Três nomes precisam bater, e um deles não é óbvio:

  1. pack.mcmeta na raiz do pacote — ao lado de data/, não dentro dele.
  2. data/<namespace>/ — seu namespace, em minúsculas, sem espaços. Ele vira o prefixo em my_namespace:my_function.
  3. Os nomes das pastas de categoria, que mudaram e costumam ser o verdadeiro culpado.

As pastas foram renomeadas para o singular

Isso quebrou muitos pacotes e muitos tutoriais:

AntigoAtual
functions/function/
recipes/recipe/
loot_tables/loot_table/
advancements/advancement/
predicates/predicate/
structures/structure/

Um pacote que usa os nomes no plural carrega — aparece em /datapack list — e simplesmente não faz nada, que é o modo de falha mais confuso de todos. tags/ continuou no plural, mas as pastas dentro dele passaram para o singular junto com o resto — tags/functions/ agora é tags/function/. Sim, é inconsistente.

Executando algo automaticamente

Duas tags especiais:

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

Repare em data/minecraft/, não no seu próprio namespace — a tag pertence ao Minecraft, e as funções para as quais ela aponta pertencem a você:

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

Diagnosticando em ordem

  1. /datapack list — se o pacote não aparece na lista, pack.mcmeta está faltando, malformado, ou um nível fundo demais.
  2. Aparece na lista mas está desativado — /datapack enable "file/my_pack". Repare no prefixo file/ e nas aspas.
  3. Aparece na lista e está ativado, mas não faz nada — nomes de pasta no plural, ou uma tag de carregamento no seu próprio namespace em vez de minecraft.
  4. /reload e leia o log (logs/latest.log, ou a saída do launcher). Uma função com erro de sintaxe é descartada ali com "Failed to load function …"; o chat só diz que o reload terminou.

Compactado ou não

Os dois funcionam. Compactado significa pack.mcmeta na raiz do zip, exatamente como nos pacotes de recursos. O formato de pasta é mais fácil durante o desenvolvimento, porque /reload capta as edições sem precisar compactar de novo.

Posicionamento no servidor

Em um servidor, o caminho é <world>/datapacks/, onde <world> é o valor de level-name em server.properties — não a raiz do servidor. Jogar o pacote na pasta do servidor é o erro mais comum do lado do servidor.

Monte um pacote com os nomes de pasta atuais e um pack.mcmeta válido, e depois baixe ele pronto para usar, com o Datapack Studio — e coloque sua tag de carregamento em data/minecraft/tags/function/, como acima.

Datapack Studio →

Mais guias

Ver todos →