Création de Text

La Text API est utilisée pour créer du texte formaté, qui peut être envoyé aux joueurs en messages dans le chat, mais qui peuvent aussi être placés dans les livres ou sur les panneaux.

Text non formaté

Souvent, vous avez besoin de texte non-formaté. Le texte non-formaté ne nécessite pas d’utiliser le générateur de texte, et est la plus simple forme de texte à créer.

Exemple:

import org.spongepowered.api.text.Text;

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

L’extrait de code illustré ci-dessous retourne du texte non formaté, sans couleur, avec aucune action de texte configurée.

Constructeur de Text

L’interface de construction de texte permet la création de texte formaté sous forme de « bloc de construction ».

Astuce

Consultez cet article Wikipedia afin de vous aider à comprendre le but du monteur (builder pattern) dans l’ingénierie logicielle.

Couleurs

Une utilisation du constructeur de texte est l’ajout de couleurs au texte, comme illustré ci-dessous.

Exemple: Texte en couleur

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

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

Toutes les couleurs spécifiées dans la classe TextColors peuvent être utilisées pour colorer un texte. Plusieurs couleurs peuvent être utilisées dans un même texte en y ajoutant bout à bout d’autres textes de couleurs différentes:

Exemple: Texte Multicolor

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

Stylisation

Le générateur de texte peut aussi être utilisé pour styliser du texte, ce qui inclue le soulignement, la mise en italique, etc.

Exemple: Texte Stylisé

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

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

Tout comme les couleurs, plusieurs styles peuvent être utilisés en enchaînant plusieurs textes séparément stylisés.

Exemple: Texte à styles multiples

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

Raccourcis de Colorisation et Stylisation

La méthode Text#of(Object…) fournit un façon simple d’ajouter une couleur ou un style à votre texte de manière beaucoup plus concise.

Exemple: Raccourcis de Couleur et Style

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

Actions de Texte

Le générateur de texte offre aussi la possibilité de créer des actions pour le texte. Toute action spécifiée dans la classe TextActions peut être utilisée lorsque vous créez des actions de texte pour un texte. La méthode employé ci-dessous est un petit exemple de ce que les actions de texte peuvent faire.

Exemple: Texte avec une Action

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

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

Avec la méthode donnée ci-dessus, les joueurs peuvent cliquer sur « Click here! » pour lancer une certaine commande.

Note

Certaines actions de texte, telle que TextActions#changePage(int), sont utilisables uniquement avec les éléments du livre.

Astuce

Comme pour les couleurs, plusieurs actions peuvent être ajoutées à un texte. Les actions de texte peuvent même être utilisée en tandem avec les couleurs grâce à l’interface de model de construction.

Sélecteurs

Les sélecteurs sont utilisés pour cibler des joueurs ou des entités qui remplissent certains critères. Les sélecteurs sont particulièrement utiles pour créer des plugins de mini-jeux, mais aussi pour beaucoup d’autres choses.

Astuce

Consultez cet article du wiki Minecraft pour mieux comprendre ce que sont les sélecteurs de cible dans Minecraft, et comment les utiliser.

Pour utiliser les sélecteurs dans une texte, vous devez utiliser l’interface Selector.Builder. Ce que l’exemple ci-dessous vous illustre.

Exemple: Texte généré par Sélecteur

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();

Dans cet exemple, le sélecteur de cible @a[m=2] cible tous les joueurs connectés qui sont en mode aventure. Quand une méthode est appelée, un objet Text sera retourné, contenant les noms de chaque joueur en ligne étant en mode aventure.