PlaceholderAPI is a simple library for handling placeholders in PowerNukkitX plugins. It supports both static and dynamic placeholders with parameters.
<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories><dependency>
<groupId>com.github.PowerNukkitX-Bundle</groupId>
<artifactId>PlaceholderAPI</artifactId>
<version>main-SNAPSHOT</version>
<scope>provided</scope>
</dependency>- StaticPlaceholder: Placeholders without parameters.
- VisitorPlaceholder: Placeholders with parameters.
- Supports parsing parameters using
String[]for dynamic placeholders.
- %player%: The players username
- %player_nametag% - The players nametag
- %player_displayname%: The players displayname
- %player_uuid%: The players uuid
- %player_xuid% - The players xuid
- %player_ping%: The players ping
- %player_level%: The name of the world the player is in
- %player_health%: The players health
- %player_max_health%: The players max health
- %player_saturation%: The players food saturation
- %player_food%: The players food level
- %player_max_food%: The players max food
- %player_gamemode%: The players gamemode (numerical)
- %player_exp%: The players experience
- %player_exp_level%: The players experience level
- %player_platform%: The players platform
- %player_pos%: The players position (also can do player_pos;x for just x etc.)
- %player_item% - The item the player is holding in his hand
- %player_offhand% - The item the player is holding in his offhand
- %server_online%: The amount of players on the server
- %server_max_players%: The player limit of the server
- %server_motd%: The servers message of the day
- %server_tps%: The servers tps
- %server_tick% - The servers current tick
- %server_difficulty% - The servers difficulty
- %server_git% - The servers git version
- %server_version% - The servers minecraft version
- %server_protocol% - The servers protocol version
- %time%: The servers date time (also can do time;HH:mm:ss / Other format)
You can register a static placeholder using the StaticPlaceholder class:
PlaceholderAPI.get().register("server_name", new StaticPlaceholder(() -> "My Nukkit Server"));For placeholders with parameters, use the VisitorPlaceholder class:
PlaceholderAPI.get().register("player_stat", new VisitorPlaceholder((player, params) -> {
if (params.length == 0) {
return "No stat provided!";
}
String stat = params[0];
switch (stat) {
case "kills":
return "10 Kills"; // Replace with your logic
case "deaths":
return "5 Deaths"; // Replace with your logic
default:
return "Unknown stat: " + stat;
}
}));PlaceholderAPI.get().register("player_exp", (player, params) -> String.valueOf(player.getExperience()));Use the processPlaceholders method to replace placeholders in strings:
String message = "Welcome to %server_motd%! Your stats: Kills: %player_stat;kills%, Deaths: %player_stat;deaths%.";
String processedMessage = PlaceholderAPI.get().processPlaceholders(player, message);
player.sendMessage(processedMessage);Output:
Welcome to PowerNukkitX Server! Your stats: Kills: 10 Kills, Deaths: 5 Deaths.
-
Static Placeholders
- Do not accept parameters.
- Example:
%server_motd%.
-
Dynamic Placeholders
- Accept parameters separated by semicolons.
- Example:
%player_pos;x%,%player_stat;deaths%.
@Override
public void onEnable() {
// Register a static placeholder
PlaceholderAPI.get().register("server_name", new StaticPlaceholder(() -> "My Nukkit Server"));
// Register a dynamic placeholder
PlaceholderAPI.get().register("player_stat", new VisitorPlaceholder((player, params) -> {
if (params.length == 0) {
return "No stat provided!";
}
String stat = params[0];
switch (stat) {
case "kills":
return "10 Kills"; // Replace with your logic
case "deaths":
return "5 Deaths"; // Replace with your logic
default:
return "Unknown stat: " + stat;
}
}));
getLogger().info("PlaceholderAPI initialized!");
}
public void sendExampleMessage(Player player) {
String message = "Welcome to %server_name%! Your stats: Kills: %player_stat:kills%, Deaths: %player_stat:deaths%.";
String processedMessage = PlaceholderAPI.get().processPlaceholders(player, message);
player.sendMessage(processedMessage);
}- Add the
PlaceholderAPIclass to your PowerNukkitX project. - Register placeholders using
register. - Replace placeholders in strings using
processPlaceholders.
This project is licensed under the MIT License.