EzAfk
Modern, lightweight AFK management plugin that keeps your staff informed while gently nudging idle players back into the action
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.0.0 · Minecraft 26.1+ · Java 25 · Paper / Spigot / Bukkit / Purpur
---
Feature Highlights
| Feature | Summary | |---------|---------| | Simple Voice Chat | Idle timeout with configurable broadcasts, titles, animations, display-name changes, and a blindness-blur overlay | | Simple Voice Chat | Block infinite water flow, vehicle riding, and bubble column tricks from resetting idle timers | | Simple Voice Chat | Kick idle players after a configurable period, optionally only when the server is full | | Simple Voice Chat | Multi-stage countdown messages (chat and/or title) at custom intervals before the kick fires | | Simple Voice Chat | `/afk gui` panel showing all AFK players with one-click kick, message, teleport, and custom command buttons | | Simple Voice Chat | Cuboid regions where players earn rewards (economy, commands, or items) for being AFK | | Simple Voice Chat | Charge a one-time entry fee and/or a recurring fee while AFK via any Vault economy plugin | | Simple Voice Chat | Per-player cumulative AFK time, `/afk top` leaderboard, persisted across restarts | | Simple Voice Chat | 16 placeholders for status, session time, totals, counts, prefix/suffix, and playtime | | Simple Voice Chat | EN, ES, NL, RU, ZH, DE, fully overridable per server | | Simple Voice Chat | YAML (default), SQLite, or MySQL | | Simple Voice Chat | Play a custom MP3 sound when a player goes AFK |
---
Installation
1. Download `EzAfk-x.x.x.jar` from the files tab above. 2. Drop it into your server's `plugins/` folder. 3. Restart the server. EzAfk generates all config files automatically. 4. Edit `plugins/EzAfk/config.yml` to configure your desired features. 5. Run `/afk reload` in-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 <player>` | Toggle AFK 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:
```text 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`)
```yaml 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 | |-------------|-------| | Spigot update checker | Required for economy costs and zone economy rewards | | Spigot update checker | Auto-detected; provides 16 AFK placeholders | | Spigot update checker | Adds `afk-bypass` region flag; use `/rg flag <region> afk-bypass allow` | | Spigot update checker | Delegate tab-list AFK prefix formatting to the TAB plugin | | Spigot update checker | Play MP3 sounds on AFK state changes | | Spigot update checker | 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: `PlayerAfkStatusChangeEvent` and `AfkReason` enum
