███████╗███████╗░█████╗░███████╗██╗░░██╗ ██╔════╝╚════██║██╔══██╗██╔════╝██║░██╔╝ █████╗░░░░███╔═╝███████║█████╗░░█████═╝░ ██╔══╝░░██╔══╝░░██╔══██║██╔══╝░░██╔═██╗░ ███████╗███████╗██║░░██║██║░░░░░██║░╚██╗ ╚══════╝╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝
[B][SIZE=6]Keep AFK management simple[/SIZE][/B]
[B]EzAfk[/B] is a modern, lightweight AFK management plugin built for Paper and Spigot servers running Minecraft 1.21+ and Java 21+. It automates AFK detection, rewards or charges players based on AFK state, provides staff overview tools, and integrates with the systems you already use, all without sacrificing performance.
[IMG]https://img.shields.io/badge/version-3.1.1-blue[/IMG] [IMG]https://img.shields.io/badge/Minecraft-1.21%2B-green[/IMG] [IMG]https://img.shields.io/badge/Java-21%2B-orange[/IMG]
Download on [URL='https://modrinth.com/plugin/ezafk'][B]Modrinth[/B][/URL] · Found an issue or have a question? Join [URL='https://discord.gg/yWP95XfmBS']the EzPlugins Discord server[/URL].
[IMG]https://i.ibb.co/ch6q5J0X/image.png[/IMG]
[SIZE=5][B]Feature highlights[/B][/SIZE]
[LIST]
[][B]Automatic AFK detection[/B]: Detect idle players after a configurable timeout (default 5 min). Send chat or title messages, trigger animations, apply a blindness blur, and broadcast status changes server-wide.
[][B]Anti-bypass protections[/B]: Block common AFK farm tricks including infinite water flow, vehicle riding, and bubble columns, with individual toggle switches. Combine with the ezafk.bypass permission or WorldGuard regions for fine-grained control.
[][B]Bypass whitelist & blacklist[/B]: Persistent admin-managed lists stored in bypass-lists.yml. Whitelist players always bypass detection; blacklisted players can never bypass (even with the ezafk.bypass permission). Blacklist takes precedence.
[][B]AFK kick with warnings[/B]: Kick players after a configurable idle period (default 10 min). Send multi-stage chat and/or title warnings at custom intervals (e.g. 60 s, 30 s, 10 s) before the kick fires. Optionally kick only when the server is full to free up slots.
[][B]In-game staff GUI[/B]: Open /afk gui to see all AFK players at a glance. One-click buttons let staff kick, message, teleport to, or run console commands against any AFK player. Fully configurable layout in gui.yml.
[][B]AFK Zones with rewards[/B]: Define coordinate-based cuboid regions where players earn rewards for being AFK. Reward types: economy currency (Vault), console commands, or item drops. Each zone has its own interval and reward cap.
[][B]Economy-aware AFK[/B]: Charge players a one-time fee when going AFK and/or a recurring fee while staying AFK. Requires Vault. Block AFK if insufficient funds, or kick when recurring funds run out.
[][B]AFK analytics & leaderboard[/B]: Track cumulative AFK time per player. Use /afk time, /afk info, and /afk top for detailed reports and server-wide leaderboards. Data persists across restarts.
[][B]Custom display names & tab styling[/B]: Mirror AFK status in chat, name tags, and the tab list with configurable prefixes, suffixes, and formats. Works with the TAB plugin or EzAfk's built-in formatter.
[][B]Persistent storage[/B]: Store AFK data in YAML (default), SQLite, or MySQL. The storage backend is swappable without data loss.
[][B]Multi-language support[/B]: Ships with English, Spanish, Dutch, Russian, Chinese, and German message packs. Override any message per-server without touching the source.
[][B]Simple Voice Chat integration[/B]: Play a custom MP3 sound to players when they go AFK, via the Simple Voice Chat mod API.
[*][B]PlaceholderAPI support[/B]: Expose 16 AFK placeholders to any PAPI-compatible plugin: status, session length, total time, prefix/suffix, player counts, and more.
[/LIST]
[SIZE=5][B]Commands[/B][/SIZE]
[LIST]
[][B]/afk[/B]: Toggle your own AFK status.
[][B]/afk reload[/B]: Reload all configuration files.
[][B]/afk gui[/B]: Open the AFK player overview GUI.
[][B]/afk toggle [/B]: Force another player's AFK state.
[][B]/afk bypass whitelist <add|remove|list> [player][/B]: Add/remove/list players on the persistent bypass whitelist.
[][B]/afk bypass blacklist <add|remove|list> [player][/B]: Add/remove/list players on the persistent bypass blacklist.
[][B]/afk bypass [/B]: Toggle the per-session AFK bypass flag for a player.
[][B]/afk info [/B]: View a player's current AFK state, idle reason, and session info.
[][B]/afk time [player][/B]: View total AFK time for yourself or another player.
[][B]/afk time reset [/B]: Reset a player's cumulative AFK time counter.
[][B]/afk top[/B]: Show the server-wide AFK time leaderboard.
[][B]/afk zone pos1[/B] / [B]pos2[/B]: Select zone corners.
[][B]/afk zone add [/B]: Create a new AFK zone between the two selected corners.
[][B]/afk zone remove [/B]: Delete a zone.
[*][B]/afk zone list[/B]: List all configured zones.
[/LIST]
[I]Aliases[/I]: /ezafk, /ea, /afktime, /afktop
[SIZE=5][B]Permissions[/B][/SIZE] [LIST] [][B]ezafk.reload[/B]: Reload configuration. [][B]ezafk.bypass[/B]: Never be marked AFK automatically. [][B]ezafk.bypass.manage[/B]: Toggle bypass for other players. [][B]ezafk.toggle[/B]: Toggle other players' AFK state. [][B]ezafk.info[/B]: View AFK details for other players. [][B]ezafk.kick.bypass[/B]: Never be kicked by EzAfk's AFK kick. [][B]ezafk.gui[/B]: Open the staff GUI. [][B]ezafk.gui.view-active[/B]: View active players in the GUI. [][B]ezafk.gui.actions[/B]: Use action buttons in the GUI. [][B]ezafk.time[/B]: View own AFK time (granted to all players by default). [][B]ezafk.time.others[/B]: View other players' AFK time. [][B]ezafk.time.reset[/B]: Reset a player's AFK time. [][B]ezafk.top[/B]: View the leaderboard. [][B]ezafk.economy.bypass[/B]: Skip economy charges. [][B]ezafk.zone.list[/B]: List AFK zones. [][B]ezafk.zone.manage[/B]: Create and remove zones. [/LIST]
[SIZE=5][B]GUI overview[/B][/SIZE]
Open the GUI with [U]/afk gui[/U] (requires [U]ezafk.gui[/U] or OP). Default buttons let staff kick, message, or teleport to AFK players. Additional slots can run any console command with %player% and %executor% placeholders. Configure the full layout in gui.yml.
[IMG]https://i.ibb.co/Hx8BwCj/ezafk-gui.png[/IMG]
[SIZE=5][B]Integrations[/B][/SIZE]
[B]Tab list styling (built-in)[/B]
Set integration.tab-prefix.enabled: true in config.yml to display a custom prefix/suffix when a player is AFK. EzAfk can use its own formatter or delegate to the TAB plugin (mode: tab).
[IMG]https://i.ibb.co/nD4dbQj/afk-tab.png[/IMG]
[B]WorldGuard[/B]
Enable WorldGuard integration in config.yml to unlock the custom afk-bypass flag. Set it on a region to allow players to idle there without triggering kick timers or economy charges.
[code] /rg flag afk-bypass allow [/code]
[B]PlaceholderAPI[/B] Install [URL='https://www.spigotmc.org/resources/placeholderapi.6245/']PlaceholderAPI[/URL] and the expansion registers automatically. Full list of placeholders:
[LIST] [][ICODE]%ezafk_status%[/ICODE]: [ICODE]AFK[/ICODE] or [ICODE]ACTIVE[/ICODE] [][ICODE]%ezafk_status_colored%[/ICODE]: Colour-coded status string [][ICODE]%ezafk_since%[/ICODE]: Seconds since the current AFK session started [][ICODE]%ezafk_last_active%[/ICODE]: Seconds since last activity [][ICODE]%ezafk_total_seconds%[/ICODE] / [ICODE]%ezafk_total%[/ICODE] / [ICODE]%ezafk_total_formatted%[/ICODE]: Total lifetime AFK time [][ICODE]%ezafk_prefix%[/ICODE] / [ICODE]%ezafk_suffix%[/ICODE]: Configured AFK display-name prefix/suffix [][ICODE]%ezafk_playtime_active_seconds%[/ICODE] / [ICODE]%ezafk_playtime_active%[/ICODE]: Active (non-AFK) playtime [][ICODE]%ezafk_afk_count%[/ICODE] / [ICODE]%ezafk_active_count%[/ICODE]: Server-wide AFK / active player counts [/LIST]
[B]Simple Voice Chat[/B]
Place an MP3 file in plugins/EzAfk/mp3/ and set afk.sound.enabled: true. EzAfk plays it to the player when they go AFK (and optionally on return) using the Simple Voice Chat API.
[B]Economy / Vault[/B] Pair with any Vault-compatible economy plugin for AFK entry costs, recurring charges, and zone rewards. Recommended: [URL='https://www.spigotmc.org/resources/1-7-1-21-ezeconomy-modern-vault-economy-plugin-for-minecraft-servers.130975/'][B]EzEconomy[/B][/URL].
[SIZE=5][B]Configuration[/B][/SIZE]
EzAfk ships with dedicated files to keep settings organised:
[LIST]
[][B]config.yml[/B]: Core AFK behaviour, broadcasts, display-name styling, tab integration, kick, anti-bypass, economy, and integrations.
[][B]gui.yml[/B]: Inventory size and per-slot actions for the staff GUI.
[][B]zones.yml[/B]: AFK zone definitions with world, coordinates, and reward settings.
[][B]mysql.yml[/B]: Connection details for optional MySQL storage.
[*][B]messages/[/B]: Per-language message files: en, es, nl, ru, zh, de.
[/LIST]
[spoiler=Core config snippet (config.yml)] [code=YAML] messages: language: en # en | es | nl | ru | zh | de
afk: timeout: 300 broadcast: enabled: true title: enabled: true hide-screen: enabled: false animation: enabled: true anti: infinite-waterflow: false infinite-vehicle: false bubble-column: false flag-only: false
kick: enabled: false enabledWhenFull: false timeout: 600 warnings: enabled: true intervals: [60, 30, 10] mode: both # chat | title | both
economy: enabled: false cost: enter: enabled: true amount: 25.0 recurring: enabled: false amount: 5.0 interval: 300
storage: type: yaml # yaml | sqlite | mysql flush-interval-seconds: 30
integration: worldguard: true tab: true voicechat: auto # true | false | auto [/code] [/spoiler]