MC Toolkit

Guides / Dépannage

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 :

  1. pack.mcmeta à la racine du pack — à côté de data/, pas à l'intérieur.
  2. data/<namespace>/ — votre namespace, en minuscules, sans espaces. Il devient le préfixe dans my_namespace:my_function.
  3. 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 :

AncienActuel
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

  1. /datapack list — si le pack n'est pas listé du tout, pack.mcmeta est manquant, mal formé, ou d'un niveau trop profond.
  2. Listé mais désactivé — /datapack enable "file/my_pack". Notez le préfixe file/ et les guillemets.
  3. Listé et activé mais inerte — noms de dossiers au pluriel, ou tag de chargement dans votre propre namespace au lieu de minecraft.
  4. /reload et 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.

Datapack Studio →

Plus de guides

Tout voir →