Build custom PlaceholderAPI variables with conditions, expressions, nesting, and persistent storage.
PlexVariables
Create powerful custom PlaceholderAPI variables using YAML.
PlexVariables lets you build reusable placeholders with conditions, mathematical expressions, nested variables, and persistent player or global storage without writing a custom plugin for every value.
Paper 1.21+ • Java 21 • PlaceholderAPI Required
Features
- Custom PlaceholderAPI variables
- Static variables
- Conditional variables
- Mathematical expression variables
- Player and global stored variables
- Nested PlexVariables
- External PlaceholderAPI support
- SQLite persistence
- Asynchronous storage
- No database I/O during normal placeholder resolution
- Permission and world conditions
- Numeric and string comparisons
- Safe mathematical expression engine
- Transactional configuration reloads
- Cycle protection
- Resolution depth and work limits
- Recursive YAML file discovery
- Configurable messages and formatting
- Detailed
/pv testdebugging
Screenshots
Conditional Variables
Create placeholders that automatically change depending on player or server state.

Stored Variables
Create persistent values such as currencies, counters, statistics, server states, and more.

Nested Variables
Combine PlexVariables with other PlexVariables and PlaceholderAPI placeholders.

Simple YAML Configuration
Variables are stored inside clean YAML files and automatically discovered by PlexVariables.

Use Them Anywhere
Use your variables anywhere another plugin supports PlaceholderAPI.

Placeholder Format
Every PlexVariables variable is exposed through PlaceholderAPI.
%plexvar_<id>%
For example:
%plexvar_health_status%
%plexvar_player_gems%
%plexvar_server_name%
Global stored variables can also use:
%plexvar_global_<id>%
Variable Types
STATIC
Static variables are reusable text values.
They can also contain normal PlaceholderAPI placeholders and other PlexVariables.
variables:
server_name:
type: static
value: "&d&lPlex Network"
welcome:
type: static
value: "&fWelcome &d%player_name% &fto %plexvar_server_name%!"
You can then use:
%plexvar_server_name%
%plexvar_welcome%
CONDITIONAL
Conditional variables return different values depending on configurable conditions.
variables:
health_status:
type: conditional
conditions:
- condition: "%player_health% <= 5"
value: "&cCritical"
- condition: "%player_health% <= 10"
value: "&eLow"
default: "&aHealthy"
Use:
%plexvar_health_status%
Conditions are evaluated from top to bottom.
The first matching condition is used.
Supported Conditions
==
!=
>
>=
<
<=
contains
!contains
startsWith
endsWith
matches
permission:<node>
!permission:<node>
world:<name>
!world:<name>
Example:
variables:
player_role:
type: conditional
conditions:
- condition: "permission:plexvariables.admin"
value: "&cAdministrator"
default: "&7Player"
EXPRESSION
Expression variables let you perform mathematical calculations using numbers and PlaceholderAPI values.
variables:
kd_ratio:
type: expression
expression: "%statistic_player_kills% / %statistic_deaths%"
decimals: 2
on-error: "0"
Operators
+
-
*
/
%
^
Functions
sqrt()
min()
max()
abs()
round()
floor()
ceil()
Example:
variables:
winrate:
type: expression
expression: "(%statistic_player_wins% / (%statistic_player_wins% + %statistic_player_losses%)) * 100"
decimals: 1
suffix: "%"
on-error: "0%"
PlexVariables uses its own mathematical expression engine rather than executing arbitrary code.
STORED
Stored variables save persistent values using SQLite.
Player Variables
Each player receives their own stored value.
variables:
player_gems:
type: stored
scope: player
default: "0"
Use:
%plexvar_player_gems%
Global Variables
Global values are shared across the entire server.
variables:
server_event_status:
type: stored
scope: global
default: "inactive"
Use:
%plexvar_server_event_status%
or:
%plexvar_global_server_event_status%
Nested Variables
Variables can reference other PlexVariables.
variables:
server_name:
type: static
value: "&dPlex Network"
welcome_message:
type: static
value: "&fWelcome to %plexvar_server_name%&f!"
This lets you build larger systems from smaller reusable variables instead of repeating the same values across multiple configurations.
PlexVariables also includes cycle protection to prevent invalid recursive variable chains.
Commands
Main command:
/plexvariables
Aliases:
/plexvar
/pvar
/pv
| Command | Description |
|---|---|
/pv help |
Show command help |
/pv list [page] |
List loaded variables |
/pv reload |
Reload PlexVariables |
/pv parse <player|--null> <text> |
Parse placeholders |
/pv test <player|--null> <variable> |
Debug variable evaluation |
/pv set <variable> <player|global> <value> |
Set a stored value |
/pv add <variable> <player|global> <amount> |
Add to a stored value |
/pv get <variable> [player|global] |
View a stored value |
/pv reset <variable> <player|global> |
Reset a stored value |
Permissions
| Permission | Description |
|---|---|
plexvariables.use |
Access PlexVariables commands |
plexvariables.admin |
Grants all PlexVariables permissions |
plexvariables.reload |
Reload configuration |
plexvariables.list |
List variables |
plexvariables.parse |
Parse placeholders |
plexvariables.test |
Debug variables |
plexvariables.set |
Set stored variables |
plexvariables.add |
Add to stored variables |
plexvariables.get |
View stored variables |
plexvariables.reset |
Reset stored variables |
Installation
- Install PlaceholderAPI
- Download PlexVariables
- Place the JAR inside your server's
pluginsfolder - Start or restart your server
- Configure your variables inside:
plugins/PlexVariables/variables/
- Reload changes with:
/pv reload
Requirements
| Requirement | Value |
|---|---|
| Server Software | Paper |
| Minecraft | 1.21+ |
| Java | 21 |
| PlaceholderAPI | Required |
| Runtime Tested | Paper 1.21.11 |
PlexVariables is designed for Paper servers.
File Organization
PlexVariables automatically discovers YAML files inside:
plugins/PlexVariables/variables/
You can organize your variables however you want.
variables/
├── general.yml
├── ranks.yml
├── economy.yml
├── conditions.yml
├── expressions.yml
└── custom/
├── events.yml
└── server.yml
There is no need to keep every variable inside one huge file.
Debugging
Need to figure out why a variable is returning the wrong value?
Use:
/pv test <player|--null> <variable>
PlexVariables can display information about:
- Variable type
- Source file
- Conditions
- Resolved condition values
- Selected branch
- Raw expressions
- Resolved expressions
- Calculated results
- Stored scope
- Stored value
- Default value
- Cache state
- Evaluation time
Storage
PlexVariables uses SQLite for persistent stored variables.
Player and global values are cached in memory during normal placeholder resolution.
Database work is handled asynchronously rather than performing database reads during each placeholder lookup.
Download
Latest Release: PlexVariables 1.0.0
https://github.com/PlexStudios/PlexVariables/releases/tag/V1.0.0
Links
Source Code
https://github.com/PlexStudios/PlexVariables
Documentation
https://github.com/PlexStudios/PlexDocs
Issue Tracker
https://github.com/PlexStudios/PlexVariables/issues
Website
https://applex.oriko.lk
License
PlexVariables is source-available.
The source code is publicly available for transparency, review, learning, and contribution.
Redistribution, resale, rebranding, sublicensing, and publishing modified versions are not granted by default.
Read the full license:
https://github.com/PlexStudios/PlexVariables/blob/main/LICENSE
Plex Studios
PlexVariables is developed by Applex under Plex Studios.
Plex Studios builds modern Minecraft plugins and developer tools focused on configurability, performance, and clean user experience.
Pinned Versions
- R1.21–1.21.11
Pages
Members
1Owner