Skip to content

FakePlayer-CE.Build15

Choose a tag to compare

@EndlessPixel EndlessPixel released this 24 Oct 13:09
· 67 commits to master since this release

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 stop cancels an ongoing trip.
  • /fp skin now supports premium players through SkinsRestorer. With SkinsRestorer installed, the skin is resolved through its official API (SkinStorage.findOrCreateSkinData), the choice is persisted with PlayerStorage.setSkinIdOfPlayer so 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), /sneak and /sprint (toggle or set via state=true|false), and /reload (reload config.yml and translations). Each has its own switch under http-admin.interface.
  • New share-fakeplayer option. 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, and usercache.json no 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.yml bumped 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: false used 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 say doing nothing on Paper (silent success, no chat message): fake players had ChatVisiblity.SYSTEM, which made ServerGamePacketListenerImpl.chat() return before ChatProcessor could 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 say without a subcommand now shows usage, and message-only invocation (/fp say once hello) respects the selected fake player (#76, thanks to @ifloppy).
  • Fixed /fp goto refusing 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. CommandHelpLocalizer loaded message files through ResourceBundle.getBundle(), whose global static cache and SPI lookup can clash with other plugins' class loaders (Nexo), leaving /fp help and descriptions as raw keys. It now reads the properties through ClassLoader.getResourceAsStream (#150, thanks to @fuzhulike).

Important Notes

  • config.yml is 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 to true.
  • SkinsRestorer is an optional soft dependency — /fp skin keeps working without it via the Mojang API.
  • This build adds an Apache-2.0 LICENSE file 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


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 免登录)

鸣谢