1快速开始

FakePlayerPlugin 用来在服务器里放置不会掉线的"假玩家"。 常用来占住挂机位:本体不用一直开着,假人替你留在服务器里,保持在线状态并维持所在区块加载。

三步上手

  1. 把 FakePlayerPlugin.jar 放入 plugins/ 目录并重启服务器。
  2. 站在你想放假人的位置,执行 /fp add 假人名字。
  3. 用 /fplist 确认已创建;不想要了就 /fpr 名字 移除。
⚠️
命令对所有人开放,但有名额 /fp、/fp add、/fp gui 谁都能用; 每个玩家默认 2 个免费名额。移除别人创建的假人、一次清空全部 才需要管理员权限。

2假人名字与防冒充

假人和真实玩家共用同一个名字空间(TAB、头顶、/lookup 都按名字找人), 所以假人的名字是保留段:由插件统一加前缀,玩家没法用同名账号混进来。

自动前缀

执行 /fp add Steve,真正创建的假人叫 FP_Steve。 前缀由 format.name-prefix 决定(默认 FP_); 如果名字里已经带了前缀(/fp add FP_Foo),不会再叠一层变成 FP_FP_Foo。

显示格式

头顶和 TAB 的名字可以单独配,默认是 &7[&b假人&7] &f%name%, %name% 会被替换成假人名字,支持 & 颜色码。

防冒充

真实玩家登录时,只要命中下面任何一条,在进服之前就被拒绝:

情况结果
名字落在保留前缀里(如 FP_xxx)拒绝登录:这是假人专用的名字前缀
名字和已有假人重名(不区分大小写)拒绝登录:服务器里已经有一个同名假人
✅
不会污染玩家名册 被挡下来的登录发生在玩家档案落盘之前,所以这些名字不会被记进 usercache.json,也不会让你以后建假人时误判成「这是真实玩家」。

名字规则

规则说明
长度 ≤ 161.12.2 协议硬上限,超了会让同世界玩家客户端解码失败掉线
只用 A-Z a-z 0-9 _不能有空格、点、颜色码
不区分大小写查重FP_Steve 和 FP_steve 视为同一个
不能是真实玩家名读服务器本地玩家名册判断;读不出来时拒绝创建(宁可不让建,也不占真人名字)
保留词黑名单admin、server、all、op、notch 等不能当假人名

配置

配置项说明
format.name-prefix假人专用前缀,默认 FP_
format.overhead头顶显示格式
format.tabTAB 列表显示格式
format.block-impersonation是否拦截冒充登录,默认开
format.migrate-legacy老假人是否自动改名成带前缀的,默认开
spawn.gamemode假人的游戏模式,默认 CREATIVE(创造)。改成 SURVIVAL 才会被怪打死
spawn.invulnerable假人是否无敌,默认开(除 /kill 与掉虚空)
⚠️
改前缀会锁死已经用掉的名字 把前缀改成很常见的串(比如 a_),所有以它开头的真人账号都会进不来; 把前缀留空则等于关掉防冒充。想改的话先用 /fpr 清掉旧假人再换。

假人会不会被怪打死

不会。假人默认是创造模式 + 无敌:僵尸、骷髅、苦力怕都打不死它, 怪物甚至不会把它当目标。这样假人挂机时不会因为一次夜袭就消失。

配置默认效果
spawn.gamemodeCREATIVE创造模式,怪物不攻击;填 SURVIVAL 会像真人一样被打死
spawn.invulnerabletrue除了 /kill 和掉虚空,任何伤害都无效

生成时服务器日志会打一行 [假人] FP_Linux 游戏模式 = CREATIVE,无敌 = true, 想知道当前是什么模式看这行就行。

老假人怎么办(自动改名)

升级前创建的假人(比如 LtTestCarol)名字和真人一样。为了统一成新格式, 插件会在开服 / /fpreload 时自动把 data.yml 里的名字改掉:

改之前改之后
LtTestCarolFP_LtTestCarol
LinuxFP_Linux

只动名字:世界、坐标、朝向、创建者、创建时间、三个单假人开关、开/关状态全部原样保留, 关掉的假人改名后依然是关闭状态 —— 是整段搬到新键下,不是重建。

⚠️
两种情况不会改名,会跳过并告警 ① 老名字本身已经 13 个字符以上,加前缀超过 16 字符协议上限; ② 改名后与已存在的假人撞名。这两种都会在日志里点名,需要手工删掉后用 /fp add 重建。

不想自动改名,把 format.migrate-legacy 设为 false —— 老假人照常能用、同样受防冒充保护,只是名字不带前缀(日志会提醒一次)。

改名会释放旧名字:改完之后真人可以注册 LtTestCarol 了(那已经不再是假人)。 如果有别的插件、脚本或白名单里写着老名字,记得同步改过来;InTheNameOfLinux 的 假人联动会自动跟上。

3命令详解

命令说明权限
/fp打开假人管理面板(没装 LinuxChestGUI 时显示插件信息)所有人
/fp add <名字>在当前位置创建一个假人(受名额限制,名字会自动套上假人前缀)所有人
/fp gui打开假人管理面板(装了 LinuxChestGUI 才有这条)所有人
/fp help显示帮助菜单所有人
/fplist列出服务器上所有假人OP
/fpr <名字>移除指定假人OP
/fpr all移除全部假人OP
/fpreload重载插件配置OP
/fpsave手动保存假人数据OP
旧写法已删除。 /fp <名字>、/fakeplayer <名字> 都不再创建假人, 打进去只会回一句「未知子命令」并给出用法。必须写成 /fp add <名字> —— 否则名字和 add / gui / help 这些子命令会互相打架。

完整命令名

上面都是简写,完整命令名如下(两套都可以用):

简写完整命令名其它别名
/fp/fakeplayer—
/fplist/fakeplayerlist/fpl
/fpr/fakeplayerremove/fpremove
/fpreload/fakeplayerreload—
/fpsave/fakeplayersave—

4使用技巧

假人会一直在原地吗

会。假人创建在你执行命令时所站的位置,之后不会自己走动。 插件会强制加载它所在的区块,所以不会因为区块卸载而掉进虚空。

怎么让假人换个位置

直接 /fpr 名字 移除,然后走到新位置重新 /fp add 名字 创建。 目前不支持直接移动已有假人。

服务器重启后假人还在吗

在。假人数据会写入配置文件,启动后插件分三次延迟加载 (40 / 100 / 200 tick),避免和其它插件抢加载时序。 如果发现假人没回来,先执行 /fplist 确认,再 /fpsave 手动存一次。

会不会被登录插件踢掉

不会。插件兼容 AuthMe,假人不参与登录验证流程, 不会被登录插件判定为"未登录玩家"而踢下线。

💡
和 InTheNameOfLinux 联动 装了 InTheNameOfLinux 的话,/linux lookup <假人名> 会识别出这是假人, 并显示创建者;/linux fp 可以查看假人联动状态, /linux fpsync 手动同步假人数据。

5配置与数据

数据文件

假人数据保存在插件目录下,一般不需要手动编辑:

文件内容
fakeplayers.yml所有假人的名字、位置、创建者

手动保存

插件会在数据变化时自动保存。如果刚做了大量增删、想立刻落盘, 执行 /fpsave。

重载

改了配置后执行 /fpreload,不会删除已有假人。

⚠️
不要手动改位置坐标 直接编辑 fakeplayers.yml 里的坐标容易把假人放到未加载的区块, 导致它卡在墙里或掉出世界。要换位置请用命令重新创建。

6名额与购买

普通玩家创建假人是有限额的,避免一个人把常驻区块吃满。

项目默认值配置键
免费名额2 个limits.default
名额上限5 个limits.max
单个价格600 点卷limits.buy-price
最多可买3 个limits.buy-max
免限额权限fakeplayer.bypasslimits.bypass-permission

怎么买

  1. 游戏里输入 /pshop 打开点券商店
  2. 点特殊商品
  3. 点假人名额 +1,扣 600 点卷并立刻到账

名额记在 plugins/FakePlayerPlugin/quota.yml, 和假人数据分开存,删假人不会退名额。

面板里不扣费。 /lchest → 假人管理 → 购买名额 只是把你送到点券商店, 真正的扣费只发生在商店里 —— 不会出现两边各自扣一次的情况。
管理员不受名额限制。 带 fakeplayer.bypass 权限的账号创建假人不占名额, 也不受 max-fake-players 总数上限约束。

7单假人配置

三个功能开关是每个假人各管各的,不是全局的: /lchest → 假人管理 → 假人列表 → 点某个假人 → 假人设置。

开关作用存到 data.yml
区块常驻把它注册进 PlayerChunkMap,周围区块真正在 tickchunk-loaded
原版刷怪参与原版刷怪:服务端把它当真玩家,群系 / 亮度 / 结构全按原版mob-spawning

没被单独改过的假人不写这三个键,直接跟随 config.yml 的 keep-loaded-chunks / mob-spawning.enabled / mob-spawning.require-covered —— 面板上会显示「未单独设置(跟随全局)」。

关掉某个假人的「区块常驻」会立刻把它从 PlayerChunkMap 里摘掉(removePlayer), 再打开会重新注册,不用重启服务器。

8常见问题

创建假人提示失败?
常见原因:名字已被占用(包括真实玩家名);名字含有非法字符; 当前区块无法加载。换个名字重试即可。
假人不见了?
先 /fplist 确认它是否还在记录里。 如果记录里有但看不到,多为区块未加载或客户端视野问题; 如果记录里也没有,说明数据没保存成功,重新创建并用 /fpsave 存一次。
假人算在线人数吗?
取决于其它插件怎么统计。本插件不参与原版在线人数计算, 但很多统计类插件会把假人算进去 —— 这也是挂机时它能顶替真实玩家的原因。
能一次创建很多假人吗?
没有批量命令,需要一条一条 /fp add 名字 创建。 数量很多时注意服务器性能,每个假人都会占用少量资源并强制加载所在区块。
怎么一次性清空所有假人?
执行 /fpr all。该操作不可撤销,会立即移除全部假人。

9生物保活(keep)

把生物命名为 keep,它就不会被原版刷掉。

怎么做

  1. 拿一个命名牌,改名为 keep
  2. 右键目标生物(末影螨、蠹虫、蝙蝠、任何可命名生物)
  3. 聊天栏立即收到:[FakePlayer]生物将会被Linux的插件保护!
ℹ️
名字判定规则 去掉颜色代码后,只要包含 keep 就算(不区分大小写), 所以 keep、Keep、§akeep、myKeep 都行。

为什么需要

原版很多生物都有 despawn 机制:周围一定距离内没有玩家时会被随机删除。 命名牌改名本身并不会阻止这件事 —— 必须显式关掉 removeWhenFarAway 并打开 persistent。

实现方式

触发动作
生物生成(EntitySpawnEvent)名字含 keep → 立即加保护
命名牌改名下一 tick 检查新名字 → 加保护 + 给操作者回执
每 20 秒补扫遍历已加载实体,覆盖区块重载等情况

配置

配置项说明
keep-entity.scan-seconds补扫间隔(秒),默认 20
keep-entity.debug后台打印每轮维护了多少生物
⚠️
只防原版 despawn 如果有插件主动 remove() 实体(清理任务),那是拦不住的,需要在那个插件里加白名单。