EssentialsC / Integrations

Integrations

External plugin support - Vault, LuckPerms, PlaceholderAPI, DiscordSRV, TAB, and Floodgate.

Overview

EssentialsC detects supported plugins at startup and hooks into them automatically. No extra configuration is required to enable a hook - just have the plugin loaded before EssentialsC starts. The one exception is DiscordSRV, which is disabled by default and has to be enabled under discordsrv in config.yml before the hook is created. If a plugin is added later, a server restart is needed for the hook to activate.

All integrations are optional. EssentialsC operates normally without any of them - missing integrations are logged at startup and gracefully skipped.

Vault

When Vault is present, EssentialsC registers itself as the economy provider. Any plugin that reads balances through Vault will automatically use EssentialsC's economy.

The Vault hook is a full read-write economy provider. EssentialsC's own commands (balance, pay, eco, baltop) manage balances, and external plugins using Vault's economy API read from and write to the same storage without any additional configuration.

If you have another economy plugin registered with Vault (such as CMI, EssentialsX, or a dedicated economy plugin), remove it or disable its Vault hook to avoid conflicts. Only one Vault economy provider can be active at a time.

LuckPerms

LuckPerms integration provides group-based chat formatting and tab list prefixes and suffixes. Chat and tab formats are defined in config.yml under the luckperms section. The format strings support MiniMessage and the <DISPLAYNAME>, <USERNAME>, <MESSAGE>, <PREFIX>, <SUFFIX>, and <GROUP> placeholders, and are passed through PlaceholderAPI when it is installed.

EssentialsC reads LuckPerms metadata asynchronously and falls back gracefully if LuckPerms is absent. The chat format for a player is looked up in luckperms.group-formats using their primary group. If no matching group is defined, luckperms.chat-format is used.

config.yml
luckperms:
  chat-formatting: true
  chat-format: "<DISPLAYNAME> &7» &f<MESSAGE>"
  group-formats:
    owner: "&c[Owner] <USERNAME> &7» &f<MESSAGE>"
  tab-formatting: true
group-formats is not present in the default config.yml - add it yourself at the same indent level as chat-format, as shown above.

PlaceholderAPI

Installing PlaceholderAPI automatically registers the EssentialsC expansion, exposing over a dozen placeholder categories for use in scoreboards, nametags, tab lists, and any other PAPI-compatible plugin.

Use placeholders in the format %essc_<placeholder>% in any PAPI-compatible plugin. The full placeholder list can be viewed in-game with /essc placeholders or /papi parse me %essc_...%.

On first run, EssentialsC prints a console notice with the recommended expansions (Vault, Player, Server, Statistic). When an operator joins for the first time, it then installs those expansions plus LuckPerms through /papi ecloud download and runs /papi reload automatically. The notice only appears once, tracked by a .setup-complete marker file in the plugin folder.
Category Example Placeholders
Economy %essc_eco_balance%, %essc_eco_balance_formatted%
AFK %essc_afk_status%, %essc_afk_duration%, %essc_afk_count%
Home %essc_home_count%, %essc_home_max%, %essc_home_remaining%
Kit %essc_kit_cooldown_<name>%, %essc_kit_has_<name>%
Vanish %essc_vanish_status%, %essc_vanish_boolean%
Nickname %essc_nick_name%, %essc_nick_plain%
Playtime %essc_playtime_formatted%, %essc_playtime_hours%
Punishment %essc_punish_is_banned%, %essc_punish_is_muted%
Warp %essc_warp_count%, %essc_warp_list%
TPA %essc_tpa_pending_incoming%, %essc_tpa_blocked%
RTP %essc_rtp_cooldown%
Shop %essc_shop_category_<id>_items%, %essc_shop_balance%
Auction %essc_ah_active_total%, %essc_ah_expired_count%

DiscordSRV

DiscordSRV integration forwards server events to your Discord server through configurable channels. EssentialsC provides detailed event hooks that fire whenever a significant action occurs. The integration is disabled by default - set discordsrv.enabled to true in config.yml and restart the server to turn it on.

Event Description
Ban When a player is banned.
Ban-IP When an IP address is banned.
Kick When a player is kicked.
Mute When a player is muted.
Kit Claim When a kit is claimed.
Home Set When a home is set.
Home Delete When a home is deleted.
Shop Buy When a player buys something in /shop. Sent to the shop channel.
Shop Sell When a player sells items in /shop or with /quicksell. Sent to the shop channel.
Sell GUI When a player sells items through the /sell GUI. Sent to the shop channel.

Every event above can be toggled and colored individually under discordsrv.events, keyed by ban, kick, mute, kit, home, home_delete, banip, shop_buy, shop_sell, and sell_gui. The three shop events go to the shop channel; everything else goes to the punishments channel.

On busy servers, set shop.transaction-log.discord-min-total to only post shop transactions worth at least that amount. The shop log file and console log still record every transaction - see Shop Configuration.

Key Type Default Description
discordsrv.enabled Boolean false Set to false to disable the integration entirely. When false, no notifications are sent and no missing-plugin warnings are shown.
discordsrv.channels.punishments.name String punishments Channel key for moderation, kit and home events. The value must match a channel defined in DiscordSRV's config.yml.
discordsrv.channels.shop.name String shop Channel key for shop_buy, shop_sell and sell_gui events. Must also match a DiscordSRV channel.
discordsrv.events.<event>.enabled Boolean true Per-event toggle. Set to false to stop relaying that event.
discordsrv.events.<event>.color String #E74C3C Embed color for the event. Accepts any hex color code (#E74C3C ban, #F39C12 kick, #9B59B6 mute, #3498DB kit, #2ECC71 home, #E74C3C home delete and banip, #34BE49 shop buy, #F1C40F shop sell, #E67E22 sell GUI).
discordsrv.show-avatar Boolean true Show a player's avatar next to their name in Discord embeds.
discordsrv.avatar-url String https://crafthead.net/helm/{uuid} URL used to fetch player avatars. {uuid} is replaced with the player's UUID.

TAB

When the TAB plugin is present, EssentialsC hands tab list names over to TAB: it applies the player's nickname (or their real name if none is set) and prefixes the AFK indicator from afk.tab-placeholder.

Without TAB, EssentialsC manages the tab list itself - LuckPerms prefixes and suffixes (when luckperms.tab-formatting is enabled), the nickname, and the AFK tag are applied to the player list name and to Minecraft scoreboard teams. Vanished players are removed from the tab list when vanish.hide-from-tab is enabled.


Floodgate

Floodgate support allows Bedrock players (connecting through Geyser) to use EssentialsC commands and features seamlessly. Player data is handled correctly across Java and Bedrock editions, with proper UUID resolution for Geyser-connected players.

Bedrock players see the same messages, GUIs, and command output as Java players. Their nicknames, homes, warps, and economy data are stored using their Bedrock UUID, so switching between editions is not possible for the same account.


Metrics

EssentialsC uses bStats for anonymous usage statistics. The data collected includes server version, Java version, plugin version, and enabled features. This helps the developer understand which features are most used and which server platforms are most common.

bStats can be disabled in /plugins/bStats/config.yml. No personally identifiable information is collected.

EssentialsC also bundles FastStats with built-in error tracking, which reports back alongside the regular metrics.