### Attribution & Author Updates
- Hardcoded original author updated fromel_pepestoF_PPacross codebase
### FastStats Metrics System Overhaul
- ErrorTracker — context-aware error tracking via FastStats API
- Debug toggle —
metrics.debugoption inconfig.yml(defaultfalse)- onFlush callback — logs at debug level when metrics are flushed to FastStats
- New metrics added:
active_features(string array), feature flags, installed plugins (LuckPerms, PlaceholderAPI, WorldGuard, WorldEdit, NameTag), server info, PvE settings, automation toggles- trackError() helpers — two public overloads (
ThrowableandString) for external error reporting- Added
getFppMetrics()public getter onFakePlayerPlugin.java
### Bug Fixes
- FakeChannelPipeline deprecation warning — added
@SuppressWarnings("deprecation")to suppress unavoidable NettyChannelPipelineAPI deprecation warnings forEventExecutorGroupoverloads- PluginRemapper duplicate entries —
pom.xmlnow properly excludes Mojang-mappedpaper-serverNMS classes from shaded JAR, fixing Paper 1.21.11 runtime remapping crash- SQLite AUTO_INCREMENT syntax — split
fpp_network_taskstable creation into SQLite (INTEGER PRIMARY KEY AUTOINCREMENT) and MySQL (BIGINT AUTO_INCREMENT) variants, fixingSQLITE_ERROR near "AUTO_INCREMENT": syntax error
### Deprecations & Removals
- None
Requires MySQL for cross-server features.
### Network Architecture
Proxy-merged database — all backends share live bot registry and player counts via MySQL.
- Schema v25:
fpp_network_bots,fpp_server_heartbeat,fpp_network_tasks- NetworkHeartbeatManager — publishes local bots / reads remote bots every 5s, stale pruning every 60s
- Proxy companions (Velocity + Bungee) push
NETWORK_STATSto all backends independently of playersRemoteBotCachenow survives restarts via DB (no longer messaging-only)
### PlaceholderAPI — 70+ placeholders
New cross-server placeholders:%fpp_network_total%,%fpp_network_real%,%fpp_network_bots%
Also added: server performance, extensions, 30+ config toggles, player-relative per-world, per-bot dynamic lookups.
### Extension System
/fpp extensionbare command → marketplace link/fpp extension --list→ loaded extensions detail table- Extension data folders fixed (
getName()instead of JAR filename)
### Deprecations & Fixes
getServers()→getServersCopy(),FixedMetadataValue→PersistentDataContainer, unchecked warnings cleaned- Startup banner shows extension count
- Authors updated to
F_PPandKyttu
### Legal
Addedfrontend/legal/pages (copyright, extension policy, privacy, ToS)
## v1.6.6.9 (Current)
- Fall damage implemented (configurable via
combat.fall-damage)- Fall damage tracking fixed in
FakePlayerManagertick loop- Skin injector fixes for skin extension compatibility
- Config migrator improvements (v71→v72 cleanup)
- Extension bundle support
- Config YML extension removal & migration handling
- Further API additions for extensions
- Database/config migration improvements
## v1.6.6.8
- Spoofing features moved to
fpp-spoof.jarextension — fake chat, AI conversations, swap system, peak-hours scheduler, ping command, bot groups, and stored commands are no longer in core; they now ship as thefpp-spoof.jarextension- PvE Smart Attack Mode: tri-state per-bot setting (OFF / ON_NO_MOVE / ON_MOVE)
- Hunt mode (
--hunt) for roaming mob hunting- New commands:
/fpp save,/fpp setowner- Per-bot overrides:
respawn-on-death,auto-eat,auto-place-bedBotSettingGuioverhaul: new PvE tab, Pathfinding tab, share control- Extension config & resources support (
extension-resources/in JAR)- DB schema v22: new columns for PvE, automation, ping, LuckPerms
Bot Join/Leave Messages — Custom bot-join/bot-leave lang keys replace vanilla messages; fully customizable MiniMessage formatting. Vanilla quit messages always nulled for bots. Death-despawn leave fires after kill message for proper ordering.
Skin System — Retry count 3→5; null/invalid results handled gracefully; all retry/failure logs converted to debug-level (Config.debugSkin(), silent by default).
Ping System — ping.enabled default changed to false (opt-in). Config v67→v70. DB schema v21→v22.
Per-Bot Settings GUI — 5 categories: General (frozen, respawn-on-death, head-AI, swim-AI, chunk-radius, pick-up-items, pick-up-xp, rename, share-control), Chat, PvE (smart-attack OFF/ON still/ON move, mob type selector, range, priority), Pathfinding (follow-player, parkour, break/place blocks), Danger (reset-all, delete).
PvE Smart Attack — Per-bot tri-state: OFF / ON_NO_MOVE / ON_MOVE (pursues via PathfindingService). /fpp attack --mob --move maps to ON_MOVE.
Attack Hunt — /fpp attack <bot|all> --hunt [<mob>] [--range] [--priority] — roaming mob hunt (range 32, not position-locked). Perm: fpp.attack.hunt
New Commands — /fpp save, /fpp setowner, /fpp bots, /fpp skin, /fpp find, /fpp groups, /fpp sleep, /fpp stop, /fpp move --coords, /fpp move --roam (autonomous wandering)
Per-Bot Features — respawnOnDeath, autoEat, autoPlaceBed, navAvoidWater, navAvoidLava, share control, mob type selector GUI
Extension API — FppExtension interface (drop-in JARs); getDataFolder, getConfig, saveDefaultConfig, etc.; 20+ API events
Random Names — bot-name.mode: random (default) generates realistic usernames; no more Bot1234
WorldEdit — --wesel flag for /fpp mine and /fpp place; soft-depend
Automation — auto-eat: true, auto-place-bed: true per-bot defaults
Pathfinding — Door/gate/trapdoor handling; ladder/vine/scaffolding climbing; knockback fix for 1.21.9+; organic walk wobble; sprint-jump on airborne→ground transition
Folia — folia-supported: true declared
Config 65→70 · DB Schema 18→22 · New Perms fpp.save, fpp.setowner, fpp.skin, fpp.attack.hunt, fpp.find, fpp.sleep, fpp.stop, fpp.mine.wesel, fpp.place.wesel, fpp.tph.all
Full changelog: fpp.wtf
Extension / Addon API
- New FppExtension interface — third-party developers can drop .jar files into plugins/FakePlayerPlugin/extensions/ and FPP will auto-load them on startup
- ExtensionLoader scans extension jars for FppExtension implementations, instantiates them, and registers them as addons sorted by priority
- Full addon lifecycle: onEnable(FppApi) / onDisable() with access to commands, events, tick handlers, settings GUI tabs, metadata, navigation API, and service registry
- 20+ API event classes for bot interactions (spawn, despawn, move, mine, place, attack, follow, chat, etc.)
- See EXTENSIONS.md in the repository for the complete addon developer guide
Random Name Generator
- New bot-name.mode: random (default) — generates realistic Minecraft-style usernames on the fly when the name pool is empty or when mode: random is set
- bot-name.mode: pool — legacy behaviour, picks from bot-names.yml
- No more Bot1234 fallback names; every auto-generated name looks like a real player
New Commands
- /fpp find <bot> <block> [--radius <n>] [--count <n>] — bot scans nearby chunks for the target block type, reserves matching locations, and mines them one by one. Async chunk snapshot scanning with progressive mining and raytrace visibility check. Permission: fpp.find
- /fpp groups [gui|list|create <name>|delete <name>|add <group> <bot>|remove <group> <bot>] — personal bot groups with GUI management. Group bots together for bulk commands. Permission: fpp.groups
- /fpp sleep <bot|all> <x y z> <radius> — registers a sleep-origin; bot auto-walks to the nearest free bed within radius at night and sleeps. /fpp sleep <bot|all> --stop clears the origin. NMS sleep/wake with temporary bed placement. Permission: fpp.sleep
- /fpp stop [<bot>|all] — instantly cancels all active tasks for a bot (move, mine, place, use, attack, follow, find, sleep). Permission: fpp.stop
- /fpp move <bot> --coords <x> <y> <z> — navigate a bot to exact world coordinates; supports ~ relative offsets. Permission: fpp.move
- /fpp attack <bot> --mob --move — PvE mob-targeting mode now supports pursuit; bot chases the target when out of melee range and stops to attack when in reach. Permission: fpp.attack
WorldEdit Integration
- New --wesel flag for /fpp mine and /fpp place — uses the player's current WorldEdit selection as the work area instead of manual --pos1/--pos2
- Soft-dependency: WorldEdit added to plugin.yml softdepend list
- Permissions: fpp.mine.wesel, fpp.place.wesel
Automation Defaults
- New automation config section:
- auto-eat: true — bots eat food from inventory when hunger prevents sprinting
- auto-place-bed: true — bots may place a bed from inventory for auto-sleep, then break it after waking
- Values are copied to newly spawned/restored bots; existing bots keep per-bot overrides
Pathfinding & Knockback Fixes
- Door handling — bots now correctly open and pass through wooden doors, fence gates, and trapdoors during pathfinding
- Ladder and vine climbing — ASCEND/DESCEND moves now support ladders, vines, and scaffolding
- Knockback fix double-check — resolved residual knockback issues on 1.21.9+ with tiered strategy verification
- Organic walk wobble — subtle sine-wave yaw drift (±5°) on straight WALK segments for more human-like movement
- Sprint-jump naturalness — jump fires on first airborne→ground transition instead of fixed 6-tick timer
Folia Support
- folia-supported: true declared in plugin.yml
- Compatible with Folia's regionised threading model
Proxy & Communication
- Enhanced proxy communication with error handling and pending bot despawn management
- fpp.tph.all permission — teleports all accessible bots to the sender at once
Configuration
- Config version: 65 → 67
- chunk-loading.mass-disable-threshold: 100 — auto-releases chunk tickets when bot count exceeds this threshold to prevent mass-bot lag
- bot-name.mode: random (new default)
- pathfinding.follow-recalc-interval: 100 (new key)
Permissions
- New nodes: fpp.find, fpp.sleep, fpp.stop, fpp.attack.hunt, fpp.mine.wesel, fpp.place.wesel, fpp.tph.all
- All nodes declared in plugin.yml for LuckPerms tab-completion
Technical
- Database schema updates for bot groups and despawn snapshot persistence
- BotGroupCommand, BotGroupStore for group management
- FindCommand with async chunk snapshot scanning and block reservation system
- SleepCommand with NMS sleep/wake and night-watch repeating task
- StopCommand with dependency injection of other command instances for bulk cancellation
Critical Bug Fixes
- /fpp despawn all inventory preservation — Fixed bug where bulk despawn erased all bot inventories and XP. removeAll() now implements proper snapshot logic identical to single-bot despawn — captures inventory and XP before clearing any maps.
- Dimension spawn coordinate fix — Bots spawned in Nether/End now stay at exact coordinates. BotSpawnProtectionListener now blocks all teleport causes (NETHER_PORTAL, END_PORTAL, END_GATEWAY) during the 5-tick spawn grace period.
Despawn Snapshot Persistence
- Inventory/XP survival across restarts — Bot inventory and XP are preserved when you despawn and respawn the same bot name, even after server restart. New fpp_despawn_snapshots DB table (schema v17→v18) or data/despawn-snapshots.yml fallback.
- Config migration v64→v65 — Auto-sets body.drop-items-on-despawn: false for existing installs to enable snapshot preservation by default.
Configuration
- New: messages.death-message (default true) — toggle bot death messages
- SettingGui: Added toggles for body.drop-items-on-despawn and messages.death-message
Technical
- Config version: 63 → 65
- Database schema: 17 → 18
- Language file character fixes
- BotSpawnProtectionListener UUID fallback for early spawn detection
FPP BungeeCord Companion (fpp-bungee.jar)
- New standalone BungeeCord/Waterfall proxy plugin — drop fpp-bungee.jar into your BungeeCord plugins/ folder; no config needed
- Registers fpp
roxy plugin-messaging channel; listens for BOT_SPAWN, BOT_DESPAWN, SERVER_OFFLINE messages from backend servers
- Maintains a live bot registry; pings all backends every 5 s and caches total player counts
- Intercepts ProxyPingEvent to inflate the proxy-level server-list player count and hover sample list (up to 12 bot names shown)
- Prints a prominent anti-scam warning on every startup — FPP and this companion are 100% free; if you paid for them you were scammed
- Source: bungee-companion/ module in the FPP repository
Bug Fixes
- Bot join/leave message color fix — BotBroadcast now parses display names with full MiniMessage + legacy &/§ color support. Previously, color tags in bot display names could render as raw text in join/leave broadcasts; display names now render exactly as defined in en.yml
FPP Velocity Companion (fpp-velocity.jar)
- New standalone Velocity proxy plugin shipped alongside the main Paper plugin as fpp-velocity.jar
- Registers fpp
roxy plugin-messaging channel; listens for BOT_SPAWN, BOT_DESPAWN, SERVER_OFFLINE messages from backend servers
- Maintains a live bot registry; pings all backends every 5 s and caches total player counts
- Intercepts ProxyPingEvent — inflates the proxy-level server-list player count and hover sample list (up to 12 bot names shown)
- Prints a prominent anti-scam warning on every startup reminding server owners that FPP is 100% free — if you paid for it, you were scammed by a reseller
- Requires Velocity 3.3.0+; drop fpp-velocity.jar into your Velocity plugins/ folder — no config needed
Follow-Target Automation (/fpp follow)
- New /fpp follow <bot|all> <player> [--stop] command — bot continuously follows an online player; path recalculates when target moves >3.5 blocks
- --stop cancels following on one or all bots
- FOLLOW task type persisted to fpp_bot_tasks — bot resumes following after restart if target is online
- Permission: fpp.follow
⚔ Per-Bot PvE Settings (now fully live)
- BotSettingGui PvP tab now has live-editable per-bot PvE controls: pveEnabled toggle, pveRange, pvePriority (nearest/lowest-health), pveMobTypes (entity-type whitelist — empty = all hostile)
- Settings persisted via DB schema v15→v16
- New config keys: attack-mob.default-range, default-priority, smooth-rotation-speed, retarget-interval, line-of-sight
Skin Persistence Across Restarts (DB v16→v17)
- Resolved bot skins saved to fpp_active_bots (skin_texture + skin_signature columns)
- Bots reload their cached skin on server restart — no additional Mojang API round-trip needed
Server-List Config Keys
- New server-list.count-bots (default true) — controls whether bots appear in the server-list player count
- New server-list.include-remote-bots (default false) — include remote proxy bots in the count (NETWORK mode)
- Config v60→v61 migration adds both keys — no behaviour change for existing installs
pathfinding.max-fall
- New pathfinding.max-fall key (default 3) — A* pathfinder will not descend more than this many blocks in a single unbroken fall
DB Schema v15 → v16 → v17
- v15→v16: fpp_active_bots gains pve_enabled BOOLEAN DEFAULT 0, pve_range DOUBLE DEFAULT 16.0, pve_priority VARCHAR(16), pve_mob_type VARCHAR(64)
- v16→v17: fpp_active_bots gains skin_texture TEXT, skin_signature TEXT
- Fully backward-compatible — existing rows receive safe defaults on schema upgrade
Config v60 → v61 → v62 → v63
- v60→v61: server-list section added (count-bots, include-remote-bots)
- v61→v62: pathfinding.max-fall added
- v62→v63: attack-mob.* default config keys added
Bug Fixes
- Attribute.MAX_HEALTH compatibility — fixed NoSuchFieldError crash on Paper/Purpur 1.21.1 and older. New AttributeCompat utility resolves MAX_HEALTH (Paper 1.21.3+) or GENERIC_MAX_HEALTH (1.21.1 and below) via reflection at class-load time — all Paper 1.21.x versions (1.21.0–1.21.11) are now fully supported
- FPP Velocity banner — replaced █ block characters in the anti-scam warning section with ═ double-line rules to match the rest of the console banner style
