2.8.0-beta.4
on 2025 Dec 20这是一个基于 1.21.11/feature 的构建。
我们建议所有使用 1.21.11/feature 分支并启用了实例网络功能的用户,在所有从服务器上更新到此版本。
修复内容
- 实例网络:从服务器在应用来自主服务器的同步数据前未清除现有数据
- 此问题还可能引发另一个问题,即发送给玩家的字符串命令过大
- 此问题不影响
1.21.11/main分支的构建,因为它们不包含部分同步功能
- 在 Folia 上伪装时有极小概率失败,错误信息为
... this.revealingHandler is null.
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-beta.2...2.8.0-beta.4
2.6.0-alpha.4
on 2025 Dec 20这是基于 1.21.10/feature 的构建。
我们建议使用 1.21.10/feature 分支并启用实例网络功能的所有从服务器更新到此版本。
新功能
- 假装装备技能已扩展至更多生物
修复内容
- 实例网络:从服务器在应用来自主服务器的同步数据前未清理现有数据
- 此问题还可能引发另一个问题,即发送给玩家的字符串命令过大
- 此问题不影响
1.21.10/main分支的构建,因为它们不包含部分同步功能
完整变更日志: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-alpha.3...2.6.0-alpha.4
2.8.0-beta.2
on 2025 Dec 17新增特性
- 为鹦鹉螺和僵尸鹦鹉螺添加能力
- 变形为鹦鹉螺现在会使玩家获得水下呼吸效果,并在空气中脱水
- 变形为僵尸鹦鹉螺还会使玩家在未装备头盔时于阳光下燃烧
- 添加冲刺技能
- 变形为骆驼/荒漠骆驼现在可在地面或水下冲刺
- 变形为鹦鹉螺/僵尸鹦鹉螺现在可在水下冲刺
修复问题
- 修复了检查当前代码是否运行在实体tick线程时可能发生的错误
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-alpha.2...2.8.0-beta.2
修复
- 修复了在检查当前代码是否处于实体的tick线程时可能出现的错误。
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.7.0...2.7.1
2.8.0-alpha.2
on 2025 Dec 11修复内容
- 修复在控制台中,每当调用伪装文本图标时,调试信息
Text icon for <...> is <...>会大量刷屏的问题
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.8.0-alpha.1...2.8.0-alpha.2
2.6.0-alpha.3
on 2025 Dec 10新特性
- 现在
DisguiseProperty的实例可以声明其对客户端模组不可见- FeatherMorph 目前尚无需要此功能的属性;该功能主要为其他插件开发准备。
- 为
InputHandles添加了readString方法。 - 当更新期间发生异常或异常被转发至
DisguiseState时,插件现在会尝试显示异常消息。 - 将异步玩家数据加载能力引入 Instance Network 的
IManagePlayerData。- 目前仅当启用 Instance Network 且当前服务器为网络中的从属服务器(Slave Server)时,才会完全使用异步加载功能。
- 若支持,当玩家进入配置状态时,插件将尝试异步加载其数据,并最多等待每名玩家 150 毫秒;超时后允许其继续登录,并在玩家数据加载完成时通知其客户端。
- 我们设置最多 150 毫秒的等待时间,是为了确保在快速机器上伪装解锁数据能在玩家登录后立即可用。
- 并且这个等待功能可能在下一个(编辑:下一个或未来的版本)中被移除,因为它实际上与 异步 概念冲突…… 🤯
其他
- 简化了部分位置的异常处理。
- 语言文件中的消息
morph.error_while_disguising_user_fault已重命名为morph.error_parsing_property。 - 批量处理玩家数据请求的间隔已从 10 ticks 调整为 2 ticks,以适配新的
IManagePlayerData#loadPlayerDataAsync方法。
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-alpha.2...2.6.0-alpha.3
2.8.0-alpha.1
on 2025 Dec 10这是 1.21.11/feature 分支的一次发布。
新特性
- [2.7.0] 添加了新的调试命令
/debugForValue,用于列出指定值集合中所有已注册的SingleValue。 - 增加对 Zombie Nautilus 变体属性的支持。
其他更新
- [2.7.0] 现在支持 1.21.11
- [2.7.0] 将 PacketEvents 升级至 2.11.0
- [2.7.0] 添加了一项临时解决方案,避免发送数据量过大的数据包。
- 这可以防止在尝试发送大量可用伪装或伪装数据时抛出异常。
- 目前尚无彻底解决此问题的方法,因此暂时不进行列表同步。玩家仍可通过
/morph命令选择伪装,其他功能也依然可用……除非数据仍然超出限制。
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.6.0-alpha.3...2.8.0-alpha.1
这是 1.21.11/main 分支的一次发布。有关即将推出的新特性,请参见 https://github.com/NiFeather/FeatherMorph/pull/61
新特性
- 新增调试指令
/debugForValue,用于列出指定值集合中所有已注册的SingleValue。
其他
- 现在支持 1.21.11
- 升级 PacketEvents 至 2.11.0
- 添加了一项规避措施:当数据体过大时不再发送数据包。
- 这可以防止在尝试发送大量可用伪装或庞大伪装数据时抛出异常。
- 目前尚不清楚如何彻底解决此问题,因此暂不同步该列表。玩家仍可通过
/morph指令选择伪装,其他功能也依然可用……除非数据仍然超出限制。
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.2...2.7.0
2.6.0-alpha.2
on 2025 Dec 04新特性
- 现在对模特使用交互镜子也需要玩家拥有正常的交互镜子权限
- 在新安装的实例中,默认会在快捷栏上方显示当前伪装的图标
- 击杀带有
feathermorph_nogrant标签的生物将不再为玩家解锁相关伪装 - 重构了插件向玩家发送消息的方式
- 现在可以使用
/fm extract language <lang>命令提取内置语言文件- 该命令的权限为
feathermorph.admin。 - 如果磁盘上已存在匹配的文件,默认会将提取的文件安装到
messages/<lang>.fmnew.json - 您可以通过使用
/fm extract language <lang> true来覆盖原文件,此操作需要再次执行以确认
- 该命令的权限为
- 实例网络中的从机现在在玩家加入时请求玩家数据,而不是主服务器在启动时加载并将所有数据同步到从机
- 现在可以在
PlayerUnMorphEvent中获取相关的DisguiseState实例 - 第三方插件现在能够在启动时将其
SingleProperty实例添加到DisguiseProperties,从而允许从玩家输入中自动分配
其他
- 模特现在会被交互镜子执行者正常选择,而不再被视为特殊对象
by_sight镜子模式现在会遵守配置文件中设置的最大影响距离- Gradle 任务
runFolia现已可用 - 伪装的快捷栏上方消息现在由
DisguiseState处理 - InputHandles 中的
readRotations在玩家提供超过 3 个元素时会抛出错误- 这意味着为盔甲架伪装的各种旋转属性提供超过 3 个元素时将导致错误消息
- 配置定义已从插件自身的
ConfigOption枚举迁移到 PluginBase 的ConfigOption类
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.2...2.6.0-alpha.2
这是 2.5 系列的一个维护版本。有关即将推出的新功能,请参见 2.6 alpha:https://github.com/NiFeather/FeatherMorph/pull/59
错误修复
- 附加击退能力在 Y 轴运动变化时始终增加 0.345584025,且不会对 X 和 Z 轴运动变化应用击退抗性。
- 当绑定的玩家退出时,伪装信标点未被移除的问题。
- 使
MorphBasicAvoidPlayerGoal在需要回避的玩家处于不同世界时忽略执行。- 此更改修复了在某些异常情况下 AI 抛出错误的问题。
其他
- 处理
MIC2SLoginCommand中无效的协议层级
完整更新日志:https://github.com/NiFeather/FeatherMorph/compare/2.5.1...2.5.2
从2025/11/3(YYYY/MM/DD)起,我们将1.21.10分支拆分为1.21.10/main和1.21.10/feature。
如果您在此之前克隆了仓库,请在拉取更新前删除本地存储的1.21.10分支!
2.5.1 版本变更
错误修复
entity/equipment输入为空时会导致未处理的异常
2.5.0 版本变更
新功能
- 现在玩家可以保存他们的伪装,并应用本地存储的伪装
- 这要求玩家使用客户端模组 0.16.0-beta.5 或更高版本!
- 为
entity/custom_name、mannequin/description和mannequin/hide_description属性添加权限feathermorph.custom_text,默认对玩家开放 - 添加用于使用伪装属性的权限:
feathermorph.disguise_properties.use - 添加用于为
entity/equipment属性中的物品设置自定义皮肤配置文件的权限,默认仅限管理员:feathermorph.disguise_properties.custom_skin_on_items - 添加对 模特 伪装的支持
- 默认情况下,无法使用 魔法瓶 收集 模特 伪装
- 模特 伪装具有与盔甲架和玩家伪装相同的 仿制装备 技能
mannequin/skin属性默认仅限管理员使用。您可为玩家授予feathermorph.custom_skin权限以启用该功能
- 添加对 铜傀儡 伪装的支持
- 默认情况下,可使用 魔法瓶 收集 铜傀儡 伪装
- 为铜傀儡伪装添加天气状态属性
- 初步兼容(?) Ping Wheel
- 使用官方 Ping Wheel 插件 可以正常工作,但在伪装状态下标记不会隐藏标记者身份
- ……因此我制作了一个自定义插件来临时解决此问题,可在 https://github.com/MATRIX-feather/pingwheel-plugin-forked 找到
- 初步支持拥有
feathermorph.mirror.mannequin权限的玩家将其潜行动作同步至与其伪装同名且描述相同的模特- 对于 BY_NAME 执行器,会选择范围内的模特,将影响距离设为 -1 可禁用范围限制
- 对于 BY_SIGHT 和 BY_RANGE,将在视线5格范围内选择目标模特
错误修复
- 当授予
feathermorph.disguise_use_real_uuid权限时,玩家伪装存在多个问题- 取消伪装时玩家会从TAB列表中消失
- 从远处传送或从旁观模式切换游戏模式时伪装不显示
slime_magma/size属性的随机范围错误- 覆盖方法中无人调用
BaseLivingEntityProperties#setupPropertiesFromEntity- 导致具有额外属性的伪装无法复制目标实体的自定义名称
其他
- 我们计划未来移除 BY_RANGE 镜像执行器,因其在网络状况不佳的玩家中引发混乱
- 现在部分抛出的异常将转发至 DisguiseState 并导致玩家取消伪装
- 调整了服务器渲染器重建从服务器发送的实体元数据包的方式
- 移除了伪装 NBT 黑名单配置
- 因其已不再使用
entity/custom_name和mannequin/description现在接受以{开头的 JSON 文本组件- 将部分伪装验证移至伪装准备早期阶段
2.5.0-rc.5
on 2025 Nov 12从2025/11/3(YYYY/MM/DD)开始,我们将1.21.10分支拆分为1.21.10/main和1.21.10/feature。
如果您在此之前已克隆了仓库,请在拉取更新前删除本地存储的1.21.10分支!
修复内容
- 为
ResolvableProfile添加了SkinPatch支持,修复了部分皮肤设置在客户端无法正确显示的问题。 - 明确声明
MorphResolvableProfileStruct是否正在呈现动态的ResolvableProfile,修复了部分皮肤在客户端无法显示的问题。- 上述两项修复要求玩家将客户端模组更新至
0.16.0-beta.6!
- 上述两项修复要求玩家将客户端模组更新至
entity/custom_name现在始终从目标实体复制,不再忽略实体类型- 在覆写方法中无人调用
BaseLivingEntityProperties#setupPropertiesFromEntity- 这导致具有额外属性的伪装形态无法复制目标实体的自定义名称。
完整更新日志:https://github.com/NiFeather/FeatherMorph/compare/2.5.0-rc.4...2.5.0-rc.5
从 2025/11/3(YYYY/MM/DD)起,我们将 1.21.10 分支拆分为 1.21.10/main 和 1.21.10/feature。
如果你在此日期前已克隆过仓库,请在拉取更新前删除本地存储的 1.21.10 分支!
修复
- 修复了当玩家语言环境为 "en_US" 而非 "en_us" 时导致的堆栈溢出(StackOverflow)问题
完整变更日志: https://github.com/NiFeather/FeatherMorph/compare/2.4.5...2.4.6
2.5.0-rc.3
on 2025 Nov 05修复
- 在之前的 2.5.0 beta 版本中,伪装有时会报告无法更新,并可能导致附近玩家因协议错误而断开连接
其他
- 捕获解析客户端
entity/equipment输入时的 JSON 错误,并将其包装为 ParseErrorException,以告知玩家数据格式不正确
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-rc.2...2.5.0-rc.3
2.5.0-rc.4
on 2025 Nov 05从 2025/11/3(YYYY/MM/DD)起,我们将 1.21.10 分支拆分为 1.21.10/main 和 1.21.10/feature。
如果你在此日期前克隆过仓库,在拉取更新前建议先删除本地存储的 1.21.10 分支!
修复内容
- 修复玩家伪装总是复制目标玩家皮肤的问题,此前未检查相关条件
- 修复当玩家语言环境为 "en_US" 而非 "en_us" 时引发的
StackOverflow异常
其他改进
- 允许在
FoliaThreadUtils#isTickThreadFor中bukkitEntity为 null - 当等待玩家线程超时时,
ServerBackend#disguise和SpawnPacketHandler#onEntityAddPacket将软失败:- 在
beta.6版本中,部分异常会被转发至玩家的DisguiseState,包括构建虚拟实体数据包时的等待超时 - 一旦超时,即使仅影响虚拟实体显示,玩家也会在下次 tick 时解除伪装
- 此更改可在服务器卡顿时提升玩家体验
- 在
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-rc.3...2.5.0-rc.4
2.5.0-rc.2
on 2025 Nov 05我们正在逐步将 Wiki 迁移至仓库中的 docs/ 目录下。如果你感兴趣,可以前往查看!
新功能
- [rc.1] 添加了使用伪装属性的权限:
feathermorph.disguise_properties.use - [rc.1] 添加了为
entity/equipment属性中的物品设置自定义皮肤配置文件的权限:feathermorph.disguise_properties.custom_skin_on_items
修复内容
- [rc.2] 伪装成其他实体时也会触发假人(mannequin)的交互镜像(Interaction Mirror)
- [rc.2] 修复了假人交互镜像在触发时忽略 NPC 描述差异的问题
其他更新
- [rc.1] 将部分伪装验证逻辑移至伪装准备早期阶段
- [rc.1] 升级 PacketEvents 至 2.10.0 版本
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-beta.6...2.5.0-rc.2
2.5.0-beta.6
on 2025 Nov 05新功能
- 拥有
feathermorph.mirror.mannequin权限的玩家现在可以将潜行镜像应用到与其伪装名称相同的假人上- 对于
BY_NAME执行器,会选择一定范围内的假人,若将影响距离设为 -1 则会禁用范围限制 - 对于
BY_SIGHT和BY_RANGE,将选择视线方向5格范围内的目标假人
- 对于
- 将 API 版本提升至 17
- 现在客户端模组可以在 C2S Morph 命令中包含属性输入
- 现在可通过游戏内命令
/fm option mirror_control_distance设置交互镜像的影响距离(控制距离)
修复
- 技能执行事件未触发的问题
slime_magma/size属性的随机范围错误
其他
- 我们计划在未来移除
BY_RANGE镜像执行器,因为它在玩家网络状况较差时会引起混乱 - 某些异常现在会被转发至
DisguiseState并导致玩家解除伪装 - 调整了服务器渲染器重建从服务器发送的实体元数据包的方式
完整更新日志: https://github.com/NiFeather/FeatherMorph/compare/2.5.0-beta.5...2.5.0-beta.6
新增功能
- 初步支持 Ping Wheel
- 目前需要使用自定义插件,可在 https://github.com/MATRIX-feather/pingwheel-plugin-forked 找到
问题修复
- 从从服务器同步的伪装状态实际上并未应用到主服务器
- 当
feathermorph.disguise_use_real_uuid设置为 true 时,玩家在取消伪装时会从其 TAB 视图中被移除
2.5.0-beta.5
on 2025 Oct 13修复
- 从附属服务器同步的伪装状态实际上并未应用到主服务器
其他
- 我们现在升级到了 1.21.10
- 我们现在基于 PacketEvents 2.10.0-SNAPSHOT 开发版本进行编译
- 这样 CI 又可以正常工作了!



