Text Display Dialogue
Descripción general
Text Display Dialogue sustituye el cuadro de chat de los diálogos de TypeWriter por entidades text_display de Minecraft. El nombre del hablante y las líneas de texto flotan junto al NPC (o en una posición que elijas), se escriben solos y aparecen y desaparecen con una breve animación de escala. Todo se envía mediante paquetes al jugador que está en el diálogo: no se genera nada en el mundo y los demás jugadores no ven nada.
La extensión añade tres entradas de diálogo y una entrada de cinemática. Se comportan como las entradas de diálogo normales de TypeWriter (hablante, criteria, modifiers, triggers, duration de escritura, sound), por lo que puedes intercambiarlas en una conversación existente sin cambiar el resto de tu página.
Características
- Diálogo hablado flotante: el nombre del hablante y el texto aparecen sobre el hablante con un efecto de escritura y una animación de aparición.
- Menú de opciones en el mundo: cada opción es una línea flotante; el jugador desplaza la rueda sobre la barra rápida para cambiar la opción resaltada y hace clic derecho para confirmar.
- Menú relativo al jugador: una variante que sigue al jugador con un desfase configurable, para los hablantes que no tienen una posición en el mundo.
- Subtítulos de cinemática: muestra segmentos de texto en una línea de tiempo de cinemática con un retraso y una animación de escritura.
- Estilo completo:
scale,textOpacity,viewRange,billboardy colores de fondo independientes para el hablante, el texto y las opciones. - Temporizador de opciones: cancela automáticamente una elección tras un retraso y dispara
cancelTriggers, con un placeholder de cuenta atrás en directo. - Lógica por opción: cada opción tiene sus propios
criteria,modifiersytriggers, y una posición opcional. - Bloqueo del inventario: el jugador no puede abrir un inventario, soltar un objeto ni intercambiar las manos mientras se muestra un diálogo.
Instalación
- Instala PlaceholderAPI si quieres usar
%placeholders%en el texto de los diálogos (opcional). - Obtén la extensión en las tiendas (consulta los botones de arriba) y coloca el JAR en
plugins/Typewriter/extensions/. - Reinicia el servidor.
La extensión no necesita ningún otro plugin: las entidades de visualización de texto se envían con la biblioteca de paquetes incluida con TypeWriter. Funciona solo en Paper: Folia no es compatible.
Primeros pasos
Convierte un saludo sencillo en un diálogo flotante con una elección:
- En el panel web de TypeWriter, abre una página de secuencia que ya tenga un NPC (un hablante) y un disparador de interacción, o crea una.
- Añade una entrada Spoken dialogue with Text Display. Establece
speakeren tu NPC y escribe eltext, por ejemploWelcome, traveller!. Establecedurationen2spara obtener un efecto de escritura (cero muestra el texto de golpe). - Añade una entrada Option dialogue with Text Display, establece el mismo
speaker, escribe la pregunta entexty añade dos o tresoptions. Dale a cada opción sus propiostriggers. - Enlaza los
triggersde la entrada hablada con la entrada de opciones para que la conversación continúe. - Opcionalmente, establece
timeren la entrada de opciones en15sy enlazacancelTriggerscon una entrada de despedida. El texto puede mostrar la cuenta atrás con%typewriter_textdisplaydialogue_timer%. - Publica la página y habla con el NPC. Haz clic derecho en el texto flotante (o en el aire) para continuar; en una elección, desplaza la rueda sobre la barra rápida y haz clic derecho para confirmar.
Por defecto, el texto se coloca un bloque por encima de la posición del hablante. Si el hablante no es una entidad NPC con una posición, o quieres un lugar fijo, establece position con la herramienta de captura de posición. Usa la variante player option cuando el menú deba seguir al jugador.
Cómo funciona
Cada entrada de diálogo divide el texto en un text_display por línea, de modo que los mensajes largos se apilan hacia abajo. El efecto typing usa el modo de escritura estándar de TypeWriter. Las opciones aparecen una tras otra (con 100 ms de diferencia) cuando el texto está completo, y solo se pueden confirmar cuando todas son visibles.
Controles
| Diálogo | Continuar o confirmar | Cambiar de opción |
|---|---|---|
| Hablado | La tecla de confirmación de TypeWriter, o clic derecho en uno de los textos flotantes. Una primera pulsación completa la escritura y una segunda cierra el diálogo. | No aplicable |
| Opción y opción de jugador | Clic derecho en el aire o en uno de los textos flotantes, cuando se muestren todas las opciones. | Desplaza la rueda sobre la barra rápida (la ranura sostenida nunca cambia). La selección da la vuelta al llegar al final. |
Configuración
Los diálogos no tienen archivo de configuración. Cada texto mostrado es un snippet, editable en plugins/Typewriter/snippets; los valores por defecto reproducen la visualización estándar. Un <token> en un snippet se sustituye por su valor, y las demás <etiquetas> siguen siendo MiniMessage. En un snippet de diseño (*.format), el interlocutor y la indicación solo se muestran si su token está presente, mientras que el texto y las opciones se muestran siempre. Un snippet de indicación vacío no muestra ninguna indicación.
| Snippet | Usado por | Función | Tokens |
|---|---|---|---|
textdisplay.option.format | Option, Player option | Diseño | <speaker_name> <text> <options> <instruction> |
textdisplay.speaker.format | Option, Player option | Nombre del interlocutor | <speaker_name> |
textdisplay.option.prefix.selected | Option, Player option | Prefijo de la opción seleccionada | - |
textdisplay.option.prefix.unselected | Option, Player option | Prefijo de las demás opciones | - |
textdisplay.option.selected | Option, Player option | Línea de la opción seleccionada | <prefix> <option_number> <option_text> |
textdisplay.option.unselected | Option, Player option | Líneas de las demás opciones | <prefix> <option_number> <option_text> |
textdisplay.instruction | Option, Player option | Indicación | - |
textdisplay.spoken.format | Spoken | Diseño | <speaker_name> <text> <instruction> |
textdisplay.spoken.speaker.format | Spoken | Nombre del interlocutor | <speaker_name> |
textdisplay.spoken.text.format | Spoken | Línea de texto | <text> |
textdisplay.spoken.instruction | Spoken | Indicación | - |
textdisplay.spoken.continue | Spoken | Indicación para continuar (tecla de confirmación) | <key> |
textdisplay.cinematic.spoken.format | Cinemática | Diseño | <speaker_name> <text> <instruction> |
textdisplay.cinematic.spoken.speaker.format | Cinemática | Nombre del interlocutor | <speaker_name> |
textdisplay.cinematic.spoken.instruction | Cinemática | Indicación | - |
textdisplay.inventory.blocked | Todos los diálogos | Mensaje cuando un jugador intenta abrir un inventario (vacío: sin mensaje) | - |
textdisplay.error.init | Todos los diálogos | Mensaje cuando la visualización no puede iniciarse (vacío: sin mensaje) | - |
El diálogo Player option usa los mismos snippets que el diálogo Option.
Placeholders
| Placeholder | Devuelve |
|---|---|
%typewriter_textdisplaydialogue_timer% | Segundos restantes en el timer del diálogo de opciones actual, 0 cuando no hay ningún temporizador en marcha. |
El placeholder está registrado en PlaceholderAPI (expansión de Typewriter), por lo que también funciona en otros lugares (scoreboards, chat, otros plugins) y devuelve 0 cuando no hay ningún temporizador activo. La extensión también lo sustituye ella misma en el text de los diálogos de opciones, en el texto de cada opción y en el nombre del interlocutor, donde funciona sin PlaceholderAPI. Los demás placeholders de PlaceholderAPI funcionan en estos textos cuando PlaceholderAPI está instalado.
Entradas
4 entradas, generadas a partir del código fuente de la extensión.
Diálogos3
- Textdisplay OptionOption dialogue with Text Display
- Textdisplay Player OptionPlayer Option dialogue with Text Display(relative position)
- Textdisplay SpokenSpoken dialogue with Text Display
Cinemáticas1
- Textdisplay Spoken CinematicDisplay a spoken dialogue using TextDisplay during a cinematic
Resolución de problemas
No aparece nada y el jugador ve un "Dialog initialization error" en rojo. La extensión detectó un error al generar las visualizaciones. Lee en el registro del servidor la línea que empieza por TextDisplay initialization error para conocer la causa, y comprueba que position, cuando está definida, es una posición válida en un mundo existente.
El texto aparece a los pies del jugador o en un lugar equivocado. El texto se ancla a la posición de la entidad del hablante. Si speaker está vacío, o no es una instancia de NPC visible para el jugador, se usa la ubicación del jugador (más un bloque hacia arriba). Establece position para colocarlo con exactitud.
No se puede confirmar el menú de opciones. El clic derecho solo se acepta cuando ha terminado la escritura y han aparecido todas las opciones. Con una duration larga y muchas opciones, espera al menú completo. Las opciones cuyos criteria no se cumplen no se muestran en absoluto; si ninguna se cumple, no se puede seleccionar nada.
Desplazar la rueda no cambia la opción. Los eventos de desplazamiento se limitan a uno cada 150 ms, por lo que se ignora un desplazamiento muy rápido. La ranura de la barra rápida sostenida nunca cambia durante el diálogo; es lo esperado.
La cuenta atrás muestra %typewriter_textdisplaydialogue_timer% tal cual. Sin PlaceholderAPI, el placeholder solo se sustituye en los diálogos de opciones, y únicamente cuando timer es mayor que cero. Instala PlaceholderAPI para usarlo en un diálogo hablado o en otro lugar.
El jugador se queja de que el inventario está bloqueado. Mientras se muestra un diálogo, se cancelan abrir un inventario, hacer clic en él, soltar objetos e intercambiar las manos. Es intencionado y termina con el diálogo.
Extensiones relacionadas
- BetterModel: NPC con modelos animados que pueden ser el hablante de un diálogo flotante.