Skip to content
This repository was archived by the owner on Sep 11, 2026. It is now read-only.

Releases: EndlessPixel/FakePlayer-CE

FakePlayer-CE.Build7

Choose a tag to compare

@EndlessPixel EndlessPixel released this 14 Aug 08:27

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

FakePlayer-CE.Build6

Choose a tag to compare

@EndlessPixel EndlessPixel released this 13 Aug 05:42

FakePlayer-CE.Build6

Fake Player Entity Removal Fix & Full Leaf Compatibility Polish
This release fixes the core issue that fake players could not be completely removed from the server, thoroughly optimizes the fake player cleanup logic, perfects compatibility with all modern Leaf forks, and inherits all stability fixes from Build5.
Highlights

  • Complete Fake Player Removal: Overhauled fake player cleanup logic, truly deregisters fake player entities from the server via native NMS methods, completely resolving the residual fake player issue.
  • Full Leaf Fork Compatibility: Adapted to Leaf’s special CraftServer#getServer() return logic, ensuring removal commands work normally on all Leaf versions.
  • Iterative Optimization Based on Build5: Inherits all Build5 fixes, including Leaf spawn exception fixes and CommandAPI 12.0.0 adaptation, for more stable overall performance.
    Critical Fixes
  • Fixed fake players cannot be completely removed (Issue #3): Traditional Player.kick() is a no-op for custom NetworkManager-injected fake players. The old logic only cleared internal plugin records but did not disconnect server-side entities. The new cleanup process calls NMS native PlayerList.remove(ServerPlayer) to permanently deregister fake player entities from the server. Fully compatible with Leaf forks that directly return PlayerList via CraftServer#getServer().
  • Inherited Build5 Compatibility Fix: Resolved ClassCastException when executing/fp spawn on Leaf 1.21.11 / 26.2, fixing the type conversion error between DedicatedPlayerList and MinecraftServer.
    Important Notes
  • Vanilla native /kick command cannot affect fake players by design, as fake players do not occupy real server connections.
  • Please use the dedicated plugin commands /fp kill or /fp killall to remove fake player entities.
    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.Build6 —— 假人彻底移除修复与 Leaf 兼容性完善

假人实体彻底移除修复、全版本 Leaf 分支兼容优化
本次更新修复了假人无法从服务器彻底删除的核心问题,全面重构假人清理逻辑,完善对全系现代 Leaf 服务端分支的适配,并继承 Build5 所有稳定性修复内容。
核心特性

  • 假人彻底移除机制:全面改版假人清理逻辑,通过 NMS 原生方法从服务端注销假人实体,彻底解决假人残留、无法删除的问题。
  • 全量 Leaf 分支兼容:适配 Leaf 服务端 CraftServer#getServer() 特殊返回逻辑,确保假人删除指令在所有 Leaf 版本正常生效。
  • 迭代继承 Build5 修复:完整保留 Build5 所有修复内容,包含 Leaf 假人生成异常修复、CommandAPI 12.0.0 适配,整体运行更稳定。
    关键修复
  • 修复假人无法彻底移除问题(Issue #3):插件假人通过自定义 NetworkManager注入服务端,原生 Player.kick() 对假人连接为空操作。旧版逻辑仅清空插件内部记录,未真正断开服务端实体。新版清理流程调用 NMS 原生 PlayerList.remove(ServerPlayer),可从服务器彻底注销假人实体,同时完美适配 CraftServer#getServer() 直接返回PlayerList 的 Leaf 分支服务端。
  • 继承 Build5 兼容性修复:解决 Leaf 1.21.11 / 26.2 版本中,执行 /fp spawn 出现的类型转换异常,修复 DedicatedPlayerList 无法转换为 MinecraftServer 的报错。
    重要说明
  • 服务端原版 /kick 指令对假人无效,属于设计特性,原因是假人并非真实客户端连接。
  • 移除假人请使用插件专属指令:/fp kill(移除单个假人)或 /fp killall(移除所有假人)。
    使用要求
  • Java: 21+(26.x 服务端推荐使用 Java 25)
  • 服务端: Paper / Leaf 1.20.1+(兼容 Purpur 服务端)
  • 前置依赖: CommandAPI 12.0.0 及以上(必需前置)
    鸣谢
  • CE 维护: @EndlessPixel

FakePlayer-CE.Build5

Choose a tag to compare

@EndlessPixel EndlessPixel released this 12 Aug 05:05

FakePlayer-CE.Build5

Loader & Spawn Compatibility: CommandAPI 12, Adventure 4.x & Leaf Forks
This release makes FakePlayer-CE load and spawn correctly on modern Leaf/Paper forks. It upgrades to CommandAPI 12.0.0, shades a self-contained adventure copy (fixing the UTF8ResourceBundleControl startup crash), and fixes a ClassCastException that broke /fp spawn on Leaf 1.21.11 / 26.2.

Highlights

  • CommandAPI 12.0.0 Support: Updated command argument construction to the new Argument(String, ArgumentType) signature.
  • Self-Contained Adventure: adventure-api / adventure-text-minimessage are now shaded into the plugin (previously compileOnly), so the plugin no longer relies on the server's adventure copy.
  • Leaf Spawn Fix: /fp spawn no longer throws ClassCastException on Leaf forks whose CraftServer#getServer() returns the player list instead of the MinecraftServer.

Critical Fixes

  • Fixed Startup NoClassDefFoundError (Leaf 26.2 + CommandAPI 12.0.0): adventure 4.17 removed net.kyori.adventure.util.UTF8ResourceBundleControl, which devtools still references, and the server's adventure copy is not visible to the plugin classloader. Added a self-contained UTF8ResourceBundleControl (pure JDK ResourceBundle.Control, UTF-8 properties) and changed adventure dependencies to implementation so the plugin shades its own copy.
  • Fixed ClassCastException on /fp spawn (Leaf 1.21.11 / 26.2): Reflections.getServer() called CraftServer.getServer(), which on Leaf forks returns the DedicatedPlayerList rather than the MinecraftServer, causing DedicatedPlayerList cannot be cast to MinecraftServer at NMSServerImpl.<init>. Added Reflections.getMinecraftServer(server, mcServerClass) which resolves the MinecraftServer via its exact-typed console field and only falls back to getServer() when no such field exists. Verified locally: /fp spawn creates a fake player correctly on Leaf 26.2 + CommandAPI 12.0.0.

Usage

  • Java: 21+ (Java 25 recommended for 26.x support)
  • Server: Paper / Leaf 1.20.1+ (Purpur compatible)
  • API: CommandAPI 12.0.0+

Credits


FakePlayer-CE.Build5 —— 加载与生成兼容:CommandAPI 12、Adventure 4.x 与 Leaf 分支

本次更新让 FakePlayer-CE 能在现代的 Leaf / Paper 分支上正常加载并生成假人。我们升级到 CommandAPI 12.0.0,将 adventure 以自包含方式打包(修复 UTF8ResourceBundleControl 启动崩溃),并修复了在 Leaf 1.21.11 / 26.2 上导致 /fp spawn 失败的 ClassCastException。

核心特性

  • 支持 CommandAPI 12.0.0:命令参数构造已更新为新的 Argument(String, ArgumentType) 签名。
  • 自包含 adventure:adventure-api / adventure-text-minimessage 现在被打包进插件(此前为 compileOnly),不再依赖服务端自带的 adventure。
  • 修复 Leaf 生成崩溃:在 CraftServer#getServer() 返回玩家列表而非 MinecraftServer 的 Leaf 分支上,/fp spawn 不再抛出 ClassCastException。

关键修复

  • 修复启动 NoClassDefFoundError(Leaf 26.2 + CommandAPI 12.0.0):adventure 4.17 移除了 net.kyori.adventure.util.UTF8ResourceBundleControl,而 devtools 仍引用该类,且服务端自带的 adventure 对插件类加载器不可见。新增自包含的 UTF8ResourceBundleControl(纯 JDK ResourceBundle.Control,UTF-8 读取 properties),并将 adventure 依赖改为 implementation 打包进插件。
  • 修复 /fp spawn 的 ClassCastException(Leaf 1.21.11 / 26.2):Reflections.getServer() 调用 CraftServer.getServer(),在 Leaf 分支上该方法返回的是 DedicatedPlayerList 而非 MinecraftServer,导致在 NMSServerImpl.<init> 处报 DedicatedPlayerList cannot be cast to MinecraftServer。新增 Reflections.getMinecraftServer(server, mcServerClass),优先按精确类型反射 CraftServer 上的 console 字段获取 MinecraftServer,仅当找不到该字段时才回退到 getServer()。本地实测:在 Leaf 26.2 + CommandAPI 12.0.0 上 /fp spawn 已能正确创建假人。

使用要求

  • Java: 21+ (推荐 Java 25 以支持 26.x)
  • 服务端: Paper / Leaf 1.20.1+ (兼容 Purpur)
  • API: CommandAPI 12.0.0+

鸣谢

FakePlayer-CE.Build4

Choose a tag to compare

@EndlessPixel EndlessPixel released this 10 Aug 07:13

FakePlayer-CE.Build4

Interaction & Stability: Replenish, Live Config & Loader Compatibility
This release fixes long-standing Fakeplayer quirks: tools now auto-repair under replenish, config changes apply immediately to online Fakeplayers, and Mohist loading no longer crashes. We also hardened the look/movement logic against remapped server implementations.

Highlights

  • Live Config Applied Instantly: Changing /fp config (e.g. invulnerable, collidable, pickup_items) now takes effect on already-online Fakeplayers without respawn.
  • Tool Auto-Repair: Replenish now periodically repairs worn tools whose durability drops (previously only event-triggered consumables were refilled).
  • Mohist Compatibility: Removed direct dependency on io.papermc.paper.entity.LookAnchor, eliminating NoClassDefFoundError on remapped (Mohist) servers.

Critical Fixes

  • Fixed Invincible Fakeplayers (tanyaofei#178, tanyaofei#181, tanyaofei#199): setFeature previously only persisted to DB and never re-applied modifiers to live Fakeplayers, so invulnerable false had no effect. Now saved changes are pushed to the creator's online Fakeplayers immediately.
  • Fixed Tools Not Replenished (tanyaofei#195): Tools wear via durability loss, which fires no refill event. Added a periodic check (replenish.tools.durability-threshold in config.yml, 0–100% wear, default off) that repairs held items once worn past the threshold.
  • Fixed Mohist Load Crash (tanyaofei#200): LookAtEntityAction and RotationCommand referenced io.papermc.paper.entity.LookAnchor, which Mohist remaps and fails to find. Replaced with pure NMS angle calculation (LookUtils), no io.papermc dependency at load time.

Usage

  • Java: 21+ (Java 25 recommended for 26.x support)
  • Server: Paper 1.20.1+ (Purpur compatible)
  • API: CommandAPI 11.1.0+

Credits


FakePlayer-CE.Build4 —— 交互与稳定性:自动补货、实时配置与加载兼容

本次更新修复了多个长期存在的假人问题:自动补货现在会修复磨损的工具,配置修改会立即作用于在线假人,并且 Mohist 端加载不再崩溃。同时强化了朝向/移动逻辑以兼容被重映射的服务端实现。

核心特性

  • 配置实时生效:修改 /fp config(如无敌、可碰撞、拾取物品)现在会立即作用于已经在线(spawned)的假人,无需重新生成。
  • 工具自动修复:开启自动补货后,会周期性修复耐久下降的工具(此前仅补充由事件触发的消耗品)。
  • Mohist 兼容:移除了对 io.papermc.paper.entity.LookAnchor 的直接依赖,消除在 Mohist 等重映射服务端上的 NoClassDefFoundError。

关键修复

  • 修复假人无法取消无敌(tanyaofei#178, tanyaofei#181, tanyaofei#199):setFeature 此前只写入数据库、不会把 modifier 重新应用到在线假人,导致 invulnerable false 不生效。现在保存后会立即将变更推送给该创造者的在线假人。
  • 修复工具不被补货(tanyaofei#195):工具靠耐久磨损消耗,而磨损不触发任何补货事件。新增周期性检查(在 config.yml 配置 replenish.tools.durability-threshold,0–100% 磨损阈值,默认关闭),磨损超过阈值时自动修复手中物品。
  • 修复 Mohist 加载崩溃(tanyaofei#200):LookAtEntityAction 与 RotationCommand 引用了 io.papermc.paper.entity.LookAnchor,Mohist 会重映射该类导致其找不到。改用纯 NMS 角度计算(LookUtils),加载时不依赖 io.papermc。

使用要求

  • Java: 21+ (推荐 Java 25 以支持 26.x)
  • 服务端: Paper 1.20.1+ (兼容 Purpur)
  • API: CommandAPI 11.1.0+

鸣谢

FakePlayer-CE.Build3

Choose a tag to compare

@EndlessPixel EndlessPixel released this 10 Aug 05:36

FakePlayer-CE.Build3

Stabilizing the Core: NMS Lifecycle & Interaction Fixes
This release focuses on internal stability, fixing critical crashes during plugin reloads and enhancing NMS compatibility for the latest Minecraft versions. We also introduced a new interaction command for Fakeplayers.

Highlights

  • New /fp say Command: Fakeplayers can now send chat messages directly via NMS network packets.
  • NMS Stability: Fixed lifecycle management issues, preventing crashes during /reload or plugin disabling.
  • Slim & Efficient: Continued use of ShadowJar to ensure a lightweight build (~500KB).

Critical Fixes

  • Fixed Chat Method Signature: Adapted to the new API by adding the missing lastSeenMessages parameter, resolving NoSuchMethodError in newer versions.
  • Fixed Plugin Reload Crashes: Implemented graceful shutdown logic to unregister commands and clean up resources, preventing IllegalPluginAccessException.
  • Fixed NMS Packet Handling: Refined ClientboundRespawnPacket and motion packet handling for better cross-version compatibility (1.20.1 - 26.2).
  • Fixed BungeeCord Channel: Corrected plugin message channel validation to ensure compatibility with proxy networks.

Usage

  • Java: 21+ (Java 25 recommended for 26.x support)
  • Server: Paper 1.20.1+ (Purpur compatible)
  • API: CommandAPI 11.1.0+

️ Credits


FakePlayer-CE.Build3 —— 核心稳固:NMS 生命周期与交互修复

本次更新专注于内部稳定性,修复了插件重载时的关键崩溃问题,并增强了针对最新 Minecraft 版本的 NMS 兼容性。同时,我们为假人引入了全新的交互指令。

核心特性

  • 新增 /fp say 命令:假人现在可以通过 NMS 网络包直接发送聊天消息。
  • NMS 稳定性提升:修复了生命周期管理问题,防止在执行 /reload 或禁用插件时发生崩溃。
  • 轻量高效:继续使用 ShadowJar 构建,保持极致轻量的体积 (~500KB)。

关键修复

  • 修复聊天方法签名不匹配:适配新版 API,补充了缺失的 lastSeenMessages 参数,解决了新版服务端报错的问题。
  • 修复插件重载崩溃:实现了优雅停机逻辑,正确注销命令并清理资源,防止出现 IllegalPluginAccessException。
  • 修复 NMS 数据包处理:优化了 ClientboundRespawnPacket 和实体运动包的处理逻辑,提升跨版本兼容性 (1.20.1 - 26.2)。
  • 修复 BungeeCord 通道问题:修正了插件消息通道的校验逻辑,确保在代理网络环境下的兼容性。

使用要求

  • Java: 21+ (推荐 Java 25 以支持 26.x)
  • 服务端: Paper 1.20.1+ (兼容 Purpur)
  • API: CommandAPI 11.1.0+

️ 鸣谢

FakePlayer-CE.Build2

Choose a tag to compare

@EndlessPixel EndlessPixel released this 28 Jul 14:26

Changes

  • feat: 适配 v26_2 版本并升级构建配置至 Java 25
  • build: 升级 paperweight 并配置 reobf
  • feat: 适配 Minecraft 26.1 与 26.2 版本
  • docs: 添加 NMS 变更总结报告

支持的版本

  • 1.20.1 ~ 1.20.6
  • 1.21 ~ 1.21.11
  • 26.1 / 26.1.1 / 26.1.2 / 26.2

FakePlayer-CE.Build1

Choose a tag to compare

@EndlessPixel EndlessPixel released this 19 Jun 01:05

🚀 FakePlayer-CE Build1 — Modern Paper Plugin Reborn

The first stable milestone of FakePlayer Community Edition.

This release migrates the original abandoned project to modern Paperweight Userdev standards, introducing a clean multi-version NMS architecture and a slim build (~500KB).

✨ Highlights

  • ✅ Migrated from Maven to Gradle Kotlin DSL
  • ✅ Adopted Paperweight Userdev (Mojang mappings)
  • ✅ Multi-version NMS support: 1.20.1 → 1.21.11
  • ✅ Slim ShadowJar (~500KB) — no dependency conflicts
  • ✅ Full compatibility with Paper / Purpur / Pufferfish

🐛 Critical Fixes

  • Fixed inventory loading failures
  • Fixed /openinv compatibility
  • Fixed placeholder translations
  • Fixed %fakeplayer_actions% resolution
  • Fixed after-quit command execution
  • Fixed NMS mapping breakages across 1.21.9–1.21.11

📦 Usage

  • Java: 21+ (Java 25 recommended for future 26.x support)
  • Server: Paper 1.20.1+ (Purpur compatible)
  • API: CommandAPI 11.1.0+

❤️ Credits

I am also the first time to build such a large plug-in, there may be some unexpected or functional anomalies, if there is a problem, you can tell me in the issues.


🚀 FakePlayer-CE Build1 —— 面向 Paper 时代的假人插件重生

FakePlayer 社区版的首个稳定里程碑。

本次发布将原作者已弃坑的项目迁移至现代 Paperweight Userdev 标准,引入了清晰的多版本 NMS 架构与极致瘦身的构建产物(~500KB)。

✨ 核心特性

  • ✅ Maven → Gradle Kotlin DSL 现代化构建
  • ✅ 全面接入 Paperweight Userdev(Mojang 原生映射)
  • ✅ 多版本 NMS 支持:1.20.1 → 1.21.11
  • ✅ ShadowJar 极致瘦身(~500KB),彻底杜绝依赖冲突
  • ✅ 原生兼容 Paper / Purpur / Pufferfish

🐛 关键修复

  • 修复假人背包加载失败
  • 修复 /openinv 兼容性问题
  • 修复 Placeholder 汉化异常
  • 修复 %fakeplayer_actions% 变量解析
  • 修复退出后命令执行逻辑
  • 修复 1.21.9–1.21.11 的 NMS 映射断裂

📦 使用要求

  • Java: 21+(推荐 Java 25,为 26.x 预热)
  • 服务端: Paper 1.20.1+(兼容 Purpur)
  • API: CommandAPI 11.1.0+

❤️ 鸣谢

我也是第一次构建如此大型的插件,可能会出现一些意外或功能异常,如果有问题可以在 issues 中告诉我