Datapack qui ne se charge pas ? La structure de dossiers et les trois noms qui doivent correspondre
Un datapack qui n'apparaît pas dans /datapack list a un problème de chemin, pas un problème de code. Voici l'arborescence exacte, la règle de namespace et les dossiers qui ont été renommés.
/datapack list n'affiche rien, ou affiche le pack comme désactivé. Presque toujours, le JSON est correct et ce sont les dossiers qui posent problème.
L'arborescence
world/datapacks/my_pack/
├── pack.mcmeta
└── data/
├── my_namespace/
│ ├── function/ one .mcfunction per file
│ ├── recipe/
│ ├── loot_table/
│ ├── advancement/
│ └── predicate/
└── minecraft/
└── tags/
└── function/
└── load.json
Trois noms doivent correspondre, et l'un d'eux n'est pas évident :
pack.mcmetaà la racine du pack — à côté dedata/, pas à l'intérieur.data/<namespace>/— votre namespace, en minuscules, sans espaces. Il devient le préfixe dansmy_namespace:my_function.- Les noms des dossiers de catégorie, qui ont changé et sont les coupables habituels.
Les dossiers ont été renommés au singulier
Cela a cassé beaucoup de packs et beaucoup de tutoriels :
| Ancien | Actuel |
|---|---|
functions/ | function/ |
recipes/ | recipe/ |
loot_tables/ | loot_table/ |
advancements/ | advancement/ |
predicates/ | predicate/ |
structures/ | structure/ |
Un pack qui utilise les noms au pluriel se charge — il apparaît dans /datapack list — et ne fait tout simplement rien, ce qui est le mode de défaillance le plus déroutant de la série. tags/ est resté au pluriel, mais les dossiers à l'intérieur sont passés au singulier avec tout le reste — tags/functions/ est désormais tags/function/. Oui, c'est incohérent.
Exécuter quelque chose automatiquement
Deux tags spéciaux :
data/minecraft/tags/function/load.json → runs once on load/reload
data/minecraft/tags/function/tick.json → runs every tick
Notez data/minecraft/, et non votre propre namespace — le tag appartient à Minecraft, les fonctions qu'il pointe vous appartiennent :
{ "values": ["my_namespace:setup"] }
Diagnostiquer dans l'ordre
/datapack list— si le pack n'est pas listé du tout,pack.mcmetaest manquant, mal formé, ou d'un niveau trop profond.- Listé mais désactivé —
/datapack enable "file/my_pack". Notez le préfixefile/et les guillemets. - Listé et activé mais inerte — noms de dossiers au pluriel, ou tag de chargement dans votre propre namespace au lieu de
minecraft. /reloadet lisez le journal (logs/latest.log, ou la sortie du launcher). Une fonction avec une erreur de syntaxe y est abandonnée avec « Failed to load function … » ; le chat dit seulement que le rechargement est terminé.
Zippé ou non
Les deux fonctionnent. Zippé signifie pack.mcmeta à la racine du zip, exactement comme pour les resource packs. La forme en dossier est plus pratique pendant le développement, car /reload prend en compte les modifications sans re-zipper.
Emplacement sur serveur
Sur un serveur, le chemin est <world>/datapacks/, où <world> est la valeur de level-name dans server.properties — pas la racine du serveur. Déposer le pack dans le dossier du serveur est l'erreur côté serveur la plus courante.
Assemblez un pack avec les noms de dossiers actuels et un pack.mcmeta valide, puis téléchargez-le prêt à être déposé, avec le Datapack Studio — et placez votre tag de chargement dans data/minecraft/tags/function/, comme ci-dessus.