← Tous les articles

Data packs contre commandes : comment vraiment en installer un

Presque tous les constructeurs de ce site vous donnent une commande à coller dans le chat. Les tables de butin, les recettes et les progrès ne fonctionnent pas ainsi, et aucune commande ne permet de les créer. Ce sont des fichiers. Cette page explique la différence, parce que c’est ce qui bloque les gens avant tout le reste.

Ouvrir le générateur de data packs

La commande /loottable n’existe pas

Si vous avez utilisé le constructeur d’objets ou de potions d’ici, la routine est familière : remplir un formulaire, copier une ligne /give, la coller dans le chat, terminé. Cela marche parce qu’un objet est une chose que le jeu peut vous remettre sur-le-champ.

Une table de butin n’est pas une chose que l’on tient. C’est une règle : « quand ce coffre se génère, lance ces probabilités ». Une recette est une règle sur la grille d’artisanat. Un progrès est une règle sur le moment où quelque chose compte comme accompli. Les règles doivent exister avant l’instant auquel elles s’appliquent, donc le jeu les lit au chargement depuis des fichiers sur le disque. Il n’y a ni /loottable, ni /recipe add, ni aucune commande de chat qui les crée, car au moment où vous pourriez la taper, l’instant qu’elle régit est déjà passé.

Toute la distinction tient là :

CommandesData packs
LivraisonColler dans le chat ou un bloc de commandeFichiers dans un dossier que le monde charge
Utile pourActions ponctuelles : donner un objet, poser une bossbar, envoyer un messageRègles permanentes : butin, recettes, progrès, fonctions réutilisables
Prend effetImmédiatementAu chargement du monde ou au /reload
Survit au redémarrageSeulement ses effetsOui, la règle elle-même persiste

Ce qu’est réellement un data pack

Un dossier avec un fichier pack.mcmeta tout en haut et un répertoire data en dessous. C’est toute l’exigence. Minecraft l’accepte zippé ou décompressé, et il se place ici :

.minecraft/saves/<monde>/datapacks/<votre-pack>/
  pack.mcmeta
  data/
    harbor/
      function/
        load.mcfunction
      loot_table/
        example_chest.json
    minecraft/
      tags/function/
        load.json

Deux espaces de noms apparaissent ici et ils ont des rôles différents. harbor est le vôtre : il évite que vos fichiers entrent en collision avec le vanilla ou avec un autre pack, et il devient partie de chaque identifiant, comme harbor:load. L’espace minecraft sert uniquement à se brancher sur ce que le vanilla définit déjà, c’est pourquoi le tag de chargement y vit et non dans le vôtre.

Le renommage de 1.21 qui casse les packs en silence

Celui-ci mérite sa propre section à cause de sa manière d’échouer. En 1.21, Mojang a renommé tous les répertoires de contenu du pluriel au singulier :

Le mode d’échec est vicieux : un pack utilisant les anciens noms pluriels sur 1.21+ se charge quand même. /datapack list l’affiche comme activé. Aucune erreur. Le jeu ne regarde simplement jamais dans ces dossiers, donc rien de ce que vous avez écrit ne s’exécute. Des gens y perdent des soirées, généralement en suivant un tutoriel écrit avant 1.21.

Si votre pack est activé et ne fait absolument rien, vérifiez d’abord les noms de dossiers, avant de déboguer le JSON qu’ils contiennent.

pack_format est un verrou de version, pas un numéro de version

Le nombre dans pack.mcmeta indique à Minecraft dans quel format de données vos fichiers sont écrits. Mettez-le de travers et le pack est signalé comme incompatible.

{
  "pack": {
    "pack_format": 61,
    "description": "Règles du quartier du port"
  }
}
Version MinecraftFormat de data pack
1.20 – 1.20.115
1.20.218
1.20.3 – 1.20.426
1.20.5 – 1.20.641
1.21 – 1.21.148
1.21.2 – 1.21.357
1.21.461
1.21.571
1.21.680
1.21.7 – 1.21.881

Notez que ce sont les numéros pour les data packs. Les packs de ressources utilisent une échelle distincte, donc un pack_format copié depuis un tutoriel de pack de ressources sera faux ici.

load et tick

Deux points d’accroche couvrent l’essentiel de ce qu’un pack doit faire seul. Vous écrivez un fichier .mcfunction — un simple fichier texte, une commande par ligne, sans slash initial — puis vous pointez un tag dessus.

load s’exécute une fois au chargement du pack et de nouveau à chaque /reload. C’est là qu’on prépare les scoreboards, les constantes et l’état initial. tick s’exécute vingt fois par seconde, indéfiniment, tant que le pack est activé. C’est puissant et c’est la façon la plus simple de ruiner les performances de votre serveur, alors ne l’utilisez que si quelque chose doit vraiment être vérifié en continu.

C’est le fichier de tag qui fait réellement le lien :

// data/minecraft/tags/function/load.json
{
  "values": ["harbor:load"]
}

Sans ce tag, la fonction existe toujours et peut être appelée à la main avec /function harbor:load, mais rien ne la lancera pour vous.

Installer et vérifier que ça marche

  1. Placez le dossier ou le ZIP dans <monde>/datapacks/. Sur un serveur, ce dossier est à côté de level.dat.
  2. Lancez /reload en jeu. Pas besoin de redémarrer.
  3. Lancez /datapack list. Votre pack doit apparaître dans la liste des activés.

S’il manque à cette liste, le problème est structurel : un pack_format erroné, un pack.mcmeta malformé, ou un niveau de dossier en trop parce que le ZIP a été créé depuis le répertoire parent au lieu du contenu du pack lui-même. Ce dernier cas est fréquent : pack.mcmeta doit être à la racine de l’archive, pas à l’intérieur d’un autre dossier.

S’il est listé mais que rien ne se passe, la structure est bonne et le problème est à l’intérieur : noms de dossiers au pluriel sur 1.21+, une faute d’espace de noms dans un tag, ou du JSON valide comme texte mais dont la forme n’est pas celle attendue par le jeu.

Pour aller plus loin

Le générateur de data packs construit tout ce squelette pour vous et change automatiquement les noms de dossiers et le pack_format quand vous choisissez une version, ce qui élimine les deux erreurs les plus fréquentes. Ensuite, la référence sur la structure des packs de ressources couvre l’autre moitié de l’écosystème — celle qui change l’apparence du jeu plutôt que son comportement.