Easy NPC (Bundle) 6.16.1
on 2026 May 20Easy NPC:核心版(1.21.1)更新日志
说明
本更新日志汇总了主要变更内容。
完整更新日志请参阅 [GitHub 历史记录][history]。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详情请查阅 [升级指南][upgrade_guide]。
6.16.0
- 通过提供禁用ESC键与对话框关闭按钮的选项,修复了问题 #732。
- 通过在交易界面等特定场景下避免自动关闭,修复了问题 #723。
- 新增通用对话框配置选项,允许用户自定义对话框行为。
- 新增对话框头像缩放与位置偏移选项。
- 补充缺失的本地化键值。
6.15.0(交易、玩家头颅、Epic Fight 及体验优化更新)
- 通过在客户端物种列表为空时重新同步物种数据,修复了问题 #731。
- 通过改进 Epic Fight 集成并启用实验性功能,修复了问题 #730。
- 通过确保正确保存交易使用次数,修复了问题 #729。
- 通过为玩家头颅添加自定义头颅支持,修复了问题 #728。
- 通过显示剩余交易次数,并支持手动与自动重置,修复了问题 #689。
- 通过新增交易配置界面及对自定义交易的更好支持,修复了问题 #218 和 #132。
- 通过在基础交易模式与普通/高级交易模式之间切换,修复了特定交易边缘情况。
- 修复了对话框按钮文字被截断的问题,完整文字将通过工具提示显示。
- 通过将动画状态与 Cobblemon 动画系统同步,修复了 Cobblemon 动画异常。
- 新增按交易定制的动作支持,允许用户在完成购买后触发指定动作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用信息展示。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·研磨石”,附带可触发动作。
- 清理测试文件。
6.14.0
- 通过确保修改数值时同步至客户端,修复了问题 #727。
- 通过为特定命令添加额外白名单,修复了问题 #726。
- 通过为 Cobblemon NPC 添加基础 Cobblemon 支持,修复了问题 #686、#389、#304 和 #211。
- 通过调整对话框贴图与界面布局,修复了对话框错位与导航问题。
- 通过修正旋转逻辑与枢轴点计算,修复了 X 轴与 Z 轴根部旋转异常。
- 新增基础 Cobblemon 支持,包含用于测试的自定义 NPC 类型与模型。
6.13.0(安全与权限更新)
说明:本次更新强化了多人游戏环境下的安全检查与权限控制。
其支持执行服务端命令,若被恶意利用则可能存在潜在风险。
本次更新将模型根部数据与逻辑,从其余模型部件的数据与逻辑中分离出来,
这意味着现有 NPC 的根部旋转与缩放值可能被重置为默认值。
- 通过将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,修复了问题 #725。
- 通过支持 .sbnt 文件作为本地预设,修复了问题 #722。
- 通过为对话框与配置界面背景添加专用资源,修复了问题 #675。
- 通过新增安全检查与权限系统,修复了问题 #605、#532 和 #529。
- 通过新增实验性 API 文档与自定义模型支持示例,修复了问题 #469 和 #311。
- 通过移除冗余背景渲染,修复了配置界面背景重复绘制问题。
- 通过调整碰撞箱,修复了恶魂与史莱姆的碰撞箱及名称标签位置异常。
- ⚠️ 新增安全检查机制,以防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、可定制性与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的贴图集。
- 为未来可能集成 Luck Perms(如问题 #712 所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行整体清理与优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了问题 #714。
- 通过将每 NPC 级别的 INFO 日志级别降级为 DEBUG,并整合冗余警告信息,修复了问题 #713。
- 通过缩减启动/配置阶段过大的日志输出量,修复了问题 #711。
- 修复 NBT 校验防护机制,防止生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中新增模型部件名称常量,以确保混入(Mixin)代码中的一致性调用。
- 通过增强筛选逻辑与优化数据结构,改进 RenderEntityTypeSupportConfig,从而提升性能与可维护性。
- 移除输出大型数据结构的冗长调试日志。
6.11.1
- 通过改进可恢复交易数据的向后兼容解析逻辑,修复了问题 #710。
6.11.0
- 修复了新自定义图层系统与手部渲染导致的 #703 渲染问题。
- 通过为无效交易报价增加额外防护措施与日志记录,修复了问题 #701。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 通过将玩家检测逻辑移回仅服务端执行,修复头部追踪异常。
- 优化 CustomLookAtPlayerGoal,以更好处理边界情况并减少抖动。
- 修复多普勒 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加入多个实体渲染器。 - 新增专属“逃跑目标”配置标签页,支持设置针对爬行者、怪物、生物、玩家、村民及阳光的逃跑目标。
- 在跟随目标标签页中新增
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 魔杖+潜行”快捷旋转功能,使 NPC 根部朝向玩家,修复了问题 #661。
- 通过在交互处理器中增加移动工具检测,修复移动工具错误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品错误触发交互的问题。
- 通过调整碰撞箱与眼睛高度计算,修复恶魂与史莱姆的碰撞箱及名称标签位置异常。
- 通过调整偏移值,修复恶魂与史莱姆 GUI 位置异常。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了问题 #677。 - 新增基于玩家互动与行为的 NPC 升级进度数据支持。
- 新增全局 NPC 追踪系统,便于跨世界统一管理与调试 NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原始模型上使用变体纹理。
6.8.1
- 通过复用现有预设辅助方法而非自定义实现,修复了问题 #676。
6.8.0(新增 API 支持)
- 通过为无效网络数据包添加警告信息与额外校验,修复了问题 #667。
- 修复马匹生成蛋模型。
- 修复所有支持 NPC 类型(含悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼)的姿势支持。
- 新增 NPC 基础类,以提升 API 支持能力。
- 新增 NPC 原始类,以满足高级 API 使用需求。
- 新增史莱姆与恶魂 NPC 类型。
- 新增自定义模型 API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性及未来扩展能力。
6.7.1
- 通过在客户端增加额外校验以应对原版漏洞,修复了问题 #657 与 #656。
6.7.0
- 通过在 setupAnim 方法中实现狼腿动画,修复了问题 #650。
- 通过修复
canBeHitByProjectiles的本地化翻译,修复了问题 #648。 - 通过新增
allowBypassInvulnerability配置选项以控制是否允许绕过 NPC 无敌状态,修复了问题 #645。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不准确的问题。
- 修复对话框与配置界面中意外显示名称标签的问题。
- 修复距离触发动作中多个动作未被正确触发的问题。
- 修复 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 的线程安全会话服务器防刷机制。
- 新增全面的错误恢复机制,在失败时自动重置冷却时间。
- 优化纹理加载,采用双线程池与 500ms 速率限制。
- 改进异常处理,为 IIOException 与 FileNotFoundException 设置专门的捕获块。
6.5.2
- 修复村民职业与工作皮肤显示异常问题。
- 通过为 Gradle 依赖添加缓存,优化 GitHub 工作流。
- 优化 Gradle 构建耗时与清理任务。
6.5.1
- 通过实现 ON_KILL 动作类型与事件,修复了问题 #632。
- 通过优化纹理处理性能、缓存策略与内存占用,修复了问题 #629。
- 修复击杀命令对 NPC 不生效的问题。
- 修复纹理重载防护机制阻止缓存淘汰后重新加载的问题。
- 修复远程图像校验器中 WebP 校验的返回语句缺失 Bug。
- 重构纹理处理逻辑,以提升可维护性与未来扩展能力。
- 新增基于时间的重载防护(60 秒),替代永久性屏蔽机制。
- 新增纹理处理相关单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除 Jar-in-Jar 打包方式,以提升模组兼容性与 API 能力。
- 通过改进剪裁(scissor)实现,修复了问题 #627,增强与其他模组的兼容性。
- 修复使用旋转或移动的模型部件时生动动画异常问题。
- 修复使用缩放模型部件时默认动画被取消的问题。
- 新增更优的姿势动画控制,提供智能、默认与无动画三种选项。
6.4.1
- 通过改进不同 NPC UUID 下的界面切换逻辑,修复了问题 #626,感谢
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 映射缓存,提升玩家皮肤加载效率。
- 将更换模型命令与逻辑限定为仅多普勒 NPC 可用。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界存档与 NPC 数据。
本版本包含大量改进、优化与内部重构,与早期版本 并非完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的 NPC 及其配置数据,可能无法正常加载,或需手动调整。
- 内部数据格式与部分行为已被重构,以支持新的使用场景。
🧩 新模块化结构
Easy NPC 现已拆分为三个独立模组:
- Easy NPC——包含核心与配置界面的完整捆绑包,开箱即用。
- **Easy NPC:核心版
... [内容过长已截断]
Easy NPC (Bundle) 6.16.1
on 2026 May 20Easy NPC:核心版(1.21.1)更新日志
说明
本更新日志汇总了主要变更内容。
完整更新日志请参阅 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多升级相关信息,请查阅 升级指南。
6.16.0
- 通过提供禁用对话框ESC键与关闭按钮的选项,修复了#732问题。
- 通过在交易界面等特定场景下避免自动关闭,修复了#723问题。
- 新增通用对话框配置选项,允许用户自定义对话框行为。
- 新增头像缩放与位置偏移选项,用于调整对话框中头像显示。
- 补充缺失的本地化键值。
6.15.0(交易、玩家头颅、Epic Fight 及体验优化更新)
- 通过在客户端物种列表为空时重新同步物种数据,修复了#731问题。
- 通过改进Epic Fight整合并启用实验性功能,修复了#730问题。
- 通过确保交易使用次数被正确存储,修复了#729问题。
- 通过为玩家头颅添加自定义头颅支持,修复了#728问题。
- 通过显示剩余交易次数,并支持手动与自动重置,修复了#689问题。
- 通过新增交易配置界面及对自定义交易的更好支持,修复了#218与#132问题。
- 通过在基础交易模式与普通/高级交易模式间切换,修复了特定交易边缘情况。
- 修复了对话框按钮文字被截断的问题,完整文本可通过悬停提示查看。
- 通过将动画状态与Cobblemon动画系统同步,修复了Cobblemon动画异常问题。
- 新增按交易定制的操作功能,允许用户在完成购买后触发指定操作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息展示。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增格里塞尔达·磨石(Griselda Grindstone)示例商人,附带可触发操作。
- 清理测试文件。
6.14.0
- 通过确保修改数值时同步至客户端,修复了#727问题。
- 通过为特定命令添加额外白名单,修复了#726问题。
- 通过为Cobblemon NPC添加基础支持,修复了#686、#389、#304与#211问题。
- 通过调整对话框贴图与界面布局,修复了对话框错位与导航问题。
- 通过修正旋转逻辑与枢轴点计算,修复了X轴与Z轴根部旋转异常。
- 新增基础Cobblemon支持,含专用于测试的自定义NPC类型与模型。
6.13.0(安全与权限更新)
说明:本次更新强化了多人游戏环境下的安全校验与权限管理。
部分服务器命令具备潜在危险性,若遭恶意利用可能引发风险。
本次更新将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,
因此可能导致已有NPC的根部旋转与缩放值重置为默认值。
- 通过将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,修复了#725问题。
- 通过支持本地预设
.sbnt文件,修复了#722问题。 - 通过为对话框与配置界面背景添加专用资源,修复了#675问题。
- 通过引入全新安全校验与权限系统,修复了#605、#532与#529问题。
- 通过新增实验性API文档与自定义模型支持示例,修复了#469与#311问题。
- 通过移除冗余背景渲染,修复了配置界面背景重复绘制问题。
- 通过调整包围盒,修复了幽灵与史莱姆的碰撞箱及名称标签位置异常。
- ⚠️ 新增安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置UI专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成Luck Perms(如#712所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行整体清理与优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了#714问题。
- 通过将每NPC级别的INFO日志降级为DEBUG级别,并合并冗余警告信息,修复了#713问题。
- 通过缩减启动/配置阶段过大的日志输出量,修复了#711问题。
- 修复NBT校验防护机制,防止生产环境中不必要的缓冲区分配。
- 在EasyNPCModelManager中新增模型部件名称常量,确保混入代码中的一致性调用。
- 通过增强筛选逻辑并优化数据结构,改进RenderEntityTypeSupportConfig,提升性能与可维护性。
- 移除输出大型数据结构的冗长调试日志。
6.11.1
- 通过改进可恢复交易数据的向后兼容解析,修复了#710问题。
6.11.0
- 通过适配新的自定义图层系统与手部渲染逻辑,修复了#703渲染问题。
- 通过为无效交易报价增加额外防护措施与日志记录,修复了#701问题。
- 修复智能动画在头部位置被修改时无法正常工作的问题。
- 通过将玩家检测逻辑移回服务端执行,修复头部追踪异常。
- 优化CustomLookAtPlayerGoal,更好地处理边界情况并减少抖动。
- 修复多普勒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接入各类实体渲染器。 - 新增专用“逃亡目标”配置页,支持针对爬行者、怪物、生物、玩家、村民及阳光设置逃亡目标。
- 在跟随目标页中新增
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问题。
- 通过在交互处理器中增加移动工具检测,修复移动工具误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品误触发交互的问题。
- 通过调整包围盒与眼睛高度计算,修复幽灵与史莱姆的碰撞箱及名称标签位置异常。
- 通过调整偏移值,修复幽灵与史莱姆GUI界面位置异常。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了#677问题。 - 新增进度数据支持,可根据玩家互动与行为为NPC升级。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原版模型上使用变体纹理。
6.8.1
- 通过复用现有预设辅助方法而非自定义实现,修复了#676问题。
6.8.0(新增API支持)
- 通过为非法网络数据包添加警告信息与额外校验,修复了#667问题。
- 修复马匹生成蛋模型。
- 修复Allay、鸡、苦力怕、狐狸、幽灵、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
- 新增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)。
- 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与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问题验证与自定义数据快速测试。
- 优化记录类(record)并修复潜在的数据缺失问题。
6.3.0
- 重构配置UI专属组件,并将其从核心模组中移除。
- 修复对话框数据,在发送至客户端前先行过滤。
- 修复对话框编辑器布局问题,提升易用性。
- 修复部分对话框数据字段缺失默认值的问题。
- 新增对话框优先级支持,用于控制对话框执行顺序。
- 新增对话框与计分板动作的条件支持。
- 新增对话框频率支持,限制对话框显示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话框按钮数据格式,移除冗余字段。
6.2.0
- 修复对话框内字符串注入漏洞。
- 修复动作类型缺失本地化翻译的问题。
- 新增计分板动作类型,支持增加、减少、设置计分板数值。
- 新增
@score(...)NPC宏,可在对话框中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮,增加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题,补全缺失的关闭容器数据包。
- 修复关闭按钮在某些情况下失效的问题。
- 修复界面切换期间鼠标光标异常跳跃的问题。
- 修复翻译文件,移除重复及已弃用条目。
- 将Easy NPC魔杖移至现有核心物品栏,而非新建独立栏位。
- 新增猫形NPC姿势支持(尾部除外)。
- 优化EasyNPCWand发光效果性能,仅在需要时启用。
- 优化自定义实体检测,排除显示实体、标记实体、投掷物与刷怪笼等非生物实体。
- 优化猫形变体处理逻辑。
6.1.1
- 通过重新校验实体类型,修复了#612问题。
- 通过强制同步特定模型的帽子与头部图层,修复了#610问题。
- 修复兽人纹理问题。
- 通过将相关逻辑迁移至客户端执行,优化自定义模型支持与性能。
- 优化玩家至UUID映射缓存,提升玩家皮肤加载效率。
- 限定更换模型命令与逻辑仅对多普勒NPC生效。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界存档及NPC数据。
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0版本之前的NPC及其配置数据可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新应用场景。
🧩 全新模块化结构
Easy NPC现已拆分为三个独立模组:
- Easy NPC——整合包,同时包含核心版与配置UI,开箱即用。
- Easy NPC:核心版——轻量级运行时与NPC逻辑,依赖极少,适用于服务器、模组包及开发者。
- Easy NPC:配置UI——独立配置界面,用于创建与编辑NPC,仅需安装于需使用UI的客户端。
🎯 此次变更原因?
- 服务器与模组包可仅在服务端部署核心版,实现精简配置。
- 当无需UI时,可降低内存占用与加载耗时。
- 分离UI与核心逻辑,加快开发与测试速度。
Easy NPC (Bundle) 6.16.0
on 2026 May 20Easy NPC(1.20.1)更新日志
注意事项
本更新日志仅汇总了主要变更内容。
如需查看完整更新日志,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详细信息请参阅 升级指南。
6.16.0
- 通过提供禁用ESC键与对话框关闭按钮的选项,修复了#732问题。
- 通过在交易界面等特定场景下避免自动关闭,修复了#723问题。
- 新增通用对话框配置选项,允许用户自定义对话框行为。
- 新增头像缩放与位置偏移选项,用于调整对话框中头像显示效果。
- 补充缺失的本地化键值。
6.15.0(交易系统、玩家头颅、Epic Fight整合及体验优化)
- 通过在客户端物种列表为空时重新同步物种数据,修复了#731问题。
- 通过改进Epic Fight整合并启用实验性功能,修复了#730问题。
- 通过确保交易使用次数被正确存储,修复了#729问题。
- 通过为玩家头颅添加自定义头颅支持,修复了#728问题。
- 通过显示剩余交易次数,并支持手动与自动重置,修复了#689问题。
- 通过新增交易配置界面及对自定义交易的更好支持,修复了#218与#132问题。
- 通过在基础交易模式与普通/高级交易模式之间切换,修复了特定交易边缘情况。
- 修复了对话框按钮文字被截断的问题(完整文字可通过悬停提示查看)。
- 通过将动画状态与Cobblemon动画系统同步,修复了Cobblemon动画异常问题。
- 新增按交易独立配置的动作,允许用户在完成购买后触发指定动作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息展示。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·研磨石”,附带可触发动作。
- 清理测试文件。
6.14.0(Cobblemon支持与对话框优化)
- 通过确保修改数值时能同步至客户端,修复了#727问题。
- 通过为特定命令添加额外白名单,修复了#726问题。
- 通过为Cobblemon NPC添加基础Cobblemon支持,修复了#686、#389、#304与#211问题。
- 通过调整对话框贴图与界面布局,修复了对话框错位与导航问题。
- 通过修正旋转逻辑与轴心点计算,修复了X轴与Z轴根部旋转异常。
- 新增基础Cobblemon支持,包含专用于测试的自定义NPC类型与模型。
6.13.0(安全与权限更新)
注意事项:本次更新增强了多人游戏环境下的安全校验与权限控制。
部分服务器命令具备潜在风险,若被恶意利用可能造成严重后果。
本次更新将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,
因此可能导致现有NPC的根部旋转与缩放值被重置为默认值。
- 通过将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,修复了#725问题。
- 通过支持将.sbnt文件作为本地预设,修复了#722问题。
- 通过为对话框与配置界面背景添加专用资源,修复了#675问题。
- 通过新增安全校验与权限系统,修复了#605、#532与#529问题。
- 通过新增实验性API文档与自定义模型支持示例,修复了#469与#311问题。
- 通过移除冗余背景渲染,修复了配置界面背景重复绘制问题。
- 通过调整碰撞箱,修复了恶魂碰撞箱与名称标签位置异常问题。
- ⚠️ 新增安全校验机制,以防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、定制性与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的贴图集。
- 为未来可能集成Luck Perms(如#712所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行整体清理与优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了#714问题。
- 通过将每NPC级别的INFO级日志降级为DEBUG级,并合并冗余警告信息,修复了#713问题。
- 通过缩减启动/配置阶段的日志输出量,修复了#711问题。
- 修复NBT校验防护机制,防止生产环境中不必要的缓冲区分配。
- 在EasyNPCModelManager中新增模型部件名称常量,确保混入代码中的一致性调用。
- 通过增强筛选逻辑与优化数据结构,改进RenderEntityTypeSupportConfig,以提升性能与可维护性。
- 移除会大量输出数据结构的冗长调试日志。
6.11.0
- 通过新自定义图层系统与手部渲染修复#703渲染问题。
- 通过为无效交易报价增加额外防护与日志记录,修复了#701问题。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 通过将玩家检测逻辑移回服务端执行,修复头部追踪问题。
- 改进CustomLookAtPlayerGoal,使其更好地处理边缘情况并减少抖动。
- 修复多普勒NPC持续保留其手持物品的问题。
- 优化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问题。
- 通过为逃离玩家、村民、怪物等新增额外逃离目标,修复了#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问题。
- 通过在交互处理器中增加移动工具检测,修复移动工具错误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品错误触发交互的问题。
- 通过调整碰撞箱与眼睛高度计算,修复史莱姆与恶魂的碰撞箱及名称标签位置异常。
- 通过调整偏移值,修复史莱姆与恶魂GUI位置异常。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了#677问题。 - 新增基于玩家互动与行为的NPC升级进度数据支持。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原版模型上使用变体纹理。
6.8.1
- 通过复用现有预设辅助方法而非自定义实现,修复了#676问题。
6.8.0(新增API支持)
- 通过为无效网络数据包添加警告信息与额外校验,修复了#667问题。
- 修复马匹生成蛋模型。
- 修复所有受支持NPC类型(包括悦灵、鸡、爬行者、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼)的姿态支持。
- 新增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的线程安全会话服务器防刷机制。
- 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载,采用双线程池与500毫秒速率限制。
- 优化异常处理,针对IIOException与FileNotFoundException分别设置捕获块。
6.5.2
- 修复村民职业与工作皮肤显示异常问题。
- 通过为Gradle依赖添加缓存,优化GitHub工作流。
- 优化Gradle构建时间与清理任务。
6.5.1
- 通过实现ON_KILL动作类型与事件,修复了#632问题。
- 通过优化纹理处理性能、缓存策略与内存占用,修复了#629问题。
- 修复击杀命令对NPC无效的问题。
- 修复纹理重载防护机制阻止缓存淘汰后重新加载的问题。
- 修复远程图像验证器中WebP校验的Bug(缺失return语句)。
- 重构纹理处理逻辑,以提升可维护性与未来拓展性。
- 新增基于时间的重载防护(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问题及自定义数据的快速测试。
- 优化记录类(record)并修复潜在的缺失数据问题。
6.3.0
- 重构配置界面专属组件,并将其从核心模组中移除。
- 通过在发送至客户端前过滤对话框数据,修复对话框数据问题。
- 修复对话框编辑器布局问题并提升易用性。
- 修复部分对话框数据字段缺少默认值的问题。
- 新增对话框优先级支持,用于控制对话框执行顺序。
- 新增对话框与记分板动作的条件支持。
- 新增对话框频率支持,用于限制对话框显示频次。
- 新增支持记分板与条件功能的NPC预设。
- 通过移除冗余字段,优化对话框按钮数据格式。
6.2.0
- 修复对话框内的字符串注入漏洞。
- 修复动作类型缺失本地化的问题。
- 新增记分板动作类型,支持增加、减少或设定记分板数值。
- 新增
@score(...)NPC宏,用于在对话框中显示记分板数值。 - 新增额外单元测试。
- 优化旋转按钮,增加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题,补全缺失的关闭容器数据包。
- 修复某些情况下关闭按钮失效的问题。
- 修复屏幕切换过程中鼠标光标跳跃的问题。
- 修复本地化文件,移除重复及已弃用条目。
- 将Easy NPC魔杖移至现有核心物品标签页,而非新建标签页。
- 新增猫形NPC姿态支持(尾部除外)。
- 通过在非必要时禁用发光效果,优化EasyNPCWand发光性能。
- 通过排除显示实体、标记实体、投掷物与刷怪蛋等非生物实体,优化自定义实体检测。
- 优化猫形变体处理逻辑。
6.1.1
- 通过重新校验实体类型,修复了#612问题。
- 通过强制同步特定模型的帽子与头部图层,修复了#610问题。
- 修复兽人纹理。
- 通过将相关逻辑迁移至客户端执行,优化自定义模型支持与性能。
- 优化玩家至UUID映射缓存,提升玩家皮肤加载效率。
- 将更换模型命令与逻辑限定为仅适用于多普勒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.16.0
on 2026 May 20Easy NPC(1.20.1)更新日志
注意事项
本更新日志仅汇总了主要变更内容。
如需查看完整更新日志,请访问 GitHub 历史记录。
注意:更新至新版本前,请务必备份您的世界存档及NPC数据!
更多详细信息请参阅 升级指南。
6.16.0
- 通过提供禁用ESC键与对话框关闭按钮的选项,修复了#732问题。
- 通过在交易界面等特定场景下避免自动关闭,修复了#723问题。
- 新增通用对话框配置选项,允许用户自定义对话框行为。
- 新增对话框头像缩放与位置偏移选项。
- 补充缺失的本地化键值。
6.15.0(交易系统、玩家头颅、Epic Fight整合及体验优化)
- 通过在客户端物种列表为空时重新同步物种数据,修复了#731问题。
- 通过改进Epic Fight整合并启用实验性功能,修复了#730问题。
- 通过确保交易使用次数被正确保存,修复了#729问题。
- 通过为玩家头颅添加自定义头颅支持,修复了#728问题。
- 通过显示剩余交易次数,并支持手动与自动重置,修复了#689问题。
- 通过新增交易配置界面及对自定义交易的更好支持,修复了#218与#132问题。
- 通过在基础交易模式与普通/高级交易模式间切换,修复了特定交易边缘情况。
- 修复了对话框按钮文字被截断的问题(完整文字可通过悬停提示查看)。
- 通过将动画状态与Cobblemon动画系统同步,修复了Cobblemon动画异常问题。
- 新增按交易定制的操作功能,允许用户在完成购买后触发指定操作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·磨石匠”,附带可执行操作。
- 清理测试文件。
6.14.0(Cobblemon支持与对话框优化)
- 通过确保修改数值时能同步至客户端,修复了#727问题。
- 通过为特定命令添加额外白名单,修复了#726问题。
- 通过为Cobblemon NPC添加基础Cobblemon支持,修复了#686、#389、#304与#211问题。
- 通过调整对话框精灵图与界面布局,修复了对话框错位与导航问题。
- 通过修正旋转逻辑与轴心点计算,修复了X轴与Z轴根部旋转异常问题。
- 新增基础Cobblemon支持,包含用于测试的自定义NPC类型与模型。
6.13.0(安全与权限更新)
注意事项:本次更新增强了多人游戏环境下的安全检查与权限控制。
该更新允许执行服务端指令,若被恶意利用可能带来潜在风险。
本次更新将模型根部数据与逻辑从其余模型部件的数据与逻辑中分离,这意味着现有NPC的根部旋转与缩放值可能被重置为默认值。
- 通过将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,修复了#725问题。
- 通过支持以.sbnt文件作为本地预设,修复了#722问题。
- 通过为对话框与配置界面背景添加专用资源,修复了#675问题。
- 通过引入全新的安全检查与权限系统,修复了#605、#532与#529问题。
- 通过新增面向自定义模型支持的实验性API文档与示例,修复了#469与#311问题。
- 通过移除冗余的背景渲染,修复了配置界面背景重复绘制问题。
- 通过调整边界框,修复了幽灵怪碰撞箱与名称标签位置异常问题。
- ⚠️ 新增安全检查机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 将动态对话框背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成Luck Perms(如#712所述)做好权限系统准备。
- 针对配置界面渲染与资源进行常规代码清理与性能优化。
6.12.0
- 通过基于原版模型对自定义模型部件列表增加额外校验,修复了#714问题。
- 通过将每NPC级别的INFO日志等级降级为DEBUG,并合并冗余警告信息,修复了#713问题。
- 通过缩减启动/配置日志输出体积,修复了#711问题。
- 修复NBT校验守卫机制,防止生产环境中不必要的缓冲区分配。
- 在EasyNPCModelManager中新增模型部件名称常量,确保混入代码中的一致调用。
- 通过增强过滤逻辑与优化数据结构,改进RenderEntityTypeSupportConfig,提升性能与可维护性。
- 移除会大量输出数据结构的冗长调试日志。
6.11.0
- 通过新自定义图层系统与手部渲染修复#703渲染问题。
- 通过为无效交易报价增加额外防护措施与日志记录,修复了#701问题。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 通过将玩家检测逻辑移回服务端,修复头部追踪异常。
- 优化CustomLookAtPlayerGoal,更好地处理边缘情况并减少抖动。
- 修复多普勒NPC持续持有手中物品的问题。
- 改进PoseManager日志消息。
- 更新Logo为全新设计。
6.10.0
- 通过切换至
DEFAULT原版姿态时清空模型部件旋转/位置,修复了#695问题。 - 通过仅在玩家处于空闲状态时应用锁定旋转与姿态动画,修复了#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集成至各类实体渲染器中。 - 新增专属
逃离目标配置页,支持设置逃离爬行者、怪物、生物、玩家、村民及阳光的目标。 - 在跟随目标页中新增
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问题。
- 通过在交互处理器中增加移动工具检测,修复移动工具错误触发交互的问题。
- 通过在交互处理器中增加预设物品检测,修复预设物品错误触发交互的问题。
- 通过调整边界框与眼睛高度计算,修复史莱姆与幽灵怪碰撞箱及名称标签位置异常问题。
- 通过调整偏移值,修复史莱姆与幽灵怪GUI位置异常问题。
6.8.2
- 通过扩展
SafeMerchantData并添加notifyTrade方法避免崩溃,修复了#677问题。 - 新增基于玩家互动与行为的NPC等级成长进度数据支持。
- 新增全局NPC追踪系统,便于跨世界管理与调试NPC。
- 在
OriginalModelConfig中新增withVariantTexture()选项,支持为原始模型使用变体纹理。
6.8.1
- 通过复用现有预设辅助方法而非自定义实现,修复了#676问题。
6.8.0(新增API支持)
- 通过为无效网络数据包添加警告信息与额外校验,修复了#667问题。
- 修复马匹生成蛋模型。
- 修复所有受支持NPC类型(含悦灵、鸡、苦力怕、狐狸、幽灵怪、马、灾厄村民、铁傀儡、史莱姆与恼鬼)的姿态支持。
- 新增NPC基类,以强化API支持。
- 新增NPC原始类,以支持更高级的API功能。
- 新增史莱姆与幽灵怪NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性与未来拓展性。
6.7.1
- 通过在客户端增加额外校验以应对原版Bug,修复了#657与#656问题。
6.7.0
- 通过在setupAnim方法中实现狼腿部动画,修复了#650问题。
- 修复
canBeHitByProjectiles翻译问题。 - 通过新增
allowBypassInvulnerability配置选项以控制NPC是否可绕过无敌状态,修复了#645问题。 - 修复小宽度下删除按钮仍显示标签的问题。
- 修复上/下按钮在某些情况下定位不正确的问题。
- 修复对话框与配置界面中错误显示名称标签的问题。
- 修复距离触发动作中多个动作未被正确触发的问题。
- 修复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的线程安全会话服务器防刷保护。
- 新增全面的错误恢复机制,在失败时自动重置冷却时间。
- 通过双线程池与500毫秒速率限制提升纹理加载性能。
- 通过为IIOException与FileNotFoundException设置专门捕获块,优化异常处理。
6.5.2
- 修复村民职业与工作皮肤显示异常问题。
- 通过为Gradle依赖添加缓存,优化GitHub工作流。
- 优化Gradle构建时间与清理任务。
6.5.1
- 通过实现ON_KILL动作类型与事件,修复了#632问题。
- 通过优化纹理处理性能、缓存机制与内存占用,修复了#629问题。
- 修复NPC击杀指令失效问题。
- 修复纹理重载防护机制阻止缓存驱逐后重载的问题。
- 修复远程图像验证器中WebP校验Bug(缺失return语句)。
- 重构纹理处理逻辑,以提升可维护性与未来拓展性。
- 新增基于时间的重载防护(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。
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.15.1
on 2026 May 17Easy NPC:核心版(1.21.11)更新日志
说明
本更新日志汇总了主要变更内容。
如需完整更新记录,请访问 [GitHub 历史记录][history]。
注意:升级至新版本前,请务必备份您的世界存档及NPC数据!
更多详情请参阅 [升级指南][upgrade_guide]。
6.15.1
- 通过继承正确的基类修复了问题 #735。
- 通过手动生成测试,修复了多个与 26.1.2 版本相关的特定问题。
6.15.0(交易、玩家头颅、史诗战斗及体验优化更新)
- 若客户端物种列表为空,则通过重新同步物种数据修复问题 #731。
- 通过增强史诗战斗(Epic Fight)集成并启用实验性功能,修复问题 #730。
- 确保交易使用次数被正确存储,修复问题 #729。
- 新增对玩家头颅的自定义头颅支持,修复问题 #728。
- 显示剩余交易次数,并支持手动与自动重置,修复问题 #689。
- 通过新增交易配置界面及对自定义交易的更好支持,修复问题 #218 和 #132。
- 通过在基础交易模式与普通/高级交易模式之间切换,修复特定交易边缘情况。
- 修复对话按钮文字被截断的问题,同时以工具提示显示完整文本。
- 通过将动画状态与 Cobblemon 动画系统同步,修复 Cobblemon 动画异常。
- 新增每项交易专属动作,允许用户在完成购买后触发指定动作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·研磨石”(Griselda Grindstone),附带动作示例。
- 清理测试文件。
6.14.0
- 修改数值时确保同步至客户端,修复问题 #727。
- 新增特定命令的额外白名单,修复问题 #726。
- 通过为 Cobblemon NPC 添加基础支持,修复问题 #686、#389、#304 和 #211。
- 调整对话精灵图与界面布局,修复对话错位及导航问题。
- 修正旋转逻辑与枢轴点计算,修复 X 轴与 Z 轴根部旋转异常。
- 新增基础 Cobblemon 支持,包括用于测试的自定义 NPC 类型与模型。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全校验与权限控制。
其支持执行服务端命令,若被恶意利用则可能存在潜在风险。
本次更新将模型根部数据与逻辑从其余模型部件的数据与逻辑中分离,这意味着现有 NPC 的根部旋转与缩放值可能被重置为默认值。
- 将模型根部数据与逻辑从其余模型部件的数据与逻辑中分离,修复问题 #725。
- 支持将 .sbnt 文件作为本地预设,修复问题 #722。
- 为对话与配置界面背景新增专用资源,修复问题 #675。
- 通过新增安全校验与权限系统,修复问题 #605、#532 与 #529。
- 通过新增实验性 API 文档与自定义模型支持示例,修复问题 #469 与 #311。
- 移除冗余背景渲染,修复配置界面背景重复绘制问题。
- 调整包围盒,修复恶魂(Ghast)与史莱姆(Slime)的碰撞箱及名称标签位置问题。
- ⚠️ 新增安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 以静态对话界面背景替代动态背景,提升性能、可定制性与兼容性。
- 以静态配置界面背景替代动态背景,提升性能。
- 重构配置界面专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成 LuckPerms(如问题 #712 所述)做好权限系统准备。
- 对配置界面渲染与资源相关代码进行整体清理与优化。
6.12.0
- 针对原版模型,新增自定义模型部件列表的额外校验,修复问题 #714。
- 将每个 NPC 的 INFO 级日志降级为 DEBUG 级,并整合冗余警告信息,降低日志冗余度,修复问题 #713。
- 缩减启动/配置阶段过大的日志输出量,修复问题 #711。
- 优化 NBT 校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中添加模型部件名称常量,确保混入(mixin)代码中的一致使用。
- 通过增强过滤逻辑并优化数据结构,改进 RenderEntityTypeSupportConfig,提升性能与可维护性。
- 移除大量转储数据结构的冗长调试日志。
6.11.1
- 优化可恢复交易数据的向后兼容解析逻辑,修复问题 #710。
6.11.0
- 修复新自定义图层系统与手部渲染导致的渲染问题 #703。
- 为无效交易报价新增额外防护措施与日志记录,修复问题 #701。
- 修复智能动画在头部位置被修改时无法正常工作的问题。
- 将玩家检测逻辑移回服务端,修复头部追踪异常。
- 改进 CustomLookAtPlayerGoal,更好地处理边界情况并减少抖动。
- 修复多普勒 NPC(Doppler NPCs)持续保留手持物品的问题。
- 优化 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。
- 新增针对玩家、村民、怪物等的额外逃亡(Flee)目标,修复问题 #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。
- 在交互处理器中增加移动工具检测,防止其错误触发交互,修复该问题。
- 在交互处理器中增加预设物品检测,防止其错误触发交互,修复该问题。
- 调整包围盒与眼睛高度计算,修复史莱姆与恶魂的碰撞箱及名称标签位置问题。
- 调整偏移值,修复史莱姆与恶魂的 GUI 位置问题。
6.8.2
- 为
SafeMerchantData新增notifyTrade方法以避免崩溃,修复问题 #677。 - 新增基于玩家互动与行为的 NPC 升级进度数据支持。
- 新增全局 NPC 追踪系统,便于跨世界统一管理与调试 NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原始模型上使用额外的动物纹理(Variant Animal Textures)。
6.8.1
- 复用现有预设辅助方法而非自定义实现,修复问题 #676。
6.8.0(新增 API 支持)
- 为无效网络数据包新增警告信息与额外校验,修复问题 #667。
- 修复马匹生成蛋模型。
- 为悦灵(allay)、鸡、苦力怕、狐狸、恶魂、马、掠夺者、铁傀儡、史莱姆与恼鬼(vex)新增姿势支持。
- 新增 NPC 基础类,以提供更完善的 API 支持。
- 新增 NPC 原始类(raw classes),以支持高级 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 记录(records),以增强不可变性与线程安全性。
- 新增基于 ConcurrentHashMap 的线程安全会话服务器防刷保护。
- 新增全面的错误恢复机制,失败时自动重置冷却时间。
- 优化纹理加载:采用双线程池与 500 毫秒速率限制。
- 改进异常处理:为 IIOException 与 FileNotFoundException 设置专门的 catch 块。
6.5.2
- 修复村民职业与工作皮肤问题。
- 优化 GitHub 工作流,为 Gradle 依赖添加缓存。
- 提升 Gradle 构建速度并优化清理任务。
6.5.1
- 实现 ON_KILL 动作类型与事件,修复问题 #632。
- 优化纹理处理性能、缓存机制与内存占用,修复问题 #629。
- 修复 NPC 无法响应 kill 命令的问题。
- 修复纹理重载防护机制阻止缓存驱逐后重新加载的问题。
- 修复远程图片校验器中的 WebP 校验 Bug(缺失 return 语句)。
- 重构纹理处理逻辑,以提升可维护性及未来拓展性。
- 新增基于时间的重载防护(60 秒),替代永久性阻断机制。
- 为鸡、猪与狼新增缺失的额外动物纹理(Variant Animal Textures)。
- 新增纹理处理相关单元测试。
- 优化 Gradle 构建任务。
6.5.0
- ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 能力。
- 修复剪刀(scissor)实现,提升与其他模组的兼容性,修复问题 #627。
- 修复使用旋转或移动模型部件时生动动画(lively animation)异常问题,修复问题 #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 魔杖移至现有核心物品栏,而非新建独立栏位。
- 新增猫型 NPC 姿势支持(除尾巴外各模型部件)。
- 优化 EasyNPCWand 发光效果性能,仅在必要时启用。
- 优化自定义实体检测,排除展示型实体(displays)、标记实体(makers)、投掷物(throwns)与刷怪笼(spawners)等非生命实体。
- 优化猫型 NPC 变体处理。
6.1.1
- 检查物品是否装备于任一手部,修复问题 #615。
- 重新校验实体类型,修复问题 #612。
- 强制同步特定模型的帽子与头部图层,修复问题 #610。
- 修复兽人(orc)纹理。
- 适配 1.21.5 版本,修复猫型 NPC 变体处理。
- 调整渲染状态
skin字段,修复玩家渲染。 - 调整渲染状态
texture字段,修复猫型 NPC 渲染。 - 修复位置、缩放与旋转预览。
- 修复妖精(Fairy)模型。
- 将自定义模型相关逻辑迁移至客户端,提升自定义模型支持与性能。
- 优化玩家到 UUID 映射的缓存,加快玩家皮肤加载。
- 将更换模型命令与逻辑限定为多普勒 NPC(Doppler NPCs)专属。
- 新增
renderEntityRaw方法,支持以原始状态渲染 NPC。
6.1.0 ✨
这是一次重大更新。更新前请务必备份您的世界存档及 NPC 数据!
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1
... [内容过长已截断]
Easy NPC (Bundle) 6.15.1
on 2026 May 17Easy NPC:核心版(1.21.11)更新日志
说明
本更新日志汇总了主要变更内容。
如需完整更新记录,请访问 [GitHub 历史记录][history]。
⚠️ 注意:更新至新版本前,请务必备份您的世界存档及所有自定义NPC数据!
更多详情请参阅 [升级指南][upgrade_guide]。
6.15.1
- 通过继承正确的基类修复了问题 #735。
- 通过手动生成测试,修复了多个仅在 26.1.2 版本中出现的问题。
6.15.0(交易系统、玩家头颅、史诗战斗集成与体验优化)
- 若客户端物种列表为空,通过重新同步物种数据修复了问题 #731。
- 通过增强史诗战斗(Epic Fight)集成并启用实验性功能,修复了问题 #730。
- 确保交易使用次数被正确存储,修复了问题 #729。
- 新增对玩家头颅的自定义头颅支持,修复了问题 #728。
- 显示剩余交易次数,并支持手动与自动重置,修复了问题 #689。
- 通过新增交易配置界面及对自定义交易的更好支持,修复了问题 #218 和 #132。
- 通过在基础交易模式与普通/高级交易模式之间切换,修复了特定交易边缘情况。
- 修复了对话按钮文字被截断的问题,完整文本将以提示框形式显示。
- 通过将动画状态与方块宝可梦(Cobblemon)动画系统同步,修复了方块宝可梦动画异常。
- 新增按交易定制的操作功能,允许用户在完成购买后触发指定操作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·磨石”(Griselda Grindstone),附带可触发操作。
- 清理测试文件。
6.14.0
- 修改数值时确保变更同步至客户端,修复了问题 #727。
- 为特定命令新增额外白名单,修复了问题 #726。
- 通过为方块宝可梦(Cobblemon)NPC 添加基础支持,修复了问题 #686、#389、#304 和 #211。
- 通过调整对话精灵图与界面布局,修复了对话错位与导航问题。
- 修正旋转逻辑与枢轴点计算,修复了 X 与 Z 轴根部旋转异常。
- 新增基础方块宝可梦(Cobblemon)支持,包含用于测试的自定义NPC类型与模型。
6.13.0(安全与权限更新)
⚠️ 说明:本次更新增强了多人游戏环境下的安全检查与权限控制。
部分服务器命令具备潜在风险,若遭恶意利用可能危及服务器安全。
本次更新将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,
可能导致现有NPC的根部旋转与缩放值重置为默认值。
- 将模型根部数据与逻辑同其余模型部件的数据与逻辑分离,修复了问题 #725。
- 支持将
.sbnt文件作为本地预设加载,修复了问题 #722。 - 为对话与配置界面背景新增专用资源,修复了问题 #675。
- 通过引入全新安全检查与权限系统,修复了问题 #605、#532 与 #529。
- 新增实验性 API 文档与自定义模型支持示例,修复了问题 #469 与 #311。
- 移除冗余背景渲染,修复了配置界面背景重复绘制问题。
- 通过调整包围盒,修复了恶魂(Ghast)与史莱姆(Slime)的碰撞箱及名称标签位置异常。
- ⚠️ 新增多项安全检查,防止潜在漏洞利用,保障多人游戏环境下的安全运行。
- 将动态对话界面背景替换为静态背景,以提升性能、自定义能力与兼容性。
- 将动态配置界面背景替换为静态背景,以提升性能。
- 重构配置界面(UI)专属组件,并将其从核心模组中移除。
- 移除重复的精灵图集(Sprite Sheet)。
- 为未来可能接入 LuckPerms(如问题 #712 所述)做好权限系统准备。
- 全面清理与优化配置界面渲染及资源相关代码。
6.12.0
- 针对原版模型,新增自定义模型部件列表校验机制,修复了问题 #714。
- 将每NPC级别的 INFO 日志降级为 DEBUG 级别,并合并冗余警告信息,降低日志冗余度,修复了问题 #713。
- 缩减启动/配置阶段的日志输出体积,修复了问题 #711。
- 优化 NBT 校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在
EasyNPCModelManager中新增模型部件名称常量,确保混入(Mixin)代码中的一致性调用。 - 增强
RenderEntityTypeSupportConfig的过滤逻辑并优化数据结构,提升性能与可维护性。 - 移除大量转储复杂数据结构的冗长调试日志。
6.11.1
- 改进可恢复交易数据的向后兼容解析逻辑,修复了问题 #710。
6.11.0
- 修复新自定义图层系统与手部渲染引发的渲染问题(问题 #703)。
- 为无效交易报价增加额外防护与日志记录,修复了问题 #701。
- 修复智能动画在头部位置被修改时无法正常工作的问题。
- 将玩家检测逻辑移回服务端执行,修复头部追踪异常。
- 优化
CustomLookAtPlayerGoal,更妥善处理边缘情况并减少抖动。 - 修复多普勒NPC(Doppler NPCs)持续持有手中物品的问题。
- 改进
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。
- 新增面向玩家、村民、怪物等的多种逃亡(Flee)目标,修复了问题 #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魔杖配合潜行快捷旋转功能,使NPC根部朝向玩家,修复了问题 #661。
- 在交互处理器中增加移动工具检测,防止其错误触发交互,修复该问题。
- 在交互处理器中增加预设物品检测,防止其错误触发交互,修复该问题。
- 通过调整包围盒与眼睛高度计算,修复恶魂(Ghast)与史莱姆(Slime)的碰撞箱及名称标签位置异常。
- 通过调整偏移值,修复恶魂(Ghast)与史莱姆(Slime)GUI位置异常。
6.8.2
- 为
SafeMerchantData新增notifyTrade方法,避免崩溃,修复了问题 #677。 - 新增基于玩家互动与行为的NPC等级成长系统(进度数据支持)。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 为
OriginalModelConfig新增withVariantTexture()方法,支持在原始模型上使用额外的动物纹理(Variant Animal Textures)。
6.8.1
- 复用现有预设辅助方法,而非自定义实现,修复了问题 #676。
6.8.0(新增API支持)
- 为无效网络数据包新增警告信息与额外校验,修复了问题 #667。
- 修复马匹生成蛋模型。
- 为悦灵(Allay)、鸡、苦力怕、狐狸、恶魂(Ghast)、马、灾厄村民(Illager)、铁傀儡、史莱姆(Slime)与恼鬼(Vex)新增姿势支持。
- 新增NPC基础类,以更好支持API扩展。
- 新增NPC原始类(Raw Classes),以支持高级API开发。
- 新增史莱姆(Slim)与恶魂(Ghast)NPC类型。
- 新增自定义模型API,便于与其他模组及自定义模型集成。
- 重构内部数据处理与注册逻辑,以提升可维护性及未来拓展性。
6.7.1
- 针对原版漏洞,在客户端新增额外校验,修复了问题 #657 与 #656。
6.7.0
- 在
setupAnim方法中实现狼腿动画,修复了问题 #650。 - 修复
canBeHitByProjectiles的翻译问题,修复了问题 #648。 - 新增
allowBypassInvulnerability配置选项,允许或禁止NPC绕过无敌状态,修复了问题 #645。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不准的问题。
- 修复对话与配置界面中名称标签意外显示的问题。
- 修复距离触发动作中多个动作未能正确触发的问题。
- 修复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的线程安全会话服务器防刷机制。 - 新增全面的错误恢复机制,失败后自动重置冷却时间。
- 优化纹理加载:采用双线程池与500毫秒速率限制。
- 优化异常处理:为
IIOException与FileNotFoundException设置专门的捕获块。
6.5.2
- 修复村民职业与工作皮肤显示异常。
- 优化GitHub工作流,为Gradle依赖添加缓存。
- 优化Gradle构建耗时与清理任务。
6.5.1
- 实现 ON_KILL 动作类型与事件,修复了问题 #632。
- 优化纹理处理性能、缓存策略与内存占用,修复了问题 #629。
- 修复击杀命令对NPC无效的问题。
- 修复纹理重载防护机制阻止缓存淘汰后重载的问题。
- 修复远程图片校验器中WebP格式验证的遗漏返回语句缺陷。
- 重构纹理处理逻辑,以提升可维护性与未来拓展性。
- 新增基于时间的重载防护(60秒),替代永久性阻断机制。
- 为鸡、猪与狼新增缺失的额外动物纹理(Variant Animal Textures)。
- 新增纹理处理相关单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除Jar-in-Jar打包方式,以提升模组兼容性与API能力。
- 修复剪刀(Scissor)实现,提升与其他模组的兼容性(问题 #627)。
- 修复使用旋转或移动模型部件时生动动画(Lively Animation)异常(问题 #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
- 重构配置界面(UI)专属组件,并将其从核心模组中移除。
- 发送至客户端前先过滤对话数据,修复对话数据问题。
- 修复对话编辑器布局问题并提升易用性。
- 修复部分对话数据字段缺失默认值的问题。
- 新增对话优先级支持,用于控制对话执行顺序。
- 新增对话与计分板动作的条件支持。
- 新增对话频率支持,用于限制对话展示频次。
- 新增支持计分板与条件功能的NPC预设。
- 优化对话按钮数据格式,移除冗余字段。
6.2.0
- 修复旧版自定义名称解析逻辑。
- 修复对话中字符串注入漏洞。
- 修复动作类型缺失翻译的问题。
- 新增计分板动作类型,支持增加、减少与设定计分板数值。
- 新增
@score(...)NPC宏,用于在对话中显示计分板数值。 - 新增额外单元测试。
- 优化旋转按钮,添加指示器并提升易用性。
6.1.2
- 修复容器与菜单同步问题(缺失关闭容器数据包)。
- 修复某些情况下关闭按钮失效的问题。
- 修复界面切换期间鼠标光标跳跃的问题。
- 修复翻译文件,移除重复与已弃用条目。
- 将Easy NPC魔杖移至现有核心物品标签页,而非新建标签页。
- 新增猫型NPC姿势支持(除尾巴外各模型部件)。
- 优化
EasyNPCWand发光效果性能,仅在需要时启用。 - 优化自定义实体检测逻辑,排除显示实体、标记实体、投掷物与刷怪箱等非生物实体。
- 优化猫型NPC变体处理。
6.1.1
- 检查物品是否装备于任一手部,修复了问题 #615。
- 重新校验实体类型,修复了问题 #612。
- 强制同步特定模型的帽子与头部图层,修复了问题 #610。
- 修复兽人(Orc)纹理。
- 修复1.21.5版本中猫型NPC变体处理。
- 调整渲染状态
skin字段,修复玩家渲染异常。 - 调整渲染状态
texture字段,修复猫型NPC渲染器异常。 - 修复位置、缩放与旋转预览异常。
- 修复小仙子(Fairy)模型。
- 将自定义模型相关逻辑迁移至客户端,提升自定义模型支持与性能。
- 优化玩家至UUID映射缓存,加快玩家皮肤加载。
- 限定更换模型命令与逻辑仅适用于多普勒NPC(Doppler NPCs)。
- 新增
renderEntityRaw方法,支持以原始状态渲染NPC。
6.1.0 ✨
这是一次重大版本更新。更新前请务必备份您的世界存档及所有NPC数据!
... [内容过长已截断]
Easy NPC (Bundle) 6.15.1
on 2026 May 17Easy NPC:核心版(1.21.11)更新日志
说明
本更新日志汇总了主要变更内容。
完整更新日志请参阅 [GitHub 历史记录][history]。
注意:升级至新版本前,请务必备份您的世界存档及NPC数据!
更多详情请查阅 [升级指南][upgrade_guide]。
6.15.1
- 通过继承正确的基类修复了 #735 问题。
- 通过手动生成测试,修复了若干 26.1.2 版本特有问题。
6.15.0(交易系统、玩家头颅、史诗战斗整合与体验优化)
- 若客户端物种列表为空,则通过重新同步物种数据修复 #731 问题。
- 通过增强史诗战斗(Epic Fight)整合并启用实验性功能修复 #730 问题。
- 确保交易使用次数被正确存储,修复 #729 问题。
- 新增对玩家头颅的自定义头颅支持,修复 #728 问题。
- 显示剩余交易次数,并支持手动与自动重置,修复 #689 问题。
- 新增交易配置界面,并强化对自定义交易的支持,修复 #218 和 #132 问题。
- 通过在基础交易模式与常规/高级交易模式之间切换,修复特定交易边缘情况。
- 修复对话按钮文字被截断的问题,悬停时以工具提示显示完整文本。
- 通过将动画状态与 Cobblemon 动画系统同步,修复 Cobblemon 动画异常。
- 新增按交易定制的操作功能,允许用户在完成购买后触发指定操作。
- 新增交易重置按钮,便于一键重置全部交易。
- 在交易配置界面中新增交易使用次数信息。
- 新增实验性功能开关,允许用户手动启用实验性功能。
- 新增示例商人“格里塞尔达·磨石”(Griselda Grindstone),附带可触发操作。
- 清理测试文件。
6.14.0
- 修改值时确保变更同步至客户端,修复 #727 问题。
- 新增特定命令的额外白名单,修复 #726 问题。
- 新增基础 Cobblemon 支持(含 Cobblemon NPC),修复 #686、#389、#304、#211 问题。
- 调整对话精灵图与界面,修复对话错位及导航问题。
- 修正 X 与 Z 轴根部旋转逻辑及枢轴点计算,修复根部旋转异常。
- 新增基础 Cobblemon 支持,含用于测试的自定义NPC类型与模型。
6.13.0(安全与权限更新)
说明:本次更新增强了多人游戏环境下的安全校验与权限管理。
部分服务器命令若被恶意利用,可能存在潜在风险。
本次更新将模型根部数据与逻辑从其余模型部件的数据与逻辑中分离,
可能导致现有NPC的根部旋转与缩放重置为默认值。
- 将模型根部数据与逻辑与其他模型部件数据及逻辑分离,修复 #725 问题。
- 支持
.sbnt文件作为本地预设,修复 #722 问题。 - 新增对话与配置界面背景的专用资源,修复 #675 问题。
- 新增安全校验与权限系统,修复 #605、#532、#529 问题。
- 新增实验性API文档与自定义模型支持示例,修复 #469、#311 问题。
- 移除冗余背景渲染,修复配置界面背景重复绘制问题。
- 调整碰撞箱,修复恶魂(Ghast)与史莱姆(Slime)的碰撞箱及名称标签位置问题。
- ⚠️ 新增安全校验机制,防范潜在漏洞,保障多人游戏环境下的安全使用。
- 以静态对话界面背景替代动态背景,提升性能、自定义能力与兼容性。
- 以静态配置界面背景替代动态背景,提升性能。
- 重构配置UI专用组件,并将其从核心模组中移除。
- 移除重复的精灵图集。
- 为未来可能集成 LuckPerms(如 #712 所述)做好权限系统准备。
- 全面清理与优化配置界面渲染及资源相关代码。
6.12.0
- 针对原版模型,新增自定义模型部件列表校验,修复 #714 问题。
- 将每NPC级别的 INFO 日志降级为 DEBUG,并合并冗余警告信息,降低日志冗余度,修复 #713 问题。
- 缩减启动/配置日志输出体积,修复 #711 问题。
- 优化 NBT 校验防护机制,避免生产环境中不必要的缓冲区分配。
- 在 EasyNPCModelManager 中添加模型部件名称常量,确保混入(mixin)代码中的一致使用。
- 增强 RenderEntityTypeSupportConfig 的过滤逻辑并优化数据结构,提升性能与可维护性。
- 移除大量转储复杂数据结构的冗长调试日志。
6.11.1
- 改进可恢复交易数据的向后兼容解析,修复 #710 问题。
6.11.0
- 修复新自定义图层系统与手部渲染导致的 #703 渲染问题。
- 新增额外保护机制与日志记录,防范无效交易报价,修复 #701 问题。
- 修复智能动画在头部位置被修改后无法正常工作的问题。
- 将玩家检测逻辑移回服务端执行,修复头部追踪问题。
- 改进 CustomLookAtPlayerGoal,更好处理边界情况并减少抖动。
- 修复多普勒NPC(Doppler NPCs)持续持有手部物品的问题。
- 优化 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 问题。
- 新增多种逃亡目标(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魔杖配合潜行快捷旋转功能:潜行状态下使用魔杖,使NPC根部朝向玩家,修复 #661 问题。
- 在交互处理器中增加移动工具检测,防止其错误触发交互,修复移动工具误触问题。
- 在交互处理器中增加预设物品检测,防止其错误触发交互,修复预设物品误触问题。
- 调整碰撞箱与眼高计算,修复史莱姆与恶魂的碰撞箱及名称标签位置问题。
- 调整偏移值,修复史莱姆与恶魂的GUI位置问题。
6.8.2
- 扩展
SafeMerchantData并添加notifyTrade方法,避免崩溃,修复 #677 问题。 - 新增基于玩家互动与行为的NPC升级进度数据支持。
- 新增全局NPC追踪系统,便于跨世界统一管理与调试NPC。
- 新增
OriginalModelConfig.withVariantTexture()选项,支持在原版模型上使用额外的动物纹理(Variant Animal Textures)。
6.8.1
- 复用现有预设辅助方法,而非自定义实现,修复 #676 问题。
6.8.0(新增API支持)
- 新增无效网络数据包的警告提示与额外校验,修复 #667 问题。
- 修复马生成蛋模型。
- 新增悦灵(Allay)、鸡(Chicken)、苦力怕(Creeper)、狐狸(Fox)、恶魂(Ghast)、马(Horse)、卫道士(Illager)、铁傀儡(Iron Golem)、史莱姆(Slime)与恼鬼(Vex)的姿势支持。
- 新增NPC基础类,以提供更完善的API支持。
- 新增NPC原始类(raw classes),以支持高级API功能。
- 新增史莱姆(Slim)与恶魂(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。
- 重构纹理处理逻辑,提升可维护性与未来扩展能力。
- 新增基于时间的重载防护(60秒),替代永久性屏蔽机制。
- 为鸡、猪与狼新增缺失的额外动物纹理(Variant Animal Textures)。
- 新增纹理处理相关单元测试。
- 优化Gradle构建任务。
6.5.0
- ⚠️ 移除jar-in-jar打包方式,以提升模组兼容性与API能力。
- 修复 #627 的裁剪(scissor)实现,提升与其他模组的兼容性。
- 修复使用旋转或移动的模型部件时,生动动画(lively animation)异常问题。
- 修复使用缩放模型部件时,默认动画被意外取消的问题。
- 新增更优的姿势动画控制选项:“智能”、“默认”与“无”。
6.4.1
- 改进不同NPC UUID间的界面切换逻辑,感谢
Spawnblade提供详尽调查与修复建议,修复 #626 问题。
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 魔杖移至现有核心物品栏,而非新建独立栏位。
- 新增猫型NPC姿势支持(尾部除外)。
- 优化 EasyNPCWand 发光效果性能,仅在必要时启用。
- 优化自定义实体检测,排除非生物实体(如展示框、标记实体、投掷物、刷怪笼等)。
- 优化猫型NPC变体处理。
6.1.1
- 检查物品是否装备于任一手部,修复 #615 问题。
- 重新校验实体类型,修复 #612 问题。
- 强制同步特定模型的帽子与头部图层,修复 #610 问题。
- 修复兽人(Orc)纹理。
- 适配 1.21.5 版本,修复猫型NPC变体处理。
- 调整渲染状态
skin字段,修复玩家渲染问题。 - 调整渲染状态
texture字段,修复猫型NPC渲染器。 - 修复位置、缩放与旋转预览。
- 修复妖精(Fairy)模型。
- 优化自定义模型支持与性能,将相关逻辑迁移至客户端执行。
- 优化玩家UUID映射缓存,加速玩家皮肤加载。
- 将更换模型的命令与逻辑限定为多普勒NPC(Doppler NPCs)专用。
- 新增
renderEntityRaw方法,支持以原始状态渲染NPC。
6.1.0 ✨
这是一次重大版本更新。升级前请务必备份您的世界存档与NPC数据。
本版本包含大量改进、优化与内部重构,与早期版本不完全兼容。
⚠️ 破坏性变更
- 6.1.0 版本之前创建的NPC及其配置数据,可能无法正确加载,或需手动调整。
- 内部数据格式与部分行为已重构,以支持新用例。
🧩 新模块化结构
... [内容过长已截断]
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,使其更妥善处理边界情况并减少抖动。
- 修复多普勒 NPC(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:新增多种逃离目标的逃离目标(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 根部转向玩家。
- 修复移动工具错误触发交互:在交互处理器中增加对移动工具的判断。
- 修复预设物品错误触发交互:在交互处理器中增加对预设物品的判断。
- 修复史莱姆与幽灵(Ghast)的碰撞箱及名称标签位置问题:调整包围盒与眼睛高度计算。
- 修复史莱姆与幽灵(Ghast)GUI 位置问题:调整偏移值。
6.8.2
- 修复 #677:扩展
SafeMerchantData,新增 notifyTrade 方法以避免崩溃。 - 新增进度数据支持,可根据玩家互动与行为为 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:为原版 Bug 新增额外客户端校验。
6.7.0
- 修复 #650:在 setupAnim 方法中实现狼类腿部动画。
- 修复 #648:修正 canBeHitByProjectiles 的翻译。
- 修复 #645:新增
allowBypassInvulnerability配置项,允许/禁止 NPC 绕过无敌状态。 - 修复删除按钮在宽度较小时仍显示标签的问题。
- 修复上下按钮在某些情况下定位不正确的问题。
- 修复对话与配置 UI 中错误显示名称标签的问题。
- 修复距离动作(distance action)问题:多个动作未能被正确触发。
- 修复 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(缺失返回语句)。
- 重构纹理处理逻辑,以提升可维护性与未来扩展性。
- 新增基于时间的重载保护(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 魔杖移至现有核心物品分类下,而非新建分类。
- 新增猫形 NPC 姿势支持(尾部除外)。
- 优化 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:核心——轻量级运行时与 NPC 逻辑,依赖极少,适用于服务器、模组包与开发者。
- Easy NPC:配置界面——独立的 NPC 创建与编辑界面,仅需安装在需要 UI 的客户端上。
🎯 此变更目的
- 服务器与模组包可仅在服务端部署 核心 模组,实现精简配置。
- 当无需 UI 时,显著降低内存占用与加载时间。
- 通过分离 UI 与核心逻辑,加快开发与测试速度。
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 与核心逻辑,让开发和测试更高效。




