Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for EssentialsX

The essential plugin suite for Paper! (and Spigot)

Report Essentials?

Release
2.21.0

mdcfe released Essentials version 2.21.0 on Sat 10:48 PM

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;

  • Updating or reviewing translations on Crowdin
  • Help users in our support channel on Discord
  • Fixing bugs or offering new features on GitHub

Finally, a shout out to our supporters on Patreon and GitHub Sponsors!
A special thanks goes to our Hero tier supporters:

  • AKP
  • @jharrison123
  • @aternosorg
  • @pebblehost

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:

Patreon GitHub Sponsors

Supported server versions

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.
  • ⚠️ Spigot is still supported but is a low 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:

  • Paper's async chunk loading reduces lag spikes during player teleports. CraftBukkit and Spigot do not support async chunk loading from plugins.
  • /anvil, /grindstone, /cartographytable, /loom, /smithingtable, and /stonecutter are only supported on Paper.
    CraftBukkit and Spigot do not support the API needed for these.
  • /recipe on 1.12+ requires Paper to avoid a dupe bug introduced by CraftBukkit and Spigot.
  • Paper contains countless overall performance optimisations over CraftBukkit and Spigot.

EssentialsX does not support the following Minecraft versions or server software:

  • ℹ️ Folia is not supported yet. We are working on proper Folia support. Do not attempt to use current versions of EssentialsX on Folia or forks of it - you may lose userdata.
  • 🛑 "Ultra-performance" Paper forks including Akarin, Yatopia, and similar projects.
    These often perform non-standard behaviour and can break your worlds and installed plugins.
  • 🛑 Mohist - The Mohist project is known to be sketchy, and has, in the past, tricked users into deleting official EssentialsX jars and installing an unofficial build.
    We cannot guarantee the safety or functionality of unofficial builds of EssentialsX; you should avoid using Mohist where possible.
  • 🛑 Other Forge/Bukkit hybrid servers including Cauldron, Thermos, Magma, CatServer, Arclight - EssentialsX is built for the Bukkit API, which does not properly support mods.
    For modded servers running Minecraft Forge, NeoForge or Fabric, you should use FTB Essentials.
  • 🛑 1.7.10 or below.

Upgrading to 2.21.0

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.

Known issues

Anchor charges deplete on Spigot even when EssentialsX Spawn overrides the spawn location

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.

Fly mode is reset when teleporting between worlds on Spigot

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)

Important Changes

Adventure Refactor (#4717)

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.

Chat: Using Paper events with other chat plugins (#6033, #6050)

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.

New features

EssentialsX now supports 1.21.4 and The Garden Awakens content (#5522, #5592, #5783, #5834, #5900, #5961, #5985)

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.

New 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

New 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'

Multipliers for /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

The /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.

The /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.

Option to limit the total number of lore lines for /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

New 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

Various improvements to random teleport. (#4271, #5990)

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"

Define requirements for /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

Discord: Option to ignore certain roles for {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"

Discord: Option to define role aliases. (#5157)

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"

Other additions

  • Translations have been updated with the latest community contributions from Crowdin.
  • Our feature provider system has been fully rewritten. (#5087, #6081)
  • Our dependencies and build tools have been updated to their latest versions. (#5685, #5704)
  • Kits now support items with custom model data. (#5433)
  • Waxed signs can no longer be edited with /editsign without essentials.editsign.waxed.exempt. (#5492)
  • The /pay command now supports abbreviations for thousand (k), millions (m), billions (b), and trillions (t). (#5457)
  • The /whois and /seen commands now display if a player is whitelisted or not. (#5486)
  • The excluded-biomes setting in tpr.yml now supports custom biomes. (#5703)
  • Jailing offline players with the jail-online-time option enabled now jails the player for the proper amount of time. (#5701)
  • The /fireball command can be used to fire wind charges. (#5951)
  • The /delhome command now supports * wildcards. (#5919)
  • You can now give a skull directory to other players with /skull. Requires the essentials.skull.spawn.others permission. (#5822, #6008)
  • A translation key was added for /alts to customize its output. (#5595)
  • The /ess dump command now uses pastes.dev. (#6011)
  • Chat formats can now per customized per type (normal/question/shout). (#5337)
  • Discord: The Discord module now also supports Paper's chat events. (#5908)
  • Discord: The link in /discord is now clickable. (#5934)
  • Discord: The server-start message now has a {starttimeseconds} placeholder to display the server startup time. (#5686)
  • Spawn: The /spawn command no longer sends its message before the teleport occurs. (#6025)

Bug fixes

Bugs fixed from 2.20.1 and older versions

  • A duplication glitch with /clearinventory was resolved. (#5899, #5901)
  • Various issues with Trade signs have been resolved. (#5574, #5874, #6076)
  • The correct permission node is now used for potions in /potion. (#5552)
  • Players can no longer /ignore themselves. (#5488)
  • Books given from book.txt file no longer give a invalid book. (#4920)
  • Custom quit messages now show the correct number of online players. (#5541)
  • A potential memory leak arising from unregistering commands has been fixed. (#5572)
  • The give command no longer gives potions when trying to give tipped arrows. (#5627)
  • Banner patterns are no longer ignored in kits. (#5723)
  • The heal sign now accounts for the player's max health attribute. (#5752)
  • The /eco give command now has a more consistent color scheme. (#5738)
  • The /pay command now supports commas/periods based on the player's locale. (#5962)
  • An issue with respawn logic when respawn-at-home-bed was enabled has been resolved. (#5825)
  • Extraneous code in our command preprocessing has been removed. (#5981)
  • Flight is now once again preserved when teleporting between worlds. (#6012)
  • Player loot tables are now dropped even when a player has essentials.keepinv. (#6036)
  • The /book command can now lock/unlock books again on 1.20+. (#6064)
  • Expired /mail messages no longer show up in the alert when joining. (#6063)
  • AntiBuild: Destroying End Crystals are now protection on 1.8.8. (#6009)

Regressions fixed from 2.21.0 dev builds

The following bugs from 2.21.0 development builds have been fixed:

  • Various issues from the Adventure refactor have been fixed. (#5632, #5635, #5636, #5637, #5648, #5650, #5659, #5666, #5687, #5688, #5692, #5705, #5700, #5699, #5698, #5702, #5711, #5719, #5722, #5726, #5740, #5737, #5739, #5736, #5761, #5769, #5771, #5776, #5819, #5872, #5913, #5952, #5957, #5956, #5967, #5972, #5921, #6015, #6018, #6076)
  • Various issues with Spigot incompatibility have been fixed. (#5820, #5872, #5934, #5934)
  • Denomination abbreviations in /pay are now more strictly parsed to prevent trolling. (#5638)
  • First time EssentialsX installs no longer fail when there isn't an existing tpr.yml file. (#6004)
  • Trying to use a kit with splash potions no longer results in an error in 1.8.8. (#6047, #6055)
  • Flight is no longer preserved for those who do not have permission to fly in their destination world. (#6065, #6079, #6079)
  • The /baltop command no longer hides all players in certain conditions. (#6074)
  • The correct SpawnerBlockProvider is now selected for 1.21+. (#6080)
  • Chat: Various issues from the Paper chat event refactor have been fixed. (#6060, #6067, #6075)

Changes for developers

Synchronous teleport APIs have been removed.

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.

New Events

EssentialsX 2.21.0 introduces a new event:

  • HelpopMessageSentEvent is fired when a player sends a message through /helpop (#5490)

New Methods

  • DiscordLink: There is now a method to get a list of players with a linked Discord account: DiscordLinkService#getAllLinkedPlayers. (#5896)

For a full commit log, click here.

Information

Published onMarch 22, 2025
Downloads414

Platforms

Paper Paper (1.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, 1.20.6, 1.21.4)

Dependencies

Paper Paper
Edit Plugin Dependencies: Paper