Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for PlexStudios

Build custom PlaceholderAPI variables with conditions, expressions, nesting, and persistent storage.

Report PlexVariables?

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 test debugging

Screenshots

Conditional Variables

Create placeholders that automatically change depending on player or server state.

Conditional Variables

Stored Variables

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

Stored Variables

Nested Variables

Combine PlexVariables with other PlexVariables and PlaceholderAPI placeholders.

Nested Variables

Simple YAML Configuration

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

Variable Configuration

Use Them Anywhere

Use your variables anywhere another plugin supports PlaceholderAPI.

Placeholder Example


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

  1. Install PlaceholderAPI
  2. Download PlexVariables
  3. Place the JAR inside your server's plugins folder
  4. Start or restart your server
  5. Configure your variables inside:
plugins/PlexVariables/variables/
  1. 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


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.

Information

Category
Admin Tools
Published
October 4, 2026
0Downloads
1Stars

Pinned Versions

Members

1