Skip to main content

Integration

This guide will teach you how to use the MiniPlaceholders API in your plugins or mods to parse placeholders from other projects.

Obtaining Placeholders​

You can get the required plugin/mod placeholders whenever you want, from the methods located in the main MiniPlaceholders class

Global​

TagResolver resolver = MiniPlaceholders.globalPlaceholders();

Component parsedMessage = MiniMessage.miniMessage().deserialize("Online Players: <proxy_online_players>", resolver);
note

Starting with MiniPlaceholders v3, the returned TagResolvers do not depend on an Audience or a RelationalAudience. This was done to modernize the API, improve placeholder processing performance, and avoid potential issues when caching TagResolvers.

Audience​

Player player = event.getPlayer();

TagResolver resolver = MiniPlaceholders.audiencePlaceholders();

Component parsedMessage = MiniMessage.miniMessage().deserialize("Player name: <player_name>", player, resolver);

Relational​

Player mainPlayer = event.getPlayer();
Player playerTwo = event.getAttacker();

TagResolver resolver = MiniPlaceholders.relationalPlaceholders();

Component parsedMessage = MiniMessage.miniMessage().deserialize("Player name: <player_name> Attacker Name: <example_war_plugin_rel_attacker_name>", new RelationalAudience<>(mainPlayer, playerTwo), resolver);

Single Expansion usage​

You can also use unregistered Expansions to obtain placeholders. This can be useful for example, for an internal expansion of your plugin.

Expansion expansion = Expansion.builder("internal")
.globalPlaceholder("sum", (queue, ctx) -> {
int sum = 0;
while (queue.hasNext()) {
sum += queue.pop().asInt().orElse(0);
}
return Tag.selfClosingInserting(Component.text(sum));
})
.build();

Component parsed = MiniMessage.miniMessage().deserialize("Sum of several numbers: <internal_sum:1:2:3:4:10:50>", expansion.globalPlaceholders());

assert PlainTextComponentSerializer.plainText().serialize(parsed).equals("Sum of several numbers: 70");