Text Display Dialogue
Обзор
Text Display Dialogue заменяет окно чата в диалогах TypeWriter сущностями Minecraft text_display. Имя говорящего и строки текста парят рядом с NPC (или в выбранной вами позиции), сами «печатаются» и появляются и исчезают с короткой анимацией масштаба. Всё отправляется пакетами игроку, участвующему в диалоге: в мире ничего не создаётся, а другие игроки ничего не видят.
Расширение добавляет три записи диалогов и одну запись кинематики. Они ведут себя как обычные записи диалогов TypeWriter (говорящий, criteria, modifiers, triggers, duration печати, sound), поэтому вы можете подставить их в существующий разговор, не меняя остальную часть страницы.
Возможности
- Плавающий диалог с репликами — имя говорящего и текст появляются над говорящим с эффектом печати и анимацией появления.
- Меню выбора в мире — каждый вариант — это плавающая строка; игрок прокручивает хотбар, чтобы сменить подсвеченный вариант, и кликает правой кнопкой для подтверждения.
- Меню относительно игрока — вариант, который следует за игроком с настраиваемым смещением, для говорящих, у которых нет позиции в мире.
- Субтитры для кинематики — показывайте текстовые сегменты на таймлайне кинематики с задержкой и анимацией печати.
- Полная стилизация —
scale,textOpacity,viewRange,billboardи отдельные цвета фона для говорящего, текста и вариантов. - Таймер вариантов — автоматически отменяйте выбор после задержки и запускайте
cancelTriggers, с плейсхолдером живого обратного отсчёта. - Логика для каждого варианта — у каждого варианта свои
criteria,modifiersиtriggersи необязательная позиция. - Блокировка инвентаря — пока показан диалог, игрок не может открыть инвентарь, выбросить предмет или поменять руки.
Установка
- Установите PlaceholderAPI, если хотите использовать
%placeholders%в тексте диалогов (необязательно). - Получите расширение в магазинах (см. кнопки выше) и поместите JAR-файл в
plugins/Typewriter/extensions/. - Перезапустите сервер.
Расширению не нужны другие плагины: сущности text display отправляются с помощью библиотеки пакетов, входящей в TypeWriter. Расширение работает только на Paper: Folia не поддерживается.
Начало работы
Превратите простое приветствие в плавающий диалог с выбором:
- В веб-панели TypeWriter откройте страницу sequence, на которой уже есть NPC (говорящий) и триггер взаимодействия, или создайте её.
- Добавьте запись Spoken dialogue with Text Display. Задайте
speakerравным вашему NPC и напишитеtext, напримерWelcome, traveller!. Задайтеdurationравным2s, чтобы получить эффект печати (ноль показывает текст сразу). - Добавьте запись Option dialogue with Text Display, задайте тот же
speaker, напишите вопрос вtext, затем добавьте два-три варианта вoptions. Задайте каждому варианту собственныеtriggers. - Свяжите
triggersзаписи с репликой с записью с вариантами, чтобы разговор продолжался. - По желанию задайте
timerу записи с вариантами равным15sи свяжитеcancelTriggersс записью прощания. Текст может показывать обратный отсчёт с помощью%typewriter_textdisplaydialogue_timer%. - Опубликуйте (Publish) страницу и поговорите с NPC. Кликните правой кнопкой по плавающему тексту (или по воздуху), чтобы продолжить; при выборе прокрутите хотбар и кликните правой кнопкой для подтверждения.
По умолчанию текст размещается на один блок выше позиции говорящего. Если говорящий не является сущностью NPC с позицией или вам нужно фиксированное место, задайте position с помощью инструмента захвата позиции. Используйте вариант player option, когда меню должно следовать за игроком.
Как это работает
Каждая запись диалога разбивает текст на один text_display на строку, поэтому длинные сообщения располагаются стопкой вниз. Эффект typing использует стандартный режим печати TypeWriter. Варианты появляются один за другим (с интервалом 100 мс) после завершения текста, и подтвердить их можно только когда видны все.
Управление
| Диалог | Продолжить или подтвердить | Сменить вариант |
|---|---|---|
| Spoken | Клавиша подтверждения TypeWriter или правый клик по одному из плавающих текстов. Первое нажатие завершает печать, второе закрывает диалог. | Неприменимо |
| Option и Player option | Правый клик по воздуху или по одному из плавающих текстов, когда показаны все варианты. | Прокрутка хотбара (удерживаемый слот никогда не меняется). Выбор зациклен. |
Конфигурация
У диалогов нет файла конфигурации. Каждый отображаемый текст — это snippet, который можно изменить в plugins/Typewriter/snippets; значения по умолчанию воспроизводят стандартное отображение. <token> в сниппете заменяется своим значением, а остальные <теги> остаются MiniMessage. В сниппете макета (*.format) говорящий и подсказка показываются, только если в нём есть их токен, а текст и варианты ответа показываются всегда. Пустой сниппет подсказки не показывает подсказку.
| Сниппет | Используется в | Назначение | Токены |
|---|---|---|---|
textdisplay.option.format | Option, Player option | Макет | <speaker_name> <text> <options> <instruction> |
textdisplay.speaker.format | Option, Player option | Имя говорящего | <speaker_name> |
textdisplay.option.prefix.selected | Option, Player option | Префикс выбранного варианта | - |
textdisplay.option.prefix.unselected | Option, Player option | Префикс остальных вариантов | - |
textdisplay.option.selected | Option, Player option | Строка выбранного варианта | <prefix> <option_number> <option_text> |
textdisplay.option.unselected | Option, Player option | Строки остальных вариантов | <prefix> <option_number> <option_text> |
textdisplay.instruction | Option, Player option | Подсказка | - |
textdisplay.spoken.format | Spoken | Макет | <speaker_name> <text> <instruction> |
textdisplay.spoken.speaker.format | Spoken | Имя говорящего | <speaker_name> |
textdisplay.spoken.text.format | Spoken | Строка текста | <text> |
textdisplay.spoken.instruction | Spoken | Подсказка | - |
textdisplay.spoken.continue | Spoken | Подсказка продолжения (клавиша подтверждения) | <key> |
textdisplay.cinematic.spoken.format | Кинематика | Макет | <speaker_name> <text> <instruction> |
textdisplay.cinematic.spoken.speaker.format | Кинематика | Имя говорящего | <speaker_name> |
textdisplay.cinematic.spoken.instruction | Кинематика | Подсказка | - |
textdisplay.inventory.blocked | Все диалоги | Сообщение, когда игрок пытается открыть инвентарь (пусто: без сообщения) | - |
textdisplay.error.init | Все диалоги | Сообщение, когда отображение не удалось запустить (пусто: без сообщения) | - |
Диалог Player option использует те же сниппеты, что и диалог Option.
Плейсхолдеры
| Плейсхолдер | Возвращает |
|---|---|
%typewriter_textdisplaydialogue_timer% | Секунды, оставшиеся на timer текущего диалога с вариантами, 0, когда таймер не запущен. |
Плейсхолдер зарегистрирован в PlaceholderAPI (расширение Typewriter), поэтому он работает и в других местах (скорборды, чат, другие плагины) и возвращает 0, когда таймер не запущен. Расширение также само заменяет его в text диалогов с вариантами, в тексте каждого варианта и в имени говорящего, так что там он работает и без PlaceholderAPI. Остальные плейсхолдеры PlaceholderAPI работают в этих текстах, если PlaceholderAPI установлен.
Записи
Записей: 4, сгенерированы из исходного кода расширения.
Диалоги3
- Textdisplay OptionOption dialogue with Text Display
- Textdisplay Player OptionPlayer Option dialogue with Text Display(relative position)
- Textdisplay SpokenSpoken dialogue with Text Display
Кинематики1
- Textdisplay Spoken CinematicDisplay a spoken dialogue using TextDisplay during a cinematic
Устранение неполадок
Ничего не появляется, а игрок видит красное «Dialog initialization error». Расширение перехватило ошибку при создании отображений. Прочитайте в логе сервера строку, начинающуюся с TextDisplay initialization error, чтобы узнать причину, и проверьте, что position, если он задан, является допустимой позицией в существующем мире.
Текст появляется у ног игрока или не в том месте. Текст привязан к позиции сущности говорящего. Если speaker пуст или не является экземпляром NPC, видимым игроку, используется положение игрока (плюс один блок вверх). Задайте position, чтобы разместить его точно.
Меню вариантов нельзя подтвердить. Правый клик принимается только после окончания печати и появления всех вариантов. При большом duration и множестве вариантов дождитесь полного меню. Варианты, criteria которых не выполняются, не показываются вообще; если не подходит ни один, выбрать нечего.
Прокрутка не меняет вариант. События прокрутки ограничены одним в 150 мс, поэтому очень быстрая прокрутка игнорируется. Удерживаемый слот хотбара во время диалога никогда не меняется, так и задумано.
Обратный отсчёт показывает %typewriter_textdisplaydialogue_timer% как есть. Без PlaceholderAPI плейсхолдер заменяется только в диалогах с вариантами и только если timer больше нуля. Установите PlaceholderAPI, чтобы использовать его в обычном диалоге или в других местах.
Игрок жалуется, что инвентарь заблокирован. Пока показан диалог, открытие инвентаря, клики в нём, выбрасывание предметов и обмен руками отменяются. Так и задумано, и это заканчивается вместе с диалогом.
Связанные расширения
- BetterModel — анимированные NPC-модели, которые могут быть говорящими в плавающем диалоге.