Zum Hauptinhalt springen

Text Display Dialogue

Dialoge, Auswahlmenüs und Cinematic-Untertitel als schwebende text_display-Entitäten.

Kostenpflichtigv2.4Quests & Story
BenötigtTypeWriter0.9PlaceholderAPIoptional

Überblick​

Text Display Dialogue ersetzt die Chatbox der TypeWriter-Dialoge durch Minecraft-text_display-Entities. Der Sprechername und die Textzeilen schweben neben dem NPC (oder an einer von dir gewählten Position), tippen sich selbst aus und erscheinen und verschwinden mit einer kurzen Skalierungsanimation. Alles wird per Paket an den Spieler im Dialog gesendet: In der Welt wird nichts gespawnt, und andere Spieler sehen nichts.

Die Erweiterung fügt drei Dialog-Entries und einen Cinematic-Entry hinzu. Sie verhalten sich wie die regulären TypeWriter-Dialog-Entries (Speaker, criteria, modifiers, triggers, Tipp-duration, sound), sodass du sie in ein bestehendes Gespräch einsetzen kannst, ohne den Rest deiner Page zu ändern.

Funktionen​

  • Schwebender gesprochener Dialog — der Sprechername und der Text erscheinen über dem Sprecher mit Tippeffekt und Einblend-Animation.
  • Auswahlmenü in der Welt — jede Option ist eine schwebende Zeile; der Spieler scrollt in der Hotbar, um die hervorgehobene Option zu wechseln, und bestätigt per Rechtsklick.
  • Spielerbezogenes Menü — eine Variante, die dem Spieler mit einem konfigurierbaren Versatz folgt, für Sprecher ohne Position in der Welt.
  • Cinematic-Untertitel — zeige Textsegmente auf einer Cinematic-Timeline mit Verzögerung und Tippanimation.
  • Vollständiges Styling — scale, textOpacity, viewRange, billboard und getrennte Hintergrundfarben für Sprecher, Text und Optionen.
  • Options-Timer — eine Auswahl nach einer Verzögerung automatisch abbrechen und cancelTriggers auslösen, mit einem Live-Countdown-Platzhalter.
  • Logik pro Option — jede Option hat ihre eigenen criteria, modifiers und triggers sowie eine optionale Position.
  • Inventarsperre — der Spieler kann kein Inventar öffnen, kein Item droppen und keine Hände tauschen, solange ein Dialog angezeigt wird.

Installation​

  1. Installiere PlaceholderAPI, wenn du %placeholders% im Dialogtext verwenden möchtest (optional).
  2. Beziehe die Erweiterung in den Stores (siehe die Buttons oben) und lege die JAR in plugins/Typewriter/extensions/ ab.
  3. Starte den Server neu.

Die Erweiterung benötigt kein weiteres Plugin: Text-Display-Entities werden mit der Paket-Bibliothek gesendet, die mit TypeWriter mitgeliefert wird. Sie läuft nur auf Paper: Folia wird nicht unterstützt.

Erste Schritte​

Verwandle eine einfache Begrüßung in einen schwebenden Dialog mit Auswahl:

  1. Öffne im TypeWriter-Web-Panel eine Sequence-Page, die bereits einen NPC (einen Speaker) und einen Interaktions-Trigger hat, oder erstelle eine.
  2. Füge einen Spoken dialogue with Text Display-Entry hinzu. Setze speaker auf deinen NPC und schreibe den text, zum Beispiel Welcome, traveller!. Setze duration auf 2s, um einen Tippeffekt zu erhalten (null zeigt den Text sofort).
  3. Füge einen Option dialogue with Text Display-Entry hinzu, setze denselben speaker, schreibe die Frage in text und füge dann zwei oder drei options hinzu. Gib jeder Option ihre eigenen triggers.
  4. Verknüpfe die triggers des Spoken-Entries mit dem Option-Entry, damit das Gespräch weitergeht.
  5. Setze optional timer am Option-Entry auf 15s und verknüpfe cancelTriggers mit einem Verabschiedungs-Entry. Der Text kann den Countdown mit %typewriter_textdisplaydialogue_timer% anzeigen.
  6. Veröffentliche die Page und sprich mit dem NPC. Rechtsklicke auf den schwebenden Text (oder in die Luft), um fortzufahren; bei einer Auswahl scrollst du in der Hotbar und bestätigst mit Rechtsklick.
Position

Standardmäßig wird der Text einen Block über der Position des Sprechers platziert. Ist der Sprecher keine NPC-Entity mit Position oder möchtest du einen festen Ort, setze position mit dem Positionserfassungs-Werkzeug. Verwende die Variante Player Option, wenn das Menü stattdessen dem Spieler folgen soll.

Funktionsweise​

Jeder Dialog-Entry teilt den Text in ein text_display pro Zeile auf, sodass lange Nachrichten nach unten gestapelt werden. Der typing-Effekt verwendet den Standard-Tippmodus von TypeWriter. Optionen erscheinen nacheinander (im Abstand von 100 ms), nachdem der Text vollständig ist, und können erst bestätigt werden, wenn alle sichtbar sind.

Steuerung​

DialogFortfahren oder bestätigenOption wechseln
SpokenDie TypeWriter-Bestätigungstaste oder ein Rechtsklick auf einen der schwebenden Texte. Ein erster Druck vervollständigt das Tippen, ein zweiter schließt den Dialog.Nicht zutreffend
Option und Player OptionRechtsklick in die Luft oder auf einen der schwebenden Texte, sobald alle Optionen angezeigt werden.In der Hotbar scrollen (der gehaltene Slot ändert sich nie). Die Auswahl springt am Ende wieder an den Anfang.

Konfiguration​

Die Dialoge haben keine Konfigurationsdatei. Jeder angezeigte Text ist ein snippet, das in plugins/Typewriter/snippets bearbeitet werden kann; die Standardwerte entsprechen der bisherigen Anzeige. Ein <token> in einem Snippet wird durch seinen Wert ersetzt, andere <Tags> bleiben MiniMessage. In einem Layout-Snippet (*.format) werden Sprecher und Hinweis nur angezeigt, wenn ihr Token vorhanden ist; der Text und die Optionen werden immer angezeigt. Ein leeres Hinweis-Snippet zeigt keinen Hinweis an.

SnippetVerwendet vonRolleTokens
textdisplay.option.formatOption, Player optionLayout<speaker_name> <text> <options> <instruction>
textdisplay.speaker.formatOption, Player optionName des Sprechers<speaker_name>
textdisplay.option.prefix.selectedOption, Player optionPräfix der ausgewählten Option-
textdisplay.option.prefix.unselectedOption, Player optionPräfix der anderen Optionen-
textdisplay.option.selectedOption, Player optionZeile der ausgewählten Option<prefix> <option_number> <option_text>
textdisplay.option.unselectedOption, Player optionZeilen der anderen Optionen<prefix> <option_number> <option_text>
textdisplay.instructionOption, Player optionHinweis-
textdisplay.spoken.formatSpokenLayout<speaker_name> <text> <instruction>
textdisplay.spoken.speaker.formatSpokenName des Sprechers<speaker_name>
textdisplay.spoken.text.formatSpokenTextzeile<text>
textdisplay.spoken.instructionSpokenHinweis-
textdisplay.spoken.continueSpokenHinweis zum Fortfahren (Bestätigungstaste)<key>
textdisplay.cinematic.spoken.formatCinematicLayout<speaker_name> <text> <instruction>
textdisplay.cinematic.spoken.speaker.formatCinematicName des Sprechers<speaker_name>
textdisplay.cinematic.spoken.instructionCinematicHinweis-
textdisplay.inventory.blockedAlle DialogeMeldung, wenn ein Spieler ein Inventar öffnen will (leer: keine Meldung)-
textdisplay.error.initAlle DialogeMeldung, wenn die Anzeige nicht starten kann (leer: keine Meldung)-

Der Player-option-Dialog verwendet dieselben Snippets wie der Option-Dialog.

Platzhalter​

PlatzhalterGibt zurück
%typewriter_textdisplaydialogue_timer%Verbleibende Sekunden des timer des aktuellen Option-Dialogs, 0, wenn kein Timer läuft.

Der Platzhalter ist in PlaceholderAPI registriert (Typewriter-Expansion) und funktioniert daher auch an anderen Stellen (Scoreboards, Chat, andere Plugins); er gibt 0 zurück, wenn kein Timer läuft. Die Erweiterung ersetzt ihn zusätzlich selbst im text der Option-Dialoge, im Text jeder Option und im Namen des Sprechers, sodass er dort auch ohne PlaceholderAPI funktioniert. Andere PlaceholderAPI-Platzhalter funktionieren in diesen Texten, wenn PlaceholderAPI installiert ist.

Entries​

4 Einträge, aus dem Quellcode der Erweiterung generiert.

Dialoge3
Cinematics1

Fehlerbehebung​

Nichts erscheint, und der Spieler sieht ein rotes „Dialog initialization error“. Die Erweiterung hat beim Erzeugen der Displays einen Fehler abgefangen. Lies im Server-Log die Zeile, die mit TextDisplay initialization error beginnt, für die Ursache, und prüfe, ob position, falls gesetzt, eine gültige Position in einer existierenden Welt ist.

Der Text erscheint zu Füßen des Spielers oder an der falschen Stelle. Der Text ist an der Position der Sprecher-Entity verankert. Ist speaker leer oder keine NPC-Instanz, die für den Spieler sichtbar ist, wird die Position des Spielers (einen Block höher) verwendet. Setze position, um ihn genau zu platzieren.

Das Optionsmenü lässt sich nicht bestätigen. Der Rechtsklick wird erst akzeptiert, nachdem das Tippen beendet ist und jede Option erschienen ist. Warte bei einer langen duration und vielen Optionen auf das vollständige Menü. Optionen, deren criteria nicht zutreffen, werden gar nicht angezeigt; trifft keine zu, kann nichts ausgewählt werden.

Scrollen ändert die Option nicht. Scroll-Events werden auf eines alle 150 ms gedrosselt, sehr schnelles Scrollen wird daher ignoriert. Der gehaltene Hotbar-Slot ändert sich während des Dialogs nie, das ist erwartetes Verhalten.

Der Countdown zeigt %typewriter_textdisplaydialogue_timer% unverändert an. Ohne PlaceholderAPI wird der Platzhalter nur in den Option-Dialogen ersetzt, und nur wenn timer größer als null ist. Installiere PlaceholderAPI, um ihn in einem gesprochenen Dialog oder anderswo zu verwenden.

Der Spieler beschwert sich, das Inventar sei gesperrt. Solange ein Dialog angezeigt wird, werden das Öffnen eines Inventars, Klicks darin, das Droppen von Items und das Tauschen der Hände abgebrochen. Das ist so gewollt und endet mit dem Dialog.

Verwandte Erweiterungen​

  • BetterModel — animierte Modell-NPCs, die Sprecher eines schwebenden Dialogs sein können.