Bug Fixes
- Bot rank colour preserved after restart — bot display names now always reconstruct from the current LuckPerms prefix + name format on restore; colours are no longer stripped when saving to the database, and a post-restore prefix refresh runs automatically after all bots are re-queued.
- Join / leave delay timing fixed — config values (
join-delay/leave-delay) were being multiplied by 20 internally, making all delays 20× too long. Values are now treated as ticks directly as documented (e.g.max: 20= 1 second)./fpp reloadnow refreshes all bot prefixes — LP cache is invalidated andupdateAllBotPrefixes()is called, so prefix changes take effect immediately without a restart.
New Features
/fpp despawn random [amount]— removes a random selection of active bots (default 1). Useful for gradual scale-down.- Beta version detection — when the running version is newer than the latest published release, admins see a styled in-game warning identifying the build as a beta. The message is also delivered to admins who join after the check completes, identical to how update-available notifications work.
Internals
- Config-version bumped to 25 (housekeeping stamp — no structural changes).
New Features
- LuckPerms auto-update — bot display names, tab-list entries, and nametags now update in real-time when LuckPerms group data changes (prefix, weight, colours). No reload or respawn needed.
- Full LuckPerms colour support — all colour formats now render correctly in bot prefixes: MiniMessage tags (
<rainbow>,<gradient:#FF0000:#0000FF>), hex colours (<#9782ff>), LuckPerms gradient shorthand ({#FFFFFF>}text{#FFFFFF<}), and mixed formats (&7[<#9782ff>Phantom</#9782ff>&7]).- LuckPerms weight ordering — bot tab-list entries sort below all real players by default; bots always use the default group (never inherit spawner permissions or weight).
- Multi-platform download links — update notifications and
/fppinfo screen show clickable links to Modrinth, SpigotMC, PaperMC Hangar, and BuiltByBit.- Enhanced reload command —
/fpp reloadshows step-by-step progress with a checkmark per subsystem and total reload time on completion.- Update checker improvements — Modrinth API is now the primary version source; console output is a clean one-liner; in-game notifications use a bordered style matching the help menu.
- Tab-list bot visibility —
tab-list.enabled: true/falsecontrols whether bots appear in the tab list. Whenfalse, bots are hidden but still count in the server player count. Hot-reloadable via/fpp reload.- No external API requirement — physical bot bodies no longer depend on any external plugin API; works on any compatible Paper server out of the box.
Bug Fixes
- Fixed join/leave messages rendering raw gradient tags (e.g.
{#FFFFFF>}[PLAYER]{#FFFFFF<}) instead of the formatted text — LuckPerms gradient shorthand is now fully resolved in all broadcast messages.- Fixed bot display names restoring as literal
bot-{spawner}-{num}placeholder text after a server restart — names are now reconstructed correctly from saved data on restore.- Fixed
StackOverflowErrorinvisualChainwhen spawning large batches of bots withjoin-delay: 0and some bots deleted mid-spawn.- Fixed
NullPointerExceptioninPlayerWorldChangeListeneron non-Folia servers (replaced Folia-specificplayer.getScheduler()with standard Bukkit scheduler).- Fixed unclosed hex colour tags (e.g.
<#9782ff>) at the end of LuckPerms prefixes causing broken text — trailing unclosed tags are now stripped before parsing.- Fixed tab-list migration incorrectly applying
enabled: false(the old header/footer toggle) as bot visibility for users upgrading from older versions.- Fixed startup log pause/lag caused by blocking update checker — now runs asynchronously with a fast timeout.
- Bug fix — bots restored after a server restart no longer show literal
{spawner},{num}, or{bot_name}in their display name; stale saves from older versions are detected and the display name is rebuilt correctly.- Bug fix — trailing unclosed hex color tags (e.g.
<#9782ff>) at the end of LuckPerms prefixes are now stripped before parsing, preventing broken text in nametags and the tab list.
- Added a proper version check to the update checker (previously it only checked if the API was reachable, not if the version was actually newer).
- Fixed a bug where the update checker would report an update available when the API was reachable but returned an error or invalid response.
- Multi Hotfix.
Release
- Compatibility checks: detect non-Paper servers and Minecraft versions below 1.21.9 and enter a restricted compatibility mode when needed (physical bodies and chunk-loading disabled).
- Added runtime guard for missing server API classes (prevents NoClassDefFoundError when the Mannequin class is absent).
- Admin-facing in-game compatibility warning (configurable) sent on enable and on admin join.
- Teleport commands updated:
/fpp tpand/fpp tphnow report when no physical body is available;/fpp infoshows "No Body" when bodies are disabled.- Command rename:
/fpp deleterenamed to/fpp despawn(permission nodefpp.deleteretained for compatibility).
Hotfix
- Fixed NullPointerException in BotSwapAI when bot entity is null.
- Fixed StackOverflowError in FakePlayerManager.visualChain by adding a recursion base case.
