Anti AFK System

A complete Anti-AFK plugin for Minecraft Paper 1.21.10 that automatically detects and kicks inactive players.

88

Quick challenge

How far can you run before the mobs catch you?

Anti AFK System

AntiAFK Plugin

A complete Anti-AFK plugin for Minecraft Paper 1.21.10 that automatically detects and kicks inactive players.

✨ Features

- 🎯 Broadcast Messages - Detects players who are inactive for too long - ⚠️ Broadcast Messages - Warns players before they get kicked - 🎮 Broadcast Messages - Players can mark themselves as AFK with `/afk` - ⚙️ Broadcast Messages - Customize timeouts, messages and detection - 🛡️ Broadcast Messages - Staff can bypass AFK detection - 📢 Broadcast Messages - Server is informed when players go AFK or return

📋 Requirements

- Java: 1.21.10 - Java: Paper (or forks like Purpur) - Java: 21 or higher

📥 Installation

1. Download the latest `AntiAFK-1.0.0.jar` from releases 2. Place the JAR file in your server's `plugins` folder 3. Restart your server 4. Customize the configuration in `plugins/AntiAFK/config.yml` 5. Use `/afkreload` to reload the configuration

⚙️ Configuration

The configuration is located in `plugins/AntiAFK/config.yml`:

```yaml

Time in seconds before a player is considered AFK

afk-timeout: 300

Time in seconds before the warning is given

warning-time: 270

Check interval in ticks (20 ticks = 1 second)

check-interval: 100

Messages (use & for color codes)

messages: kick: "&cYou have been kicked for inactivity!" warning: "&eWarning: You will be kicked in {time} seconds for inactivity!" afk-enabled: "&7You are now AFK" afk-disabled: "&7You are no longer AFK" player-afk: "&7{player} is now AFK" player-back: "&7{player} is back" reload: "&aConfiguration reloaded!" no-permission: "&cYou don't have permission to do this!"

Actions that reset AFK status

detect-movement: true detect-chat: true detect-block-break: true detect-block-place: true detect-interact: true detect-damage: true ```

Configuration Options

| Option | Default | Description | |--------|---------|-------------| | `afk-timeout` | 300 | Seconds before player gets kicked | | `warning-time` | 270 | Seconds before warning is given | | `check-interval` | 100 | Ticks between each check (20 = 1 sec) | | `detect-movement` | true | Detect movement as activity | | `detect-chat` | true | Detect chat as activity | | `detect-block-break` | true | Detect block breaking as activity | | `detect-block-place` | true | Detect block placing as activity | | `detect-interact` | true | Detect interactions as activity | | `detect-damage` | true | Detect damage as activity |

🎮 Commands

| Command | Description | Permission | |---------|-------------|------------| | `/afk` | Toggle your AFK status manually | `antiafk.command` | | `/afkreload` | Reload the plugin configuration | `antiafk.reload` |

🔐 Permissions

| Permission | Default | Description | |------------|---------|-------------| | `antiafk.command` | true | Use the `/afk` command | | `antiafk.bypass` | op | Bypass AFK detection (for staff) | | `antiafk.reload` | op | Reload the configuration |

Permission Examples

LuckPerms: ```bash

Give moderators bypass permission

lp group moderator permission set antiafk.bypass true

Give admins reload permission

lp group admin permission set antiafk.reload true ```

🔍 How it Works

1. Broadcast: The plugin tracks when players were last active 2. Broadcast: Every X ticks (configurable) it checks if players have been inactive too long 3. Broadcast: At `warning-time` seconds the player receives a warning 4. Broadcast: At `afk-timeout` seconds the player gets kicked 5. Broadcast: Other players are informed when someone goes AFK or returns

Detected Activities

The plugin detects the following activities (if enabled in config): - ✅ Movement (position change, not just head rotation) - ✅ Chat messages - ✅ Breaking blocks - ✅ Placing blocks - ✅ Interactions (buttons, doors, etc.) - ✅ Taking damage - ✅ Executing commands

📝 Examples

Example 1: Default Usage

``` Player is inactive for 4 minutes → At 4:30 minutes: "⚠️ Warning: You will be kicked in 30 seconds for inactivity!" → At 5:00 minutes: Player gets kicked ```

Example 2: Manual AFK

``` Player: /afk → "You are now AFK" → Server: "Player123 is now AFK"

Player moves → "You are no longer AFK" → Server: "Player123 is back" ```

Example 3: Staff Bypass

``` Staff with antiafk.bypass permission → Never gets kicked, regardless of inactivity ```

🐛 Troubleshooting

Players are not getting kicked: - Check if `afk-timeout` is set correctly - Verify players don't have `antiafk.bypass` permission - Verify the plugin is loaded correctly with `/plugins`

Warnings don't work: - Make sure `warning-time` is less than `afk-timeout` - Check the console for errors

Config changes don't work: - Use `/afkreload` after editing the config - Or restart the server

📄 License

This project is open source and available for personal and commercial use.

---

Made with ❤️ for the Minecraft community

ADS