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.