Text Display Dialogue
Présentation
Text Display Dialogue remplace la boîte de chat des dialogues TypeWriter par des entités Minecraft text_display. Le nom de l'interlocuteur et les lignes de texte flottent à côté du PNJ (ou à une position de votre choix), s'écrivent progressivement, et apparaissent et disparaissent avec une courte animation d'échelle. Tout est envoyé par paquets au joueur concerné par le dialogue : rien n'est généré dans le monde et les autres joueurs ne voient rien.
L'extension ajoute trois entrées de dialogue et une entrée de cinématique. Elles se comportent comme les entrées de dialogue habituelles de TypeWriter (speaker, criteria, modifiers, triggers, duration de frappe, sound), ce qui permet de les substituer dans une conversation existante sans modifier le reste de votre page.
Fonctionnalités
- Dialogue parlé flottant — le nom de l'interlocuteur et le texte apparaissent au-dessus de lui avec un effet de frappe et une animation d'apparition.
- Menu de choix dans le monde — chaque option est une ligne flottante ; le joueur fait défiler la barre d'accès rapide pour changer l'option mise en évidence et fait un clic droit pour confirmer.
- Menu relatif au joueur — une variante qui suit le joueur avec un décalage configurable, pour les interlocuteurs qui n'ont pas de position dans le monde.
- Sous-titres de cinématique — affichez des segments de texte sur une timeline de cinématique avec un délai et une animation de frappe.
- Mise en forme complète —
scale,textOpacity,viewRange,billboard, et des couleurs d'arrière-plan distinctes pour l'interlocuteur, le texte et les options. - Minuteur d'option — annule automatiquement un choix après un délai et déclenche
cancelTriggers, avec un placeholder de compte à rebours en direct. - Logique par option — chaque option possède ses propres
criteria,modifiersettriggers, et une position facultative. - Verrouillage de l'inventaire — le joueur ne peut ni ouvrir d'inventaire, ni jeter d'objet, ni échanger ses mains pendant l'affichage d'un dialogue.
Installation
- Installez PlaceholderAPI si vous voulez utiliser des
%placeholders%dans le texte des dialogues (facultatif). - Obtenez l'extension sur les boutiques (voir les boutons ci-dessus) et placez le JAR dans
plugins/Typewriter/extensions/. - Redémarrez le serveur.
L'extension n'a besoin d'aucun autre plugin : les entités d'affichage de texte sont envoyées avec la bibliothèque de paquets fournie avec TypeWriter. Elle fonctionne uniquement sur Paper : Folia n'est pas pris en charge.
Premiers pas
Transformez un simple salut en dialogue flottant avec un choix :
- Dans le panneau web de TypeWriter, ouvrez une page de séquence qui contient déjà un PNJ (un speaker) et un trigger d'interaction, ou créez-en une.
- Ajoutez une entrée Spoken dialogue with Text Display. Définissez
speakersur votre PNJ et écrivez letext, par exempleWelcome, traveller!. Définissezdurationsur2spour obtenir un effet de frappe (zéro affiche le texte d'un coup). - Ajoutez une entrée Option dialogue with Text Display, définissez le même
speaker, écrivez la question danstext, puis ajoutez deux ou troisoptions. Donnez à chaque option ses proprestriggers. - Reliez les
triggersde l'entrée parlée à l'entrée d'options pour que la conversation continue. - Facultativement, définissez
timersur l'entrée d'options à15set liezcancelTriggersà une entrée d'au revoir. Le texte peut afficher le compte à rebours avec%typewriter_textdisplaydialogue_timer%. - Publiez la page et parlez au PNJ. Faites un clic droit sur le texte flottant (ou dans le vide) pour continuer ; lors d'un choix, faites défiler la barre d'accès rapide et faites un clic droit pour confirmer.
Par défaut, le texte est placé un bloc au-dessus de la position de l'interlocuteur. Si l'interlocuteur n'est pas une entité PNJ dotée d'une position, ou si vous voulez un emplacement fixe, définissez position avec l'outil de capture de position. Utilisez la variante player option lorsque le menu doit suivre le joueur.
Fonctionnement
Chaque entrée de dialogue découpe le texte en un text_display par ligne, de sorte que les longs messages s'empilent vers le bas. L'effet de typing utilise le mode de frappe standard de TypeWriter. Les options apparaissent l'une après l'autre (à 100 ms d'intervalle) une fois le texte terminé, et ne peuvent être confirmées que lorsqu'elles sont toutes visibles.
Contrôles
| Dialogue | Continuer ou confirmer | Changer d'option |
|---|---|---|
| Parlé | La touche de confirmation de TypeWriter, ou un clic droit sur l'un des textes flottants. Une première pression termine la frappe, une seconde ferme le dialogue. | Sans objet |
| Option et Player option | Clic droit dans le vide ou sur l'un des textes flottants, une fois toutes les options affichées. | Faire défiler la barre d'accès rapide (l'emplacement tenu ne change jamais). La sélection boucle. |
Configuration
Les dialogues n'ont pas de fichier de configuration. Chaque texte affiché est un snippet, modifiable dans plugins/Typewriter/snippets ; les valeurs par défaut reproduisent l'affichage standard. Un <token> dans un snippet est remplacé par sa valeur, et les autres <balises> restent du MiniMessage. Dans un snippet de mise en page (*.format), l'interlocuteur et l'indication ne sont affichés que si leur token est présent, tandis que le texte et les options sont toujours affichés. Un snippet d'indication vide n'affiche aucune indication.
| Snippet | Utilisé par | Rôle | Tokens |
|---|---|---|---|
textdisplay.option.format | Option, Player option | Mise en page | <speaker_name> <text> <options> <instruction> |
textdisplay.speaker.format | Option, Player option | Nom de l'interlocuteur | <speaker_name> |
textdisplay.option.prefix.selected | Option, Player option | Préfixe de l'option sélectionnée | - |
textdisplay.option.prefix.unselected | Option, Player option | Préfixe des autres options | - |
textdisplay.option.selected | Option, Player option | Ligne de l'option sélectionnée | <prefix> <option_number> <option_text> |
textdisplay.option.unselected | Option, Player option | Lignes des autres options | <prefix> <option_number> <option_text> |
textdisplay.instruction | Option, Player option | Indication | - |
textdisplay.spoken.format | Spoken | Mise en page | <speaker_name> <text> <instruction> |
textdisplay.spoken.speaker.format | Spoken | Nom de l'interlocuteur | <speaker_name> |
textdisplay.spoken.text.format | Spoken | Ligne de texte | <text> |
textdisplay.spoken.instruction | Spoken | Indication | - |
textdisplay.spoken.continue | Spoken | Indication pour continuer (touche de confirmation) | <key> |
textdisplay.cinematic.spoken.format | Cinématique | Mise en page | <speaker_name> <text> <instruction> |
textdisplay.cinematic.spoken.speaker.format | Cinématique | Nom de l'interlocuteur | <speaker_name> |
textdisplay.cinematic.spoken.instruction | Cinématique | Indication | - |
textdisplay.inventory.blocked | Tous les dialogues | Message quand un joueur tente d'ouvrir un inventaire (vide : aucun message) | - |
textdisplay.error.init | Tous les dialogues | Message quand l'affichage ne peut pas démarrer (vide : aucun message) | - |
Le dialogue Player option utilise les mêmes snippets que le dialogue Option.
Placeholders
| Placeholder | Renvoie |
|---|---|
%typewriter_textdisplaydialogue_timer% | Secondes restantes sur le timer du dialogue d'options en cours, 0 lorsqu'aucun minuteur n'est actif. |
Le placeholder est enregistré dans PlaceholderAPI (expansion Typewriter) : il fonctionne donc aussi ailleurs (scoreboards, chat, autres plugins) et renvoie 0 quand aucun minuteur n'est actif. L'extension le remplace aussi elle-même dans le text des dialogues d'options, dans le texte de chaque option et dans le nom de l'interlocuteur, où il fonctionne donc sans PlaceholderAPI. Les autres placeholders PlaceholderAPI fonctionnent dans ces textes lorsque PlaceholderAPI est installé.
Entrées
4 entrées, générées depuis la source de l'extension.
Dialogues3
- Textdisplay OptionOption dialogue with Text Display
- Textdisplay Player OptionPlayer Option dialogue with Text Display(relative position)
- Textdisplay SpokenSpoken dialogue with Text Display
Cinématiques1
- Textdisplay Spoken CinematicDisplay a spoken dialogue using TextDisplay during a cinematic
Dépannage
Rien n'apparaît et le joueur voit un « Dialog initialization error » en rouge. L'extension a intercepté une erreur lors de la création des affichages. Lisez le journal du serveur à la recherche de la ligne commençant par TextDisplay initialization error pour en connaître la cause, et vérifiez que position, lorsqu'elle est définie, est une position valide dans un monde existant.
Le texte apparaît aux pieds du joueur ou au mauvais endroit. Le texte est ancré à la position de l'entité interlocuteur. Si speaker est vide, ou n'est pas une instance de PNJ visible par le joueur, la position du joueur (plus un bloc vers le haut) est utilisée. Définissez position pour le placer exactement.
Le menu d'options ne peut pas être confirmé. Le clic droit n'est accepté qu'une fois la frappe terminée et toutes les options apparues. Avec une duration longue et de nombreuses options, attendez le menu complet. Les options dont les criteria ne correspondent pas ne sont pas affichées du tout ; si aucune ne correspond, rien ne peut être sélectionné.
Le défilement ne change pas l'option. Les événements de défilement sont limités à un toutes les 150 ms ; un défilement très rapide est donc ignoré. L'emplacement tenu de la barre d'accès rapide ne change jamais pendant le dialogue, c'est normal.
Le compte à rebours affiche %typewriter_textdisplaydialogue_timer% tel quel. Sans PlaceholderAPI, le placeholder n'est remplacé que dans les dialogues d'options, et uniquement lorsque timer est supérieur à zéro. Installez PlaceholderAPI pour l'utiliser dans un dialogue parlé ou ailleurs.
Le joueur se plaint que l'inventaire est verrouillé. Pendant l'affichage d'un dialogue, ouvrir un inventaire, y cliquer, jeter des objets et échanger les mains sont annulés. C'est voulu et cela prend fin avec le dialogue.
Extensions associées
- BetterModel — des PNJ à modèles animés qui peuvent être l'interlocuteur d'un dialogue flottant.