What Is EssentialsX?
EssentialsX is the most comprehensive core plugin for Minecraft servers. It ships more than 130 commands: the teleport system (home, warp, spawn, TPA), economy, chat formatting, kits, nicknames, private messaging and much more. It is the modern, actively maintained fork of Essentials, which has been in development since 2011.
- 130+ built-in commands — no extra plugins needed
- Modular design — install only the parts you actually need
- Active development — Paper, Spigot and Purpur support
- Full compatibility with PlaceholderAPI, LuckPerms and Vault
- Detailed config.yml — every feature can be customised
Installation
Download EssentialsX from the official site or straight from the CI server. Drop the main jar and whichever modules you need into the plugins/ folder.
cd ~/server/plugins
# Main plugin (required)
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsX.jar
# Vault (economy and permission bridge — strongly recommended)
wget https://github.com/MilkBowl/Vault/releases/latest/download/Vault.jar
# Modules (optional)
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXChat.jar
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXSpawn.jar
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXAntiBuild.jar
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXGeoIP.jar
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXDiscord.jar
wget https://ci.ender.zone/job/EssentialsX/lastSuccessfulBuild/artifact/jars/EssentialsXProtect.jarAfter the first start-up a config.yml will appear in the plugins/Essentials/ folder. Stop the server, edit the config, then start it again.
config.yml in Detail
The heart of EssentialsX is config.yml. It runs to over 800 lines. Below we go through the most critical settings, grouped by category.
Teleport Settings
| Setting | Default | Recommended | Description |
|---|---|---|---|
| <code>teleport-cooldown</code> | 0 | 3 | Wait time between teleports (seconds) |
| <code>teleport-delay</code> | 0 | 3 | Countdown before the teleport (seconds). Cancelled if the player moves |
| <code>teleport-invulnerability</code> | 0 | 4 | Damage immunity after teleporting (seconds) |
| <code>teleport-back-when-freed-from-jail</code> | true | true | Return to the previous location when released from jail |
| <code>teleport-to-center</code> | true | true | Teleport to the centre of the block (instead of the edge) |
# config.yml — Teleport section
teleport-cooldown: 3
teleport-delay: 3
teleport-invulnerability: 4
teleport-to-center: trueEconomy Settings
| Setting | Default | Recommended | Description |
|---|---|---|---|
| <code>starting-balance</code> | 0 | 1000 | Starting balance for a new player |
| <code>max-money</code> | 10000000000000 | 10000000 | Maximum balance (guards against exploits) |
| <code>min-money</code> | -10000 | 0 | Minimum balance (negative = debt allowed) |
| <code>economy-log-enabled</code> | false | true | Log every money transfer |
| <code>currency-symbol</code> | $ | ₺ | Currency symbol |
| <code>currency-symbol-suffix</code> | false | true | Put the symbol after the number (100₺) |
# config.yml — Economy section
starting-balance: 1000
max-money: 10000000
min-money: 0
economy-log-enabled: true
currency-symbol: '₺'
currency-symbol-suffix: trueHome Settings
| Setting | Default | Recommended | Description |
|---|---|---|---|
| <code>max-homes</code> | — | 3 | Default home limit (all players) |
| <code>sethome-multiple.default</code> | 3 | 3 | Number of homes for the default group |
| <code>sethome-multiple.vip</code> | — | 5 | Number of homes for the VIP group |
| <code>sethome-multiple.admin</code> | — | 10 | Number of homes for the admin group |
| <code>world-home-permissions</code> | false | true | Require a per-world sethome permission |
# config.yml — Home section
max-homes: 3
sethome-multiple:
default: 3
vip: 5
admin: 10
world-home-permissions: falseSpawn Settings
| Setting | Default | Recommended | Description |
|---|---|---|---|
| <code>spawn-on-join</code> | false | true | Teleport the player to spawn when they log in |
| <code>spawn-on-join-groups</code> | — | — | Teleport only certain groups to spawn (empty = everyone) |
| <code>respawn-at-home</code> | false | false | Respawn at home or at spawn after death? (with EssentialsXSpawn) |
| <code>newbies.announce-format</code> | — | &eWelcome, {DISPLAYNAME}! | New player announcement |
Other Important Settings
| Setting | Default | Recommended | Description |
|---|---|---|---|
| <code>nick-prefix</code> | ~ | ~ | Nickname prefix (can be left empty) |
| <code>change-displayname</code> | true | true | Replace the player's display name with their nickname |
| <code>add-prefix-suffix</code> | true | true | Add the LuckPerms prefix/suffix to the display name |
| <code>ops-name-color</code> | 4 | none | Name colour for OP players (none = disabled) |
| <code>update-check</code> | true | true | Check for updates on start-up |
| <code>locale</code> | — | tr | Message language (messages_tr.properties) |
| <code>per-warp-permission</code> | false | true | Require a separate permission for each warp |
The Teleport System
The teleport system is the most heavily used part of EssentialsX. It has four main components: Home, Warp, Spawn and TPA.
Home Commands
These manage each player's personal teleport points. The per-group home limit is set in config.yml.
| Command | Description | Permission |
|---|---|---|
| <code>/sethome</code> | Save the default home | essentials.sethome |
| <code>/sethome mine</code> | Save a named home | essentials.sethome.multiple |
| <code>/home</code> | Teleport to the default home | essentials.home |
| <code>/home mine</code> | Teleport to a named home | essentials.home |
| <code>/delhome mine</code> | Delete a named home | essentials.delhome |
| <code>/homes</code> | List all homes | essentials.home.others (someone else's) |
/sethome # Save the default home
/sethome mine # Save a named home
/home # Teleport to the default home
/home mine # Teleport to a named home
/delhome mine # Delete the home
/homes # List all homesWarp Commands
Fixed, server-wide teleport points that everyone (or everyone with the right permission) can use. Ideal for key locations such as the market, arena or farm.
| Command | Description | Permission |
|---|---|---|
| <code>/setwarp market</code> | Create a warp point | essentials.setwarp |
| <code>/warp market</code> | Teleport to a warp point | essentials.warp + essentials.warps.market |
| <code>/delwarp market</code> | Delete a warp point | essentials.delwarp |
| <code>/warps</code> | List all warps | essentials.warp.list |
Spawn Commands
| Command | Description | Permission |
|---|---|---|
| <code>/setspawn</code> | Set the spawn point | essentials.setspawn |
| <code>/setspawn vip</code> | Set a per-group spawn | essentials.setspawn |
| <code>/spawn</code> | Teleport to spawn | essentials.spawn |
TPA (Teleporting to a Player)
This lets players send each other teleport requests. The accept/deny mechanism keeps it safe.
| Command | Description | Permission |
|---|---|---|
| <code>/tpa Player</code> | Send a teleport request to a player | essentials.tpa |
| <code>/tpahere Player</code> | Ask a player to teleport to you | essentials.tpahere |
| <code>/tpaccept</code> | Accept the request | — |
| <code>/tpdeny</code> | Deny the request | — |
| <code>/tpacancel</code> | Cancel a request you sent | — |
| <code>/tpaall</code> | Send a request to every player | essentials.tpaall |
| <code>/back</code> | Return to your last location (including after death) | essentials.back |
| <code>/tp Player</code> | Teleport directly (admin) | essentials.tp |
The Economy System
EssentialsX includes a built-in economy engine. Working together with the Vault plugin, it integrates fully with third-party plugins such as ChestShop, ShopGUI+ and Jobs.
| Command | Description | Permission |
|---|---|---|
| <code>/balance</code> (or <code>/bal</code>) | See your own balance | essentials.balance |
| <code>/balance Player</code> | See someone else's balance | essentials.balance.others |
| <code>/pay Player 500</code> | Send money to a player | essentials.pay |
| <code>/baltop</code> | List of the richest players | essentials.baltop |
| <code>/eco give Player 1000</code> | Give money to a player | essentials.eco.give |
| <code>/eco take Player 500</code> | Take money from a player | essentials.eco.take |
| <code>/eco set Player 0</code> | Set a balance | essentials.eco.set |
| <code>/eco reset Player</code> | Reset to the starting balance | essentials.eco.set |
Chat Formatting (EssentialsX Chat)
The EssentialsXChat module lets you customise the chat format completely. It is configured from the chat section of config.yml.
# config.yml — Chat section
chat:
format: '{DISPLAYNAME}&7: &f{MESSAGE}'
group-formats:
default: '&7{PREFIX}{DISPLAYNAME}{SUFFIX}&7: &f{MESSAGE}'
vip: '&a{PREFIX}{DISPLAYNAME}{SUFFIX}&7: &f{MESSAGE}'
moderator: '&b{PREFIX}{DISPLAYNAME}{SUFFIX}&7: &f{MESSAGE}'
admin: '&c{PREFIX}{DISPLAYNAME}{SUFFIX}&7: &f{MESSAGE}'Chat Variables
| Variable | Description |
|---|---|
| <code>{DISPLAYNAME}</code> | The player's display name (their nickname, if they have one) |
| <code>{PREFIX}</code> | The prefix coming from LuckPerms/Vault |
| <code>{SUFFIX}</code> | The suffix coming from LuckPerms/Vault |
| <code>{GROUP}</code> | The player's primary group |
| <code>{MESSAGE}</code> | The chat message |
| <code>{WORLD}</code> | The name of the world they are in |
| <code>{USERNAME}</code> | The real username (not the nickname) |
The Nickname System
This lets players change their display names. With colour code support, coloured nicknames are possible too.
| Command | Description | Permission |
|---|---|---|
| <code>/nick NewName</code> | Set a nickname | essentials.nick |
| <code>/nick &cNewName</code> | Set a coloured nickname | essentials.nick + essentials.nick.color |
| <code>/nick off</code> | Remove the nickname | essentials.nick |
| <code>/realname NewName</code> | Find the real name behind a nickname | essentials.realname |
| <code>/nick Player NewName</code> | Change someone else's nickname | essentials.nick.others |
# config.yml — Nickname settings
nick-prefix: '~' # Character added in front of the nickname (can be left empty)
change-displayname: true # Replace the display name with the nickname
nick-color: true # Allow the use of colour codes
max-nick-length: 20 # Maximum nickname lengthThe Kit System
You can define ready-made item sets and hand them out to players at set intervals. Kits are defined inside config.yml.
# config.yml — Kits section
kits:
starter:
delay: 86400 # 24 hour cooldown
items:
- stone_sword 1
- iron_pickaxe 1
- bread 16
- oak_log 32
vipkit:
delay: 43200 # 12 hour cooldown
items:
- diamond_sword 1 sharpness:2
- diamond_pickaxe 1 efficiency:3
- golden_apple 8
- diamond 16
miner:
delay: 3600 # 1 hour cooldown
items:
- iron_pickaxe 1 efficiency:4 unbreaking:3
- torch 64
- bread 16| Command | Description | Permission |
|---|---|---|
| <code>/kit starter</code> | Claim a kit | essentials.kit.starter |
| <code>/kit vipkit</code> | Claim the VIP kit | essentials.kit.vipkit |
| <code>/kits</code> | List the available kits | essentials.kit.list |
| <code>/createkit name seconds</code> | Create a kit from your inventory | essentials.createkit |
| <code>/showkit name</code> | Show the contents of a kit | essentials.showkit |
EssentialsX Modules
EssentialsX has a modular structure. Alongside the main jar, you can install whichever modules you need one by one:
| Module | Function | Dependency | Required? |
|---|---|---|---|
| <strong>EssentialsX Chat</strong> | Chat formatting, per-group colours, PlaceholderAPI support | Vault (for prefix/suffix) | Recommended |
| <strong>EssentialsX Spawn</strong> | Advanced spawn management, first-join spawn, per-group spawn, respawn settings | — | Recommended |
| <strong>EssentialsX AntiBuild</strong> | Per-group build/break blocking, item usage restrictions | — | Optional |
| <strong>EssentialsX GeoIP</strong> | Shows players' country/city information, geographic restrictions | GeoIP database | Optional |
| <strong>EssentialsX Discord</strong> | Discord–Minecraft chat synchronisation, webhook support, console channel | Discord bot token | Optional |
| <strong>EssentialsX Protect</strong> | World protection: blocking creeper/TNT explosions, fire spread and lava flow | — | Optional |
Setting Up EssentialsX Discord
The EssentialsX Discord module carries Minecraft chat into a Discord channel and Discord messages back into the game.
- Create a new bot from the Discord Developer Portal
- Get the bot token and paste it into
plugins/Essentials/config.yml - Invite the bot to your server (the MESSAGE_CONTENT intent must be enabled)
- Edit the
discordsection in the config: enter your channel IDs
# config.yml — Discord section (simplified)
discord:
token: 'YOUR_BOT_TOKEN_HERE'
guild: '123456789012345678'
channels:
primary: '123456789012345678'
staff:
channel: '123456789012345679'
console:
channel: '123456789012345680'Permissions Table
The most frequently used EssentialsX permissions. Assign them to groups with LuckPerms:
| Permission | Description | Recommended Group |
|---|---|---|
| <code>essentials.home</code> | Teleport home | default |
| <code>essentials.sethome</code> | Save a home | default |
| <code>essentials.sethome.multiple.3</code> | Save up to 3 homes | default |
| <code>essentials.warp</code> | Teleport to a warp | default |
| <code>essentials.tpa</code> | Send TPA requests | default |
| <code>essentials.back</code> | Return to the last location | default |
| <code>essentials.balance</code> | See the balance | default |
| <code>essentials.pay</code> | Send money | default |
| <code>essentials.kit</code> | Use kits | default |
| <code>essentials.nick</code> | Change nickname | vip |
| <code>essentials.nick.color</code> | Coloured nickname | vip |
| <code>essentials.fly</code> | Fly | vip |
| <code>essentials.tp</code> | Teleport directly | moderator |
| <code>essentials.kick</code> | Kick players | moderator |
| <code>essentials.mute</code> | Mute players | moderator |
| <code>essentials.ban</code> | Ban players | admin |
| <code>essentials.gamemode</code> | Change game mode | admin |
| <code>essentials.eco.give</code> | Give money (admin) | admin |
| <code>essentials.setwarp</code> | Create warps | admin |
| <code>essentials.*</code> | All EssentialsX permissions | owner |
Translating the Messages
EssentialsX keeps its messages in plugins/Essentials/messages.properties. To run the plugin in another language — Turkish, for example:
# config.yml
locale: 'tr'This setting generates a messages_tr.properties file automatically. You can edit any message inside it. Community translations are available as well.
Common Mistakes and How to Fix Them
| Problem | Cause | Fix |
|---|---|---|
| The prefix does not show in chat | Vault or EssentialsX Chat is missing | Install Vault + EssentialsXChat, check <code>add-prefix-suffix: true</code> |
| The config reset after <code>/reload</code> | Reload breaks EssentialsX | Never use /reload; restart with <code>stop</code> |
| The economy does not work | Vault is not installed, or there is no provider | Install Vault and check whether EssentialsX is loading as the economy provider (<code>/vault-info</code>) |
| The home limit does not work | <code>sethome-multiple</code> is not set up properly in the config | Check that the group names match the ones in LuckPerms |
| TPA requests never arrive | <code>teleport-cooldown</code> is too high, or the permission is missing | Check the <code>essentials.tpa</code> permission and lower the cooldown |
| Nickname colour codes do not work | The <code>essentials.nick.color</code> permission is missing | Grant the permission through LuckPerms |
| The kit cooldown never resets | The timing is right but it is calculated in seconds | 86400 = 1 day, 3600 = 1 hour — enter the correct value |
| The warp permission does not work | <code>per-warp-permission: true</code> but the permission was never granted | Grant the <code>essentials.warps.warp_name</code> permission |