Перейти к содержимому
Mineforgian

AntiAFKPlus

Smart and configurable AFK management for your server!

Загрузки
2K
Подписчики
3
Обновлён
5 апреля 2026 г.
Лицензия
All-Rights-Reserved

Опубликован 29 апреля 2025 г.

Исходный код

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+

    Installation

  1. Download the latest .jar file
  2. Place it into your /plugins/ folder
  3. Restart your server or use /reload
  4. Edit /plugins/AntiAFKPlus/config.yml as desired —

Commands

/afkplus reload Reloads configuration without restarting Permission: antiafkplus.admin

/afk Manually toggle AFK status Permission: antiafkplus.afk —

Permissions

  • antiafkplus.bypass – Exempts player from all AFK checks
  • antiafkplus.admin – Allows use of /afkplus reload
  • antiafkplus.afk – Allows manual AFK toggle using /afk
  • antiafkplus.time.600 – 10 minutes AFK timeout
  • antiafkplus.time.900 – 15 minutes AFK timeout
  • antiafkplus.time.1800 – 30 minutes AFK timeout

— ️** Configuration Example**

Default settings:

default-afk-time: 300
afk-check-interval-seconds: 5
afk-warnings:

[*]60
[*]30
[*]10

messages: afk-enter: "&7{player} is now AFK."
afk-exit: "&a{player} is no longer AFK."
kick-warning: "&eYou will be kicked in {seconds} seconds for being AFK!"
kicked: "&cYou have been kicked for being AFK."

Use & color codes as usual. Placeholders like {player} and {seconds} are replaced automatically.

Developer API

AntiAFKPlus provides a simple and public API for developers. You can check if a player is AFK or force AFK/return.

Example usage:

AntiAFKPlus plugin = (AntiAFKPlus) Bukkit.getPluginManager().getPlugin("AntiAFKPlus"); AntiAFKPlusAPI api = plugin.getAPI();

if (api.isAFK(player)) { player.sendMessage("You are AFK!"); } 

See AntiAFKPlusAPI.md for full documentation.

Metrics

This plugin uses bStats.org to collect anonymous usage statistics. You can disable it in the /plugins/bStats/config.yml file if desired.

Why Choose AntiAFKPlus?

  1. Lightweight and optimized
  2. Highly configurable for any server
  3. Multi-version support (1.16–1.21+)
  4. Clean code and well-structured
  5. Professional notifications and UX
  6. Designed for performance and simplicity

Coming Soon in the Premium Version

  • ⭐ MySQL support
  • ⭐ Teleport to lobby or spawn instead of kicking
  • ⭐ Anti-autoclicker and AFK-farming protection
  • ⭐ DecentHolograms / GHolo integration
  • ⭐ Kick/AFK logging system
  • ⭐ Extended PlaceholderAPI support

Support development by upgrading to the Premium version soon!

Support & Contact

GitHub: https://github.com/koyere/AntiAFKPlus

Discord: https://discord.gg/xKUjn3EJzR

✨ Keep your server clean, fair, and professional with AntiAFKPlus! ✨

Ченджлог

2.9.5Релиз1.21.11, 26.1, 26.1.1 · 5 апреля 2026 г.

AntiAFKPlus v2.9.5 Compatibility Compatible with Minecraft Java Edition 26.1 and 26.1.1 Changes 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.

2.9.4Релиз1.21.9, 1.21.10, 1.21.11 · 28 января 2026 г.

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.

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.

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
linear-movement-exclusion: true
linear-movement-threshold: 0.3
min-direction-variance: 0.15
activity-grace-period-ms: 60000

# 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

  • False positives when running through forests, tunnels, and paths
  • Incorrect kicks when exploring own bases
  • Violation accumulation during normal gameplay

Compatibility

  • Minecraft: 1.16 - 1.21.11
  • Servers: Bukkit, Spigot, Paper, Purpur, Folia
  • Java: 17+
  • Breaking Changes: None

API Changes

New methods in ConfigManager:

  • getActivityGracePeriodMs()
  • getLinearMovementThreshold()
  • getMinDirectionVariance()
  • isLinearMovementExclusionEnabled()
2.9.3Релиз1.21.9, 1.21.10, 1.21.11 · 31 декабря 2025 г.

AntiAFKPlus v2.9.3 — AFK Player Protection System & PlaceholderAPI Fix

Release type: Feature & Bugfix Compatibility: Minecraft 1.16 – 1.21.10 | 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

🎯 Recommended Settings for Different Server Types

PvP Servers:

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

  1. Download AntiAFKPlus v2.9.3
  2. Place in /plugins folder
  3. Restart server
  4. Configure protection settings in config.yml
  5. Customize messages in messages.yml

Upgrading from Previous Versions

From v2.9.2 or earlier:

  1. Replace JAR file with v2.9.3
  2. Manual Config Update Required: Add the new player-protection section to your config.yml (see configuration above)
  3. Manual Messages Update Required: Add the new protection messages to your messages.yml (see configuration above)
  4. Restart server
  5. 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

  1. Set yourself AFK with /afk
  2. Have another player try to hit you (should be blocked)
  3. Try taking fall damage (should be blocked if configured)
  4. Test forced movement prevention (if enabled)
  5. 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+

2.9.2Релиз1.21.9, 1.21.10, 1.21.11 · 19 декабря 2025 г.

AntiAFKPlus v2.9.2 — Dynamic Credit Group Detection & Multi-Server Documentation

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 credit-ratios and max-credits config sections
  • No More Hardcoded Limitations: Previously only supported admin, premium, and vip groups — 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 ConfigurationSection reading for group detection
  • Implemented intelligent caching system for group priority calculations
  • Cache automatically clears on /afkplus reload for 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-prefix config option to separate credit tables per server
  • Configuration Examples: Step-by-step guides added to config.yml and README.md
  • New Documentation File: MULTI_SERVER_DOCUMENTATION.md with 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

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):

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!

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 to plus in 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 with AntiAFKPlus 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 in config.yml
  4. NEW: Check config.yml for multi-server table-prefix examples if you run multiple servers
  5. Reload with /afkplus reload to apply changes
  6. Enable debug: true in config to verify group detection

Existing admin, premium, and vip groups 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 different table-prefix values in each server's config.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+

2.9.1Релиз1.21.8, 1.21.9, 1.21.10 · 17 ноября 2025 г.

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

  1. Replace the old JAR with AntiAFKPlus v2.9.1.
  2. Reload with /afkplus reload or restart.
  3. 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+

2.9Релиз1.21.8, 1.21.9, 1.21.10 · 14 ноября 2025 г.

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

  1. Replace the old JAR with AntiAFKPlus v2.9
  2. Optional: Configure afk-windows section in config.yml to enable time-based protection
  3. Optional: Customize the afk-window-active message in messages.yml for localization
  4. 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+

2.8.2Релиз1.21.8, 1.21.9, 1.21.10 · 7 ноября 2025 г.

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.

2.8.1Релиз1.21.8, 1.21.9, 1.21.10 · 20 октября 2025 г.

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

Комментарии

Загружаем…