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.