JustAFK
1.2.0A lightweight, configurable, server-side AFK plugin with activity-aware detection and a public API for Paper, Purpur, Folia, Spigot, and Bukkit.
1.2.0latestAug 25, 2026 JustAFK 1.2.0
JustAFK 1.2.0 expands activity detection beyond movement and introduces an official public API and Bukkit event for integrations with other plugins. This release prevents stationary players who are still performing genuine actions—such as fishing, interacting with blocks, or writing in chat—from being incorrectly marked as AFK.JustAFK 1.2.0 requires Minecraft 1.21.3 or newer and Java 21 or newer.
>Servers below Minecraft 1.21.3 should continue using [JustAFK 1.0.1](https://modrinth.com/plugin/justafk/version/1.0.1).
Expanded activity detection
The following actions now restart the inactivity timer and return an AFK player to active: - Breaking blocks - Placing blocks - Player-driven fishing actions - Interacting with blocks - Interacting with or using items - Interacting with entities - Interacting with a precise point on an entity - Submitting chat messages Existing movement-input detection remains unchanged: - Forward - Backward - Left - Right - Jump - Sneak - Sprint All activity handling is now centralized in the AFK manager, ensuring that each listener uses the same timer and state-transition logic.Chat messages now remove AFK
Submitting a chat message removes AFK and restarts the inactivity timer. This also applies when another plugin later cancels the chat event. Chat activity is safely transferred from the asynchronous event to the appropriate Bukkit or Folia player scheduler.Cancelled player actions count as activity
A recognized player action counts as activity even when another plugin cancels its result. This includes actions such as: - Attempting to break or place a block in a protected area - Interacting with a protected block or entity - Attempting to use a restricted item - Submitting a message cancelled by a chat or moderation plugin The action result may be prevented, but the player has still demonstrated that they are present and active.Improved fishing behavior
Player-driven fishing actions now count as activity, preventing actively fishing players from being marked as AFK simply because they remain stationary. A server-generated fishing bite alone is deliberately ignored because it can happen without new player input.Passive movement remains ignored
JustAFK continues to ignore position changes without movement input. The following do not restart the inactivity timer or remove AFK by themselves: - Entity pushes and collisions - Knockback - Arrows - Explosions - Flowing water and bubble columns - Pistons - Gravity or falling - Passive vehicle movement - Server or plugin teleports - Death and respawn - Looking around Physical block interactions such as pressure-plate activation are also not independently counted because they can be caused by passive or externally forced movement.Public AFK API
JustAFK now provides an official read-only API:
Other plugins can retrieve it through Bukkit'spt.captainratax.justafk.api.JustAfkApiServicesManager:
Available methods:import org.bukkit.Bukkit; import pt.captainratax.justafk.api.JustAfkApi; JustAfkApi api = Bukkit.getServicesManager().load(JustAfkApi.class); boolean playerIsAfk = api != null && api.isAfk(player);
The API uses the same state already maintained internally by JustAFK. An unknown or offline UUID that is not currently tracked returnsboolean isAfk(Player player); boolean isAfk(UUID playerId);false, and querying it does not create new tracking state. The service is registered when JustAFK is enabled and unregistered when the plugin itself is disabled or unloaded. Consumers should handle the service being unavailable.Public AFK state-change event
Other plugins can now listen for:
The event provides: -pt.captainratax.justafk.api.event.PlayerAfkStateChangeEventgetPlayer()— the affected player -isAfk()— the player's new AFK state -isAutomatic()— whether an inactivity timeout caused the transition The event is published only when the state actually changes: - Active to AFK - AFK to active Repeated commands, activity calls, or internal updates that leave the player in the same state do not publish duplicate events.isAutomatic()istrueonly when the inactivity timeout moves a player into AFK. Manual transitions and activity-driven returns to active reportfalse. Disabling JustAFK through its runtime configuration publishes one corresponding active event for each tracked player whose AFK state is cleared. Player disconnection and plugin shutdown remove tracking without publishing an artificial active transition.Integration notice
This release provides the official integration surface needed by other plugins, but it does not automatically make every AFK-aware plugin recognize JustAFK. Consumer plugins must explicitly retrieve and useJustAfkApior listen forPlayerAfkStateChangeEvent. No third-party runtime dependency or integration has been added.Configuration compatibility
No configuration keys were added, removed, or renamed in JustAFK 1.2.0. Existing configuration files remain compatible and do not need to be deleted or regenerated. The default configuration comments now describe all recognized player activity instead of referring only to movement input.Compatibility
JustAFK 1.2.0 supports: | Platform | Versions | | --- | --- | | Bukkit / CraftBukkit | 1.21.3–26.2 | | Spigot | 1.21.3–26.2 | | Paper | 1.21.3–26.2 | | Purpur | 1.21.3–26.2 | | Folia | 1.21.3–26.2, where a server build is available | The plugin is built against Paper 26.2 build 84 stable and compatibility-compiled against Spigot 1.21.3. Both compilations must produce identical class files before the build passes. The JAR uses Java 21 bytecode. The server may require a newer Java version for its Minecraft release; Paper 26.2 requires Java 25. No new runtime dependencies were added.Updating from 1.1.0
1. Stop the server. 2. Replace the existing JustAFK JAR withJustAFK-1.2.0.jar. 3. Start the server. 4. Keep the existing configuration or review the updated default comments. No configuration migration is required.Technical changes
- Added centralizedAfkManager.recordActivity(Player)handling - Added activity listeners for block breaking and placement - Added player-driven fishing activity detection - Added block and item interaction activity detection - Added generic and precise entity interaction activity detection - Added submitted chat messages as activity - Continued monitoring relevant cancelled events - Excluded server-generated fishing bites from activity - Excluded physical interactions such as pressure plates from independent activity - Added the publicJustAfkApiinterface - AddedPlayerandUUIDAFK state lookups - Registered the API through Bukkit'sServicesManager- Added the publicPlayerAfkStateChangeEvent- Added automatic/manual transition metadata - Added duplicate event suppression - Preserved Folia-aware state changes and scheduling - Updated the project version to1.2.0- Updated the README and default configuration comments - Added official Modrinth and CurseForge links to the repository README - Added no runtime dependenciesValidation
- 43 automated tests passed - 0 failures, errors, or skipped tests - New activity listener behavior tested - AFK-to-active transitions caused by activity tested - Asynchronous and cancelled chat behavior tested - Cancelled interaction events tested - Player-driven fishing and server-generated bite behavior tested - Public API behavior tested - Unknown UUID lookups verified not to create state - State-change event metadata tested - Duplicate event suppression tested - Paper 26.2 primary compilation passed - Spigot 1.21.3 compatibility compilation passed - Paper and Spigot bytecode parity verified - Java 21 bytecode verified - Runtime dependency validation passed1.1.0Jul 30, 2026 JustAFK 1.1.0
JustAFK 1.1.0 introduces two major improvements: complete runtime control over the plugin and a new input-aware AFK detection system. Player activity is no longer inferred from changes in position. JustAFK now detects actual movement input reported by the player, preventing external forces from incorrectly removing AFK.JustAFK 1.1.0 requires Minecraft 1.21.3 or newer and Java 21 or newer.
>Servers below Minecraft 1.21.3 should continue using JustAFK 1.0.1.
>Version 1.0.1 remains compatible with older Minecraft versions but uses the previous position-based activity detection. Entity pushes, knockback, arrows, and other external movement may therefore reset the inactivity timer or remove AFK.
Global plugin control
A newenabledconfiguration option can completely enable or disable JustAFK: -enabled: true— the plugin operates normally -enabled: false— all AFK functionality is disabled The option can also be changed at runtime: -/justafk set enabled on-/justafk set enabled offWhen the plugin is disabled: - Players are no longer tracked for AFK activity - Automatic AFK detection stops -/afkno longer changes AFK states - Administrative AFK changes are disabled - Existing plugin-managed AFK states are cleared - Player-list prefixes are restored - AFK announcements and duration updates stop Configuration-related commands remain available: -/justafk help-/justafk status-/justafk reload-/justafk set ...This allows administrators to inspect, configure, and enable the plugin again without restarting the server.Independent automatic AFK control
Automatic AFK detection can now be controlled separately through: -automatic-afk-enabled: true-automatic-afk-enabled: falseThe option can also be changed at runtime: -/justafk set automatic-afk on-/justafk set automatic-afk offWhen automatic AFK detection is disabled: - Inactivity does not place players into AFK automatically -/afkremains available - Administrators can still control another player's AFK state - Movement input still removes a manually applied AFK state - Announcements and player-list prefixes continue working for manual AFK states This makes it possible to use JustAFK exclusively as a manual AFK plugin.Input-aware activity detection
JustAFK now usesPlayerInputEventand current-input polling instead of detecting activity through position changes. The following inputs count as player activity: - Forward - Backward - Left - Right - Jump - Sneak - Sprint When movement input is detected: - The inactivity timer is restarted - An AFK player immediately becomes active - The AFK player-list prefix is removed - The configured active announcement is sent Immediate input events detect short key presses, while periodic polling keeps the player active while a movement key remains held.External movement no longer removes AFK
Position changes without movement input no longer restart the inactivity timer. Players remain AFK when moved by: - Entity collisions - Pets or mobs pushing the player - Slimes - Zombie attacks - Skeleton arrows - Knockback - Explosions - Flowing water - Bubble columns - Pistons - Shulkers - Gravity or falling - Passive vehicle movement - Server or plugin teleports - Death - Respawn The AFK state and displayed duration are preserved during these events unless the player sends movement input. Looking around with the mouse also remains ignored.Configuration compatibility
Configuration files created by JustAFK 1.0.0 and 1.0.1 remain compatible. If the new options are missing, both default totrue: -enabled: true-automatic-afk-enabled: trueExisting configuration files do not need to be deleted or regenerated.Compatibility changes
JustAFK 1.1.0 supports: | Platform | Versions | | --- | --- | | Bukkit / CraftBukkit | 1.21.3–26.2 | | Spigot | 1.21.3–26.2 | | Paper | 1.21.3–26.2 | | Purpur | 1.21.3–26.2 | | Folia | 1.21.3–26.2, where a server build is available | The plugin is built against Paper 26.2 and compatibility-compiled against Spigot 1.21.3. Both compilations must produce identical class files before the build passes.Support for older Minecraft versions
Servers below Minecraft 1.21.3 can continue using [JustAFK 1.0.1](https://modrinth.com/plugin/justafk/version/1.0.1). Version 1.0.1 supports: | Platform | Versions | | --- | --- | | Paper | 1.8.8–26.2 | | Purpur | 1.14.1–26.2 | | Folia | 1.19.4–26.2 | | Spigot / CraftBukkit | 1.8.8–26.2, best-effort | JustAFK 1.0.1 uses Java 8-compatible bytecode but does not include: - Input-aware movement detection - Protection against AFK removal caused by external movement - The globalenabledoption - The independentautomatic-afk-enabledoptionJava requirements
JustAFK 1.1.0 uses Java 21 bytecode and requires Java 21 or newer. The server may require a newer Java version depending on its Minecraft version. For example, Paper 26.2 requires Java 25.Technical changes
- ReplacedPlayerMoveEventactivity tracking withPlayerInputEvent- Added current-input polling throughPlayer#getCurrentInput()- Removed position comparisons from the AFK monitor - Removed the obsolete position snapshot implementation - Added global and automatic-AFK configuration flags - Added runtime commands and tab completion for both flags - Setapi-versionto1.21.3- Changed the bytecode target from Java 8 to Java 21 - Added compatibility compilation against Spigot 1.21.3 - Maintained Paper 26.2 as the primary API target - Updated the README, default configuration, build checks, and tests - No runtime dependencies addedValidation
- 25 automated tests passed - All seven movement inputs tested individually - Short input taps tested - Held movement input polling tested - External position changes verified not to affect AFK timing - Global plugin disable behaviour tested - Automatic AFK disable behaviour tested - Spigot 1.21.3 compatibility compilation passed - Paper 26.2 primary compilation passed - Paper and Spigot bytecode parity verified - Java 21 bytecode verified - Manually tested successfully on a 26.2 server1.0.1Jul 28, 2026 JustAFK 1.0.1
This release significantly expands backwards compatibility while keeping Paper 26.2 as the primary platform.Compatibility
- Paper: 1.8.8–26.2 - Purpur: 1.14.1–26.2 - Folia: 1.19.4–26.2 - Spigot and Bukkit: 1.8.8–26.2, with best-effort runtime support - Sponge and proxy platforms: Not supportedChanges
- Targeted Java 8 bytecode to support older Minecraft server versions. - Kept Paper 26.2 as the primary compilation target. - Added compatibility compilation against the Spigot 1.8.8 API. - Added bytecode comparison between the Paper and legacy API builds. - Improved compatibility with older Bukkit configuration APIs. - Preserved Folia-aware scheduler support without introducing a hard Folia dependency. - Added compatibility and regression tests. - Confirmed that the plugin has no external runtime dependencies. - Preserved the existing AFK behaviour, commands, permissions and configuration format.Validation
The release build passed all 11 automated tests and compatibility checks. Runtime smoke tests were completed on: - Paper 1.8.8 - Paper 26.2 - Purpur 26.2 - Folia 26.1.2, the latest public Folia build available during testing A public Folia 26.2 server build was not available during testing. The plugin uses the appropriate Folia scheduler API and is prepared for 26.2, but that specific server version has not yet been runtime-tested.Updating
This is a drop-in update from JustAFK 1.0.0. Existing configuration files remain compatible. The plugin JAR uses Java 8 bytecode, but you must still use the Java version required by your chosen server. Paper 26.2 requires Java 25.1.0.0Jul 27, 2026 JustAFK 1.0.0
The first public release of JustAFK, a lightweight and configurable server-side AFK plugin for Minecraft 26.2.Added
- Automatic AFK detection after a configurable inactivity period - Default inactivity timeout of 300 seconds - Position-only activity detection - Camera rotation does not reset the inactivity timer - Immediate AFK removal when a player changes position - Manual AFK toggling with/afk- Administrative control over other online players - Expliciton,off, andtoggleactions - Configurable announcement audiences:all,ops, andnone- Optional AFK duration prefix in the TAB player list - Whole-minute duration labels below one hour - Whole-hour duration labels from one hour onwards - Preservation of existing player-list names where possible - Immediate configuration saving through administrative commands - Runtime configuration reloads - Command tab completion - Legacy&colour-code support - Folia-aware global and entity scheduling - Bukkit permission support for permission managers such as LuckPermsCommands
-/afk-/afk <player> [on|off|toggle]-/justafk help-/justafk status-/justafk reload-/justafk set timeout <seconds>-/justafk set announcements <all|ops|none>-/justafk set playerlist <on|off>The/jafkalias is also available.Permissions
-justafk.use— toggle your own AFK state -justafk.others— manage another online player's AFK state -justafk.config— access administrative configuration commands -justafk.admin— grant every JustAFK permissionCompatibility
- Paper 26.2 — primary platform - Purpur 26.2 — supported as a Paper fork - Folia 26.2 — Folia-aware scheduler integration included - Spigot and Bukkit — best-effort compatibility, not yet declared as supported loaders - Sponge and proxy platforms — not supportedRequirements
- Minecraft Java Edition 26.2 - Java 25 - Server-side installation only - No required dependencies - No client installation requiredBuild and tests
- Built with Gradle 9.1 - Compiled against Paper API26.2.build.84-stable- 7 tests executed successfully - 0 failures - 0 errors - 0 skippedNotes
- JustAFK marks players as AFK but does not kick, freeze, teleport, or punish them. - AFK states are session-based and reset when a player disconnects. - Paper is the primary and most extensively validated platform. - Full server restarts are recommended instead of hot plugin reloaders. - Changing onlyplayer-list.formatwhile a player is already AFK may not become visible until the displayed duration changes.
Similar projects
Config →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta