AntiAFKPlus v2.7 — Critical Bug Fixes
Release type: Bug Fix Release Compatibility: Minecraft 1.16 – 1.21.9+ | Java 17+
What's Fixed
🔧 Credit System Teleportation (CRITICAL FIX)
Problem: AFK zone teleportation worked only 1-2 times, then stopped working. Players would see AFK warnings but never get teleported.
Solution: Fixed credit system logic to properly teleport players when credits are exhausted.
What this means for you:
- ✅ AFK zone teleportation now works consistently every time
- ✅ Credits consume properly minute-by-minute while AFK
- ✅ Players are automatically teleported when credits reach zero
- ✅ No more "stuck" players who see warnings but never get moved
🌍 Disabled Worlds Cleanup (CRITICAL FIX)
Problem: Players still received AFK warnings in disabled worlds (like luna-afk-1
), even when those worlds were added to disabled-worlds
configuration.
Solution: Plugin now completely clears AFK state when players enter disabled worlds.
What this means for you:
- ✅ No more AFK warnings in disabled worlds
- ✅ AFK state is automatically cleared when entering disabled worlds
- ✅ Works correctly with both
disabled-worlds
andenabled-worlds
configuration - ✅ Players can safely AFK in designated worlds without interference
🐛 Pattern Detection Errors (TECHNICAL FIX)
Problem: Server logs showed ConcurrentModificationException
errors during pattern analysis.
Solution: Implemented thread-safe pattern detection across all detection methods.
What this means for you:
- ✅ Clean server logs without errors
- ✅ Pattern detection (water circles, large pools, confined spaces) works flawlessly
- ✅ Better server stability and performance
- ✅ No more error spam in console
⚙️ Credit System Isolation (ENHANCEMENT)
Problem: Credit system could potentially interfere with standard AFK detection even when disabled.
Solution: Complete isolation of credit system when disabled in configuration.
What this means for you:
- ✅ Zero performance overhead when credit system is disabled
- ✅ Standard AFK detection works perfectly without credit system
- ✅ Full backwards compatibility with previous configurations
- ✅ Better resource efficiency
Configuration Examples
Fix #1: Enable AFK Zone Teleportation with Credits
modules:
credit-system:
enabled: true
credit-system:
enabled: true
afk-zone:
enabled: true
world: "world"
location: "0,100,0"
Fix #2: Disable AFK Detection in Specific Worlds
disabled-worlds:
- "luna-afk-1"
- "creative-world"
- "lobby"
Upgrade Instructions
- Backup your current
config.yml
andmessages.yml
- Replace old plugin JAR with AntiAFKPlus v2.7
- Restart your server
- Test AFK teleportation and disabled worlds functionality
No configuration changes required - all fixes are automatic!
For Server Owners
Critical Fixes:
- AFK zone teleportation now reliable and consistent
- Disabled worlds work as expected (no more false warnings)
- Eliminated concurrent modification errors in logs
- Credit system properly isolated when disabled
Performance:
- Thread-safe operations throughout pattern detection
- Reduced resource usage when credit system is disabled
- Cleaner logs and better stability
Compatibility:
- 100% backwards compatible with v2.6 and v2.5 configurations
- No breaking changes
- All existing features continue to work normally
Need Help?
- 📖 In-Game:
/afkplus help
and/afkplus status
- 💬 Discord: https://discord.gg/xKUjn3EJzR
- 🐛 Bug Reports: GitHub Issues
- 📚 Documentation: GitHub Wiki
Version: 2.7 Release Date: October 12, 2025 Type: Critical Bug Fix Release
AntiAFKPlus v2.6 — Server Transfer & Scripted Sequences
Release type: Feature Release
Compatibility: Minecraft 1.16 – 1.21.8+ | Java 17+
What’s New
Server Transfer (Bungee/Velocity)
- Native final action
TRANSFER_SERVER
to move AFK players to another server via Plugin Messaging. - Global configuration with robust channel handling and optional retry policy.
- Zone-based overrides: per-zone transfer with
kick-action: TRANSFER
andtransfer-server
.
Countdown & Titles/Sounds
- Optional per-second countdown with Title/Subtitle and Sound before transferring.
- Fully Folia-safe with entity-bound scheduling.
- Auto-cancels if the player becomes active.
Scripted Action Pipeline
- New pipeline engine to run steps in order:
TITLE
,SUBTITLE
,SOUND
,MESSAGE
,WAIT
,TRANSFER
. - Configurable in
config.yml
with simple DSL-like syntax. - Cancels automatically when leaving AFK.
Robustness & Fallbacks
- Auto-registration of
BungeeCord
andbungeecord:main
channels. - Channel selection:
auto | bungeecord | namespaced
. - Fallback actions:
KICK | TELEPORT | NONE
with optional teleport location.
How It Works (Action Order)
- Credit System: If credits exist, the kick event is cancelled and credits are consumed; no transfer runs.
- Zone Management: Zone
kick-action
takes priority (TELEPORT
,TRANSFER
, etc.). - Global Transfer: If enabled and a
target-server
is configured,TRANSFER_SERVER
is used by default.
If the player becomes active mid-flow, any countdown/pipeline is cancelled.
Configuration
Global settings:
server-transfer:
enabled: true
target-server: "lobby"
proxy-channel: "auto" # auto | bungeecord | namespaced
# Fallbacks
fallback-action: "KICK" # KICK | TELEPORT | NONE
fallback-teleport-location: "world,0,100,0"
# Retry policy
retry-attempts: 0
retry-delay-ticks: 10
# Countdown
countdown:
enabled: false
seconds: 10
title: "&cYou are AFK"
subtitle: "&eMoving in {seconds}s"
sound:
enabled: true
name: "ENTITY_EXPERIENCE_ORB_PICKUP"
volume: 1.0
pitch: 1.0
# Scripted pipeline
pipeline:
enabled: false
actions:
- "TITLE: &cYou are AFK"
- "SUBTITLE: &eMoving in {seconds}s"
- "SOUND: ENTITY_EXPERIENCE_ORB_PICKUP,1.0,1.0"
- "WAIT: 1s"
- "MESSAGE: &7Transferring..."
- "TRANSFER: lobby"
Zone-based transfer example:
zone-management:
enabled: true
zones:
spawn:
kick-action: "TRANSFER"
transfer-server: "lobby"
Messages
Add or customize in messages.yml
:
messages:
server-transfer:
transferring: "&7[AntiAFK+] &aTransferring you to &f{server}&a..."
unavailable: "&7[AntiAFK+] &cServer transfer unavailable."
failed: "&7[AntiAFK+] &cCould not transfer you."
Permissions & Commands
- No new commands or permissions in v2.6. The feature is fully configurable via
config.yml
.
Compatibility & Notes
- BungeeCord and Velocity (Bungee compatibility) via Plugin Messaging.
- Folia-safe scheduling through PlatformScheduler; no BukkitScheduler in Folia context.
- Fully backward compatible; disabled by default.
Migration
- No breaking changes. Existing configurations remain valid.
- To enable: set
server-transfer.enabled: true
and configuretarget-server
.
Testing Checklist
- Validate transfer on Bungee/Velocity with correct
target-server
names. - Try countdown and pipeline separately.
- Confirm fallback behavior (KICK/TELEPORT/NONE) when channels are unavailable.
- Verify zone-based
TRANSFER
overrides global behavior.
AntiAFKPlus v2.5 — Release Notes
🎯 AFK Credit System - Earn Time to Be Away
New Feature Overview
Revolutionary AFK Credit System: Players can now earn AFK time by being active! For every X minutes of active gameplay, players earn Y minutes of AFK allowance before being teleported to a designated AFK zone.
What’s New
1. AFK Credit Earning System
- Players earn AFK credits by being actively engaged in gameplay
- Configurable credit ratios based on permissions (default: 5 minutes active = 1 minute AFK credit)
- Real-time credit accumulation tracking with activity validation
- Maximum credit limits to prevent indefinite accumulation
2. Credit-Based AFK Protection
- When a player goes AFK, the system first consumes available credits
- Credits provide immunity from immediate kick/teleportation
- Once credits are exhausted, player is teleported to designated AFK zone
- Smooth transition from credit consumption to zone teleportation
AFK Credit System
- Earn credits while active; consume credits to delay AFK action.
- Teleport to AFK zone when credits are exhausted;
/afkback
returns you.
WorldGuard Integration
- Zones resolved from regions (reflection, no hard dependency).
- Teleport priority:
zones.afk
→zones.spawn
→credit-system.afk-zone
.
AFK Zone Protection
- Optional damage/PVP/mob-spawn protections near the AFK zone.
SQL History (Optional)
- Track earn/consume/admin/decay transactions when SQL is enabled.
New Placeholder
%antiafkplus_credits_expire_days%
— days until credits expire.
How It Works
- Active players earn credits (ratio-based) up to a configurable cap.
- When AFK is detected, 1 credit/minute is consumed to delay the action.
- At 0 credits, the player is teleported to the AFK zone;
/afkback
returns them.
onAfkStateChange
(MONITOR): stops consumption when returning to ACTIVE.CreditData
(new):- Balance, consumption state, per‑player task, original location (for return).
Configuration (added)
modules:
credit-system:
enabled: false
credit-system:
enabled: false
credit-ratios:
default: "5:1"
vip: "4:1"
premium: "3:1"
admin: "2:1"
max-credits:
default: 120
vip: 180
premium: 240
admin: 480
earning-requirements:
minimum-session-minutes: 5
activity-threshold: 0.3
afk-zone:
enabled: true
world: "world"
location: "0,100,0"
notifications:
credit-earned: true
credit-consumed: true
credit-exhausted: true
return-command:
enabled: true
cooldown-seconds: 10
Messages (added)
messages:
credit-system:
earned: "&a+ &f{minutes}m &7AFK credits earned! &8(&f{total}m &7total)"
consuming-start: "&eUsing AFK credits to delay action..."
consumed: "&c- &f{minutes}m &7AFK credits used &8(&f{remaining}m &7left)"
exhausted: "&c❌ &7AFK credits exhausted. You will be moved."
zone-teleport: "&7[AntiAFK+] &aTeleported to AFK zone."
errors:
invalid-location: "&7[AntiAFK+] &cInvalid AFK zone location configured."
Permissions (declared)
antiafkplus.credit.earn
— earn credits (default true)antiafkplus.credit.use
— use credits to delay AFK action (default true)antiafkplus.credit.ratio.vip|premium|admin
— improved ratios (default false/op)antiafkplus.credit.admin
— full credit administration
Execution Flow
- Active player earns credits according to ratio and limits.
- On AFK, if credits available → cancel action and consume 1/min.
- On activity → stop consumption (no teleport).
- On exhaustion → teleport to AFK zone (zone‑management if present; fallback to
credit-system.afk-zone
).
Compatibility & Performance
- Folia‑safe (no BukkitScheduler in Folia context).
- No changes to AFKManager loop (event‑driven).
- Earning: one global job/min; consumption: per‑player task while AFK with balance.
- Respects
antiafkplus.bypass
.
🎮 Configuration System
New Configuration Section (config.yml
):
# ===============================================================================
# 💰 AFK CREDIT SYSTEM
# ===============================================================================
credit-system:
enabled: true
# Credit earning ratios (active_minutes:credit_minutes)
# For every X minutes of active play, earn Y minutes of AFK credits
credit-ratios:
default: "5:1" # Default: 5 minutes active = 1 minute AFK credit
vip: "4:1" # VIP players: better ratio
premium: "3:1" # Premium: even better ratio
admin: "2:1" # Admin: best ratio
# Credit limits and management
max-credits:
default: 120 # Maximum 2 hours of credits
vip: 180 # VIP: 3 hours max
premium: 240 # Premium: 4 hours max
admin: 480 # Admin: 8 hours max
# Credit expiration system
credit-decay:
enabled: true
expire-after-days: 7 # Credits expire after 7 days of inactivity
warning-days: 2 # Warn players 2 days before expiration
cleanup-interval-hours: 24 # Check for expired credits every 24 hours
# Activity requirements for earning credits
earning-requirements:
minimum-session-minutes: 5 # Must play at least 5 minutes to start earning
activity-threshold: 0.3 # Minimum activity score to earn credits
required-activity-types: 2 # Must perform at least 2 different activity types
anti-abuse-checks: true # Enable pattern detection during credit earning
# AFK zone configuration
afk-zone:
enabled: true
world: "world" # World for AFK zone
location: "0,100,0" # X,Y,Z coordinates
# Optional: yaw,pitch - "0,100,0,0,0"
# Zone protection settings
protection:
prevent-damage: true # Protect players from damage in AFK zone
prevent-pvp: true # Disable PVP in AFK zone
prevent-mob-spawning: true # Prevent hostile mobs
allow-chat: true # Allow players to chat while in AFK zone
show-zone-info: true # Display zone info on teleport
# Return command configuration
return-command:
enabled: true
command-aliases:
- "afkback"
- "afkreturn"
- "returnfromafk"
cooldown-seconds: 10 # Cooldown between uses
max-distance-from-zone: 50 # Maximum distance from AFK zone to use command
validate-original-location: true # Check if original location is still safe
# Auto-return options
auto-return:
on-activity: false # Automatically return when player becomes active
activity-delay-seconds: 30 # Delay before auto-return triggers
# Database integration
database:
enabled: false # Enable persistent credit storage
table-prefix: "afkplus_" # Database table prefix
save-interval-minutes: 5 # How often to save credit data
cleanup-old-records-days: 30 # Remove records older than 30 days
# Notifications and messages
notifications:
credit-earned: true # Notify when credits are earned
credit-consumed: true # Notify when credits are consumed
low-credits-warning: true # Warn when credits are running low
low-credits-threshold: 15 # Warn when less than 15 minutes remain
zone-teleport: true # Notify on AFK zone teleport
successful-return: true # Notify on successful return
# Integration settings
integration:
reward-system-bonus: true # Give credit bonuses through reward system
placeholder-updates: true # Enable placeholder updates
api-access: true # Allow API access for other plugins
event-broadcasting: true # Broadcast credit events for other plugins
New Messages (messages.yml
):
# Credit system messages
credit-system:
earned: "&a+ &f{minutes}m &7AFK credits earned! &8(&f{total}m &7total)"
consumed: "&c- &f{minutes}m &7AFK credits used &8(&f{remaining}m &7left)"
low-warning: "&e⚠ &7Low AFK credits: &f{remaining}m &7remaining"
exhausted: "&c❌ &7AFK credits exhausted! Teleporting to AFK zone..."
zone-teleport: "&7[AntiAFK+] &aTeleported to AFK zone. Use &f/afkback &ato return."
# Return command messages
return:
success: "&7[AntiAFK+] &aReturned to your previous location!"
not-in-zone: "&7[AntiAFK+] &cYou must be in the AFK zone to use this command."
no-saved-location: "&7[AntiAFK+] &cNo saved location found."
unsafe-location: "&7[AntiAFK+] &cYour previous location is no longer safe. Teleported to spawn."
cooldown: "&7[AntiAFK+] &cPlease wait &f{seconds}s &cbefore using this command again."
# Status messages
status:
balance: "&7AFK Credits: &f{minutes}m &8(&f{hours}h {remaining_minutes}m&8)"
ratio: "&7Credit Ratio: &f{active}m &7active = &f{credit}m &7AFK credit"
max-credits: "&7Maximum Credits: &f{max}m"
expires: "&7Credits expire in: &f{days} &7days"
# Error messages
errors:
system-disabled: "&7[AntiAFK+] &cCredit system is disabled."
invalid-location: "&7[AntiAFK+] &cInvalid AFK zone location configured."
🎮 New Commands
Primary Commands:
/afkback
- Return from AFK zone to original location/afkreturn
- Alias for /afkback/afkcredits
- Check current credit balance and information/afkcredits reload
- Reload credit system configuration (admin)
Command Details:
commands:
afkback:
description: Return from AFK zone to your previous location
usage: /afkback
permission: antiafkplus.credit.return
aliases: [afkreturn, returnfromafk]
afkcredits:
description: Check your AFK credit balance
usage: /afkcredits [reload]
permission: antiafkplus.credit.check
permission-reload: antiafkplus.admin.reload
🔐 New Permissions
permissions:
# Credit system core
antiafkplus.credit.earn:
description: Allows earning AFK credits
default: true
antiafkplus.credit.use:
description: Allows using AFK credits
default: true
antiafkplus.credit.return:
description: Allows using return commands
default: true
antiafkplus.credit.check:
description: Allows checking credit balance
default: true
# Credit ratio permissions (determines earning rate)
antiafkplus.credit.ratio.vip:
description: VIP credit earning ratio
default: false
antiafkplus.credit.ratio.premium:
description: Premium credit earning ratio
default: false
antiafkplus.credit.ratio.admin:
description: Admin credit earning ratio
default: op
# Administrative permissions
antiafkplus.credit.admin:
description: Full credit system administration
default: op
children:
- antiafkplus.credit.give
- antiafkplus.credit.take
- antiafkplus.credit.set
- antiafkplus.credit.reset
⚡ New API Methods
Public API Expansion (AntiAFKPlusAPI
):
// Credit management
public long getCreditBalance(Player player);
public boolean hasCredits(Player player, long minutes);
public boolean addCredits(Player player, long minutes);
public boolean consumeCredits(Player player, long minutes);
public boolean setCreditBalance(Player player, long minutes);
// Credit information
public String getCreditRatio(Player player);
public long getMaxCredits(Player player);
public List<CreditTransaction> getCreditHistory(Player player);
public Instant getCreditExpiration(Player player);
// AFK zone management
public boolean isInAFKZone(Player player);
public Location getAFKZoneLocation();
public Location getOriginalLocation(Player player);
public boolean returnFromAFKZone(Player player);
// Credit events
public void registerCreditListener(CreditEventListener listener);
public void unregisterCreditListener(CreditEventListener listener);
🎯 Credit System Logic Flow
1. Credit Earning Process:
Player Active (5 minutes) → Activity Validation → Credit Calculation → Credit Award
↓
Activity Score Check → Pattern Detection → Anti-Abuse Validation → Credit Storage
2. AFK Detection with Credits:
Player Goes AFK → Check Credit Balance → Has Credits?
↓
Yes: Consume Credits → Continue Monitoring
↓
No: Save Location → Teleport to AFK Zone → Enable Return Command
3. Return Process:
Player Uses /afkback → Validate in AFK Zone → Check Original Location Safety
↓
Safe: Teleport Back → Clear AFK Status → Success Message
↓
Unsafe: Teleport to Spawn → Warning Message
✅ Benefits and Features
Player Benefits:
- Earn AFK Time: Active gameplay is rewarded with AFK allowance
- Flexible AFK: No immediate kicks, gradual credit consumption
- Safe Return: Always able to return to original location
- Transparent System: Clear feedback on credit earning and consumption
Server Owner Benefits:
- Configurable Ratios: Adjust credit earning rates by permission groups
- Abuse Prevention: Anti-pattern detection during credit earning
- Zone Management: Designated safe AFK areas
- Database Support: Optional persistent credit storage
Technical Benefits:
- Modular Design: Integrates seamlessly with existing module system
- Performance Optimized: Minimal impact on server performance
- API Complete: Full programmatic access for other plugins
- Event System: Comprehensive events for custom integrations
🔄 Integration Points
Existing System Integration:
- AFKManager: Credit verification before actions
- PatternDetector: Anti-abuse during credit earning
- ModuleManager: Full module lifecycle support
- PlaceholderAPI: Credit balance and status placeholders
- Reward System: Bonus credits through reward intervals
- Zone Management: AFK zone configuration and management
🧪 Testing Scenarios
Core Functionality Tests:
- Credit Earning: Verify active play generates credits at correct ratios
- Credit Consumption: Confirm AFK periods consume credits properly
- Zone Teleportation: Test teleport when credits exhausted
- Return Command: Validate return to original location
- Permission Integration: Test different ratios by permission groups
Edge Case Testing:
- Location Safety: Handle unsafe original locations
- World Changes: Manage cross-world teleportation
- Server Restart: Verify credit persistence (if database enabled)
- Concurrent Usage: Test multiple players earning/using credits
- Configuration Reload: Ensure system adapts to config changes
Compatibility
- Minecraft: 1.16 - 1.21.8+ (unchanged)
- Java: 17+ (unchanged)
- Platforms: Paper, Spigot, Bukkit, Purpur, Folia (full compatibility)
- Dependencies: None required, Vault optional for database features
Migration and Upgrade
Automatic Migration:
- Existing configurations remain unchanged
- Credit system starts disabled by default
- No breaking changes to existing functionality
- Seamless integration with current AFK detection
Manual Configuration:
- Server owners must enable
credit-system.enabled: true
- Configure AFK zone location
- Adjust credit ratios for permission groups
- Customize messages and notifications
Version: 2.5
Release Date: 11/09/2025
Compatibility: Minecraft 1.16 - 1.21.8+
Java: 17+
AntiAFKPlus v2.4.2 Changelog
🎯 Complete Folia 1.21.8 Compatibility
Problem Resolved
Issue: The plugin failed to initialize on Folia 1.21.8 with UnsupportedOperationException
(due to BukkitScheduler usage) and reflection errors in runAtFixedRate
.
Root Cause: PlatformScheduler was using incorrect method signatures for Folia's GlobalRegionScheduler
API, causing reflection failures during task scheduling.
Error Stack:
Failed to schedule Folia repeating task: io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler.runAtFixedRate
Module system initialization failed: Cannot schedule repeating task on Folia without working scheduler
Technical Solution Implemented
🔧 Correct Folia Method Signatures
- Before:
runAtFixedRate(plugin.getClass(), Consumer.class, long.class, long.class, TimeUnit.class)
- After:
runAtFixedRate(Plugin.class, Consumer.class, long.class, long.class)
- Key: no
TimeUnit
parameter and timing in ticks directly (no ms conversion)
🛡️ Stronger Fallback
- Always create a
ScheduledExecutorService
fallback before reflection - Graceful degradation if native Folia API fails
- Dedicated daemon thread pool for fallback operations
⚡ Additional API Fixes
- Adjusted
runDelayed
andrun
signatures for single-execution tasks - Corrected
RegionScheduler
andEntityScheduler
parameter types - Consistent use of
Consumer<ScheduledTask>
What’s Fixed
- ✅ Full Folia 1.21.8 compatibility: initializes and runs correctly
- ✅ No
UnsupportedOperationException
: removed BukkitScheduler usage in Folia context - ✅ Timers and tasks migrated to
PlatformScheduler
: pattern analysis, detectors and checks operational - ✅ Commands and AFK detection working
- ✅ Zero impact on other servers: Paper, Spigot, Bukkit, Purpur unchanged
Compatibility
- Paper/Spigot/Bukkit: ✅ unchanged, functionality preserved
- Purpur: ✅ compatible via Paper base
- Folia 1.21.8+: ✅ complete native support with correct API usage
Version: 2.4.2
Release Date: 2025-09-09
Compatibility: Minecraft 1.16 - 1.21.8
Java: 17+
Upgrade Instructions
- Download AntiAFKPlus v2.4.2
- Replace the old JAR in
/plugins
- Restart the server
- No configuration changes required
- On Folia, verify the log: “✅ Folia support initialized successfully”
AntiAFKPlus v2.4.1 Changelog
🐛 Critical Bug Fix
Issue Resolved
Problem: Players were being kicked/teleported repeatedly every 5 seconds instead of only once after reaching the AFK timeout threshold.
Root Cause: The AFK check task was calling the kick/teleport action repeatedly during each check interval (every 5 seconds) instead of executing it only once per AFK session.
Solution Implemented
🔧 Technical Fix
- Added action state tracking to prevent repeated kick/teleport actions for the same AFK session
- Implemented safety delay to prevent immediate actions upon AFK detection
- Added automatic cleanup of action state when players become active again
- Maintained full compatibility with all existing features and API
✅ Result
- Players are now kicked/teleported only once after reaching their AFK timeout
- AFK timeout configurations (like
default-afk-time: 600
) now work correctly - All other plugin functionality remains unchanged and fully operational
Version: 2.4.1
Release Date: 2025-09-06
Type: Critical Bug Fix
Compatibility: Minecraft 1.16 - 1.21.8
Java: 17+
Upgrade Notes
- No configuration changes required
- Fully backward compatible
- Simply replace the JAR file and restart your server
AntiAFKPlus v2.4 Changelog
🎯 Large AFK Pool Detection Enhancement
Problem Identified
Issue: Players were bypassing AFK detection by creating large AFK pools (20x10+ blocks) that circumvented existing detection systems.
Root Cause:
- Current detection focused on small confined spaces (≤5x5 blocks) and water circles (≤3 block radius)
- Large pools allowed players to move naturally via water currents without manual input
- System detected movement but couldn't distinguish between manual keystrokes and automatic water current movement
Solution Implemented
🔧 New Detection Features
1. Keystroke Timeout Detection
- Added detection for players who don't provide manual keyboard input for extended periods
- Distinguishes between manual WASD movement and automatic water current movement
- Configurable timeout threshold (default: 3 minutes)
2. Large AFK Pool Pattern Recognition
- Expanded detection to identify pools between 5x5 and 25x25 blocks
- Analyzes movement patterns to identify water current automation
- Multi-factor validation prevents false positives
3. Enhanced Movement Analysis
- Velocity analysis to detect consistent water current speeds
- Direction change analysis to identify artificial vs natural movement
- Automatic vs manual movement classification
📋 Technical Changes
Files Modified:
MovementListener.java
: Added keystroke detection and movement analysisPatternDetector.java
: Implemented large pool detection algorithmsconfig.yml
: Added configuration options for new detection methods
New Configuration Options:
pattern-detection-settings:
large-pool-threshold: 25.0 # Maximum area for large AFK pools
keystroke-timeout-ms: 180000 # 3 minutes without manual input
automatic-movement-velocity-threshold: 0.15 # Water current detection
🎮 Detection Logic
Large AFK Pool Detection Criteria:
- Movement area > 5x5 but < 25x25 blocks
- Player in water for extended periods
- Movement patterns consistent with water currents
- No manual keystrokes detected for 3+ minutes
Only triggers AFK when ALL criteria are met, ensuring legitimate gameplay is not affected.
✅ Benefits
- Closes bypass loophole: Large AFK pools (20x10+) are now detected effectively
- Maintains accuracy: Multi-factor validation prevents false positives
- Configurable: Server owners can adjust thresholds based on their needs
- Performance optimized: Minimal impact on server performance
- Backward compatible: All existing detection methods remain unchanged
Version: 2.4
Release Date: 2025-08-07
Compatibility: Minecraft 1.16 - 1.21.8
Java: 17+
Update 2.3
World Teleportation Fix
AFK players can now teleport instead of being kicked:
- Enabled the necessary AFK zone modules
- Set your coordinates: world, 167, 104, 206
Safety features included:
- Validation of existing world
- Fallback to spawn if there are coordinate errors
- Protection against teleporting to the void
Now checks your spawn zone before the kick >>> Read the action: teleport config >>> Set the event to teleport instead of kicking
Bug Fixes
- Fixed an error with the reload command.
- Fixed an error in the asynchronous data console.
- Fixed an identified memory leak issue.
It is recommended to update to the latest available version to avoid critical errors. No further updates or fixes are required.
🚀 AntiAFKPlus v2.1.0
Bug Fix Release - Essential Improvements
🐛 Bug Fixes
⚙️ Configuration Management
- Fixed
/afkplus reload
command - Now properly reloads all configuration files and settings - Improved config validation - Better error handling and validation during reload
- Fixed startup messages - Removed color codes from console logs for cleaner output
🎣 AFK Detection Improvements
- Added fishing detection - Fishing machines and AFK fishing farms are now properly detected
- Enhanced activity tracking - PlayerFishEvent now triggers anti-AFK systems
- Better automation detection - Catches fish, items, and reel-in actions count as player activity
🔧 Code Quality
- Version consistency - Updated all version references to 2.1
- Cleaner logging - Console messages no longer show formatting codes
- Import optimization - Better code organization and reduced redundancy
AntiAFKPlus v2.0
Major Release - Complete Plugin Redesign
What's New
️ Modular Architecture Enable/disable features independently - Only use what you need 17 different modules including core detection, pattern analysis, rewards, and integrations Zero performance impact from disabled modules Easy customization for any server type
Multi-Platform Support Auto-detection of Folia, Paper, Spigot, Bukkit, and Purpur Automatic fallback ensures compatibility on any server Future-proof design for upcoming Minecraft versions
Bedrock Edition Support Automatic detection of Bedrock players via Floodgate/Geyser Touch-friendly interfaces and menu adaptations Optimized experience for mobile and console players
⚡ Performance Improvements
Zero-Lag Operation 50% less CPU usage compared to v1.x Adaptive check intervals based on server load Smart caching system reduces database queries by 80% Object pooling minimizes garbage collection impact
Real-Time Monitoring Live performance metrics and TPS impact tracking Automatic optimization when server load increases Memory usage limits prevent server strain Per-module performance tracking
Advanced Detection Features
Pattern Recognition Bot detection for circular movements and confined spaces Autoclick/macro detection with configurable sensitivity AFK pool detection for common farming setups False positive prevention with smart algorithms
Behavioral Analysis Activity scoring system tracks 18 different player actions Movement pattern analysis detects repetitive behavior Micro-movement detection catches subtle bot activities Learning algorithms improve detection over time
Enhanced Configuration
⚙️ Simplified Setup Auto-configuration for most servers Configuration validation prevents errors Automatic migration from v1.x settings Hot-reload for all settings without restart
️ Advanced Options Per-world AFK settings with inheritance Permission-based timeouts for different player groups Custom warning intervals and messages Zone-based AFK management with WorldGuard integration
Integrations & API
New Integrations WorldGuard - Region-based AFK settings Vault - Economy integration for rewards DiscordSRV - Discord notifications for AFK events Enhanced PlaceholderAPI - 15+ new placeholders
Professional API 80+ API methods for developers Event system with 12 different event types Async operations for performance-critical applications Thread-safe design for multi-threaded plugins
️ Player Protection Features
AFK Player Safety Invulnerability system prevents damage while AFK Movement restriction options to prevent exploitation Interaction blocking to prevent griefing Automatic position restoration when returning
Reward System AFK rewards for idle time (configurable) Anti-abuse measures prevent exploitation Economic integration with Vault-compatible plugins Daily limits and playtime requirements
Visual & UI Improvements
✨ Enhanced Effects Hologram support (DecentHolograms, HolographicDisplays) Particle effects for AFK players Tab list modifications show AFK status Customizable visual indicators
Mobile-Friendly Interface Touch-optimized menus for Bedrock players Simplified layouts for smaller screens Gesture-friendly controls for mobile devices
Quality of Life Improvements
Better Commands
Improved /afk list
with sorting and filtering
Status command shows plugin health and performance
Debug commands for troubleshooting
Auto-completion for all commands
Enhanced Analytics Detailed statistics tracking for administrators Export functionality for data analysis Performance reports for optimization Usage patterns help configure optimal settings
Bug Fixes & Stability
️ Major Fixes Memory leak in player tracking system resolved Thread safety issues fixed for high-load servers Edge cases in AFK detection improved Configuration reload now works correctly in all scenarios
Security Improvements Input validation prevents configuration exploits Permission checks strengthened across all features API access properly secured for third-party plugins
Migration & Compatibility
Automatic Migration Seamless upgrade from v1.x with automatic config conversion Backup creation before migration for safety Setting preservation maintains your customizations Rollback option if needed
✅ Backward Compatibility API compatibility maintained for existing plugins Command structure unchanged for user familiarity Permission system extended but compatible
Installation Notes
Installation Steps:
Backup your server before upgrading
Replace the old JAR with the new v2.0 file
Restart your server (reload not supported for major versions)
Review new config options in config.yml
Test AFK detection with different player scenarios
Minimum Requirements: Java 17+ (recommended: Java 21) Minecraft 1.16+ (tested up to 1.21.5) 4GB+ RAM for optimal performance with all modules
Links & Support
Documentation: Updated wiki with all new features Discord Support: https://discord.gg/xKUjn3EJzR Bug Reports: GitHub Issues ⭐ Rate & Review: Help others discover this plugin!
Download AntiAFKPlus v2.0 now and experience the most advanced AFK management system for Minecraft!
AntiAFKPlus v1.4 - Major Refinements & New Features!
This update brings a host of internal improvements, new features, and enhanced configurability to AntiAFKPlus, making it more stable, user-friendly, and powerful!
✨ New Features & Major Improvements
Advanced Autoclicker Detection:
Detection parameters (click window, threshold, minimum idle time) are now fully configurable in config.yml. Define specific actions upon detection: LOG (default), SET_AFK, or KICK the player.
Command Tab Completion: Enjoy easier command usage with tab completion for /afk and /afkplus subcommands and arguments.
Enhanced Developer API:
Added getTimeSinceLastActivity(Player) method to the API.
Improved reliability and predictability of markAsAFK(Player) and unmarkAFK(Player) API calls.
🔧 Enhancements & Optimizations
- Core System Refactoring: Significant internal code restructuring for better stability, performance, and easier future development.
- Robust Task & Listener Management: All plugin tasks and event listeners are now managed more effectively, ensuring proper startup and shutdown, preventing potential errors or memory leaks.
- Optimized Event Handling: Refined player activity listeners (movement, interaction, etc.) for more accurate AFK state updates.
- Clearer Logging: Improved console logging for AFK events and debug information.
🐛 Bug Fixes
- Addressed various internal logic issues for more consistent AFK state transitions (manual vs. automatic).
- Corrected method calls for PlaceholderAPI integration, ensuring placeholders like %antiafkplus_afktime% work reliably.
- Resolved minor bugs in command processing and message display.
- Ensured proper cleanup of player-specific data on quit/kick and for internal listeners.
⚙️ Configuration & Permissions
Complete Message Customization: Virtually all messages sent to players are now configurable via messages.yml.
New Configuration Options: broadcast-afk-state-changes: Toggle global "Player is now AFK" / "Player is no longer AFK" messages.
Full externalization of autoclicker detection settings.
Granular & Documented Permissions:
Introduced more specific permissions (e.g., antiafkplus.reload, antiafkplus.status.check, antiafkplus.bypass.autoclick, antiafkplus.bypass.itempickup). config.yml and plugin.yml now feature improved comments and a comprehensive permission overview for easier server administration.
Before Updating:
-
Please backup your existing AntiAFKPlus configuration files (config.yml, messages.yml).
-
Review the updated config.yml and messages.yml generated by v1.4 and transfer your settings. New options have been added!
-
Thank you for using AntiAFKPlus! We hope you enjoy these improvements.
🔄 AntiAFKPlus v1.3 – Smarter, Stronger, Safer
This update brings quality-of-life improvements and intelligent detection systems to enhance AFK protection for modern Minecraft servers.
✅ New Features
🧠 Autoclick Detection (Experimental)
Detects suspicious clicking behavior without movement — can optionally trigger AFK handling.
🎯 AFK Item Pickup Blocker
Prevents AFK players from picking up items automatically. (Toggle in config.yml)
🧩 New Placeholder: %antiafkplus_afktime%
Shows how long the player has been inactive in seconds.
🌍 disabled-worlds Support
More flexible world control — disable AFK detection in specific worlds (overrides enabled-worlds).
🧪 Improved Debug System
Enable debug: true in config.yml to log warnings, kicks, AFK changes, and detections to console.
- 🛠 Configuration Changes
- ➕ New config option: block-pickup-while-afk: true
- ➕ New config option: autoclick-detection: true
- 🧠 Messages are fully externalized in messages.yml
- 📁 Updated config.yml and messages.yml are auto-generated if missing
- 🔒 Safe handling of false positives (autoclick and AFK check now respect movement better)
🧰 Technical / API
✅ Public API now includes:
getLastMovement(Player) for %afktime% placeholder
AFK toggle and state read access
🔄 Full PlaceholderAPI support with %antiafkplus_status% and %antiafkplus_afktime%
📊 bStats remains fully functional with Plugin ID 25664
📢 Reminder
This plugin is free and open-source. If you're enjoying it, please consider:
- 🌟 Leaving a positive review
- 🧪 Joining the Support Discord
- 💡 Suggesting features for future versions (GUI, MySQL, Holograms...)
✅ Tested on Paper 1.16.5 to 1.21.5 💼 Built with performance and clarity in mind.
🔄 AntiAFKPlus v1.2 – Update Changelog
A smarter and more flexible AFK system is here.
✨ New Features
-
✅ Voluntary AFK Limit Players can only stay in manual AFK mode (/afk) for a configurable maximum time.
-
✅ messages.yml support All messages are now fully customizable in a separate messages.yml file.
-
✅ New Command: /afk list Lists all currently AFK players online. Permission: antiafkplus.list.
-
✅ New Command: /afk status Shows if you or another player is currently AFK or active.
-
✅ Softdependency for PlaceholderAPI Includes placeholder %antiafkplus_status% (returns "AFK" or "ACTIVE").
-
✅ Reload messages.yml with /afkplus reload
-
✅ World Filtering Enhanced You can now use disabled-worlds: in addition to enabled-worlds: (If both are set, disabled-worlds: takes priority)
-
✅ Debug Mode Enable debug: true in config to log AFK events in console for testing.
🛠 Improvements
Improved internal checks for AFK manual mode expiration.
Better separation of config and messages logic.
Enhanced permission control and command handling.
🧩 Compatibility
✅ Supports 1.16 – 1.21.5
✅ Works with Paper, Purpur, Spigot
✅ PlaceholderAPI ready
📊 Metrics via bStats (Plugin ID: 25664)
#💬 Need help? Join our support Discord:
🔔 Don’t forget to leave a ★ on Spigot if you enjoy the plugin!
🟢 Changelog – AntiAFKPlus v1.1
🎉 AntiAFKPlus v1.1 is here with major improvements and new features!
This update focuses on customizability, stability, and player experience.
✨ New Features
- ✅ messages.yml added – fully customizable and supports colors
- ✅ /afk list command to see who is AFK (with configurable permission)
- ✅ Configurable limit for voluntary AFK (/afk) with auto-exit
- ✅ Developer API included for external plugin integration
- ✅ Configurable permission node for /afk list
⚙️ Improvements
- 🔹 Broadcasts now correctly show on AFK enter/exit
- 🔹 Kick messages are now loaded from config properly
- 🔹 Warnings before kick work at all configured intervals
- 🔹 Improved AFK detection logic for login edge cases
- 🔹 Cleaner structure, ready for future premium edition
🐛 Fixes
- 🛠️ Fixed players getting stuck in AFK kick loop after reconnect
- 🛠️ Fixed warnings not appearing due to timing errors
- 🛠️ Fixed missing broadcast messages on AFK toggle
📚 How to Update
- Stop your server
- Replace your old JAR with the new one
- Delete messages.yml if it doesn't generate (only once)
- Restart and reconfigure as needed
- Use /afkplus reload to reload configs anytime
- ✅ Supports Minecraft 1.16 to 1.21.5
- 🧠 Lightweight, async-safe, and open source
- 📈 Includes bStats (optional and anonymous)
- 🛠️ Ready for integrations via developer API
- 🧩 PlaceholderAPI support coming soon in next update
✨ AntiAFKPlus
Smart and configurable AFK management for your Minecraft server!
—
What is AntiAFKPlus?
AntiAFKPlus is a lightweight yet powerful plugin that automatically kicks inactive players after a configurable period.
Warn players before kicking, set per-permission timeouts, let players go AFK manually, and keep your server clean and fair.
Perfect for Survival, Factions, Minigames, Hub, or Network servers.
—
️ Main Features ⏳ Configurable AFK kick time (global and per permission) ️ Bypass permission to exclude staff or VIPs ⚡ Multi-warning system before kick (custom intervals like 60s, 30s, 10s) Broadcasts when players enter or leave AFK ✋ Manual AFK toggle with the /afk command ️ Per-world control: enable AFK checks only in selected worlds Fully customizable messages with {player} and {seconds} placeholders Reload config instantly using /afkplus reload Built-in bStats support ✅ Supports Minecraft versions 1.16 to 1.21+