Skip to content

FakePlayer-CE.Build7

Choose a tag to compare

@EndlessPixel EndlessPixel released this 11 Sep 09:25
· 155 commits to master since this release

FakePlayer-CE.Build7

Fake Player Chat Fix & fp say Action Subcommand Overhaul
This release fixes fake players being completely unable to send chat messages on modern Leaf forks, overhauls the fp say command to align with the action command syntax (supporting once / continuous / interval / stop), and inherits all removal and compatibility fixes from Build6.
Highlights

  • Working Fake Player Chat: Replaced the signature-gated connection.chat(...) path with a direct unsigned PlayerChatMessage broadcast, so fake players can actually speak on Leaf 26.2+ (and all modern versions).
  • fp say Now an Action Command: fp say gains the same once / continuous / interval / stop / help subcommands as other actions, with TAB-completable fake player names and a <name> <msg> argument layout.
  • Iterative Optimization Based on Build6: Inherits Build6's complete fake player removal fix, Leaf CraftServer#getServer() adaptation, and all stability improvements.
    Critical Fixes
  • Fixed fake players cannot send chat messages (Leaf 26.2+): ServerGamePacketListenerImpl.chat(String, LastSeenMessages, boolean) runs the message through the signed-chat validation chain; fake players have no real session, so a null signature was silently discarded. The new NMSServerPlayer.chat broadcasts an unsigned PlayerChatMessage via PlayerList.broadcastChatMessage, bypassing signature validation entirely.
  • Fixed fp say had no fake player name argument and no TAB completion: the command previously registered only a greedy message argument, so it could not target a specific fake player nor complete names. It now registers an optional fakeplayer("name") argument shared across all action subcommands.
  • Added ActionType.SAY and SayAction: a new repeatable action that emits the chat message on every tick (driven by ActionManager), carrying the text through a new message field on ActionSetting. ActionTickerImpl in all 13 version modules was updated to handle the new enum value.
    Important Notes
  • Vanilla native /kick cannot affect fake players by design, as fake players do not occupy real server connections. Use /fp kill or /fp killall instead.
  • Use /fp say once <name> <msg> for a single message, /fp say continuous <name> <msg> for every-tick spam (stop with /fp say stop <name>), and /fp say interval <ticks> <name> <msg> for periodic messages.
    Usage
  • Java: 21+ (Java 25 recommended for 26.x support)
  • Server: Paper / Leaf 1.20.1+ (Purpur compatible)
  • API: CommandAPI 12.0.0+ (Mandatory dependency)
    Credits
  • CE Maintenance: @EndlessPixel

FakePlayer-CE.Build7 —— 假人聊天修复与 fp say 动作化重构

假人聊天失效修复、fp say 动作子命令化重构
本次更新修复了现代 Leaf 分支下假人完全无法发送聊天消息的问题,将 fp say 命令重构为与其他动作命令一致的 once / continuous / interval / stop 子命令体系,并完整继承 Build6 的假人移除与兼容性修复。
核心特性

  • 假人聊天真正生效:弃用受签名校验拦截的 connection.chat(...),改为直接广播未签名 PlayerChatMessage,使假人在 Leaf 26.2+(及所有现代版本)均可正常发言。
  • fp say 升级为动作命令:现在支持 once / continuous / interval / stop / help 子命令,与其他动作命令一致,假人名可 TAB 补全,参数为 <name> <msg>。
  • 迭代继承 Build6 修复:完整保留 Build6 的假人彻底移除修复、Leaf CraftServer#getServer() 适配及全部稳定性改进。
    关键修复
  • 修复假人无法发送聊天消息(Leaf 26.2+):新版 ServerGamePacketListenerImpl.chat 走聊天签名校验链,假人无真实会话,传入 null 签名被静默丢弃。新 NMSServerPlayer.chat 改用 PlayerList.broadcastChatMessage 直接广播未签名消息,彻底绕过签名校验。
  • 修复 fp say 缺假人名参数、无法 TAB 补全:旧命令仅注册贪婪文本参数,既不能指定说话的假人也无法补全名字。现统一注册可选 fakeplayer("name") 参数,覆盖全部动作子命令。
  • 新增 ActionType.SAY 与 SayAction:新增可重复动作,按 ActionManager 调度在每 tick 广播聊天内容,文本通过 ActionSetting 新增的 message 字段携带;全 13 个版本模块的 ActionTickerImpl 均已补充新枚举分支。
    注意事项
  • 原版原生 /kick 依设计无法影响假人,因假人不占用真实服务器连接。请改用 /fp kill 或 /fp killall 移除假人实体。
  • 单次发言用 /fp say once <name> <msg>,持续刷屏用 /fp say continuous <name> <msg>(用 /fp say stop <name> 停止),定时发言用 /fp say interval <ticks> <name> <msg>。
    使用要求
  • Java: 21+(26.x 建议 Java 25)
  • 服务端: Paper / Leaf 1.20.1+(兼容 Purpur)
  • API: CommandAPI 12.0.0+(强制依赖)
    维护者
  • CE 维护: @EndlessPixel