Skip to content

JustAFK v1.1.0 — Runtime Controls & Input-Aware AFK Detection

Latest

Choose a tag to compare

@CaptainRatax CaptainRatax released this 30 Jul 23:22
2e6be5d

JustAFK 1.1.0 introduces complete runtime control over the plugin and a new input-aware AFK detection system.

Player activity is no longer inferred from position changes. JustAFK now detects movement input sent by the player, allowing AFK state and duration to survive external movement such as entity pushes, knockback, arrows, explosions, water, teleports, death, and respawn.

Important

JustAFK 1.1.0 requires Minecraft 1.21.3 or newer and Java 21 or newer.

Servers running Minecraft versions below 1.21.3 can continue using JustAFK v1.0.1.

Version 1.0.1 retains the previous position-based AFK detection. External movement, including knockback or entities pushing a player, may therefore reset the inactivity timer or remove AFK. It also does not include the new global and automatic-AFK configuration toggles introduced in 1.1.0.

Highlights

  • Added a global enable/disable option for the entire plugin
  • Added an independent toggle for automatic AFK detection
  • Added runtime commands for changing both options
  • Replaced position-based activity tracking with player-input detection
  • Detects forward, backward, left, right, jump, sneak, and sprint input
  • Preserves AFK state during external movement
  • Preserves AFK state and duration across death and respawn
  • Raised the minimum supported Minecraft version to 1.21.3
  • Raised the plugin bytecode requirement to Java 21
  • Updated configuration, documentation, compatibility checks, and automated tests
  • No database, NMS, or external runtime dependencies

Global plugin control

A new top-level configuration option controls whether JustAFK is active:

enabled: true

It can also be changed while the server is running:

/justafk set enabled on
/justafk set enabled off

When enabled is set to false:

  • Players are not 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
  • JustAFK player-list prefixes are restored
  • AFK announcements are disabled
  • Player-list duration updates stop

The following administration commands remain available so the plugin can still be inspected, configured, reloaded, and enabled again:

  • /justafk help
  • /justafk status
  • /justafk reload
  • /justafk set ...

Re-enabling the plugin starts a fresh activity-tracking session for online players.

Independent automatic AFK control

Automatic AFK detection can now be enabled or disabled independently:

automatic-afk-enabled: true

It can be changed at runtime using:

/justafk set automatic-afk on
/justafk set automatic-afk off

When automatic AFK detection is disabled:

  • Inactivity no longer places players into AFK automatically
  • The configured inactivity timeout is not applied automatically
  • Players can still use /afk
  • Administrators can still change another player's AFK state
  • Movement input still removes a manually applied AFK state
  • Announcements and player-list prefixes continue to work for manual AFK states

This allows servers to use JustAFK exclusively as a manual AFK system if desired.

Input-aware AFK detection

Previous versions detected activity through changes to the player's world position. This could incorrectly remove AFK when a player was moved by something outside their control.

JustAFK 1.1.0 replaces that system with the movement-input API introduced in modern Minecraft server versions.

The following inputs count as activity:

  • Forward
  • Backward
  • Left
  • Right
  • Jump
  • Sneak
  • Sprint

When one of these inputs 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

JustAFK uses both immediate input events and periodic input polling:

  • Input events detect short key presses between monitoring passes
  • Polling keeps the player active while a movement key remains held
  • Releasing all movement inputs allows the inactivity timer to progress normally

A held key or client-side movement toggle continues to count as activity for as long as the server reports that input as active.

External movement no longer counts as activity

Changes to the player's position no longer restart the inactivity timer by themselves.

An AFK player therefore remains AFK when moved by:

  • Entity collisions or pet mobs
  • Slimes and other mobs pushing the player
  • 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 AFK duration are preserved during these events unless the player sends movement input.

Looking around with the mouse also remains ignored and does not restart the inactivity timer.

If movement input is active while knockback or another external movement occurs, the player is considered active because the server is receiving intentional movement input from the client.

Configuration compatibility

Existing configuration files from JustAFK 1.0.0 and 1.0.1 remain compatible.

The two new options default to true when they are missing:

enabled: true
automatic-afk-enabled: true

This means that upgrading with an existing configuration preserves the previous enabled behaviour without requiring the configuration file to be regenerated.

The options can be added manually or saved through the runtime configuration commands.

Compatibility

JustAFK 1.1.0 supports the following server versions:

Platform Supported versions
Paper 1.21.3–26.2
Purpur 1.21.3–26.2
Folia 1.21.3–26.2, where a server build is available
Spigot / CraftBukkit 1.21.3–26.2
Sponge Not supported
BungeeCord / Velocity / Waterfall Not supported; these are proxy platforms

Paper 26.2 remains the primary build target.

The same source is also compatibility-compiled against Spigot 1.21.3, and both compilations must produce identical class files before the build passes.

Folia continues to use its native global and entity schedulers without requiring a separate plugin build or runtime dependency.

Compatibility with older Minecraft versions

JustAFK 1.1.0 cannot load on servers below Minecraft 1.21.3 because the required player-input event is unavailable on those versions.

For older servers, continue using JustAFK v1.0.1:

Platform JustAFK 1.0.1 compatibility
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
  • Uses position changes to detect player activity
  • May remove AFK when a player is pushed or receives knockback
  • Does not include enabled
  • Does not include automatic-afk-enabled
  • Does not include input-aware movement detection

Version 1.0.1 remains available and can continue to be used normally on servers that cannot upgrade to Minecraft 1.21.3 or newer.

Java requirements

The JustAFK 1.1.0 JAR uses Java 21 bytecode and therefore requires Java 21 or newer.

The Minecraft server may require a newer Java version depending on the server version. For example, Paper 26.2 requires Java 25.

JustAFK 1.0.1 remains available with Java 8-compatible bytecode for older Minecraft servers.

Technical changes

  • Replaced PlayerMoveEvent activity tracking with PlayerInputEvent
  • Added current-input polling through Player#getCurrentInput()
  • Added a dedicated activity predicate for all seven movement-input flags
  • Removed the obsolete position snapshot implementation
  • Removed position comparisons from the periodic AFK monitor
  • Added global and automatic-AFK flags to immutable configuration snapshots
  • Added runtime configuration commands and tab completion for both flags
  • Added safe handling for configuration changes under Folia
  • Set api-version to 1.21.3
  • Changed the emitted bytecode target from Java 8 to Java 21
  • Compiles against Paper API 26.2 build 84
  • Compatibility-compiles against Spigot API 1.21.3
  • Verifies bytecode parity between Paper and Spigot builds
  • Verifies the Java 21 class-file version
  • Verifies that no runtime dependencies are declared
  • Updated the README, default configuration, build checks, and compatibility matrix

Validation

  • 25 automated tests passed
  • All seven movement-input flags tested individually
  • Short input taps between monitor passes tested
  • Held movement input polling tested
  • Empty input and inactivity timeout behaviour tested
  • External position changes verified not to affect AFK timing
  • Global plugin disable behaviour tested
  • Automatic-AFK disable behaviour tested
  • Manual AFK removal through player input tested
  • Spigot 1.21.3 compatibility compilation passed
  • Paper 26.2 primary compilation passed
  • Paper and Spigot bytecode parity verified
  • Java 21 bytecode verified
  • No runtime dependencies detected
  • Manually tested successfully on a 26.2 test server

Updating from 1.0.1

  1. Confirm that the server is running Minecraft 1.21.3 or newer.
  2. Confirm that the server is running Java 21 or newer.
  3. Stop the server.
  4. Back up plugins/JustAFK/config.yml.
  5. Replace JustAFK-1.0.1.jar with JustAFK-1.1.0.jar.
  6. Start the server.
  7. Run /justafk status to review the active configuration.
  8. Configure the new options if required:
/justafk set enabled on
/justafk set automatic-afk on

Existing configuration values remain compatible and do not need to be regenerated.

Do not install JustAFK 1.1.0 on a server below Minecraft 1.21.3. Continue using version 1.0.1 on those servers.

Download

Download JustAFK-1.1.0.jar from the assets below and place it in the server's plugins directory.

Full Changelog: v1.0.1...v1.1.0