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.