Skip to content

FakePlayer-CE.Build12

Latest

Choose a tag to compare

@EndlessPixel EndlessPixel released this 26 Sep 12:50

FakePlayer-CE.Build12

Folia Support, Login Plugin Compatibility, Chat Event Pipeline & Instant Cleanup

This release adds first-class Folia support (verified on Folia 26.2: fake players spawn, tick and stay alive 90s+ with zero keep-alive kicks), marks fake players as logged in for AuthMe, CatSeedLogin and LibreLogin, routes /fp say through the real chat event pipeline so chat-formatting plugins work again, and adds a follow-quiting-force option that removes a creator's fake players the moment they quit.

Highlights

  • Folia Support: FakePlayer-CE now runs on Folia and other regionised servers. Every scheduling call goes through a single unified scheduler API (global / region / entity / async) that automatically falls back to the main thread on Bukkit/Paper/Spigot; fake-player ticking is driven by the entity scheduler, spawning runs on the region thread with teleportAsync, and the fake connection answers keep-alive packets itself — so fake players are no longer kicked for being "timed out".
  • Login Plugin Compatibility: fake players are now marked as logged in for AuthMe / AuthMeReloaded (public API forceLogin / forceRegister, unregistered names auto-registered with a random short password), CatSeedLogin / ReCatSeedLogin (added to the plugin's loginPlayers list) and LibreLogin (Paper) / LibreLoginNext (Paper) (a temporary unregistered record is created for the online fake player, authorized on spawn, and removed on disconnect or orderly shutdown). All three are declared as softdepend and only load when that plugin is installed.
  • /fp say Now Goes Through the Chat Event Pipeline: messages are sent as unsigned chat through ChatProcessor, fully triggering AsyncPlayerChatEvent / AsyncChatEvent, so chat-formatting plugins (EssentialsX Chat, Vane, …) can modify the format again; the result is broadcast unless the event is cancelled. Previously /fp say was silently dropped on modern versions because of chat signature verification (#21).
  • New follow-quiting-force Option: a creator's fake players are removed right after the creator quits (after follow-quiting-force-delay seconds, default 3) instead of waiting for the periodic cleanup.

Breaking Changes

  • /fp say output is now processed by chat plugins. Because messages go through the real chat events, any installed chat formatter will reformat /fp say output, and if a plugin cancels AsyncPlayerChatEvent / AsyncChatEvent the message is not broadcast. This is the intended fix for the silent-drop bug, but it does change how /fp say renders on servers with chat formatters.

Critical Fixes

  • Fixed fake players being kicked as "timed out" on Folia (the connection now answers keep-alive packets itself).
  • Fixed fake-player spawning on Folia: No currently ticking region while creating the player, and illegal synchronous teleport inside a region thread (now teleportAsync on the region thread).
  • Fixed AuthMe login failing with short passwords.
  • Fixed CatSeedLogin compatibility when its classes live in a different location.
  • Fixed command help ignoring the configured locale — help text is now resolved with the plugin's configured locale (#20).

Important Notes

  • config.yml is bumped to version 22; existing configs keep working and fall back to defaults for the new keys.
  • follow-quiting-force is disabled by default. Note that enabling it also removes the fake players when the creator merely switches servers on a proxy (the usual "server switching does not trigger follow-quiting" guard is bypassed).
  • Login plugin compatibility is opt-in by presence: nothing is loaded unless the corresponding login plugin is installed.
  • Known low-priority leftovers on Folia shutdown: PlayerList.remove reports a reflective InvocationTargetException, and CommandAPI logs a "cannot register/unregister commands after the server is done starting" warning. Neither affects gameplay.

Usage

  • Java: 21+ (Java 25 recommended for 26.x support)
  • Server: Paper / Leaf 1.20.1+ (Purpur compatible; Folia supported — verified on 26.2)
  • API: CommandAPI 12.0.0+ (Mandatory dependency)

Credits


FakePlayer-CE.Build12 —— Folia 支持、登录插件兼容、聊天事件管线与退出即时清理

本次更新带来首等 Folia 支持(已在 Folia 26.2 实测:假人成功生成、持续 tick 且存活 90 秒以上,零 keep-alive 踢出),为假人补齐 AuthMe、CatSeedLogin、LibreLogin 登录插件兼容,让 /fp say 重新走真正的聊天事件管线(聊天格式化插件恢复生效),并新增 follow-quiting-force 配置,在创建者退出瞬间清理其假人。

核心特性

  • Folia 支持:FakePlayer-CE 现可在 Folia 及其他区域化服务端上运行。所有调度统一走一套调度 API(全局 / 区域 / 实体 / 异步),在 Bukkit/Paper/Spigot 上自动回落到主线程;假人 tick 改由实体调度器驱动,生成在区域线程执行并改用 teleportAsync,连接会自行回应 keep-alive 包,假人不再被判定超时踢出。
  • 登录插件兼容:假人生成时会被标记为已登录,支持 AuthMe / AuthMeReloaded(走公开 API forceLogin / forceRegister,未注册的名称用随机短密码自动注册)、CatSeedLogin / ReCatSeedLogin(写入插件的 loginPlayers 名单)与 LibreLogin(Paper)/ LibreLoginNext(Paper)(为在线假人创建临时未注册记录、生成时授权、断开连接或正常关闭时清理)。三者均以 softdepend 声明,仅在对应插件安装时加载。
  • /fp say 走聊天事件管线:消息以未签名形式交给 ChatProcessor 处理,完整触发 AsyncPlayerChatEvent / AsyncChatEvent,聊天格式化插件(EssentialsX Chat、Vane 等)可再次介入修改格式;事件未取消时按结果广播。此前因聊天签名校验,/fp say 在新版服务端会被静默丢弃(#21)。
  • 新增 follow-quiting-force 配置:创建者退出后立即清理其假人(延迟 follow-quiting-force-delay 秒,默认 3),无需等待定时轮询。

破坏性变更

  • /fp say 的输出现在会经过聊天插件处理。 因为消息走真实聊天事件,已安装的聊天格式化插件会重新格式化 /fp say 的输出;若有插件取消了 AsyncPlayerChatEvent / AsyncChatEvent,该消息将不再广播。这是修复「静默丢弃」的预期行为,但在装有聊天格式化插件的服务器上,/fp say 的呈现会与之前不同。

关键修复

  • 修复假人在 Folia 上被判定 keepalive timeout 踢出(连接现在自行回应 keep-alive 包)。
  • 修复 Folia 上的假人生成:创建时的 No currently ticking region,以及区域线程内禁止同步 teleport(现改为区域线程内 teleportAsync)。
  • 修复 AuthMe 短密码登录失败。
  • 修复 CatSeedLogin 类位于不同位置时的兼容问题。
  • 修复命令帮助未遵循配置语言:帮助文本现按插件配置的 locale 解析(#20)。

重要说明

  • config.yml 版本号提升至 22;旧配置可继续使用,新配置项自动采用默认值。
  • follow-quiting-force 默认关闭。注意:开启后会绕过「仅切换服务器不触发跟随下线」的判断,代理服上玩家仅切换服务器时其假人也会被清理。
  • 登录插件兼容按「是否安装」生效:未安装对应插件时不会加载任何相关逻辑。
  • Folia 关服时的已知低优先遗留:PlayerList.remove 反射调用报 InvocationTargetException,CommandAPI 输出 "cannot register/unregister commands after the server is done starting" 告警。均不影响游戏运行。

使用要求

  • Java: 21+(26.x 建议 Java 25)
  • 服务端: Paper / Leaf 1.20.1+(兼容 Purpur;支持 Folia,已在 26.2 验证)
  • 前置依赖: CommandAPI 12.0.0 及以上(必需)

鸣谢