Skip to main content

Main Configuration

This page documents every section of the main config.yml file located at plugins/zEssentials/config.yml. This file controls global plugin behavior including storage, cooldowns, restrictions, message colors, fly settings, and more.


Debug

Enable or disable debug mode. When enabled, the plugin outputs additional logging to the console, which is useful for troubleshooting issues.

enable-debug: false
OptionTypeDefaultDescription
enable-debugBooleanfalseEnables verbose debug logging in the server console
tip

Only enable debug mode when actively troubleshooting an issue. Debug output can be very verbose and may impact server performance on high-traffic servers.


Storage

Configure how zEssentials stores data, the server communication type, and database/Redis connection details.

Storage Type

storage-type: SQLITE
ValueDescription
SQLITELocal file-based storage. Best for single-server setups and testing. No additional configuration required.
MYSQLMySQL or MariaDB database. Recommended for production environments.
HIKARICPMySQL/MariaDB with HikariCP connection pooling. Best for high-performance and high-traffic servers.

Server Type

server-type: PAPER
ValueDescription
PAPERStandalone server mode. All data is stored and read locally.
REDISMulti-server mode with real-time synchronization via Redis pub/sub. Requires MySQL or HikariCP storage.

Database Configuration

Used when storage-type is set to MYSQL or HIKARICP.

database-configuration:
table-prefix: "zessentials_"
host: "192.168.10.10"
port: 3306
user: "homestead"
password: "secret"
database: "zessentials"
debug: false
OptionTypeDefaultDescription
table-prefixStringzessentials_Prefix applied to all database table names. Useful when sharing a database with other plugins.
hostString192.168.10.10Hostname or IP address of the database server.
portInteger3306Port the database server is listening on.
userStringhomesteadDatabase username for authentication.
passwordStringsecretDatabase password for authentication.
databaseStringzessentialsName of the database to use. The database must already exist.
debugBooleanfalseEnables SQL query debug logging. Outputs all executed queries to the console.
warning

Change the default database credentials before deploying to production. The default values (homestead / secret) are placeholders and must not be used in a live environment.

Redis Configuration

Used when server-type is set to REDIS. Enables cross-server synchronization of player data, sanctions, economy, messages, and more.

redis-configuration:
host: "127.0.0.1"
port: 6379
password: ""
OptionTypeDefaultDescription
hostString127.0.0.1Hostname or IP address of the Redis server.
portInteger6379Port the Redis server is listening on.
passwordString""Redis password. Leave empty if authentication is not configured.
tip

When using REDIS server type, ensure all servers in the network share the same MySQL database and the same Redis instance for full data synchronization.


Command Cooldowns

Configure cooldowns for commands to prevent spam and abuse. Cooldowns are applied per player and per command. You can define a base cooldown and permission-based overrides so that different ranks have different wait times.

Force Commands

A list of exact command strings that will always have cooldowns applied, even if the player has the bypass permission. This is useful for commands you never want to be spammed regardless of rank.

force-commands:
- "/essversion"

Cooldown Bypass

enable-cooldown-bypass: true

When enable-cooldown-bypass is set to true, players with the essentials.bypass.cooldown permission will skip all command cooldowns (except those listed in force-commands).

Command Cooldowns Definition

Define cooldowns per command with optional permission-based overrides. Each entry consists of:

  • command: The command name (without the leading /).
  • cooldown: The base cooldown in seconds that applies to all players.
  • permissions: A list of permission-based overrides. Players with the matching permission use the override cooldown instead of the base value. A cooldown of 0 means no cooldown.
command-cooldowns:
- command: "heal"
cooldown: 60
permissions:
- permission: "essentials.cooldowns.vip"
cooldown: 40
- permission: "essentials.cooldowns.staff"
cooldown: 20
- command: "tpr"
cooldown: 300
permissions:
- permission: "essentials.cooldowns.vip"
cooldown: 120
- permission: "essentials.cooldowns.staff"
cooldown: 0

Example breakdown for heal:

Player TypePermissionCooldown
Default(none)60 seconds
VIPessentials.cooldowns.vip40 seconds
Staffessentials.cooldowns.staff20 seconds

Example breakdown for tpr:

Player TypePermissionCooldown
Default(none)300 seconds (5 minutes)
VIPessentials.cooldowns.vip120 seconds (2 minutes)
Staffessentials.cooldowns.staff0 seconds (no cooldown)
info

Permission-based overrides are checked in order. The first matching permission is used. If no permission matches, the base cooldown value is applied.


Command Restrictions

Restrict specific commands from being used in certain worlds or within defined cuboid regions. Players with the bypass permission can ignore these restrictions.

command-restrictions:
- commands:
- "heal"
- "feed"
bypass-permission: "essentials.bypass.restriction"
worlds:
- "world_pvp"
cuboids:
- "world,100,0,100,200,256,200"
OptionTypeDescription
commandsList of StringsThe commands to restrict (without the leading /).
bypass-permissionStringPermission that allows a player to bypass this restriction.
worldsList of StringsWorld names where the listed commands are blocked.
cuboidsList of StringsCuboid regions where the listed commands are blocked. Format: world,x1,y1,z1,x2,y2,z2

Cuboid format: world,x1,y1,z1,x2,y2,z2

  • world -- The world name.
  • x1,y1,z1 -- First corner coordinates.
  • x2,y2,z2 -- Second corner coordinates.

The cuboid is defined by two opposite corners, and any player standing inside the bounding box will be restricted from using the listed commands.

info

You can define multiple restriction entries, each with their own set of commands, worlds, cuboids, and bypass permissions.


Trash

Configure the trash (disposal) inventory that players can open with /trash. Items placed in this inventory are permanently deleted when the inventory is closed.

trash-size: 54
OptionTypeDefaultDescription
trash-sizeInteger54Number of slots in the trash inventory. Must be a multiple of 9.

Valid values: 9, 18, 27, 36, 45, 54

These correspond to 1 through 6 rows of a chest-style inventory.


Compact Materials

Define which items can be compacted into their block form using the /compact and /compactall commands. Each entry maps a base material to its compacted (block) form. Nine of the base material are consumed to produce one block.

compact-materials:
- COAL:COAL_BLOCK
- REDSTONE:REDSTONE_BLOCK
- LAPIS_LAZULI:LAPIS_BLOCK
- DIAMOND:DIAMOND_BLOCK
- EMERALD:EMERALD_BLOCK
- IRON_INGOT:IRON_BLOCK
- GOLD_INGOT:GOLD_BLOCK
- RAW_IRON:RAW_IRON_BLOCK
- RAW_GOLD:RAW_GOLD_BLOCK
- RAW_COPPER:RAW_COPPER_BLOCK
- COPPER_INGOT:COPPER_BLOCK

Default compact conversions:

MaterialCompacts Into
COALCOAL_BLOCK
REDSTONEREDSTONE_BLOCK
LAPIS_LAZULILAPIS_BLOCK
DIAMONDDIAMOND_BLOCK
EMERALDEMERALD_BLOCK
IRON_INGOTIRON_BLOCK
GOLD_INGOTGOLD_BLOCK
RAW_IRONRAW_IRON_BLOCK
RAW_GOLDRAW_GOLD_BLOCK
RAW_COPPERRAW_COPPER_BLOCK
COPPER_INGOTCOPPER_BLOCK

You can add custom entries using the same format: SOURCE_MATERIAL:RESULT_MATERIAL. Material names must match valid Bukkit Material names.


Smeltable Materials

Define which items can be instantly smelted using the /furnace command. Each entry maps a raw material to its smelted output.

smeltable-materials:
- RAW_IRON:IRON_INGOT
- RAW_GOLD:GOLD_INGOT
- RAW_COPPER:COPPER_INGOT
- IRON_ORE:IRON_INGOT
- GOLD_ORE:GOLD_INGOT
- COPPER_ORE:COPPER_INGOT
- COBBLESTONE:STONE
- SAND:GLASS
- WET_SPONGE:SPONGE

Default smelt conversions:

MaterialSmelts Into
RAW_IRONIRON_INGOT
RAW_GOLDGOLD_INGOT
RAW_COPPERCOPPER_INGOT
IRON_OREIRON_INGOT
GOLD_OREGOLD_INGOT
COPPER_ORECOPPER_INGOT
COBBLESTONESTONE
SANDGLASS
WET_SPONGESPONGE

You can add custom entries using the same format: SOURCE_MATERIAL:RESULT_MATERIAL. Material names must match valid Bukkit Material names.


Message Colors

Configure the global color scheme used for plugin messages. Colors are specified as hex color codes.

message-colors:
primary: "#24d65d"
secondary: "#656665"
error: "#ff0000"
success: "#00ff00"
ColorHex CodeDescription
primary#24d65dMain accent color used for highlights, important values, and emphasis in messages.
secondary#656665Secondary color used for less prominent text such as labels and descriptions.
error#ff0000Color used for error messages and warnings.
success#00ff00Color used for success confirmations and positive feedback.

These colors are applied across all plugin messages and can be referenced in message templates.


Chat Cooldowns

An anti-spam system that applies progressively increasing cooldowns to players who send messages rapidly. The cooldown escalates based on the number of messages sent within a short time window.

chat-cooldowns:
2: 1.5
4: 5.0
8: 10.0
Messages SentCooldown Applied
21.5 seconds
45.0 seconds
810.0 seconds

How it works:

  • When a player sends 2 messages in rapid succession, a 1.5-second cooldown is applied before they can send another message.
  • At 4 messages, the cooldown increases to 5 seconds.
  • At 8 messages, the cooldown increases to 10 seconds.

The cooldown counter resets after the player stops sending messages for a period of time. This system is designed to prevent chat spam while allowing normal conversation flow.

info

The keys represent the message count threshold and the values represent the cooldown duration in seconds. You can customize these thresholds and durations to match your server's needs.


Replace Placeholders

A powerful system for dynamically replacing PlaceholderAPI placeholders with formatted text based on configurable conditions. This allows you to transform raw placeholder values into user-friendly, color-coded displays.

Each replacement entry consists of:

  • placeholder: The PlaceholderAPI placeholder to intercept and replace.
  • conditions: A list of conditions to evaluate against the placeholder's resolved value. Conditions are checked in order; the first matching condition determines the output.

Condition Types

TypeDescription
STRINGMatches when the resolved placeholder value exactly equals the specified value string.
NUMBERMatches when the resolved placeholder value (parsed as a number) satisfies the min and/or max range.

Example: Ping Display

This example replaces the %player_ping% placeholder with color-coded text based on the player's latency:

replace-placeholders:
- placeholder: "%player_ping%"
conditions:
- type: NUMBER
min: 0
max: 50
result: "<#00ff00>%player_ping%ms"
- type: NUMBER
min: 51
max: 100
result: "<#ffff00>%player_ping%ms"
- type: NUMBER
min: 101
max: 200
result: "<#ff8800>%player_ping%ms"
- type: NUMBER
min: 201
result: "<#ff0000>%player_ping%ms"

Resulting behavior:

Ping RangeDisplay ColorExample Output
0 -- 50 msGreen (#00ff00)50ms
51 -- 100 msYellow (#ffff00)75ms
101 -- 200 msOrange (#ff8800)150ms
201+ msRed (#ff0000)300ms

Condition Properties

For NUMBER conditions:

PropertyTypeRequiredDescription
typeStringYesMust be NUMBER.
minNumberNoMinimum value (inclusive). Omit for no lower bound.
maxNumberNoMaximum value (inclusive). Omit for no upper bound.
resultStringYesThe replacement text. Can include the original placeholder and MiniMessage formatting.

For STRING conditions:

PropertyTypeRequiredDescription
typeStringYesMust be STRING.
valueStringYesThe exact string to match against the resolved placeholder value.
resultStringYesThe replacement text. Can include the original placeholder and MiniMessage formatting.
tip

You can use this system to create color-coded economy balances, health displays, rank prefixes, and any other placeholder-driven dynamic text.


Fly Settings

Configure flight-related behavior including temporary fly management, world restrictions, and notification timers.

temp-fly-task: 1
disable-fly-world:
- "world_pvp"
enable-fly-return: true
fly-task-announce:
- 300
- 120
- 60
- 30
- 10
- 5
- 4
- 3
- 2
- 1
OptionTypeDefaultDescription
temp-fly-taskInteger1Interval in seconds at which the temporary fly timer is checked and updated.
disable-fly-worldList of Strings[]List of world names where flight is automatically disabled upon entry.
enable-fly-returnBooleantrueWhen true, restores the player's fly state when they return to a world that allows flight after leaving a restricted world.
fly-task-announceList of Integers(see above)Remaining time thresholds (in seconds) at which the player is notified that their temporary fly is about to expire.

How temporary fly announcements work:

The fly-task-announce list defines the exact remaining-time values at which a notification is sent. In the default configuration, a player with temporary fly will receive a warning at 5 minutes, 2 minutes, 1 minute, 30 seconds, 10 seconds, and then a countdown from 5 to 1 second.

info

The temp-fly-task value controls how often the plugin checks the remaining fly time. A value of 1 means it checks every second, which is recommended for accurate countdown notifications.


Miscellaneous

This section covers various standalone settings that control plugin-wide behavior.

Disable Back World

A list of worlds where the /back command is disabled. Players who die or teleport in these worlds will not have their previous location saved.

disable-back-world:
- "world_pvp"

Random Words

A list of words used for random word generation within the plugin (e.g., for random name generation or confirmation prompts).

random-words:
- "apple"
- "banana"
- "cherry"
- "diamond"
- "emerald"
- "fire"
- "gold"
- "honey"
- "iron"
- "jungle"

Enable Offline Player Names

enable-offline-player-names: true
OptionTypeDefaultDescription
enable-offline-player-namesBooleantrueWhen enabled, the plugin resolves and caches offline player names for use in tab-completion and commands that accept player name arguments.

Blacklist UUIDs

A list of player UUIDs that are blacklisted from certain plugin features. Players with blacklisted UUIDs may be excluded from leaderboards, economy actions, or other systems.

blacklist-uuids:
- "00000000-0000-0000-0000-000000000000"

Default Options

Configure the default state of toggleable player options. Each option is set to true (enabled) or false (disabled) by default for all players. Players can override these individually through in-game commands.

default-options:
SOCIAL_SPY: false
GOD: false
BAN: false
MUTE: false
INVSEE: false
VANISH: false
PRIVATE_MESSAGE_DISABLE: false
PAY_DISABLE: false
POWER_TOOLS_DISABLE: false
DISABLE_SCOREBOARD: false
NIGHT_VISION: false
PHANTOMS_DISABLE: false
WORLDEDIT_INVENTORY: false
WORLDEDIT_BOSSBAR_DISABLE: false
OptionDefaultDescription
SOCIAL_SPYfalseWhether social spy (viewing private messages between other players) is enabled by default.
GODfalseWhether god mode (invincibility) is enabled by default.
BANfalseWhether the player is banned by default.
MUTEfalseWhether the player is muted by default.
INVSEEfalseWhether inventory viewing is enabled by default.
VANISHfalseWhether vanish mode (invisibility) is enabled by default.
PRIVATE_MESSAGE_DISABLEfalseWhether receiving private messages is disabled by default.
PAY_DISABLEfalseWhether receiving payments is disabled by default.
POWER_TOOLS_DISABLEfalseWhether power tools (command-bound items) are disabled by default.
DISABLE_SCOREBOARDfalseWhether the scoreboard display is disabled by default.
NIGHT_VISIONfalseWhether permanent night vision is enabled by default.
PHANTOMS_DISABLEfalseWhether phantom spawning is disabled by default for the player.
WORLDEDIT_INVENTORYfalseWhether the WorldEdit inventory mode is enabled by default.
WORLDEDIT_BOSSBAR_DISABLEfalseWhether the WorldEdit progress boss bar is disabled by default.

Batch Auto Save

batch-auto-save: 600
OptionTypeDefaultDescription
batch-auto-saveInteger600Interval in seconds between automatic batch saves of player data to the database. Default is 600 seconds (10 minutes).

Enable Command Log

enable-command-log: false
OptionTypeDefaultDescription
enable-command-logBooleanfalseWhen enabled, logs all commands executed by players to the database for auditing purposes.

Near Distance

near-distance: 200
OptionTypeDefaultDescription
near-distanceInteger200The radius (in blocks) used by the /near command to find nearby players.

Global Date Format

global-date-format: "dd/MM/yyyy HH:mm:ss"
OptionTypeDefaultDescription
global-date-formatStringdd/MM/yyyy HH:mm:ssThe date format pattern used throughout the plugin for displaying dates and times. Follows Java SimpleDateFormat patterns.

Common format patterns:

PatternDescriptionExample
dd/MM/yyyy HH:mm:ssDay/Month/Year 24-hour time04/02/2026 14:30:00
MM/dd/yyyy hh:mm aUS-style with AM/PM02/04/2026 02:30 PM
yyyy-MM-dd HH:mm:ssISO 8601 style2026-02-04 14:30:00

Full Default Configuration

Below is the complete default config.yml with all sections and their default values for reference:

#
# zEssentials - Main Configuration
#

# Debug mode - Enable verbose logging for troubleshooting
enable-debug: false

# Storage configuration
storage-type: SQLITE
server-type: PAPER

# Database configuration (for MYSQL and HIKARICP storage types)
database-configuration:
table-prefix: "zessentials_"
host: "192.168.10.10"
port: 3306
user: "homestead"
password: "secret"
database: "zessentials"
debug: false

# Redis configuration (for REDIS server type)
redis-configuration:
host: "127.0.0.1"
port: 6379
password: ""

# Commands that always have cooldowns (even with bypass permission)
force-commands:
- "/essversion"

# Allow players with essentials.bypass.cooldown to skip cooldowns
enable-cooldown-bypass: true

# Command cooldowns with permission-based overrides
command-cooldowns:
- command: "heal"
cooldown: 60
permissions:
- permission: "essentials.cooldowns.vip"
cooldown: 40
- permission: "essentials.cooldowns.staff"
cooldown: 20
- command: "tpr"
cooldown: 300
permissions:
- permission: "essentials.cooldowns.vip"
cooldown: 120
- permission: "essentials.cooldowns.staff"
cooldown: 0

# Command restrictions by world and cuboid region
command-restrictions:
- commands:
- "heal"
- "feed"
bypass-permission: "essentials.bypass.restriction"
worlds:
- "world_pvp"
cuboids:
- "world,100,0,100,200,256,200"

# Trash inventory size (must be a multiple of 9: 9, 18, 27, 36, 45, 54)
trash-size: 54

# Compact material conversions (9 items -> 1 block)
compact-materials:
- COAL:COAL_BLOCK
- REDSTONE:REDSTONE_BLOCK
- LAPIS_LAZULI:LAPIS_BLOCK
- DIAMOND:DIAMOND_BLOCK
- EMERALD:EMERALD_BLOCK
- IRON_INGOT:IRON_BLOCK
- GOLD_INGOT:GOLD_BLOCK
- RAW_IRON:RAW_IRON_BLOCK
- RAW_GOLD:RAW_GOLD_BLOCK
- RAW_COPPER:RAW_COPPER_BLOCK
- COPPER_INGOT:COPPER_BLOCK

# Smeltable material conversions (instant furnace)
smeltable-materials:
- RAW_IRON:IRON_INGOT
- RAW_GOLD:GOLD_INGOT
- RAW_COPPER:COPPER_INGOT
- IRON_ORE:IRON_INGOT
- GOLD_ORE:GOLD_INGOT
- COPPER_ORE:COPPER_INGOT
- COBBLESTONE:STONE
- SAND:GLASS
- WET_SPONGE:SPONGE

# Global message color scheme
message-colors:
primary: "#24d65d"
secondary: "#656665"
error: "#ff0000"
success: "#00ff00"

# Chat anti-spam cooldowns (message count threshold: cooldown in seconds)
chat-cooldowns:
2: 1.5
4: 5.0
8: 10.0

# Placeholder replacement system
replace-placeholders:
- placeholder: "%player_ping%"
conditions:
- type: NUMBER
min: 0
max: 50
result: "<#00ff00>%player_ping%ms"
- type: NUMBER
min: 51
max: 100
result: "<#ffff00>%player_ping%ms"
- type: NUMBER
min: 101
max: 200
result: "<#ff8800>%player_ping%ms"
- type: NUMBER
min: 201
result: "<#ff0000>%player_ping%ms"

# Fly settings
temp-fly-task: 1
disable-fly-world:
- "world_pvp"
enable-fly-return: true
fly-task-announce:
- 300
- 120
- 60
- 30
- 10
- 5
- 4
- 3
- 2
- 1

# Worlds where /back is disabled
disable-back-world:
- "world_pvp"

# Random words for generation features
random-words:
- "apple"
- "banana"
- "cherry"
- "diamond"
- "emerald"
- "fire"
- "gold"
- "honey"
- "iron"
- "jungle"

# Resolve and cache offline player names for tab-completion
enable-offline-player-names: true

# Blacklisted UUIDs excluded from certain features
blacklist-uuids:
- "00000000-0000-0000-0000-000000000000"

# Default player option states
default-options:
SOCIAL_SPY: false
GOD: false
BAN: false
MUTE: false
INVSEE: false
VANISH: false
PRIVATE_MESSAGE_DISABLE: false
PAY_DISABLE: false
POWER_TOOLS_DISABLE: false
DISABLE_SCOREBOARD: false
NIGHT_VISION: false
PHANTOMS_DISABLE: false
WORLDEDIT_INVENTORY: false
WORLDEDIT_BOSSBAR_DISABLE: false

# Auto-save interval in seconds (default: 600 = 10 minutes)
batch-auto-save: 600

# Log all player commands to the database
enable-command-log: false

# Radius in blocks for the /near command
near-distance: 200

# Global date format (Java SimpleDateFormat pattern)
global-date-format: "dd/MM/yyyy HH:mm:ss"
Copyright © 2026 GroupeZ|Build #loading...|-