
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.
Список изменений
v1.6.6.2 (2026-04-21)
🐛 Critical Bug Fixes
-
/fpp despawn allinventory preservation — Fixed critical bug where bulk despawn (/fpp despawn all,/fpp despawn --random [n],/fpp despawn --num <n>) completely erased all bot inventories and XP. Root cause:FakePlayerManager.removeAll()had zero snapshot logic — it just cleared internal maps and scheduled entity removal without capturing any data. Single-bot despawn (/fpp despawn <name>) worked correctly because it called a different method (delete()) that had proper snapshot code.removeAll()now implements the same synchronous snapshot system: captures inventory (main/armor/extra) and XP (total/level/progress) for ALL bots before any maps are cleared or entities are removed. Bulk and single-bot despawn now behave identically. -
Dimension spawn coordinate fix — Bots spawned directly in the Nether or End now stay at their exact spawn coordinates. Previously, Minecraft's portal/respawn logic would teleport bots during the 5-tick spawn grace period, corrupting coordinates.
BotSpawnProtectionListenernow blocks ALL teleport causes (PLUGIN,UNKNOWN,NETHER_PORTAL,END_PORTAL,END_GATEWAY) during the spawn window, not justPLUGINandUNKNOWN. Bot identification during spawn also improved — fallback UUID lookup ensures bots are recognized even before the PDC key is written.
💾 Despawn Snapshot Persistence Across Restarts
-
Remember bot inventory when rejoining — Bot inventory and XP are now fully preserved across server restarts after manual despawn. When you
/fpp despawn <name>(withbody.drop-items-on-despawn: false), the bot's inventory (main/armor/extra slots) and XP (total/level/progress) are saved to a persistent snapshot (stored in thefpp_despawn_snapshotsdatabase table ordata/despawn-snapshots.ymlfallback when DB is disabled). When you/fpp spawnthe same bot name later — even after a server restart — the snapshot is automatically restored, giving the bot back everything it had before despawn. -
New database table
fpp_despawn_snapshots— Schema v17 → v18 adds a dedicated table for despawn snapshot persistence:bot_name,server_id,inventory_data(pipe-separated slot encoding),xp_total,xp_level,xp_progress,saved_at. Snapshots are loaded at startup viaFakePlayerManager.initDespawnSnapshots()and consumed on next same-name spawn. YAML fallbackdata/despawn-snapshots.ymlis used whendatabase.enabled: false. -
Respects
body.drop-items-on-despawntoggle — Whentrue, items physically drop to the ground (old behavior, no snapshot). Whenfalse(new default for all existing installs via config migration v64→v65), inventory and XP are snapshotted and restored on respawn.
⚙️ Configuration & Settings
-
New config key:
messages.death-message(defaulttrue) — Controls whether bots broadcast vanilla death messages. Whenfalse, death messages are suppressed at the event level (PlayerDeathEvent.deathMessage(null)), preventing any death announcements for bots. Added in config v63→v64. -
Config migration v64→v65 — Forces
body.drop-items-on-despawn: falsefor all existing installs. The old JAR default (true) caused silent item loss on/fpp despawnbecause items would drop to the ground and disappear. The new default (false) preserves inventory via snapshots — bots keep their items across despawn/spawn cycles and server restarts. -
SettingGui improvements — Body category now has a
body.drop-items-on-despawntoggle (chest icon — "Drop items on despawn: drop inventory + xp when despawned vs preserve for next spawn"). Messages category now has amessages.death-messagetoggle (skeleton skull icon — "Broadcast vanilla death message when a bot dies").
🔧 Technical Improvements
-
SettingGui branding update —
SKIN_OWNER_NAMEchanged from"El_Pepes"to"F_PP"for UI skull rendering consistency. -
BotSpawnProtectionListener detection robustness —
isFppBot()is now instance-based (not static) and includes a UUID-based fallback lookup againstFakePlayerManager.activePlayersfor bots that haven't had their PDC key written yet (fires during the very firstPlayerJoinEventinsideplaceNewPlayer()). -
Language file cleanup — Fixed several rendering inconsistencies in
en.ymlmessage keys (delete-success,bot-rename,chat-*,swap-*,move-listpos-empty,place-*— corrected character sequences for consistent display).
📋 Config & Database Versions
-
Config version: 63 → 65
- v63→v64: Added
messages.death-message: true - v64→v65: Forced
body.drop-items-on-despawn: falsefor existing installs
- v63→v64: Added
-
Database schema: 17 → 18
- v17→v18: New
fpp_despawn_snapshotstable for inventory/XP persistence across restarts
- v17→v18: New
