Guides / Construction et ressources
Tableaux et disques personnalisés : deux packs sont nécessaires, et l'installation de l'un d'eux est l'erreur habituelle
Le datapack enregistre le contenu ; le pack de ressources fournit la texture et le son. Datapack seul, et il enregistre sans rien à afficher. Plus la limite de 16×16 et ce que contrôle réellement la durée d'un disque.
Les tableaux et les disques de musique sont tous deux de véritables registres dans Java moderne, ce qui signifie que vous pouvez les ajouter plutôt que remplacer ceux de vanilla. Rien de ce que vous ajoutez ne déplace un tableau ou un disque existant.
Le piège, c'est que le contenu est réparti sur deux types de packs différents, et que chacun est inutile seul.
Ce qui va où
Le datapack enregistre l'élément :
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length_in_seconds, comparator_output
Le pack de ressources fournit ce que vous voyez et entendez :
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
Installez uniquement le datapack et le contenu s'enregistre correctement — il existe, /give le trouve, et il n'y a simplement aucune texture ni aucun son. C'est un résultat bien plus déroutant qu'un échec franc, et c'est la raison habituelle pour laquelle un tableau personnalisé « n'a pas fonctionné ». L'outil de cette page livre les deux dans un seul zip, justement pour qu'ils ne puissent pas être séparés.
Notez les deux fichiers pack.mcmeta. Ce sont des packs distincts avec des identités distinctes ; il n'existe aucun format combiné qui contienne les deux.
Les identifiants de registre sont plus stricts que les noms de fichiers
Un identifiant ne peut contenir que a-z, 0-9, _, . et - (plus / pour les sous-dossiers). Tout le reste et le jeu ignore ce fichier avec une ligne « Invalid path » dans le journal — le pack se charge, et l'entrée n'existe tout simplement jamais, ce qui est plus difficile à repérer qu'un échec. Les majuscules et les espaces sont les deux qui piègent les gens, car les deux sont parfaitement ordinaires dans le nom de fichier que vous avez glissé.
Tableaux : jusqu'à 16×16, et 17 casse le pack
Les tableaux de vanilla vont de 1 × 1 à 4 × 4 blocs, et cet outil propose la même plage. Le format autorise davantage : 26.3 lit width et height comme des blocs entiers de 1 à 16, et un tableau de 16 × 16 se charge, s'accroche et tient sur n'importe quel mur disposant de 16 × 16 blocs de place — testé sur un serveur 26.3. Ce qui décide si un tableau tient, c'est la place, pas la taille : un tableau qui ne rentre pas là où il s'accroche tombe en objet, et un 1 × 1 vanilla sans rien derrière lui tombe exactement de la même façon.
Au-delà de 16, le jeu ne limite pas le nombre, il le refuse. "width": 17 échoue avec « Value must be within range [1;16] », tout le chargement du registre s'arrête avec lui, et le monde ne s'ouvrira pas tant que le pack n'est pas retiré.
La taille est déclarée dans le JSON via width et height, en blocs. Elle n'est pas déduite du PNG, donc un tableau 3 × 1 dont la texture est carrée est un fichier valide qui s'affiche étiré.
La durée d'un disque n'est pas une étiquette
length_in_seconds est le moment où le jeu décide que la piste est terminée. Une seconde après la durée déclarée, le jukebox coupe le son, arrête les notes de musique et éteint le signal de redstone qu'il émet pendant qu'une chanson joue — pleine puissance, vers les blocs autour de lui, pendant exactement le temps qu'il croit que la piste dure encore.
Une durée inexacte n'est donc pas une erreur cosmétique. Déclarez une piste de 200 secondes comme durant 100 et la musique est coupée à mi-parcours, le signal tombant au même moment ; déclarez-la comme durant 300 et le jukebox maintient son signal pendant 100 secondes de silence. Dans les deux cas, la redstone qui attend la fin d'un disque se déclenche au mauvais moment. Cet outil lit la durée réelle dans le fichier plutôt que de vous demander de la saisir, précisément pour cette raison.
Un comparateur lit autre chose : comparator_output, un nombre fixe de 0 à 15 qui reste le même tant que le disque est dans le jukebox, en lecture ou terminé. Il n'augmente pas au fil de la piste, et la durée ne le change pas — vanilla s'en sert pour distinguer les disques (13 donne 1, cat 2, blocks 3).
Les pistes sont aussi écrites avec "stream": true dans sounds.json. La musique est longue, et charger une piste entière en mémoire avant de la jouer provoque des saccades — le streaming est le bon choix par défaut pour tout ce qui a la durée d'un disque, et le mauvais pour un effet sonore court.