AntiAFKPlus v2.9.5
Compatibility
Changes
- Compatible with Minecraft Java Edition 26.1 and 26.1.1
- Fixed a chat-related issue that caused warnings in the console on modern servers
AntiAFKPlus v2.9.5 - UPDATE NOTE
IMPORTANT NOTICE: This is the last free version of AntiAFKPlus.
Due to a lack of support and high maintenance volume, the project will evolve to a Premium model starting with version 3.0.
What does this mean? This version (2.9.5) will continue to function, but new features, optimizations, and technical support will be exclusively available in the paid version. There will be no further updates, maintenance, or support for this version.
More info: Join our Discord server for details about the v3.0 release.
I am deeply grateful to the few people who have always been there supporting us with positive words. Those who wish to continue enjoying new features and ongoing support are welcome in this new phase.
AntiAFKPlus v2.9.4
Release Date: January 2026
Summary
This version drastically reduces false positives in pattern detection. Players will no longer be kicked for running in a straight line (forests, tunnels, paths) or moving normally around their bases.
New Features
Linear Movement Exclusion
Players running in a straight line will no longer be flagged as AFK.
Code (YAML):
modules:
pattern-detection:
linear-movement-exclusion: true
linear-movement-threshold: 0.3
min-direction-variance: 0.15
Activity Grace Period
Players who have been recently active (commands, jumping, looking around) get a grace period where pattern detection is temporarily suspended.
Code (YAML):
modules:
pattern-detection:
activity-grace-period-ms: 60000
Improved Defaults
Setting Previous New
water-circle-radius 4.0 5.0
min-samples-for-pattern 30 40
confined-space-threshold 8.0 12.0
repetitive-movement-threshold 0.9 0.95
max-pattern-violations 5 8
Upgrade Guide
Option 1: Regenerate config (Recommended)
Delete your config.yml and restart the server. A new one with all v2.9.4 defaults will be generated.
Option 2: Manual Update
Add this to your modules.pattern-detection section:
New in v2.9.4
Code (YAML):
linear-movement-exclusion: true
linear-movement-threshold: 0.3
min-direction-variance: 0.15
activity-grace-period-ms: 60000
Code (YAML):
# Updated values
water-circle-radius: 5.0
min-samples-for-pattern: 40
confined-space-threshold: 12.0
repetitive-movement-threshold: 0.95
max-pattern-violations: 8
Bug Fixes
Compatibility
- False positives when running through forests, tunnels, and paths
- Incorrect kicks when exploring own bases
- Violation accumulation during normal gameplay
API Changes
- Minecraft: 1.16 - 1.21.11
- Servers: Bukkit, Spigot, Paper, Purpur, Folia
- Java: 17+
- Breaking Changes: None
New methods in ConfigManager:
- getActivityGracePeriodMs()
- getLinearMovementThreshold()
- getMinDirectionVariance()
- isLinearMovementExclusionEnabled()
AntiAFKPlus v2.9.3 — AFK Player Protection System & PlaceholderAPI Fix
Release type: Feature & Bugfix Compatibility: Minecraft 1.16 – 1.21.11 | Java 17+
What's New
Complete AFK Player Protection System
- Full Protection: AFK players are now completely protected from external interference
- PvP Protection: Other players cannot attack or damage AFK players
- Movement Protection: Prevents forced movement from knockback, explosions, and player pushing
- Damage Immunity: Configurable protection from fall damage, fire, drowning, lava, and other environmental hazards
- Interaction Control: Optional blocking of inventory access, block interactions, and command execution while AFK
- Smart Detection: Distinguishes between player-initiated movement and forced movement (knockback, pushing)
Pattern Detection Notification Control System
- Granular Control: Configure when and to whom pattern detection messages are sent
- Silent by Default: Players no longer receive spam messages about pattern detections
- Admin Alerts: Optional notifications to staff members with specific permission
- Three Notification Types: Control messages on detection, violation, and action execution independently
- Customizable Permission: Configure which permission is required for admin notifications
- Solves Spam Issue: Addresses user reports of repetitive "[AntiAFK] Suspicious movement pattern detected" messages
Improved Pattern Detection Defaults & Configuration
- Reduced False Positives: Adjusted detection thresholds based on user feedback
- Confined space: 5.0 → 8.0 blocks (allows small builds without triggering)
- Repetitive movement: 0.8 → 0.9 similarity (90% required, fewer false positives)
- Pattern violations: 3 → 5 (more tolerant before taking action)
- Water circle radius: 3.0 → 4.0 blocks (allows small legitimate pools)
- Min samples: 20 → 30 (~2.5 minutes of data for reliable detection)
- Comprehensive Documentation: Every setting now includes:
- Recommended value ranges
- Detailed explanations of how it works
- Impact on false positives vs detection accuracy
- Eliminated Configuration Confusion: Removed duplicate pattern-detection-settings section
- Quick Start Guide: Added helpful guide at top of config.yml with common adjustments
- Zone Management Safety: Disabled by default to prevent unsafe teleports (was enabled)
PlaceholderAPI Custom Messages Fix
- Fixed Custom Placeholders: placeholder-status-afk, placeholder-status-active, and related placeholders now work correctly
- Supports Color Codes: Custom messages with & color codes now display properly in tab lists and other PlaceholderAPI integrations
- Enhanced Status Detection: Distinguishes between Manual AFK (/afk command) and Auto AFK (automatic detection)
Configuration
Player Protection Settings
Add to your config.yml:
modules:
player-protection:
enabled: true # Enable the protection system
player-protection:
# Movement Protection
prevent-movement-while-afk: false # Set to true to prevent forced movement
movement-restriction-message: true
# Damage Protection
invulnerability-enabled: true
invulnerability-delay-ms: 5000
damage-types-blocked:
- "FALL"
- "DROWNING"
- "FIRE"
- "LAVA"
prevent-pvp-invulnerability: true # Prevents PvP against AFK players
# Interaction Control
block-inventory-access: true
block-command-execution: false
command-whitelist:
- "/afk"
- "/help"
- "/spawn"
prevent-block-interaction: true
Pattern Detection Notification Settings
Add to your config.yml:
modules:
pattern-detection:
enabled: true
# ... other pattern detection settings ...
# v2.9.3 NEW: Notification control system
notifications:
notify-player-on-detection: false # Silent by default
notify-player-on-violation: false # No spam on violations
notify-player-on-action: false # No message when action executed
send-to-admins: true # Admins receive alerts
admin-notification-permission: "antiafkplus.notify.patterns"
New Permission: antiafkplus.notify.patterns
Grant this permission to staff members who should receive pattern detection alerts.
Custom PlaceholderAPI Messages
Add to your messages.yml:
messages:
# PlaceholderAPI status messages (supports color codes)
placeholder-status-afk: "AFK"
placeholder-status-active: "ACTIVE"
placeholder-status-manual-afk: "MANUAL AFK"
placeholder-status-auto-afk: "AUTO AFK"
# Protection system messages
protection-invulnerable: "&a[AntiAFK] You are now invulnerable while AFK."
protection-vulnerable: "&c[AntiAFK] You are no longer invulnerable."
protection-movement-blocked: "&e[AntiAFK] Movement blocked while AFK."
protection-pvp-blocked: "&c[AntiAFK] You cannot attack AFK players."
protection-pvp-protected: "&a[AntiAFK] You are protected from PvP while AFK."
protection-inventory-blocked: "&e[AntiAFK] Inventory access blocked while AFK."
protection-interaction-blocked: "&e[AntiAFK] Block interaction blocked while AFK."
protection-command-blocked: "&e[AntiAFK] Command execution blocked while AFK. Use /afk to return."
Use Cases
PvP Servers:
Recommended Settings for Different Server Types
player-protection:
prevent-movement-while-afk: true # Prevent combat advantage abuse
prevent-pvp-invulnerability: true # Full PvP protection
invulnerability-enabled: true # Environmental protection
Survival/SMP Servers:
player-protection:
prevent-movement-while-afk: false # Allow natural movement
prevent-pvp-invulnerability: true # Prevent griefing
invulnerability-enabled: true # Protect from mobs/environment
Creative/Build Servers:
player-protection:
prevent-movement-while-afk: false
prevent-pvp-invulnerability: false # PvP usually disabled anyway
block-inventory-access: false # Allow building while AFK
prevent-block-interaction: false
Compatibility
- Minecraft: 1.16 – 1.21.10
- Platforms: Bukkit, Spigot, Paper, Purpur, Folia (fully compatible)
- Java: 17+
- PlaceholderAPI: Enhanced support with custom messages
- Fully Backward Compatible: Existing configurations continue to work
Installation & Upgrade
New Installations
- Download AntiAFKPlus v2.9.3
- Place in /plugins folder
- Restart server
- Configure protection settings in config.yml
- Customize messages in messages.yml
Upgrading from Previous Versions
From v2.9.2 or earlier:
- Replace JAR file with v2.9.3
- Manual Config Update Required: Add the new player-protection section to your config.yml (see configuration above)
- Manual Messages Update Required: Add the new protection messages to your messages.yml (see configuration above)
- Restart server
- Verify protection is working with /afkplus status
Important: This version requires manual configuration updates. The plugin will work without them, but protection features will be disabled.
Fixed Issues
PlaceholderAPI Problems
Fixed: Custom placeholder-status-afk: "&7[AFK]" messages now work correctly
Fixed: Color codes in placeholder messages are properly applied
Fixed: Tab list and other PlaceholderAPI integrations show custom messages instead of hardcoded "AFK/ACTIVE"
AFK Player Vulnerability
Fixed: AFK players can no longer be easily removed from AFK state by other players
Fixed: Prevents griefing through forced movement (pushing, knockback)
Fixed: Configurable protection from environmental damage
Fixed: PvP protection prevents combat abuse
Pattern Detection Spam Messages
Fixed: Players no longer receive repetitive "[AntiAFK] Suspicious movement pattern detected" messages
Fixed: Notification spam when pattern violations accumulate
Fixed: Added granular control over when notifications are sent
New: Admin-only alerts with customizable permission system
Pattern Detection False Positives
Fixed: Players flagged incorrectly for "repetitive movement" during normal gameplay
Fixed: "Confined space" detection triggering in outdoor areas and small builds
Fixed: Overly aggressive detection thresholds causing legitimate players to be marked AFK
Improved: All thresholds adjusted to more conservative values based on user feedback
Improved: Detection now requires more samples (30 vs 20) for reliable pattern identification
Configuration Issues
Fixed: Duplicate pattern-detection-settings section causing confusion
Fixed: Unclear which configuration section to edit (now clearly documented)
Fixed: Missing value ranges and explanations for pattern detection settings
Fixed: Zone management enabled by default with unsafe teleport coordinates
New: Quick start guide at top of config.yml with common troubleshooting
New: Comprehensive documentation for every pattern detection setting
For Server Administrators
Testing the Protection System
- Set yourself AFK with /afk
- Have another player try to hit you (should be blocked)
- Try taking fall damage (should be blocked if configured)
- Test forced movement prevention (if enabled)
- Check that protection messages appear correctly
Performance Impact
- Minimal: Uses efficient event handling with cooldown systems
- Folia Compatible: Thread-safe implementation
- Memory Efficient: Automatic cleanup on player disconnect
Troubleshooting
- Protection not working: Verify modules.player-protection.enabled: true in config.yml
- PlaceholderAPI issues: Ensure messages.yml contains the new placeholder entries
- Folia compatibility: No special configuration needed, works out of the box
Version: 2.9.3
Release Date: December 30, 2025
Compatibility: Minecraft 1.16 - 1.21.11
Java: 17+
AntiAFKPlus v2.9.2 — Dynamic Credit Group Detection & Multi-Server
Release type: Bugfix & Enhancement
Compatibility: Minecraft 1.16 – 1.21.11 | Java 17+
---
What's Fixed
Credit System Group Detection
- Dynamic Group Reading: Plugin now automatically detects ALL groups defined in
[I]credit-ratios[/I]and[I]max-credits[/I]config sections- No More Hardcoded Limitations: Previously only supported
admin,premium, andvipgroups — now supports unlimited custom groups- Custom Group Support: Works with any group name:
sponsor,premium+,vip+,owner,member, etc.- Permission Format: Uses
antiafkplus.credit.ratio.<groupname>pattern (e.g.,antiafkplus.credit.ratio.sponsor)- Priority System: Implements configurable group priority order (admin > owner > sponsor > premium+ > vip+ > premium > vip > default)
Technical Improvements
- Added dynamic
ConfigurationSectionreading for group detection- Implemented intelligent caching system for group priority calculations
- Cache automatically clears on
/afkplus reloadfor instant config updates- Enhanced debug logging to show matched groups per player
- Improved error handling with fallback to default values
---
What's Documented
Multi-Server Credit System Setup
- Fully Documented: Complete documentation for running multiple servers (Skyblock, Survival, etc.) with separate credit systems sharing one database
- Table Prefix Feature: Use
table-prefixconfig option to separate credit tables per server- Configuration Examples: Step-by-step guides added to
config.ymlandREADME.md- New Documentation File:
MULTI_SERVER_DOCUMENTATION.mdwith complete setup guide, troubleshooting, and security best practices
How It Works:
- Each server uses a different
table-prefix(e.g.,skyblock_,survival_)- All servers connect to the same MySQL/SQLite database
- Credits are completely independent per server
- No code changes needed — configuration only!
---
Configuration Example
YAML:credit-system: credit-ratios: default: '5:1' vip: '4:1' premium: '3:1' premium+: '2:1' sponsor: '1:30' # ✅ Now works! owner: '1:60' # ✅ Custom groups supported! max-credits: default: 120 vip: 180 premium: 240 sponsor: 500 owner: 1000 # Optional: Customize priority order group-priority-order: - owner - admin - sponsor - premium+ - vip+ - premium - vip
Multi-Server Setup Example
Skyblock Server (config.yml):
YAML:[code=YAML]credit-system: database: enabled: true table-prefix: "skyblock_" # Skyblock tables database: type: "MySQL" mysql: host: "localhost" database: "antiafkplus"
Survival Server (config.yml):
credit-system:
database:
enabled: true
table-prefix: "survival_" # Survival tables
database:
type: "MySQL"
mysql:
host: "localhost"
database: "antiafkplus" # Same database![/code]
Result: Independent credit systems (skyblock_credits,survival_credits) in one shared database.
Permission Setup (LuckPerms Example)
/lp group sponsor permission set antiafkplus.credit.ratio.sponsor true
/lp group premium+ permission set antiafkplus.credit.ratio.premiumplus true
Note: Plus signs (+) in group names convert toplusin permission nodes.
---
Compatibility
- Minecraft: 1.16 – 1.21.11
- Platforms: Bukkit, Spigot, Paper, Purpur, Folia
- Java: 17+
- Permission Plugins: LuckPerms, PermissionsEx, GroupManager, etc.
- Fully Backward Compatible: Existing configurations continue to work
---
Upgrade Notes
1. Replace the old JAR withAntiAFKPlus v2.9.2
2. Update LuckPerms (or other permission plugin) with new group permissions:
- Format:antiafkplus.credit.ratio.<groupname>
3. Optional: Customize group priority order inconfig.yml
4. NEW: Checkconfig.ymlfor multi-servertable-prefixexamples if you run multiple servers
5. Reload with/afkplus reloadto apply changes
6. Enabledebug: truein config to verify group detection
Existingadmin,premium, andvipgroups continue to work without changes. New custom groups require permission node setup.
Multi-Server Users: If you want to separate credit systems across multiple servers, configure differenttable-prefixvalues in each server'sconfig.yml(see documentation).
---
For Developers
API Version 2.9.2 (unchanged API, internal improvements only)
No breaking changes to the public API. The credit system now uses dynamic group detection internally, improving flexibility for server administrators.
---
Version: 2.9.2
Release Date: 19/12/2025 (Documentation Update)
Compatibility: Minecraft 1.16 - 1.21.11
Java: 17+
AntiAFKPlus v2.9.1 — Pattern Detection Respecting Config
Release type: Bugfix Compatibility: Minecraft 1.16 – 1.21.10 | Java 17+
What's Fixed
Pattern Detection now fully honors config/module toggles; disabling the module or enhanced-detection.pattern-detection stops analysis and prevents flags/actions.
Detector uses all configured thresholds (interval, sample counts, repetitive/area limits, large-pool and keystroke toggles) instead of hardcoded defaults.
/afkplus reload cleanly restarts or shuts down pattern analysis to reflect updated settings without a server restart.
Upgrade Notes
Replace the old JAR with AntiAFKPlus v2.9.1.
Reload with /afkplus reload or restart.
Verify your modules.pattern-detection and pattern-detection-settings values; they are now enforced.
Version: 2.9.1
Release Date: 15/11/2025
Compatibility: Minecraft 1.16 - 1.21.10
Java: 17+
AntiAFKPlus v2.9 — AFK Time Windows
Release type: Feature Update Compatibility: Minecraft 1.16 – 1.21.10 | Java 17+
What's New
AFK Time Windows
Configurable Time Ranges: Define daily hour ranges where AFK actions are paused or modified
Multiple Behaviors: Choose how the plugin handles AFK detection during configured windows:
SKIP_ACTIONS: Suppress all warnings, countdowns, and kicks
MESSAGE_ONLY: Suppress actions and send informational message
EXTEND_THRESHOLD: Delay final action by configurable seconds
DEFAULT: Normal AFK enforcement (used outside windows)
Timezone Support: Use server timezone or specify any IANA timezone ID (e.g., America/New_York, Europe/London)
Wrap-Around Ranges: Support for overnight ranges (e.g., 22:00-02:00)
Bypass Permission: Staff can ignore windows with antiafkplus.window.bypass
Configuration Example
afk-windows:
enabled: true
timezone: "SERVER" # or explicit IANA ID like "America/New_York"
ranges:
- "08:00-12:00"
- "20:00-23:00"
behavior-inside-window: "SKIP_ACTIONS"
behavior-outside-window: "DEFAULT"
extend-seconds: 900 # used when behavior is EXTEND_THRESHOLD
bypass-permission: "antiafkplus.window.bypass"
Use Cases
Peak Hours Protection: Disable AFK kicks during busy server hours
Event Periods: Pause AFK enforcement during special events
Off-Hours Flexibility: Allow extended AFK times during late night/early morning
Regional Adaptation: Use different timezones for international servers
Technical Details
TimeWindowService: Minute-level granularity with intelligent caching
AFKManager Integration: Evaluates windows before warnings and final actions
Countdown/Transfer Compatibility: Pipelines and sequences respect window controls
Reload Support: /afkplus reload updates window settings without restart
New Permission
antiafkplus.window.bypass: Allows players to ignore AFK windows and receive normal enforcement
Automatically included in antiafkplus.* wildcard
Useful for staff testing and development accounts
Compatibility
Minecraft: 1.16 – 1.21.10
Platforms: Bukkit, Spigot, Paper, Purpur, Folia
Java: 17+
Backward Compatible: All existing configurations work without changes
Upgrade Notes
Replace the old JAR with AntiAFKPlus v2.9
Optional: Configure afk-windows section in config.yml to enable time-based protection
Optional: Customize the afk-window-active message in messages.yml for localization
Update your dependency to 2.9 if using the API:
<dependency>
<groupId>com.github.koyere</groupId>
<artifactId>AntiAFKPlus</artifactId>
<version>2.9</version>
<scope>provided</scope>
</dependency>
No configuration changes are required. The plugin works with your existing setup. AFK windows are disabled by default.
For Developers
API Version: 2.9 (unchanged from 2.8, no breaking changes)
The time window system is internal and transparent to the API. Developers using the API will benefit from the improved flexibility without code changes.
Version: 2.9 Release Date: 14/11/2025 Compatibility: Minecraft 1.16 - 1.21.10 Java: 17+
AntiAFKPlus v2.8.2 (Hotfix Rollup)
Bug Fixes
- Pause-aware scheduling – Introduced a shared ServerStateUtil and wrapped every repeating task scheduled through PlatformScheduler so they no longer spin while Paper/Folia is paused or running in auto-pause mode. This eliminates the repeated CPU spikes reported when the server was suspended.
- Stable transfer countdowns – Countdown sequences now persist their start timestamp and AFK state. Players that have not produced real activity after the countdown started will no longer flip back to ACTIVE each tick, so the “title disable kick / activity detected loop” is gone and the final action fires exactly once.
These fixes are fully backwards compatible with the v2.8 API—only internal scheduling and AFK state transitions were touched.
AntiAFKPlus v2.8.1 - Critical Threading Fix
Release Date: 2025-10-20 Type: Bugfix Release Compatibility: Paper 1.21.8, Spigot, Folia, Purpur (MC 1.16-1.21.8)
Critical Fixes
Pattern Detection Event Threading (Paper 1.21.8 Compatibility)
Issue: Pattern detection events were being fired asynchronously, causing IllegalStateException on Paper 1.21.8 and preventing external API listeners from receiving events.
Fixed:
All Bukkit events now fire synchronously on main thread (Paper 1.21.8 requirement)
Eliminated async entity access (player.getLocation() now called in main thread)
Converted internal data structures to thread-safe collections (ConcurrentHashMap/ConcurrentLinkedDeque)
Implemented atomic operations for violation counters to prevent race conditions
Added proper player disconnect handling during async analysis
Impact:
- External plugins using api.registerPatternDetectionListener() now receive events correctly
- Zero threading exceptions in Paper 1.21.8+
- Maintained performance (heavy analysis still runs asynchronously)
Files Changed:
- PatternDetector.java - Complete threading model refactor
Performance
Zero performance regression - Pattern analysis remains asynchronous
Thread-safe operations - All concurrent access properly synchronized
Folia compatible - Uses runTaskForEntity for player-specific operations
API Compatibility
Fully compatible with v2.8 API - No breaking changes for developers.
Developers can now safely use:
AntiAFKPlusAPI api = AntiAFKPlusAPI.getInstance();
api.registerPatternDetectionListener(event -> {
// This now works correctly on Paper 1.21.8+
System.out.println("Pattern detected: " + event.getPattern().getType());
});
Installation
Maven:
<dependency>
<groupId>com.github.koyere</groupId>
<artifactId>AntiAFKPlus</artifactId>
<version>2.8.1</version>
<scope>provided</scope>
</dependency>
Gradle:
compileOnly 'com.github.koyere:AntiAFKPlus:2.8.1'
Known Issues
None reported in this release.
Notes for Server Admins
- Direct upgrade from v2.8 - No configuration changes required
- Drop-in replacement - Simply replace the JAR file and restart
- No data migration needed
