Vérifié pour les versions : Java Edition 1.15–26.3 (/schedule … replace et /schedule clear demandent la 1.15 ; le reste fonctionne dès la 1.13). Les noms de dossiers de data pack ci-dessous valent pour la 1.21 et au-delà.
Choisir le canal selon la durée de l’information
| Canal | Durée d’affichage | Idéal pour | À éviter pour |
|---|---|---|---|
Chat (tellraw) | Jusqu’à ce qu’il défile ; reste dans l’historique | Règles, consignes, formulations exactes | Ce qu’il faut surveiller en se déplaçant |
| Titre et sous-titre | Environ 5 secondes avec le minutage par défaut (0,5 s d’apparition, 3,5 s à l’écran, 1 s de disparition) | Le début ou la fin d’un événement, un moment fort | Une information utile plus tard |
| Action bar | Quelques secondes au-dessus de la barre d’inventaire | Un retour personnel : « Quête mise à jour », « Pas assez de jetons » | Un état commun à tout le serveur |
| Bossbar | Jusqu’à ce qu’on la cache ou la supprime | Minuteurs, progression, phases, vie d’un boss | Messages et dialogues |
Un événement bien mené en combine souvent plusieurs : un titre au lancement, une ligne de chat qui dit ce que mesure la barre, la barre elle-même pendant toute la durée, puis un titre ou un message à la fin. Pour la partie texte, voir des annonces serveur lisibles.
Quatre usages qui marchent sur un serveur RP
Compte à rebours
« Fenêtre d’évacuation », « Le rituel s’achève dans… ». La barre part pleine et se vide. Style progress, couleur jaune ou rouge. La recette complète est plus bas.
Jauge
La barre se remplit au fil des actions des joueurs : offrandes apportées, générateurs réparés, votes exprimés. max est l’objectif, et la valeur vient d’un scoreboard que l’événement tient déjà :
execute store result bossbar cube:ritual_charge value run scoreboard players get #offerings ritual
Phases
Un raid en quatre étapes : max 4, et value vaut l’étape en cours. Prenez un style à crans divisible par le nombre d’étapes (notched_12 pour 4 ou 6 étapes, notched_10 pour 5), pour que les limites de phase tombent sur un cran.
Vie du boss
Pour un boss invoqué avec un tag, copiez sa vie dans la barre à chaque tick ou chaque seconde. Réglez max sur sa vie maximale (300 ici) ; la valeur stockée est la vie arrondie à l’inférieur :
bossbar set cube:event_boss max 300
execute store result bossbar cube:event_boss value run data get entity @e[tag=event_boss,limit=1] Health
Le sélecteur doit trouver exactement une entité. Si le boss est mort ou déchargé, la deuxième ligne échoue et la barre garde sa dernière valeur : supprimez-la à la fin du combat. Des groupes différents peuvent voir des barres différentes, chacune avec son sélecteur, par exemple players @a[team=defenders].
Règles pour une interface d’événement lisible
- Une barre pour un seul état. Si les joueurs doivent suivre deux choses, faites deux barres, et rarement plus de deux à la fois.
- Un titre court. Il s’affiche en petit au-dessus de la barre. « Évacuation » ou « Rituel 65 % » se lit plus vite qu’une phrase.
- Des couleurs qui veulent toujours dire la même chose. Par exemple rouge pour le danger, jaune pour les minuteurs, violet pour la magie. Les joueurs retiennent le code en un ou deux événements.
- Expliquer une fois. À la première apparition de la barre, dites dans le chat ce qu’elle mesure et ce qui se passe quand elle se remplit ou se vide.
- Terminer proprement. Supprimez la barre à la fin. Les bossbars personnalisées sont enregistrées avec le monde : celle du raid d’hier survit à un redémarrage.
Un compte à rebours qui fonctionne
Une bossbar ne compte pas toute seule. On garde le temps restant dans un scoreboard, on le diminue à intervalle régulier et on le copie dans la barre. Le seul piège est l’unité : un bloc de commande « répétition » s’exécute à chaque tick, 20 fois par seconde, donc une boucle qui retire 1 par passage compte des ticks, pas des secondes. Un minuteur de « 60 secondes » réglé sur 60 serait fini en trois secondes.
Avec des blocs de commande (en ticks)
Configuration, une seule fois depuis le chat ou un bloc impulsion. 60 secondes font 1200 ticks :
/scoreboard objectives add event_timer dummy
/scoreboard players set #timer event_timer 1200
/bossbar add cube:evacuation {"text":"Evacuation","color":"yellow"}
/bossbar set cube:evacuation color yellow
/bossbar set cube:evacuation max 1200
/bossbar set cube:evacuation value 1200
/bossbar set cube:evacuation players @a
La boucle : un bloc répétition suivi de quatre blocs chaîne, tous en « Toujours actif », dans cet ordre (les blocs de commande acceptent les commandes avec ou sans barre oblique) :
execute if score #timer event_timer matches 1.. run scoreboard players remove #timer event_timer 1
execute if score #timer event_timer matches 0.. store result bossbar cube:evacuation value run scoreboard players get #timer event_timer
execute if score #timer event_timer matches 0 run say La fenêtre d’évacuation est fermée.
execute if score #timer event_timer matches 0 run bossbar remove cube:evacuation
execute if score #timer event_timer matches 0 run scoreboard players set #timer event_timer -1
Le premier bloc ne retire du temps que s’il en reste. Le deuxième copie le temps dans la barre. À zéro, les trois derniers lancent la commande de l’événement, suppriment la barre et placent le minuteur à -1 pour que rien ne se répète aux ticks suivants. Relancer la configuration redémarre le compte à rebours.
Avec un data pack (en secondes)
Dans un data pack, on peut éviter tout travail à chaque tick : une fonction se replanifie elle-même une fois par seconde. Trois fichiers dans l’espace de noms cube (avant la 1.21, le dossier s’appelle functions et non function) :
data/cube/function/evacuation/start.mcfunction
scoreboard objectives add event_timer dummy
scoreboard players set #timer event_timer 60
bossbar add cube:evacuation {"text":"Evacuation","color":"yellow"}
bossbar set cube:evacuation color yellow
bossbar set cube:evacuation max 60
bossbar set cube:evacuation value 60
bossbar set cube:evacuation players @a
schedule function cube:evacuation/second 1s replace
data/cube/function/evacuation/second.mcfunction
scoreboard players remove #timer event_timer 1
execute store result bossbar cube:evacuation value run scoreboard players get #timer event_timer
bossbar set cube:evacuation players @a
execute if score #timer event_timer matches 1.. run schedule function cube:evacuation/second 1s replace
execute if score #timer event_timer matches ..0 run function cube:evacuation/finish
data/cube/function/evacuation/finish.mcfunction
bossbar remove cube:evacuation
say La fenêtre d’évacuation est fermée.
Lancement : /function cube:evacuation/start. La ligne players de second ajoute ceux qui se sont connectés pendant le décompte. Rien ne tourne entre deux secondes, et /schedule clear cube:evacuation/second arrête le compte à rebours plus tôt (supprimez ensuite la barre).
Erreurs fréquentes
- La barre est invisible.
playersn’a jamais été exécutée, ou l’a été avant que quiconque soit en ligne. - Le minuteur finit 20 fois trop vite. La boucle compte des ticks alors que
maxet le score sont en secondes. - La configuration échoue la deuxième fois.
bossbar adds’arrête sur un identifiant existant. Supprimez d’abord l’ancienne barre ou sautez la ligne add. - La barre d’hier est toujours affichée. Supprimez les barres à chaque fin d’événement et vérifiez
/bossbar list. - La barre porte du texte. Si un message doit être lu plutôt que surveillé, sa place est dans le chat ou un titre.
Questions fréquentes
Chaque joueur peut-il avoir son propre minuteur ?
Pas avec une seule barre : sa valeur est la même pour tous ceux qui la voient. Pour des minuteurs personnels, utilisez l’action bar ou un score par joueur.
Ticks ou secondes ?
Des secondes avec /schedule si un pas d’une seconde suffit. Des ticks avec un bloc répétition ou une fonction tick si la barre doit se vider parfaitement en douceur.
Le titre peut-il afficher les secondes restantes ?
Pas tout seul. Le nom est figé au moment de bossbar set … name ; il faudrait le redéfinir chaque seconde. La plupart des événements se contentent d’un titre court et de la barre.
Est-ce que ça marche sur Bedrock ?
Non. /bossbar et /schedule sont des commandes de Java Edition.