
EzAfk
Modern, lightweight AFK management plugin that keeps your staff informed while gently nudging idle players back into the action
- Загрузки
- 1K
- Подписчики
- 4
- Обновлён
- 6 июля 2026 г.
- Лицензия
- MIT
Опубликован 22 декабря 2025 г.
EzAfk
Keep AFK management simple.
EzAfk is a modern, lightweight AFK management plugin for Paper and Spigot servers. It automates AFK detection, rewards or charges players based on idle state, gives staff a real-time overview panel, and integrates with the tools you already run, all without sacrificing performance.
v3.1.1 · Minecraft 1.21+ · Java 21+ · Paper / Spigot / Bukkit / Purpur
Feature Highlights
| Feature | Summary |
|---|---|
| AFK Detection | Idle timeout with configurable broadcasts, titles, animations, display-name changes, and a blindness-blur overlay |
| Anti-Bypass | Block infinite water flow, vehicle riding, and bubble column tricks from resetting idle timers |
| AFK Kick | Kick idle players after a configurable period, optionally only when the server is full |
| Kick Warnings | Multi-stage countdown messages (chat and/or title) at custom intervals before the kick fires |
| Staff GUI | /afk gui panel showing all AFK players with one-click kick, message, teleport, and custom command buttons |
| AFK Zones | Cuboid regions where players earn rewards (economy, commands, or items) for being AFK |
| Economy Costs | Charge a one-time entry fee and/or a recurring fee while AFK via any Vault economy plugin |
| AFK Leaderboard | Per-player cumulative AFK time, /afk top leaderboard, persisted across restarts |
| PlaceholderAPI | 16 placeholders for status, session time, totals, counts, prefix/suffix, and playtime |
| Multi-language | EN, ES, NL, RU, ZH, DE, fully overridable per server |
| Storage backends | YAML (default), SQLite, or MySQL |
| Simple Voice Chat | Play a custom MP3 sound when a player goes AFK |
Installation
- Download
EzAfk-x.x.x.jarfrom the files tab above. - Drop it into your server's
plugins/folder. - Restart the server. EzAfk generates all config files automatically.
- Edit
plugins/EzAfk/config.ymlto configure your desired features. - Run
/afk reloadin-game to apply changes without a restart.
Commands
| Command | Description | Permission |
|---|---|---|
/afk |
Toggle your own AFK status | (none) |
/afk reload |
Reload all configuration files | ezafk.reload |
/afk gui |
Open the AFK staff overview panel | ezafk.gui |
/afk toggle <player> |
Force a player's AFK state | ezafk.toggle |
/afk bypass whitelist <add|remove|list> [player] |
Manage the persistent bypass whitelist | ezafk.bypass.manage |
/afk bypass blacklist <add|remove|list> [player] |
Manage the persistent bypass blacklist | ezafk.bypass.manage |
/afk bypass <player> |
Toggle per-session bypass for a player | ezafk.bypass.manage |
/afk info <player> |
View a player's AFK session details | ezafk.info |
/afk time [player] |
View total AFK time | ezafk.time |
/afk time reset <player> |
Reset a player's AFK time | ezafk.time.reset |
/afk top |
Show the AFK time leaderboard | ezafk.top |
/afk zone pos1 / pos2 |
Select zone corners | ezafk.zone.manage |
/afk zone add <name> |
Create an AFK zone | ezafk.zone.manage |
/afk zone remove <name> |
Remove an AFK zone | ezafk.zone.manage |
/afk zone list |
List all zones | ezafk.zone.list |
Aliases: /ezafk, /ea, /afktime, /afktop
Permissions
| Node | Default | Description |
|---|---|---|
ezafk.reload |
OP | Reload configuration |
ezafk.bypass |
OP | Never be marked AFK automatically |
ezafk.bypass.manage |
OP | Toggle bypass for other players |
ezafk.toggle |
OP | Toggle other players' AFK state |
ezafk.info |
OP | View AFK details for other players |
ezafk.kick.bypass |
OP | Never be kicked by EzAfk |
ezafk.gui |
OP | Open the staff GUI |
ezafk.gui.view-active |
OP | View non-AFK players in the GUI |
ezafk.gui.actions |
OP | Use action buttons in the GUI |
ezafk.time |
all | View own AFK time |
ezafk.time.others |
OP | View another player's AFK time |
ezafk.time.reset |
OP | Reset a player's AFK time |
ezafk.top |
OP | View the leaderboard |
ezafk.economy.bypass |
OP | Skip economy AFK charges |
ezafk.zone.list |
OP | List AFK zones |
ezafk.zone.manage |
OP | Create and remove zones |
PlaceholderAPI Placeholders
Requires PlaceholderAPI. The expansion registers automatically. No extra setup needed.
| Placeholder | Returns |
|---|---|
%ezafk_status% |
AFK or ACTIVE |
%ezafk_status_colored% |
&cAFK or &aACTIVE |
%ezafk_since% |
Seconds since AFK session started (empty if not AFK) |
%ezafk_last_active% |
Seconds since last player activity |
%ezafk_total_seconds% |
Total lifetime AFK seconds |
%ezafk_total% |
Total AFK time HH:MM:SS |
%ezafk_total_formatted% |
Verbose, e.g. 2 hours 15 minutes |
%ezafk_prefix% |
Configured AFK display-name prefix |
%ezafk_suffix% |
Configured AFK display-name suffix |
%ezafk_playtime_active_seconds% |
Active (non-AFK) playtime in seconds |
%ezafk_playtime_active% |
Active playtime HH:MM:SS |
%ezafk_playtime_active_formatted% |
Active playtime verbose |
%ezafk_afk_count% / %ezafk_afk_players% |
Number of AFK players |
%ezafk_active_count% / %ezafk_active_players% |
Number of non-AFK players |
Configuration Overview
EzAfk's settings are spread across focused files for clarity:
config.yml AFK detection, kick, anti-bypass, economy, integrations
gui.yml Staff GUI layout and action buttons
zones.yml AFK zone definitions with coordinates and rewards
mysql.yml Database connection (only when storage.type: mysql)
messages/ Language files: en.yml, es.yml, nl.yml, ru.yml, zh.yml, de.yml
Core settings (config.yml)
afk:
timeout: 300 # seconds of inactivity → AFK
broadcast:
enabled: true # announce AFK in chat
title:
enabled: true # show title to the AFK player
anti:
infinite-waterflow: false
infinite-vehicle: false
bubble-column: false
kick:
enabled: false # kick AFK players
enabledWhenFull: false # only kick when server is at capacity
timeout: 600 # seconds AFK before kick
warnings:
enabled: true
intervals: [60, 30, 10]
mode: both # chat | title | both
economy:
enabled: false
cost:
enter:
enabled: true
amount: 25.0
storage:
type: yaml # yaml | sqlite | mysql
flush-interval-seconds: 30
Integrations
| Integration | Notes |
|---|---|
| Vault / Economy | Required for economy costs and zone economy rewards |
| PlaceholderAPI | Auto-detected; provides 16 AFK placeholders |
| WorldGuard | Adds afk-bypass region flag; use /rg flag <region> afk-bypass allow |
| TAB | Delegate tab-list AFK prefix formatting to the TAB plugin |
| Simple Voice Chat | Play MP3 sounds on AFK state changes |
| bStats | Anonymous usage statistics (opt-out in config.yml) |
| Spigot update checker | Console reminder when a new version is available |
Links
- Documentation: full configuration guide, feature pages, and API reference
- Discord: support, bug reports, and feature requests
- GitHub: source code and issue tracker
- Developer API:
PlayerAfkStatusChangeEventandAfkReasonenum
Ченджлог
3.1.1Релиз26.1.1, 26.1.2, 26.2 · 6 июля 2026 г.
Fixed
- AFK broadcast and return messages now resolve PlaceholderAPI placeholders
with the AFK player's context, so integrations like LuckPerms prefixes work
correctly in
messages.yml.
3.1.0Релиз26.1.1, 26.1.2, 26.2 · 28 июня 2026 г.
Added
Bypass whitelist and blacklist - Two persistent lists (stored in
bypass-lists.yml) let admins fine-tune who bypasses AFK detection:- Whitelist — players that always bypass, regardless of the
afk.bypass.enabledconfig flag or whether they hold theezafk.bypasspermission. - Blacklist - players that are never allowed to bypass, even when they
hold
ezafk.bypass(useful for ops/admins who want to be subject to AFK detection and zone rewards for testing or fairness). - Blacklist takes precedence over whitelist.
- Managed in-game with
/afk bypass whitelist <add|remove|list> [player]and/afk bypass blacklist <add|remove|list> [player](requiresezafk.bypass.manage). - Tab completion is provided for all three argument depths.
- Lists are reloaded on
/afk reload.
- Whitelist — players that always bypass, regardless of the
AFK zone entry / exit messages - Players now receive a chat message when they enter or leave an AFK zone (
afkzone.enter/afkzone.exitmessage keys inmessages.yml; both support the%zone%placeholder).AFK zone reward countdowns via EzCountdown - When EzCountdown is installed, players in AFK zones see a live countdown to their next reward (action bar, title, boss bar, scoreboard, or dialog — configurable per zone). The countdown resets automatically after each payout.
Global zone reward defaults - A top-level
defaults.rewardblock inzones.ymllets you configure economy reward amount, interval, and notification settings once for all zones. Individual zones can still override any value. When Vault is present anddefaults.reward.enabled: true, all zones automatically grant small economy rewards without per-zone configuration.Session reward stats per player per zone - EzAfk now tracks how many rewards and how much currency each player has received in each zone for the current server session (resets on restart). Available via PlaceholderAPI:
%ezafk_zone_rewards_grants%- total grants across all zones%ezafk_zone_rewards_amount%- total currency earned across all zones%ezafk_zone_reward_<zone>_grants%- grants in a specific zone%ezafk_zone_reward_<zone>_amount%- currency earned in a specific zone
New notification config fields on zone rewards:
reward.notification.enabled,reward.notification.displays,reward.notification.message,reward.notification.duration.
Fixed
Duplicate
reward:YAML key underafkzone:inmessages.yml— the second block (failed:) was silently overwriting the first (granted.*), making all reward granted messages fall back to their hardcoded defaults.EzCountdown plugin. Detected automatically when present (
integration.ezcountdown: auto).Configurable kick-warning display types —
kick.warnings.displaysaccepts a list of display types:CHAT,TITLE,ACTION_BAR,BOSS_BAR. Multiple types can be active at once (e.g.[ACTION_BAR, BOSS_BAR]). When the list is empty the legacykick.warnings.modevalue is used for backward compatibility.New message keys
kick.warning.action_barandkick.warning.boss_barinmessages.ymlfor the new display types.
Changed
CompatibilityUtilnow handlessendActionBar,showBossBarWarning, andremoveWarningBossBarvia reflection - safe on servers without the BossBar API (pre-1.9) or without the action-bar method available.- Java 21+ is now required.
maven.compiler.releaseraised from11to21; the plugin JAR targets Java 21 bytecode (class file version 65). Servers running Minecraft 1.21+ already require Java 21, so this is a no-op for all supported server versions. - Minimum supported Minecraft version is now 1.21 (was 1.19). Older versions are no longer tested or guaranteed to work.
Removed
- Paper 1.20.4 / Java 17 legacy CI smoke test (not needed after dropping Java 17 support).
3.0.0Релиз26.1, 26.1.1, 26.1.2 · 26 апреля 2026 г.
- Updated plugin to Java 25
- Updated to Paper 26.1
- Integrated Jaloquent for the storage
- Added optional Jaloquent logging
2.4.1Релиз1.21.9, 1.21.10, 1.21.11 · 25 апреля 2026 г.
- fix: solved issue in WorldGuard integration passing null parameter in https://github.com/ez-plugins/EzAfk/pull/33
- Docs/GitHub pages documentation in https://github.com/ez-plugins/EzAfk/pull/34
- docs: fix table format in https://github.com/ez-plugins/EzAfk/pull/35
- docs: fix format of other tables in https://github.com/ez-plugins/EzAfk/pull/36
- fix: only register economy when enabled in https://github.com/ez-plugins/EzAfk/pull/38
2.4.0Релиз1.21.9, 1.21.10, 1.21.11 · 26 марта 2026 г.
- Added Japanese translations (
ja) - Added German translations (
de) - Fixed issue, making it possible to create custom language files and use them
2.3.3Релиз1.21.9, 1.21.10, 1.21.11 · 18 февраля 2026 г.
- Fixed issue in TAB integration
2.3.2Релиз1.21.9, 1.21.10, 1.21.11 · 9 февраля 2026 г.
Feature changes
- Fixed bug in WorldGuard being required, error on server startup when WorldGuard not available
Code changes
- Fixed MockBukkit testing
- Added automated test tools
- Added feature tests for all commands
2.3.1Релиз1.21.9, 1.21.10, 1.21.11 · 8 февраля 2026 г.
- Added new sound for when player comes back from being AFK.
unafk:
sound:
enabled: true
# Path to the MP3 file to play when returning from AFK (relative to plugin folder)
file: "mp3/ezafk-sound.mp3"
Комментарии
Загружаем…