Repository navigation
FakePlayer-CE.Build15
FakePlayer-CE.Build15
/fp goto Walk-to-Command, Premium Skins via SkinsRestorer & Five New HTTP Endpoints
This release teaches fake players to walk. /fp goto x y z makes a fake player pathfind to any coordinate on its own — stepping over obstacles, swimming, and teleporting itself free when wedged — while unreachable destinations are refused before the trip starts. /fp skin now also understands premium player names through SkinsRestorer, the HTTP admin API gained five endpoints (/goto, /setping, /sneak, /sprint, /reload), and fake players can optionally share a stable identity through share-fakeplayer. Modrinth distribution has been removed; releases are GitHub-only from now on.
Highlights
- New command
/fp goto <x> <y> <z>: make a fake player walk to a location. The fake player pathfinds on its own — it steps up 1-block obstacles, swims through water, and if it gets stuck (e.g. behind a fence) for more than 1.25 seconds it teleports to a safe footing near the target and continues. Destinations that cannot be stood on (floating in mid-air, buried inside blocks, no ground nearby) are rejected up front with a clear error; out-of-height, out-of-border and over-1024-blocks targets are rejected as well./fp stopcancels an ongoing trip. /fp skinnow supports premium players through SkinsRestorer. With SkinsRestorer installed, the skin is resolved through its official API (SkinStorage.findOrCreateSkinData), the choice is persisted withPlayerStorage.setSkinIdOfPlayerso it survives reconnects, and the resolved property is applied through the platform skin applier. Lookup and storage run off-thread; applying runs on the entity thread (Folia-safe). Without SkinsRestorer the previous Mojang-API path is used.- HTTP Admin API: five new endpoints.
/goto(pathfind to coordinates, unreachable targets rejected),/setping(tab list ping),/sneakand/sprint(toggle or set viastate=true|false), and/reload(reloadconfig.ymland translations). Each has its own switch underhttp-admin.interface. - New
share-fakeplayeroption. When enabled, a fake player's UUID is derived deterministically from its name, so the same name always maps to the same UUID — different players can take turns controlling the same fake player, andusercache.jsonno longer accumulates a fresh entry per spawn.
Breaking Changes
- Modrinth distribution removed. All Modrinth integration (
sync-modrinth.yml, the sync script and the README download links) is gone because the project could not pass Modrinth's review (6.2b, excessive AI-generated content) and has been deleted there. Downloads are GitHub Releases only. config.ymlbumped to 28 and the auto-login settings moved from the flat top level into a tree (auto-login.command.*,auto-login.random-password.*).auto-login: falseused to look like a master switch while only driving command-template login; the two mechanisms are now documented side by side (the other one, login-plugin API exemption for AuthMe / CatSeedLogin / LibreLogin, needs no configuration at all). Old flat keys are still read as a fallback, so existing configs keep working.
Critical Fixes
- Fixed
/fp saydoing nothing on Paper (silent success, no chat message): fake players hadChatVisiblity.SYSTEM, which madeServerGamePacketListenerImpl.chat()return beforeChatProcessorcould fire chat events. Fake players now use full chat visibility; unsigned chat still goes through the existing chat event pipeline, so formatting plugins (EssentialsX Chat, Vane, ...) work./fp saywithout a subcommand now shows usage, and message-only invocation (/fp say once hello) respects the selected fake player (#76, thanks to @ifloppy). - Fixed
/fp gotorefusing reachable destinations. The footing search gave up on a direction as soon as its first candidate was too far, missing closer footings lower down (slopes, stairs) and rejecting targets that were actually standable; it now scans every layer and picks the best candidate (#77, thanks to @lldxlzy). - Fixed translations breaking when Nexo is loaded.
CommandHelpLocalizerloaded message files throughResourceBundle.getBundle(), whose global static cache and SPI lookup can clash with other plugins' class loaders (Nexo), leaving/fphelp and descriptions as raw keys. It now reads the properties throughClassLoader.getResourceAsStream(#150, thanks to @fuzhulike).
Important Notes
config.ymlis at version 28. Existing configs keep working; auto-login flat keys (auto-login,register,login, ...) are still honoured as a fallback, but migrating to the new tree is recommended.- Every HTTP endpoint can be switched off individually under
http-admin.interface; the five new ones default totrue. - SkinsRestorer is an optional soft dependency —
/fp skinkeeps working without it via the Mojang API. - This build adds an Apache-2.0
LICENSEfile to the repository.
Usage
- Java: 25+ (required)
- Server: Paper / Leaf 1.20.1+ (Purpur compatible; Folia supported)
- API: CommandAPI 12.0.0+ (12.1.0+ on Minecraft 26.3)
- Optional integrations: SkinsRestorer (premium skins), AuthMe / CatSeedLogin / LibreLogin (login-plugin API exemption)
Credits
- CE Maintenance: @EndlessPixel
- @ifloppy (PR #76: Paper chat pipeline for
/fp say) - @lldxlzy (PR #78 / issue #77: footing search fix for
/fp goto) - @fuzhulike (issue #169:
share-fakeplayer; issue #150: Nexo translation fix)
FakePlayer-CE.Build15 —— /fp goto 寻路命令、SkinsRestorer 正版皮肤与五个新 HTTP 端点
本版本让假人学会走路。/fp goto x y z 让假人自行寻路到任意坐标——会跨过一格高障碍、在水中游动、被卡住时自动脱困;无法站立的目标会在出发前直接拒绝。/fp skin 现在也能通过 SkinsRestorer 解析正版玩家皮肤(并持久化,重连后恢复),HTTP 管理接口新增五个端点(/goto、/setping、/sneak、/sprint、/reload),另可通过 share-fakeplayer 让假人拥有稳定身份。Modrinth 分发已移除,今后仅通过 GitHub Releases 发布。
核心特性
- 新命令
/fp goto <x> <y> <z>:让假人走到指定坐标。 假人自行寻路——会跳上一格高障碍、在水中游动;若卡住(如被栅栏挡住)超过 1.25 秒,会自动传送到目标附近的安全落点继续走。无法站立的目标(悬空、埋在方块里、周围没有实地)会在出发前直接拒绝并提示;超出世界高度、超出世界边界、距离超过 1024 格的目标同样拒绝。执行/fp stop可中止行程。 /fp skin现支持正版玩家(通过 SkinsRestorer)。 装有 SkinsRestorer 时按官方 API 解析皮肤,用PlayerStorage.setSkinIdOfPlayer持久化选择以便下次进服恢复,再通过平台 applier 应用解析出的属性——解析与存储全在异步线程,应用在实体线程(Folia 安全)。未安装 SkinsRestorer 时仍走原有的 Mojang API 路径。- HTTP 管理接口新增五个端点。
/goto(寻路前往坐标,无法抵达的目标直接拒绝)、/setping(Tab 列表延迟)、/sneak与/sprint(切换或设置,state=true|false)、/reload(重载config.yml与语言文件)。每个端点都在http-admin.interface下有独立开关。 - 新增
share-fakeplayer配置项。 开启后假人 UUID 由名称确定性生成,同一名称始终对应同一 UUID——不同玩家可以轮流控制同一个假人,且usercache.json不再每次召唤都累积新记录。
破坏性变更
- 移除 Modrinth 分发。 因项目未通过 Modrinth 审核(6.2b,AI 生成内容比例超标)无法上架,资源已删除;全部相关集成(同步工作流、脚本、README 下载链接)已移除。今后仅通过 GitHub Releases 下载。
config.yml版本提升至 28,自动登录配置从最外层平铺改为树形结构(auto-login.command.*、auto-login.random-password.*)。原先auto-login: false看着像总开关,实际只控制命令模板登录;现在两套机制并列说明(另一种——AuthMe / CatSeedLogin / LibreLogin 的登录插件 API 免登录——无需任何配置)。旧平铺键仍会读取,现有配置继续有效。
关键修复
- 修复
/fp say在 Paper 上执行成功却不发消息。 假人原先设置了ChatVisiblity.SYSTEM,导致ServerGamePacketListenerImpl.chat()在进入ChatProcessor前直接返回。现在允许完整聊天,继续通过原有聊天事件管线发送,兼容 EssentialsX Chat、Vane 等格式化插件。直接输入/fp say现在会显示用法;只输入消息(如/fp say once hello)时也能正确使用已选假人(#76,感谢 @ifloppy)。 - 修复
/fp goto误拒可抵达目标。 落点搜索原先在某方向首个候选过远时就放弃整个方向,会漏掉更低处更近的落点(斜坡、阶梯地形);现逐层继续查找,找完全部候选取最优(#77,感谢 @lldxlzy)。 - 修复与 Nexo 共载时语言文件失效。
CommandHelpLocalizer原先用ResourceBundle.getBundle()加载消息文件,其全局静态缓存与 SPI 查找会与其他插件(Nexo)的类加载器冲突,导致/fp帮助与描述显示原始 key;改为ClassLoader.getResourceAsStream直接读取 properties(#150,感谢 @fuzhulike)。
重要说明
config.yml当前版本为 28。现有配置继续有效;auto-login、register、login等旧平铺键仍会被读取,但建议迁移到新的配置树。- 每个 HTTP 端点都可在
http-admin.interface下单独关闭;五个新端点默认开启。 - SkinsRestorer 为可选软依赖——未安装时
/fp skin仍通过 Mojang API 工作。 - 本版本同时在仓库中添加了 Apache-2.0
LICENSE文件。
使用要求
- Java:25+(必需)
- 服务端:Paper / Leaf 1.20.1+(兼容 Purpur;支持 Folia)
- API:CommandAPI 12.0.0+(Minecraft 26.3 需 12.1.0+)
- 可选集成:SkinsRestorer(正版皮肤)、AuthMe / CatSeedLogin / LibreLogin(登录插件 API 免登录)
鸣谢
- CE 维护:@EndlessPixel
- @ifloppy(PR #76:
/fp say走 Paper 聊天管线) - @lldxlzy(PR #78 / issue #77:
/fp goto落点搜索修复) - @fuzhulike(issue #169:
share-fakeplayer;issue #150:NexusMC 语言文件修复)