Note: Looking for addons? See the full EssentialsX collection on Modrinth!
At long last, 🎉 EssentialsX 2.21.0 is here! This release comes with support for Minecraft 1.21.4 and content from The Garden Awakens drop, a rework of text throughout the plugin to add initial support for rich text components with MiniMessage, and a handful of new features and bug fixes!
Thanks to everyone who has contributed code to this release (many of whom are listed at the bottom of this release), as well as to everyone who has contributed to translations on Crowdin!
In addition, a massive thanks to our community members who have assisted countless people with using EssentialsX across GitHub and MOSS, including @Evidentsinger14, @JasonHorkles, @ImDarkLaw, @Chew and many others.
The EssentialsX project is powered by the community. If you want to help us out, you can contribute by;
Finally, a shout out to our supporters on Patreon and GitHub Sponsors!
A special thanks goes to our Hero tier supporters:
Your support helps us to continue spending hours of our free time working on and improving EssentialsX for everyone. If you've got any spare change, you can click one of the buttons below to support the EssentialsX project with a one-off or monthly pledge:
EssentialsX officially supports the Paper server software. Specifically, EssentialsX is designed to work on the following Minecraft versions:
1.21.4 - EssentialsX actively develops for and supports this version.1.8.8, 1.9.4, 1.10.2, 1.11.2, 1.12.2, 1.13.2, 1.14.4, 1.15.2, 1.16.5, 1.17.1, 1.18.2, 1.19.4, and 1.20.6 - these versions are still supported, but are not a priority for us, and may be dropped in a future release.We recommend using the latest version of Paper. EssentialsX includes significant improvements that require Paper, including:
/anvil, /grindstone, /cartographytable, /loom, /smithingtable, and /stonecutter are only supported on Paper./recipe on 1.12+ requires Paper to avoid a dupe bug introduced by CraftBukkit and Spigot.EssentialsX does not support the following Minecraft versions or server software:
1.7.10 or below.If you're upgrading from 2.20.1, you can keep your current EssentialsX config file. However, 2.21.0 adds several new options that you may want to configure. Read on for the list of new configuration options.
Upgrading from 2.20.0 or older versions of EssentialsX? See the previous update changelogs.
On CraftBukkit and Spigot, anchor charges will deplete regardless of the respawn-at-anchor due to an unfixed bug in CraftBukkit. This bug has been patched in Paper.
On Spigot 1.17.1 and greater, player's fly mode will be reset regardless of the world-change-fly-reset setting due to behavior change in vanilla. A fix for this is in place for Paper servers. (#6012)
EssentialsX 2.21.0 has undergone a complete overhaul of our translation system to add support for chat components (Adventure/MiniMessage).
This brings with it the addition of per-player-locale translations and support for MiniMessage inside our messages.properties files.
All messages should remain nearly identical than they were before this update. A future update will add hover and click events to some of our commands.
Message files have been moved from plugins/Essentials/ to plugins/Essentials/messages/ in this release. When upgrading to 2.21.0, any custom message files will be converted and moved to the new location automatically.
By default, EssentialsX 2.21.0 now uses the modern AsyncChatEvent from Paper instead of Bukkit's legacy AsyncPlayerChatEvent. This will allow EssentialsX to support rich text components in chat formats in the future.
However, if you use any plugins that rely on the legacy AsyncPlayerChatEvent, you may run into compatibility issues when upgrading to 2.21.0.
For now, you can switch back to the legacy events by setting chat.paper-chat-events to false in config.yml, but be aware this config option is not intended to be used long-term and could be removed in the future.
You should aim to replace any incompatible plugins with ones that support Paper's chat events.
EssentialsX now officially supports Paper and Spigot 1.21.4, and content from The Garden Awakens feature drop.
Support for Minecraft 1.21.5 and Spring to Life will be added in a future patch release.
per-player-locale setting. (#4717)EssentialsX can now send messages in a player's native language.
# Should EssentialsX use player's language instead of the server's when sending messages?
# This is useful if you want to use a different language for your server than for your players.
# For example, if you have your server set to English and a player who speaks French, you can set this to true
# and EssentialsX will send messages in French to the player and messages in the console as English.
# If a player's language is not known, the server's language will be used.
per-player-locale: false
message-colors settings. (#4717)You can now customize the color scheme of EssentialsX without having to modify messages.properties files.
# Change the default primary and secondary colours used in EssentialsX messages.
# Some messages may use custom colours, which will need to be edited in the appropriate message files.
# For more information on customising messages, see https://essentialsx.net/wiki/Locale.html
message-colors:
primary: '#ffaa00'
secondary: '#ff5555'
/sell and sell signs (#4770)Players with certain permissions can now be given a customizable multiplier to the value of items they sell through /sell or [Sell] signs. The multipliers can be configured in the config.yml like so:
# Allow players to receive multipliers for items sold with /sell or the sell sign.
# You can set the default multiplier using the 'default' rank below.
# To grant different multipliers to different people, you need to define a 'multiplier-rank' below.
# Create the 'multiplier-rank' below, and give the matching permission: essentials.sell.multiplier.<multiplier-rank>
sell-multipliers:
default: 1.0
double: 2.0
triple: 3.0
/mail command now allows for clearing other people's mail. (#4878)Players with essentials.mail.clear.others can clear other player's mail with /mail clear <player> and players with essentials.mail.clearall can clear the mail of all users with /mail clearall.
/skull command can now give skulls from texture urls. (#5120)You can now use /skull <texture> to give skulls with a texture url or base64 encoded texture data.
/itemlore. (#4773)You can now impose a limit to the number of lore lines players can add using the /itemlore command. Players with the essentials.itemlore.bypass permission will bypass this limit.
# Set the maximum amount of lore lines a user can set with the /itemlore command.
# Users with the essentials.itemlore.bypass permission will be able to bypass this limit.
max-itemlore-lines: 10
socialspy-uses-displaynames setting. (#5613)You can now specify if EssentialX should use usernames over nicknames in socialspy.
# Whether social spy should use formatted display names which may include color.
# If false, social spy will use only the actual player names.
socialspy-uses-displaynames: true
There have been a number of additions related to random teleport. Including, a [RandomTeleport] sign, the ability to run /tpr from the console, as well as the following new config options:
# If configured, users will spawn at the random spawn location instead of the newbies spawnpoint.
random-spawn-location: "none"
# If configured, when users die, they will respawn at the random respawn location.
random-respawn-location: "none"
/balancetop. (#5394)Server admins can now define a minimum balance or time played be met for a player to appear on the /balancetop list with the following config.yml options:
# Requirements which must be met by the player to get their name shown in the balance top list.
# Playtime is in seconds.
baltop-requirements:
minimum-balance: 0
minimum-playtime: 0
{color} and {role} placeholders. (#5157)You can now define a list of roles which should be ignored by the {color} and {role} placeholders.
# A list of roles which should be ignored by the {color} and {role} placeholders.
# for the Discord->MC chat format.
discord-role-blacklist:
- "123456789012345678"
- "Members"
You can now replace role names with whatever you want for the Discord to MC chat relay
# Role aliases allow you to replace the role names with something different in the Discord->MC chat relay format.
# If you are using role aliases, make sure to remove the '#' at the start to allow the setting to be read.
discord-roles-aliases:
# "123456789012345678": "&c&lAdmin"
# "Members": "Member"
/editsign without essentials.editsign.waxed.exempt. (#5492)/pay command now supports abbreviations for thousand (k), millions (m), billions (b), and trillions (t). (#5457)/whois and /seen commands now display if a player is whitelisted or not. (#5486)excluded-biomes setting in tpr.yml now supports custom biomes. (#5703)jail-online-time option enabled now jails the player for the proper amount of time. (#5701)/fireball command can be used to fire wind charges. (#5951)/delhome command now supports * wildcards. (#5919)/skull. Requires the essentials.skull.spawn.others permission. (#5822, #6008)/alts to customize its output. (#5595)/ess dump command now uses pastes.dev. (#6011)/discord is now clickable. (#5934)server-start message now has a {starttimeseconds} placeholder to display the server startup time. (#5686)/spawn command no longer sends its message before the teleport occurs. (#6025)/potion. (#5552)/ignore themselves. (#5488)/eco give command now has a more consistent color scheme. (#5738)/pay command now supports commas/periods based on the player's locale. (#5962)respawn-at-home-bed was enabled has been resolved. (#5825)essentials.keepinv. (#6036)/book command can now lock/unlock books again on 1.20+. (#6064)/mail messages no longer show up in the alert when joining. (#6063)The following bugs from 2.21.0 development builds have been fixed:
/pay are now more strictly parsed to prevent trolling. (#5638)tpr.yml file. (#6004)EssentialsX 2.18.0 replaced the legacy synchronous Teleport, TimedTeleport, IUser#getTeleport, and IJails#sendToJail(IUser, String) APIs with new, asynchronous replacements that support Paper's async chunk loading.
The legacy synchronous teleport APIs have not been fully functional for some time, and in 2.21.0, they have now been removed.
Any plugins relying on these were likely already broken, but those plugins will no longer compile against or work with 2.21.0.
InvalidWorldException is deprecated for removal. (#5984)This exception is no longer thrown by any method in the Essentials API and will be removed in a future version. Please update your code.
EssentialsX 2.21.0 introduces a new event:
HelpopMessageSentEvent is fired when a player sends a message through /helpop (#5490)DiscordLinkService#getAllLinkedPlayers. (#5896)For a full commit log, click here.

The essential plugin suite for Paper and Spigot servers.