PlaceholderAPI is a placeholder expansion system for PMMPCore Framework that brings dynamic text replacement to Minecraft Bedrock. Parse placeholders in chat messages, scoreboards, nametags, and any custom text with support for multiple expansion modules.


What Does This Plugin Do?
PlaceholderAPI provides a centralized placeholder parsing engine that allows other plugins to register expansion modules. Text containing placeholders like %player_name% or %server_tps% is automatically replaced with live values. Built-in expansions cover player data, server metrics, time, and general information.
⚠️ Requirements
| Requirement |
Status |
Details |
| ❌ PMMPCore Framework |
Required |
This plugin cannot work without PMMPCore Framework installed. |
| ✅ Server Owner |
Recommended |
Foundation for dynamic text display across plugins. |
Key Features
- ✅ Dynamic Placeholder Parsing: Replace
%placeholder% patterns with live server and player data.
- ✅ Modular Expansions: Register/unregister expansion modules from any plugin.
- ✅ Built-in Expansions: Player, Server, Time, and General expansions pre-included.
- ✅ Third-Party Expansions: EconomyAPI, PurePerms, and EssentialsTP register their own placeholders.
- ✅ Caching System: Configurable TTL-based caching for frequently accessed placeholders.
- ✅ Command Interface: Parse, test, list, and reload placeholders through commands.
- ✅ Player Context: Placeholders can resolve per-player values dynamically.
- PurePerms:
%pureperms_rank%, %pureperms_prefix%, %pureperms_suffix%, %pureperms_group%, %pureperms_groups%
🛠️ Available Commands
| Command |
Syntax |
Description |
| papi |
/papi reload |
Reload placeholder configuration |
| papi |
/papi list |
List all registered expansions |
| papi |
/papi parse <text> |
Parse placeholder text and see result |
| papi |
/papi test <expansion> <key> |
Test a specific placeholder |
Example Usage
# List all loaded expansions
/papi list
# Parse a placeholder string
/papi parse "Hello %player_name%, you have %economy_money% coins!"
# Test a specific placeholder
/papi test server tps
# Reload configuration
/papi reload
Built-in Placeholders
| Expansion |
Placeholder |
Description |
| General |
%general_motd% |
Server MOTD |
| Player |
%player_name% |
Player's display name |
| Player |
%player_x%, %player_y%, %player_z% |
Player coordinates |
| Player |
%player_dimension% |
Current dimension ID |
| Player |
%player_health% |
Current health |
| Player |
%player_max_health% |
Maximum health |
| Player |
%player_level% |
Experience level |
| Player |
%player_gamemode% |
Current game mode |
| Player |
%player_ping% |
Player latency/ms |
| Server |
%server_online_players% |
Online player count |
| Server |
%server_max_players% |
Maximum player slots |
| Server |
%server_tps% |
Server ticks per second |
| Server |
%server_load% |
Server load percentage |
| Server |
%server_ip% |
Server IP address |
| Server |
%server_motd% |
Server MOTD |
| Server |
%server_version% |
Server version |
| Time |
%time_date% |
Current date |
| Time |
%time_time% |
Current time |
| Time |
%time_unix% |
Unix timestamp |
Third-Party Placeholders
These plugins register their own placeholders through PlaceholderAPI:
| Plugin |
Placeholder |
Description |
| EconomyAPI |
%economy_money% |
Player's wallet balance |
| EconomyAPI |
%economy_bank% |
Player's bank balance |
| EconomyAPI |
%economy_debt% |
Player's current debt |
| PurePerms |
%pureperms_rank% |
Player's rank/group |
| PurePerms |
%pureperms_prefix% |
Player's prefix |
| PurePerms |
%pureperms_suffix% |
Player's suffix |
| EssentialsTP |
%essentialstp_home_count% |
Player's home count |
Configuration Options
const PLACEHOLDER_CONFIG = {
debug: false,
maxParseInputLength: 240,
cacheTtl: {
generalMs: 1000,
serverMs: 1000,
timeMs: 1000,
playerMs: 250
},
enabledExpansions: {
general: true,
player: true,
server: true,
time: true
}
};
Developer API
Plugins can register custom expansions:
// Register a custom expansion
placeholderPlugin.runtime.registerExpansion({
identifier: "myplugin",
version: "1.0.0",
author: "You",
onPlaceholderRequest: (player, key) => {
if (key === "custom_value") return "42";
return null;
}
});
Compatibility & Requirements
- ⚠️ Requires PMMPCore Framework: This plugin is part of the PMMPCore ecosystem and cannot function independently.
- ✅ Version: Optimized for Minecraft Bedrock 1.21.70+ (Release).
- ✅ Multiplayer: Fully tested on Realms and Dedicated Servers.
- ✅ Cross-Plugin: Works with EconomyAPI, PurePerms, PureChat, ScoreHud, and EssentialsTP.
- ✅ License: GPL-3.0 - Free to use, modify, and distribute under the same terms.
Installation
- Download PlaceholderAPI from CurseForge (comes as .mcpack file)
- Change file extension: Rename
PlaceholderAPI.mcpack to PlaceholderAPI.zip
- Extract the archive: Unzip the file to access the contents
- Locate PMMPCore: Find your PMMPCore Framework installation folder
- Copy plugin files: From the extracted folder, copy the
PlaceholderAPI folder from scripts/plugins/
- Paste to plugins: Paste the folder into
scripts/plugins/ within PMMPCore
- Register plugins: Open
scripts/plugins.js and add the import:
// Add this line to your plugins.js file
import "./plugins/PlaceholderAPI/main.js";
- Restart server: Restart Minecraft Bedrock to load the plugin
- Verify installation: Use
/plugins to confirm plugin is loaded
Getting Started
- Install PMMPCore Framework first (required dependency)
- Follow the installation steps above to add PlaceholderAPI
- Restart your server to initialize the plugin
- Use
/papi list to verify expansions are loaded
- Use
/papi parse "Hello %player_name%!" to test parsing
- Other plugins (EconomyAPI, PurePerms, etc.) will auto-register their expansions
Need help with placeholders? Join our Discord Server for support!
⚠️ Important Notice: This plugin requires PMMPCore Framework and is designed for server administrators with technical knowledge of server management.