Easy NPC (Bundle) 6.15.0
on 2026 May 13Easy NPC(1.20.1)更新日志
说明
本更新日志汇总了主要变更内容。
如需完整更新日志,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详细信息请参阅 升级指南。
6.15.0(交易、玩家头颅、Epic Fight 及体验优化更新)
- 修复 #731:当客户端物种列表为空时,重新同步物种数据。
- 修复 #730:改进 Epic Fight 集成,并启用实验性功能。
- 修复 #729:确保交易使用次数被正确存储。
- 修复 #728:为玩家头颅添加自定义头颅支持。
- 修复 #689:显示剩余交易次数,并支持手动与自动重置。
- 修复 #218 和 #132:新增交易配置界面,并增强对自定义交易的支持。
- 修复交易特定边界问题:在基础交易模式与普通/高级交易模式间切换时的行为异常。
- 修复对话按钮文字被截断问题,悬停提示将显示完整文本。
- 修复 Cobblemon 动画异常:通过与 Cobblemon 动画系统同步动画状态解决。
- 新增每项交易专属动作,允许用户在完成购买后触发指定动作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里斯尔达·磨石匠”,附带可触发动作。
- 清理测试文件。
6.14.0
- 修复 #727:修改数值时确保变更同步至客户端。
- 修复 #726:为特定命令添加额外白名单。
- 修复 #686、#389、#304、#211:通过新增 Cobblemon NPC 支持,实现基础 Cobblemon 集成。
- 修复对话界面错位与导航问题:调整对话精灵图与界面布局。
- 修复 X 与 Z 轴根部旋转问题:修正旋转逻辑与枢轴点计算。
- 新增基础 Cobblemon 支持:包含用于测试的自定义 NPC 类型与模型。
6.13.0(安全与权限更新)
说明:本次更新强化了多人游戏环境下的安全校验与权限管理。
部分服务器命令具备潜在风险,若被恶意利用可能造成严重后果。
本次更新将模型根部数据与逻辑,从其余模型部件的数据与逻辑中分离,因此可能导致现有 NPC 的根部旋转与缩放值重置为默认值。
- 修复 #725:将模型根部数据与逻辑从其余模型部件的数据与逻辑中分离。
- 修复 #722:支持将 .sbnt 文件作为本地预设加载。
- 修复 #675:为对话与配置界面背景新增专用资源。
- 修复 #605、#532、#529:引入全新安全校验与权限系统。
- 修复 #469、#311:新增实验性 API 文档与示例,以支持自定义模型。
- 修复配置界面背景重复渲染问题:移除冗余的背景绘制逻辑。
- 修复幽灵(Ghast)碰撞箱与名称标签位置异常:调整包围盒参数。
- ⚠️ 新增安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话界面背景替换为静态背景,以提升性能、定制性与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专用组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成 Luck Perms(如 #712 所述)做好权限系统准备。
- 通用代码清理与优化,聚焦于配置界面渲染与资源管理。
6.12.0
- 修复 #714:基于原版模型,为自定义模型部件列表新增额外校验。
- 修复 #713:降低日志冗余度——将每 NPC 的 INFO 级别日志降级为 DEBUG,并合并重复警告。
- 修复 #711:减少启动/配置阶段日志输出体积。
- 修复 NBT 校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中新增模型部件名称常量,确保混入(Mixin)代码中统一使用。
- 优化 RenderEntityTypeSupportConfig:增强过滤逻辑,优化数据结构,提升性能与可维护性。
- 移除大量打印复杂数据结构的冗长调试日志。
6.11.0
- 修复 #703:借助全新自定义图层系统与手部渲染,解决渲染异常问题。
- 修复 #701:为无效交易报价新增额外防护措施与日志记录。
- 修复智能动画在头部位置被修改时无法正常工作的问题。
- 修复头部追踪逻辑:将玩家检测逻辑移回服务端独占执行。
- 修复 CustomLookAtPlayerGoal,使其更稳健地处理边界情况并减少抖动。
- 修复多普勒(Doppler)NPC 持续保留手部物品栏的问题。
- 优化 PoseManager 日志消息。
- 更新 Logo,采用全新设计。
6.10.0
- 修复 #695:切换至
DEFAULT原版姿势时,清空模型部件的旋转/位置参数。 - 修复 #695:仅当 NPC 处于空闲状态时,才应用旋转锁定与姿势动画。
- 修复 #695:修正根部旋转枢轴点,改用实际包围盒高度而非固定值 0.5f。
- 修复多项目标注册问题,包括:
isTargetedPlayer判断逻辑反转、离开处理器中 UUID 错误、加入/离开时未刷新玩家目标、离线目标重试失败等。 - 修复目标注销后仍保留目标引用的问题。
- 移除加载姿势时自动锁定 ROOT 旋转的功能;现改为由用户自主控制。
- 在高级与自定义姿势配置界面中新增“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面新增模型专属姿势键过滤功能。 - 新增针对
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior与ModelAnimationData的单元测试。 - 新增
NPCDataIsolationTestHelper及 Fabric 与 Forge 平台的游戏测试。 - 将最大头部偏航角范围由 60° 提升至 65°。
6.9.0
- 修复 #692、#666:添加缓存与防护机制,防止 NPC 实体数据更新被重复触发。
- 修复 #651、#617:为所有支持的 NPC 类型新增基础自定义姿势。
- 修复 #597:新增多种逃离目标的“逃离”目标,包括玩家、村民、怪物等。
- 修复姿势加载逻辑:直接从模组资源读取,不再复制文件至磁盘。
- 修复实体加入时重复调用
saveNPC:首次检查注册表中是否已存在对应条目。 - 新增
despawn与spawn命令,支持按 UUID 移除或重生 NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共 API 类,供外部模组以编程方式控制 NPC 姿势与管理 NPC。 - 为所有支持的 NPC 类型新增姿势数据文件。
- 在基础姿势配置界面中新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal,可在执行回调动作前,先将 NPC 移动至指定位置。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,使其尊重锁定的根部旋转。 - 在 NPC 实体数据索引中新增同步的所有者变更与维度变更支持。
- 将 EasyNPCItemAttachmentLayer 注入多个实体渲染器。
- 新增专属“逃离目标”配置标签页,支持设置逃离爬行者、怪物、生物、玩家、村民及太阳的目标。
- 在跟随目标标签页中新增
FOLLOW_ITEM目标,使 NPC 可根据资源位置(例如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在注视目标界面中启用“按 UUID 注视实体”与“注视所有者”目标。 - 在
SynchedDataIndex中新增persistent标志,使临时索引(如弩箭充能、模型动画)不再触发“脏标记”保存。 - 在
SlimeBase中新增可配置的customParticlesEnabled标志,供 API 调用方使用。 - 新增
SoundType.PET,并将CAT_PURR映射至猫型 NPC,以丰富驯服后的环境音效种类。 - 将周期性 NPC 保存操作的日志等级由 INFO 降级为 DEBUG,降低日志冗余度。
6.8.3
- 修复 #680:通过升级网络协议版本,强制校验版本不匹配。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为根部旋转新增多状态滑动支持。
- 修复 #664:新增禁用“跟随鼠标光标”选项,便于摆姿。
- 修复 #663:增强对 X 与 Z 轴根部旋转的支持。
- 修复 #661:新增快捷旋转功能:手持 NPC 法杖并潜行,即可使 NPC 根部朝向玩家旋转。
- 修复移动工具错误触发交互:在交互处理器中新增移动工具判断。
- 修复预设物品错误触发交互:在交互处理器中新增预设物品判断。
- 修复史莱姆与幽灵(Ghast)碰撞箱及名称标签位置异常:调整包围盒与眼高计算。
- 修复史莱姆与幽灵(Ghast)GUI 位置异常:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,新增notifyTrade方法以避免崩溃。 - 新增进度数据支持:依据玩家互动与行为为 NPC 升级。
- 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原始模型上使用变体纹理。
6.8.1
- 修复 #676:改用现有预设辅助方法,而非自定义方法。
6.8.0(新增 API 支持)
- 修复 #667:为无效网络数据包新增警告信息与额外校验。
- 修复马类生成蛋模型。
- 修复以下生物的姿势支持:悦灵、鸡、苦力怕、狐狸、幽灵(Ghast)、马、灾厄村民、铁傀儡、史莱姆与恼鬼。
- 新增 NPC 基础类,以提供更完善的 API 支持。
- 新增 NPC 原始类,以支持高级 API 使用场景。
- 新增史莱姆与幽灵(Ghast)NPC 类型。
- 新增自定义模型 API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性与未来扩展能力。
6.7.1
- 修复 #657 与 #656:在客户端新增额外校验,应对原版漏洞。
6.7.0
- 修复 #650:在
setupAnim方法中实现狼类腿部动画。 - 修复 #648:修正
canBeHitByProjectiles的翻译。 - 修复 #645:新增
allowBypassInvulnerability配置选项,用于启用或禁用 NPC 绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不准的问题。
- 修复对话与配置 UI 中意外显示名称标签的问题。
- 修复距离动作中多个动作未能正确触发的问题。
- 修复 NPC 预设相关问题。
- 修复猫型与狼型 NPC 的所有者数据未能正确同步的问题。
- 新增预设浏览器,便于快速选择常用 NPC 预设。
- 新增预设
.snbt(文本格式)导出与导入功能,方便分享 NPC 预设。 - 重构现有 NPC 预设,统一采用新的
.snbt格式。 - 重构刷怪笼系统,采用新预设格式,以提升可维护性与未来扩展能力。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增 MID 与 MOUSE_OVER 名称标签可见性模式,实现更精细的 NPC 名称显示控制。
- 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍机制。
6.6.1
- 修复 #638:重构显示属性相关的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,并配备专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 修复纹理重载保护中的竞态条件,采用原子操作实现。
- 修复远程纹理下载过程中 HTTP 连接的资源泄漏问题。
- 修复 URL 校验泛滥问题,避免同一纹理被多次并发下载。
- 修复远程图像校验异常处理缺失问题,防止因非法 URL 导致崩溃。
- 修复 NPC 加载过程中频繁出现的
defineId called for:警告。 - 重构纹理加载架构,采用多层防护与速率限制机制。
- 重构实体数据注册逻辑,以提升可维护性。
- 将数据类迁移为现代 Java 记录(Record),增强不可变性与线程安全性。
- 新增线程安全的会话服务器防刷机制,采用 ConcurrentHashMap 实现。
- 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与 500 毫秒速率限制。
- 优化异常处理:为 IIOException 与 FileNotFoundException 分别设置专属捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 优化 GitHub 工作流:为 Gradle 依赖添加缓存。
- 优化 Gradle 构建耗时与清理任务。
6.5.1
- 修复 #632:实现 ON_KILL 动作类型与事件。
- 修复 #629:优化纹理处理性能、缓存机制与内存占用。
- 修复击杀命令对 NPC 不生效的问题。
- 修复纹理重载保护机制阻止缓存重载的问题(缓存淘汰后)。
- 修复远程图像校验器中 WebP 校验的 Bug(缺少返回语句)。
- 重构纹理处理逻辑,以提升可维护性与未来扩展能力。
- 新增基于时间的重载防护(60 秒),替代永久性阻断机制。
- 新增纹理处理相关单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除“Jar-in-Jar”打包方式,以提升模组兼容性与 API 能力。
- 修复 #627:优化剪刀(Scissor)实现,提升与其他模组的兼容性。
- 修复 #625:解决使用旋转或移动模型部件时的生动动画异常。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增更优的姿势动画控制:提供“智能”、“默认”与“无”三种选项。
6.4.1
- 修复 #626:优化不同 NPC UUID 对应的界面切换逻辑,感谢
Spawnblade提供详尽调查与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理。
- 修复 #623:重构渲染数据与渲染处理逻辑。
- 修复 #622:确保自定义数据能被正确保存与加载。
- 修复打开对话动作类型,支持从其他 NPC 触发对话。
- 修复哈希问题:为 ConditionDataSet 与 ActionDataSet 补全缺失的 equals 与 hashCode 方法。
- 新增自定义数据测试物品,便于 #622 测试及自定义数据快速验证。
- 优化记录类(Record),修复潜在的缺失数据问题。
6.3.0
- 重构配置界面专用组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前进行过滤。
- 修复对话编辑器布局问题,提升可用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与记分板动作的条件支持。
- 新增对话频率支持,限制对话显示频次。
- 新增支持记分板与条件的 NPC 预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中的字符串注入漏洞。
- 修复动作类型翻译缺失问题。
- 新增记分板动作类型,支持增加、减少与设定记分板数值。
- 新增
@score(...)NPC 宏,用于在对话中显示记分板数值。 - 新增额外单元测试。
- 优化旋转按钮:添加指示器并提升可用性。
6.1.2
- 修复容器与菜单同步问题:补全缺失的关闭容器数据包。
- 修复关闭按钮在某些情况下失效的问题。
- 修复屏幕切换期间鼠标光标跳跃的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将 Easy NPC 法杖移至现有核心物品标签页,而非新建标签页。
- 新增猫型 NPC 姿势支持(尾部除外)。
- 优化 EasyNPCWand 发光效果性能:仅在需要时启用。
- 优化自定义实体检测:排除非生物实体(如展示框、标记器、投掷物与刷怪笼)。
- 优化猫型变体处理。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人纹理。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端独占执行。
- 优化玩家至 UUID 映射的缓存,提升玩家皮肤加载效率。
- 将更换模型命令与逻辑限定为仅多普勒(Doppler)NPC 可用。
6.1.0 ✨
这是一次重大更新。更新前请务必备份您的世界存档与 NPC 数据。
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前的 NPC 及其配置数据可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已被重构,以支持新应用场景。
🧩 全新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC——整合包:同时包含核心逻辑与配置界面,开箱即用。
- Easy NPC:核心——轻量级运行时与 NPC 逻辑,依赖极少。适用于服务器、整合包与开发者。
- Easy NPC:配置界面——独立配置界面,用于创建与编辑 NPC。仅需安装于需要 UI 的客户端。
🎯 此次变更的意义?
- 服务器与整合包可在服务端仅部署 核心 模组,实现精简配置。
- 当无需 UI 时,可显著降低内存占用与加载时间。
- 通过分离 UI 与核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.14.0
on 2026 May 12Easy NPC:核心版(1.21.1)更新日志
说明
本更新日志汇总了主要变更内容。
如需查看完整变更记录,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详情请参阅 升级指南。
6.14.0
- 修复 #727:确保修改数值时同步更新至客户端。
- 修复 #726:为特定命令添加额外白名单支持。
- 修复 #686、#389、#304、#211:通过新增“方块宝可梦NPC”类型,初步支持方块宝可梦(Cobblemon)。
- 修复对话框文字错位与导航问题:调整对话框精灵图与界面布局。
- 修复X轴与Z轴根部旋转异常:修正旋转逻辑与枢轴点计算。
- 新增基础方块宝可梦(Cobblemon)支持:提供自定义NPC类型与测试用模型。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全校验与权限管理。
部分服务器命令具备潜在风险,若被恶意利用可能造成危害。
本次更新将模型根部数据与逻辑,与其他模型部件的数据与逻辑分离,
因此可能导致现有NPC的根部旋转与缩放值重置为默认值。
- 修复 #725:将模型根部数据与逻辑与其他模型部件数据与逻辑分离。
- 修复 #722:支持将
.snbt文件作为本地预设使用。 - 修复 #675:为对话框与配置界面背景新增专用资源。
- 修复 #605、#532、#529:引入全新安全校验与权限系统。
- 修复 #469、#311:新增实验性API文档与示例,以支持自定义模型。
- 修复配置界面背景重复渲染问题:移除冗余的背景绘制逻辑。
- 修复恶魂(Ghast)与史莱姆(Slime)的碰撞箱及名称标签位置异常:调整包围盒尺寸。
- ⚠️ 新增安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面(config-ui)专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集(sprite sheets)。
- 为未来可能集成 LuckPerms(如 #712 所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行通用清理与优化。
6.12.0
- 修复 #714:基于原版模型,为自定义模型部件列表增加额外校验。
- 修复 #713:降低日志输出冗余度——将每NPC级别的INFO级日志降级为DEBUG级,并合并重复警告信息。
- 修复 #711:减少启动/配置阶段过大的日志输出量。
- 修复NBT校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在
EasyNPCModelManager中新增模型部件名称常量,确保混入(mixin)代码中统一使用。 - 优化
RenderEntityTypeSupportConfig:增强过滤逻辑,优化数据结构,提升性能与可维护性。 - 移除用于转储大型数据结构的冗长调试日志。
6.11.1
- 修复 #710:改进可恢复交易数据的向后兼容解析逻辑。
6.11.0
- 修复 #703:解决新型自定义图层系统与手部渲染引发的渲染问题。
- 修复 #701:为无效交易报价增加额外防护机制与日志记录。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 修复头部追踪功能:将玩家检测逻辑迁移回服务端独占执行。
- 修复
CustomLookAtPlayerGoal,使其更稳健地处理边界情况并减少抖动。 - 修复多普勒NPC(Doppler NPC)持续保留手持物品的问题。
- 优化
PoseManager的日志输出信息。 - 更新Logo设计。
6.10.0
- 修复 #698:为第三方实体创建过程添加 try-catch 异常捕获。
- 修复 #695:切换至
DEFAULT原版姿势时,清空模型部件的旋转/位置数据。 - 修复 #695:仅当NPC处于空闲状态时,才应用锁定旋转与姿势动画。
- 修复 #695:修正根部旋转枢轴点计算,改用实际包围盒高度而非固定值
0.5f。 - 修复多项目标注册问题,包括:
isTargetedPlayer判定逻辑颠倒、离开事件处理器中UUID错误、加入/离开时未刷新玩家目标、离线目标重试失败等。 - 修复目标注销后仍保留目标引用的问题。
- 移除加载姿势时自动锁定根部(ROOT)旋转的功能;现改为由用户手动控制。
- 在高级姿势与自定义姿势配置界面中新增“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面添加模型专属姿势键过滤功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData新增单元测试。 - 新增
NPCDataIsolationTestHelper及 Fabric 与 Forge 平台的游戏测试(game tests)。 - 将最大头部偏航角度(head yaw)范围由 60° 提升至 65°。
6.9.0
- 修复 #692、#666:增加缓存与防护机制,防止NPC实体数据更新被重复触发。
- 修复 #651、#617:为所有受支持的NPC类型添加基础自定义姿势。
- 修复 #597:新增多种“逃亡”目标(Flee goals),支持逃离玩家、村民、怪物等。
- 修复姿势加载逻辑:直接从模组资源读取,不再复制文件至磁盘。
- 修复实体加入时重复调用
saveNPC的问题:先检查注册表中是否已存在对应条目。 - 新增
despawn与spawn命令,支持通过UUID移除或重新生成NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共API类,供外部模组以编程方式控制NPC姿势及管理NPC。 - 为所有受支持的NPC类型新增姿势数据文件。
- 在基础姿势配置界面中新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal,支持NPC先移动至指定位置,再执行回调动作。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,使其尊重已锁定的根部旋转。 - 在NPC实体数据索引中新增同步的“所有者变更”与“维度变更”字段。
- 将
EasyNPCItemAttachmentLayer注入多个实体渲染器中。 - 新增专属“逃亡目标”配置页签,支持设置逃离苦力怕、怪物、生物、玩家、村民及太阳的目标。
- 在跟随目标页签中新增
FOLLOW_ITEM目标,支持NPC依据资源位置(如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在“注视目标”页签中启用“按UUID注视实体”与“注视所有者”目标。 - 在
SynchedDataIndex中新增persistent标志,使瞬态索引(如弩箭充能、模型动画)不再触发“脏标记”(dirty-save marking)。 - 在
SlimeBase中新增可配置的customParticlesEnabled标志,供API使用者调用。 - 新增
SoundType.PET音效类型,并将CAT_PURR映射至猫NPC,丰富驯服后的环境音效。 - 将周期性NPC保存操作的日志等级由 INFO 降级为 DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本,强制执行版本不匹配报错。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为根部旋转新增多状态滑动支持。
- 修复 #664:新增“禁用鼠标光标跟随”选项,便于姿势编辑。
- 修复 #663:增强对X轴与Z轴根部旋转的支持。
- 修复 #661:新增NPC魔杖配合潜行快捷旋转功能——使NPC根部朝向玩家。
- 修复移动工具错误触发交互行为的问题:在交互处理器中增加对移动工具的判断。
- 修复预设物品(Preset Item)错误触发交互行为的问题:在交互处理器中增加对预设物品的判断。
- 修复史莱姆(Slime)与恶魂(Ghast)的碰撞箱及名称标签位置异常:调整包围盒与眼高计算。
- 修复史莱姆(Slime)与恶魂(Ghast)GUI界面位置异常:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData类,新增notifyTrade方法以避免崩溃。 - 新增NPC成长系统:根据玩家互动与行为为NPC升级。
- 新增全局NPC追踪系统,便于跨世界管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持为原版模型启用变体纹理。
6.8.1
- 修复 #676:复用现有预设辅助方法,而非自行编写新方法。
6.8.0(新增API支持)
- 修复 #667:为非法网络数据包新增警告提示与额外校验。
- 修复马(Horse)生成蛋模型。
- 修复悦灵(Allay)、鸡(Chicken)、苦力怕(Creeper)、狐狸(Fox)、恶魂(Ghast)、马(Horse)、卫道士(Illager)、铁傀儡(Iron Golem)、史莱姆(Slime)与恼鬼(Vex)的姿势支持。
- 新增NPC基类,以强化API支持能力。
- 新增NPC原始类(raw classes),以支持高级API开发。
- 新增史莱姆(Slime)与恶魂(Ghast)NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,提升可维护性与未来扩展性。
6.7.1
- 修复 #657 与 #656:在客户端增加额外校验,应对原版Bug。
6.7.0
- 修复 #650:于
setupAnim方法中实现狼(Wolf)腿部动画。 - 修复 #648:修正
canBeHitByProjectiles的翻译。 - 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止NPC绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不正确的问题。
- 修复对话框与配置UI界面中意外显示名称标签的问题。
- 修复距离型动作(distance action)无法正确触发多个动作的问题。
- 修复NPC预设相关问题。
- 修复猫NPC与狼NPC的所有者数据未正确同步的问题。
- 新增预设浏览器,便于快速选择常用NPC预设。
- 新增预设
.snbt(文本格式)导出与导入功能,便于分享NPC预设。 - 重构现有NPC预设,全面采用新
.snbt格式。 - 重构刷怪蛋(spawner)系统,采用新预设格式以提升可维护性与未来扩展性。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增
MID与MOUSE_OVER名称标签可见性模式,实现更精细的NPC名称显示控制。 - 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 修复 #638:重构展示属性(display attributes)的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,并配备专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 修复纹理重载防护中的竞态条件,改用原子操作(atomic operations)。
- 修复远程纹理下载过程中HTTP连接的资源泄漏问题。
- 修复URL校验泛滥问题,避免同一纹理被多次并发下载。
- 修复远程图片校验异常处理缺失问题,防止因无效URL导致崩溃。
- 修复NPC加载过程中频繁出现的
defineId called for:警告信息。 - 重构纹理加载架构,引入多层级防御与速率限制机制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类转换为现代Java记录(records),增强不可变性与线程安全性。
- 新增线程安全的会话服务器防刷屏机制(
ConcurrentHashMap)。 - 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池 + 500毫秒速率限制。
- 改进异常处理:针对
IIOException与FileNotFoundException设置专属 catch 块。
6.5.2
- 修复村民职业与工作皮肤显示异常问题。
- 优化GitHub工作流:为Gradle依赖添加缓存。
- 优化Gradle构建时间与清理任务。
6.5.1
- 修复 #632:实现
ON_KILL动作类型与事件。 - 修复 #629:优化纹理处理性能、缓存机制与内存占用。
- 修复NPC击杀命令失效问题。
- 修复纹理重载防护机制导致缓存无法在驱逐后重新加载的问题。
- 修复远程图片校验器中WebP验证Bug(缺失return语句)。
- 重构纹理处理逻辑,提升可维护性与未来扩展性。
- 新增基于时间的重载防护(60秒),替代永久性阻断机制。
- 新增纹理处理相关的额外单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除“jar-in-jar”打包方式,以提升模组兼容性与API能力。
- 修复 #627:重构剪刀(scissor)实现,增强与其他模组的兼容性。
- 修复 #625:解决使用旋转或移动的模型部件时,生动动画(lively animation)异常问题。
- 修复使用缩放模型部件时,默认动画被意外取消的问题。
- 新增更完善的姿势动画控制选项:“智能”、“默认”与“无”。
6.4.1
- 修复 #626:优化不同NPC UUID间的界面切换逻辑,感谢
Spawnblade提供详尽调查与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理能力。
- 修复 #623:重构渲染数据与渲染处理逻辑。
- 修复 #622:确保自定义数据能够正确保存与加载。
- 修复“打开对话”动作类型,支持从其他NPC触发对话。
- 修复哈希问题:为
ConditionDataSet与ActionDataSet补全缺失的equals与hashCode方法。 - 新增自定义数据测试物品,便于 #622 及其他自定义数据功能的测试。
- 优化记录类(records)并修复潜在的数据缺失问题。
6.3.0
- 重构配置界面(config-ui)专属组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前先进行过滤。
- 修复对话编辑器布局问题,提升易用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,限制对话显示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中字符串注入漏洞。
- 修复动作类型缺失翻译的问题。
- 新增计分板动作类型,支持增减、设定计分板数值。
- 新增
@score(...)NPC宏,支持在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮(spin button):添加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题:补全缺失的关闭容器数据包。
- 修复某些情况下关闭按钮失效的问题。
- 修复界面切换时鼠标光标异常跳动的问题。
- 修复翻译文件,移除重复及已弃用条目。
- 将Easy NPC魔杖移至现有核心物品分类页签,不再新建页签。
- 新增猫(Cat)姿势支持(各模型部件,尾部除外)。
- 优化
EasyNPCWand发光效果性能:仅在需要时启用。 - 优化自定义实体检测逻辑:排除非生物实体(如展示框、画架、投掷物、刷怪蛋等)。
- 优化猫变体(cat variant)处理逻辑。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人(orc)纹理问题。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端独占执行。
- 优化玩家→UUID映射缓存,加快玩家皮肤加载。
- 限定更换模型命令与逻辑仅对多普勒NPC(Doppler NPCs)生效。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界存档及NPC数据!
本版本包含大量改进、优化与内部重构,
与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的NPC及其配置数据,可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已被重构,以支持新的使用场景。
🧩 新增模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC —— 包含“核心版”与“配置界面”的一体化整合包,开箱即用。
- Easy NPC:核心版 —— 轻量级运行时与NPC逻辑,依赖极少。适用于服务器、模组包与开发者。
- Easy NPC:配置界面 —— 独立的NPC创建与编辑界面。仅需安装于需使用UI的客户端。
🎯 此次变更的意义?
- 服务器与模组包可在服务端仅部署 核心版,实现更精简的部署方案。
- 当无需UI时,可显著降低内存占用与加载时间。
- 分离UI与核心逻辑,加速开发与测试流程。
Easy NPC (Bundle) 6.14.0
on 2026 May 11Easy NPC(1.20.1)更新日志
说明
本更新日志汇总了主要变更内容。
如需完整更新日志,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界及NPC数据!
更多信息请参阅 升级指南。
6.14.0
- 修复 #727:确保修改数值时,变更能同步至客户端。
- 修复 #726:为特定命令新增额外白名单。
- 修复 #686、#389、#304、#211:通过新增“方块宝可梦NPC”类型,提供基础的方块宝可梦支持。
- 修复对话框错位与导航问题:调整对话框精灵图与界面布局。
- 修复X轴与Z轴根部旋转:修正旋转逻辑与枢轴点计算。
- 新增基础方块宝可梦支持:提供自定义NPC类型与模型用于测试。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全检查与权限控制。
部分服务器命令可能具有潜在风险,若被恶意利用将造成危害。
本次更新将模型根部数据与逻辑,与其他模型部件的数据与逻辑分离,
因此可能导致现有NPC的根部旋转与缩放值重置为默认值。
- 修复 #725:将模型根部数据与逻辑与其他模型部件的数据与逻辑分离。
- 修复 #722:支持将 .snbt 文件作为本地预设使用。
- 修复 #675:为对话框与配置界面背景新增专用资源。
- 修复 #605、#532、#529:引入全新安全检查与权限系统。
- 修复 #469、#311:新增实验性API文档与示例,以支持自定义模型。
- 修复配置界面背景重复渲染:移除冗余的背景渲染逻辑。
- 修复恶魂碰撞箱与名称标签位置异常:调整边界框参数。
- ⚠️ 新增安全检查机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、定制性与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成Luck Perms(如 #712 所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行常规清理与优化。
6.12.0
- 修复 #714:基于原版模型,对自定义模型部件列表增加额外校验。
- 修复 #713:降低日志冗余度——将每NPC的INFO级别日志降级为DEBUG,并合并重复警告信息。
- 修复 #711:缩减启动/配置阶段过大的日志输出量。
- 修复NBT校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中添加模型部件名称常量,确保混入代码中的一致调用。
- 优化 RenderEntityTypeSupportConfig:增强过滤逻辑,优化数据结构,提升性能与可维护性。
- 移除大量转储复杂数据结构的冗长调试日志。
6.11.0
- 修复 #703:解决新自定义图层系统与手部渲染引发的渲染问题。
- 修复 #701:为无效交易报价增加额外防护措施与日志记录。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 修复头部追踪:将玩家检测逻辑移回仅服务端执行。
- 修复 CustomLookAtPlayerGoal:更优处理边界情况,减少抖动。
- 修复多普勒NPC持续持有手部物品的问题。
- 优化 PoseManager 的日志输出信息。
- 更新Logo,采用全新设计。
6.10.0
- 修复 #695:切换至
DEFAULT原版姿态时,清空模型部件的旋转/位置。 - 修复 #695:仅当NPC处于空闲状态时,才启用锁定旋转与姿态动画。
- 修复 #695:修正根部旋转枢轴点,改用实际边界框高度而非固定值0.5f。
- 修复多个目标注册问题,包括:
isTargetedPlayer判定逻辑颠倒、离开处理器中UUID错误、加入/离开时未刷新玩家目标、离线目标重试失败等。 - 修复目标注销后仍保留目标引用的问题。
- 移除加载姿态时自动锁定ROOT旋转的功能;根部锁定现由用户手动控制。
- 在高级姿态与自定义姿态配置界面中新增“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿态界面添加模型专属姿态键过滤功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData新增单元测试。 - 新增
NPCDataIsolationTestHelper及 Fabric 与 Forge 平台的游戏测试。 - 将最大头部偏航角范围由60°提升至65°。
6.9.0
- 修复 #692、#666:增加缓存与防护机制,防止NPC实体数据更新被重复触发。
- 修复 #651、#617:为所有支持的NPC类型添加基础自定义姿态。
- 修复 #597:新增多种逃跑目标(Flee goals),支持逃离玩家、村民、怪物等。
- 修复姿态加载逻辑:直接从模组资源读取,不再复制文件至磁盘。
- 修复实体加入时重复调用
saveNPC:先检查注册表中是否已存在对应条目。 - 新增
despawn与spawn命令,支持通过UUID移除或重新生成NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共API类,供外部模组编程控制NPC姿态与管理NPC。 - 为所有支持的NPC类型添加姿态数据文件。
- 在基础姿态配置界面中新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal:使NPC移动至指定位置后,再执行回调动作。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,以尊重锁定的根部旋转。 - 在NPC实体数据索引中同步添加所有者变更与维度变更。
- 将 EasyNPCItemAttachmentLayer 添加至各类实体渲染器中。
- 新增专属“逃跑目标”配置页签,支持设置逃离苦力怕、怪物、生物、玩家、村民及太阳的目标。
- 在跟随目标页签中新增
FOLLOW_ITEM目标,使NPC依据资源位置(如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在“注视目标”界面中启用“按UUID注视实体”与“注视所有者”目标。 - 为
SynchedDataIndex添加persistent标志,使临时索引(如弩蓄力、模型动画)不再触发脏数据保存标记。 - 为
SlimeBase添加可配置的customParticlesEnabled标志,供API使用者调用。 - 新增
SoundType.PET,并将CAT_PURR映射至猫NPC,丰富驯服后的环境音效种类。 - 将周期性NPC保存操作的日志等级由INFO下调至DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本,强制执行版本不匹配检查。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为根部旋转添加多状态滑动支持。
- 修复 #664:新增禁用“跟随鼠标光标”的选项,便于姿态调整。
- 修复 #663:增强对X轴与Z轴根部旋转的支持。
- 修复 #661:新增NPC魔杖快速旋转功能:潜行状态下对NPC使用魔杖,使其根部朝向玩家旋转。
- 修复移动工具误触发交互:在交互处理器中增加移动工具检测。
- 修复预设物品误触发交互:在交互处理器中增加预设物品检测。
- 修复史莱姆与恶魂碰撞箱及名称标签位置异常:调整边界框与眼高计算。
- 修复史莱姆与恶魂GUI位置异常:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,添加notifyTrade方法以避免崩溃。 - 新增NPC等级成长系统:依据玩家互动与行为提升NPC等级。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持为原版模型使用变体纹理。
6.8.1
- 修复 #676:改用现有预设辅助方法,而非自定义实现。
6.8.0(新增API支持)
- 修复 #667:为非法网络数据包添加警告信息与额外校验。
- 修复马匹刷怪蛋模型。
- 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆与恼鬼的姿态支持。
- 新增NPC基础类,以强化API支持能力。
- 新增NPC原始类(raw classes),以支持高级API功能。
- 新增史莱姆与恶魂NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性并为后续改进奠定基础。
6.7.1
- 修复 #657 与 #656:针对原版Bug,在客户端增加额外校验。
6.7.0
- 修复 #650:在
setupAnim方法中实现狼腿部动画。 - 修复 #648:修正
canBeHitByProjectiles的翻译。 - 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止NPC绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不准的问题。
- 修复对话框与配置UI界面中名称标签意外显示的问题。
- 修复距离型动作中多个动作无法正确触发的问题。
- 修复NPC预设相关问题。
- 修复猫NPC与狼NPC的所有者数据未正确同步的问题。
- 新增预设浏览器,便于快速选择常用NPC预设。
- 新增预设
.snbt(文本格式)导出与导入功能,方便共享NPC预设。 - 重构现有NPC预设,统一采用新的
.snbt格式。 - 重构刷怪系统,采用新预设格式,以提升可维护性并为后续改进奠定基础。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增MID与MOUSE_OVER两种名称标签可见性模式,实现对NPC名称显示的精细控制。
- 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 修复 #638:重构显示属性相关的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,并配备专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 修复纹理重载保护中的竞态条件,改用原子操作。
- 修复远程纹理下载过程中HTTP连接的资源泄漏问题。
- 修复URL校验泛滥,避免同一纹理被多次并发下载。
- 修复远程图像校验异常处理缺失,防止因无效URL导致崩溃。
- 修复NPC加载期间出现的
defineId called for:警告信息。 - 重构纹理加载架构,引入多层防护与速率限制。
- 重构实体数据注册逻辑,以提升可维护性。
- 将数据类迁移为现代Java记录(records),增强不可变性与线程安全性。
- 新增基于
ConcurrentHashMap的线程安全会话服务器防刷机制。 - 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与500毫秒速率限制。
- 优化异常处理:为
IIOException与FileNotFoundException添加专门的捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 优化GitHub工作流:为Gradle依赖添加缓存。
- 提升Gradle构建速度,并优化清理任务。
6.5.1
- 修复 #632:实现ON_KILL动作类型与事件。
- 修复 #629:优化纹理处理性能、缓存策略与内存占用。
- 修复击杀命令对NPC无效的问题。
- 修复纹理重载保护机制阻止缓存驱逐后重载的问题。
- 修复远程图像校验器中WebP验证缺陷(缺少return语句)。
- 重构纹理处理逻辑,以提升可维护性并为后续改进奠定基础。
- 新增基于时间的重载保护(60秒),替代永久性阻断机制。
- 新增纹理处理相关单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除“jar-in-jar”打包方式,以提升模组兼容性与API能力。
- 修复 #627:改进剪裁(scissor)实现,增强与其他模组的兼容性。
- 修复 #625:解决使用旋转或移动的模型部件时,生动动画失效的问题。
- 修复使用缩放模型部件时,默认动画被取消的问题。
- 新增更优的姿态动画控制选项:“智能”、“默认”与“无”。
6.4.1
- 修复 #626:优化不同NPC UUID间的界面切换逻辑,感谢
Spawnblade提供详尽的分析与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理能力。
- 修复 #623:重构渲染数据与渲染处理逻辑。
- 修复 #622:确保自定义数据能被正确保存与加载。
- 修复“打开对话”动作类型,支持从其他NPC触发对话。
- 修复哈希问题:为
ConditionDataSet与ActionDataSet补充缺失的equals与hashCode方法。 - 新增自定义数据测试物品,用于 #622 及自定义数据的便捷测试。
- 优化记录类(records),并修复潜在的数据缺失问题。
6.3.0
- 重构配置界面专属组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前,先过滤对话数据。
- 修复对话编辑器布局问题,并提升易用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,以控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,限制对话展示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中字符串注入问题。
- 修复动作类型缺失翻译的问题。
- 新增计分板动作类型:支持增加、减少、设定计分板数值。
- 新增
@score(...)NPC宏,可在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮:增加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题:补充缺失的关闭容器数据包。
- 修复部分情况下关闭按钮失效的问题。
- 修复界面切换过程中鼠标光标跳跃的问题。
- 修复翻译文件,移除重复及已弃用的条目。
- 将Easy NPC魔杖移至现有核心物品栏,而非新建独立栏位。
- 新增猫姿态支持(各模型部件,尾部除外)。
- 优化 EasyNPCWand 发光效果性能:仅在需要时启用。
- 优化自定义实体检测:排除非生物实体(如展示框、标记器、投掷物与刷怪笼)。
- 优化猫变体处理逻辑。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人纹理问题。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端专属执行。
- 优化玩家至UUID映射缓存,提升玩家皮肤加载效率。
- 将更换模型命令与逻辑限定于多普勒NPC。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界与NPC数据。
本版本包含大量改进、优化与内部重构,
与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的NPC及其配置数据,可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新应用场景。
🧩 全新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC —— 包含核心功能与配置界面的整合包,开箱即用。
- Easy NPC:Core —— 轻量级运行时与NPC逻辑,依赖极少。适用于服务器、模组包与开发者。
- Easy NPC:Configuration UI —— 独立的NPC创建与编辑配置界面。仅需安装在需要UI的客户端上。
🎯 此次变更的意义?
- 服务器与模组包可仅在服务端部署 Core 模组,实现精简部署。
- 当无需UI时,可显著降低内存占用与加载耗时。
- 分离UI与核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.14.0
on 2026 May 11Easy NPC(1.20.1)更新日志
注意事项
本更新日志汇总了主要变更内容。
如需完整更新记录,请前往 GitHub 历史记录 查看。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详情请参阅 升级指南。
6.14.0
- 修复 #727:确保修改数值时,变更内容同步至客户端。
- 修复 #726:为特定命令添加额外白名单。
- 修复 #686、#389、#304、#211:通过新增“方块宝可梦NPC”类型,初步支持方块宝可梦(Cobblemon)。
- 修复对话框错位与导航问题:调整对话框精灵图与界面布局。
- 修复X轴与Z轴根部旋转:修正旋转逻辑与枢轴点计算。
- 新增基础方块宝可梦(Cobblemon)支持:提供自定义NPC类型与测试用模型。
6.13.0(安全与权限更新)
注意事项:本次更新强化了多人游戏环境下的安全校验与权限管理。
部分服务器命令具备潜在风险,若被恶意利用可能造成安全隐患。
本次更新将模型根部数据与逻辑,从其余模型部件的数据与逻辑中分离。
这意味着已有NPC的根部旋转与缩放值可能重置为默认值。
- 修复 #725:将模型根部数据与逻辑同其余模型部件数据与逻辑分离。
- 修复 #722:支持将
.sbnt文件作为本地预设载入。 - 修复 #675:为对话框与配置界面背景新增专用资源。
- 修复 #605、#532、#529:引入全新安全校验与权限系统。
- 修复 #469、#311:新增实验性API文档与示例,便于外部模组实现自定义模型支持。
- 修复配置界面背景重复渲染:移除冗余的背景绘制逻辑。
- 修复恶魂(Ghast)碰撞箱与名称标签位置异常:调整包围盒参数。
- ⚠️ 新增多项安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集(sprite sheets)。
- 为未来可能集成Luck Perms(如 #712 所述)做好权限系统准备。
- 优化配置界面渲染与资源加载相关代码,进行通用清理与性能优化。
6.12.0
- 修复 #714:基于原版模型,对自定义模型部件列表增加额外校验。
- 修复 #713:降低日志输出密度——将每NPC级别的INFO级日志降级为DEBUG级,并合并冗余警告信息。
- 修复 #711:缩减启动/配置阶段日志输出体积。
- 修复NBT校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在
EasyNPCModelManager中新增模型部件名称常量,确保混入(mixin)代码中的一致调用。 - 优化
RenderEntityTypeSupportConfig:增强过滤逻辑,优化数据结构,提升性能与可维护性。 - 移除输出大型数据结构的冗长调试日志。
6.11.0
- 修复 #703:解决新型自定义图层系统与手部渲染导致的渲染异常。
- 修复 #701:为无效交易报价添加额外防护机制与日志记录。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 修复头部追踪功能:将玩家检测逻辑迁移回服务端执行。
- 优化
CustomLookAtPlayerGoal,更好处理边界情况,减少抖动。 - 修复多普勒NPC(Doppler NPCs)持续持有手部物品的问题。
- 改进
PoseManager的日志提示信息。 - 更新Logo设计。
6.10.0
- 修复 #695:切换至
DEFAULT原版姿势时,清空模型部件的旋转/位置数据。 - 修复 #695:仅当NPC处于空闲状态时,才应用根部旋转锁定与姿势动画。
- 修复 #695:修正根部旋转枢轴点,采用实际包围盒高度而非固定值0.5f。
- 修复多项目标注册问题,包括:
isTargetedPlayer判断逻辑颠倒、离开处理器中UUID错误、加入/离开时未刷新面向玩家的目标、离线目标重试失败等。 - 修复目标注销后仍保留目标引用的问题。
- 移除加载姿势时自动锁定ROOT旋转的功能;现改为由用户手动控制。
- 在高级姿势与自定义姿势配置界面中新增“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面新增按模型类型筛选姿势键的功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior及ModelAnimationData新增单元测试。 - 新增
NPCDataIsolationTestHelper以及面向Fabric与Forge平台的游戏测试。 - 将头部水平转动最大角度由60°提升至65°。
6.9.0
- 修复 #692、#666:引入缓存与防护机制,防止NPC实体数据更新被重复触发。
- 修复 #651、#617:为所有受支持NPC类型添加基础自定义姿势。
- 修复 #597:新增多种逃逸目标(Flee goals),支持逃离玩家、村民、怪物等。
- 修复姿势加载逻辑:直接从模组资源读取,不再复制文件至磁盘。
- 修复实体加入时重复调用
saveNPC:预先检查注册表中是否已存在对应条目。 - 新增
despawn与spawn命令,支持通过UUID移除或重新生成NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共API类,供外部模组以编程方式控制NPC姿势及管理NPC。 - 为所有受支持NPC类型新增姿势数据文件。
- 在基础姿势配置界面中新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal:使NPC先移动至指定位置,再执行回调动作。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,尊重已锁定的根部旋转。 - 在NPC实体数据索引中同步添加所有者变更与维度变更。
- 将
EasyNPCItemAttachmentLayer注入多个实体渲染器中。 - 新增专属“逃逸目标”配置页签,支持针对苦力怕、怪物、生物、玩家、村民及太阳设置逃逸目标。
- 在跟随目标页签中新增
FOLLOW_ITEM目标,支持NPC根据资源位置(如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在注视目标页签中启用“按UUID注视实体”与“注视所有者”目标。 - 在
SynchedDataIndex中新增persistent标志,使临时索引(如弩箭充能、模型动画)不再触发脏标记保存。 - 在
SlimeBase中新增可配置的customParticlesEnabled标志,供API使用者调用。 - 新增
SoundType.PET类型,并将CAT_PURR映射至猫NPC,丰富驯服后环境音效。 - 将周期性NPC保存操作的日志等级由INFO下调至DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本,强制校验版本不匹配。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为根部旋转新增多状态滑动支持。
- 修复 #664:新增禁用鼠标光标跟随选项,便于姿势编辑。
- 修复 #663:增强X轴与Z轴根部旋转的支持。
- 修复 #661:新增NPC魔杖配合潜行快捷旋转功能,使NPC根部朝向玩家。
- 修复移动工具误触发交互:在交互处理器中增加对移动工具的判断。
- 修复预设物品误触发交互:在交互处理器中增加对预设物品的判断。
- 修复史莱姆(Slime)与恶魂(Ghast)碰撞箱及名称标签位置异常:调整包围盒与眼高计算。
- 修复史莱姆与恶魂GUI位置异常:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,添加notifyTrade方法以避免崩溃。 - 新增基于玩家互动与行为的NPC等级成长系统。
- 新增全局NPC追踪系统,便于全地图NPC管理与调试。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原版模型上使用变体纹理。
6.8.1
- 修复 #676:改用现有预设辅助方法,而非自定义实现。
6.8.0(新增API支持)
- 修复 #667:为无效网络数据包添加警告信息与额外校验。
- 修复马(Horse)生成蛋模型。
- 修复悦灵(Allay)、鸡(Chicken)、苦力怕(Creeper)、狐狸(Fox)、恶魂(Ghast)、马(Horse)、卫道士(Illager)、铁傀儡(Iron Golem)、史莱姆(Slime)与恼鬼(Vex)的姿势支持。
- 新增NPC基类,提升API可用性。
- 新增NPC原始类(raw classes),满足高级API需求。
- 新增史莱姆(Slim)与恶魂(Ghast)NPC类型。
- 新增自定义模型API,简化与其他模组及自定义模型的集成。
- 重构内部数据处理与注册逻辑,提升可维护性与未来拓展性。
6.7.1
- 修复 #657 与 #656:在客户端增加额外校验,应对原版Bug。
6.7.0
- 修复 #650:于
setupAnim方法中实现狼(Wolf)腿部动画。 - 修复 #648:修正
canBeHitByProjectiles翻译。 - 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止NPC绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不准的问题。
- 修复对话框与配置界面中名称标签意外显示的问题。
- 修复距离型动作中多个动作未能正确触发的问题。
- 修复NPC预设相关问题。
- 修复猫NPC与狼NPC的所有者数据不同步问题。
- 新增预设浏览器,便于快速选择常用NPC预设。
- 新增预设
.snbt(文本格式)导出与导入功能,方便分享NPC预设。 - 重构现有NPC预设,统一采用新
.snbt格式。 - 重构刷怪笼系统,采用新预设格式,提升可维护性与未来拓展性。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增MID与MOUSE_OVER两种名称标签可见性模式,精细控制NPC名称显示。
- 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 修复 #638:重构显示属性相关的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,并配备专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 使用原子操作修复纹理重载保护中的竞态条件。
- 修复远程纹理下载过程中HTTP连接的资源泄漏。
- 修复URL校验泛滥问题,防止同一纹理被多次并发下载。
- 修复远程图像校验异常处理缺失,避免因非法URL导致崩溃。
- 修复NPC加载期间出现的
defineId called for:警告信息。 - 重构纹理加载架构,引入多层防护与速率限制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类转换为现代Java记录(records),增强不可变性与线程安全性。
- 新增基于
ConcurrentHashMap的线程安全会话服务器防刷机制。 - 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与500毫秒速率限制。
- 优化异常处理:为
IIOException与FileNotFoundException添加专属捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 优化GitHub工作流:为Gradle依赖添加缓存。
- 提升Gradle构建速度并优化清理任务。
6.5.1
- 修复 #632:实现ON_KILL动作类型与事件。
- 修复 #629:优化纹理处理性能、缓存策略与内存占用。
- 修复击杀命令对NPC无效的问题。
- 修复纹理重载保护机制导致缓存驱逐后无法重载的问题。
- 修复远程图像校验器中WebP验证Bug(缺失return语句)。
- 重构纹理处理逻辑,提升可维护性与未来拓展性。
- 新增基于时间的重载保护(60秒),替代永久阻断机制。
- 新增纹理处理相关单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除Jar-in-Jar打包方式,以提升模组兼容性与API能力。
- 修复 #627:优化裁剪(scissor)实现,增强与其他模组的兼容性。
- 修复 #625:解决使用旋转或移动模型部件时生动动画异常问题。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增更完善的姿势动画控制选项:智能(smart)、默认(default)与无(none)。
6.4.1
- 修复 #626:优化不同NPC UUID间的界面切换逻辑,感谢
Spawnblade提供详尽调查与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理。
- 修复 #623:重构渲染数据与渲染处理逻辑。
- 修复 #622:确保自定义数据正确保存与加载。
- 修复打开对话动作类型,支持从其他NPC触发对话。
- 修复哈希问题:为
ConditionDataSet与ActionDataSet补充缺失的equals与hashCode方法。 - 新增自定义数据测试物品,便于 #622 测试及自定义数据验证。
- 优化记录类(records)并修复潜在的数据缺失问题。
6.3.0
- 重构配置界面专属组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前先行过滤。
- 修复对话编辑器布局问题,提升易用性。
- 修复部分对话字段缺失默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,限制对话展示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中字符串注入漏洞。
- 修复动作类型翻译缺失问题。
- 新增计分板动作类型,支持增减、设定计分板数值。
- 新增
@score(...)NPC宏,可在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮:添加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题:补全缺失的关闭容器数据包。
- 修复某些情况下关闭按钮失效的问题。
- 修复界面切换时鼠标光标跳跃的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将Easy NPC魔杖移至现有核心物品分类下,不再新建分类。
- 新增猫(Cat)姿势支持(尾部除外各模型部件)。
- 优化
EasyNPCWand发光效果性能:仅在必要时启用。 - 优化自定义实体识别:排除非生物实体(如展示框、画架、投掷物与刷怪笼)。
- 优化猫变体处理逻辑。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人(Orc)纹理。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端执行。
- 优化玩家至UUID映射缓存,加速玩家皮肤加载。
- 将更换模型命令与逻辑限定为仅适用于多普勒NPC(Doppler NPCs)。
6.1.0 ✨
本次为重大版本更新。更新前请务必备份您的世界存档及NPC数据!
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的NPC及其配置数据,可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新应用场景。
🧩 新模块化结构
Easy NPC现已拆分为三个独立模组:
- Easy NPC:整合包,同时包含核心功能与配置界面,开箱即用。
- Easy NPC:Core:轻量级运行时与NPC逻辑,依赖极少,适用于服务器、模组包与开发者。
- Easy NPC:Configuration UI:独立配置界面,用于创建与编辑NPC,可单独安装于需要UI的客户端。
🎯 此变更目的
- 服务器与模组包可仅在服务端部署 Core 模组,实现精简部署。
- 当无需UI时,显著降低内存占用与加载耗时。
- 分离UI与核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.13.0
on 2026 May 08Easy NPC(1.20.1)更新日志
说明
本更新日志汇总了主要变更内容。
如需查看完整变更记录,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界及NPC数据!
更多详细信息请参阅 升级指南。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全检查与权限控制。
新增了可执行服务端命令的功能,若被恶意利用则可能存在潜在风险。
本次更新将模型根节点的数据与逻辑,同其余模型部件的数据与逻辑分离,
因此可能导致现有NPC的根节点旋转与缩放重置为默认值。
- 通过将模型根节点的数据与逻辑同其余模型部件的数据与逻辑分离,修复了 #725。
- 通过支持本地 .sbnt 文件作为预设,修复了 #722。
- 通过为对话与配置界面背景添加专用资源,修复了 #675。
- 通过引入新的安全检查与权限系统,修复了 #605、#532、#529。
- 通过添加实验性API文档与自定义模型支持示例,修复了 #469、#311。
- 通过移除冗余的背景渲染,修复了配置界面背景的重复渲染问题。
- 通过调整碰撞箱,修复了幽灵(Ghast)的碰撞箱与名称标签位置问题。
- ⚠️ 新增安全检查机制,以防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话界面背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专用组件,并将其从核心模组中移除。
- 移除重复的精灵图集(sprite sheets)。
- 为未来可能集成 Luck Perms(如 #712 所述)做好权限系统的前期准备。
- 对配置界面渲染与资源相关代码进行常规清理与优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了 #714。
- 通过将每个NPC的日志级别由 INFO 降级为 DEBUG,并合并冗余警告信息,修复了 #713。
- 通过缩减启动/配置阶段过大的日志输出量,修复了 #711。
- 修正NBT验证守卫机制,防止在生产环境中产生不必要的缓冲区分配。
- 在 EasyNPCModelManager 中添加模型部件名称常量,确保混入(mixin)代码中的一致性使用。
- 优化 RenderEntityTypeSupportConfig:增强过滤逻辑并优化数据结构,以提升性能与可维护性。
- 移除大量转储大型数据结构的冗余调试日志。
6.11.0
- 修复了新自定义图层系统与手部渲染导致的 #703 渲染问题。
- 通过为无效交易报价增加额外防护措施与日志记录,修复了 #701。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 通过将玩家检测逻辑移回服务端,修复头部追踪功能。
- 优化 CustomLookAtPlayerGoal,以更好处理边界情况并减少抖动。
- 修复多普勒NPC(Doppler NPCs)持续持有手中物品的问题。
- 改进 PoseManager 的日志消息。
- 更新Logo,采用全新设计。
6.10.0
- 通过切换至
DEFAULT原版姿态时清空模型部件的旋转/位置,修复了 #695。 - 通过仅在NPC处于空闲状态时应用锁定旋转与姿态动画,修复了 #695。
- 通过修正根节点旋转枢轴点,使其使用实际碰撞箱高度而非固定值 0.5f,修复了 #695。
- 修复多个目标注册问题,包括倒置的
isTargetedPlayer检查、离开处理器中错误的UUID、加入/离开时缺失的玩家目标刷新,以及对离线目标的重试机制。 - 修复目标注销后仍保留目标引用的问题。
- 移除加载姿态时自动锁定ROOT旋转的功能;根节点锁定现由用户手动控制。
- 在高级姿态与自定义姿态配置界面中添加“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿态界面添加模型专属姿态键过滤功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior与ModelAnimationData添加单元测试。 - 添加
NPCDataIsolationTestHelper及面向 Fabric 与 Forge 的游戏测试。 - 将最大头部偏航角范围由 60° 提升至 65°。
6.9.0
- 通过为NPC实体数据更新添加缓存与防护机制,防止重复触发,修复了 #692 与 #666。
- 通过为所有支持的NPC类型添加基础自定义姿态,修复了 #651 与 #617。
- 通过为逃离玩家、村民、怪物等行为添加额外逃离目标(Flee goals),修复了 #597。
- 修正姿态加载逻辑,使其直接从模组资源读取,而非先复制文件至磁盘。
- 通过在实体加入时先检查注册表中是否已存在条目,修复重复调用
saveNPC的问题。 - 新增
despawn与spawn命令,支持通过UUID移除或重新生成NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共API类,供外部模组以编程方式控制NPC姿态与管理NPC。 - 为所有支持的NPC类型添加姿态数据文件。
- 在基础姿态配置界面中添加“锁定旋转”复选框。
- 新增
MoveToPositionGoal,用于在执行回调动作前将NPC移动至指定位置。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,以尊重锁定的根节点旋转。 - 在NPC实体数据索引中同步添加所有者变更与维度变更。
- 将
EasyNPCItemAttachmentLayer添加至各类实体渲染器中。 - 新增专属“逃离目标”配置标签页,支持设置逃离爬行者、怪物、生物、玩家、村民及阳光的目标。
- 在跟随目标标签页中新增
FOLLOW_ITEM目标,使NPC可根据资源位置(例如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在“注视目标”界面中启用“按UUID注视实体”与“注视所有者”目标。 - 为
SynchedDataIndex添加persistent标志,使临时索引(如弩箭充能、模型动画)不再触发“脏保存”标记。 - 为
SlimeBase添加可配置的customParticlesEnabled标志,供API使用者调用。 - 新增
SoundType.PET并将CAT_PURR映射至猫形NPC,以丰富驯服后的环境音效种类。 - 将周期性NPC保存操作的日志级别由 INFO 降级为 DEBUG。
6.8.3
- 通过升级网络协议版本强制版本不匹配检查,修复了 #680。
- 通过重置名称标签的位置、旋转与尺寸,修复了 #679。
- 通过为根节点旋转添加多状态滑动支持,修复了 #665。
- 通过添加禁用鼠标光标跟随选项以简化姿态编辑,修复了 #664。
- 通过增强X轴与Z轴根节点旋转的支持,修复了 #663。
- 通过添加NPC魔杖配合潜行快捷旋转功能(使根节点朝向玩家),修复了 #661。
- 通过在交互处理器中增加移动工具检测,修复移动工具误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品误触发交互的问题。
- 通过调整碰撞箱与眼睛高度计算,修复史莱姆与幽灵(Ghast)的碰撞箱及名称标签位置问题。
- 通过调整偏移值,修复史莱姆与幽灵(Ghast)GUI的位置问题。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了 #677。 - 新增进度数据支持,可根据玩家互动与行为为NPC升级。
- 新增全局NPC追踪系统,便于跨世界管理与调试NPC。
- 为
OriginalModelConfig.withVariantTexture()添加选项,支持在原始模型上使用变体纹理。
6.8.1
- 通过复用现有预设辅助方法而非自定义实现,修复了 #676。
6.8.0(新增API支持)
- 通过为无效网络数据包添加警告信息与额外校验,修复了 #667。
- 修复马匹生成蛋模型。
- 修复Allay、鸡、苦力怕、狐狸、幽灵(Ghast)、马、掠夺者、铁傀儡、史莱姆与恼鬼(Vex)的姿态支持。
- 新增NPC基类,以提供更完善的API支持。
- 新增NPC原始类(raw classes),以支持高级API功能。
- 新增史莱姆与幽灵(Ghast)NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性及未来改进空间。
6.7.1
- 通过在客户端增加额外校验以应对原版漏洞,修复了 #657 与 #656。
6.7.0
- 通过在
setupAnim方法中实现狼腿部动画,修复了 #650。 - 通过修正
canBeHitByProjectiles的翻译,修复了 #648。 - 通过添加
allowBypassInvulnerability配置选项以允许/禁止NPC绕过无敌状态,修复了 #645。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不正确的问题。
- 修复对话与配置UI中名称标签意外显示的问题。
- 修复距离型动作中多个动作未被正确触发的问题。
- 修复NPC预设相关问题。
- 修复猫形NPC与狼形NPC的所有者数据未正确同步的问题。
- 新增预设浏览器,便于快速选择常用NPC预设。
- 新增预设
.snbt(文本格式)导出与导入功能,便于分享NPC预设。 - 重构现有NPC预设,统一采用新的
.snbt格式。 - 重构刷怪系统,使其采用新预设格式,以提升可维护性及未来改进空间。
6.6.2
- 通过重构缩放系统,修复了 #643。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增 MID 与 MOUSE_OVER 名称标签可见性模式,以实现对NPC名称显示的精细控制。
- 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 通过重构显示属性的内部数据处理逻辑,修复了 #638。
6.6.0
- 通过实现异步纹理加载并配备专用线程池,修复了 #634。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 通过原子操作修复纹理重载保护中的竞态条件。
- 修复远程纹理下载过程中HTTP连接的资源泄漏问题。
- 修复URL验证泛滥问题,防止同一纹理被多次同时下载。
- 修复远程图像验证异常处理缺陷,避免因无效URL导致崩溃。
- 修复NPC加载过程中出现的
defineId called for:警告信息。 - 重构纹理加载架构,采用多层防御与速率限制机制。
- 重构实体数据注册逻辑,以提升可维护性。
- 将数据类转换为现代Java记录(records),以增强不可变性与线程安全性。
- 使用
ConcurrentHashMap实现线程安全的会话服务器防刷机制。 - 添加全面的错误恢复机制,在失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与500毫秒速率限制。
- 优化异常处理:针对
IIOException与FileNotFoundException添加专门的捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 优化GitHub工作流,为Gradle依赖添加缓存。
- 优化Gradle构建时间与清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型与事件,修复了 #632。
- 通过优化纹理处理性能、缓存机制与内存占用,修复了 #629。
- 修复击杀命令对NPC无效的问题。
- 修复纹理重载保护机制阻止缓存淘汰后重新加载的问题。
- 修复远程图像验证器中WebP校验的Bug(缺失返回语句)。
- 重构纹理处理逻辑,以提升可维护性及未来改进空间。
- 新增基于时间的重载保护(60秒),替代永久性阻断机制。
- 为纹理处理新增额外单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除“jar-in-jar”打包方式,以提升模组兼容性与API能力。
- 通过改进剪刀(scissor)实现,修复了 #627,提升与其他模组的兼容性。
- 修复使用旋转或移动的模型部件时出现的 #625 活力动画问题。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增更优的姿态动画控制,提供“智能”、“默认”与“无”三种选项。
6.4.1
- 通过优化不同NPC UUID间的界面切换逻辑,修复了 #626;感谢
Spawnblade提供详尽的分析与修复建议。
6.4.0
- 通过改进对话数据验证与错误处理,修复了 #626。
- 通过重构渲染数据与渲染处理逻辑,修复了 #623。
- 通过确保自定义数据被正确保存与加载,修复了 #622。
- 修复“打开对话”动作类型,使其支持从其他NPC触发对话。
- 通过为
ConditionDataSet与ActionDataSet补充缺失的equals与hashCode方法,修复哈希问题。 - 新增自定义数据测试物品,便于 #622 的测试与自定义数据的快速验证。
- 优化记录类(records)并修复潜在的缺失数据问题。
6.3.0
- 重构配置界面专用组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前先进行过滤。
- 修复对话编辑器布局问题,提升可用性。
- 修复部分对话数据字段缺少默认值的问题。
- 新增对话优先级支持,以控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,以限制对话显示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中的字符串注入问题。
- 修复动作类型缺少翻译的问题。
- 新增计分板动作类型,支持增加、减少或设定计分板数值。
- 新增
@score(...)NPC宏,可在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮,添加指示器并提升可用性。
6.1.2
- 修复容器与菜单同步问题,补充缺失的关闭容器数据包。
- 修复关闭按钮在某些情况下失效的问题。
- 修复界面切换过程中鼠标光标跳跃的问题。
- 修复翻译文件,移除重复及已弃用的条目。
- 将Easy NPC魔杖移至现有核心物品标签页,而非新建标签页。
- 新增猫形NPC姿态支持(尾部除外的各模型部件)。
- 优化 EasyNPCWand 发光效果性能,仅在需要时启用。
- 优化自定义实体检测,排除展示框、标记实体、投掷物与刷怪笼等非生物实体。
- 优化猫形变体处理。
6.1.1
- 通过重新校验实体类型,修复了 #612。
- 通过强制同步特定模型的帽子与头部图层,修复了 #610。
- 修复兽人纹理。
- 通过将相关逻辑迁移至客户端,优化自定义模型支持与性能。
- 优化玩家至UUID映射的缓存,以提升玩家皮肤加载效率。
- 将更换模型命令与逻辑限定为仅适用于多普勒NPC(Doppler NPCs)。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界及NPC数据!
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前的NPC及其配置数据可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新用例。
🧩 新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC —— 包含核心功能与配置界面的完整整合包,开箱即用。
- Easy NPC:核心 —— 轻量级运行时与NPC逻辑,依赖极少,适用于服务端、整合包及开发者。
- Easy NPC:配置界面 —— 独立的NPC创建与编辑界面,仅需安装于需要UI的客户端。
🎯 此变更目的?
- 服务端与整合包可仅部署 核心 模组,实现精简配置。
- 当无需UI时,可降低内存占用与加载时间。
- 分离UI与核心逻辑,加速开发与测试流程。
Easy NPC (Bundle) 6.13.0
on 2026 May 08Easy NPC(1.20.1)更新日志
说明
本更新日志汇总了主要变更内容。
完整更新日志请参阅 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详细信息请查阅 升级指南。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全校验与权限管理。
新增了执行服务端命令的能力,但若被恶意利用,可能存在潜在风险。
本次更新将模型根节点的数据与逻辑,同其余模型部件的数据与逻辑分离,
因此可能导致现有NPC的根节点旋转与缩放重置为默认值。
- 通过分离模型根节点数据与逻辑,修复了问题 #725。
- 通过支持本地 .sbnt 文件作为预设,修复了问题 #722。
- 通过为对话与配置界面背景添加专用资源,修复了问题 #675。
- 通过引入新的安全校验与权限系统,修复了问题 #605、#532 和 #529。
- 通过添加实验性API文档与自定义模型支持示例,修复了问题 #469 和 #311。
- 通过移除冗余的背景渲染逻辑,修复了配置界面背景重复渲染的问题。
- 通过调整实体碰撞箱,修复了幽灵(Ghast)的碰撞箱与名称标签位置异常问题。
- ⚠️ 新增安全校验机制,防范潜在漏洞利用,确保在多人游戏环境中安全使用。
- 将动态对话界面背景替换为静态背景,以提升性能、可定制性与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构了配置界面专属组件,并将其从核心模组中移除。
- 移除了重复的精灵图集(sprite sheets)。
- 为未来可能集成 Luck Perms(如问题 #712 所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行了整体清理与优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了问题 #714。
- 通过将每NPC级别的 INFO 级日志降级为 DEBUG 级,并合并冗余警告信息,修复了问题 #713。
- 通过缩减启动/配置阶段日志输出体积,修复了问题 #711。
- 修复了NBT校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中添加了模型部件名称常量,确保混入(mixin)代码中的一致使用。
- 优化 RenderEntityTypeSupportConfig:增强过滤逻辑并优化数据结构,提升性能与可维护性。
- 移除了会倾倒大量数据结构的冗长调试日志。
6.11.0
- 修复了新自定义图层系统与手部渲染导致的 #703 渲染问题。
- 通过为无效交易报价增加额外防护与日志记录,修复了问题 #701。
- 修复了智能动画在头部位置被修改时无法正常工作的问题。
- 通过将玩家检测逻辑移回服务端独占执行,修复了头部追踪问题。
- 优化 CustomLookAtPlayerGoal,使其更好地处理边界情况并减少抖动。
- 修复了多普勒NPC(Doppler NPCs)持续持有手中物品的问题。
- 改进了 PoseManager 的日志消息。
- 更新了Logo设计。
6.10.0
- 通过切换至
DEFAULT原版姿势时清空模型部件的旋转/位置,修复了问题 #695。 - 通过仅在NPC处于空闲状态时应用锁定旋转与姿势动画,修复了问题 #695。
- 通过修正根节点旋转轴心,使其使用实际碰撞箱高度而非固定值 0.5f,修复了问题 #695。
- 修复了多个目标注册问题,包括:
isTargetedPlayer判断逻辑颠倒、离开处理器中UUID错误、加入/离开时未刷新面向玩家的目标、离线目标重试失败等。 - 修复了目标注销后仍保留目标引用的问题。
- 移除了加载姿势时自动锁定ROOT旋转的功能;现改为由用户手动控制根节点锁定。
- 在高级姿势与自定义姿势配置界面中添加了“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面添加了按模型类型筛选姿势键的功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior与ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper及 Fabric 与 Forge 平台的游戏测试。 - 将最大头部水平偏转角范围由 60° 提升至 65°。
6.9.0
- 通过为NPC实体数据更新添加缓存与防护机制,防止重复触发,修复了问题 #692 与 #666。
- 通过为所有受支持的NPC类型添加基础自定义姿势,修复了问题 #651 与 #617。
- 通过为逃离玩家、村民、怪物等行为添加额外“逃离”目标(Flee goals),修复了问题 #597。
- 修复了姿势加载逻辑,改为直接从模组资源读取,不再复制文件至磁盘。
- 修复了实体加入时重复调用
saveNPC的问题,方法是在保存前先检查注册表中是否已存在对应条目。 - 新增
despawn与spawn命令,支持通过UUID移除或重新生成NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共API类,供外部模组以编程方式控制NPC姿势及管理NPC。 - 为所有受支持的NPC类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了“锁定旋转”复选框。
- 新增
MoveToPositionGoal,可在执行回调动作前,将NPC移动至指定位置。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,以尊重已锁定的根节点旋转。 - 在NPC实体数据索引中同步支持所有者变更与维度变更。
- 将
EasyNPCItemAttachmentLayer注入到各类实体渲染器中。 - 在“逃离目标”配置页中新增专用“逃离目标”选项卡,支持设置逃离爬行者、怪物、生物、玩家、村民及阳光的目标。
- 在“跟随目标”选项卡中新增
FOLLOW_ITEM目标,使NPC可根据资源位置(如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在“注视目标”界面中启用了“按UUID注视实体”与“注视所有者”目标。 - 在
SynchedDataIndex中添加persistent标志,使瞬态索引(如弩箭充能、模型动画)不再触发脏标记(dirty-save marking)。 - 为
SlimeBase添加了可配置的customParticlesEnabled标志,供API使用者调用。 - 新增
SoundType.PET,并将CAT_PURR映射至猫型NPC,丰富驯服后的环境音效种类。 - 将周期性NPC保存操作的日志等级由 INFO 降为 DEBUG,降低日志冗余度。
6.8.3
- 通过升级网络协议版本强制校验版本不匹配,修复了问题 #680。
- 通过重置名称标签的位置、旋转与尺寸,修复了问题 #679。
- 通过为根节点旋转添加多状态滑动支持,修复了问题 #665。
- 通过添加禁用鼠标光标跟随选项,简化摆姿操作,修复了问题 #664。
- 通过增强X轴与Z轴根节点旋转的支持,修复了问题 #663。
- 通过添加NPC魔杖配合潜行快速旋转根节点朝向玩家的功能,修复了问题 #661。
- 通过在交互处理器中增加移动工具检测,修复了移动工具误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复了预设物品误触发交互的问题。
- 通过调整碰撞箱与眼睛高度计算,修复了史莱姆与幽灵(Ghast)的碰撞箱及名称标签位置问题。
- 通过调整偏移值,修复了史莱姆与幽灵(Ghast)GUI的位置问题。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了问题 #677。 - 新增NPC成长进度数据支持,依据玩家互动与行为实现NPC等级提升。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 为
OriginalModelConfig.withVariantTexture()添加选项,支持在原始模型上使用变体纹理。
6.8.1
- 通过复用已有预设辅助方法而非自定义方法,修复了问题 #676。
6.8.0(新增API支持)
- 通过为非法网络数据包添加警告提示与额外校验,修复了问题 #667。
- 修复了马匹生成蛋的模型显示。
- 修复了悦灵(allay)、鸡、苦力怕(creeper)、狐狸、幽灵(ghast)、马、恼鬼(illager)、铁傀儡、史莱姆与恼鬼(vex)的姿势支持。
- 新增NPC基础类,以强化API支持能力。
- 新增NPC原始类(raw classes),以支持更高级的API功能。
- 新增史莱姆与幽灵(Ghast)NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性及为后续改进铺路。
6.7.1
- 通过在客户端增加针对原版Bug的额外校验,修复了问题 #657 与 #656。
6.7.0
- 通过在
setupAnim方法中实现狼腿部动画,修复了问题 #650。 - 通过修复
canBeHitByProjectiles的翻译,修复了问题 #648。 - 通过添加
allowBypassInvulnerability配置选项以启用/禁用NPC免疫绕过功能,修复了问题 #645。 - 修复了删除按钮在宽度较小时仍显示标签的问题。
- 修复了上下按钮在某些情况下定位不准确的问题。
- 修复了对话与配置UI界面中错误显示名称标签的问题。
- 修复了距离型动作中多个动作未能正确触发的问题。
- 修复了NPC预设相关问题。
- 修复了猫型NPC与狼型NPC的所有者数据未能正确同步的问题。
- 新增预设浏览器,便于快速选择常用NPC预设。
- 新增预设
.snbt(文本格式)导出与导入功能,方便NPC预设共享。 - 重构现有NPC预设,统一采用新
.snbt格式。 - 重构刷怪系统,采用新预设格式,以提升可维护性与未来拓展性。
6.6.2
- 通过重构缩放系统,修复了问题 #643。
- 修复了重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增 MID 与 MOUSE_OVER 名称标签可见性模式,实现对NPC名称显示的精细控制。
- 新增基于队伍(Team)的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 通过重构显示属性的内部数据处理逻辑,修复了问题 #638。
6.6.0
- 通过实现异步纹理加载并配备专用线程池,修复了问题 #634。
- 修复了纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 通过原子操作修复了纹理重载防护中的竞态条件。
- 修复了远程纹理下载过程中HTTP连接的资源泄漏问题。
- 修复了URL校验泛滥问题,避免同一纹理被多次并发下载。
- 修复了远程图像校验的异常处理逻辑,防止因无效URL导致崩溃。
- 修复了NPC加载期间出现的
defineId called for:警告信息。 - 重构纹理加载架构,采用多层防护与速率限制机制。
- 重构实体数据注册逻辑,以提升可维护性。
- 将数据类转换为现代Java记录(records),增强不可变性与线程安全性。
- 使用 ConcurrentHashMap 实现线程安全的会话服务器防刷机制。
- 添加全面的错误恢复机制,在失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与500毫秒速率限制。
- 优化异常处理:为 IIOException 与 FileNotFoundException 分别添加专门捕获块。
6.5.2
- 修复了村民职业与工作皮肤显示问题。
- 优化GitHub工作流,为Gradle依赖添加缓存。
- 提升Gradle构建速度并优化清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型与事件,修复了问题 #632。
- 通过优化纹理处理性能、缓存策略与内存占用,修复了问题 #629。
- 修复了NPC无法响应kill命令的问题。
- 修复了纹理重载防护机制在缓存逐出后阻止缓存重载的问题。
- 修复了远程图像校验器中WebP验证的bug(缺失return语句)。
- 重构纹理处理逻辑,以提升可维护性与未来拓展性。
- 新增基于时间的重载防护(60秒),替代永久性阻断机制。
- 为纹理处理新增额外单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除了“jar-in-jar”打包方式,以提升模组兼容性与API能力。
- 通过优化剪裁(scissor)实现,修复了问题 #627,增强与其他模组的兼容性。
- 修复了使用旋转或移动的模型部件时,生动动画(lively animation)异常的问题。
- 修复了使用缩放模型部件时默认动画被取消的问题。
- 新增更完善的姿势动画控制,提供“智能”、“默认”与“无”三种选项。
6.4.1
- 通过优化不同NPC UUID间的界面切换逻辑,修复了问题 #626;感谢
Spawnblade提供详尽调查与修复建议。
6.4.0
- 通过增强对话数据校验与错误处理,修复了问题 #626。
- 通过重构渲染数据与渲染处理逻辑,修复了问题 #623。
- 通过确保自定义数据能被正确保存与加载,修复了问题 #622。
- 修复了“打开对话”动作类型,使其支持从其他NPC触发对话。
- 通过为 ConditionDataSet 与 ActionDataSet 补全缺失的 equals 与 hashCode 方法,修复了哈希问题。
- 新增自定义数据测试物品,用于问题 #622 及更便捷的自定义数据测试。
- 优化记录类(records)并修复潜在的缺失数据问题。
6.3.0
- 重构配置界面专属组件,并将其从核心模组中移除。
- 修复对话数据:在发送至客户端前进行过滤。
- 修复对话编辑器布局问题并提升易用性。
- 修复部分对话数据字段缺少默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,用于限制对话展示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复了对话中的字符串注入漏洞。
- 修复了部分动作类型缺少翻译的问题。
- 新增计分板动作类型,支持增减、设定计分板数值。
- 新增
@score(...)NPC宏,用于在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮,添加指示器并提升易用性。
6.1.2
- 修复了容器与菜单同步问题,补充缺失的关闭容器数据包。
- 修复了部分情况下关闭按钮失效的问题。
- 修复了界面切换时鼠标光标跳跃的问题。
- 修复了翻译文件,移除了重复与已弃用的条目。
- 将Easy NPC魔杖移至现有核心物品分类页,而非新建分类页。
- 新增猫型NPC姿势支持(尾部除外各模型部件)。
- 通过在无需时禁用发光效果,优化 EasyNPCWand 发光效果性能。
- 通过排除非生物实体(如展示框、画、投掷物、刷怪箱),优化自定义实体检测。
- 优化猫型NPC变体处理。
6.1.1
- 通过重新校验实体类型,修复了问题 #612。
- 通过强制同步特定模型的帽子与头部图层,修复了问题 #610。
- 修复了兽人(orc)纹理显示。
- 通过将相关逻辑迁移至客户端独占执行,提升了自定义模型支持能力与性能。
- 优化玩家UUID映射缓存,以加速玩家皮肤加载。
- 将更换模型的命令与逻辑限定于多普勒NPC(Doppler NPCs)。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界存档及NPC数据。
本版本包含大量改进、优化与内部重构,与早期版本 不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的NPC及其配置数据,可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已被重构,以支持新应用场景。
🧩 新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC —— 包含核心功能与配置界面的整合包,开箱即用。
- Easy NPC:核心 —— 轻量级运行时与NPC逻辑,依赖极少,适用于服务端、模组包及开发者。
- Easy NPC:配置界面 —— 独立的NPC创建与编辑界面,仅需安装于需要UI的客户端。
🎯 此次变更的原因?
- 服务端与模组包可仅部署 核心 模组,实现更精简的部署方案。
- 当无需UI时,可显著降低内存占用与加载时间。
- 将UI与核心逻辑分离,可加快开发与测试速度。
Easy NPC (Bundle) 6.12.0
on 2026 Apr 15Easy NPC(1.20.1)版本更新日志
注意事项
本更新日志汇总了主要变更内容。
如需查看完整变更记录,请访问 GitHub 历史提交记录。
⚠️ 重要提示:升级至新版本前,请务必备份您的世界存档及 NPC 数据!
更多迁移说明请参阅 升级指南。
6.12.0
- 修复 #714:针对原版模型,为自定义模型部件列表添加额外校验逻辑。
- 修复 #713:降低日志冗余度——将每个 NPC 的
INFO级别日志降级为DEBUG,并合并重复的警告信息。 - 修复 #711:缩减启动/配置阶段输出的过大日志体积。
- 修复 NBT 校验防护机制,避免在生产环境中进行不必要的缓冲区分配。
- 在
EasyNPCModelManager中新增模型部件名称常量,确保混入(Mixin)代码中统一使用。 - 优化
RenderEntityTypeSupportConfig:增强过滤逻辑,并重构数据结构以提升性能与可维护性。 - 移除会大量输出复杂数据结构的冗长调试日志。
6.11.0
- 修复 #703:解决新自定义图层系统与手部渲染相关的显示问题。
- 修复 #701:为无效交易报价增加额外防护机制与日志记录。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 修复头部追踪逻辑:将玩家检测逻辑移回服务端独占执行。
- 优化
CustomLookAtPlayerGoal,更好处理边界情况,减少抖动。 - 修复多普勒(Doppler)NPC 持续保留手中物品的问题。
- 改进
PoseManager的日志输出信息。 - 更新 Logo 设计,采用全新视觉风格。
6.10.0
- 修复 #695:
- 切换至
DEFAULT原版姿势时,清空模型部件的旋转/位置; - 仅当 NPC 处于空闲状态时才应用“锁定旋转”与“姿势动画”;
- 修正根节点(ROOT)旋转轴心点,改用实际包围盒高度而非固定值
0.5f。
- 切换至
- 修复多个目标(Objective)注册问题,包括:
isTargetedPlayer判断逻辑反转;- 离开事件处理器中 UUID 错误;
- 加入/离开时未刷新面向玩家的目标;
- 对离线目标重试失败。
- 修复目标注销后仍保留目标引用的问题。
- 移除加载姿势时自动锁定 ROOT 旋转的行为;现改为由用户手动控制。
- 在高级姿势与自定义姿势配置界面中新增「锁定旋转」复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面添加按模型类型筛选姿势键的功能。 - 新增单元测试,覆盖
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData。 - 新增
NPCDataIsolationTestHelper及 Fabric / Forge 平台的游戏测试(Game Test)。 - 将头部水平转向(yaw)最大角度从 60° 提升至 65°。
6.9.0
- 修复 #692、#666:通过缓存与防护机制,防止 NPC 实体数据被重复触发更新。
- 修复 #651、#617:为所有支持的 NPC 类型添加基础自定义姿势。
- 修复 #597:新增多种“逃离”目标(Flee Goal),支持逃离玩家、村民、怪物等。
- 修复姿势加载逻辑,改为直接从模组资源读取,不再复制文件到磁盘。
- 修复实体加入世界时重复调用
saveNPC的问题,增加对已有注册项的检查。 - 新增
/npc despawn <uuid>与/npc spawn <uuid>命令,支持按 UUID 移除/重生 NPC,并可配置移除原因。 - 新增公共 API 类:
ModelPoseAPI:用于程序化控制 NPC 姿势;EasyNPCEntityHandler:用于外部模组管理 NPC 实体。
- 新增所有支持 NPC 类型的姿势数据文件(
.pose)。 - 在基础姿势配置界面中新增「锁定旋转」复选框。
- 新增
MoveToPositionGoal:使 NPC 先移动至指定位置,再执行回调动作。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,尊重用户设定的 ROOT 旋转锁定。 - 在 NPC 实体数据索引中同步支持「所有者变更」与「维度变更」。
- 将
EasyNPCItemAttachmentLayer注入多个实体渲染器中。 - 新增专属「逃离目标(Flee Objective)」配置页,支持设置逃离苦力怕、怪物、生物、玩家、村民及阳光的目标。
- 在跟随目标(Follow Objectives)页中新增
FOLLOW_ITEM目标类型,支持按资源路径(如minecraft:apple)让 NPC 追随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在「注视目标(Look Objectives)」界面中启用「按 UUID 注视实体」与「注视所有者」功能。 - 在
SynchedDataIndex中新增persistent标志,使临时索引(如弩箭充能、模型动画)不再触发脏标记(dirty-save)。 - 在
SlimeBase中新增可配置的customParticlesEnabled标志,供 API 调用方使用。 - 新增
SoundType.PET声音类型,并将CAT_PURR映射至猫形 NPC,丰富驯服类环境音效。 - 将周期性 NPC 保存操作的日志等级从
INFO降为DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本,强制校验客户端与服务端版本匹配。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为 ROOT 旋转添加多状态滑动支持。
- 修复 #664:新增选项,禁用「跟随鼠标光标」功能,便于精细摆姿。
- 修复 #663:增强对 X 与 Z 轴 ROOT 旋转的支持。
- 修复 #661:新增快捷旋转功能——手持 NPC 魔杖并潜行,即可使 NPC ROOT 朝向玩家旋转。
- 修复移动工具错误触发交互:在交互处理器中增加对移动工具的判断。
- 修复预设物品错误触发交互:在交互处理器中增加对预设物品的判断。
- 修复史莱姆与幽浮(Ghast)的碰撞箱与名称标签位置问题,调整包围盒与眼睛高度计算。
- 修复史莱姆与幽浮 GUI 位置偏移问题,调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,新增notifyTrade方法,避免崩溃。 - 新增 NPC 进度系统(Progression Data):基于玩家互动与行为实现 NPC 升级。
- 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
- 在
OriginalModelConfig中新增.withVariantTexture()方法,支持为原版模型使用变体纹理。
6.8.1
- 修复 #676:改用已有的预设辅助方法,而非自定义实现。
6.8.0(新增 API 支持)
- 修复 #667:为非法网络数据包添加警告提示与额外校验。
- 修复马匹生成蛋模型显示异常。
- 修复以下 NPC 类型的姿势支持:悦灵(Allay)、鸡、苦力怕、狐狸、幽浮、马、灾厄村民、铁傀儡、史莱姆、恼鬼(Vex)。
- 新增 NPC 基础类(Base Classes),提升 API 兼容性。
- 新增 NPC 原始类(Raw Classes),支持高级 API 扩展。
- 新增史莱姆与幽浮 NPC 类型。
- 新增「自定义模型 API(Custom Model API)」,简化与其他模组及自定义模型的集成。
- 重构内部数据处理与注册逻辑,提升可维护性与未来扩展能力。
6.7.1
- 修复 #657 与 #656:在客户端增加额外校验,规避原版漏洞。
6.7.0
- 修复 #650:在
setupAnim方法中实现狼的腿部动画。 - 修复 #648:修正
canBeHitByProjectiles的本地化翻译。 - 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止 NPC 绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不正确的问题。
- 修复对话与配置 UI 中错误显示名称标签的问题。
- 修复距离触发动作(Distance Action)中多个动作未能正确触发的问题。
- 修复 NPC 预设相关问题。
- 修复猫形与狼形 NPC 的所有者数据不同步问题。
- 新增预设浏览器(Preset Browser),便于快速选择常用 NPC 预设。
- 新增预设
.snbt(文本格式)导出与导入功能,方便分享 NPC 预设。 - 将现有 NPC 预设重构为新
.snbt格式。 - 重构刷怪笼(Spawner)系统,采用新预设格式,提升可维护性与扩展性。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未正确更新碰撞箱与名称标签位置的问题。
- 新增名称标签可见性模式:
MID(中距)与MOUSE_OVER(鼠标悬停),提供更精细的显示控制。 - 新增基于原版队伍(Team)的名称标签可见性支持。
6.6.1
- 修复 #638:重构显示属性(Display Attributes)的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,并使用专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 使用原子操作(Atomic Operations)修复纹理重载保护中的竞态条件。
- 修复远程纹理下载过程中 HTTP 连接的资源泄漏问题。
- 修复 URL 校验重复触发,导致同一纹理被多次并发下载的问题。
- 修复远程图像校验异常处理缺失,避免因非法 URL 导致崩溃。
- 修复 NPC 加载时频繁出现的
defineId called for:警告。 - 重构纹理加载架构,引入多层防御机制与速率限制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类迁移为现代 Java 记录(Records),增强不可变性与线程安全性。
- 新增基于
ConcurrentHashMap的线程安全会话服务器防刷机制。 - 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池 + 500ms 速率限制。
- 改进异常处理:为
IIOException与FileNotFoundException添加专门捕获块。
6.5.2
- 修复村民职业与工作皮肤显示异常问题。
- 优化 GitHub 工作流,为 Gradle 依赖添加缓存。
- 提升 Gradle 构建速度与清理任务效率。
6.5.1
- 修复 #632:新增
ON_KILL动作类型与对应事件。 - 修复 #629:优化纹理处理性能、缓存策略与内存占用。
- 修复
/kill命令对 NPC 不生效的问题。 - 修复纹理重载保护机制阻止缓存重新加载的问题。
- 修复远程图像校验器中 WebP 格式验证的返回语句缺失 Bug。
- 重构纹理处理逻辑,提升可维护性与扩展性。
- 新增基于时间的重载保护(60 秒),替代永久性阻断机制。
- 新增纹理处理相关单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除 Jar-in-Jar 打包方式,以提升模组兼容性与 API 能力。
- 修复 #627:改进剪裁(Scissor)实现,增强与其他模组的兼容性。
- 修复 #625:解决旋转或位移后的模型部件导致生动动画异常的问题。
- 修复缩放模型部件时默认动画被意外取消的问题。
- 新增更精细的姿势动画控制选项:
Smart(智能)、Default(默认)、None(禁用)。
6.4.1
- 修复 #626:优化不同 NPC UUID 下的界面切换逻辑,感谢
Spawnblade提供详细分析与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理。
- 修复 #623:重构渲染数据与渲染处理逻辑。
- 修复 #622:确保自定义数据能被正确保存与加载。
- 修复「打开对话」动作类型,支持从其他 NPC 触发对话。
- 修复哈希问题:为
ConditionDataSet与ActionDataSet补全equals()与hashCode()方法。 - 新增自定义数据测试物品(Custom Data Test Item),便于 #622 测试与日常开发。
- 优化记录类(Records)并修复潜在的数据缺失问题。
6.3.0
- 将配置 UI 特有组件重构并移出核心模组。
- 修复对话数据:在发送至客户端前先进行过滤。
- 修复对话编辑器布局问题,提升可用性。
- 修复部分对话字段缺少默认值的问题。
- 新增对话优先级(Dialog Priority)支持,控制对话执行顺序。
- 新增对话与记分板动作的条件(Condition)支持。
- 新增对话频率(Frequency)支持,限制对话触发频次。
- 新增支持记分板与条件功能的 NPC 预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中的字符串注入漏洞。
- 修复部分动作类型缺少本地化翻译的问题。
- 新增记分板动作类型:支持增加、减少、设置记分板数值。
- 新增 NPC 宏命令
@score(...),可在对话中动态显示记分板数值。 - 新增更多单元测试。
- 优化旋转按钮(Spin Button):增加状态指示器,提升易用性。
6.1.2
- 修复容器与菜单同步问题(缺失关闭容器数据包)。
- 修复某些情况下关闭按钮失效的问题。
- 修复界面切换时鼠标光标异常跳动的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将 Easy NPC 魔杖移至现有核心物品标签页,不再新建标签页。
- 新增猫形 NPC 姿势支持(除尾巴外所有模型部件)。
- 优化
EasyNPCWand发光效果性能:仅在需要时启用。 - 优化自定义实体检测逻辑,排除非生物实体(如展示框、标记实体、投掷物、刷怪笼)。
- 优化猫形变体(Cat Variant)处理逻辑。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人(Orc)纹理显示异常。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端独占执行。
- 优化玩家 → UUID 映射缓存,提升皮肤加载效率。
- 将更换模型命令与逻辑限制为仅适用于多普勒(Doppler)NPC。
6.1.0 ✨
这是一个重大版本更新!升级前请务必备份您的世界存档与 NPC 数据!
本版本包含大量改进、性能优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更(Breaking Changes)
- 6.1.0 之前创建的 NPC 及其配置数据可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已被重构,以支持新的使用场景。
🧩 全新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC:整合版,包含 Core 与 Configuration UI,开箱即用。
- Easy NPC: Core:轻量级运行时与 NPC 核心逻辑,依赖极少。适用于服务器、整合包与开发者。
- Easy NPC: Configuration UI:独立配置界面,用于创建与编辑 NPC。仅需安装在需要 UI 的客户端上。
🎯 为何如此设计?
- 服务器与整合包可仅部署 Core 模组,实现更精简的部署方案;
- 当无需 UI 时,显著降低内存占用与加载时间;
- 分离 UI 与核心逻辑,加快开发与测试迭代速度。
Easy NPC (Bundle) 6.12.0
on 2026 Apr 15Easy NPC(1.20.1)版本更新日志
注意事项
本更新日志汇总了主要变更内容。
如需查看完整变更记录,请访问 GitHub 历史提交记录。
⚠️ 重要提示:升级至新版本前,请务必备份您的世界存档及 NPC 数据!
更多迁移说明请参阅 升级指南。
6.12.0
- 修复 #714:针对基于原版模型的自定义模型部件列表,新增校验逻辑。
- 修复 #713:降低日志冗余度——将每个 NPC 的
INFO级别日志降级为DEBUG,并合并重复的警告信息。 - 修复 #711:缩减启动/配置阶段输出的过大日志体积。
- 修复 NBT 校验防护机制,避免在生产环境中产生不必要的缓冲区分配。
- 在
EasyNPCModelManager中添加模型部件名称常量,确保混入(Mixin)代码中统一使用。 - 优化
RenderEntityTypeSupportConfig:增强过滤逻辑,改进数据结构,提升性能与可维护性。 - 移除会大量打印复杂数据结构的冗余调试日志。
6.11.0
- 修复 #703:解决新自定义图层系统与手部渲染导致的显示异常问题。
- 修复 #701:为无效交易报价增加额外防护机制与日志记录。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 修复头部追踪逻辑:将玩家检测逻辑移回服务端独占执行。
- 优化
CustomLookAtPlayerGoal,更好地处理边界情况,减少抖动。 - 修复 Doppler 类型 NPC 持续保留手持物品的问题。
- 改进
PoseManager的日志输出信息。 - 更新 Logo 设计,采用全新视觉风格。
6.10.0
- 修复 #695:
- 切换至
DEFAULT原版姿势时,清空模型部件的旋转/位置状态; - 仅当 NPC 处于空闲状态时才应用“锁定旋转”与“姿势动画”;
- 修正根节点(ROOT)旋转轴心点计算方式,改用实际包围盒高度而非固定值
0.5f。
- 切换至
- 修复多项目标注册问题,包括:
isTargetedPlayer判断逻辑反转;- 离开事件处理器中 UUID 错误;
- 加入/离开时未刷新面向玩家的目标;
- 对离线目标重试失败。
- 修复目标注销后仍保留目标引用的问题。
- 移除加载姿势时自动锁定 ROOT 旋转的行为;现改为由用户手动控制。
- 在高级姿势与自定义姿势配置界面中新增“锁定旋转”复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面添加按模型类型筛选姿势键的功能。 - 新增单元测试,覆盖
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData。 - 新增
NPCDataIsolationTestHelper及 Fabric / Forge 平台的游戏测试(Game Test)。 - 将头部水平转向(yaw)最大角度范围从 60° 提升至 65°。
6.9.0
- 修复 #692、#666:通过缓存与防护机制,防止 NPC 实体数据被重复触发更新。
- 修复 #651、#617:为所有支持的 NPC 类型添加基础自定义姿势。
- 修复 #597:新增多种“逃离”目标(Flee Goal),支持逃离玩家、村民、怪物等。
- 修复姿势加载逻辑,改为直接从模组资源读取,不再复制文件到磁盘。
- 修复实体加入世界时重复调用
saveNPC的问题:先检查注册表中是否已存在对应条目。 - 新增
/npc despawn <UUID>与/npc spawn <UUID>命令,支持按 UUID 移除/重生 NPC,并可指定移除原因。 - 新增公共 API 类:
ModelPoseAPI:用于程序化控制 NPC 姿势;EasyNPCEntityHandler:用于外部模组管理 NPC 实体。
- 为所有支持的 NPC 类型添加姿势数据文件(
.pose)。 - 在基础姿势配置界面中新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal:使 NPC 移动至指定位置后执行回调动作。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl,尊重用户设定的 ROOT 旋转锁定状态。 - 同步支持 NPC 所有者变更与维度变更,并将其纳入实体数据索引(
SynchedDataIndex)。 - 将
EasyNPCItemAttachmentLayer注入多个实体渲染器中。 - 新增专属“逃离目标(Flee Objective)”配置页,支持设置逃离苦力怕、怪物、生物、玩家、村民及阳光。
- 在“跟随目标(Follow Objective)”页中新增
FOLLOW_ITEM类型,支持按资源路径(如minecraft:apple)跟随物品实体。 - 新增
LookAtEntityByUUIDGoal,并在“注视目标(Look Objective)”界面中启用“按 UUID 注视实体”与“注视所有者”功能。 - 为
SynchedDataIndex新增persistent标志位,使临时索引(如弩箭充能、模型动画)不再触发“脏标记(dirty-save)”。 - 为
SlimeBase新增可配置的customParticlesEnabled标志,供 API 调用方使用。 - 新增
SoundType.PET音效类型,并将CAT_PURR映射至猫型 NPC,丰富驯服环境音效。 - 将周期性 NPC 保存操作的日志等级由
INFO降级为DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本,强制检测并拒绝版本不匹配的连接。
- 修复 #679:重置名称标签的位置、旋转与尺寸。
- 修复 #665:为 ROOT 旋转添加多状态滑动支持。
- 修复 #664:新增选项,可禁用“跟随鼠标光标”,便于精细摆姿。
- 修复 #663:增强对 X 与 Z 轴 ROOT 旋转的支持。
- 修复 #661:新增快捷旋转功能——持 NPC 魔杖并潜行时,可快速使 ROOT 朝向玩家。
- 修复移动工具错误触发交互行为的问题:在交互处理器中增加对移动工具的判断。
- 修复预设物品(Preset Item)错误触发交互行为的问题:在交互处理器中增加对预设物品的判断。
- 修复史莱姆与幽浮怪的碰撞箱与名称标签位置异常:调整包围盒与眼睛高度计算逻辑。
- 修复史莱姆与幽浮怪 GUI 界面位置偏移:调整偏移量参数。
6.8.2
- 修复 #677:扩展
SafeMerchantData,新增notifyTrade方法以避免崩溃。 - 新增 NPC 进阶系统支持:基于玩家互动与行为实现 NPC 升级。
- 新增全局 NPC 追踪系统,便于跨世界统一管理与调试。
- 为
OriginalModelConfig新增.withVariantTexture()方法,支持在原始模型上使用变体纹理。
6.8.1
- 修复 #676:改用已有的预设辅助方法,而非自定义实现。
6.8.0(新增 API 支持)
- 修复 #667:为非法网络数据包新增警告日志与多重校验。
- 修复马匹生成蛋模型显示异常。
- 修复以下生物的姿势支持:悦灵(Allay)、鸡、苦力怕、狐狸、幽浮怪、马、恼鬼(Illager)、铁傀儡、史莱姆、恼鬼(Vex)。
- 新增 NPC 基础类(Base Classes),提升 API 兼容性。
- 新增 NPC 原始类(Raw Classes),满足高级 API 使用需求。
- 新增史莱姆与幽浮怪两种 NPC 类型。
- 新增“自定义模型 API(Custom Model API)”,简化与其他模组及自定义模型的集成流程。
- 重构内部数据处理与注册逻辑,提升可维护性与未来扩展能力。
6.7.1
- 修复 #657 与 #656:在客户端新增额外校验,规避原版漏洞影响。
6.7.0
- 修复 #650:在
setupAnim方法中实现狼的腿部动画。 - 修复 #648:“能否被投射物击中(canBeHitByProjectiles)”翻译缺失问题。
- 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止 NPC 绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签文字的问题。
- 修复上下按钮在某些情况下定位不准的问题。
- 修复对话界面与配置界面中意外显示名称标签的问题。
- 修复距离触发动作(Distance Action)中多个动作未能正确触发的问题。
- 修复 NPC 预设相关问题。
- 修复猫型与狼型 NPC 的所有者数据未同步的问题。
- 新增预设浏览器(Preset Browser),便于快速选择常用 NPC 预设。
- 新增预设
.snbt(纯文本格式)导出与导入功能,方便分享 NPC 预设。 - 将现有 NPC 预设重构为新
.snbt格式。 - 重构刷怪笼系统,采用新预设格式,提升可维护性与未来扩展能力。
6.6.2
- 修复 #643:重构缩放系统。
- 修复重启/重载后缩放未正确更新碰撞箱与名称标签位置的问题。
- 新增名称标签可见性模式:
MID(仅中距离显示)与MOUSE_OVER(仅悬停时显示),提供更精细的显示控制。 - 新增基于原版队伍(Team)的名称标签可见性支持。
6.6.1
- 修复 #638:重构显示属性(Display Attributes)的内部数据处理逻辑。
6.6.0
- 修复 #634:实现异步纹理加载,使用专用线程池。
- 修复纹理加载阻塞渲染线程导致游戏卡顿的问题。
- 使用原子操作(Atomic Operations)修复纹理重载保护中的竞态条件。
- 修复远程纹理下载过程中 HTTP 连接泄漏问题。
- 修复 URL 校验失效导致同一纹理被多次并发下载的问题。
- 修复远程图片校验异常处理缺失,避免因非法 URL 导致崩溃。
- 修复 NPC 加载时频繁出现的
defineId called for:警告日志。 - 重构纹理加载架构,引入多层防御机制与速率限制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类(Data Classes)迁移为现代 Java 记录类(Records),增强不可变性与线程安全性。
- 新增基于
ConcurrentHashMap的线程安全会话服务器防刷机制。 - 新增全面的错误恢复机制,失败后自动重置冷却时间。
- 优化纹理加载:采用双线程池 + 500ms 速率限制。
- 改进异常处理:为
IIOException与FileNotFoundException添加独立捕获块。
6.5.2
- 修复村民职业与工作站点皮肤显示异常问题。
- 优化 GitHub 工作流:为 Gradle 依赖添加缓存。
- 提升 Gradle 构建速度与清理任务效率。
6.5.1
- 修复 #632:新增
ON_KILL动作类型与对应事件。 - 修复 #629:优化纹理处理性能、缓存策略与内存占用。
- 修复
/kill命令对 NPC 不生效的问题。 - 修复纹理重载保护机制阻止缓存重建的问题。
- 修复远程图片校验器中 WebP 格式验证的返回语句缺失 Bug。
- 重构纹理处理逻辑,提升可维护性与未来扩展能力。
- 新增基于时间的重载保护(60 秒冷却),替代永久性阻断机制。
- 新增纹理处理相关单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除 Jar-in-Jar 打包方式,以提升模组兼容性与 API 能力。
- 修复 #627:重构剪裁(Scissor)实现,增强与其他模组的兼容性。
- 修复 #625:解决旋转或移动模型部件时动态动画异常的问题。
- 修复缩放模型部件时默认动画被意外取消的问题。
- 新增更精细的姿势动画控制选项:
Smart(智能)、Default(默认)、None(禁用)。
6.4.1
- 修复 #626:优化不同 NPC UUID 下的界面切换逻辑,感谢
Spawnblade提供详细分析与修复建议。
6.4.0
- 修复 #626:增强对话数据校验与错误处理能力。
- 修复 #623:重构渲染数据与渲染逻辑。
- 修复 #622:确保自定义数据能被正确保存与加载。
- 修复“打开对话”动作类型,支持从其他 NPC 触发对话。
- 修复哈希问题:为
ConditionDataSet与ActionDataSet补全equals()与hashCode()方法。 - 新增自定义数据测试物品(Custom Data Test Item),便于 #622 测试与日常调试。
- 优化记录类(Records)实现,修复潜在的数据缺失风险。
6.3.0
- 将配置界面专用组件重构并移出核心模组,实现模块解耦。
- 修复对话数据:在发送至客户端前进行过滤。
- 修复对话编辑器布局问题,提升易用性。
- 修复部分对话字段缺少默认值的问题。
- 新增对话优先级(Dialog Priority)支持,控制对话执行顺序。
- 新增对话与记分板动作的条件(Condition)支持。
- 新增对话频率(Frequency)支持,限制对话触发频次。
- 新增支持记分板与条件功能的 NPC 预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中字符串注入(String Injection)漏洞。
- 修复部分动作类型缺少本地化翻译的问题。
- 新增记分板动作类型:支持增加、减少、设置记分板数值。
- 新增 NPC 宏命令
@score(...),可在对话中显示记分板数值。 - 新增更多单元测试。
- 优化旋转按钮(Spin Button):添加状态指示器,提升交互体验。
6.1.2
- 修复容器与菜单同步问题:补全缺失的关闭容器数据包。
- 修复某些情况下关闭按钮失效的问题。
- 修复界面跳转时鼠标光标异常跳跃的问题。
- 修复翻译文件:移除重复与已弃用条目。
- 将 Easy NPC 魔杖移至已有核心物品栏,不再新建独立标签页。
- 新增猫型 NPC 姿势支持(除尾巴外所有模型部件)。
- 优化
EasyNPCWand发光效果性能:仅在需要时启用。 - 优化自定义实体检测逻辑:排除非生物实体(如展示框、标记实体、投掷物、刷怪笼等)。
- 优化猫型 NPC 变体处理逻辑。
6.1.1
- 修复 #612:重新校验实体类型有效性。
- 修复 #610:强制同步特定模型的帽子与头部图层。
- 修复兽人(Orc)纹理显示异常。
- 优化自定义模型支持与性能:将相关逻辑迁移至客户端独占执行。
- 优化玩家 → UUID 映射缓存,提升皮肤加载效率。
- 限制更换模型命令与逻辑仅对 Doppler 类型 NPC 生效。
6.1.0 ✨(重大更新)
这是一次重大版本更新。升级前请务必备份您的世界存档与 NPC 数据!
本版本包含大量改进、性能优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更(Breaking Changes)
- 6.1.0 之前创建的 NPC 及其配置数据可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新功能场景。
🧩 全新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC:整合版,包含 Core 与 Configuration UI,开箱即用。
- Easy NPC: Core:轻量级运行时与逻辑核心,依赖极少,适用于服务器、整合包与开发者。
- Easy NPC: Configuration UI:独立配置界面,用于创建与编辑 NPC,仅需安装于需要 UI 的客户端。
🎯 为何如此重构?
- 服务器与整合包可仅部署 Core 模组,精简服务端配置;
- 在无需 UI 的场景下显著降低内存占用与加载耗时;
- 分离 UI 与核心逻辑,加速开发与测试流程。
Easy NPC (Bundle) 6.11.1
on 2026 Apr 07Easy NPC:核心 (1.21.1) 更新日志
注意
此更新日志包含的是变更摘要。 完整更新日志请前往 GitHub 历史记录 查看。
注意:在更新到新版本之前,请务必备份你的世界 / NPC! 更多信息请查看升级指南。
6.11.1
- 通过改进可恢复交易数据的向后兼容解析,修复了 #710。
6.11.0
- 修复了 #703:新的自定义图层系统与手部渲染导致的渲染问题。
- 通过为无效交易报价添加额外保护与日志,修复了 #701。
- 修复了修改头部位置后智能动画无法正常工作的问题。
- 通过将玩家检测移回仅服务端执行,修复了头部追踪问题。
- 修复了
CustomLookAtPlayerGoal,以更好地处理边缘情况并减少抖动。 - 修复了 Doppler NPC 会保留其手部容器物品的问题。
- 改进了 PoseManager 的日志信息。
- 将徽标更新为新设计。
6.10.0
- 通过为第三方实体创建添加 try-catch,修复了 #698。
- 通过在切换到
DEFAULT原版姿势时清除模型部件旋转/位置,修复了 #695。 - 通过仅在 NPC 空闲时应用锁定旋转与姿势动画,修复了 #695。
- 通过将根旋转支点修正为使用实际碰撞箱高度而非 0.5f,修复了 #695。
- 修复了多个目标注册问题,包括反向的
isTargetedPlayer检查、离开处理器中的错误 UUID、加入/离开时缺失的面向玩家刷新,以及对离线目标的重试。 - 修复了在目标取消注册后仍保留目标引用的问题。
- 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现由用户控制。
- 在高级和自定义姿势配置界面中添加了锁定旋转复选框。
- 在默认姿势界面中,为
ConfigurationMenuHandler添加了按模型筛选姿势键的功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper以及 Fabric 和 Forge 的游戏测试。 - 将最大头部偏航范围从 60° 提高到 65°。
6.9.0
- 通过添加缓存和保护措施以防止 NPC 实体数据更新被重复触发,修复了 #692、#666。
- 通过为所有受支持的 NPC 类型添加基础自定义姿势,修复了 #651、#617。
- 通过添加额外的逃跑目标以逃离玩家、村民、怪物等,修复了 #597。
- 修复了姿势加载逻辑,改为直接从模组资源读取,而不是将文件复制到磁盘。
- 通过先检查现有注册表条目,修复了实体加入时重复调用
saveNPC的问题。 - 添加了
despawn和spawn命令,可通过 UUID 移除并重新生成 NPC,并支持可配置的移除原因。 - 添加了
ModelPoseAPI和EasyNPCEntityHandler公共 API 类,用于从外部模组以编程方式控制 NPC 姿势和管理 NPC。 - 为所有受支持的 NPC 类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了锁定旋转复选框。
- 添加了
MoveToPositionGoal,可让 NPC 在执行回调操作前先移动到指定位置。 - 添加了
EasyNPCLookControl和EasyNPCBodyRotationControl,以遵循已锁定的根旋转。 - 向 NPC 实体数据索引中添加了同步的所有者变更和维度变更。
- 将 EasyNPCItemAttachmentLayer 添加到了多个实体渲染器中。
- 添加了专用的
Flee Objective配置标签页,包含逃离苦力怕、怪物、生物、玩家、村民和太阳的目标。 - 在跟随目标标签页中添加了
FOLLOW_ITEM目标,使 NPC 可按资源位置跟随物品实体(例如minecraft:apple)。 - 添加了
LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 观察实体和观察所有者目标。 - 为
SynchedDataIndex添加了persistent标志,使临时索引(如弩蓄力、模型动画)不再触发脏保存标记。 - 为 API 使用方在
SlimeBase中添加了可配置的customParticlesEnabled标志。 - 添加了
SoundType.PET,并将CAT_PURR映射到猫 NPC,以丰富驯服环境音种类。 - 将定期 NPC 保存操作的日志详细程度从 INFO 降低为 DEBUG。
6.8.3
- 通过升级网络协议版本来强制处理版本不匹配问题,修复了 #680。
- 通过重置名称标签的位置、旋转和大小,修复了 #679。
- 通过为根旋转添加多状态滑块,修复了 #665。
- 通过添加可禁用鼠标光标跟随的选项,修复了 #664,以便更轻松地摆姿势。
- 通过改进对 X 和 Z 根旋转的支持,修复了 #663。
- 通过添加快捷旋转功能,修复了 #661:使用 NPC 魔杖并对 NPC 潜行时,可将根部旋转为朝向玩家。
- 通过在交互处理器中添加对移动工具的检查,修复了移动工具错误触发交互的问题。
- 通过在交互处理器中添加对预设物品的检查,修复了预设物品错误触发交互的问题。
- 通过调整碰撞箱和眼高计算,修复了史莱姆和恶魂的碰撞箱与名称标签位置问题。
- 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置问题。
6.8.2
- 通过为
SafeMerchantData扩展 notifyTrade 以避免崩溃,修复了 #677。 - 添加了进度数据支持,可根据玩家交互和行为让 NPC 升级。
- 添加了全局 NPC 跟踪系统,以便更好地管理和调试世界中的 NPC。
- 为
OriginalModelConfig.withVariantTexture()添加了选项,以允许在原始模型上使用变种纹理。
6.8.1
- 通过使用现有的预设辅助方法而不是自定义方法,修复了 #676。
6.8.0(添加 API 支持)
- 通过为无效网络数据包添加警告消息和额外检查,修复了 #667。
- 修复了马生成蛋模型。
- 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
- 添加了 NPC 基础类,以提供更好的 API 支持。
- 添加了 NPC 原始类,以提供高级 API 支持。
- 添加了史莱姆和恶魂 NPC 类型。
- 添加了自定义模型 API,以便更轻松地与其他模组和自定义模型集成。
- 重构了内部数据处理和注册逻辑,以提高可维护性并为未来改进做准备。
6.7.1
- 通过为原版 bug 添加额外的客户端检查,修复了 #657 和 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿部动画,修复了 #650。
- 通过修复 canBeHitByProjectiles 的翻译,修复了 #648。
- 通过添加
allowBypassInvulnerability配置选项,以允许/禁止绕过 NPC 无敌状态,修复了 #645。 - 修复了删除按钮在宽度较小时仍显示标签的问题。
- 修复了上下按钮在某些情况下位置不正确的问题。
- 修复了对话和配置 UI 会显示名称标签的问题。
- 修复了距离动作中多个动作无法被正确触发的问题。
- 修复了 NPC 预设相关问题。
- 修复了猫 NPC 和狼 NPC 的所有者数据不同步的问题。
- 添加了预设浏览器,以便更轻松地选择常用 NPC 预设。
- 添加了预设
.snbt(文本)导出和导入功能,以便分享 NPC 预设。 - 重构了现有 NPC 预设以使用新的
.snbt格式。 - 重构了刷怪器系统以使用新的预设格式,从而提高可维护性并为未来改进做准备。
6.6.2
- 通过重做缩放系统,修复了 #643。
- 修复了重启/重载后缩放未正确更新碰撞箱和名称标签位置的问题。
- 添加了 MID 和 MOUSE_OVER 名称标签可见模式,以更细致地控制 NPC 名称显示。
- 添加了基于队伍的名称标签可见性支持,并遵循原版 Team。
6.6.1
- 通过重构显示属性的内部数据处理,修复了 #638。
6.6.0
- 通过使用专用线程池实现异步纹理加载,修复了 #634。
- 修复了纹理加载阻塞渲染线程导致游戏卡死的问题。
- 通过使用原子操作,修复了纹理重载保护中的竞争条件问题。
- 修复了远程纹理下载期间 HTTP 连接中的资源泄漏问题。
- 修复了 URL 验证刷屏问题,此前会允许同一纹理进行多个同时下载。
- 修复了远程图像验证中的异常处理,防止无效 URL 导致崩溃。
- 修复了 NPC 加载期间出现的
defineId called for:警告信息。 - 重构了纹理加载架构,加入多层防护和速率限制。
- 重构了实体数据注册逻辑,以提高可维护性。
- 将数据类转换为现代 Java record,以提升不可变性和线程安全性。
- 添加了基于 ConcurrentHashMap 的线程安全会话服务器防刷保护。
- 添加了全面的错误恢复机制,在失败时自动重置冷却。
- 通过 2 线程池和 500ms 速率限制改进了纹理加载。
- 通过针对 IIOException 和 FileNotFoundException 的特定 catch 块改进了异常处理。
6.5.2
- 修复了村民职业和工作皮肤问题。
- 通过为 gradle 依赖添加缓存,改进了 GitHub workflows。
- 改进了 Gradle 构建时间和清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型和事件,修复了 #632。
- 通过改进纹理处理性能、缓存和内存占用,修复了 #629。
- 修复了 kill 命令对 NPC 无效的问题。
- 修复了纹理重载保护在缓存驱逐后阻止缓存重新加载的问题。
- 修复了远程图像验证器中的 WebP 验证 bug(缺少 return 语句)。
- 重构了纹理处理逻辑,以提高可维护性并为未来改进做准备。
- 添加了基于时间的重载保护(60 秒),以替代永久阻止机制。
- 添加了额外的纹理处理单元测试。
- 改进了 gradle 构建任务。
6.5.0
- ⚠️ 移除了 jar-in-jar 打包方式,以获得更好的模组兼容性和 API 能力。
- 修复了 #627:改进裁剪区域实现,以提升与其他模组的兼容性。
- 修复了 #625:使用旋转或移动后的模型部件时,生动动画出现的问题。
- 修复了使用缩放模型部件时默认动画被取消的问题。
- 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。
6.4.1
- 修复了 #626:不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供的详细调查和修复建议。
6.4.0
- 通过改进对话数据验证和错误处理,修复了 #626。
- 通过重构渲染数据和渲染处理,修复了 #623。
- 通过确保自定义数据被正确保存和加载,修复了 #622。
- 修复了打开对话动作类型,使其能够打开其他 NPC 的对话。
- 通过为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法,修复了哈希相关问题。
- 为 #622 添加了自定义数据测试物品,以便更轻松地测试自定义数据。
- 改进了 record,并修复了数据缺失可能导致的问题。
6.3.0
- 重构了配置 UI 专用组件,并将其从核心模组中移除。
- 通过在发送到客户端前过滤对话数据,修复了对话数据问题。
- 修复了对话编辑器布局问题,并提升了易用性。
- 修复了部分对话数据字段缺少默认值的问题。
- 添加了对话优先级支持,以控制对话执行顺序。
- 为对话和计分板动作添加了条件支持。
- 为对话添加了频率支持,以限制对话显示的频率。
- 添加了新的 NPC 预设,以支持计分板和条件功能。
- 通过移除冗余字段,改进了对话按钮数据格式。
6.2.0
- 修复了对话中的字符串注入问题。
- 修复了动作类型缺少翻译的问题。
- 添加了计分板动作类型,可增加、减少、设置计分板数值。
- 添加了
@score(...)NPC 宏,用于在对话中显示计分板数值。 - 添加了额外的单元测试。
- 改进了旋转按钮,增加了指示器并提升了易用性。
6.1.2
- 修复了容器和菜单同步问题,原因是缺少关闭容器数据包。
- 修复了关闭按钮在某些情况下无效的问题。
- 修复了界面切换时鼠标光标跳动的问题。
- 修复了翻译文件,并移除了重复和已弃用条目。
- 将 Easy NPC 魔杖移动到现有核心物品标签页,而不是创建新标签页。
- 为不同模型部件添加了猫姿势支持(尾巴除外)。
- 通过在不需要时禁用发光效果,提升了 EasyNPCWand 的性能。
- 通过排除 display、makers、throwns 和 spawners 等非生物实体,改进了自定义实体检测。
- 改进了猫变种处理。
6.1.1
- 通过重新验证实体类型,修复了 #612。
- 通过强制同步特定模型的帽子层和头部层,修复了 #610。
- 修复了兽人纹理。
- 通过将相关逻辑移到仅客户端执行,改进了自定义模型支持和性能。
- 改进了玩家到 UUID 映射的缓存,用于玩家皮肤。
- 将更改模型的命令和逻辑限制为仅适用于 Doppler NPC。
6.1.0 ✨
这是一次重大版本更新。更新前请备份你的世界和 NPC 数据。 此版本包含许多改进、优化和内部变更, 与早期版本并不完全兼容。
⚠️ 破坏性变更
- 早于 6.1.0 的版本中的现有 NPC 及其配置数据,可能无法正确加载,或需要手动调整。
- 为支持新的使用场景,内部数据格式和部分行为已被重构。
🧩 新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
- Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
- Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该界面的客户端上。
🎯 为什么进行此更改?
- 允许服务器和整合包仅在服务端安装 Core 模组,以获得更精简的配置。
- 在不需要到处使用 UI 时,减少内存占用和加载时间。
- 通过分离 UI 和核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.11.1
on 2026 Apr 07Easy NPC:核心版(1.21.1)更新日志
注意
此更新日志包含的是摘要变更内容。 完整更新日志请前往 GitHub 历史记录 查看。
注意:更新到新版本前,请务必先备份你的世界 / NPC! 更多信息请查看升级指南。
6.11.1
- 通过改进对可恢复交易数据的向后兼容解析,修复了 #710。
6.11.0
- 修复了 #703:新自定义层系统与手部渲染的渲染问题。
- 通过为无效交易报价添加额外保护与日志记录,修复了 #701。
- 修复了在头部位置被修改时,智能动画无法正常工作的问题。
- 将玩家检测移回仅服务器端处理,修复了头部追踪问题。
- 修复了 CustomLookAtPlayerGoal,使其能更好地处理边界情况并减少抖动。
- 修复了 Doppler NPC 会保留其手部容器物品的问题。
- 改进了 PoseManager 的日志消息。
- 使用新设计更新了 logo。
6.10.0
- 通过为第三方实体创建添加 try/catch,修复了 #698。
- 在切换到
DEFAULT原版姿势时清除模型部件的旋转/位置,修复了 #695。 - 仅在 NPC 空闲时应用锁定旋转与姿势动画,修复了 #695。
- 使用实际碰撞箱高度而非 0.5f 来修正根部旋转支点,修复了 #695。
- 修复了多个目标注册问题,包括反转的
isTargetedPlayer检查、离开处理器中的错误 UUID、加入/离开时缺失的玩家目标刷新,以及对离线目标的重试。 - 修复了目标取消注册后仍保留目标引用的问题。
- 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现由用户控制。
- 在高级和自定义姿势配置界面中添加了锁定旋转复选框。
- 在默认姿势界面中,为
ConfigurationMenuHandler添加了按模型过滤姿势键的功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper以及 Fabric 和 Forge 的游戏测试。 - 将头部最大偏航范围从 60° 提高到 65°。
6.9.0
- 通过添加缓存和保护措施以防止 NPC 实体数据更新被重复触发,修复了 #692、#666。
- 通过为所有支持的 NPC 类型添加基础自定义姿势,修复了 #651、#617。
- 通过添加更多逃跑目标来实现 NPC 逃离玩家、村民、怪物等,修复了 #597。
- 修复了姿势加载逻辑,使其直接从模组资源读取,而不是将文件复制到磁盘。
- 通过先检查现有注册表项,修复了实体加入时重复调用
saveNPC的问题。 - 添加了
despawn和spawn命令,可根据 UUID 移除并重新生成 NPC,并支持可配置的移除原因。 - 添加了
ModelPoseAPI和EasyNPCEntityHandler公共 API 类,供外部模组以编程方式控制 NPC 姿势和管理 NPC。 - 为所有支持的 NPC 类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了锁定旋转复选框。
- 添加了
MoveToPositionGoal,使 NPC 在执行回调动作前先移动到指定位置。 - 添加了
EasyNPCLookControl和EasyNPCBodyRotationControl,以遵守已锁定的根部旋转。 - 在 NPC 实体数据索引中添加了同步的所有者变更和维度变更。
- 将 EasyNPCItemAttachmentLayer 添加到多个实体渲染器中。
- 添加了独立的
Flee Objective配置标签页,其中包含逃离苦力怕、怪物、生物、玩家、村民和阳光的目标。 - 在跟随目标标签页中添加了
FOLLOW_ITEM目标,使 NPC 可以按资源位置跟随物品实体(例如minecraft:apple)。 - 添加了
LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 注视实体和注视所有者目标。 - 为
SynchedDataIndex添加了persistent标志,使临时索引(例如弩充能、模型动画)不再触发脏保存标记。 - 为 API 使用者在
SlimeBase中添加了可配置的customParticlesEnabled标志。 - 添加了
SoundType.PET,并将CAT_PURR映射到猫 NPC,以增加驯服环境音的多样性。 - 将周期性 NPC 保存操作的日志详细级别从 INFO 降低为 DEBUG。
6.8.3
- 通过升级网络协议版本强制处理版本不匹配,修复了 #680。
- 通过重置名称标签的位置、旋转和大小,修复了 #679。
- 通过为根部旋转添加多状态滑块,修复了 #665。
- 通过添加禁用鼠标光标跟随的选项,修复了 #664,从而更方便摆姿势。
- 通过改进对 X 和 Z 根部旋转的支持,修复了 #663。
- 通过添加快速旋转功能,修复了 #661:使用 NPC 魔杖并潜行点击 NPC 时,可旋转根部使其面向玩家。
- 通过在交互处理器中添加对移动工具的检查,修复了移动工具错误触发交互的问题。
- 通过在交互处理器中添加对预设物品的检查,修复了预设物品错误触发交互的问题。
- 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱与名称标签位置问题。
- 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置问题。
6.8.2
- 通过为
SafeMerchantData扩展 notifyTrade 以避免崩溃,修复了 #677。 - 添加了进度数据支持,可根据玩家交互和行为为 NPC 升级。
- 添加了全局 NPC 跟踪系统,以便更好地管理和调试世界中的 NPC。
- 添加了
OriginalModelConfig.withVariantTexture()选项,允许原始模型使用变种纹理。
6.8.1
- 通过使用现有的预设辅助方法而不是自定义方法,修复了 #676。
6.8.0(添加 API 支持)
- 通过为无效网络数据包添加警告消息和额外检查,修复了 #667。
- 修复了马刷怪蛋模型。
- 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
- 添加了 NPC 基础类,以提供更好的 API 支持。
- 添加了 NPC 原始类,以提供高级 API 支持。
- 添加了史莱姆和恶魂 NPC 类型。
- 添加了自定义模型 API,以便更轻松地与其他模组和自定义模型集成。
- 重构了内部数据处理和注册逻辑,以提高可维护性并为未来改进做准备。
6.7.1
- 通过为原版 bug 添加额外的客户端检查,修复了 #657 和 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿部动画,修复了 #650。
- 通过修正 canBeHitByProjectiles 翻译,修复了 #648。
- 通过添加
allowBypassInvulnerability配置选项以允许/禁止绕过 NPC 无敌状态,修复了 #645。 - 修复了删除按钮在宽度较小时仍显示标签的问题。
- 修复了上下按钮在某些情况下位置不正确的问题。
- 修复了对话和配置 UI 中仍显示名称标签的问题。
- 修复了距离动作问题:多个动作未被正确触发。
- 修复了 NPC 预设相关问题。
- 修复了猫 NPC 和狼 NPC 的所有者数据未正确同步的问题。
- 添加了预设浏览器,便于选择常用 NPC 预设。
- 添加了预设 .snbt(文本)导出和导入功能,以便分享 NPC 预设。
- 重构了现有 NPC 预设,改用新的 .snbt 格式。
- 重构了刷怪器系统,改用新的预设格式,以提高可维护性并为未来改进做准备。
6.6.2
- 通过重做缩放系统,修复了 #643。
- 修复了重启 / 重载后缩放未正确更新碰撞箱和名称标签位置的问题。
- 添加了 MID 和 MOUSE_OVER 名称标签可见模式,以更细致地控制 NPC 名称显示。
- 添加了基于队伍的名称标签可见性支持,并遵循原版 Team 设定。
6.6.1
- 通过重构显示属性的内部数据处理,修复了 #638。
6.6.0
- 通过实现使用专用线程池的异步纹理加载,修复了 #634。
- 修复了纹理加载阻塞渲染线程而导致游戏卡死的问题。
- 通过使用原子操作,修复了纹理重载保护中的竞争条件。
- 修复了远程纹理下载期间 HTTP 连接的资源泄漏问题。
- 修复了 URL 验证刷屏问题,该问题会允许同一纹理进行多个同时下载。
- 修复了远程图像验证的异常处理问题,避免因无效 URL 导致崩溃。
- 修复了 NPC 加载期间出现的
defineId called for:警告消息。 - 重构了纹理加载架构,加入多层防护和速率限制。
- 重构了实体数据注册逻辑,以提高可维护性。
- 将数据类转换为现代 Java record,以获得更好的不可变性和线程安全性。
- 使用 ConcurrentHashMap 添加了线程安全的会话服务器刷屏防护。
- 添加了全面的错误恢复机制,在失败时自动重置冷却时间。
- 通过 2 线程池和 500ms 速率限制改进了纹理加载。
- 通过针对 IIOException 和 FileNotFoundException 的专门 catch 块改进了异常处理。
6.5.2
- 修复了村民职业和工作皮肤问题。
- 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
- 改进了 Gradle 构建时间和清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型和事件,修复了 #632。
- 通过改进纹理处理性能、缓存和内存占用,修复了 #629。
- 修复了 kill 命令无法对 NPC 生效的问题。
- 修复了纹理重载保护在缓存清除后阻止缓存重新加载的问题。
- 修复了远程图像验证器中的 WebP 验证 bug(缺少 return 语句)。
- 重构了纹理处理逻辑,以提高可维护性并为未来改进做准备。
- 添加了基于时间的重载保护(60 秒),以替代永久阻止机制。
- 为纹理处理添加了额外的单元测试。
- 改进了 gradle 构建任务。
6.5.0
- ⚠️ 移除了 jar-in-jar 捆绑方式,以获得更好的模组兼容性和 api 能力。
- 改进了 #627 的裁剪实现,以获得与其他模组更好的兼容性。
- 修复了 #625:在使用旋转或移动后的模型部件时,生动动画会出现问题。
- 修复了使用缩放模型部件时默认动画会被取消的问题。
- 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。
6.4.1
- 修复了 #626:针对不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供详细调查和修复建议。
6.4.0
- 通过改进对话数据验证和错误处理,修复了 #626。
- 通过重构渲染数据和渲染处理,修复了 #623。
- 通过确保自定义数据被正确保存和加载,修复了 #622。
- 修复了打开对话动作类型,使其能够打开其他 NPC 的对话。
- 通过为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法,修复了哈希相关问题。
- 为 #622 添加了自定义数据测试物品,以便更容易测试自定义数据。
- 改进了 records 并修复了潜在的缺失数据问题。
6.3.0
- 重构了配置 UI 专用组件,并将其从核心模组中移除。
- 通过在发送到客户端前过滤对话数据,修复了对话数据问题。
- 修复了对话编辑器布局问题并改进了易用性。
- 修复了某些对话数据字段缺失默认值的问题。
- 添加了对话优先级支持,以控制对话执行顺序。
- 为对话和计分板动作添加了条件支持。
- 为对话添加了频率支持,以限制对话显示频率。
- 添加了新的 NPC 预设,用于支持计分板和条件。
- 通过移除冗余字段,改进了对话按钮数据格式。
6.2.0
- 修复了对话中的字符串注入问题。
- 修复了动作类型缺失翻译的问题。
- 添加了计分板动作类型,可增加、减少、设置计分板数值。
- 添加了
@score(...)NPC 宏,用于在对话中显示计分板数值。 - 添加了额外的单元测试。
- 通过加入指示器并提升易用性,改进了旋转按钮。
6.1.2
- 修复了因缺少关闭容器数据包导致的容器和菜单同步问题。
- 修复了关闭按钮在某些情况下无法使用的问题。
- 修复了界面切换时鼠标光标跳动的问题。
- 修复了翻译文件,并移除了重复和已弃用的条目。
- 将 Easy NPC 魔杖移至现有核心物品标签页,而不是创建新标签页。
- 为猫的不同模型部件添加了姿势支持(尾巴除外)。
- 通过在不需要时禁用发光效果,提升了 EasyNPCWand 的性能。
- 通过排除 display、makers、throwns 和 spawners 等非生物实体,改进了自定义实体检测。
- 改进了猫变种处理。
6.1.1
- 通过重新验证实体类型,修复了 #612。
- 通过强制同步特定模型的帽子层和头部层,修复了 #610。
- 修复了兽人纹理。
- 通过将相关逻辑移至仅客户端,改进了自定义模型支持和性能。
- 改进了玩家到 UUID 映射的缓存,用于玩家皮肤。
- 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。
6.1.0 ✨
这是一次重大更新。更新前请先备份你的世界和 NPC 数据。 此版本包含许多改进、优化和内部变更, 与早期版本并不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本中的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
- 为支持新的使用场景,内部数据格式和部分行为已被重构。
🧩 新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 同时包含核心版和配置 UI 的整合包,提供开箱即用的体验。
- Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。面向服务器、整合包和开发者。
- Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。
🎯 为什么要这样改?
- 允许服务器和整合包仅在服务端安装 Core 模组,从而获得更精简的配置。
- 在不需要到处使用 UI 时,减少内存占用和加载时间。
- 通过分离 UI 和核心逻辑,加快开发和测试速度。
Easy NPC (Bundle) 6.11.1
on 2026 Apr 07Easy NPC: Core 更新日志 (1.21.1)
注意
此更新日志包含的是变更摘要。 完整更新日志请前往 GitHub 历史记录 查看。
注意:更新到新版本前,请务必备份你的世界 / NPC! 更多信息请查看升级指南。
6.11.1
- 通过改进对可恢复交易数据的向后兼容解析,修复了 #710。
6.11.0
- 修复了 #703:新的自定义图层系统与手部渲染存在的渲染问题。
- 通过为无效交易报价添加额外保护和日志记录,修复了 #701。
- 修复了在头部位置被修改时,智能动画无法正常工作的问题。
- 通过将玩家检测移回仅服务器端,修复了头部追踪问题。
- 修复了
CustomLookAtPlayerGoal,以更好地处理边界情况并减少抖动。 - 修复了 Doppler NPC 会保留其手部物品栏的问题。
- 改进了 PoseManager 的日志信息。
- 使用新设计更新了 logo。
6.10.0
- 通过为第三方实体创建添加 try-catch,修复了 #698。
- 通过在切换到
DEFAULT原版姿势时清除模型部件旋转/位置,修复了 #695。 - 通过仅在 NPC 空闲时应用旋转锁定和姿势动画,修复了 #695。
- 通过将根旋转枢轴改为使用实际碰撞箱高度而非 0.5f,修复了 #695。
- 修复了多个目标注册问题,包括反转的
isTargetedPlayer检查、离开处理器中的错误 UUID、加入/离开时缺失的玩家目标刷新,以及对离线目标的重试。 - 修复了在目标取消注册后仍保留目标引用的问题。
- 移除了加载姿势时对 ROOT 旋转的自动锁定;根锁定现在由用户控制。
- 在高级和自定义姿势配置界面中添加了旋转锁定复选框。
- 在默认姿势界面中为
ConfigurationMenuHandler添加了特定模型的姿势键过滤。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper以及 Fabric 和 Forge 的游戏测试。 - 将头部最大偏航范围从 60° 提高到 65°。
6.9.0
- 通过添加缓存和保护措施,防止 NPC 实体数据更新被冗余重复触发,修复了 #692、#666。
- 通过为所有支持的 NPC 类型添加基础自定义姿势,修复了 #651、#617。
- 通过添加更多逃跑目标,用于逃离玩家、村民、怪物等,修复了 #597。
- 修复了姿势加载方式,改为直接从模组资源读取,而不是将文件复制到磁盘。
- 通过先检查现有注册表条目,修复了实体加入时重复调用
saveNPC的问题。 - 添加了
despawn和spawn命令,可通过 UUID 移除并重新生成 NPC,并支持配置移除原因。 - 添加了
ModelPoseAPI和EasyNPCEntityHandler公共 API 类,用于控制 NPC 姿势以及从外部模组以编程方式管理 NPC。 - 为所有支持的 NPC 类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了旋转锁定复选框。
- 添加了
MoveToPositionGoal,使 NPC 可先移动到指定位置,再执行回调操作。 - 添加了
EasyNPCLookControl和EasyNPCBodyRotationControl,以遵守锁定的根旋转。 - 向 NPC 实体数据索引中添加了同步的所有者变更和维度变更。
- 向多个实体渲染器中添加了 EasyNPCItemAttachmentLayer。
- 添加了专用的
Flee Objective配置标签页,其中包含逃离苦力怕、怪物、生物、玩家、村民和阳光的目标。 - 在跟随目标标签页中添加了
FOLLOW_ITEM目标,使 NPC 可按资源位置跟随物品实体(例如minecraft:apple)。 - 添加了
LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 注视实体和注视主人目标。 - 为
SynchedDataIndex添加了persistent标志,使临时索引(例如弩充能、模型动画)不再触发脏保存标记。 - 为 API 使用者向
SlimeBase添加了可配置的customParticlesEnabled标志。 - 添加了
SoundType.PET,并将CAT_PURR映射到猫 NPC,以增加被驯服环境音的多样性。 - 将周期性 NPC 保存操作的日志详细级别从 INFO 降低为 DEBUG。
6.8.3
- 通过升级网络协议版本以强制处理版本不匹配,修复了 #680。
- 通过重置名称标签的位置、旋转和大小,修复了 #679。
- 通过为根旋转添加多状态滑块,修复了 #665。
- 通过添加禁用鼠标光标跟随的选项,修复了 #664,便于更轻松地调整姿势。
- 通过改进对 X 和 Z 根旋转的支持,修复了 #663。
- 通过添加快速旋转功能,修复了 #661:使用 NPC 魔杖并潜行点击 NPC 时,可旋转根部使其面向玩家。
- 通过在交互处理器中添加对移动工具的检查,修复了移动工具错误触发交互的问题。
- 通过在交互处理器中添加对预设物品的检查,修复了预设物品错误触发交互的问题。
- 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱及名称标签位置问题。
- 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置。
6.8.2
- 通过为
SafeMerchantData扩展 notifyTrade 以避免崩溃,修复了 #677。 - 添加了进度数据支持,可根据玩家互动和行为让 NPC 升级。
- 添加了全局 NPC 跟踪系统,以便更好地管理和调试世界中的 NPC。
- 添加了
OriginalModelConfig.withVariantTexture()选项,以允许原始模型使用变体纹理。
6.8.1
- 通过使用现有的预设辅助方法而不是自定义方法,修复了 #676。
6.8.0(添加 API 支持)
- 通过添加警告消息和对无效网络数据包的额外检查,修复了 #667。
- 修复了马刷怪蛋模型。
- 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
- 添加了 NPC 基础类,以提供更好的 API 支持。
- 添加了 NPC 原始类,以提供高级 API 支持。
- 添加了纤细版和恶魂 NPC 类型。
- 添加了自定义模型 API,以便更轻松地与其他模组和自定义模型集成。
- 重构了内部数据处理和注册,以提升可维护性并为未来改进做准备。
6.7.1
- 通过为原版漏洞添加额外的客户端检查,修复了 #657 和 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿部动画,修复了 #650。
- 通过修正 canBeHitByProjectiles 的翻译,修复了 #648。
- 通过添加
allowBypassInvulnerability配置选项,允许/禁止绕过 NPC 的无敌状态,修复了 #645。 - 修复了删除按钮即使宽度很小也会显示标签的问题。
- 修复了在某些情况下上下按钮位置不正确的问题。
- 修复了对话和配置 UI 中会显示名称标签的问题。
- 修复了距离动作中多个动作无法被正确触发的问题。
- 修复了 NPC 预设相关问题。
- 修复了猫 NPC 和狼 NPC 的主人数据无法正确同步的问题。
- 添加了预设浏览器,以更方便地选择常用 NPC 预设。
- 添加了预设 .snbt(文本)导出和导入功能,用于分享 NPC 预设。
- 重构了现有 NPC 预设,使其使用新的 .snbt 格式。
- 重构了刷怪器系统,使其使用新的预设格式,以提升可维护性并为未来改进做准备。
6.6.2
- 通过重做缩放系统,修复了 #643。
- 修复了重启 / 重载后缩放未能正确更新碰撞箱和名称标签位置的问题。
- 添加了 MID 和 MOUSE_OVER 名称标签可见性模式,以更精细地控制 NPC 名称显示。
- 添加了基于队伍的名称标签可见性支持,并遵循原版 Team 规则。
6.6.1
- 通过重构显示属性的内部数据处理,修复了 #638。
6.6.0
- 通过实现带专用线程池的异步纹理加载,修复了 #634。
- 修复了纹理加载阻塞渲染线程导致游戏卡死的问题。
- 通过使用原子操作,修复了纹理重载保护中的竞态条件。
- 修复了远程纹理下载过程中 HTTP 连接的资源泄漏问题。
- 修复了 URL 验证刷屏问题,该问题会允许同一纹理被同时重复下载。
- 修复了远程图像验证中的异常处理问题,防止无效 URL 导致崩溃。
- 修复了 NPC 加载期间的
defineId called for:警告信息。 - 重构了纹理加载架构,加入多层防护和速率限制。
- 重构了实体数据注册逻辑,以提高可维护性。
- 将数据类转换为现代 Java record,以提高不可变性和线程安全性。
- 添加了基于 ConcurrentHashMap 的线程安全会话服务器防刷保护。
- 添加了全面的错误恢复机制,可在失败时自动重置冷却。
- 通过使用 2 线程池和 500ms 速率限制,改进了纹理加载。
- 通过针对 IIOException 和 FileNotFoundException 使用特定 catch 块,改进了异常处理。
6.5.2
- 修复了村民职业和工作皮肤问题。
- 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
- 改进了 Gradle 构建时间和清理任务。
6.5.1
- 通过实现
ON_KILL动作类型和事件,修复了 #632。 - 通过改进纹理处理性能、缓存和内存使用,修复了 #629。
- 修复了 kill 命令对 NPC 无法生效的问题。
- 修复了纹理重载保护在缓存逐出后阻止缓存重新加载的问题。
- 修复了远程图像验证器中的 WebP 验证漏洞(缺少 return 语句)。
- 重构了纹理处理逻辑,以提高可维护性并为未来改进做准备。
- 添加了基于时间的重载保护(60 秒),以替代永久阻塞机制。
- 为纹理处理添加了额外单元测试。
- 改进了 gradle 构建任务。
6.5.0
- ⚠️ 为了更好的模组兼容性和 API 能力,移除了 jar-in-jar 打包方案。
- 修复了 #627:改进了 scissor 实现,以提升与其他模组的兼容性。
- 修复了 #625:使用旋转或移动后的模型部件时,活跃动画会出现问题。
- 修复了使用缩放模型部件时默认动画被取消的问题。
- 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。
6.4.1
- 修复了 #626:改进了不同 NPC UUID 之间的界面切换逻辑,感谢
Spawnblade提供了详细调查和修复建议。
6.4.0
- 通过改进对话数据验证和错误处理,修复了 #626。
- 通过重构渲染数据和渲染处理,修复了 #623。
- 通过确保自定义数据被正确保存和加载,修复了 #622。
- 修复了打开对话动作类型,使其可以打开来自其他 NPC 的对话。
- 通过为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法,修复了哈希问题。
- 为 #622 添加了自定义数据测试物品,便于更轻松地测试自定义数据。
- 改进了 records,并修复了缺失数据可能导致的问题。
6.3.0
- 重构了配置 UI 专用组件,并将其从核心模组中移除。
- 通过在将对话数据发送到客户端前进行过滤,修复了对话数据问题。
- 修复了对话编辑器布局问题,并提升了易用性。
- 修复了部分对话数据字段缺少默认值的问题。
- 添加了对话优先级支持,用于控制对话执行顺序。
- 为对话和记分板动作添加了条件支持。
- 为对话添加了频率支持,用于限制对话的显示频率。
- 添加了新的 NPC 预设,以支持记分板和条件功能。
- 通过移除冗余字段,改进了对话按钮数据格式。
6.2.0
- 修复了对话中的字符串注入问题。
- 修复了动作类型缺少翻译的问题。
- 添加了记分板动作类型,可增加、减少、设置记分板数值。
- 添加了
@score(...)NPC 宏,用于在对话中显示记分板数值。 - 添加了额外单元测试。
- 改进了微调按钮,增加指示器并提升易用性。
6.1.2
- 修复了容器和菜单同步时缺少关闭容器数据包的问题。
- 修复了关闭按钮在某些情况下无法使用的问题。
- 修复了界面切换时鼠标光标跳动的问题。
- 修复了翻译文件,并移除了重复和已弃用条目。
- 将 Easy NPC 魔杖移动到现有核心物品标签页,而不是创建新标签页。
- 为不同模型部件添加了猫姿势支持(尾巴除外)。
- 通过在不需要时禁用发光效果,改进了 EasyNPCWand 的性能。
- 通过排除 display、maker、thrown 和 spawner 等非生物实体,改进了自定义实体检测。
- 改进了猫变体处理。
6.1.1
- 通过重新验证实体类型,修复了 #612。
- 通过强制同步特定模型的帽子层和头部层,修复了 #610。
- 修复了兽人纹理。
- 通过将相关逻辑移动到仅客户端,改进了自定义模型支持和性能。
- 改进了玩家到 UUID 映射的缓存,用于玩家皮肤。
- 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。
6.1.0 ✨
这是一次重大更新。更新前请先备份你的世界和 NPC 数据。 此版本包含大量改进、优化和内部变更, 与早期版本并不完全兼容。
⚠️ 破坏性变更
- 来自 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
- 内部数据格式和部分行为已经重构,以支持新的使用场景。
🧩 新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
- Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
- Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。
🎯 为什么要这样改?
- 允许服务器和整合包仅在服务端安装 Core 模组,以获得更精简的配置。
- 在无需到处使用 UI 时,可减少内存占用和加载时间。
- 通过分离 UI 和核心逻辑,让开发和测试更加高效。
Easy NPC (Bundle) 6.11.0
on 2026 Mar 18Easy NPC 更新日志 (1.20.1)
注意
此更新日志包含的是变更摘要。 如需查看完整更新日志,请前往 GitHub 历史记录。
注意:更新到新版本前,请务必备份你的世界 / NPC! 更多信息请查看升级指南。
6.11.0
- 修复了 #703:新的自定义图层系统与手部渲染导致的渲染问题。
- 修复了 #701:为无效交易提供添加了额外的保护措施和日志记录。
- 修复了智能动画在头部位置被修改后无法正常工作的问题。
- 修复了头部追踪:将玩家检测移回仅服务端执行。
- 修复了
CustomLookAtPlayerGoal,以更好地处理边缘情况并减少抖动。 - 修复了 Doppler NPC 会保留其手部容器物品的问题。
- 改进了 PoseManager 的日志消息。
- 更新了全新设计的 Logo。
6.10.0
- 修复了 #695:切换到
DEFAULT原版姿势时会清除模型部件的旋转/位置。 - 修复了 #695:仅在 NPC 空闲时应用旋转锁定和姿势动画。
- 修复了 #695:将根部旋转轴点改为使用实际碰撞箱高度,而不是 0.5f。
- 修复了多个目标注册问题,包括反向的
isTargetedPlayer检查、leave-handler 中错误的 UUID、玩家加入/离开时缺失的目标刷新,以及对离线目标的重试。 - 修复了目标被取消注册后仍保留目标引用的问题。
- 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现由用户控制。
- 在高级和自定义姿势配置界面中添加了旋转锁定复选框。
- 在
ConfigurationMenuHandler中为默认姿势界面添加了基于模型的姿势键过滤。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper以及适用于 Fabric 和 Forge 的游戏测试。 - 将头部最大偏航范围从 60° 提高到 65°。
6.9.0
- 修复了 #692、#666:添加缓存与保护措施,防止 NPC 实体数据更新被重复触发。
- 修复了 #651、#617:为所有受支持的 NPC 类型添加了基础自定义姿势。
- 修复了 #597:添加了更多逃跑目标,用于躲避玩家、村民、敌对生物等。
- 修复了姿势加载逻辑:直接从模组资源中读取,而不是将文件复制到磁盘。
- 修复了实体加入时重复调用
saveNPC的问题:现会先检查现有注册表条目。 - 添加了
despawn和spawn命令,可通过 UUID 移除并重新生成 NPC,且支持可配置的移除原因。 - 添加了
ModelPoseAPI和EasyNPCEntityHandler公共 API 类,用于控制 NPC 姿势以及供外部模组以编程方式管理 NPC。 - 为所有受支持的 NPC 类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了旋转锁定复选框。
- 添加了
MoveToPositionGoal,使 NPC 在执行回调动作前先移动到指定位置。 - 添加了
EasyNPCLookControl和EasyNPCBodyRotationControl,以遵循已锁定的根部旋转。 - 将同步后的所有者变更和维度变更添加到 NPC 实体数据索引中。
- 在多个实体渲染器中添加了 EasyNPCItemAttachmentLayer。
- 添加了专用的
Flee Objective配置标签页,包含逃离苦力怕、敌对生物、生物、玩家、村民和阳光的目标。 - 在跟随目标标签页中添加了
FOLLOW_ITEM目标,使 NPC 可以按资源位置跟随物品实体(例如minecraft:apple)。 - 添加了
LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 观察实体和观察所有者的目标。 - 为
SynchedDataIndex添加了persistent标志,使临时索引(如弩蓄力、模型动画)不再触发脏保存标记。 - 为 API 使用者在
SlimeBase中添加了可配置的customParticlesEnabled标志。 - 添加了
SoundType.PET,并将CAT_PURR映射给猫 NPC,以丰富驯服状态下的环境音效果。 - 将周期性 NPC 保存操作的日志详细级别从 INFO 降低为 DEBUG。
6.8.3
- 修复了 #680:通过升级网络协议版本强制处理版本不匹配。
- 修复了 #679:重置命名牌的位置、旋转和大小。
- 修复了 #665:为根部旋转添加多状态滑动。
- 修复了 #664:添加禁用跟随鼠标光标的选项,以便更容易摆姿势。
- 修复了 #663:改进了对根部 X 和 Z 旋转的支持。
- 修复了 #661:添加快捷旋转功能,使用 Npc 魔杖并潜行对着 NPC 可将其根部旋转为朝向玩家。
- 修复了移动工具错误触发交互的问题:在交互处理器中加入了对移动工具的检查。
- 修复了预设物品错误触发交互的问题:在交互处理器中加入了对预设物品的检查。
- 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱及命名牌位置问题。
- 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置。
6.8.2
- 修复了 #677:为
SafeMerchantData扩展notifyTrade以避免崩溃。 - 添加了进度数据支持,可根据玩家交互和动作让 NPC 升级。
- 添加了全局 NPC 追踪系统,以便更好地管理和调试世界中的 NPC。
- 添加了
OriginalModelConfig.withVariantTexture()选项,允许原始模型使用变体纹理。
6.8.1
- 修复了 #676:改用现有的预设辅助方法,而不是自定义方法。
6.8.0(添加 API 支持)
- 修复了 #667:为无效网络数据包添加警告消息和额外检查。
- 修复了马刷怪蛋模型。
- 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
- 添加了 NPC 基础类,以提供更好的 API 支持。
- 添加了 NPC 原始类,以提供高级 API 支持。
- 添加了史莱姆和恶魂 NPC 类型。
- 添加了自定义模型 API,以便更轻松地与其他模组和自定义模型集成。
- 重构了内部数据处理和注册逻辑,以提高可维护性并为未来改进做好准备。
6.7.1
- 修复了 #657 和 #656:为原版漏洞添加了额外的客户端检查。
6.7.0
- 修复了 #650:在 setupAnim 方法中实现了狼腿动画。
- 修复了 #648:修正了 canBeHitByProjectiles 的翻译。
- 修复了 #645:添加了
allowBypassInvulnerability配置选项,用于允许/禁止绕过 NPC 的无敌状态。 - 修复了删除按钮在宽度较小时仍显示标签的问题。
- 修复了上下按钮在某些情况下位置不正确的问题。
- 修复了命名牌会显示在对话和配置 UI 上的问题。
- 修复了距离动作问题:多个动作无法被正确触发。
- 修复了 NPC 预设相关问题。
- 修复了猫 NPC 和狼 NPC 的所有者数据无法正确同步的问题。
- 添加了预设浏览器,方便选择常用的 NPC 预设。
- 添加了预设 .snbt(文本)导出和导入功能,以便分享 NPC 预设。
- 重构了现有 NPC 预设,使其使用新的 .snbt 格式。
- 重构了刷怪笼系统,使其使用新的预设格式,以提高可维护性并为未来改进做好准备。
6.6.2
- 修复了 #643:重做缩放系统。
- 修复了重启/重载后缩放无法正确更新碰撞箱和命名牌位置的问题。
- 添加了 MID 和 MOUSE_OVER 命名牌可见模式,以更细致地控制 NPC 名称显示。
- 添加了基于队伍的命名牌可见性支持,并遵循原版 Team 规则。
6.6.1
- 修复了 #638:重构了显示属性的内部数据处理。
6.6.0
- 修复了 #634:使用专用线程池实现异步材质加载。
- 修复了材质加载阻塞渲染线程导致游戏卡死的问题。
- 修复了材质重载保护中的竞争条件,改用原子操作。
- 修复了远程材质下载期间 HTTP 连接的资源泄漏问题。
- 修复了 URL 验证刷屏问题,此前会允许对同一材质同时进行多个下载。
- 修复了远程图像验证的异常处理,防止无效 URL 导致崩溃。
- 修复了 NPC 加载期间出现的
defineId called for:警告消息。 - 重构了材质加载架构,加入多层防护和速率限制。
- 重构了实体数据注册逻辑,以提高可维护性。
- 将数据类转换为现代 Java records,以提高不可变性和线程安全性。
- 添加了基于 ConcurrentHashMap 的线程安全会话服务器刷屏保护。
- 添加了完整的错误恢复机制,在失败时自动重置冷却。
- 改进了材质加载:使用 2 线程池和 500ms 速率限制。
- 改进了异常处理:为 IIOException 和 FileNotFoundException 使用更具体的 catch 块。
6.5.2
- 修复了村民职业和工作皮肤问题。
- 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
- 改进了 Gradle 构建时间和清理任务。
6.5.1
- 修复了 #632:实现了 ON_KILL 动作类型和事件。
- 修复了 #629:改进了材质处理性能、缓存和内存占用。
- 修复了 kill 命令对 NPC 无效的问题。
- 修复了材质重载保护导致缓存清除后无法重新加载的问题。
- 修复了远程图像验证器中的 WebP 验证漏洞(缺少 return 语句)。
- 重构了材质处理逻辑,以提高可维护性并为未来改进做好准备。
- 添加了基于时间的重载保护(60 秒),以替代永久阻止机制。
- 为材质处理添加了额外的单元测试。
- 改进了 gradle 构建任务。
6.5.0
- ⚠️ 移除了 jar-in-jar 打包方案,以获得更好的模组兼容性和 API 能力。
- 修复了 #627:改进剪刀实现,以更好地兼容其他模组。
- 修复了 #625:使用已旋转或移动的模型部件时,生动动画出现的问题。
- 修复了使用已缩放模型部件时默认动画会被取消的问题。
- 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。
6.4.1
- 修复了 #626:改进了不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供的详细调查和修复建议。
6.4.0
- 修复了 #626:改进了对话数据验证和错误处理。
- 修复了 #623:重构了渲染数据和渲染处理逻辑。
- 修复了 #622:确保自定义数据能够被正确保存和加载。
- 修复了打开对话动作类型,使其可以打开其他 NPC 的对话。
- 修复了哈希相关问题:为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法。
- 为 #622 添加了自定义数据测试物品,以便更轻松地测试自定义数据。
- 改进了 records,并修复了数据缺失时的潜在问题。
6.3.0
- 重构了配置 UI 专用组件,并将其从核心模组中移除。
- 修复了对话数据:发送到客户端前会先过滤对话数据。
- 修复了对话编辑器布局问题并改进了易用性。
- 修复了部分对话数据字段缺少默认值的问题。
- 添加了对话优先级支持,用于控制对话执行顺序。
- 为对话和计分板动作添加了条件支持。
- 为对话添加了频率支持,以限制对话显示的频率。
- 添加了新的 NPC 预设,用于支持计分板和条件功能。
- 通过移除冗余字段,改进了对话按钮数据格式。
6.2.0
- 修复了对话中的字符串注入问题。
- 修复了动作类型缺少翻译的问题。
- 添加了计分板动作类型,可增加、减少、设置计分板数值。
- 添加了
@score(...)NPC 宏,用于在对话中显示计分板数值。 - 添加了额外的单元测试。
- 改进了旋转按钮,加入指示器并提升易用性。
6.1.2
- 修复了容器和菜单同步问题,补上了缺失的关闭容器数据包。
- 修复了关闭按钮在某些情况下无效的问题。
- 修复了界面切换时鼠标光标跳动的问题。
- 修复了翻译文件,并移除了重复和已弃用条目。
- 将 Easy NPC 魔杖移至现有核心物品选项卡,而不是新建一个。
- 为猫的不同模型部件添加了姿势支持(尾巴除外)。
- 通过在不需要时禁用发光效果,提升了 EasyNPCWand 发光效果的性能。
- 通过排除显示实体、标记实体、投掷物和刷怪笼等非生物实体,改进了自定义实体检测。
- 改进了猫变种处理。
6.1.1
- 修复了 #612:重新验证实体类型。
- 修复了 #610:为特定模型强制同步帽子层和头部层。
- 修复了兽人皮纹理。
- 通过将相关逻辑移至仅客户端,改进了自定义模型支持和性能。
- 改进了玩家皮肤的玩家到 UUID 映射缓存。
- 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。
6.1.0 ✨
这是一个重大版本。更新前请备份你的世界和 NPC 数据。 此版本包含大量改进、优化和内部变更, 与早期版本并不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本中的现有 NPC 及其配置数据可能无法正确加载,或者需要手动调整。
- 内部数据格式和部分行为已被重构,以支持新的使用场景。
🧩 全新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
- Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
- Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。
🎯 为什么要这样改?
- 允许服务器和整合包仅在服务端提供 Core 模组,从而获得更精简的配置。
- 在并非所有地方都需要 UI 时,可减少内存占用和加载时间。
- 通过分离 UI 与核心逻辑,让开发和测试更高效。
Easy NPC (Bundle) 6.11.0
on 2026 Mar 18Easy NPC 更新日志 (1.20.1)
注意
此更新日志包含的是变更摘要。 完整更新日志请前往 GitHub History 查看。
注意:更新到新版本前,请务必先备份你的世界 / NPC! 更多信息请查看升级指南。
6.11.0
- 修复了 #703:新的自定义图层系统与手部渲染相关的渲染问题。
- 通过为无效交易报价添加额外的安全保护与日志记录,修复了 #701。
- 修复了修改头部位置后智能动画无法正常工作的问题。
- 将玩家检测移回仅服务器端后,修复了头部跟踪问题。
- 修复了
CustomLookAtPlayerGoal,使其能更好地处理边缘情况并减少抖动。 - 修复了 Doppler NPC 会保留其手部容器内容的问题。
- 改进了 PoseManager 的日志信息。
- 更新了新的徽标设计。
6.10.0
- 修复了 #695:切换到
DEFAULT原版姿势时,会清除模型部件的旋转/位置。 - 修复了 #695:仅在 NPC 空闲时应用旋转锁定和姿势动画。
- 修复了 #695:将根部旋转枢轴改为使用实际碰撞箱高度,而不是 0.5f。
- 修复了多个目标注册问题,包括反向的
isTargetedPlayer检查、离开处理器中的错误 UUID、加入/离开时缺失的玩家目标刷新,以及对离线目标的重试。 - 修复了目标注销后仍保留目标引用的问题。
- 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现在由用户控制。
- 在高级和自定义姿势配置界面中添加了旋转锁定复选框。
- 为默认姿势界面中的
ConfigurationMenuHandler添加了按模型筛选姿势键的功能。 - 为
CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior和ModelAnimationData添加了单元测试。 - 添加了
NPCDataIsolationTestHelper,以及适用于 Fabric 和 Forge 的游戏测试。 - 将头部最大偏航范围从 60° 提升到 65°。
6.9.0
- 通过添加缓存和安全保护,修复了 #692、#666,防止 NPC 实体数据更新被重复触发。
- 通过为所有支持的 NPC 类型添加基础自定义姿势,修复了 #651、#617。
- 通过新增额外的逃跑目标,使 NPC 可以逃离玩家、村民、敌对生物等,从而修复了 #597。
- 修复了姿势加载方式,现直接从模组资源读取,而不是将文件复制到磁盘。
- 修复了实体加入时重复调用
saveNPC的问题,现在会先检查现有注册表项。 - 添加了
despawn和spawn命令,可通过 UUID 移除并重新生成 NPC,并支持可配置的移除原因。 - 添加了
ModelPoseAPI和EasyNPCEntityHandler公共 API 类,用于控制 NPC 姿势以及让外部模组以编程方式管理 NPC。 - 为所有支持的 NPC 类型添加了姿势数据文件。
- 在基础姿势配置界面中添加了旋转锁定复选框。
- 添加了
MoveToPositionGoal,使 NPC 可在执行回调操作前先移动到指定位置。 - 添加了
EasyNPCLookControl和EasyNPCBodyRotationControl,以遵循已锁定的根部旋转。 - 将同步的所有者变更和维度变更添加到 NPC 实体数据索引中。
- 将 EasyNPCItemAttachmentLayer 添加到多个实体渲染器中。
- 添加了专门的
Flee Objective配置标签页,包含逃离苦力怕、敌对生物、生物、玩家、村民和阳光的目标。 - 在跟随目标标签页中添加了
FOLLOW_ITEM目标,使 NPC 能通过资源位置跟随物品实体(例如minecraft:apple)。 - 添加了
LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 注视实体以及注视所有者的目标。 - 为
SynchedDataIndex添加了persistent标记,使临时索引(如弩蓄力、模型动画)不再触发脏保存标记。 - 为 API 使用者向
SlimeBase添加了可配置的customParticlesEnabled标记。 - 添加了
SoundType.PET,并将CAT_PURR映射到猫 NPC,以丰富已驯服环境音效的变化。 - 将周期性 NPC 保存操作的日志详细程度从 INFO 降低到 DEBUG。
6.8.3
- 通过升级网络协议版本,强制处理版本不匹配问题,修复了 #680。
- 通过重置命名牌的位置、旋转和大小,修复了 #679。
- 通过为根部旋转添加多状态滑动,修复了 #665。
- 通过添加禁用鼠标光标跟随的选项,修复了 #664,以便更轻松地摆姿势。
- 通过改进对 X 和 Z 轴根部旋转的支持,修复了 #663。
- 通过添加快捷旋转功能,修复了 #661:使用 NPC 魔杖并潜行点击 NPC 时,可将根部旋转为面向玩家。
- 通过在交互处理器中添加对移动工具的检查,修复了移动工具错误触发交互的问题。
- 通过在交互处理器中添加对预设物品的检查,修复了预设物品错误触发交互的问题。
- 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱及命名牌位置问题。
- 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置问题。
6.8.2
- 通过为
SafeMerchantData扩展 notifyTrade 以避免崩溃,修复了 #677。 - 添加了进度数据支持,可根据玩家交互和操作让 NPC 升级。
- 添加了全局 NPC 跟踪系统,以便更好地管理和调试世界中的 NPC。
- 添加了
OriginalModelConfig.withVariantTexture()选项,允许原始模型使用变体纹理。
6.8.1
- 通过使用现有的预设辅助方法而不是自定义方法,修复了 #676。
6.8.0(添加 API 支持)
- 通过添加警告消息和对无效网络数据包的额外检查,修复了 #667。
- 修复了马刷怪蛋模型。
- 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
- 添加了 NPC 基础类,以提供更好的 API 支持。
- 添加了 NPC 原始类,以提供高级 API 支持。
- 添加了史莱姆和恶魂 NPC 类型。
- 添加了自定义模型 API,便于与其他模组和自定义模型集成。
- 重构了内部数据处理和注册机制,以提升可维护性并为未来改进做准备。
6.7.1
- 通过为原版漏洞添加额外的仅客户端检查,修复了 #657 和 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿部动画,修复了 #650。
- 通过修正 canBeHitByProjectiles 的翻译,修复了 #648。
- 通过添加
allowBypassInvulnerability配置选项,允许/禁止绕过 NPC 的无敌状态,修复了 #645。 - 修复了删除按钮即使宽度很小时也会显示标签的问题。
- 修复了上下按钮在某些情况下位置不正确的问题。
- 修复了对话框和配置 UI 中会显示命名牌的问题。
- 修复了距离动作问题,即多个动作未被正确触发。
- 修复了 NPC 预设相关问题。
- 修复了猫 NPC 和狼 NPC 的所有者数据无法正确同步的问题。
- 添加了预设浏览器,便于选择常用 NPC 预设。
- 添加了预设
.snbt(文本)导出与导入功能,以便分享 NPC 预设。 - 重构了现有 NPC 预设,使其使用新的
.snbt格式。 - 重构了刷怪笼系统,使其使用新的预设格式,以提升可维护性并为未来改进做准备。
6.6.2
- 通过重做缩放系统,修复了 #643。
- 修复了重启 / 重载后缩放无法正确更新碰撞箱和命名牌位置的问题。
- 添加了 MID 和 MOUSE_OVER 命名牌可见模式,以便更精细地控制 NPC 名称显示。
- 添加了基于队伍的命名牌可见性支持,并遵循原版 Team 规则。
6.6.1
- 通过重构显示属性的内部数据处理,修复了 #638。
6.6.0
- 通过使用专用线程池实现异步纹理加载,修复了 #634。
- 修复了纹理加载阻塞渲染线程导致游戏冻结的问题。
- 通过使用原子操作,修复了纹理重载保护中的竞态条件。
- 修复了远程纹理下载期间 HTTP 连接的资源泄漏问题。
- 修复了 URL 验证刷屏问题,该问题会允许同一纹理被同时下载多次。
- 修复了远程图像验证中的异常处理,防止无效 URL 导致崩溃。
- 修复了 NPC 加载期间
defineId called for:警告信息。 - 重构了纹理加载架构,加入多层防护和速率限制。
- 重构了实体数据注册逻辑,以提升可维护性。
- 将数据类转换为现代 Java record,以获得更好的不可变性和线程安全性。
- 添加了基于 ConcurrentHashMap 的线程安全会话服务器刷屏保护。
- 添加了完善的错误恢复机制,在失败时自动重置冷却。
- 将纹理加载改进为 2 线程池,并加入 500ms 速率限制。
- 改进了异常处理,对 IIOException 和 FileNotFoundException 使用了更具体的 catch 块。
6.5.2
- 修复了村民职业和工作皮肤问题。
- 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
- 改进了 Gradle 构建时间和清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型和事件,修复了 #632。
- 通过改进纹理处理性能、缓存和内存使用,修复了 #629。
- 修复了 kill 命令对 NPC 无效的问题。
- 修复了纹理重载保护阻止缓存在驱逐后重新加载的问题。
- 修复了远程图像验证器中的 WebP 验证漏洞(缺少 return 语句)。
- 重构了纹理处理逻辑,以提升可维护性并为未来改进做准备。
- 添加了基于时间的重载保护(60 秒),用于替代永久阻止机制。
- 为纹理处理添加了额外的单元测试。
- 改进了 gradle 构建任务。
6.5.0
- ⚠️ 移除了 jar-in-jar 打包方案,以提升模组兼容性和 API 能力。
- 修复了 #627:重新实现剪刀逻辑,以获得更好的其他模组兼容性。
- 修复了 #625:使用旋转或移动后的模型部件时,生动动画出现的问题。
- 修复了使用缩放后的模型部件时默认动画会被取消的问题。
- 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。
6.4.1
- 修复了 #626:改进了针对不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供的详细调查和修复建议。
6.4.0
- 通过改进对话框数据验证和错误处理,修复了 #626。
- 通过重构渲染数据和渲染处理,修复了 #623。
- 通过确保自定义数据被正确保存和加载,修复了 #622。
- 修复了打开对话框动作类型,使其能够打开来自其他 NPC 的对话框。
- 通过为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法,修复了哈希相关问题。
- 为 #622 添加了自定义数据测试物品,以便更轻松地测试自定义数据。
- 改进了 records,并修复了缺失数据可能引发的问题。
6.3.0
- 重构了配置 UI 专用组件,并将其从核心模组中移除。
- 修复了对话框数据:发送到客户端前会先过滤对话框数据。
- 修复了对话编辑器布局问题,并改进了易用性。
- 修复了部分对话数据字段缺少默认值的问题。
- 添加了对话优先级支持,以控制对话执行顺序。
- 为对话和记分板动作添加了条件支持。
- 为对话添加了频率支持,以限制对话显示的频率。
- 添加了新的 NPC 预设,以支持记分板和条件功能。
- 通过移除冗余字段,改进了对话按钮数据格式。
6.2.0
- 修复了对话框中的字符串注入问题。
- 修复了动作类型缺少翻译的问题。
- 添加了记分板动作类型,可增加、减少、设置记分板数值。
- 添加了
@score(...)NPC 宏,用于在对话中显示记分板数值。 - 添加了额外的单元测试。
- 改进了旋转按钮,加入指示器并提升了易用性。
6.1.2
- 修复了因缺少关闭容器数据包而导致的容器和菜单同步问题。
- 修复了关闭按钮在某些情况下无效的问题。
- 修复了界面切换时鼠标光标跳动的问题。
- 修复了翻译文件,并移除了重复和已弃用条目。
- 将 Easy NPC 魔杖移至现有核心物品选项卡,而不是新建一个选项卡。
- 为猫的不同模型部件添加了姿势支持(尾巴除外)。
- 通过在不需要时禁用发光效果,改进了 EasyNPCWand 的发光效果性能。
- 改进了自定义实体检测,排除了 display、maker、thrown 和 spawner 等非生物实体。
- 改进了猫变体处理。
6.1.1
- 通过重新验证实体类型,修复了 #612。
- 通过为特定模型强制同步帽子层和头部层,修复了 #610。
- 修复了兽人皮。
- 通过将相关逻辑移至仅客户端,改进了自定义模型支持和性能。
- 改进了玩家皮肤的玩家到 UUID 映射缓存。
- 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。
6.1.0 ✨
这是一个重大版本更新。更新前请先备份你的世界和 NPC 数据。 此版本包含许多改进、优化和内部变更, 与早期版本并不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
- 为支持新的使用场景,内部数据格式和部分行为已被重构。
🧩 新的模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
- Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
- Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。
🎯 为什么要做这个改动?
- 允许服务器和整合包仅在服务端安装 Core 模组,以获得更精简的配置。
- 在不需要到处使用 UI 时减少内存占用和加载时间。
- 通过分离 UI 与核心逻辑,加快开发和测试速度。
Easy NPC (Bundle) 6.10.0
on 2026 Mar 13Easy NPC (Bundle) 6.10.0
on 2026 Mar 13Changelog for Easy NPC (1.20.1)
Note
This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead.
Note: Please always back up your world / NPCs before updating to a new version! Check the [upgrade guide][upgrade_guide] for more information.
6.10.0
- Fixed #695 by clearing model part rotations/positions when switching to a
DEFAULTvanilla pose. - Fixed #695 by applying lock rotation and pose animation only when the NPC is idle.
- Fixed #695 by correcting root rotation pivot to use actual bounding box height instead of 0.5f.
- Fixed multiple objective registration issues including inverted
isTargetedPlayercheck, wrong UUID in leave-handler, missing player-targeted refresh on join/leave, and retry for offline targets. - Fixed goal reference being retained after objective is unregistered.
- Removed auto-lock of ROOT rotation when loading poses; root lock is now user-controlled.
- Added lock rotation checkbox to the advanced and custom pose configuration screens.
- Added model-specific pose key filtering in
ConfigurationMenuHandlerfor the default pose screen. - Added unit tests for
CustomPosition,CustomRotation,CustomScale,ModelPose,ModelAnimationBehaviorandModelAnimationData. - Added
NPCDataIsolationTestHelperand game tests for Fabric and Forge. - Increased max head yaw range from 60° to 65°.
6.9.0
- Fixed #692, #666 by adding caching and safeguards to prevent redundant retriggering of NPC entity data updates.
- Fixed #651, #617 by adding basic custom poses for all supported NPC types.
- Fixed #597 by adding additional Flee goals for fleeing from players, villagers, monsters, ...
- Fixed pose loading to read directly from mod resources instead of copying files to disk.
- Fixed duplicate
saveNPCcalls on entity join by checking existing registry entry first. - Added
despawnandspawncommands to remove and re-spawn NPCs by UUID with configurable removal reasons. - Added
ModelPoseAPIandEasyNPCEntityHandlerpublic API classes for controlling NPC poses and managing NPCs programmatically from external mods. - Added pose data files for all supported NPC types.
- Added lock rotation checkbox to the basic pose configuration screen.
- Added
MoveToPositionGoalto move an NPC to a position before executing a callback action. - Added
EasyNPCLookControlandEasyNPCBodyRotationControlto respect locked root rotation. - Added synced owner change and dimension change to the NPC entity data index.
- Added EasyNPCItemAttachmentLayer into various entity renderers.
- Added dedicated
Flee Objectiveconfiguration tab with objectives for fleeing creepers, monsters, mobs, players, villagers and the sun. - Added
FOLLOW_ITEMobjective to the follow objectives tab to make NPCs follow item entities by resource location (e.g.minecraft:apple). - Added
LookAtEntityByUUIDGoaland enabled the look-at-entity-by-UUID and look-at-owner objectives in the look objectives screen. - Added
persistentflag toSynchedDataIndexso that transient indices (e.g. crossbow charge, model animation) no longer trigger dirty-save marking. - Added configurable
customParticlesEnabledflag toSlimeBasefor API consumers. - Added
SoundType.PETand mappedCAT_PURRto the cat NPC for tamed ambient sound variety. - Reduced log verbosity for periodic NPC save operations from INFO to DEBUG.
6.8.3
- Fixed #680 by enforcing version miss-match by upgrading network protocol version.
- Fixed #679 by resetting position, rotation and size for name tag.
- Fixed #665 by adding multi state slide for root rotations.
- Fixed #664 by adding option to disable following mouse cursor for easier posing.
- Fixed #663 by improve support for X and Z root rotations.
- Fixed #661 by adding quick rotation with NPC wand and sneaking to the NPC to rotate the root to face the player.
- Fixed move tool is wrongly triggering interactions by adding check for move tool in interaction handler.
- Fixed Preset Item is wrongly triggering interactions by adding check for preset item in interaction handler.
- Fixed Slime and Ghast hitbox and name tag position issues by adjusting bounding box and eye height calculations.
- Fixed Slime and Ghast GUI position by adjusting offset values.
6.8.2
- Fixed #677 by extending
SafeMerchantDatawith notifyTrade to avoid crashes. - Added progression data support for leveling up NPCs based on player interactions and actions.
- Added global NPC tracking system for better management and debugging of NPCs across the world.
- Added
OriginalModelConfig.withVariantTexture()option to allow using variant textures with the original model.
6.8.1
- Fixed #676 by using existing preset helper method instead of custom one.
6.8.0 (Adding API support)
- Fixed #667 by adding warning messages and additional checks for invalid network packets.
- Fixed Horse spawn eggs model.
- Fixed pose support for allay, chicken, creeper, fox, ghast, horse, illager, iron golem, slime and vex.
- Added NPC base classes for better API support.
- Added NPC raw classes for advanced API support.
- Added Slim and Ghast NPC types.
- Added Custom Model API for easier integration with other mods and custom models.
- Refactored internal data handling and registration for better maintainability and future improvements.
6.7.1
- Fixed #657 and #656 by adding additional client side checks for vanilla bug.
6.7.0
- Fixed #650 by implementing Wolf Leg Animations in setupAnim method.
- Fixed #648 by fixing canBeHitByProjectiles translation.
- Fixed #645 by adding
allowBypassInvulnerabilityconfig option to allow/deny bypassing invulnerability for NPCs. - Fixed delete button showing label even with small width.
- Fixed up and down buttons not positioned correctly in some cases.
- Fixed name tag showing up for dialog and configuration UI.
- Fixed distance action issue were multiple actions are not properly triggered.
- Fixed issues with NPC presets.
- Fixed Cat NPC and Wolf NPC owner data not syncing properly.
- Added preset browser for easier selection of common NPC presets.
- Added preset .snbt (text) export and import functionality for sharing NPC presets.
- Refactored existing NPC presets to use new .snbt format.
- Refactored spawner system to use new preset format for better maintainability and future improvements.
6.6.2
- Fixed #643 by rework scaling system.
- Fixed scaling not properly updating hitbox and nametag position after restart / reload.
- Added MID and MOUSE_OVER name tag visibility modes for finer control over NPC name display.
- Added team-based name tag visibility support respecting vanilla Team.
6.6.1
- Fixed #638 by refactored internal data handling for display attributes.
6.6.0
- Fixed #634 by implementing asynchronous texture loading with dedicated thread pool.
- Fixed texture loading blocking render thread causing game freezes.
- Fixed race conditions in texture reload protection using atomic operations.
- Fixed resource leaks in HTTP connections during remote texture downloads.
- Fixed URL validation spam allowing multiple simultaneous downloads of the same texture.
- Fixed exception handling for remote image validation preventing crashes on invalid URLs.
- Fixed
defineId called for:warning messages during NPC loading. - Refactored texture loading architecture with multi-level defense and rate limiting.
- Refactored entity data registration logic for better maintainability.
- Converted data classes to modern Java records for better immutability and thread-safety.
- Added thread-safe session server spam protection with ConcurrentHashMap.
- Added comprehensive error recovery with automatic cooldown reset on failures.
- Improved texture loading with 2-thread pool and 500ms rate limiting.
- Improved exception handling with specific catch blocks for IIOException and FileNotFoundException.
6.5.
... [内容过长已截断]
Easy NPC (Bundle) 6.9.0
on 2026 Mar 11Easy NPC (1.20.1) 更新日志
注意
此更新日志包含变更摘要。 如需查看完整更新日志,请前往 GitHub History。
注意:在更新到新版本之前,请务必备份你的世界/非玩家角色数据! 更多信息请查看 升级指南。
6.9.0
- 修复 #692、#666:添加缓存与防护措施,防止非玩家角色实体数据更新被冗余地重复触发。
- 修复 #651、#617:为所有支持的非玩家角色类型添加基础自定义姿势。
- 修复 #597:添加额外的逃跑(Flee)目标,用于从玩家、村民、敌对生物等对象处逃离……
- 修复姿势加载:直接从模组资源读取,而不是将文件复制到磁盘。
- 修复实体加入时重复调用
saveNPC:先检查是否已存在注册表条目。 - 新增
despawn与spawn命令:可通过 UUID 移除并重新生成非玩家角色,并支持可配置的移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共 API 类:用于控制非玩家角色姿势,并允许外部模组以编程方式管理非玩家角色。 - 为所有支持的非玩家角色类型添加姿势数据文件。
- 在基础姿势配置界面新增“锁定旋转”复选框。
- 新增
MoveToPositionGoal:使非玩家角色在执行回调动作前先移动到指定位置。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl:以遵循锁定的根部旋转。 - 将已同步的所有者变更与维度变更加入非玩家角色实体数据索引。
- 将 EasyNPCItemAttachmentLayer 添加到多种实体渲染器中。
- 新增专用的
Flee Objective配置选项卡,提供针对苦力怕、敌对生物、生物、玩家、村民以及太阳的逃离目标。 - 在跟随目标选项卡中新增
FOLLOW_ITEM目标:使非玩家角色按资源位置跟随物品实体(例如minecraft:apple)。 - 新增
LookAtEntityByUUIDGoal,并在注视目标界面启用“按 UUID 注视实体”和“注视所有者”目标。 - 为
SynchedDataIndex新增persistent标记,使短暂索引(例如弩充能、模型动画)不再触发脏保存标记。 - 为 API 使用者在
SlimeBase中新增可配置的customParticlesEnabled标记。 - 新增
SoundType.PET,并将CAT_PURR映射到猫非玩家角色,以提供更多已驯服环境音的变化。 - 将周期性非玩家角色保存操作的日志详细程度从 INFO 降为 DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本来强制处理版本不匹配。
- 修复 #679:重置命名牌的位置、旋转与大小。
- 修复 #665:为根部旋转添加多状态滑动设置。
- 修复 #664:新增选项,可禁用跟随鼠标光标,便于摆姿势。
- 修复 #663:改进对 X 与 Z 根部旋转的支持。
- 修复 #661:新增快速旋转——使用 NPC 法杖并潜行,可让非玩家角色将根部旋转为面向玩家。
- 修复移动工具错误触发交互:在交互处理程序中增加对移动工具的检查。
- 修复预设物品错误触发交互:在交互处理程序中增加对预设物品的检查。
- 修复史莱姆与恶魂的碰撞箱与命名牌位置问题:调整碰撞箱与眼睛高度的计算方式。
- 修复史莱姆与恶魂 GUI 位置:调整偏移值。
6.8.2
- 修复 #677:为
SafeMerchantData扩展 notifyTrade,避免崩溃。 - 新增进度数据支持:可基于玩家交互与动作让非玩家角色升级。
- 新增全局非玩家角色追踪系统:更好地在整个世界中管理与调试非玩家角色。
- 新增
OriginalModelConfig.withVariantTexture()选项:允许原版模型使用变种纹理。
6.8.1
- 修复 #676:使用现有的预设辅助方法替代自定义实现。
6.8.0(添加 API 支持)
- 修复 #667:为无效网络数据包添加警告信息与额外检查。
- 修复马刷怪蛋模型。
- 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
- 新增非玩家角色基础类,以获得更好的 API 支持。
- 新增非玩家角色原始类,以提供高级 API 支持。
- 新增史莱姆与恶魂非玩家角色类型。
- 新增自定义模型 API:便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性并便于未来改进。
6.7.1
- 修复 #657 与 #656:为原版 bug 添加额外的仅客户端检查。
6.7.0
- 修复 #650:在 setupAnim 方法中实现狼腿部动画。
- 修复 #648:修正 canBeHitByProjectiles 的翻译。
- 修复 #645:新增
allowBypassInvulnerability配置选项,用于允许/禁止绕过非玩家角色的铁布衫效果。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下位置不正确的问题。
- 修复对话框与配置 UI 仍显示命名牌的问题。
- 修复距离动作问题:多个动作未能正确触发。
- 修复非玩家角色预设的相关问题。
- 修复猫非玩家角色与狼非玩家角色的所有者数据未正确同步的问题。
- 新增预设浏览器,便于选择常用非玩家角色预设。
- 新增预设 .snbt(文本)导出与导入功能,用于分享非玩家角色预设。
- 重构现有非玩家角色预设以使用新的 .snbt 格式。
- 重构刷怪笼系统以使用新的预设格式,提升可维护性并便于未来改进。
6.6.2
- 修复 #643:重做缩放系统。
- 修复重启/重新加载后缩放未能正确更新碰撞箱与命名牌位置的问题。
- 新增 MID 与 MOUSE_OVER 命名牌可见性模式,以更精细地控制非玩家角色名称显示。
- 新增基于队伍的命名牌可见性支持,并遵循原版 Team。
6.6.1
- 修复 #638:重构用于显示属性的内部数据处理。
6.6.0
- 修复 #634:使用专用线程池实现异步材质加载。
- 修复材质加载阻塞渲染线程导致游戏冻结的问题。
- 修复在材质重载保护中使用原子操作导致的竞态条件。
- 修复远程材质下载过程中 HTTP 连接的资源泄漏。
- 修复 URL 校验刷屏问题:允许同一材质的多个同时下载。
- 修复远程图片校验中的异常处理:防止无效 URL 导致崩溃。
- 修复非玩家角色加载时的
defineId called for:警告信息。 - 重构材质加载架构:增加多层防护与速率限制。
- 重构实体数据注册逻辑,以提升可维护性。
- 将数据类转换为现代 Java record,以提升不可变性与线程安全。
- 使用 ConcurrentHashMap 新增线程安全的会话服务器刷屏防护。
- 新增全面的错误恢复机制:失败时自动重置冷却。
- 改进材质加载:2 线程池与 500ms 速率限制。
- 改进异常处理:为 IIOException 与 FileNotFoundException 使用更具体的 catch 分支。
6.5.2
- 修复村民职业与职业皮肤问题。
- 改进 GitHub 工作流:为 gradle 依赖添加缓存。
- 改进 Gradle 构建时间与清理任务。
6.5.1
- 修复 #632:实现 ON_KILL 动作类型与事件。
- 修复 #629:改进材质处理性能、缓存与内存使用。
- 修复 kill 命令无法对非玩家角色生效的问题。
- 修复材质重载保护导致缓存被驱逐后无法重新加载的问题。
- 修复远程图片校验器中的 WebP 校验 bug(缺少 return 语句)。
- 重构材质处理逻辑,以提升可维护性并便于未来改进。
- 新增基于时间的重载保护(60 秒),替代永久阻止机制。
- 为材质处理新增更多单元测试。
- 改进 gradle 构建任务。
6.5.0
- ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 能力。
- 修复 #627:重做剪刀实现,以获得更好的模组兼容性。
- 修复 #625:使用旋转或移动的模型部件时出现的生动动画问题。
- 修复使用缩放后的模型部件时默认动画被取消的问题。
- 新增更好的姿势动画控制:smart、default 与 und none 选项。
6.4.1
- 修复 #626:改进针对不同非玩家角色 UUID 的界面切换逻辑,感谢
Spawnblade提供详细的调查与修复建议。
6.4.0
- 修复 #626:改进对话数据校验与错误处理。
- 修复 #623:重构渲染数据与渲染处理。
- 修复 #622:确保自定义数据能正确保存与加载。
- 修复“打开对话”动作类型:允许从其他非玩家角色打开对话。
- 修复哈希相关问题:为 ConditionDataSet 与 ActionDataSet 补充 equals 与 hashCode 方法。
- 为 #622 新增自定义数据测试物品,便于测试自定义数据。
- 改进 records,并修复潜在的缺失数据问题。
6.3.0
- 重构配置 UI 专用组件,并将其从核心模组中移除。
- 修复对话数据:在发送到客户端前过滤对话数据。
- 修复对话编辑器布局问题并提升易用性。
- 修复部分对话数据字段缺少默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,用于限制对话的显示频率。
- 新增用于支持计分板与条件的非玩家角色预设。
- 改进对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中的字符串注入问题。
- 修复动作类型缺少翻译的问题。
- 新增计分板动作类型:增加、减少、设置计分板数值。
- 新增
@score(...)非玩家角色宏,用于在对话中显示计分板数值。 - 新增更多单元测试。
- 改进旋转按钮:增加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题:缺少关闭容器数据包。
- 修复关闭按钮在某些情况下无法使用的问题。
- 修复界面切换时鼠标光标跳动的问题。
- 修复翻译文件,并移除重复与已弃用条目。
- 将 Easy NPC 法杖移至现有核心物品选项卡,而不是新建一个选项卡。
- 为猫姿势添加对不同模型部件的支持(尾巴除外)。
- 通过在不需要时禁用发光效果来提升 EasyNPCWand 的性能。
- 改进自定义实体检测:排除显示实体、makers、throwns 与刷怪笼等非生物实体。
- 改进猫变种处理。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:对特定模型强制同步帽子与头部图层。
- 修复兽人皮纹理。
- 将相关逻辑移至仅客户端,以改进自定义模型支持与性能。
- 改进玩家到 UUID 映射的缓存,用于玩家皮肤。
- 将更换模型命令与逻辑限制为仅对 Doppler 非玩家角色生效。
6.1.0 ✨
这是一个重大版本。更新前请备份你的世界与非玩家角色数据。 此版本包含大量改进、优化与内部变更,且与早期版本并不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本的现有非玩家角色及其配置数据可能无法正确加载,或需要手动调整。
- 内部数据格式与部分行为已重构,以支持新的使用场景。
🧩 全新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC – 捆绑包,包含 Core 与 Configuration UI,提供即装即用体验。
- Easy NPC: Core – 轻量运行时与非玩家角色逻辑,依赖最小。面向服务器、整合包与开发者。
- Easy NPC: Configuration UI – 独立配置界面,用于创建与编辑非玩家角色。可安装在需要 UI 的客户端上。
🎯 为什么要这样改动?
- 允许服务器与整合包在服务端仅部署 Core 模组,以获得更精简的配置。
- 当并非处处都需要 UI 时,减少内存占用与加载时间。
- 通过拆分 UI 与核心逻辑,加快开发与测试效率。
Easy NPC (Bundle) 6.9.0
on 2026 Mar 11Easy NPC (1.20.1) 更新日志
注意
本更新日志仅包含变更摘要。 完整更新日志请前往 GitHub History 查看。
注意:更新到新版本前,请务必备份你的世界/NPC! 更多信息请查看升级指南。
6.9.0
- 修复 #692、#666:添加缓存与防护措施,防止 NPC 实体数据更新被重复触发。
- 修复 #651、#617:为所有支持的 NPC 类型添加基础自定义姿势。
- 修复 #597:添加额外的“逃跑”目标,用于从玩家、村民、敌对生物等处逃离。
- 修复姿势加载:直接从模组资源读取,而不是将文件复制到磁盘。
- 修复实体加入时重复调用
saveNPC:先检查是否已有注册表条目。 - 新增
despawn与spawn命令:可通过 UUID 移除并重新生成 NPC,并可配置移除原因。 - 新增
ModelPoseAPI与EasyNPCEntityHandler公共 API 类:供外部模组以编程方式控制 NPC 姿势与管理 NPC。 - 为所有支持的 NPC 类型新增姿势数据文件。
- 在基础姿势配置界面新增“旋转锁定”复选框。
- 新增
MoveToPositionGoal:让 NPC 在执行回调动作前先移动到指定位置。 - 新增
EasyNPCLookControl与EasyNPCBodyRotationControl:遵循已锁定的根部旋转。 - 将“同步的所有者更改”和“维度更改”加入 NPC 实体数据索引。
- 将 EasyNPCItemAttachmentLayer 加入到多个实体渲染器中。
- 新增专用的
Flee Objective配置选项卡:包含逃离苦力怕、敌对生物、生物、玩家、村民与太阳的目标。 - 在跟随目标选项卡中新增
FOLLOW_ITEM目标:使 NPC 按资源定位符跟随物品实体(例如minecraft:apple)。 - 新增
LookAtEntityByUUIDGoal,并在注视目标界面启用“按 UUID 注视实体”与“注视所有者”目标。 - 在
SynchedDataIndex中新增persistent标记:使临时索引(如弩:蓄力、模型动画)不再触发“脏保存”标记。 - 为 API 使用者在
SlimeBase中新增可配置的customParticlesEnabled标记。 - 新增
SoundType.PET,并将CAT_PURR映射到猫 NPC,以提供驯服后闲置音效的多样性。 - 将周期性 NPC 保存操作的日志详细程度从 INFO 降为 DEBUG。
6.8.3
- 修复 #680:通过升级网络协议版本来强制处理版本不匹配。
- 修复 #679:重置命名牌的位置、旋转与大小。
- 修复 #665:为根部旋转加入多状态滑动。
- 修复 #664:新增可选项,禁用跟随鼠标光标,便于摆姿势。
- 修复 #663:改进对 X 与 Z 根部旋转的支持。
- 修复 #661:新增使用 Npc 魔杖并潜行的快速旋转,让 NPC 的根部朝向玩家。
- 修复移动工具错误触发交互:在交互处理程序中增加对移动工具的检查。
- 修复预设物品错误触发交互:在交互处理程序中增加对预设物品的检查。
- 修复史莱姆与恶魂的碰撞箱与命名牌位置问题:调整边界框与眼高计算。
- 修复史莱姆与恶魂的 GUI 位置:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,加入 notifyTrade 以避免崩溃。 - 新增进度数据支持:可基于玩家交互与动作让 NPC 升级。
- 新增全局 NPC 跟踪系统:更好地管理与调试世界中的 NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项:允许原版模型使用变体纹理。
6.8.1
- 修复 #676:使用现有的预设辅助方法替代自定义方法。
6.8.0(添加 API 支持)
- 修复 #667:为无效网络数据包增加警告信息与额外检查。
- 修复马刷怪蛋模型。
- 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆与恼鬼的姿势支持。
- 新增 NPC 基类,以提升 API 支持。
- 新增 NPC 原始类,以支持高级 API。
- 新增史莱姆与恶魂 NPC 类型。
- 新增自定义模型 API:更易与其他模组和自定义模型集成。
- 重构内部数据处理与注册逻辑:提升可维护性并便于未来改进。
6.7.1
- 修复 #657 与 #656:针对原版 Bug 增加额外的客户端检查。
6.7.0
- 修复 #650:在 setupAnim 方法中实现狼腿部动画。
- 修复 #648:修正 canBeHitByProjectiles 的翻译。
- 修复 #645:新增
allowBypassInvulnerability配置选项,用于允许/禁止绕过 NPC 的铁布衫。 - 修复删除按钮在宽度较小时仍显示标签。
- 修复上/下按钮在某些情况下位置不正确。
- 修复命名牌在对话框与配置 UI 中显示的问题。
- 修复距离动作问题:多个动作未能正确触发。
- 修复 NPC 预设相关问题。
- 修复猫 NPC 与白色狼 NPC 的所有者数据未能正确同步。
- 新增预设浏览器:更易选择常用 NPC 预设。
- 新增预设 .snbt(文本)导出与导入功能:用于分享 NPC 预设。
- 重构现有 NPC 预设以使用新的 .snbt 格式。
- 重构刷怪笼系统以使用新的预设格式:提升可维护性并便于未来改进。
6.6.2
- 修复 #643:重做缩放系统。
- 修复重启/重载后缩放未能正确更新碰撞箱与命名牌位置的问题。
- 新增 MID 与 MOUSE_OVER 命名牌可见模式:更精细地控制 NPC 名称显示。
- 新增基于队伍的命名牌可见性支持,并遵循原版 Team。
6.6.1
- 修复 #638:重构用于显示属性的内部数据处理。
6.6.0
- 修复 #634:使用专用线程池实现异步材质加载。
- 修复材质加载阻塞渲染线程导致游戏冻结的问题。
- 修复材质重载保护中的竞态条件:改用原子操作。
- 修复远程材质下载期间 HTTP 连接的资源泄漏。
- 修复 URL 校验刷屏:允许同一材质的多个同时下载。
- 修复远程图片校验中的异常处理:避免无效 URL 导致崩溃。
- 修复 NPC 加载期间
defineId called for:警告信息。 - 重构材质加载架构:多层防护与速率限制。
- 重构实体数据注册逻辑:提升可维护性。
- 将数据类转换为现代 Java record:提升不可变性与线程安全性。
- 新增线程安全的会话服务器刷屏保护(ConcurrentHashMap)。
- 新增全面的错误恢复:失败时自动重置冷却。
- 改进材质加载:2 线程池与 500ms 速率限制。
- 改进异常处理:对 IIOException 与 FileNotFoundException 使用更具体的捕获。
6.5.2
- 修复村民职业与工作皮肤问题。
- 改进 GitHub 工作流:为 gradle 依赖添加缓存。
- 改进 Gradle 构建时间与清理任务。
6.5.1
- 修复 #632:实现 ON_KILL 动作类型与事件。
- 修复 #629:改进材质处理性能、缓存与内存占用。
- 修复 kill 命令对 NPC 不生效的问题。
- 修复材质重载保护:避免缓存被逐出后无法重新加载。
- 修复远程图片校验器中的 WebP 校验 Bug(缺少 return 语句)。
- 重构材质处理逻辑:提升可维护性并便于未来改进。
- 新增基于时间的重载保护(60 秒),替代永久阻止机制。
- 新增额外的单元测试(材质处理)。
- 改进 gradle 构建任务。
6.5.0
- ⚠️ 移除 jar-in-jar 打包方式:提升模组兼容性与 API 能力。
- 修复 #627:改进剪刀实现,以更好兼容其他模组。
- 修复 #625:使用旋转或移动的模型部件时出现的生动动画问题。
- 修复使用缩放的模型部件时默认动画被取消的问题。
- 新增更好的姿势动画控制:smart、default 与 und 选项。
6.4.1
- 修复 #626:改进不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供的详细调查与修复建议。
6.4.0
- 修复 #626:改进对话数据校验与错误处理。
- 修复 #623:重构渲染数据与渲染处理。
- 修复 #622:确保自定义数据能正确保存与加载。
- 修复打开对话动作类型:允许从其他 NPC 打开对话框。
- 修复哈希问题:为 ConditionDataSet 与 ActionDataSet 补充 equals 与 hashCode 方法。
- 为 #622 新增自定义数据测试物品,便于测试自定义数据。
- 改进 records,并修复潜在的数据缺失问题。
6.3.0
- 重构配置 UI 的专用组件,并将其从核心模组中移除。
- 修复对话数据:在发送到客户端前过滤对话数据。
- 修复对话编辑器布局问题,并提升易用性。
- 修复某些对话数据字段缺少默认值的问题。
- 新增对话优先级支持:控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持:限制对话显示频率。
- 新增用于计分板与条件支持的 NPC 预设。
- 改进对话按钮数据格式:移除冗余字段。
6.2.0
- 修复对话框中的字符串注入问题。
- 修复动作类型缺少翻译的问题。
- 新增计分板动作类型:增加、减少、设置计分板数值。
- 新增
@score(...)NPC 宏:在对话中显示计分板数值。 - 新增额外单元测试。
- 改进纺线器按钮:加入指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题:补发缺失的关闭容器数据包。
- 修复关闭按钮在某些情况下无效的问题。
- 修复在界面切换时鼠标光标跳动的问题。
- 修复翻译文件并移除重复与已弃用条目。
- 将 Easy NPC 魔杖移动到现有核心物品选项卡,而不是创建新的选项卡。
- 新增猫姿势对不同模型部件的支持(尾巴除外)。
- 改进 EasyNPCWand 的发光效果性能:不需要时禁用。
- 改进高级实体探测器:排除展示实体、标记实体、投掷物与刷怪笼等非生物实体。
- 改进猫变种处理。
6.1.1
- 修复 #612:重新校验实体类型。
- 修复 #610:对特定模型强制同步帽子与头部层。
- 修复兽人皮纹理。
- 改进自定义模型支持与性能:将相关逻辑仅保留在客户端。
- 改进玩家到 UUID 映射的缓存(用于玩家皮肤)。
- 将更改模型命令与逻辑限制为 Doppler NPC 专用。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份你的世界与 NPC 数据。 此版本包含大量改进、优化与内部变更,且与更早版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
- 为支持新的使用场景,内部数据格式与部分行为已被重构。
🧩 全新模块化结构
Easy NPC 现在拆分为三个独立模组:
- Easy NPC – 整合包:同时包含 Core 与 Configuration UI,提供即装即用体验。
- Easy NPC: Core – 轻量运行时与 NPC 逻辑,依赖最少。面向服务器、整合包与开发者。
- Easy NPC: Configuration UI – 独立配置界面:用于创建与编辑 NPC。可安装在需要 UI 的客户端上。
🎯 为什么要这样改?
- 服务器与整合包可以在服务端仅发布 Core 模组,以获得更精简的配置。
- 当不需要 UI 时,减少内存占用与加载时间。
- 通过拆分 UI 与核心逻辑,让开发与测试更高效。
Easy NPC (Bundle) 6.8.4
on 2026 Feb 26Easy NPC (1.20.1) 更新日志
注意
本更新日志仅包含摘要性变更。 完整更新日志请前往 GitHub 历史记录。
注意:升级新版本前,请务必备份您的世界/NPC数据! 更多信息请参阅升级指南。
6.8.4
- 为NPC实体数据中的所有者变更和维度变更添加同步支持。
6.8.3
- 通过强制升级网络协议版本修复 #680(版本不匹配问题)。
- 通过重置命名牌的位置、旋转和大小修复 #679。
- 通过为根部旋转添加多状态滑动功能修复 #665。
- 通过添加禁用跟随鼠标光标的选项(便于摆姿势)修复 #664。
- 通过改进对X轴和Z轴根部旋转的支持修复 #663。
- 通过添加潜行时使用NPC魔杖快速旋转功能(使根部朝向玩家)修复 #661。
- 通过在交互处理器中添加移动工具检测,修复移动工具错误触发交互的问题。
- 通过在交互处理器中添加预设物品检测,修复预设物品错误触发交互的问题。
- 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及命名牌位置问题。
- 通过调整偏移值修复史莱姆与恶魂的GUI位置问题。
6.8.2
- 通过扩展
SafeMerchantData并添加 notifyTrade 方法避免崩溃,修复 #677。 - 新增基于玩家交互与行为的NPC升级进度数据支持。
- 新增全局NPC追踪系统,便于跨世界管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,允许原始模型使用额外纹理。
6.8.1
- 通过使用现有预设辅助方法而非自定义方法修复 #676。
6.8.0(新增API支持)
- 通过为无效网络数据包添加警告信息与额外检查修复 #667。
- 修复马刷怪蛋模型。
- 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
- 新增NPC基础类以增强API支持。
- 新增NPC原始类以支持高级API功能。
- 新增史莱姆与恶魂NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,提升可维护性并为未来改进做准备。
6.7.1
- 通过为原版漏洞添加额外客户端检查修复 #657 与 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿动画修复 #650。
- 修复 canBeHitByProjectiles 的翻译问题。
- 通过新增
allowBypassInvulnerability配置选项,控制是否允许绕过NPC无敌状态,修复 #645。 - 修复删除按钮在窄宽度下仍显示标签的问题。
- 修复上下按钮在某些情况下定位错误的问题。
- 修复对话框与配置界面中命名牌意外显示的问题。
- 修复距离动作中多个动作未正确触发的问题。
- 修复NPC预设相关问题。
- 修复猫与狼NPC的所有者数据未正确同步的问题。
- 新增预设浏览器,便于选择常用NPC预设。
- 新增预设 .snbt(文本)导出与导入功能,便于分享NPC预设。
- 重构现有NPC预设,改用新的 .snbt 格式。
- 重构刷怪笼系统,采用新预设格式以提升可维护性并为未来改进做准备。
6.6.2
- 通过重构缩放系统修复 #643。
- 修复重启/重载后缩放未正确更新碰撞箱与命名牌位置的问题。
- 新增 MID 与 MOUSE_OVER 命名牌可见模式,精细控制NPC名称显示。
- 新增队伍基础命名牌可见性支持,兼容原版队伍系统。
6.6.1
- 通过重构显示属性的内部数据处理修复 #638。
6.6.0
- 通过实现异步材质加载(专用线程池)修复 #634。
- 修复材质加载阻塞渲染线程导致游戏卡顿的问题。
- 通过原子操作修复材质重载保护中的竞态条件。
- 修复远程材质下载时HTTP连接的资源泄漏问题。
- 修复URL验证垃圾信息,允许多个相同纹理同时下载。
- 修复远程图片验证的异常处理,防止因无效URL导致崩溃。
- 修复NPC加载时出现的
defineId called for:警告信息。 - 重构材质加载架构,加入多层防护与速率限制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类转换为现代Java记录类,增强不可变性与线程安全。
- 新增线程安全的会话服务器防刷机制(使用ConcurrentHashMap)。
- 新增全面错误恢复机制,失败时自动重置冷却时间。
- 改进材质加载:采用双线程池与500ms速率限制。
- 改进异常处理:为IIOException与FileNotFoundException添加专用捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 通过为Gradle依赖添加缓存改进GitHub工作流。
- 优化Gradle构建时间与清理任务。
6.5.1
- 通过实现ON_KILL动作类型与事件修复 #632。
- 通过优化材质处理性能、缓存与内存占用修复 #629。
- 修复击杀命令对NPC无效的问题。
- 修复材质重载保护阻止缓存被驱逐后重新加载的问题。
- 修复远程图片验证器中的WebP验证错误(缺失return语句)。
- 重构材质处理逻辑,提升可维护性并为未来改进做准备。
- 新增基于时间的重载保护(60秒),替代永久屏蔽机制。
- 新增材质处理的额外单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除jar-in-jar捆绑方式,提升模组兼容性与API能力。
- 通过改进剪刀实现方式修复 #627,提升与其他模组的兼容性。
- 通过修复旋转或移动模型部件时的生动动画问题修复 #625。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增智能、默认与无三种姿势动画控制选项。
6.4.1
- 通过改进不同NPC UUID的屏幕切换逻辑修复 #626,感谢
Spawnblade的详细调查与修复建议。
6.4.0
- 通过改进对话数据验证与错误处理修复 #626。
- 通过重构渲染数据与渲染处理修复 #623。
- 通过确保自定义数据正确保存与加载修复 #622。
- 修复打开对话动作类型,允许从其他NPC打开对话。
- 通过为ConditionDataSet与ActionDataSet添加缺失的equals与hashCode方法修复哈希问题。
- 为 #622 新增自定义数据测试物品,便于测试自定义数据。
- 改进记录类并修复潜在缺失数据问题。
6.3.0
- 重构配置界面专用组件并将其从核心模组中移除。
- 通过在发送至客户端前过滤对话数据修复对话数据问题。
- 修复对话编辑器布局问题并提升可用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,限制对话显示频率。
- 新增支持计分板与条件的新NPC预设。
- 通过移除冗余字段改进对话按钮数据格式。
6.2.0
- 修复对话内的字符串注入问题。
- 修复动作类型缺失翻译的问题。
- 新增计分板动作类型,支持增加、减少、设置计分板数值。
- 新增
@score(...)NPC宏,在对话中显示计分板数值。 - 新增额外单元测试。
- 改进旋转按钮,添加指示器并提升可用性。
6.1.2
- 通过补充缺失的关闭容器数据包修复容器与菜单同步问题。
- 修复某些情况下关闭按钮无效的问题。
- 修复屏幕切换间鼠标光标跳动的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将Easy NPC魔杖移至现有核心物品选项卡,而非新建选项卡。
- 新增猫姿势支持(除尾巴外的不同模型部件)。
- 通过在非必要时禁用发光效果,提升EasyNPCWand发光效果性能。
- 通过排除展示物、造物主、投掷物与刷怪笼等非生物实体,改进自定义实体检测。
- 改进猫品种处理。
6.1.1
- 通过重新验证实体类型修复 #612。
- 通过强制同步特定模型的帽子与头部图层修复 #610。
- 修复兽人材质。
- 通过将相关逻辑移至仅客户端,改进自定义模型支持与性能。
- 改进玩家皮肤的玩家到UUID映射缓存。
- 限制更改模型命令与逻辑仅适用于Doppler NPC。
6.1.0 ✨
此为重大版本更新。升级前请务必备份您的世界与NPC数据。 本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0之前版本的现有NPC及其配置数据可能无法正确加载,或需手动调整。
- 为支持新用例,内部数据格式与部分行为已重构。
🧩 新模块化结构
Easy NPC现拆分为三个独立模组:
- Easy NPC – 包含核心与配置界面的捆绑包,提供即插即用体验。
- Easy NPC: Core – 轻量级NPC运行时与逻辑,依赖极少。适用于服务器、整合包与开发者。
- Easy NPC: Configuration UI – 用于创建与编辑NPC的独立配置界面。可安装于需要UI的客户端。
🎯 为何如此变更?
- 允许服务器与整合包仅在服务端部署核心模组,实现更精简配置。
- 在无需UI时减少内存占用与加载时间。
- 通过分离UI与核心逻辑,加速开发与测试。
Easy NPC (Bundle) 6.8.4
on 2026 Feb 26Easy NPC (1.20.1) 更新日志
注意事项
本更新日志仅包含摘要性变更。 完整更新日志请前往 GitHub 历史记录 查阅。
注意:升级新版本前,请务必备份您的世界/NPC 数据! 更多信息请参阅 升级指南。
6.8.4
- 为 NPC 实体数据中的所有者变更与维度变更添加同步支持。
6.8.3
- 通过强制升级网络协议版本修复 #680(版本不匹配问题)。
- 通过重置名称标签的位置、旋转和大小修复 #679。
- 通过为根部旋转添加多状态滑动功能修复 #665。
- 通过添加选项禁用跟随鼠标光标,便于摆姿势,修复 #664。
- 通过增强对 X 和 Z 轴根部旋转的支持修复 #663。
- 通过添加潜行时使用 NPC 法杖快速旋转根部朝向玩家的功能修复 #661。
- 通过在交互处理器中增加移动工具检测,修复移动工具错误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品错误触发交互的问题。
- 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及名称标签位置问题。
- 通过调整偏移值修复史莱姆与恶魂 GUI 位置问题。
6.8.2
- 通过扩展
SafeMerchantData并添加 notifyTrade 避免崩溃,修复 #677。 - 新增进度数据支持,允许根据玩家交互与行为提升 NPC 等级。
- 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持原始模型使用变种纹理。
6.8.1
- 通过使用现有预设辅助方法而非自定义方法修复 #676。
6.8.0(新增 API 支持)
- 通过为无效网络数据包添加警告信息与额外检查修复 #667。
- 修复马刷怪蛋模型。
- 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
- 新增 NPC 基础类以增强 API 支持。
- 新增 NPC 原始类以支持高级 API 功能。
- 新增史莱姆与恶魂 NPC 类型。
- 新增自定义模型 API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,提升可维护性并为未来改进做准备。
6.7.1
- 通过为原版漏洞添加额外客户端检查修复 #657 与 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿动画修复 #650。
- 修复 canBeHitByProjectiles 的翻译问题(#648)。
- 通过添加
allowBypassInvulnerability配置选项,允许/禁止绕过 NPC 的无敌效果,修复 #645。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下位置不正确的问题。
- 修复对话框与配置 GUI 中名称标签意外显示的问题。
- 修复距离动作触发多个动作时未能正确执行的问题。
- 修复 NPC 预设相关问题。
- 修复猫与狼 NPC 的所有者数据未正确同步的问题。
- 新增预设浏览器,便于选择常用 NPC 预设。
- 新增预设 .snbt(文本)导出与导入功能,便于共享 NPC 预设。
- 重构现有 NPC 预设以使用新的 .snbt 格式。
- 重构刷怪笼系统,采用新预设格式以提升可维护性并为未来改进做准备。
6.6.2
- 通过重构缩放系统修复 #643。
- 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
- 新增 MID 与 MOUSE_OVER 名称标签可见模式,精细控制 NPC 名称显示。
- 新增基于队伍的名称标签可见性支持,兼容原版队伍系统。
6.6.1
- 通过重构显示属性的内部数据处理修复 #638。
6.6.0
- 通过使用专用线程池实现异步材质加载修复 #634。
- 修复材质加载阻塞渲染线程导致游戏卡顿的问题。
- 通过原子操作修复材质重载保护中的竞态条件。
- 修复远程材质下载时 HTTP 连接的资源泄漏问题。
- 修复 URL 验证垃圾信息,允许多个相同材质同时下载。
- 修复远程图像验证的异常处理,避免因无效 URL 导致崩溃。
- 修复 NPC 加载时出现的
defineId called for:警告信息。 - 重构材质加载架构,加入多层防御与速率限制机制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类转换为现代 Java 记录类,增强不可变性与线程安全性。
- 新增线程安全的会话服务器防刷机制,使用 ConcurrentHashMap。
- 新增全面的错误恢复机制,在失败时自动重置冷却时间。
- 改进材质加载,采用 2 线程池与 500ms 速率限制。
- 改进异常处理,为 IIOException 与 FileNotFoundException 添加特定捕获块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 通过为 Gradle 依赖项添加缓存改进 GitHub 工作流。
- 优化 Gradle 构建时间与清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型与事件修复 #632。
- 通过优化材质处理性能、缓存与内存占用修复 #629。
- 修复击杀命令对 NPC 无效的问题。
- 修复材质重载保护阻止缓存重载的问题。
- 修复远程图像验证器中的 WebP 验证错误(缺失 return 语句)。
- 重构材质处理逻辑,提升可维护性并为未来改进做准备。
- 新增基于时间的重载保护(60 秒),取代永久屏蔽机制。
- 新增材质处理的额外单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 功能。
- 通过改进剪刀实现方式提升与其他模组的兼容性,修复 #627。
- 修复使用旋转或移动模型部件时生动动画失效的问题(#625)。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增智能、默认、无三种姿势动画控制选项。
6.4.1
- 修复不同 NPC UUID 的界面切换逻辑,感谢
Spawnblade提供详细调查与修复建议(#626)。
6.4.0
- 通过改进对话数据验证与错误处理修复 #626。
- 通过重构渲染数据与渲染处理修复 #623。
- 通过确保自定义数据正确保存与加载修复 #622。
- 修复打开对话动作类型,允许从其他 NPC 打开对话。
- 通过为 ConditionDataSet 与 ActionDataSet 添加缺失的 equals 与 hashCode 方法修复哈希问题。
- 为 #622 新增自定义数据测试物品,便于测试自定义数据。
- 优化记录类并修复潜在的缺失数据问题。
6.3.0
- 重构配置 UI 专用组件并将其从核心模组中移除。
- 通过在发送至客户端前过滤对话数据修复对话数据问题。
- 修复对话编辑器布局问题并提升可用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,限制对话显示频率。
- 新增支持计分板与条件的新 NPC 预设。
- 通过移除冗余字段优化对话按钮数据格式。
6.2.0
- 修复对话内的字符串注入问题。
- 修复动作类型缺失翻译的问题。
- 新增计分板动作类型,支持增加、减少、设置计分板数值。
- 新增
@score(...)NPC 宏,在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮,添加指示器并提升可用性。
6.1.2
- 修复因缺少关闭容器数据包导致的容器与菜单同步问题。
- 修复某些情况下关闭按钮无效的问题。
- 修复屏幕切换时光标跳跃的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将 Easy NPC 法杖移至现有核心物品选项卡,而非创建新选项卡。
- 新增猫不同模型部件(尾巴除外)的姿势支持。
- 通过在不需要时禁用发光效果,优化 EasyNPCWand 发光性能。
- 通过排除显示器、造物主、投掷物与刷怪笼等非生物实体,优化自定义实体检测。
- 优化猫品种处理。
6.1.1
- 通过重新验证实体类型修复 #612。
- 通过强制同步特定模型的帽子与头部图层修复 #610。
- 修复兽人纹理。
- 通过将相关逻辑移至仅客户端,优化自定义模型支持与性能。
- 优化玩家皮肤的玩家到 UUID 映射缓存。
- 限制更改模型命令与逻辑仅适用于 Doppler NPC。
6.1.0 ✨
此为重大版本更新。升级前请务必备份您的世界与 NPC 数据。 本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新用例。
🧩 新模块化结构
Easy NPC 现拆分为三个独立模组:
- Easy NPC – 包含核心与配置 UI 的捆绑包,提供即插即用体验。
- Easy NPC: Core – 轻量级 NPC 运行时与逻辑,依赖极少,适用于服务器、整合包与开发者。
- Easy NPC: Configuration UI – 独立配置界面,用于创建与编辑 NPC,可安装于需要 UI 的客户端。
🎯 为何如此变更?
- 允许服务器与整合包仅在服务端部署 Core 模组,实现更精简设置。
- 在无需 UI 时减少内存占用与加载时间。
- 通过分离 UI 与核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.8.3
on 2026 Feb 18Easy NPC (1.20.1) 更新日志
注意事项
本更新日志仅包含摘要性变更。
完整更新日志请前往 GitHub 提交历史 查看。
注意:在更新至新版本前,请务必备份你的世界与NPC数据!
更多信息请参阅 升级指南。
6.8.3
- 通过升级网络协议版本强制校验版本不匹配问题,修复 #680。
- 通过重置命名牌的位置、旋转和大小,修复 #679。
- 为根部旋转添加多状态滑动支持,修复 #665。
- 添加选项以禁用跟随鼠标光标的自动朝向功能,便于调整姿势,修复 #664。
- 改进对 X 和 Z 轴根部旋转的支持,修复 #663。
- 在交互处理器中增加移动工具检测,防止移动工具误触发交互,修复相关问题。
- 在交互处理器中增加预设物品检测,防止预设物品误触发交互,修复相关问题。
- 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及命名牌位置问题。
- 通过调整偏移值,修复史莱姆与恶魂的 GUI 位置问题。
6.8.2
- 扩展
SafeMerchantData并加入 notifyTrade 方法以避免崩溃,修复 #677。 - 新增基于玩家交互与行为的 NPC 升级进度数据支持。
- 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
- 为
OriginalModelConfig添加withVariantTexture()选项,允许原始模型使用变体材质。
6.8.1
- 使用现有预设辅助方法替代自定义方法,修复 #676。
6.8.0(新增 API 支持)
- 添加无效网络数据包的警告信息与额外检查,修复 #667。
- 修复马刷怪蛋的模型显示问题。
- 为悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆和恼鬼添加姿势支持。
- 新增 NPC 基础类,以提供更好的 API 支持。
- 新增 NPC 原始类,用于高级 API 集成。
- 新增史莱姆与恶魂 NPC 类型。
- 新增自定义模型 API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,提升可维护性并为未来改进打下基础。
6.7.1
- 通过添加额外的客户端检查以规避原版漏洞,修复 #657 与 #656。
6.7.0
- 在 setupAnim 方法中实现狼腿部动画,修复 #650。
- 修正
canBeHitByProjectiles的翻译问题,修复 #648。 - 新增
allowBypassInvulnerability配置选项,用于控制是否允许绕过 NPC 的无敌状态,修复 #645。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上/下按钮在某些情况下位置不正确的问题。
- 修复命名牌在对话框与配置界面中意外显示的问题。
- 修复距离触发动作中多个动作未能正确触发的问题。
- 修复 NPC 预设相关问题。
- 修复猫与狼 NPC 的所有者数据未正确同步的问题。
- 新增预设浏览器,便于快速选择常用 NPC 预设。
- 新增预设 .snbt(文本)导出与导入功能,方便共享 NPC 预设。
- 将现有 NPC 预设重构为新的 .snbt 格式。
- 重构刷怪笼系统,采用新预设格式以提升可维护性并支持未来改进。
6.6.2
- 重构缩放系统,修复 #643。
- 修复重启/重载后缩放未正确更新碰撞箱与命名牌位置的问题。
- 新增 MID 与 MOUSE_OVER 命名牌可见性模式,实现对 NPC 名称显示的精细控制。
- 新增基于队伍的命名牌可见性支持,遵循原版队伍机制。
6.6.1
- 重构显示属性的内部数据处理逻辑,修复 #638。
6.6.0
- 通过专用线程池实现异步材质加载,修复 #634。
- 修复材质加载阻塞渲染线程导致游戏冻结的问题。
- 使用原子操作修复材质重载保护中的竞态条件。
- 修复远程材质下载时 HTTP 连接的资源泄漏问题。
- 修复 URL 验证重复触发问题,避免同一材质被多次同时下载。
- 修复无效 URL 导致崩溃的问题,改进远程图片验证的异常处理。
- 修复 NPC 加载时出现的
defineId called for:警告信息。 - 重构材质加载架构,加入多层防护与速率限制机制。
- 重构实体数据注册逻辑,提升可维护性。
- 将数据类转换为现代 Java 记录(records),增强不可变性与线程安全性。
- 使用 ConcurrentHashMap 添加线程安全的会话服务器垃圾信息防护。
- 添加全面的错误恢复机制,在失败时自动重置冷却时间。
- 改进材质加载性能:使用 2 线程池并设置 500ms 速率限制。
- 改进异常处理,为 IIOException 与 FileNotFoundException 添加专用捕获块。
6.5.2
- 修复村民职业与工作皮肤显示问题。
- 改进 GitHub 工作流,为 Gradle 依赖添加缓存。
- 优化 Gradle 构建时间与清理任务。
6.5.1
- 实现 ON_KILL 动作类型与事件,修复 #632。
- 优化材质处理性能、缓存与内存使用,修复 #629。
- 修复对 NPC 使用 kill 命令无效的问题。
- 修复驱逐后缓存无法重新加载的问题,完善材质重载保护。
- 修复远程图片验证器中的 WebP 验证漏洞(缺失 return 语句)。
- 重构材质处理逻辑,提升可维护性并支持未来改进。
- 添加基于时间的重载保护(60 秒),替代永久性屏蔽机制。
- 为材质处理添加额外的单元测试。
- 改进 Gradle 构建任务。
6.5.0
- ⚠️ 移除 jar-in-jar 捆绑方式,以提升模组兼容性与 API 能力。
- 改进剪刀功能实现,提升与其他模组的兼容性,修复 #627。
- 修复使用旋转或移动模型部件时动画异常的问题,修复 #625。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增更智能的姿势动画控制选项:smart(智能)、default(默认)、none(无)。
6.4.1
- 修复不同 NPC UUID 间的界面切换逻辑,感谢
Spawnblade提供详细调查与修复建议,修复 #626。
6.4.0
- 通过改进对话数据验证与错误处理,修复 #626。
- 通过重构渲染数据与渲染处理逻辑,修复 #623。
- 确保自定义数据能正确保存与加载,修复 #622。
- 修复“打开对话框”动作类型,使其能从其他 NPC 触发对话。
- 为 ConditionDataSet 与 ActionDataSet 添加缺失的 equals 与 hashCode 方法,修复哈希问题。
- 为 #622 添加自定义数据测试物品,便于测试自定义数据。
- 改进记录(records)结构,修复潜在的缺失数据问题。
6.3.0
- 将配置界面专用组件从核心模组中分离并重构。
- 在发送至客户端前过滤对话数据,修复对话数据问题。
- 修复对话编辑器布局问题并提升可用性。
- 为部分对话数据字段补充缺失的默认值。
- 新增对话优先级支持,用于控制对话执行顺序。
- 为对话与计分板动作添加条件支持。
- 为对话添加频率限制功能,控制对话显示频率。
- 新增支持计分板与条件的 NPC 预设。
- 精简对话按钮数据格式,移除冗余字段。
6.2.0
- 修复对话中的字符串注入问题。
- 补充动作类型的缺失翻译。
- 新增计分板动作类型,支持增加、减少或设定计分板数值。
- 新增
@score(...)NPC 宏,用于在对话中显示计分板数值。 - 添加额外的单元测试。
- 改进带指示器的旋钮按钮,提升可用性。
6.1.2
- 修复因缺少关闭容器数据包导致的容器与菜单同步问题。
- 修复某些情况下关闭按钮无效的问题。
- 修复界面切换时光标跳动的问题。
- 清理翻译文件,移除重复与已弃用的条目。
- 将 Easy NPC 法杖移至现有的核心物品栏,而非创建新栏位。
- 为猫添加除尾巴外各模型部件的姿势支持。
- 在无需时禁用 EasyNPCWand 的发光效果,提升性能。
- 改进自定义实体检测,排除非生物实体(如展示物、造物者、投掷物与刷怪笼)。
- 改进猫变种处理逻辑。
6.1.1
- 通过重新验证实体类型,修复 #612。
- 为特定模型强制同步帽子与头部图层,修复 #610。
- 修复兽人皮材质问题。
- 将相关逻辑移至仅客户端执行,提升自定义模型支持与性能。
- 优化玩家皮肤 UUID 映射的缓存机制。
- 限制模型更换命令与逻辑仅对 Doppler NPC 生效。
6.1.0 ✨
此为重大版本更新。更新前请务必备份你的世界与 NPC 数据。
本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需手动调整。
- 为支持新用例,内部数据格式与部分行为已重构。
🧩 全新模块化结构
Easy NPC 现拆分为三个独立模组:
- Easy NPC – 包含 Core 与 Configuration UI 的完整捆绑包,开箱即用。
- Easy NPC: Core – 轻量级 NPC 运行时与逻辑核心,依赖极少,适用于服务器、整合包与开发者。
- Easy NPC: Configuration UI – 独立的 NPC 创建与编辑配置界面,可单独安装于需要 UI 的客户端。
🎯 为何如此变更?
- 允许服务器与整合包仅在服务端部署 Core 模组,实现更精简的配置。
- 在无需 UI 的场景下降低内存占用并缩短加载时间。
- 通过分离 UI 与核心逻辑,加快开发与测试速度。




