[1.20.* - 1.21.*] ⚡EzAfk ⚡ VIP bypass - AFK zones - AFK cost & more icon

[1.20.* - 1.21.*] ⚡EzAfk ⚡ VIP bypass - AFK zones - AFK cost & more -----

Efficient AFK detection with smart detection and multiple optional integrations



███████╗███████╗░█████╗░███████╗██╗░░██╗
██╔════╝╚════██║██╔══██╗██╔════╝██║░██╔╝
█████╗░░░░███╔═╝███████║█████╗░░█████═╝░
██╔══╝░░██╔══╝░░██╔══██║██╔══╝░░██╔═██╗░
███████╗███████╗██║░░██║██║░░░░░██║░╚██╗
╚══════╝╚══════╝╚═╝░░╚═╝╚═╝░░░░░╚═╝░░╚═╝

Keep AFK management simple

EzAfk is a modern, lightweight AFK management plugin that keeps your staff informed while gently nudging idle players back into the action. Built for contemporary Paper and Spigot servers (1.20.6 – 1.21.4) and Java 21, it automates AFK detection, provides configurable staff tools, and integrates with the systems you already use — all without sacrificing performance.

[​IMG]
[​IMG]

Feature highlights
  • Automatic AFK detection: Detect idle players after a configurable timeout, send chat or title messages, play optional animations, apply blindness, and broadcast status changes server-wide.
  • Staff workflow tools: Open the AFK player overview GUI and trigger customizable actions (kick, alert, teleport, run console commands) per-player from an intuitive menu.
  • Anti-bypass protections: Block common AFK bypass tricks with vehicle and water-flow checks, optionally gated behind the `ezafk.bypass` permission or WorldGuard regions.
  • Automatic punishments: Kick AFK players after configurable grace periods or only when the server is full, with personalized kick reasons.
  • Economy-aware AFK: Optionally charge players using Vault-supported economies when they go or stay AFK, with recurring billing plus bypass permissions or WorldGuard regions.
  • Integrations that matter: Use the WorldGuard `afk-bypass` flag, track usage with bStats, receive console reminders when new releases are available, and surface AFK prefixes in the tab list without any external dependencies.
  • Custom display names & tab styling: Mirror AFK status in chat and name tags with configurable prefixes, suffixes, and formats that work with TAB or the built-in formatter.
  • Persistent storage: Optionally connect to MySQL to store the last active timestamp for every tracked player across restarts, plus per-player YAML totals for the AFK time leaderboard.
  • AFK analytics: Surface `/afk time`, `/afk info`, and `/afk top` so staff can investigate reports and highlight the most idle players with a cached leaderboard.
  • Player-friendly deterrents: Combine optional blindness and configurable animations to nudge players back to activity without being heavy-handed.
  • Built-in translations: Ship ready-to-use English, Spanish, Dutch, Russian, and Chinese message packs with automatic fallbacks and per-server overrides.

Commands
  • /afk: Toggle your own AFK state (alias of `/ezafk`).
  • /afk reload: Reload the configuration and refresh integrations.
  • /afk gui: Open the AFK player overview GUI (includes pagination and quick actions).
  • /afk toggle <player>: Force another player's AFK state.
  • /afk bypass <player>: Toggle the bypass flag for a player when `afk.bypass.enabled` is active.
  • /afk info <player>: Review why a player was flagged AFK, how long they've been idle, and their last activity.
  • /afk time [player]: Show lifetime AFK totals for yourself or, with permission, another player.
  • /afk top: Display the cached AFK time leaderboard (also available via `/afktop`).
    Aliases: `/ezafk`, `/afk`, `/ea`, `/afktime`, `/afktop`

Permissions
  • ezafk.reload: Allows using `/afk reload`.
  • ezafk.gui: Allows opening the overview GUI.
  • ezafk.gui.view-active: Allows viewing active (non-AFK) players in the GUI.
  • ezafk.gui.actions: Allows using the player action buttons in the GUI.
  • ezafk.toggle: Allows toggling other players' AFK state.
  • ezafk.bypass: Lets a player ignore the automatic AFK trigger when bypass checking is enabled.
  • ezafk.bypass.manage: Allows toggling bypass mode for other players via `/afk bypass`.
  • ezafk.economy.bypass: Exempts a player from economy charges when AFK costs are enabled.
  • ezafk.info: Allows viewing AFK reports for other players via `/afk info`.
  • ezafk.time: Allows checking your own AFK total.
  • ezafk.time.others: Allows checking someone else's AFK total with `/afk time <player>`.
  • ezafk.top: Allows viewing the AFK time leaderboard.

GUI overview
The GUI is available with the command /afk gui, the permission ezafk.gui, or OP status. Default buttons let staff kick, alert, or teleport to AFK players, and you can add extra items that run console commands with `%player%` and `%executor%` placeholders. Configure the layout in `gui.yml`.
[​IMG]

Customizable admin actions
Beyond the preconfigured buttons, EzAfk lets you build your own action items directly in `gui.yml`. Each slot can execute one or more console or player commands, display custom icons, and include hover descriptions so staff understand what the action does. Combine placeholders such as `%player%`, `%executor%`, or `%world%` with permission checks to craft targeted moderation workflows—anything from warning messages to teleport chains or integrations with external moderation plugins.

Integrations

Tab list styling (built-in)
Enable the `afk.tab-prefix.enabled` setting to display a custom prefix or suffix whenever a player is marked AFK. Customize the prefix, suffix, and final format using placeholders like `%prefix%`, `%player%`, and `%suffix%`. EzAfk can either rely on the TAB plugin for formatting or use its own built-in implementation - choose your preferred behaviour with `afk.tab-prefix.mode` (options: `auto`, `tab`, or `custom`).

[​IMG]

WorldGuard (> v1.2)
Enable the integration in `config.yml` to unlock the custom `afk-bypass` flag, allowing specific regions where players can idle without triggering punishments or economy charges.
https://dev.bukkit.org/projects/worldguard

Flag name: afk-bypass

How to add the flag to your region?
Code (Text):

/rg flag <region> afk-bypass allow
 
MySQL storage (> v1.3)
Store AFK player state in a central database. EzAfk automatically handles inserts, updates, and cleanup based on player UUIDs.

Metrics & updates
Anonymous usage statistics are collected via bStats, and the plugin optionally checks SpigotMC for updates during startup. Both features can be disabled through `config.yml`.

PlaceholderAPI (> v1.7)
Install PlaceholderAPI to expose EzAfk's placeholders. The expansion registers itself automatically when the plugin is detected, so no extra permissions or config toggles are required.

Provided placeholders
  • %ezafk_status% — Returns `AFK` or `ACTIVE` for the targeted player.
  • %ezafk_status_colored% — Returns the color-formatted status string (e.g., `&cAFK`).
  • %ezafk_since% — Seconds since the player was marked AFK. Empty when they are active.
  • %ezafk_last_active% — Seconds since the player last moved. Always available.
  • %ezafk_prefix% — The configured AFK prefix applied to their display name while AFK.
  • %ezafk_suffix% — The configured AFK suffix applied to their display name while AFK.
  • %ezafk_afk_count% — Total number of players currently marked as AFK.
  • %ezafk_active_count% — Total number of online players not marked as AFK.

Usage example
Code (Text):

&7Status: %ezafk_status_colored%
&7AFK for: %ezafk_since%s
 
Configuration
EzAfk ships with dedicated files to keep settings organized:
  • config.yml: Core AFK behaviour, broadcasts, display-name styling, TAB integration, and punishment logic.
  • gui.yml: Inventory size and per-slot actions for the staff GUI.
  • mysql.yml: Connection details for optional persistent storage.
  • messages_*.yml: Localised player-facing messages for English, Spanish, Dutch, Russian, and Chinese out of the box.

Code (YAML):

# Config for EzAfk 1.8.0
# GUI settings have moved to gui.yml.
# MySQL settings have moved to mysql.yml.
messages
:
  # Default language for the generated messages file. Supported values: en, es, nl, ru, zh
  # Language files are located in the messages/ directory.
  language
: en
afk
:
  # Timeout in seconds
  timeout
: 300
  # Enabling this will activate the function of the permission "ezafk.bypass"
  # By default OP players have this permission.
  bypass
:
    enabled
: true
  broadcast
:
    # Enable broadcast message to all online players when player is AFK
    enabled
: true
    # Placeholders:
    # %player% - Display name of player
    # %afk_count% - Current number of players marked as AFK
    # %active_count% - Current number of online players not marked as AFK
  title
:
    enabled
: true
  hide-screen
:
    # Apply a blindness effect to AFK players to hide their screen until they return.
    enabled
: false
  animation
:
    enabled
: true
  storage
:
    # Interval in seconds between asynchronous flushes of AFK time data to disk.
    # Lower values write more frequently while higher values reduce disk activity.
    flush-interval-seconds
: 30
  # Prevent players from bypassing AFK
  anti
:
    # Toggle the infinite water flow protection (config path: afk.anti.infinite-waterflow)
    infinite-waterflow
: false
    infinite-vehicle
: false
    # When true, bypass attempts silently mark the player as AFK instead of alerting them.
    flag-only
: false
  # TAB integration
  # Requires: https://www.spigotmc.org/resources/tab-1-5-1-21.57806/
  tab-prefix
:
    enabled
: false
    # Strategy for applying AFK names when the TAB plugin is installed.
    # Options:
    #   auto   - Use TAB when available, otherwise fall back to EzAfk's custom list handling.
    #   tab    - Require TAB for name changes. Falls back to the custom implementation if the plugin is missing.
    #   custom - Always use EzAfk's built-in implementation, even if TAB is installed.
    mode
: auto
    prefix
: "&7[AFK] "
    # Text to append to the end of the player's name while AFK.
    suffix
: ""
    # Full format for the displayed name. Available placeholders: %prefix%, %player%, %suffix%
    format
: "%prefix%%player%%suffix%"
  # Change the in-game display name (e.g., chat) while the player is AFK.
  display-name
:
    enabled
: false
    prefix
: "&7[AFK] "
    suffix
: ""
    format
: "%prefix%%player%%suffix%"
unafk
:
  broadcast
:
    # Broadcast a message when a player is not longer AFK
    enabled
: true
    # Placeholders:
    # %player% - Display name of player
    # %afk_count% - Current number of players marked as AFK
    # %active_count% - Current number of online players not marked as AFK
  title
:
    enabled
: true
  animation
:
    enabled
: true
economy
:
  # Enable economy-based costs for going AFK. Requires Vault with an economy provider installed.
  enabled
: false
  # Players with this permission bypass all AFK costs.
  bypass-permission
: "ezafk.economy.bypass"
  # Players inside a WorldGuard region with the afk-bypass flag will also skip costs.
  cost
:
    enter
:
      # Charge a player when they are marked as AFK (either manually or automatically).
      enabled
: true
      amount
: 25.0
      # When true, the AFK toggle is cancelled if the player cannot afford the cost.
      # When false, the charge is skipped and the player still becomes AFK.
      require-funds
: true
      # Seconds to wait before attempting to automatically toggle a player AFK again after a failed charge.
      retry-delay
: 60
    recurring
:
      # Continuously charge AFK players while they remain AFK.
      enabled
: false
      amount
: 5.0
      # Time between recurring charges in seconds.
      interval
: 300
      # When true, the player must have enough funds for the charge to succeed.
      # Failing to pay while this is true always removes their AFK state.
      require-funds
: true
      # Controls optional charges (when require-funds is false): true removes the AFK state on failure, false retries later.
      kick-on-fail
: false
kick
:
  # Enable the kick function after being AFK for x amount of time
  enabled
: false
  # Enable the kick function when the lobby is full
  enabledWhenFull
: false
  # Timeout in seconds
  timeout
: 600
integration
:
  # https://dev.bukkit.org/projects/worldguard
  # Automatically skipped when WorldGuard is not installed.
  worldguard
: true
  # https://www.spigotmc.org/resources/tab-1-5-1-21.57806/
  tab
: true
  # Check for EzAfk updates while startup server
  # This is being done async and will not affect the startup time of your server
  spigot
:
    check-for-update
: true
 

Code (YAML):

inventory-size
: 9
actions
:
  kick
:
    slot
: 0
    material
: IRON_BOOTS
    display-name
: "&cKick Player"
    type
: KICK
    target-message
: "&cYou were kicked for being AFK too long."
    feedback-message
: "&aSuccessfully kicked %player%"
  alert
:
    slot
: 1
    material
: PAPER
    display-name
: "&eSend Alert"
    type
: MESSAGE
    target-message
: "&eYou are marked as AFK. Keep active to prevent getting kicked!"
    feedback-message
: "&aSent alert to %player%"
  teleport
:
    slot
: 2
    material
: COMPASS
    display-name
: "&aTeleport to Player"
    type
: TELEPORT
    feedback-message
: "&aTeleported to %player%"
 

Code (YAML):

enabled
: false
host
: "localhost"
port
: 3306
database
: "ezafk"
username
: "root"
password
: ""
 

Multiple language support
Every alert, warning, or confirmation shown to players can be tailored in the language-specific files under `messages/`. EzAfk bundles fully translated packs for English, Spanish, Dutch, Russian, and Simplified Chinese, and automatically falls back to English if a language is missing.

Set `messages.language` in `config.yml` to match one of the bundled codes (`en`, `es`, `nl`, `ru`, or `zh`) and the plugin will copy the corresponding file on first launch. Want to localise EzAfk for your own community? Copy one of the provided files, translate the values, drop it back into the `messages/` folder, and point `messages.language` at your new filename (for example, `messages_fr`).

Messages include everything from AFK toggle confirmations and bypass notifications to GUI errors, blindness prompts, and tab-prefix text—making it easy to deliver a consistent experience in your players' preferred language.

Support
For support, suggestions, or bug reports, join our Discord server or visit the support thread on SpigotMC.org.

Keep your server active and free from idle players with EzAfk! Download now and take control of AFK players on your server.

[​IMG]
Resource Information
Author:
----------
Total Downloads: 996
First Release: Jun 18, 2024
Last Update: Oct 27, 2025
Category: ---------------
All-Time Rating:
4 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings