Links
Tags
Creators
Details
1.0.0
Compatibility
Required content
Changes
🔮 MysticPlaceholders
A standalone Minecraft plugin for creating custom placeholders with PlaceholderAPI integration, Skript support, and MySQL/MariaDB storage.
Features
- Numeric Placeholders — Store integer values like coins, tokens, kills, deaths, levels, mana, etc.
- Text Placeholders — Store string values like ranks, titles, factions, status, etc.
- Max Value Caps — Configure optional maximum limits per numeric placeholder.
- PlaceholderAPI Integration — Access placeholders via
%mysticplaceholders_<name>%. - Skript Integration — Full Skript addon with expressions, structures, and relational placeholder support.
- MySQL/MariaDB Storage — Persistent data via [MysticLib]'s shared database connection (HikariCP pooling).
- In-Memory Caching — Fast O(1) lookups for online players with automatic cache lifecycle.
- Async Database Operations — All database writes are non-blocking, keeping your server lag-free.
- MiniMessage Support — Full support for modern MiniMessage color/gradient formatting.
- Customizable Display — Configure
zero-displayandnormal-displayformats per placeholder. - Thread Safe —
ConcurrentHashMapcaching with atomic database upserts.
Requirements
| Requirement | Version |
|---|---|
| Paper / Purpur | 1.21.x+ |
| Java | 21+ |
| [MysticLib] | 1.0.0+ (required — provides database & logging) |
| [Skript] | 2.8+ (required — for Skript integration) |
| [PlaceholderAPI] | 2.11+ (required) |
| MySQL / MariaDB | 5.7+ / 10.2+ |
Installation
- Download the latest
MysticPlaceholders-x.x.x.jarfrom [Releases]. - Ensure MysticLib and PlaceholderAPI are already installed on your server.
- Place the JAR in your server's
plugins/folder. - Start/restart the server.
- Configure your placeholders in
plugins/MysticPlaceholders/config.yml. - Reload with
/mplaceholder reloador restart the server.
Note: Database connection is configured in MysticLib's
config.yml, not in this plugin. MysticPlaceholders uses MysticLib's shared database connection.
Configuration Notes
- Numeric placeholders:
%value%is replaced with the number. Optionalmaxcaps the value. - Text placeholders:
%value%is replaced with the stored string. Usenullto clear. - Colors: Use MiniMessage format (
<red>,<green>,<gradient:#hex1:#hex2>, etc.). Legacy&codes are auto-converted. - Text values: Underscores (
_) in text values are converted to spaces.
Commands
| Command | Description | Permission |
|---|---|---|
/mplaceholder set <player> <placeholder> <value> |
Set a placeholder value | mysticplaceholders.admin |
/mplaceholder add <player> <placeholder> <value> |
Add to a numeric value | mysticplaceholders.admin |
/mplaceholder remove <player> <placeholder> <value> |
Remove from a numeric value | mysticplaceholders.admin |
/mplaceholder list |
List all configured placeholders | mysticplaceholders.admin |
/mplaceholder reload |
Reload configuration | mysticplaceholders.admin |
Aliases: /mph, /mysticph, /mplh
Example Placeholders
After installing PlaceholderAPI, use placeholders anywhere that supports PAPI:
%mysticplaceholders_coins%
%mysticplaceholders_tokens%
%mysticplaceholders_kills%
%mysticplaceholders_deaths%
%mysticplaceholders_level%
%mysticplaceholders_mana%
%mysticplaceholders_rank%
%mysticplaceholders_title%
%mysticplaceholders_faction%
%mysticplaceholders_status%
Skript Integration
MysticPlaceholders registers as a full Skript addon. Enable/disable via skript-integration: true in config.
Get / Set Values
# Get a placeholder value
set {_mana} to mystic placeholder "mana" of player
# Set a value
set mystic placeholder "mana" of player to 100
# Add to a value
add 25 to mystic placeholder "mana" of player
# Remove from a value
remove 10 from mystic placeholder "coins" of player
Define Custom Placeholders in Skript
mystic placeholder with the prefix "custom":
if the identifier is "health_display":
set the result to "&c%health of player%❤"
if the identifier is "mana_bar":
set {_mana} to mystic placeholder "mana" of player
set the result to "&b%{_mana}%/100 ✦"
These are then usable as %custom_health_display% and %custom_mana_bar% via PlaceholderAPI.
Relational Placeholders
mystic relational placeholder with the prefix "rel":
if the identifier is "compare_level":
set {_l1} to mystic placeholder "level" of first player
set {_l2} to mystic placeholder "level" of second player
if {_l1} > {_l2}:
set the result to name of the first player
else:
set the result to name of the second player
Database
MysticPlaceholders uses MysticLib's shared database connection — you do not configure a database in this plugin.
How it works
- Configure your MySQL/MariaDB connection in
plugins/MysticLib/config.yml. - MysticPlaceholders automatically creates two tables:
mystic_placeholders_numeric— Stores numeric placeholder valuesmystic_placeholders_text— Stores text placeholder values
- If the database is disabled in MysticLib, the plugin runs in memory-only mode (data is lost on restart).
Performance
- HikariCP Connection Pool — Industry-standard, high-performance JDBC pooling (via MysticLib).
- Async Operations — All database writes are asynchronous via
CompletableFuture. - Atomic Upserts — Uses
INSERT ... ON DUPLICATE KEY UPDATEfor safe concurrent writes. - Smart Caching — Online player data is cached in
ConcurrentHashMapfor O(1) lookups. - Max Value Caps — Enforced at both cache and database level using SQL
LEAST().
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:1p1lSsgn:BRPDhToG"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:1p1lSsgn:BRPDhToG"
}

