Sueta

JustAFK

1.2.0

A lightweight, configurable, server-side AFK plugin with activity-aware detection and a public API for Paper, Purpur, Folia, Spigot, and Bukkit.

·Config
  1. 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:
    pt.captainratax.justafk.api.JustAfkApi
    Other plugins can retrieve it through Bukkit's ServicesManager:
    import org.bukkit.Bukkit;
    import pt.captainratax.justafk.api.JustAfkApi;
    
    JustAfkApi api = Bukkit.getServicesManager().load(JustAfkApi.class);
    boolean playerIsAfk = api != null && api.isAfk(player);
    Available methods:
    boolean isAfk(Player player);
    boolean isAfk(UUID playerId);
    The API uses the same state already maintained internally by JustAFK. An unknown or offline UUID that is not currently tracked returns 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:
    pt.captainratax.justafk.api.event.PlayerAfkStateChangeEvent
    The event provides: - getPlayer() — 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() is true only when the inactivity timeout moves a player into AFK. Manual transitions and activity-driven returns to active report false. 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 use JustAfkApi or listen for PlayerAfkStateChangeEvent. 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 with JustAFK-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 centralized AfkManager.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 public JustAfkApi interface - Added Player and UUID AFK state lookups - Registered the API through Bukkit's ServicesManager - Added the public PlayerAfkStateChangeEvent - Added automatic/manual transition metadata - Added duplicate event suppression - Preserved Folia-aware state changes and scheduling - Updated the project version to 1.2.0 - Updated the README and default configuration comments - Added official Modrinth and CurseForge links to the repository README - Added no runtime dependencies
    Validation
    - 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 passed
    64 downloads
  2. 1.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 new enabled configuration 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 off When the plugin is disabled: - Players are no longer tracked for AFK activity - Automatic AFK detection stops - /afk no 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: false The option can also be changed at runtime: - /justafk set automatic-afk on - /justafk set automatic-afk off When automatic AFK detection is disabled: - Inactivity does not place players into AFK automatically - /afk remains 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 uses PlayerInputEvent and 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 to true: - enabled: true - automatic-afk-enabled: true Existing 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 global enabled option - The independent automatic-afk-enabled option
    Java 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
    - Replaced PlayerMoveEvent activity tracking with PlayerInputEvent - Added current-input polling through Player#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 - Set api-version to 1.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 added
    Validation
    - 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 server
    11 downloads
  3. 1.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 supported
    Changes
    - 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.
    20 downloads
  4. 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 - Explicit on, off, and toggle actions - Configurable announcement audiences: all, ops, and none - 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 LuckPerms

    Commands

    - /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 /jafk alias 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 permission

    Compatibility

    - 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 supported

    Requirements

    - Minecraft Java Edition 26.2 - Java 25 - Server-side installation only - No required dependencies - No client installation required

    Build and tests

    - Built with Gradle 9.1 - Compiled against Paper API 26.2.build.84-stable - 7 tests executed successfully - 0 failures - 0 errors - 0 skipped

    Notes

    - 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 only player-list.format while a player is already AFK may not become visible until the displayed duration changes.
    9 downloads

Similar projects

Config →