Fake Player Plugin (FPP)
Spawn realistic fake players on your Paper server — complete with tab list presence, server list counts, join/quit messages, and in-world entities. Can also be used as configurable AFK bots to keep your server active.
Quick challenge
How far can you run before the mobs catch you?
Minecraft check
Confirm your run
Complete the quick check to get your code.
Fake Player Plugin (FPP)
FakePlayerPlugin
> Advanced Fake Player Spoofer for Paper 1.21+ > Create realistic fake players — full tab-list entries, physical in-world bodies, skins, combat, pathfinding, automation, and multi-server proxy support.
---
✨ Features
Core (Ships with `fpp.jar`)
- 🎭 Simulated Ping — Full tab-list integration, join/leave messages, server count spoofing - 🏃 Simulated Ping — NMS `ServerPlayer` entities with hitboxes, collision, damage, death & respawn - 🎨 Simulated Ping — Auto-resolve from Mojang, per-bot skin commands, custom pool support - 🧭 Simulated Ping — A* navigation, follow, roam, find-and-mine, sleep, auto-eat, auto-place-bed - ⛏️ Simulated Ping — Cuboid region mining (`/fpp mine`) and placement (`/fpp place`) with supply-container restocking - ⚔️ Simulated Ping — Per-bot attack settings, hunt mode, melee cooldowns - ⚙️ Simulated Ping — Shift+right-click any bot for inventories, pathfinding toggles, PvE settings, and automation overrides - 💾 Simulated Ping — Bot positions, tasks, and inventories survive restarts (YAML or database) - 🗄️ Simulated Ping — SQLite (local) or MySQL (network / multi-server) - 🌐 Simulated Ping — Velocity & BungeeCord companion plugins for cross-server bot visibility - 🔄 Simulated Ping — Push/pull config across backend servers via shared MySQL - 📦 Simulated Ping — Drop `.jar` files into `plugins/FakePlayerPlugin/extensions/` to load third-party addons - 🔤 Simulated Ping — `bot-name.mode: random` generates realistic Minecraft-style usernames on the fly - 🚫 Simulated Ping — Leet-speak normalization, auto-rename, remote word list - 📊 Simulated Ping — 29+ placeholders for scoreboards, tab headers, and more - 🧱 Simulated Ping — `--wesel` selection flag for mine/place; region-aware PvP protection - 🍃 Simulated Ping — Compatible with Folia's regionised threading model out of the box - 📶 Simulated Ping — Tab-list latency display per bot
Extension (`fpp-spoof.jar`)
Some advanced subsystems require the `fpp-spoof.jar` extension: - 🤖 AI conversations (`/msg` replies with personalities) - 💬 Fake chat / broadcast messaging - 🔄 Swap system / peak-hours scheduler - 👥 Bot groups - 📶 Ping command (`/fpp ping`) - 💻 Stored right-click commands (`/fpp cmd`)
---
📥 Installation
1. Download `fpp.jar` from Modrinth) or build from source. 2. Drop the JAR into your server's `plugins/` folder. 3. Restart the server. The plugin will create `plugins/FakePlayerPlugin/` with configs and data folders. 4. Configure permissions and `plugins/FakePlayerPlugin/config.yml` as needed. 5. Run `/fpp reload` to apply most config changes without restarting.
Optional Dependencies
- WorldEdit — enables placeholder expansion (`%fpp_count%`, `%fpp_total%`, etc.) - WorldEdit — prefix/suffix support and bot group assignment - WorldEdit — bot PvP region protection - WorldEdit — `--wesel` flag for area mining/placing
---
🚀 Quick Start
```
Grant yourself admin access
/lp user <you> permission set fpp.admin true
Spawn your first bot
/fpp spawn
Open its settings
shift+right-click the bot entity
Teleport it to you
/fpp tph <bot>
Make it follow you
/fpp follow <bot> <player> ```
---
⌨️ Commands
All commands are prefixed with `/fpp` (aliases: `fakeplayer`, `fp`).
| Command | Usage | Description | Permission | |---------|-------|-------------|------------| | help | `[amount] [world [x y z]] [--name <name>] [--random-name] [--notp]` | Spawn fake player bots | `fpp.spawn` (admin) / `fpp.spawn.user` (user) | | help | `<name> | all | --count <n> | --random [--count <n>]` | Remove bot(s) | `fpp.despawn` | | help | `[page]` | List active bots | `fpp.list` | | help | `[botname|all]` | Teleport bot(s) to you | `fpp.tph` | | help | `[botname]` | Teleport to a bot | `fpp.tp` | | help | `<bot>` | Collect XP from a bot | `fpp.xp` | | help | `<bot|all> --to <player> | --coords <x y z> | --roam [x,y,z] [radius] | --stop` | Navigate bot | `fpp.move` | | help | `<bot> [--once|--stop|--pos1|--pos2|--start|--wesel] | --stop` | Mine blocks | `fpp.mine` | | help | `<bot> [--once|--stop|--wesel] | --stop` | Place blocks | `fpp.place` | | help | `<bot> [--once|--stop] | --stop` | Right-click automation | `fpp.use.cmd` | | help | `<bot> [--mob [type]] [--range <n>] [--stop] | --hunt [--range <n>] [--stop]` | PvE attack / hunt | `fpp.attack` | | help | `<bot|all> <player|--start> | <bot|all> --stop` | Follow a player | `fpp.follow` | | help | `<bot> <block> [--radius <n>] [--count <n>] [--prefer-visible] | <bot> --stop | --stop` | Find and mine blocks | `fpp.find` | | help | `<bot|all> <x y z> <radius> | <bot|all> --stop` | Auto-sleep at night | `fpp.sleep` | | help | `[<bot>|all]` | Cancel active tasks | `fpp.stop` | | help | `<bot|all> [on|off]` | Freeze/unfreeze | `fpp.freeze` | | help | `<bot>` (alias: `inv`) | Open bot inventory | `fpp.inventory` | | help | `<bot> [storage_name|--list|--remove <name>|--clear]` | Manage supply containers | `fpp.storage` | | help | — | Force-save all bots | `fpp.save` | | help | `<bot> <player>` | Transfer ownership | `fpp.setowner` | | help | `<oldname> <newname>` | Rename a bot | `fpp.rename` | | help | `[bot|spawner] <name>` | Bot info / session history | `fpp.info` | | help | — | Plugin statistics | `fpp.stats` | | help | `<check|update|status>` | Manage badword filter | `fpp.badword` | | help | `<backup|status|config|lang|names|db>` | Backup / migrate data | `fpp.migrate` | | help | `[all|config|lang|extensions]` | Hot-reload config | `fpp.reload` | | help | `[bot]` | Open settings GUI | `fpp.settings` | | help | `[page]` | Show help menu | `fpp.help` |
Quick Examples
```bash /fpp spawn 5 # Spawn 5 bots /fpp spawn --name Steve # Spawn a bot named "Steve" /fpp spawn world_nether 100 64 -200 # Spawn in another world /fpp despawn all # Remove all bots /fpp despawn --random --count 3 # Remove 3 random bots /fpp move bot1 --to Notch # Navigate to player /fpp move bot1 --roam 500,64,200 25 # Roam in 25-block radius /fpp mine bot1 diamond_ore --wesel # Mine using WorldEdit selection /fpp place bot1 --once # Place one block /fpp attack bot1 --hunt --range 16 # Hunt mobs /fpp follow bot1 Notch # Follow a player /fpp find bot1 diamond_ore --radius 64 --count 20 /fpp sleep bot1 100 64 200 50 # Set sleep origin /fpp stop bot1 # Stop all tasks /fpp freeze bot1 on # Freeze bot /fpp inv bot1 # Open inventory /fpp storage bot1 chest1 # Register container /fpp rename bot1 builder_01 # Rename bot /fpp info bot1 # Show session history ```
---
🔐 Permissions
FPP uses a two-tier permission system.
Wildcards
| Node | Default | Description | |------|---------|-------------| | `fpp.admin` | `op` | Full admin access (same as `fpp.op`) | | `fpp.op` | `op` | Full access to all commands | | `fpp.use` | `true` | User-tier: spawn (1 bot), tph, xp, info (own bots) |
Key Nodes
- Notify: `fpp.spawn`, `fpp.spawn.user`, `fpp.spawn.limit.1` through `fpp.spawn.limit.100` - Notify: `fpp.despawn`, `fpp.despawn.bulk`, `fpp.despawn.own` - Notify: `fpp.move`, `fpp.move.to`, `fpp.move.stop` - Notify: `fpp.mine`, `fpp.place`, `fpp.use.cmd`, `fpp.attack`, `fpp.attack.hunt`, `fpp.find`, `fpp.follow`, `fpp.sleep`, `fpp.stop` - Notify: `fpp.freeze`, `fpp.rename`, `fpp.rename.own`, `fpp.inventory`, `fpp.storage`, `fpp.setowner`, `fpp.save`, `fpp.settings` - Notify: `fpp.reload`, `fpp.migrate`, `fpp.badword` - Notify: `fpp.bypass.max`, `fpp.bypass.cooldown` - Notify: `fpp.notify` — update notifications on join
Quick Setup
```bash
Admin
/lp group admin permission set fpp.admin true
User
/lp group member permission set fpp.use true
Custom bot limit (5)
/lp user Alice permission set fpp.spawn.limit.5 true
Bypass cooldown for VIPs
/lp group vip permission set fpp.bypass.cooldown true
Hide /fpp from guests
/lp group guest permission set fpp.command false ```
---
📊 Placeholders
Requires PlaceholderAPI. All prefixed with `%fpp_`.
Server-Wide
| Placeholder | Description | |-------------|-------------| | `%fpp_count%` | Total bots (local + remote) | | `%fpp_local_count%` | Bots on this server | | `%fpp_network_count%` | Bots on other proxy servers | | `%fpp_max%` | Global bot cap (`∞` if unlimited) | | `%fpp_real%` | Real players online | | `%fpp_total%` / `%fpp_online%` | Total players (real + bots) | | `%fpp_frozen%` | Frozen bot count | | `%fpp_names%` | Comma-separated bot names | | `%fpp_network_names%` | Remote bot names | | `%fpp_version%` | Plugin version |
State
| Placeholder | Description | |-------------|-------------| | `%fpp_chat%` | `on` / `off` | | `%fpp_skin%` | Skin mode | | `%fpp_body%` / `%fpp_pushable%` / `%fpp_damageable%` / `%fpp_tab%` / `%fpp_ping%` | `on` / `off` | | `%fpp_max_health%` | Max HP | | `%fpp_network%` | `on` / `off` (NETWORK mode) | | `%fpp_server_id%` | Server ID | | `%fpp_persistence%` | `on` / `off` | | `%fpp_spawn_cooldown%` | Cooldown seconds |
Per-World
| Placeholder | Description | |-------------|-------------| | `%fpp_count_<world>%` | Bots in world | | `%fpp_real_<world>%` | Real players in world | | `%fpp_total_<world>%` | Total in world |
Player-Relative
| Placeholder | Description | |-------------|-------------| | `%fpp_user_count%` | Player's bot count | | `%fpp_user_max%` | Player's bot limit | | `%fpp_user_names%` | Player's bot names | | `%fpp_user_ping%` | First bot's ping | | `%fpp_user_ping_avg%` | Average ping |
Per-Bot
| Placeholder | Description | |-------------|-------------| | `%fpp_ping_<bot_name>%` | Specific bot's ping | | `%fpp_ping_all%` | Bot ping or player ping | | `%fpp_avg_ping%` | Average across all bots | | `%fpp_player_ping%` | Sender's real ping |
---
🗂️ Configuration
Main file: `plugins/FakePlayerPlugin/config.yml`
Key sections: - `limits` — max bots, user limits, spawn cooldowns - `persistence` — save/restore bots on restart - `bot-name` — name sources and formatting - `badword-filter` — profanity filtering - `body` — entity settings (pushable, damageable, item pickup) - `combat` — health, fall damage, hurt sounds - `death` — respawn behavior - `chunk-loading` — keep chunks loaded around bots - `automation` — auto-eat, auto-place-bed, auto-milk, bad-omen prevention - `head-ai` — smooth head rotation - `swim-ai` — automatic upward swimming - `collision` — push radius, strength, separation - `database` — SQLite / MySQL settings - `config-sync` — cross-server config push/pull - `performance` — position-sync distance tuning - `logging.debug` — per-subsystem debug flags
The plugin includes an 71 (current version: 71). Do not edit `config-version` manually.
---
📚 Documentation
- Wiki — Full documentation - Commands — Command reference - Permissions — Permission setup - Configuration — Config tuning - Extensions — Extension API guide - Changelog — Version history
---
💬 Support
- Patreon: Patreon: - Patreon: %%MD1%%) - Patreon: %%MD2%% - Patreon: %%MD3%% - Patreon: %%MD4%%
---
⚖️ License
MIT License. See `LICENSE`.
---
> Made with ❤️ by Bill_Hub