FakePlayer-CE.Build7
·
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 unsignedPlayerChatMessagebroadcast, so fake players can actually speak on Leaf 26.2+ (and all modern versions). fp sayNow an Action Command:fp saygains the sameonce / continuous / interval / stop / helpsubcommands 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 newNMSServerPlayer.chatbroadcasts an unsignedPlayerChatMessageviaPlayerList.broadcastChatMessage, bypassing signature validation entirely. - Fixed
fp sayhad 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 optionalfakeplayer("name")argument shared across all action subcommands. - Added
ActionType.SAYandSayAction: a new repeatable action that emits the chat message on every tick (driven byActionManager), carrying the text through a newmessagefield onActionSetting.ActionTickerImplin all 13 version modules was updated to handle the new enum value.
Important Notes - Vanilla native
/kickcannot affect fake players by design, as fake players do not occupy real server connections. Use/fp killor/fp killallinstead. - 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