📚 Tutorials
This page provides step-by-step tutorials for common configuration tasks in EssentialsPlus.
Placeholder System
EssentialsPlus provides two types of placeholders for displaying dynamic information in messages, chat formats, MOTD, and other text outputs.
Two Types of Placeholders
1. Built-in Placeholders (Direct Implementation)
These placeholders are directly implemented in EssentialsPlus and work without any additional mods. They can be used in all EssentialsPlus features like MOTD, chat formats, custom commands, broadcasts, and more.
Format: {placeholder}
| Placeholder | Description | Example Output |
|---|---|---|
{player} | Player's username | F_o_F_1092 |
{uuid} | Player's UUID | c3f13aae-432d-4627-9892-e8901144c63b |
{group} | Player's Group | Adventure |
{world} | Player's current world name | default |
{x} | Player's X coordinate (integer) | 125 |
{y} | Player's Y coordinate (integer) | 64 |
{z} | Player's Z coordinate (integer) | -230 |
{online} | Current online player count | 15 |
{time} | Current time | 14:30:45 |
{date} | Current date | 2026-02-20 |
Usage Example:
"motd": {
"messages": [
"Welcome, {player}!",
"You are at {x}, {y}, {z} in {world}",
"Players online: {online}"
]
}2. PlaceholderAPI Placeholders (Requires External Mod)
These placeholders require the PlaceholderAPI-Hytale mod to be installed. Once installed, these placeholders work in both EssentialsPlus and any other mod that supports PlaceholderAPI.
Format: %placeholder% or {placeholder} (both formats supported when PlaceholderAPI is installed)
Benefits of using PlaceholderAPI:
- Use EssentialsPlus data in other mods (scoreboards, TAB lists, etc.)
- Use placeholders from other mods within EssentialsPlus texts
- Standardized placeholder system across multiple mods
Requirements:
- PlaceholderAPI-Hytale must be installed on your server
- EssentialsPlus version 1.14.0 or higher
Available PlaceholderAPI Placeholders
Economy Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_balance% | Raw balance number | 12345.67 |
%essentialsplus_player_balance_formatted% | Formatted with currency | 12,345.67 $ |
Usage Example:
# In your TAB plugin or scoreboard
balance: "&eBalance: &f%essentialsplus_player_balance_formatted%"Time Information Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_first_join% | First join date | 15.01.2026 14:30 |
%essentialsplus_player_last_join% | Last join date | 03.02.2026 18:45 |
%essentialsplus_player_playtime% | Total playtime | 5h30m45s |
%essentialsplus_player_session_time% | Current session time | 1h15m |
Usage Example:
# In your scoreboard
playtime: "Playtime: %essentialsplus_player_playtime%"
session: "Session: %essentialsplus_player_session_time%"Home System Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_homes_count% | Number of homes | 3 |
%essentialsplus_player_homes_max% | Max homes allowed | 5 or unlimited |
%essentialsplus_player_homes_1% | Name of 1st home | base |
%essentialsplus_player_homes_2% | Name of 2nd home | farm |
%essentialsplus_player_homes_1_world% | World of 1st home | world-uuid |
%essentialsplus_player_homes_1_x% | X coordinate of 1st home | 125.50 |
%essentialsplus_player_homes_1_y% | Y coordinate of 1st home | 64.00 |
%essentialsplus_player_homes_1_z% | Z coordinate of 1st home | -230.75 |
Usage Example:
# In your scoreboard
homes: "Homes: %essentialsplus_player_homes_count%&7/&f%essentialsplus_player_homes_max%"
home1: "1. %essentialsplus_player_homes_1%"
home2: "2. %essentialsplus_player_homes_2%"Note: Home indices are 1-based (start at 1, not 0). If a home doesn't exist at the specified index, the placeholder returns null.
Status Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_is_muted% | Is player muted | true / false |
%essentialsplus_player_is_frozen% | Is player frozen | true / false |
%essentialsplus_player_is_vanished% | Is player vanished | true / false |
%essentialsplus_player_is_flying% | Is player flying | true / false |
%essentialsplus_player_is_afk% | Is player AFK | true / false |
%essentialsplus_player_afk_tag% | Shows AFK tag | [AFK] or empty |
%essentialsplus_player_afk_time% | Time player has been AFK | 5m 30s |
%essentialsplus_player_ip% | Player's current IP address | 192.168.1.100 |
Usage Example:
# Conditional display based on status
muted: "%essentialsplus_player_is_muted%"
# You can use this with conditional placeholders like:
# {essentialsplus_player_is_muted:&cMUTED:}
# Display AFK tag in TAB list
tab_format: "%essentialsplus_player_afk_tag% %player_name%"
# Show AFK time
afk_time: "AFK: &e%essentialsplus_player_afk_time%"
# Show IP address (admin only usage)
ip_info: "IP: %essentialsplus_player_ip%"Mail System Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_mail_unread_count% | Number of unread mails | 3 |
%essentialsplus_player_mail_total_count% | Total mails in inbox | 15 |
%essentialsplus_player_mail_inbox_count% | Mails in inbox (same as total) | 15 |
%essentialsplus_player_mail_sent_count% | Number of sent mails | 8 |
Usage Example:
# Show unread mail count in TAB list
tab_format: "&e%essentialsplus_player_mail_unread_count% &7unread mails"
# Display in scoreboard
mail_info: "&eMails: &f%essentialsplus_player_mail_unread_count%&7/&f%essentialsplus_player_mail_total_count%"
# Show sent mail count
sent_mails: "&7Sent: &f%essentialsplus_player_mail_sent_count%"Ignore System Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_player_ignore_count% | Number of ignored players | 2 |
%essentialsplus_player_ignore_list% | Comma-separated list of ignored players | Player1, Player2 |
Usage Example:
# Show ignore count
ignore_info: "Ignoring: &c%essentialsplus_player_ignore_count% players"
# Show full list (for GUIs or admin info)
ignore_list: "&7Ignored: &f%essentialsplus_player_ignore_list%"Note: Ignore placeholders return 0 and empty string respectively if the ignore system is disabled or no players are ignored.
Server Statistics Placeholders
| Placeholder | Description | Example Output |
|---|---|---|
%essentialsplus_server_homes_total% | Total homes on server | 1523 |
%essentialsplus_server_warps_total% | Total warps on server | 12 |
%essentialsplus_server_kits_total% | Total kits on server | 8 |
%essentialsplus_server_players_total% | Total registered players | 456 |
%essentialsplus_server_afk_total% | Number of AFK players online | 3 |
%essentialsplus_server_afk_percentage% | Percentage of AFK players | 20% |
Usage Example:
# In your server info scoreboard
total_homes: "Total Homes: %essentialsplus_server_homes_total%"
total_warps: "Total Warps: %essentialsplus_server_warps_total%"
# Display AFK statistics
afk_stats: "AFK Players: &e%essentialsplus_server_afk_total% (%essentialsplus_server_afk_percentage%)"MOTD Example
Here's a complete example of a MOTD (Message of the Day) using EssentialsPlus placeholders.
In your config.json, configure the MOTD section:
"motd": {
"enabled": true,
"messages": [
"",
"<#FFAA00>Welcome to the server, </#FFAA00><#FFFFFF>{player}</#FFFFFF><#FFAA00>!</#FFAA00>",
"<#55FF55>Balance: </#55FF55><#FFFFFF>%essentialsplus_player_balance_formatted%</#FFFFFF>",
"<#5555FF>Playtime: </#5555FF><#FFFFFF>%essentialsplus_player_playtime%</#FFFFFF>",
"<#FFFF55>Homes: </#FFFF55><#FFFFFF>%essentialsplus_player_homes_count%/%essentialsplus_player_homes_max%</#FFFFFF>",
"<#FF55FF>Session: </#FF55FF><#FFFFFF>%essentialsplus_player_session_time%</#FFFFFF>",
"<#FFAA00>Join our Discord: <#55FFFF>discord.gg/yourserver</#55FFFF></#FFAA00>",
""
]
}What players see when they join:
Welcome to the server, PlayerName!
Balance: 12,345.67 $
Playtime: 5h30m45s
Homes: 3/5
Session: 0h2m15s
Join our Discord: discord.gg/yourserverAvailable placeholders for MOTD:
- Built-in placeholders (
{player},{world}, etc.) - Always work, no additional mod needed - PlaceholderAPI placeholders (
%essentialsplus_..%or{essentialsplus_..}) - Requires PlaceholderAPI-Hytale mod - Mix both types freely in your messages
- Supports full color formatting with hex colors and gradients
Chat Format Example
EssentialsPlus has a built-in chat system with group-based formatting. Configure it in your config.json:
Using placeholders in chat formats:
"groups": {
"vip": "<#e89d1f>[VIP] <#55FF55>[%essentialsplus_player_balance_formatted%]</#55FF55> {player}:</#e89d1f> <#AAAAAA>{message}</#AAAAAA>"
}Output examples:
- VIP with balance:
[VIP] [1,234.56 $] Alex: Check out my base!
Troubleshooting
Built-in placeholder shows as text ({player}, {world}, etc.):
- These should always work - check for typos in the placeholder name
- Ensure you're using the correct format:
{placeholder}(with curly braces)
PlaceholderAPI placeholder shows as text (%essentialsplus_...%):
- Verify PlaceholderAPI-Hytale is installed
- Check that EssentialsPlus is version 1.14.0+
- Restart the server after installing PlaceholderAPI-Hytale
- Try both formats:
%placeholder%or{placeholder}
Placeholder returns null:
- For home placeholders: Ensure the home index exists
- For user data: Ensure the player has joined the server at least once
- For server stats: Verify the managers are loaded correctly
Values not updating:
- Most placeholders update in real-time
- Playtime and session time update every use
- Balance updates immediately after transactions
- AFK time updates in real-time when placeholder is requested
Additional Resources
- Configuration Guide - Complete configuration reference
- Commands Reference - All available commands
- Permissions Guide - Permission nodes and setup
- Known Issues - Known limitations and workarounds