Back to mods
Placeholdar (PHAR) project artwork

CurseForge · Hytale mod

Placeholdar (PHAR)

A modern placeholder api

Choose a version Pick your version below, then grab the matching file.

Quick answer

Which Placeholdar (PHAR) release should I use?

Updated 5 months ago
Latest stable file Placeholdar-1.0.3.jar
Game version Not listed
Mod system Built-in Hytale mod system

Placeholdar (PHAR) Placeholdar-1.0.3.jar targets Hytale. Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer. No required dependencies listed for this file.

Where it goes

Where should Placeholdar (PHAR) be installed in Hytale?

Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer.

Separate client mod Not supported
World host / dedicated server Required
Mod system for this release Built-in Hytale mod system
Required install it here Optional supported, not mandatory Not supported do not install here Source doesn’t say do not assume

Put Hytale mods on the world host or dedicated server. Singleplayer runs a local server too; Hytale does not use separate client mods.

What else does Placeholdar (PHAR) Placeholdar-1.0.3.jar need?

Placeholdar-1.0.3.jar. Change the file and its required mods may change too.

No required dependencies listed for this file

This file does not list any required mods. Do not add a library just because a different file uses it.

This file does not list any required or optional project dependencies. Check the creator notes before changing an existing world.

Before you install it

Add Placeholdar (PHAR) without breaking your instance.

Built for Placeholdar (PHAR) Placeholdar-1.0.3.jar. Pick another file and the loader, install side or required mods may change.

  1. 01

    Stick to this file

    Use Placeholdar-1.0.3.jar. It targets Hytale; another release may target a different game build or dependency set.

  2. 02

    Bring the mods it needs

    This file does not list any required mods. Do not add a library just because a different file uses it.

  3. 03

    Enable it on the world host

    Do not install it as a separate client mod. Enable it on the world host—the local server in singleplayer or the dedicated server in multiplayer.

  4. 04

    Pick the file you checked

    Use the “Get this file” button beside Placeholdar-1.0.3.jar. It opens that exact file at the source.

About this project

What does Placeholdar (PHAR) add?

Placeholdar (PHAR)

This mod will no longer receive many updates in favor of Placeholder API

Placeholdar is a simple placeholder system for Hytale mods. It provides a parsing utility and an expansion framework for mods to register their own placeholders.

If you have ever used the minecraft plugin PlaceholderAPI(papi) this will seem familiar.

Getting started

Commands

/phar list
/phar enable
/phar disable
/phar test %player_name%

Built-in Placeholders

Exterenal Plugins

EconomyAPI

I have also added support to some plugins myself, if the plugin developers want to implement an official version please contact me to remove this one to prevent errors.

TheEconomy
EcoTale - Economy
Luckperms

* Enable these using /phar enable (theeconomy or ecotale)

Player Placeholders

Identifier: player

All player placeholders require a player context to work.

Placeholder Description Example Output
%player_uuid% Player's unique ID 123e4567-e89b-12d3-a456-426614174000
%player_name% Player's display name Sennecoolgames
%player_gamemode% Player's current game mode Adventure
%player_language% Player's language setting en_US
%player_world_name% Name of the world the player is in default
%player_world_uuid% UUID of the world the player is in 123e4567-e89b-12d3-a456-426614174000
%player_is_first_spawn% Whether this is the player's first spawn true or false
%player_fall_distance% Player's current fall distance (rounded) 15
%player_fall_distance_exact% Player's current fall distance (exact) 15.234

Position Placeholders

Placeholder Description Example Output
%player_x% Player's X coordinate (rounded) 125
%player_x_exact% Player's X coordinate (exact) 125.67
%player_y% Player's Y coordinate (rounded) 64
%player_y_exact% Player's Y coordinate (exact) 64.0
%player_z% Player's Z coordinate (rounded) -89
%player_z_exact% Player's Z coordinate (exact) -89.12

Health Placeholders

Placeholder Description Example Output
%player_health% Player's current health 20.0
%player_max_health% Player's maximum health 20.0
%player_min_health% Player's minimum health 0.0

Mana Placeholders

Placeholder Description Example Output
%player_mana% Player's current mana 100.0
%player_max_mana% Player's maximum mana 100.0
%player_min_mana% Player's minimum mana 0.0

Oxygen Placeholders

Placeholder Description Example Output
%player_oxygen% Player's current oxygen level 300.0
%player_max_oxygen% Player's maximum oxygen level 300.0
%player_min_oxygen% Player's minimum oxygen level 0.0

Stamina Placeholders

Placeholder Description Example Output
%player_stamina% Player's current stamina 100.0
%player_max_stamina% Player's maximum stamina 100.0
%player_min_stamina% Player's minimum stamina 0.0

Ammo Placeholders

Placeholder Description Example Output
%player_ammo% Player's current ammo 30.0
%player_max_ammo% Player's maximum ammo 30.0
%player_min_ammo% Player's minimum ammo 0.0

Server Placeholders

Identifier: server

Server placeholders work without a player context.

Server Information

Placeholder Description Example Output
%server_name% Server name My Hytale Server
%server_motd% Server message of the day Welcome to my server!
%server_password% Server password (if set) secret123
%server_players% Online player amount 4
%server_max_players% Maximum number of players 10
%server_default_world% Default world name default
%server_default_gamemode% Default game mode Adventure

Time & Date Placeholders

Placeholder Description Example Output
%server_time% Current time 14:35:42
%server_date% Current date 2026-01-30
%server_datetime% Current date and time 2026-01-30 14:35:42
%server_uptime% Server uptime 02:15:30:45 (days:hours:minutes:seconds)

Resource Usage Placeholders

Placeholder Description Example Output
%server_memory_used_mb% Memory currently used (MB) 512
%server_memory_free_mb% Memory currently free (MB) 1536
%server_memory_max_mb% Maximum memory available (MB) 2048

Extensions

EconomyAPI

Can be fount on the EconomyAPI page

Ecotale Placeholders /phar enable ecotale

Placeholder Description Example Output
%ecotale_balance% Player's balance 100.0
%ecotale_formatted_balance% Player's formatted balance 100.00

TheEconomy Placeholders /phar enable theeconomy

Placeholder Description Example Output
%theeconomy_balance% Player's balance 100.0
%theeconomy_formatted_balance% Player's formatted balance $100

Luckperms Placeholders /phar enable luckperms

Placeholder Description Example Output
%luckperms_prefix% Player's prefix [Owner]
%luckperms_suffix% Player's suffix (OG)
%luckperms_group% Player's primary group Owner
%luckperms_weight% Highest weight of a player 100

* Want your plugin featured here just send me a dm or post a comment!


Implementation

Using Placeholdar to parse placeholders

Use Placeholdar.parse() to replace placeholders in text:

import com.sennecoolgames.placeholdar.Placeholdar;
import com.hypixel.hytale.server.core.universe.PlayerRef;

// Parse with a player context
String message = "Balance: %mymod_balance%";
String parsedPlayer = Placeholdar.parse(message, playerRef);// If you are using it as an optional dependency:public static boolean PHARAvailable = false;try {   Class.forName("com.sennecoolgames.placeholdar.Placeholdar");   economyExpansion = new EconomyExpansion();   economyExpansion.register();   PHARAvailable = true;   getLogger().atInfo().log("Placeholdar support enabled!");} catch (Exception e) {   getLogger().atInfo().log("Not using Placeholdar because it is not available");}String parsedPlayer = PHARAvailable ? Placeholdar.parse(message, playerRef) : message;
// Result: "Balance: 1000.50"

// Parse without a player context
String parsedNoPlayer = Placeholdar.parse(message);
// Result: "Balance: %mymod_balance%" (no player, returns original)

Placeholders can be used in any text:

String message = Placeholdar.parse("Hello %player_name%, you are at %player_x%, %player_y%, %player_z%", playerRef);

Without player context:

String message = Placeholdar.parse("Server: %server_name% | Time: %server_time%");

Creating a PlaceholdarExpansion

Create a class that extends PlaceholdarExpansion:

import com.sennecoolgames.placeholdar.PlaceholdarExpansion;
import com.hypixel.hytale.server.core.universe.PlayerRef;
import javax.annotation.Nullable;
import javax.annotation.Nonnull;

public class EconomyExpansion extends PlaceholdarExpansion {

    @Override
    @Nonnull
    public String getIdentifier() {
        // This is what will be in from of your placeholder (%mymod_placeholder%)
        return "MyMod";
    }

    @Override
    @Nonnull
    public String getAuthor() {
        return "YourName";
    }

    @Override
    @Nonnull
    public String getVersion() {
        return "1.0.0";
    }

    @Override
    @Nullable
    public String onRequest(@Nullable PlayerRef player, @Nonnull String params) {
        if (player == null) {
            return null;
        }

        if (params.equalsIgnoreCase("balance")) {
            return String.valueOf(getBalance(player));
        }

        if (params.equalsIgnoreCase("formatted_balance")) {
            return String.valueOf(formatBalance(getBalance(player)));
        }

        return null;
    }
}

Registering an Expansion

Register your expansion in your plugin's initialization:

import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;

public class MyPlugin extends JavaPlugin {
    // Global variable to know if Placeholdar is enabled/available
    public static boolean PHARAvailable = false; 

    private EconomyExpansion economyExpansion;

    public MyPlugin(JavaPluginInit init) {
        super(init);
    }


    // Dont crash the plugin if Placeholdar is not available
    try {
        Class.forName("com.sennecoolgames.placeholdar.Placeholdar");
        economyExpansion = new EconomyExpansion();
        economyExpansion.register();
        PapiAvailable = true;
        getLogger().atInfo().log("Placeholdar support enabled!");
    } catch (Exception e) {
        getLogger().atInfo().log("Not using Placeholdar because it is not available");
    }

    @Override
    protected void shutdown() {
        if (economyExpansion != null) {
            economyExpansion.unregister();
        }
    }
}

Add Placeholdar as a (optional) dependency

If you want your plugin to work with or without Placeholdar installed, check if it's present before registering:

Step 1: Update your manifest to make Placeholdar optional

In your manifest.json:

Optional:

{
  "OptionalDependencies": {
    "Sennecoolgames:Placeholdar": ">=1.0.0"
  }
}

Required:

{
  "Dependencies": {
    "Sennecoolgames:Placeholdar": ">=1.0.0"
  }
}

To test your placeholders you can use the /phar test command to check if it got registered correctly

Placeholder format

Placeholders follow the format: %identifier_param%

  • identifier – the expansion's identifier (e.g., "myeconomy")
  • param – the parameter passed to onRequest() (e.g., "balance")

Example: %myeconomy_balance% calls the economy expansion with param "balance".

Examples

Health expansion

public class HealthExpansion extends PlaceholdarExpansion {

    @Override
    @Nonnull
    public String getIdentifier() {
        return "health";
    }

    @Override
    @Nonnull
    public String getAuthor() {
        return "Developer";
    }

    @Override
    @Nonnull
    public String getVersion() {
        return "1.0.0";
    }

    @Override
    @Nullable
    public String onRequest(@Nullable PlayerRef player, @Nonnull String params) {
        if (player == null) {
            return null;
        }

        if (params.equalsIgnoreCase("current")) {
            return String.valueOf(getCurrentHealth(player));
        }

        if (params.equalsIgnoreCase("max")) {
            return String.valueOf(getMaxHealth(player));
        }

        return null;
    }

    private float getCurrentHealth(PlayerRef player) {
        // Get current health
        return 20.0f;
    }

    private float getMaxHealth(PlayerRef player) {
        // Get max health
        return 20.0f;
    }
}

Usage: %health_current% → "20", %health_max% → "20"

Project description from CurseForge.

Recent files

Placeholdar (PHAR) releases and Hytale builds

3 of 3 releases match

Looking for an older file? The official CurseForge project page is in Resources.