Aller au contenu principal

Text Display Dialogue

Dialogues, menus de choix et sous-titres de cinématiques affichés sous forme d'entités text_display flottantes.

Payantesv2.4Quêtes et narration
NécessiteTypeWriter0.9PlaceholderAPIfacultatif

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, modifiers et triggers, 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​

  1. Installez PlaceholderAPI si vous voulez utiliser des %placeholders% dans le texte des dialogues (facultatif).
  2. Obtenez l'extension sur les boutiques (voir les boutons ci-dessus) et placez le JAR dans plugins/Typewriter/extensions/.
  3. 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 :

  1. 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.
  2. Ajoutez une entrée Spoken dialogue with Text Display. Définissez speaker sur votre PNJ et écrivez le text, par exemple Welcome, traveller!. Définissez duration sur 2s pour obtenir un effet de frappe (zéro affiche le texte d'un coup).
  3. Ajoutez une entrée Option dialogue with Text Display, définissez le même speaker, écrivez la question dans text, puis ajoutez deux ou trois options. Donnez à chaque option ses propres triggers.
  4. Reliez les triggers de l'entrée parlée à l'entrée d'options pour que la conversation continue.
  5. Facultativement, définissez timer sur l'entrée d'options à 15s et liez cancelTriggers à une entrée d'au revoir. Le texte peut afficher le compte à rebours avec %typewriter_textdisplaydialogue_timer%.
  6. 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.
Position

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​

DialogueContinuer ou confirmerChanger 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 optionClic 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.

SnippetUtilisé parRôleTokens
textdisplay.option.formatOption, Player optionMise en page<speaker_name> <text> <options> <instruction>
textdisplay.speaker.formatOption, Player optionNom de l'interlocuteur<speaker_name>
textdisplay.option.prefix.selectedOption, Player optionPréfixe de l'option sélectionnée-
textdisplay.option.prefix.unselectedOption, Player optionPréfixe des autres options-
textdisplay.option.selectedOption, Player optionLigne de l'option sélectionnée<prefix> <option_number> <option_text>
textdisplay.option.unselectedOption, Player optionLignes des autres options<prefix> <option_number> <option_text>
textdisplay.instructionOption, Player optionIndication-
textdisplay.spoken.formatSpokenMise en page<speaker_name> <text> <instruction>
textdisplay.spoken.speaker.formatSpokenNom de l'interlocuteur<speaker_name>
textdisplay.spoken.text.formatSpokenLigne de texte<text>
textdisplay.spoken.instructionSpokenIndication-
textdisplay.spoken.continueSpokenIndication pour continuer (touche de confirmation)<key>
textdisplay.cinematic.spoken.formatCinématiqueMise en page<speaker_name> <text> <instruction>
textdisplay.cinematic.spoken.speaker.formatCinématiqueNom de l'interlocuteur<speaker_name>
textdisplay.cinematic.spoken.instructionCinématiqueIndication-
textdisplay.inventory.blockedTous les dialoguesMessage quand un joueur tente d'ouvrir un inventaire (vide : aucun message)-
textdisplay.error.initTous les dialoguesMessage 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​

PlaceholderRenvoie
%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
Cinématiques1

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.