EssentialsX

EssentialsX

Plugin

The essential plugin suite for Paper and Spigot servers.

Server EconomyGame MechanicsManagementSocialTransportationUtility

20.4k downloads
193 followers
Created2 years ago
Updated8 months ago

Follow Save
Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

2.20.0 - The Better Together Update

Changelog

After months of hard work from our contributors, EssentialsX 2.20.0 is here! 🎉

This release contains a new Discord Link addon, 1.19.4 support, a few new features, bug fixes and internal improvements. Keep reading to see all the new additions!

Thanks to all our contributors who contributed to this release (all 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 @triagonal, @JasonHorkles, @Evidentsinger14, @ImDarkLaw, @Chew, @Laarryy 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 shoutout to our supporters on Patreon and GitHub Sponsors!
A special thanks goes to our Hero tier supporters:

  • AKP
  • Vestria MC
  • @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 CraftBukkit, Spigot, and Paper server software. Specifically, EssentialsX is designed to work on the following Minecraft versions:

  • 1.18.2 and 1.19.4 - EssentialsX actively develops against and supports these versions.

  • ⚠️ 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, and 1.17.1 - 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:

  • 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, /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:

Upgrading to 2.20.0

If you're upgrading from 2.19.3 or above, you can keep your current EssentialsX config file. However, 2.20.0 adds several new options that you may want to configure, and to do so you'll need to either update your config or add the new settings to your existing config. Read on for a list of changes and new config options.

Upgrading from 2.19.2 or older versions of EssentialsX? See the previous update changelogs.

New module: EssentialsX Discord Link! 🎉

EssentialsX Discord now has the Discord Link addon, which lets your users easily link their Discord and Minecraft accounts! You can synchronize Discord roles with Vault groups, as well as optionally requiring players to link to Discord before playing, all with a bloat-free and easy-to-understand configuration!

kick link message link command in game link command in discord

You can read more about EssentialsX Discord Link and see how to get started here.

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.

Minecraft: Trails and Tales content not yet supported in commands

EssentialsX 2.20.0 doesn't yet support blocks, items and mobs from Minecraft: Trails and Tales in 1.19.x or 1.20. As a result, some commands and features (including /give, /spawnmob and /editsign) won't recognise the new content yet.

We plan to release a 2.20.1 update once Minecraft 1.20 has released, which will add support for the new content.

Important changes

Usermap storage and cache changes

EssentialsX 2.20 overhauls the user caching system, fixing issues with third-party plugins such as Towny.

Due to a large overhaul in data format, once you upgrade to 2.20.0, you will not be able to downgrade your userdata to older versions. We strongly recommend taking a full backup of your plugins/Essentials/usermap.csv file before you update from 2.19.7 to 2.20.0 if you ever wish to downgrade in the future.

New features

EssentialsX now supports 1.19.4

EssentialsX now officially supports CraftBukkit, Spigot and Paper for 1.19.4.

New /renamehome command

You can now use /renamehome to change the name of your existing home. If you have the essentials.renamehome.others permission, you can rename the homes of other players.

New /bottom command

You can now use /bottom to teleport to the lowest safe location in their current position.

Discord: New first-join message type

A new Minecraft -> Discord message type, sent when a player joins the server for the first time.

# Configure which Discord channels different messages will be sent to.
# You can either use the names of the channels listed above or just the id of a channel.
# If an invalid channel is used, the primary channel will be used instead.
#
# To disable a message from showing, use 'none' as the channel name.
message-types:
  ...

  # Join messages sent when a player joins the Minecraft server for the first time. This type is sent instead of the join type.
  first-join: primary

# The following entries allow you to customize the formatting of messages sent by the plugin.
# Each message has a description of how it is used along with placeholders that can be used.
messages:
  ...

  # This is the message sent to Discord when a player joins the minecraft server for the first time.
  # The following placeholders can be used here:
  # - {username}: The name of the user joining
  # - {displayname}: The display name of the user joining
  # - {joinmessage}: The full default join message used in game
  # - {online}: The amount of players online
  # - {unique}: The amount of unique players to ever join the server
  # ... PlaceholderAPI placeholders are also supported here too!
  first-join: ":arrow_right: :first_place: {displayname} has joined the server for the first time!"

Discord: New local, question, and shout message types

A few new Minecraft -> Discord message types and configuration options have been added in order to support local, question and shout chat.

# Whether to use Essentials Chat events instead of normal chat event.
# This allows you to filter chat by its type (local, question, shout).
use-essentials-events: false
# Configure which Discord channels different messages will be sent to.
# You can either use the names of the channels listed above or just the id of a channel.
# If an invalid channel is used, the primary channel will be used instead.
#
# To disable a message from showing, use 'none' as the channel name.
message-types:
  ...

  # Message sent when a player talks in local chat.
  # use-essentials-events must be set to "true" for this to work.
  local: none

  # Message sent when a player asks a question in global chat.
  # use-essentials-events must be set to "true" for this to work.
  question: primary

  # Message sent when a player talks in global chat.
  # use-essentials-events must be set to "true" for this to work.
  shout: primary
# The following entries allow you to customize the formatting of messages sent by the plugin.
# Each message has a description of how it is used along with placeholders that can be used.
messages:
  ...

  # This is the message that is used to relay minecraft local chat in Discord.
  # The following placeholders can be used here:
  # - {username}: The username of the player sending the message
  # - {displayname}: The display name of the player sending the message (This would be their nickname)
  # - {message}: The content of the message being sent
  # - {world}: The name of the world the player sending the message is in
  # - {prefix}: The prefix of the player sending the message
  # - {suffix}: The suffix of the player sending the message
  # ... PlaceholderAPI placeholders are also supported here too!
  mc-to-discord-local: "**[Local]** {displayname}: {message}"

  # This is the message that is used to relay questions from minecraft chat in Discord.
  # The following placeholders can be used here:
  # - {username}: The username of the player sending the message
  # - {displayname}: The display name of the player sending the message (This would be their nickname)
  # - {message}: The content of the message being sent
  # - {world}: The name of the world the player sending the message is in
  # - {prefix}: The prefix of the player sending the message
  # - {suffix}: The suffix of the player sending the message
  # ... PlaceholderAPI placeholders are also supported here too!
  mc-to-discord-question: "**[Question]** {displayname}: {message}"

  # This is the message that is used to relay minecraft global chat in Discord.
  # The following placeholders can be used here:
  # - {username}: The username of the player sending the message
  # - {displayname}: The display name of the player sending the message (This would be their nickname)
  # - {message}: The content of the message being sent
  # - {world}: The name of the world the player sending the message is in
  # - {prefix}: The prefix of the player sending the message
  # - {suffix}: The suffix of the player sending the message
  # ... PlaceholderAPI placeholders are also supported here too!
  mc-to-discord-shout: "**[Shout]** {displayname}: {message}"

Discord: Configurable webhook name

You can now change the webhook name format for messages sent to Discord.

# The following entries allow you to customize the formatting of messages sent by the plugin.
# Each message has a description of how it is used along with placeholders that can be used.
messages:
  ...

  # This is the bot's name which appears in Discord when sending player-specific messages.
  # The following placeholders can be used here:
  # - {username}: The username of the player sending the message
  # - {displayname}: The display name of the player sending the message (This would be their nickname)
  # - {world}: The name of the world the player sending the message is in
  # - {prefix}: The prefix of the player sending the message
  # - {suffix}: The suffix of the player sending the message
  # - {botname}: Name of the Discord bot
  # ... PlaceholderAPI placeholders are also supported here too!
  mc-to-discord-name-format: "{botname}"

Other additions

  • Translations have been updated with the latest community contributions from Crowdin.
  • Added tab completions for the /mail clear command.
  • Added the essentials.nick.hideprefix permission to hide the nickname prefix for those with it.
  • Added per command cooldown permissions: essentials.commandcooldowns.bypass.<command name>.

Bug fixes

Bugs fixed from 2.19.7 and older versions

  • Further duplication glitches were fixed in /recipe.
  • Various performance issues with NPCs and jails have been fixed.
  • Playtime statistics in /whois no longer overflow.
  • Various offhand and inventory related issues have been fixed.
  • Doubles are now supported for coordinates in the /tppos command in the console.
  • Trade signs no longer accept water bottles as a valid trade for a potion.
  • An exception is no longer raised in /tpoffline when the player's last location is not known.
  • Sulk sensors no longer detect vanished players.
  • The /top command now sends feedback once again.
  • The /editsign command now calls the SignChangeEvent.
  • Commands preformed on offline players no longer raise a NullPoinerException in some cases.
  • Discord: The console relay no longer stops working after /ess reload in some cases.
  • Discord: Webhooks should no longer hang the server during shutdown in some cases.
  • Discord: Translated Discord command descriptions are now properly truncated to account for Discord character limits.

Regressions fixed from 2.20.0 dev builds

The following bugs from 2.20.0 development builds have been fixed:

  • NPC users are once again added to the UserMap properly.
  • Servers with large amounts of user data no longer hang for minutes on startup.
  • The offhand is no longer used for /hat.
  • The /createkit command works on 1.8.8 once again.
  • Sending a mail to all online players works once again.
  • The user map now properly expels users from cache after a while.
  • Discord: Webhook names are no longer sanitized for markdown.
  • Discord Link: The /link Discord command no longer requires administrator privileges.
  • Discord Link: Synchronizing offline players no longer raises a NullPointerException

Changes for developers

Viewers can now be modified for DiscordRelayEvent

DiscordRelayEvent now has a getViewers() method which returns a mutable list of viewers for the relayed message.

Discord Link Module API

With the addition of the Discord Link Module, there is now an API service to access information about a player's Discord account that they have linked. You can obtain an instance of this and use it in tandem with the Discord module API like so:

// Gets the API service for EssentialsX Discord Link
final DiscordLinkService linkApi = Bukkit.getServicesManager().load(DiscordLinkService.class);
final String discordId = linkApi.getDiscordId(player.getUniqueId());

if (discordId == null) {
    // The player has no Discord account linked.
    return;
}

// Gets the API service for EssentialsX Discord which we will use to get the actual user
final DiscordService discordApi = Bukkit.getServicesManager().load(DiscordService.class);
final InteractionMember member = discordApi.getMemberById(discordId).join();
final String userTag = member == null ? null : member.getTag();

New events

EssentialsX 2.20.0 introduces several new events:

  • GlobalChatEvent is fired when players send a message in global chat.
  • LocalChatEvent is fired when players send a message in local chat.
  • HomeModifyEvent is fired when a home is created, updated or deleted.

For a full commit log, click here.

Files

EssentialsX-2.20.0.jar(2.91 MiB) Primary Download
EssentialsXAntiBuild-2.20.0.jar(17.78 KiB) Download
EssentialsXChat-2.20.0.jar(17.35 KiB) Download
EssentialsXDiscord-2.20.0.jar(4.46 MiB) Download
EssentialsXDiscordLink-2.20.0.jar(36.16 KiB) Download
EssentialsXGeoIP-2.20.0.jar(1.79 MiB) Download
EssentialsXProtect-2.20.0.jar(25.11 KiB) Download
EssentialsXSpawn-2.20.0.jar(17.69 KiB) Download
EssentialsXXMPP-2.20.0.jar(320.91 KiB) Download

External resources



Project members

mdcfe

Owner

JRoy

Maintainer

pop4959

Maintainer


Technical information

License
GPL-3.0-only
Project ID