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:
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
, and1.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
withoutessentials.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 intpr.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 theessentials.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 on | March 22, 2025 |
---|---|
Downloads | 414 |