Récupérer et Parser des Placeholders
Obtenir un PlaceholderParser
Les PlaceholderParsers sont stockés dans le registre Sponge, ce qui signifie qu’ils peuvent être obtenus de la même façon que n’importe quel autre CatalogType :
Sponge.getRegistry().getType(PlaceholderParser.class, id);
Astuce
N’oubliez pas que l’ID du PlaceholderParser
est de la forme pluginid:placeholderid
, par exemple sponge:name
.
Créer du Texte depuis un PlaceholderParser
Un PlaceholderParser
nécessite un PlaceholderContext afin de générer un objet Text approprié. Les PlaceholderContexts
peuvent être créés en utilisant un PlaceholderContext.Builder, obtenu depuis la méthode PlaceholderContext#builder().
Ce builder permet de fournir le contexte facultatif suivant :
Un objet associé, permettant au placeholder de modifier sa sortie (ce sera généralement un Player ou autre MessageReceiver)
Un string d’argument qu’un
PlaceholderParser
peut parser
Un PlaceholderContext
construit peut ensuite être fournit au ``PlaceholderParser` en utilisant PlaceholderParser#parse(PlaceholderContext).
Par exemple, si vous souhaitez inclure le nom d’un joueur en utilisant le parser sponge:name
, vous pouvez faire ceci :
Player player = ...;
// We know this exists
PlaceholderParser parser = Sponge.getRegistry().getType(PlaceholderParser.class, "sponge:name").get();
PlaceholderContext context = PlaceholderContext.builder()
.setAssociatedObject(player)
.build();
Text text = parser.parse(context);
Si le nom du joueur est « SpongePlayer », le text retourné sera SpongePlayer
Inclure des Placeholders dans un Text
Les Placeholders peuvent également être utilisant dans la méthode Text.of(...)
et l’objet Text.Builder sans les parser au préalable. Sponge fournit un objet PlaceholderText qui regroupe un PlaceholderParser
et un PlaceholderContext
ensemble dans un TextRepresentable.
Pour créer un PlaceholderText
, utilisez PlaceholderText#builder() et ajoutez les objets PlaceholderParser
et PlaceholderContext
comme approprié. Vous pouvez ensuite utiliser le PlaceholderText` construit dans les objets ``Text
.
Si vous souhaitiez utiliser le parser et le contexte de l’exemple précédent dans un Text.of()
, vous pourriez écrire ceci :
PlaceholderText placeholderText = PlaceholderText.builder().setContext(context).setParser(parser).build();
Text result = Text.of("Hello! Your name is ", placeholderText, "!");
Le texte dira « Hello! Your name is SpongePlayer! »
Note
Un PlaceholderText
sera parsé quand le Text
dans lequel il est placé sera construit, donc soit quand il sera placé dans un Text.of()
, soit quand il sera ajouté à un :javadoc:`Text.builder` et que la méthode Text.Builder#build() sera appelée.