Creación de Texto

El Texto API se utiliza para crear el texto con formato, que se puede enviar a los jugadores en los mensajes de chat, y puede también ser utilizado en lugares como libros y carteles.

Texto Sin Formato

A menudo, todo lo que necesita es texto sin formato. El texto sin formato no requiere la utilización de un generador de texto, y es la forma más simple de crear un texto.

Ejemplo:

import org.spongepowered.api.text.Text;

Text unformattedText = Text.of("Hey! This is unformatted text!");

El fragmento de código ilustrado anteriormente devolverá texto sin color, el texto sin formato sin acciones de texto configuradas.

Generador de Texto

La interfaz del generador de texto permite la creación de un texto con formato en un estilo de «building-block».

Truco

Leer este Artículo de Wikipedia para ayudar a entender el propósito del patrón de generador en el diseño del software.

Colores

Un uso del generador de texto es la adición de color al texto, como se ilustra a continuación.

Ejemplo: Texto con Color

import org.spongepowered.api.text.format.TextColors;

Text coloredText = Text.builder("Woot! Golden text is golden.").color(TextColors.GOLD).build();

Cualquier color especificado dentro de la clase TextColors puede ser utilizado para colorear el texto. Colores múltiples se pueden utilizar en el texto al agregar textos adicionales con diferentes colores:

Ejemplo: Texto Multicolor

Text multiColoredText = Text.builder("Sponges are ").color(TextColors.YELLOW).append(
        Text.builder("invincible!").color(TextColors.RED).build()).build();

Estilo

El generador puede también utilizarse para el estilo de texto, incluyendo subrayado, cursiva, etc.

Ejemplo: Texto con Estilo

import org.spongepowered.api.text.format.TextStyles;

Text styledText = Text.builder("Yay! Styled text!").style(TextStyles.ITALIC).build();

Al igual que con los colores, pueden ser utilizados múltiples estilos encadenando estilos separados de textos.

Ejemplo: Texto con Múltiples Estilos

Text multiStyledText = Text.builder("I'm italicized! ").style(TextStyles.ITALIC)
        .append(Text.builder("I'm bold!").style(TextStyles.BOLD).build()).build();

Acceso Directo de Color y Estilo

El método Text#of(Object…) proporciona una manera simple de agregar color y estilo a su texto de una manera mucho más concisa.

Ejemplo: Acceso Directo de Color y Estilo

Text colorAndStyleText = Text.of(TextColors.RED, TextStyles.ITALIC, "Shortcuts for the win!");

Acciones de Texto

El generador de texto también ofrece la posibilidad de crear acciones de texto. Cualquier acción especificada dentro de la clase :javadoc:`TextActions`puede ser utilizada al crear acciones de texto para texto. El método a continuación es un pequeño ejemplo de lo que las acciones de texto pueden hacer.

Ejemplo: Texto con una Acción

import org.spongepowered.api.text.action.TextActions;

Text clickableText = Text.builder("Click here!").onClick(TextActions.runCommand("tell Spongesquad I'm ready!")).build();

En el método anterior, los jugadores pueden hacer clic al texto «¡Haga click aquí!» para ejecutar el comando especificado.

Nota

Algunas acciones de texto, como TextActions#changePage(int), sólo pueden utilizarse con los elementos del libro.

Truco

Al igual que con los colores, múltiples acciones pueden ser añadidas al texto. Las acciones de texto pueden ser utilizadas junto con los colores debido a la interfaz de patrón del generador.

Selectores

Los selectores de objetivos pueden ser utilizados para apuntar a jugadores o entidades que cumplan un criterio especificado. Los selectores de objetivos son particularmente útiles al crear complementos de minijuegos, pero tienen una amplia gama de aplicaciones.

Truco

Leer este Artículo del wiki Minecraft que ayuda a entender que selectores de objetivos están en Minecraft, y como pueden utilizarse.

Para utilizar selectores en texto, debe usar la interfaz Selector.Builder. Esto es ilustrado en el ejemplo a continuación.

Ejemplo: Texto Generado por Selector

import org.spongepowered.api.text.selector.Selector;

Text adventurers = Text.builder("These players are in adventure mode: ").append(
        Text.of(Selector.parse("@a[m=2]"))
).build();

En este ejemplo, el selector de objetivo @a[m=2] se dirige a cada jugador en línea que está en modo aventura. Cuando el método es llamado, se devolverá un texto que contiene los nombres de usuario de cada jugador en línea que está en modo aventura.