Polymart is now Voxel Shop! We're upgrading many features of the site, and during this open beta you will experience occasional bugs. Learn more  
AntiAFKPlus Premium icon

AntiAFKPlus Premium 3.1

Smart and configurable AFK management for your server!

Page 1
3.1 2 days ago
Bug Fixes & New Features

It is very important that you update to version 3.1, as it corrects bugs that could cause the plugin to malfunction.


 


AntiAFKPlus v3.1 — Changelog




Bug Fixes




  • Console spam from activity logs — [Activity] log lines no longer appear in the console by default. They only show when debug: true is set in config.yml. Core AFK messages (player went AFK, returned, kicked) always appear regardless.



  • Blank chat lines when a message is set to "" — Setting any message to an empty string in the language file no longer sends a blank line to the player's chat. It is silently skipped.



  • AFK pool bypass via water current — Players inside a water AFK pool could avoid detection indefinitely because water current movement was counted as real activity. Fixed: only manual input (swimming, looking around, jumping, sprinting) counts as activity.



  • Door spam-click bypass — Repeatedly clicking a door (manually or with an auto-clicker) was resetting the AFK timer indefinitely. Fixed.



  • "Use Item: toggle" bypass on levers and buttons — Holding right-click on levers or buttons prevented AFK detection. Fixed.



  • "Attack/Destroy: toggle" bypass on cobblestone generators — Holding left-click on a cobble generator prevented AFK detection indefinitely. Fixed.



  • "No longer AFK" broadcast missing or delayed — When a player returned from AFK by sending a chat message, the server broadcast frequently never appeared. It now fires immediately.



  • AFK warning messages showed wrong countdown value — The "you will be kicked in {seconds}s" warning displayed the configured threshold instead of the actual time remaining. Fixed.



  • AFK warnings not reset after world change — Players who received warnings and then moved to a disabled world would not receive them again on returning. Fixed.



  • GUI shift+click did not decrease numeric values — In the settings GUI, shift-clicking was supposed to decrease a value but always increased it instead. Fixed.



  • Large AFK pool detection not working — Players in pools larger than 5×5 blocks were never detected even with the feature enabled. Fixed.



  • GAMEMODE and COMMAND actions ignored in global AFK action — Setting afk-action.type: GAMEMODE or COMMAND silently fell through to a kick. Both actions now work correctly. GAMEMODE reads afk-action.gamemodeCOMMAND reads afk-action.command with {player} / {uuid} support.




Config / Connectivity Fixes




  • database.enabled ignored by SQL storage — SQL storage now activates correctly when either database.enabled or credit-system.database.enabled is true.



  • DiscordSRV pattern alerts never fired — With integrations.discordsrv.send-pattern-alerts: true, a Discord message is now sent when a suspicious pattern is detected, including the player name, pattern type, and confidence level.



  • performance.adaptive-intervals had no effect on the AFK check task — The option now correctly adjusts the AFK check interval based on server TPS.




New Features


Reward system (reward-system) — now functional



  • Tracks AFK time and fires configured reward-system.intervals.* thresholds once per AFK session.
  • Respects require-active-time-minutesmax-daily-rewards, and require-vault.
  • Executes console commands and sends player messages. Supports {player} and {uuid} placeholders.

Analytics system (analytics) — now functional



  • Enable with analytics.enabled: true in config.yml.
  • Automatic daily reports generated at midnight in JSON or CSV format (set via analytics.export-format). Files are saved to plugins/AntiAFKPlus/analytics/.
  • New commands:

    • /afkplus analytics — shows a live in-memory summary.
    • /afkplus analytics export — forces an immediate export.
    • Permission required: antiafkplus.stats.

Hologram support — DecentHolograms and FancyHolograms



  • A floating hologram appears above AFK players when visual-effects.holograms.enabled: true.
  • Auto-detects DecentHolograms first, then FancyHolograms. If neither is installed, holograms are simply disabled.
  • Text lines, height offset, and update interval are all configurable under visual-effects.holograms.* in config.yml.
  • Supports {player} and {time} placeholders (e.g. &eAFK for {time}).

Bedrock / GUI adaptation (Geyser/Floodgate)



  • Player-facing messages and GUI menus now adapt automatically when a player is connected from Bedrock Edition via Geyser or Floodgate.


Compatibility



  • Paper 1.16 — 26.1.2+
  • Folia (all versions)
  • Spigot 1.16+
  • Purpur, Pufferfish, and other Paper forks
  • Bedrock via Geyser/Floodgate
  • PlaceholderAPI
  • DecentHolograms (optional)
  • FancyHolograms (optional)


Migration


Drop-in update — no changes required, except for the two notes below.


enabled-worlds default is now [] (all worlds)If you relied on the old default, add your world names explicitly or leave the list empty to keep "all worlds" behaviour
repetitive-movement-threshold default lowered to 0.82Only relevant if you set this manually; otherwise no action needed
10 new language keys under analytics.*Custom translation files will fall back to English until updated



How to Update



  1. Stop the server.
  2. Replace the plugin JAR with AntiAFKPlus-3.1.jar.
  3. Start the server.
3.0.4 7 days ago
Performance

AntiAFKPlus v3.0.4 — Changelog




⚡ Performance


Reduced load on the server main thread


Problem: On servers with many players and active timers, the plugin could contribute to small TPS dips (for example, TPS hovering around 19 instead of a steady 20). Profiling tools (like spark) showed AntiAFKPlus as one of the points where the server was spending time waiting, even though CPU usage looked low.


Cause: An internal check the plugin ran on every scheduled task to know whether the server was paused. That check, repeated many times per second, produced small stalls that, added up, affected TPS.


Fix: The check was rewritten so that:



  • It only really runs once per tick, no matter how many tasks are active.
  • It is skipped entirely on platforms where it does not apply (Spigot and forks without Paper's pause API). On those, the cost is now literally zero.

Expected result: More stable TPS and a much smaller footprint in profiling reports, especially on servers with high concurrency, the credit system enabled, particles, or multiple worlds.


No visible plugin behavior was modified: AFK detection, punishments, messages, and commands work exactly the same.




✅ Compatibility



  • Paper 1.16 — 1.21+
  • Folia (all versions)
  • Spigot 1.16+
  • Purpur, Pufferfish, and other Paper forks
  • Bedrock via Geyser/Floodgate (unchanged)
  • PlaceholderAPI (unchanged)


📦 Migration


No action required.



  • No changes to config.yml.
  • No changes to language files (languages/*.yml).
  • No changes to permissions.
  • No changes to the public API.

Players currently in AFK state when the server restarts will keep their usual behavior.




🔧 How to Update



  1. Stop the server.
  2. Replace the plugin JAR with AntiAFKPlus-3.0.4.jar.
  3. Start the server.

That's it.

3.0.3 10 days ago
Bug Fixes

AntiAFKPlus v3.0.3 — Changelog




Bug Fixes


Players bypass AFK detection by riding animals in water (Critical)


Problem: A player sitting on any rideable entity (horse, donkey, camel, boat, etc.) in water could completely avoid AFK punishments. The natural bobbing motion of the animal in water was incorrectly counted as player activity, causing the plugin to immediately unmark the player as AFK — even though the PatternDetector had correctly identified them as idle.


Symptoms:



  • Console shows pattern violations accumulating normally (repetitive_movementkeystroke_timeout)
  • Player gets marked as AFK at the correct threshold
  • Player is immediately unmarked (~1 second later) with reason "manual (API activity/unmark)"
  • This loop repeats indefinitely — the player is never actually punished

Fix: The plugin now correctly identifies passive vehicle movement and ignores it as activity. Players mounted on entities will only be considered active if they move their camera (mouse input), which requires real player interaction. Pattern detection continues monitoring mounted players normally.


Affected setups: All servers, but especially those using MARK_AFK_ONLY as the AFK action. Servers using KICK or TELEPORT were less impacted since those actions execute before the next movement tick.




Blank lines in chat when AFK state messages are set to empty


Problem: Setting player-now-afk: "" or player-no-longer-afk: "" in the language file to disable AFK state broadcasts still sent blank lines to all online players.


Fix: The plugin now checks if the message is empty or whitespace-only before broadcasting. Setting either message to "" will now completely suppress it — no blank lines, no chat spam.




Language file changes not applied on /afkplus reload


Problem: Editing language YAML files (e.g., plugins/AntiAFKPlus/languages/en.yml) required a full server restart to take effect. The /afkplus reload command only reloaded config.yml but not the language files.


Fix: /afkplus reload now also reloads all language files. Changes to messages, translations, and custom text take effect immediately without restarting.




Improvements


Renamed max-voluntary-afk-time-seconds → max-afk-duration-seconds


The old name was confusing because it also applies to players marked AFK by the plugin (via MARK_AFK_ONLY), not just voluntary /afk usage.


New config key:


# Maximum seconds a player can remain in AFK state before being forced active.
# Applies to both voluntary (/afk) and plugin-marked (MARK_AFK_ONLY) AFK states.
# Set to 0 to disable (players stay AFK indefinitely until they move).
max-afk-duration-seconds: 600

The old key max-voluntary-afk-time-seconds still works for backward compatibility — no migration needed.




Compatibility



  • Paper 1.16 — 26.1.2+
  • Folia (all versions)
  • Spigot 1.16+
  • Purpur, Pufferfish, and other Paper forks
  • No config changes required


How to Update



  1. Stop the server
  2. Replace the plugin JAR with AntiAFKPlus-3.0.3.jar
  3. Start the server

No config changes required. The old max-voluntary-afk-time-seconds key still works.


Optional: Rename max-voluntary-afk-time-seconds to max-afk-duration-seconds in your config.yml for clarity. Both keys are supported.


3.0.2 18 days ago
Fixes & New Features

AntiAFKPlus v3.0.2 — Changelog




✨ New Features


Global AFK Action (afk-action)


Configure what happens when a player goes AFK directly in config.yml — no zone management or WorldGuard needed.


afk-action:
type: "TELEPORT"
teleport-location: "world,250,76,30"

Available actions: KICKTELEPORTMARK_AFK_ONLYNONE


Exempt Worlds (afk-action.exempt-worlds)


Worlds where players get marked as AFK (tab list prefix, visual effects) but are not teleported or kicked. Perfect for spawn worlds.


afk-action:
type: "TELEPORT"
teleport-location: "world,250,76,30"
exempt-worlds:
- "world_spawn"

Players in world_spawn will show as AFK in tab but won't be teleported. Players in other worlds will be teleported normally.


Hex Color Support


Language files and messages now support hex colors (1.16+):



  • &#e5be01 format
  • {#e5be01} format
  • #e5be01 format

Example in your language file:


kick-action-teleport: "&#e5be01[Server] &fYou have been teleported."



🐛 Bug Fixes


Messages always in English on first startup (Critical)


The ConfigManager loaded messages before the LocalizationManager was initialized, so all cached messages (kick warning, AFK state, teleport) defaulted to English. Even after restart, the cached values stayed in English. Fixed: Messages are now reloaded after the localization system is ready.


Players kicked even with TELEPORT configured


Custom zone names (e.g., spawn_finallobby) were ignored — only "spawn" worked. Now any zone name works.


Zone management required WorldGuard for simple setups


require-worldguard defaulted to trueNow defaults to false.


Warning times showed wrong numbers (29 instead of 30)


Warnings now display the exact configured time (30, 10, 5) instead of the calculated remainder that varied with the check interval.


Warning titles on screen always in English


The on-screen title ("⚠ AFK Warning") was hardcoded. Now reads from your language file (warning-title-standardwarning-subtitle-standard).


Teleport message always in English


Hardcoded. Now reads kick-action-teleport from your language file.


Pattern detection warnings in English


Hardcoded. Now reads suspicious-activity and pattern-violation-kicked from your language file.


Bedrock welcome messages in English


Hardcoded. Now reads from language file (bedrock-detectedbedrock-tip-mobilebedrock-tip-consolebedrock-tip-desktop).


Language files incomplete


All 10 languages now fully translated. No English leftovers.




📋 Improvements



  • Config documentation with inline examples for afk-action and zone-management
  • Startup validation warns about misconfigured teleport locations
  • Action priority: Zone Management > Global afk-action > Server Transfer > KICK


🔧 How to Update



  1. Replace the plugin JAR
  2. Delete plugins/AntiAFKPlus/languages/ so new translated files are extracted
  3. Restart the server
  4. Add to your config.yml:

afk-action:
type: "TELEPORT"
teleport-location: "world,250,76,30"
exempt-worlds:
- "world_spawn"


Note: Back up your language files if you customized them. Re-apply changes after the new files are extracted.


3.0.1 Apr 27, 2026
Quick Fix

Fix Show [AFK] in tab list via PlaceholderAPI:

Then use %antiafkplus_status% in your tab/chat plugin (TAB, LuckPerms, etc.).

3.0 Apr 22, 2026
Page 1
Sign in
$5.99 USD
Sign in to purchase, save this product to your cart, and keep downloads tied to your account.
Stripe

afk

afkzone