BBSMC Logo
模组整合包光影资源包软件汉化插件数据包地图
登录
模组插件数据包光影资源包整合包软件汉化地图
登录
设置
简易 NPC  -   Easy NPC
简易 NPC  -   Easy NPC

简易 NPC - Easy NPC

为你的世界或模组轻松创建带有对话的 NPC。

1,0564a year ago
简易 NPC  -   Easy NPC

简易 NPC - Easy NPC

为你的世界或模组轻松创建带有对话的 NPC。

1,056
4

基本信息

我的世界Java版本

1.21.3
1.21–1.21.1
1.20.1–1.20.2
1.19.2
1.18.2

平台

\n \n \n Fabric
\n \n \n Forge
NeoForge
\n \n \n \n \n \n \n \n \n Quilt

运行环境

客户端和服务端

其他链接

反馈问题 查看源码
Modrinth

搬运团队

BBSMC 官方搬运(1)
BBSMC 官方搬运(1)团队

搬运资源声明

对于可进行 JAR 文件搬运的许可证,我们提供站内下载服务;其他资源会跳转到原帖下载。资源更新可能不及时,建议前往资源内提供的原帖链接下载最新版本。

详情信息

许可证 MIT
发布于 2025-01-03
更新于 2026-04-15
简介渲染图更新日志版本百科反馈讨论

全部版本

1
2
15

Easy NPC (Bundle) 6.12.0

on 2026 Apr 15
下载

Easy 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 15
下载

Easy 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 07
下载

Easy 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 07
下载

Easy 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 07
下载

Easy 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 18
下载

Easy NPC 更新日志 (1.20.1)

注意

此更新日志包含的是变更摘要。 如需查看完整更新日志,请前往 GitHub 历史记录。

注意:更新到新版本前,请务必备份你的世界 / NPC! 更多信息请查看升级指南。

6.11.0

  • 修复了 #703:新的自定义图层系统与手部渲染导致的渲染问题。
  • 修复了 #701:为无效交易提供添加了额外的保护措施和日志记录。
  • 修复了智能动画在头部位置被修改后无法正常工作的问题。
  • 修复了头部追踪:将玩家检测移回仅服务端执行。
  • 修复了 CustomLookAtPlayerGoal,以更好地处理边缘情况并减少抖动。
  • 修复了 Doppler NPC 会保留其手部容器物品的问题。
  • 改进了 PoseManager 的日志消息。
  • 更新了全新设计的 Logo。

6.10.0

  • 修复了 #695:切换到 DEFAULT 原版姿势时会清除模型部件的旋转/位置。
  • 修复了 #695:仅在 NPC 空闲时应用旋转锁定和姿势动画。
  • 修复了 #695:将根部旋转轴点改为使用实际碰撞箱高度,而不是 0.5f。
  • 修复了多个目标注册问题,包括反向的 isTargetedPlayer 检查、leave-handler 中错误的 UUID、玩家加入/离开时缺失的目标刷新,以及对离线目标的重试。
  • 修复了目标被取消注册后仍保留目标引用的问题。
  • 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现由用户控制。
  • 在高级和自定义姿势配置界面中添加了旋转锁定复选框。
  • 在 ConfigurationMenuHandler 中为默认姿势界面添加了基于模型的姿势键过滤。
  • 为 CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior 和 ModelAnimationData 添加了单元测试。
  • 添加了 NPCDataIsolationTestHelper 以及适用于 Fabric 和 Forge 的游戏测试。
  • 将头部最大偏航范围从 60° 提高到 65°。

6.9.0

  • 修复了 #692、#666:添加缓存与保护措施,防止 NPC 实体数据更新被重复触发。
  • 修复了 #651、#617:为所有受支持的 NPC 类型添加了基础自定义姿势。
  • 修复了 #597:添加了更多逃跑目标,用于躲避玩家、村民、敌对生物等。
  • 修复了姿势加载逻辑:直接从模组资源中读取,而不是将文件复制到磁盘。
  • 修复了实体加入时重复调用 saveNPC 的问题:现会先检查现有注册表条目。
  • 添加了 despawn 和 spawn 命令,可通过 UUID 移除并重新生成 NPC,且支持可配置的移除原因。
  • 添加了 ModelPoseAPI 和 EasyNPCEntityHandler 公共 API 类,用于控制 NPC 姿势以及供外部模组以编程方式管理 NPC。
  • 为所有受支持的 NPC 类型添加了姿势数据文件。
  • 在基础姿势配置界面中添加了旋转锁定复选框。
  • 添加了 MoveToPositionGoal,使 NPC 在执行回调动作前先移动到指定位置。
  • 添加了 EasyNPCLookControl 和 EasyNPCBodyRotationControl,以遵循已锁定的根部旋转。
  • 将同步后的所有者变更和维度变更添加到 NPC 实体数据索引中。
  • 在多个实体渲染器中添加了 EasyNPCItemAttachmentLayer。
  • 添加了专用的 Flee Objective 配置标签页,包含逃离苦力怕、敌对生物、生物、玩家、村民和阳光的目标。
  • 在跟随目标标签页中添加了 FOLLOW_ITEM 目标,使 NPC 可以按资源位置跟随物品实体(例如 minecraft:apple)。
  • 添加了 LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 观察实体和观察所有者的目标。
  • 为 SynchedDataIndex 添加了 persistent 标志,使临时索引(如弩蓄力、模型动画)不再触发脏保存标记。
  • 为 API 使用者在 SlimeBase 中添加了可配置的 customParticlesEnabled 标志。
  • 添加了 SoundType.PET,并将 CAT_PURR 映射给猫 NPC,以丰富驯服状态下的环境音效果。
  • 将周期性 NPC 保存操作的日志详细级别从 INFO 降低为 DEBUG。

6.8.3

  • 修复了 #680:通过升级网络协议版本强制处理版本不匹配。
  • 修复了 #679:重置命名牌的位置、旋转和大小。
  • 修复了 #665:为根部旋转添加多状态滑动。
  • 修复了 #664:添加禁用跟随鼠标光标的选项,以便更容易摆姿势。
  • 修复了 #663:改进了对根部 X 和 Z 旋转的支持。
  • 修复了 #661:添加快捷旋转功能,使用 Npc 魔杖并潜行对着 NPC 可将其根部旋转为朝向玩家。
  • 修复了移动工具错误触发交互的问题:在交互处理器中加入了对移动工具的检查。
  • 修复了预设物品错误触发交互的问题:在交互处理器中加入了对预设物品的检查。
  • 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱及命名牌位置问题。
  • 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置。

6.8.2

  • 修复了 #677:为 SafeMerchantData 扩展 notifyTrade 以避免崩溃。
  • 添加了进度数据支持,可根据玩家交互和动作让 NPC 升级。
  • 添加了全局 NPC 追踪系统,以便更好地管理和调试世界中的 NPC。
  • 添加了 OriginalModelConfig.withVariantTexture() 选项,允许原始模型使用变体纹理。

6.8.1

  • 修复了 #676:改用现有的预设辅助方法,而不是自定义方法。

6.8.0(添加 API 支持)

  • 修复了 #667:为无效网络数据包添加警告消息和额外检查。
  • 修复了马刷怪蛋模型。
  • 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
  • 添加了 NPC 基础类,以提供更好的 API 支持。
  • 添加了 NPC 原始类,以提供高级 API 支持。
  • 添加了史莱姆和恶魂 NPC 类型。
  • 添加了自定义模型 API,以便更轻松地与其他模组和自定义模型集成。
  • 重构了内部数据处理和注册逻辑,以提高可维护性并为未来改进做好准备。

6.7.1

  • 修复了 #657 和 #656:为原版漏洞添加了额外的客户端检查。

6.7.0

  • 修复了 #650:在 setupAnim 方法中实现了狼腿动画。
  • 修复了 #648:修正了 canBeHitByProjectiles 的翻译。
  • 修复了 #645:添加了 allowBypassInvulnerability 配置选项,用于允许/禁止绕过 NPC 的无敌状态。
  • 修复了删除按钮在宽度较小时仍显示标签的问题。
  • 修复了上下按钮在某些情况下位置不正确的问题。
  • 修复了命名牌会显示在对话和配置 UI 上的问题。
  • 修复了距离动作问题:多个动作无法被正确触发。
  • 修复了 NPC 预设相关问题。
  • 修复了猫 NPC 和狼 NPC 的所有者数据无法正确同步的问题。
  • 添加了预设浏览器,方便选择常用的 NPC 预设。
  • 添加了预设 .snbt(文本)导出和导入功能,以便分享 NPC 预设。
  • 重构了现有 NPC 预设,使其使用新的 .snbt 格式。
  • 重构了刷怪笼系统,使其使用新的预设格式,以提高可维护性并为未来改进做好准备。

6.6.2

  • 修复了 #643:重做缩放系统。
  • 修复了重启/重载后缩放无法正确更新碰撞箱和命名牌位置的问题。
  • 添加了 MID 和 MOUSE_OVER 命名牌可见模式,以更细致地控制 NPC 名称显示。
  • 添加了基于队伍的命名牌可见性支持,并遵循原版 Team 规则。

6.6.1

  • 修复了 #638:重构了显示属性的内部数据处理。

6.6.0

  • 修复了 #634:使用专用线程池实现异步材质加载。
  • 修复了材质加载阻塞渲染线程导致游戏卡死的问题。
  • 修复了材质重载保护中的竞争条件,改用原子操作。
  • 修复了远程材质下载期间 HTTP 连接的资源泄漏问题。
  • 修复了 URL 验证刷屏问题,此前会允许对同一材质同时进行多个下载。
  • 修复了远程图像验证的异常处理,防止无效 URL 导致崩溃。
  • 修复了 NPC 加载期间出现的 defineId called for: 警告消息。
  • 重构了材质加载架构,加入多层防护和速率限制。
  • 重构了实体数据注册逻辑,以提高可维护性。
  • 将数据类转换为现代 Java records,以提高不可变性和线程安全性。
  • 添加了基于 ConcurrentHashMap 的线程安全会话服务器刷屏保护。
  • 添加了完整的错误恢复机制,在失败时自动重置冷却。
  • 改进了材质加载:使用 2 线程池和 500ms 速率限制。
  • 改进了异常处理:为 IIOException 和 FileNotFoundException 使用更具体的 catch 块。

6.5.2

  • 修复了村民职业和工作皮肤问题。
  • 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
  • 改进了 Gradle 构建时间和清理任务。

6.5.1

  • 修复了 #632:实现了 ON_KILL 动作类型和事件。
  • 修复了 #629:改进了材质处理性能、缓存和内存占用。
  • 修复了 kill 命令对 NPC 无效的问题。
  • 修复了材质重载保护导致缓存清除后无法重新加载的问题。
  • 修复了远程图像验证器中的 WebP 验证漏洞(缺少 return 语句)。
  • 重构了材质处理逻辑,以提高可维护性并为未来改进做好准备。
  • 添加了基于时间的重载保护(60 秒),以替代永久阻止机制。
  • 为材质处理添加了额外的单元测试。
  • 改进了 gradle 构建任务。

6.5.0

  • ⚠️ 移除了 jar-in-jar 打包方案,以获得更好的模组兼容性和 API 能力。
  • 修复了 #627:改进剪刀实现,以更好地兼容其他模组。
  • 修复了 #625:使用已旋转或移动的模型部件时,生动动画出现的问题。
  • 修复了使用已缩放模型部件时默认动画会被取消的问题。
  • 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。

6.4.1

  • 修复了 #626:改进了不同 NPC UUID 的界面切换逻辑,感谢 Spawnblade 提供的详细调查和修复建议。

6.4.0

  • 修复了 #626:改进了对话数据验证和错误处理。
  • 修复了 #623:重构了渲染数据和渲染处理逻辑。
  • 修复了 #622:确保自定义数据能够被正确保存和加载。
  • 修复了打开对话动作类型,使其可以打开其他 NPC 的对话。
  • 修复了哈希相关问题:为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法。
  • 为 #622 添加了自定义数据测试物品,以便更轻松地测试自定义数据。
  • 改进了 records,并修复了数据缺失时的潜在问题。

6.3.0

  • 重构了配置 UI 专用组件,并将其从核心模组中移除。
  • 修复了对话数据:发送到客户端前会先过滤对话数据。
  • 修复了对话编辑器布局问题并改进了易用性。
  • 修复了部分对话数据字段缺少默认值的问题。
  • 添加了对话优先级支持,用于控制对话执行顺序。
  • 为对话和计分板动作添加了条件支持。
  • 为对话添加了频率支持,以限制对话显示的频率。
  • 添加了新的 NPC 预设,用于支持计分板和条件功能。
  • 通过移除冗余字段,改进了对话按钮数据格式。

6.2.0

  • 修复了对话中的字符串注入问题。
  • 修复了动作类型缺少翻译的问题。
  • 添加了计分板动作类型,可增加、减少、设置计分板数值。
  • 添加了 @score(...) NPC 宏,用于在对话中显示计分板数值。
  • 添加了额外的单元测试。
  • 改进了旋转按钮,加入指示器并提升易用性。

6.1.2

  • 修复了容器和菜单同步问题,补上了缺失的关闭容器数据包。
  • 修复了关闭按钮在某些情况下无效的问题。
  • 修复了界面切换时鼠标光标跳动的问题。
  • 修复了翻译文件,并移除了重复和已弃用条目。
  • 将 Easy NPC 魔杖移至现有核心物品选项卡,而不是新建一个。
  • 为猫的不同模型部件添加了姿势支持(尾巴除外)。
  • 通过在不需要时禁用发光效果,提升了 EasyNPCWand 发光效果的性能。
  • 通过排除显示实体、标记实体、投掷物和刷怪笼等非生物实体,改进了自定义实体检测。
  • 改进了猫变种处理。

6.1.1

  • 修复了 #612:重新验证实体类型。
  • 修复了 #610:为特定模型强制同步帽子层和头部层。
  • 修复了兽人皮纹理。
  • 通过将相关逻辑移至仅客户端,改进了自定义模型支持和性能。
  • 改进了玩家皮肤的玩家到 UUID 映射缓存。
  • 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。

6.1.0 ✨

这是一个重大版本。更新前请备份你的世界和 NPC 数据。 此版本包含大量改进、优化和内部变更, 与早期版本并不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本中的现有 NPC 及其配置数据可能无法正确加载,或者需要手动调整。
  • 内部数据格式和部分行为已被重构,以支持新的使用场景。

🧩 全新的模块化结构

Easy NPC 现已拆分为三个独立模组:

  • Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
  • Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
  • Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。

🎯 为什么要这样改?

  • 允许服务器和整合包仅在服务端提供 Core 模组,从而获得更精简的配置。
  • 在并非所有地方都需要 UI 时,可减少内存占用和加载时间。
  • 通过分离 UI 与核心逻辑,让开发和测试更高效。

Easy NPC (Bundle) 6.11.0

on 2026 Mar 18
下载

Easy NPC 更新日志 (1.20.1)

注意

此更新日志包含的是变更摘要。 完整更新日志请前往 GitHub History 查看。

注意:更新到新版本前,请务必先备份你的世界 / NPC! 更多信息请查看升级指南。

6.11.0

  • 修复了 #703:新的自定义图层系统与手部渲染相关的渲染问题。
  • 通过为无效交易报价添加额外的安全保护与日志记录,修复了 #701。
  • 修复了修改头部位置后智能动画无法正常工作的问题。
  • 将玩家检测移回仅服务器端后,修复了头部跟踪问题。
  • 修复了 CustomLookAtPlayerGoal,使其能更好地处理边缘情况并减少抖动。
  • 修复了 Doppler NPC 会保留其手部容器内容的问题。
  • 改进了 PoseManager 的日志信息。
  • 更新了新的徽标设计。

6.10.0

  • 修复了 #695:切换到 DEFAULT 原版姿势时,会清除模型部件的旋转/位置。
  • 修复了 #695:仅在 NPC 空闲时应用旋转锁定和姿势动画。
  • 修复了 #695:将根部旋转枢轴改为使用实际碰撞箱高度,而不是 0.5f。
  • 修复了多个目标注册问题,包括反向的 isTargetedPlayer 检查、离开处理器中的错误 UUID、加入/离开时缺失的玩家目标刷新,以及对离线目标的重试。
  • 修复了目标注销后仍保留目标引用的问题。
  • 移除了加载姿势时对 ROOT 旋转的自动锁定;根部锁定现在由用户控制。
  • 在高级和自定义姿势配置界面中添加了旋转锁定复选框。
  • 为默认姿势界面中的 ConfigurationMenuHandler 添加了按模型筛选姿势键的功能。
  • 为 CustomPosition、CustomRotation、CustomScale、ModelPose、ModelAnimationBehavior 和 ModelAnimationData 添加了单元测试。
  • 添加了 NPCDataIsolationTestHelper,以及适用于 Fabric 和 Forge 的游戏测试。
  • 将头部最大偏航范围从 60° 提升到 65°。

6.9.0

  • 通过添加缓存和安全保护,修复了 #692、#666,防止 NPC 实体数据更新被重复触发。
  • 通过为所有支持的 NPC 类型添加基础自定义姿势,修复了 #651、#617。
  • 通过新增额外的逃跑目标,使 NPC 可以逃离玩家、村民、敌对生物等,从而修复了 #597。
  • 修复了姿势加载方式,现直接从模组资源读取,而不是将文件复制到磁盘。
  • 修复了实体加入时重复调用 saveNPC 的问题,现在会先检查现有注册表项。
  • 添加了 despawn 和 spawn 命令,可通过 UUID 移除并重新生成 NPC,并支持可配置的移除原因。
  • 添加了 ModelPoseAPI 和 EasyNPCEntityHandler 公共 API 类,用于控制 NPC 姿势以及让外部模组以编程方式管理 NPC。
  • 为所有支持的 NPC 类型添加了姿势数据文件。
  • 在基础姿势配置界面中添加了旋转锁定复选框。
  • 添加了 MoveToPositionGoal,使 NPC 可在执行回调操作前先移动到指定位置。
  • 添加了 EasyNPCLookControl 和 EasyNPCBodyRotationControl,以遵循已锁定的根部旋转。
  • 将同步的所有者变更和维度变更添加到 NPC 实体数据索引中。
  • 将 EasyNPCItemAttachmentLayer 添加到多个实体渲染器中。
  • 添加了专门的 Flee Objective 配置标签页,包含逃离苦力怕、敌对生物、生物、玩家、村民和阳光的目标。
  • 在跟随目标标签页中添加了 FOLLOW_ITEM 目标,使 NPC 能通过资源位置跟随物品实体(例如 minecraft:apple)。
  • 添加了 LookAtEntityByUUIDGoal,并在观察目标界面中启用了按 UUID 注视实体以及注视所有者的目标。
  • 为 SynchedDataIndex 添加了 persistent 标记,使临时索引(如弩蓄力、模型动画)不再触发脏保存标记。
  • 为 API 使用者向 SlimeBase 添加了可配置的 customParticlesEnabled 标记。
  • 添加了 SoundType.PET,并将 CAT_PURR 映射到猫 NPC,以丰富已驯服环境音效的变化。
  • 将周期性 NPC 保存操作的日志详细程度从 INFO 降低到 DEBUG。

6.8.3

  • 通过升级网络协议版本,强制处理版本不匹配问题,修复了 #680。
  • 通过重置命名牌的位置、旋转和大小,修复了 #679。
  • 通过为根部旋转添加多状态滑动,修复了 #665。
  • 通过添加禁用鼠标光标跟随的选项,修复了 #664,以便更轻松地摆姿势。
  • 通过改进对 X 和 Z 轴根部旋转的支持,修复了 #663。
  • 通过添加快捷旋转功能,修复了 #661:使用 NPC 魔杖并潜行点击 NPC 时,可将根部旋转为面向玩家。
  • 通过在交互处理器中添加对移动工具的检查,修复了移动工具错误触发交互的问题。
  • 通过在交互处理器中添加对预设物品的检查,修复了预设物品错误触发交互的问题。
  • 通过调整碰撞箱和视线高度计算,修复了史莱姆和恶魂的碰撞箱及命名牌位置问题。
  • 通过调整偏移值,修复了史莱姆和恶魂的 GUI 位置问题。

6.8.2

  • 通过为 SafeMerchantData 扩展 notifyTrade 以避免崩溃,修复了 #677。
  • 添加了进度数据支持,可根据玩家交互和操作让 NPC 升级。
  • 添加了全局 NPC 跟踪系统,以便更好地管理和调试世界中的 NPC。
  • 添加了 OriginalModelConfig.withVariantTexture() 选项,允许原始模型使用变体纹理。

6.8.1

  • 通过使用现有的预设辅助方法而不是自定义方法,修复了 #676。

6.8.0(添加 API 支持)

  • 通过添加警告消息和对无效网络数据包的额外检查,修复了 #667。
  • 修复了马刷怪蛋模型。
  • 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆和恼鬼的姿势支持。
  • 添加了 NPC 基础类,以提供更好的 API 支持。
  • 添加了 NPC 原始类,以提供高级 API 支持。
  • 添加了史莱姆和恶魂 NPC 类型。
  • 添加了自定义模型 API,便于与其他模组和自定义模型集成。
  • 重构了内部数据处理和注册机制,以提升可维护性并为未来改进做准备。

6.7.1

  • 通过为原版漏洞添加额外的仅客户端检查,修复了 #657 和 #656。

6.7.0

  • 通过在 setupAnim 方法中实现狼腿部动画,修复了 #650。
  • 通过修正 canBeHitByProjectiles 的翻译,修复了 #648。
  • 通过添加 allowBypassInvulnerability 配置选项,允许/禁止绕过 NPC 的无敌状态,修复了 #645。
  • 修复了删除按钮即使宽度很小时也会显示标签的问题。
  • 修复了上下按钮在某些情况下位置不正确的问题。
  • 修复了对话框和配置 UI 中会显示命名牌的问题。
  • 修复了距离动作问题,即多个动作未被正确触发。
  • 修复了 NPC 预设相关问题。
  • 修复了猫 NPC 和狼 NPC 的所有者数据无法正确同步的问题。
  • 添加了预设浏览器,便于选择常用 NPC 预设。
  • 添加了预设 .snbt(文本)导出与导入功能,以便分享 NPC 预设。
  • 重构了现有 NPC 预设,使其使用新的 .snbt 格式。
  • 重构了刷怪笼系统,使其使用新的预设格式,以提升可维护性并为未来改进做准备。

6.6.2

  • 通过重做缩放系统,修复了 #643。
  • 修复了重启 / 重载后缩放无法正确更新碰撞箱和命名牌位置的问题。
  • 添加了 MID 和 MOUSE_OVER 命名牌可见模式,以便更精细地控制 NPC 名称显示。
  • 添加了基于队伍的命名牌可见性支持,并遵循原版 Team 规则。

6.6.1

  • 通过重构显示属性的内部数据处理,修复了 #638。

6.6.0

  • 通过使用专用线程池实现异步纹理加载,修复了 #634。
  • 修复了纹理加载阻塞渲染线程导致游戏冻结的问题。
  • 通过使用原子操作,修复了纹理重载保护中的竞态条件。
  • 修复了远程纹理下载期间 HTTP 连接的资源泄漏问题。
  • 修复了 URL 验证刷屏问题,该问题会允许同一纹理被同时下载多次。
  • 修复了远程图像验证中的异常处理,防止无效 URL 导致崩溃。
  • 修复了 NPC 加载期间 defineId called for: 警告信息。
  • 重构了纹理加载架构,加入多层防护和速率限制。
  • 重构了实体数据注册逻辑,以提升可维护性。
  • 将数据类转换为现代 Java record,以获得更好的不可变性和线程安全性。
  • 添加了基于 ConcurrentHashMap 的线程安全会话服务器刷屏保护。
  • 添加了完善的错误恢复机制,在失败时自动重置冷却。
  • 将纹理加载改进为 2 线程池,并加入 500ms 速率限制。
  • 改进了异常处理,对 IIOException 和 FileNotFoundException 使用了更具体的 catch 块。

6.5.2

  • 修复了村民职业和工作皮肤问题。
  • 通过为 gradle 依赖添加缓存,改进了 GitHub 工作流。
  • 改进了 Gradle 构建时间和清理任务。

6.5.1

  • 通过实现 ON_KILL 动作类型和事件,修复了 #632。
  • 通过改进纹理处理性能、缓存和内存使用,修复了 #629。
  • 修复了 kill 命令对 NPC 无效的问题。
  • 修复了纹理重载保护阻止缓存在驱逐后重新加载的问题。
  • 修复了远程图像验证器中的 WebP 验证漏洞(缺少 return 语句)。
  • 重构了纹理处理逻辑,以提升可维护性并为未来改进做准备。
  • 添加了基于时间的重载保护(60 秒),用于替代永久阻止机制。
  • 为纹理处理添加了额外的单元测试。
  • 改进了 gradle 构建任务。

6.5.0

  • ⚠️ 移除了 jar-in-jar 打包方案,以提升模组兼容性和 API 能力。
  • 修复了 #627:重新实现剪刀逻辑,以获得更好的其他模组兼容性。
  • 修复了 #625:使用旋转或移动后的模型部件时,生动动画出现的问题。
  • 修复了使用缩放后的模型部件时默认动画会被取消的问题。
  • 添加了更好的姿势动画控制,提供 smart、default 和 none 选项。

6.4.1

  • 修复了 #626:改进了针对不同 NPC UUID 的界面切换逻辑,感谢 Spawnblade 提供的详细调查和修复建议。

6.4.0

  • 通过改进对话框数据验证和错误处理,修复了 #626。
  • 通过重构渲染数据和渲染处理,修复了 #623。
  • 通过确保自定义数据被正确保存和加载,修复了 #622。
  • 修复了打开对话框动作类型,使其能够打开来自其他 NPC 的对话框。
  • 通过为 ConditionDataSet 和 ActionDataSet 添加缺失的 equals 和 hashCode 方法,修复了哈希相关问题。
  • 为 #622 添加了自定义数据测试物品,以便更轻松地测试自定义数据。
  • 改进了 records,并修复了缺失数据可能引发的问题。

6.3.0

  • 重构了配置 UI 专用组件,并将其从核心模组中移除。
  • 修复了对话框数据:发送到客户端前会先过滤对话框数据。
  • 修复了对话编辑器布局问题,并改进了易用性。
  • 修复了部分对话数据字段缺少默认值的问题。
  • 添加了对话优先级支持,以控制对话执行顺序。
  • 为对话和记分板动作添加了条件支持。
  • 为对话添加了频率支持,以限制对话显示的频率。
  • 添加了新的 NPC 预设,以支持记分板和条件功能。
  • 通过移除冗余字段,改进了对话按钮数据格式。

6.2.0

  • 修复了对话框中的字符串注入问题。
  • 修复了动作类型缺少翻译的问题。
  • 添加了记分板动作类型,可增加、减少、设置记分板数值。
  • 添加了 @score(...) NPC 宏,用于在对话中显示记分板数值。
  • 添加了额外的单元测试。
  • 改进了旋转按钮,加入指示器并提升了易用性。

6.1.2

  • 修复了因缺少关闭容器数据包而导致的容器和菜单同步问题。
  • 修复了关闭按钮在某些情况下无效的问题。
  • 修复了界面切换时鼠标光标跳动的问题。
  • 修复了翻译文件,并移除了重复和已弃用条目。
  • 将 Easy NPC 魔杖移至现有核心物品选项卡,而不是新建一个选项卡。
  • 为猫的不同模型部件添加了姿势支持(尾巴除外)。
  • 通过在不需要时禁用发光效果,改进了 EasyNPCWand 的发光效果性能。
  • 改进了自定义实体检测,排除了 display、maker、thrown 和 spawner 等非生物实体。
  • 改进了猫变体处理。

6.1.1

  • 通过重新验证实体类型,修复了 #612。
  • 通过为特定模型强制同步帽子层和头部层,修复了 #610。
  • 修复了兽人皮。
  • 通过将相关逻辑移至仅客户端,改进了自定义模型支持和性能。
  • 改进了玩家皮肤的玩家到 UUID 映射缓存。
  • 将更改模型命令和逻辑限制为仅对 Doppler NPC 生效。

6.1.0 ✨

这是一个重大版本更新。更新前请先备份你的世界和 NPC 数据。 此版本包含许多改进、优化和内部变更, 与早期版本并不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
  • 为支持新的使用场景,内部数据格式和部分行为已被重构。

🧩 新的模块化结构

Easy NPC 现已拆分为三个独立模组:

  • Easy NPC – 同时包含 Core 和 Configuration UI 的整合包,提供开箱即用的体验。
  • Easy NPC: Core – 轻量级的 NPC 运行时与逻辑模块,依赖最少。适用于服务器、整合包和开发者。
  • Easy NPC: Configuration UI – 独立的配置界面,用于创建和编辑 NPC。可安装在需要该 UI 的客户端上。

🎯 为什么要做这个改动?

  • 允许服务器和整合包仅在服务端安装 Core 模组,以获得更精简的配置。
  • 在不需要到处使用 UI 时减少内存占用和加载时间。
  • 通过分离 UI 与核心逻辑,加快开发和测试速度。

Easy NPC (Bundle) 6.10.0

on 2026 Mar 13
下载

Easy NPC (Bundle) 6.10.0

on 2026 Mar 13
下载

Changelog for Easy NPC (1.20.1)

Note

This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead.

Note: Please always back up your world / NPCs before updating to a new version! Check the [upgrade guide][upgrade_guide] for more information.

6.10.0

  • Fixed #695 by clearing model part rotations/positions when switching to a DEFAULT vanilla pose.
  • Fixed #695 by applying lock rotation and pose animation only when the NPC is idle.
  • Fixed #695 by correcting root rotation pivot to use actual bounding box height instead of 0.5f.
  • Fixed multiple objective registration issues including inverted isTargetedPlayer check, wrong UUID in leave-handler, missing player-targeted refresh on join/leave, and retry for offline targets.
  • Fixed goal reference being retained after objective is unregistered.
  • Removed auto-lock of ROOT rotation when loading poses; root lock is now user-controlled.
  • Added lock rotation checkbox to the advanced and custom pose configuration screens.
  • Added model-specific pose key filtering in ConfigurationMenuHandler for the default pose screen.
  • Added unit tests for CustomPosition, CustomRotation, CustomScale, ModelPose, ModelAnimationBehavior and ModelAnimationData.
  • Added NPCDataIsolationTestHelper and game tests for Fabric and Forge.
  • Increased max head yaw range from 60° to 65°.

6.9.0

  • Fixed #692, #666 by adding caching and safeguards to prevent redundant retriggering of NPC entity data updates.
  • Fixed #651, #617 by adding basic custom poses for all supported NPC types.
  • Fixed #597 by adding additional Flee goals for fleeing from players, villagers, monsters, ...
  • Fixed pose loading to read directly from mod resources instead of copying files to disk.
  • Fixed duplicate saveNPC calls on entity join by checking existing registry entry first.
  • Added despawn and spawn commands to remove and re-spawn NPCs by UUID with configurable removal reasons.
  • Added ModelPoseAPI and EasyNPCEntityHandler public API classes for controlling NPC poses and managing NPCs programmatically from external mods.
  • Added pose data files for all supported NPC types.
  • Added lock rotation checkbox to the basic pose configuration screen.
  • Added MoveToPositionGoal to move an NPC to a position before executing a callback action.
  • Added EasyNPCLookControl and EasyNPCBodyRotationControl to respect locked root rotation.
  • Added synced owner change and dimension change to the NPC entity data index.
  • Added EasyNPCItemAttachmentLayer into various entity renderers.
  • Added dedicated Flee Objective configuration tab with objectives for fleeing creepers, monsters, mobs, players, villagers and the sun.
  • Added FOLLOW_ITEM objective to the follow objectives tab to make NPCs follow item entities by resource location (e.g. minecraft:apple).
  • Added LookAtEntityByUUIDGoal and enabled the look-at-entity-by-UUID and look-at-owner objectives in the look objectives screen.
  • Added persistent flag to SynchedDataIndex so that transient indices (e.g. crossbow charge, model animation) no longer trigger dirty-save marking.
  • Added configurable customParticlesEnabled flag to SlimeBase for API consumers.
  • Added SoundType.PET and mapped CAT_PURR to the cat NPC for tamed ambient sound variety.
  • Reduced log verbosity for periodic NPC save operations from INFO to DEBUG.

6.8.3

  • Fixed #680 by enforcing version miss-match by upgrading network protocol version.
  • Fixed #679 by resetting position, rotation and size for name tag.
  • Fixed #665 by adding multi state slide for root rotations.
  • Fixed #664 by adding option to disable following mouse cursor for easier posing.
  • Fixed #663 by improve support for X and Z root rotations.
  • Fixed #661 by adding quick rotation with NPC wand and sneaking to the NPC to rotate the root to face the player.
  • Fixed move tool is wrongly triggering interactions by adding check for move tool in interaction handler.
  • Fixed Preset Item is wrongly triggering interactions by adding check for preset item in interaction handler.
  • Fixed Slime and Ghast hitbox and name tag position issues by adjusting bounding box and eye height calculations.
  • Fixed Slime and Ghast GUI position by adjusting offset values.

6.8.2

  • Fixed #677 by extending SafeMerchantData with notifyTrade to avoid crashes.
  • Added progression data support for leveling up NPCs based on player interactions and actions.
  • Added global NPC tracking system for better management and debugging of NPCs across the world.
  • Added OriginalModelConfig.withVariantTexture() option to allow using variant textures with the original model.

6.8.1

  • Fixed #676 by using existing preset helper method instead of custom one.

6.8.0 (Adding API support)

  • Fixed #667 by adding warning messages and additional checks for invalid network packets.
  • Fixed Horse spawn eggs model.
  • Fixed pose support for allay, chicken, creeper, fox, ghast, horse, illager, iron golem, slime and vex.
  • Added NPC base classes for better API support.
  • Added NPC raw classes for advanced API support.
  • Added Slim and Ghast NPC types.
  • Added Custom Model API for easier integration with other mods and custom models.
  • Refactored internal data handling and registration for better maintainability and future improvements.

6.7.1

  • Fixed #657 and #656 by adding additional client side checks for vanilla bug.

6.7.0

  • Fixed #650 by implementing Wolf Leg Animations in setupAnim method.
  • Fixed #648 by fixing canBeHitByProjectiles translation.
  • Fixed #645 by adding allowBypassInvulnerability config option to allow/deny bypassing invulnerability for NPCs.
  • Fixed delete button showing label even with small width.
  • Fixed up and down buttons not positioned correctly in some cases.
  • Fixed name tag showing up for dialog and configuration UI.
  • Fixed distance action issue were multiple actions are not properly triggered.
  • Fixed issues with NPC presets.
  • Fixed Cat NPC and Wolf NPC owner data not syncing properly.
  • Added preset browser for easier selection of common NPC presets.
  • Added preset .snbt (text) export and import functionality for sharing NPC presets.
  • Refactored existing NPC presets to use new .snbt format.
  • Refactored spawner system to use new preset format for better maintainability and future improvements.

6.6.2

  • Fixed #643 by rework scaling system.
  • Fixed scaling not properly updating hitbox and nametag position after restart / reload.
  • Added MID and MOUSE_OVER name tag visibility modes for finer control over NPC name display.
  • Added team-based name tag visibility support respecting vanilla Team.

6.6.1

  • Fixed #638 by refactored internal data handling for display attributes.

6.6.0

  • Fixed #634 by implementing asynchronous texture loading with dedicated thread pool.
  • Fixed texture loading blocking render thread causing game freezes.
  • Fixed race conditions in texture reload protection using atomic operations.
  • Fixed resource leaks in HTTP connections during remote texture downloads.
  • Fixed URL validation spam allowing multiple simultaneous downloads of the same texture.
  • Fixed exception handling for remote image validation preventing crashes on invalid URLs.
  • Fixed defineId called for: warning messages during NPC loading.
  • Refactored texture loading architecture with multi-level defense and rate limiting.
  • Refactored entity data registration logic for better maintainability.
  • Converted data classes to modern Java records for better immutability and thread-safety.
  • Added thread-safe session server spam protection with ConcurrentHashMap.
  • Added comprehensive error recovery with automatic cooldown reset on failures.
  • Improved texture loading with 2-thread pool and 500ms rate limiting.
  • Improved exception handling with specific catch blocks for IIOException and FileNotFoundException.

6.5.

... [内容过长已截断]

Easy NPC (Bundle) 6.9.0

on 2026 Mar 11
下载

Easy NPC (1.20.1) 更新日志

注意

此更新日志包含变更摘要。 如需查看完整更新日志,请前往 GitHub History。

注意:在更新到新版本之前,请务必备份你的世界/非玩家角色数据! 更多信息请查看 升级指南。

6.9.0

  • 修复 #692、#666:添加缓存与防护措施,防止非玩家角色实体数据更新被冗余地重复触发。
  • 修复 #651、#617:为所有支持的非玩家角色类型添加基础自定义姿势。
  • 修复 #597:添加额外的逃跑(Flee)目标,用于从玩家、村民、敌对生物等对象处逃离……
  • 修复姿势加载:直接从模组资源读取,而不是将文件复制到磁盘。
  • 修复实体加入时重复调用 saveNPC:先检查是否已存在注册表条目。
  • 新增 despawn 与 spawn 命令:可通过 UUID 移除并重新生成非玩家角色,并支持可配置的移除原因。
  • 新增 ModelPoseAPI 与 EasyNPCEntityHandler 公共 API 类:用于控制非玩家角色姿势,并允许外部模组以编程方式管理非玩家角色。
  • 为所有支持的非玩家角色类型添加姿势数据文件。
  • 在基础姿势配置界面新增“锁定旋转”复选框。
  • 新增 MoveToPositionGoal:使非玩家角色在执行回调动作前先移动到指定位置。
  • 新增 EasyNPCLookControl 与 EasyNPCBodyRotationControl:以遵循锁定的根部旋转。
  • 将已同步的所有者变更与维度变更加入非玩家角色实体数据索引。
  • 将 EasyNPCItemAttachmentLayer 添加到多种实体渲染器中。
  • 新增专用的 Flee Objective 配置选项卡,提供针对苦力怕、敌对生物、生物、玩家、村民以及太阳的逃离目标。
  • 在跟随目标选项卡中新增 FOLLOW_ITEM 目标:使非玩家角色按资源位置跟随物品实体(例如 minecraft:apple)。
  • 新增 LookAtEntityByUUIDGoal,并在注视目标界面启用“按 UUID 注视实体”和“注视所有者”目标。
  • 为 SynchedDataIndex 新增 persistent 标记,使短暂索引(例如弩充能、模型动画)不再触发脏保存标记。
  • 为 API 使用者在 SlimeBase 中新增可配置的 customParticlesEnabled 标记。
  • 新增 SoundType.PET,并将 CAT_PURR 映射到猫非玩家角色,以提供更多已驯服环境音的变化。
  • 将周期性非玩家角色保存操作的日志详细程度从 INFO 降为 DEBUG。

6.8.3

  • 修复 #680:通过升级网络协议版本来强制处理版本不匹配。
  • 修复 #679:重置命名牌的位置、旋转与大小。
  • 修复 #665:为根部旋转添加多状态滑动设置。
  • 修复 #664:新增选项,可禁用跟随鼠标光标,便于摆姿势。
  • 修复 #663:改进对 X 与 Z 根部旋转的支持。
  • 修复 #661:新增快速旋转——使用 NPC 法杖并潜行,可让非玩家角色将根部旋转为面向玩家。
  • 修复移动工具错误触发交互:在交互处理程序中增加对移动工具的检查。
  • 修复预设物品错误触发交互:在交互处理程序中增加对预设物品的检查。
  • 修复史莱姆与恶魂的碰撞箱与命名牌位置问题:调整碰撞箱与眼睛高度的计算方式。
  • 修复史莱姆与恶魂 GUI 位置:调整偏移值。

6.8.2

  • 修复 #677:为 SafeMerchantData 扩展 notifyTrade,避免崩溃。
  • 新增进度数据支持:可基于玩家交互与动作让非玩家角色升级。
  • 新增全局非玩家角色追踪系统:更好地在整个世界中管理与调试非玩家角色。
  • 新增 OriginalModelConfig.withVariantTexture() 选项:允许原版模型使用变种纹理。

6.8.1

  • 修复 #676:使用现有的预设辅助方法替代自定义实现。

6.8.0(添加 API 支持)

  • 修复 #667:为无效网络数据包添加警告信息与额外检查。
  • 修复马刷怪蛋模型。
  • 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
  • 新增非玩家角色基础类,以获得更好的 API 支持。
  • 新增非玩家角色原始类,以提供高级 API 支持。
  • 新增史莱姆与恶魂非玩家角色类型。
  • 新增自定义模型 API:便于与其他模组及自定义模型集成。
  • 重构内部数据处理与注册逻辑,以提升可维护性并便于未来改进。

6.7.1

  • 修复 #657 与 #656:为原版 bug 添加额外的仅客户端检查。

6.7.0

  • 修复 #650:在 setupAnim 方法中实现狼腿部动画。
  • 修复 #648:修正 canBeHitByProjectiles 的翻译。
  • 修复 #645:新增 allowBypassInvulnerability 配置选项,用于允许/禁止绕过非玩家角色的铁布衫效果。
  • 修复删除按钮在宽度较小时仍显示标签的问题。
  • 修复上下按钮在某些情况下位置不正确的问题。
  • 修复对话框与配置 UI 仍显示命名牌的问题。
  • 修复距离动作问题:多个动作未能正确触发。
  • 修复非玩家角色预设的相关问题。
  • 修复猫非玩家角色与狼非玩家角色的所有者数据未正确同步的问题。
  • 新增预设浏览器,便于选择常用非玩家角色预设。
  • 新增预设 .snbt(文本)导出与导入功能,用于分享非玩家角色预设。
  • 重构现有非玩家角色预设以使用新的 .snbt 格式。
  • 重构刷怪笼系统以使用新的预设格式,提升可维护性并便于未来改进。

6.6.2

  • 修复 #643:重做缩放系统。
  • 修复重启/重新加载后缩放未能正确更新碰撞箱与命名牌位置的问题。
  • 新增 MID 与 MOUSE_OVER 命名牌可见性模式,以更精细地控制非玩家角色名称显示。
  • 新增基于队伍的命名牌可见性支持,并遵循原版 Team。

6.6.1

  • 修复 #638:重构用于显示属性的内部数据处理。

6.6.0

  • 修复 #634:使用专用线程池实现异步材质加载。
  • 修复材质加载阻塞渲染线程导致游戏冻结的问题。
  • 修复在材质重载保护中使用原子操作导致的竞态条件。
  • 修复远程材质下载过程中 HTTP 连接的资源泄漏。
  • 修复 URL 校验刷屏问题:允许同一材质的多个同时下载。
  • 修复远程图片校验中的异常处理:防止无效 URL 导致崩溃。
  • 修复非玩家角色加载时的 defineId called for: 警告信息。
  • 重构材质加载架构:增加多层防护与速率限制。
  • 重构实体数据注册逻辑,以提升可维护性。
  • 将数据类转换为现代 Java record,以提升不可变性与线程安全。
  • 使用 ConcurrentHashMap 新增线程安全的会话服务器刷屏防护。
  • 新增全面的错误恢复机制:失败时自动重置冷却。
  • 改进材质加载:2 线程池与 500ms 速率限制。
  • 改进异常处理:为 IIOException 与 FileNotFoundException 使用更具体的 catch 分支。

6.5.2

  • 修复村民职业与职业皮肤问题。
  • 改进 GitHub 工作流:为 gradle 依赖添加缓存。
  • 改进 Gradle 构建时间与清理任务。

6.5.1

  • 修复 #632:实现 ON_KILL 动作类型与事件。
  • 修复 #629:改进材质处理性能、缓存与内存使用。
  • 修复 kill 命令无法对非玩家角色生效的问题。
  • 修复材质重载保护导致缓存被驱逐后无法重新加载的问题。
  • 修复远程图片校验器中的 WebP 校验 bug(缺少 return 语句)。
  • 重构材质处理逻辑,以提升可维护性并便于未来改进。
  • 新增基于时间的重载保护(60 秒),替代永久阻止机制。
  • 为材质处理新增更多单元测试。
  • 改进 gradle 构建任务。

6.5.0

  • ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 能力。
  • 修复 #627:重做剪刀实现,以获得更好的模组兼容性。
  • 修复 #625:使用旋转或移动的模型部件时出现的生动动画问题。
  • 修复使用缩放后的模型部件时默认动画被取消的问题。
  • 新增更好的姿势动画控制:smart、default 与 und none 选项。

6.4.1

  • 修复 #626:改进针对不同非玩家角色 UUID 的界面切换逻辑,感谢 Spawnblade 提供详细的调查与修复建议。

6.4.0

  • 修复 #626:改进对话数据校验与错误处理。
  • 修复 #623:重构渲染数据与渲染处理。
  • 修复 #622:确保自定义数据能正确保存与加载。
  • 修复“打开对话”动作类型:允许从其他非玩家角色打开对话。
  • 修复哈希相关问题:为 ConditionDataSet 与 ActionDataSet 补充 equals 与 hashCode 方法。
  • 为 #622 新增自定义数据测试物品,便于测试自定义数据。
  • 改进 records,并修复潜在的缺失数据问题。

6.3.0

  • 重构配置 UI 专用组件,并将其从核心模组中移除。
  • 修复对话数据:在发送到客户端前过滤对话数据。
  • 修复对话编辑器布局问题并提升易用性。
  • 修复部分对话数据字段缺少默认值的问题。
  • 新增对话优先级支持,用于控制对话执行顺序。
  • 新增对话与计分板动作的条件支持。
  • 新增对话频率支持,用于限制对话的显示频率。
  • 新增用于支持计分板与条件的非玩家角色预设。
  • 改进对话按钮数据格式,移除冗余字段。

6.2.0

  • 修复对话中的字符串注入问题。
  • 修复动作类型缺少翻译的问题。
  • 新增计分板动作类型:增加、减少、设置计分板数值。
  • 新增 @score(...) 非玩家角色宏,用于在对话中显示计分板数值。
  • 新增更多单元测试。
  • 改进旋转按钮:增加指示器并提升易用性。

6.1.2

  • 修复容器与菜单同步问题:缺少关闭容器数据包。
  • 修复关闭按钮在某些情况下无法使用的问题。
  • 修复界面切换时鼠标光标跳动的问题。
  • 修复翻译文件,并移除重复与已弃用条目。
  • 将 Easy NPC 法杖移至现有核心物品选项卡,而不是新建一个选项卡。
  • 为猫姿势添加对不同模型部件的支持(尾巴除外)。
  • 通过在不需要时禁用发光效果来提升 EasyNPCWand 的性能。
  • 改进自定义实体检测:排除显示实体、makers、throwns 与刷怪笼等非生物实体。
  • 改进猫变种处理。

6.1.1

  • 修复 #612:重新校验实体类型。
  • 修复 #610:对特定模型强制同步帽子与头部图层。
  • 修复兽人皮纹理。
  • 将相关逻辑移至仅客户端,以改进自定义模型支持与性能。
  • 改进玩家到 UUID 映射的缓存,用于玩家皮肤。
  • 将更换模型命令与逻辑限制为仅对 Doppler 非玩家角色生效。

6.1.0 ✨

这是一个重大版本。更新前请备份你的世界与非玩家角色数据。 此版本包含大量改进、优化与内部变更,且与早期版本并不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有非玩家角色及其配置数据可能无法正确加载,或需要手动调整。
  • 内部数据格式与部分行为已重构,以支持新的使用场景。

🧩 全新模块化结构

Easy NPC 现已拆分为三个独立模组:

  • Easy NPC – 捆绑包,包含 Core 与 Configuration UI,提供即装即用体验。
  • Easy NPC: Core – 轻量运行时与非玩家角色逻辑,依赖最小。面向服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 独立配置界面,用于创建与编辑非玩家角色。可安装在需要 UI 的客户端上。

🎯 为什么要这样改动?

  • 允许服务器与整合包在服务端仅部署 Core 模组,以获得更精简的配置。
  • 当并非处处都需要 UI 时,减少内存占用与加载时间。
  • 通过拆分 UI 与核心逻辑,加快开发与测试效率。

Easy NPC (Bundle) 6.9.0

on 2026 Mar 11
下载

Easy NPC (1.20.1) 更新日志

注意

本更新日志仅包含变更摘要。 完整更新日志请前往 GitHub History 查看。

注意:更新到新版本前,请务必备份你的世界/NPC! 更多信息请查看升级指南。

6.9.0

  • 修复 #692、#666:添加缓存与防护措施,防止 NPC 实体数据更新被重复触发。
  • 修复 #651、#617:为所有支持的 NPC 类型添加基础自定义姿势。
  • 修复 #597:添加额外的“逃跑”目标,用于从玩家、村民、敌对生物等处逃离。
  • 修复姿势加载:直接从模组资源读取,而不是将文件复制到磁盘。
  • 修复实体加入时重复调用 saveNPC:先检查是否已有注册表条目。
  • 新增 despawn 与 spawn 命令:可通过 UUID 移除并重新生成 NPC,并可配置移除原因。
  • 新增 ModelPoseAPI 与 EasyNPCEntityHandler 公共 API 类:供外部模组以编程方式控制 NPC 姿势与管理 NPC。
  • 为所有支持的 NPC 类型新增姿势数据文件。
  • 在基础姿势配置界面新增“旋转锁定”复选框。
  • 新增 MoveToPositionGoal:让 NPC 在执行回调动作前先移动到指定位置。
  • 新增 EasyNPCLookControl 与 EasyNPCBodyRotationControl:遵循已锁定的根部旋转。
  • 将“同步的所有者更改”和“维度更改”加入 NPC 实体数据索引。
  • 将 EasyNPCItemAttachmentLayer 加入到多个实体渲染器中。
  • 新增专用的 Flee Objective 配置选项卡:包含逃离苦力怕、敌对生物、生物、玩家、村民与太阳的目标。
  • 在跟随目标选项卡中新增 FOLLOW_ITEM 目标:使 NPC 按资源定位符跟随物品实体(例如 minecraft:apple)。
  • 新增 LookAtEntityByUUIDGoal,并在注视目标界面启用“按 UUID 注视实体”与“注视所有者”目标。
  • 在 SynchedDataIndex 中新增 persistent 标记:使临时索引(如弩:蓄力、模型动画)不再触发“脏保存”标记。
  • 为 API 使用者在 SlimeBase 中新增可配置的 customParticlesEnabled 标记。
  • 新增 SoundType.PET,并将 CAT_PURR 映射到猫 NPC,以提供驯服后闲置音效的多样性。
  • 将周期性 NPC 保存操作的日志详细程度从 INFO 降为 DEBUG。

6.8.3

  • 修复 #680:通过升级网络协议版本来强制处理版本不匹配。
  • 修复 #679:重置命名牌的位置、旋转与大小。
  • 修复 #665:为根部旋转加入多状态滑动。
  • 修复 #664:新增可选项,禁用跟随鼠标光标,便于摆姿势。
  • 修复 #663:改进对 X 与 Z 根部旋转的支持。
  • 修复 #661:新增使用 Npc 魔杖并潜行的快速旋转,让 NPC 的根部朝向玩家。
  • 修复移动工具错误触发交互:在交互处理程序中增加对移动工具的检查。
  • 修复预设物品错误触发交互:在交互处理程序中增加对预设物品的检查。
  • 修复史莱姆与恶魂的碰撞箱与命名牌位置问题:调整边界框与眼高计算。
  • 修复史莱姆与恶魂的 GUI 位置:调整偏移值。

6.8.2

  • 修复 #677:扩展 SafeMerchantData,加入 notifyTrade 以避免崩溃。
  • 新增进度数据支持:可基于玩家交互与动作让 NPC 升级。
  • 新增全局 NPC 跟踪系统:更好地管理与调试世界中的 NPC。
  • 新增 OriginalModelConfig.withVariantTexture() 选项:允许原版模型使用变体纹理。

6.8.1

  • 修复 #676:使用现有的预设辅助方法替代自定义方法。

6.8.0(添加 API 支持)

  • 修复 #667:为无效网络数据包增加警告信息与额外检查。
  • 修复马刷怪蛋模型。
  • 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、卫道士、铁傀儡、史莱姆与恼鬼的姿势支持。
  • 新增 NPC 基类,以提升 API 支持。
  • 新增 NPC 原始类,以支持高级 API。
  • 新增史莱姆与恶魂 NPC 类型。
  • 新增自定义模型 API:更易与其他模组和自定义模型集成。
  • 重构内部数据处理与注册逻辑:提升可维护性并便于未来改进。

6.7.1

  • 修复 #657 与 #656:针对原版 Bug 增加额外的客户端检查。

6.7.0

  • 修复 #650:在 setupAnim 方法中实现狼腿部动画。
  • 修复 #648:修正 canBeHitByProjectiles 的翻译。
  • 修复 #645:新增 allowBypassInvulnerability 配置选项,用于允许/禁止绕过 NPC 的铁布衫。
  • 修复删除按钮在宽度较小时仍显示标签。
  • 修复上/下按钮在某些情况下位置不正确。
  • 修复命名牌在对话框与配置 UI 中显示的问题。
  • 修复距离动作问题:多个动作未能正确触发。
  • 修复 NPC 预设相关问题。
  • 修复猫 NPC 与白色狼 NPC 的所有者数据未能正确同步。
  • 新增预设浏览器:更易选择常用 NPC 预设。
  • 新增预设 .snbt(文本)导出与导入功能:用于分享 NPC 预设。
  • 重构现有 NPC 预设以使用新的 .snbt 格式。
  • 重构刷怪笼系统以使用新的预设格式:提升可维护性并便于未来改进。

6.6.2

  • 修复 #643:重做缩放系统。
  • 修复重启/重载后缩放未能正确更新碰撞箱与命名牌位置的问题。
  • 新增 MID 与 MOUSE_OVER 命名牌可见模式:更精细地控制 NPC 名称显示。
  • 新增基于队伍的命名牌可见性支持,并遵循原版 Team。

6.6.1

  • 修复 #638:重构用于显示属性的内部数据处理。

6.6.0

  • 修复 #634:使用专用线程池实现异步材质加载。
  • 修复材质加载阻塞渲染线程导致游戏冻结的问题。
  • 修复材质重载保护中的竞态条件:改用原子操作。
  • 修复远程材质下载期间 HTTP 连接的资源泄漏。
  • 修复 URL 校验刷屏:允许同一材质的多个同时下载。
  • 修复远程图片校验中的异常处理:避免无效 URL 导致崩溃。
  • 修复 NPC 加载期间 defineId called for: 警告信息。
  • 重构材质加载架构:多层防护与速率限制。
  • 重构实体数据注册逻辑:提升可维护性。
  • 将数据类转换为现代 Java record:提升不可变性与线程安全性。
  • 新增线程安全的会话服务器刷屏保护(ConcurrentHashMap)。
  • 新增全面的错误恢复:失败时自动重置冷却。
  • 改进材质加载:2 线程池与 500ms 速率限制。
  • 改进异常处理:对 IIOException 与 FileNotFoundException 使用更具体的捕获。

6.5.2

  • 修复村民职业与工作皮肤问题。
  • 改进 GitHub 工作流:为 gradle 依赖添加缓存。
  • 改进 Gradle 构建时间与清理任务。

6.5.1

  • 修复 #632:实现 ON_KILL 动作类型与事件。
  • 修复 #629:改进材质处理性能、缓存与内存占用。
  • 修复 kill 命令对 NPC 不生效的问题。
  • 修复材质重载保护:避免缓存被逐出后无法重新加载。
  • 修复远程图片校验器中的 WebP 校验 Bug(缺少 return 语句)。
  • 重构材质处理逻辑:提升可维护性并便于未来改进。
  • 新增基于时间的重载保护(60 秒),替代永久阻止机制。
  • 新增额外的单元测试(材质处理)。
  • 改进 gradle 构建任务。

6.5.0

  • ⚠️ 移除 jar-in-jar 打包方式:提升模组兼容性与 API 能力。
  • 修复 #627:改进剪刀实现,以更好兼容其他模组。
  • 修复 #625:使用旋转或移动的模型部件时出现的生动动画问题。
  • 修复使用缩放的模型部件时默认动画被取消的问题。
  • 新增更好的姿势动画控制:smart、default 与 und 选项。

6.4.1

  • 修复 #626:改进不同 NPC UUID 的界面切换逻辑,感谢 Spawnblade 提供的详细调查与修复建议。

6.4.0

  • 修复 #626:改进对话数据校验与错误处理。
  • 修复 #623:重构渲染数据与渲染处理。
  • 修复 #622:确保自定义数据能正确保存与加载。
  • 修复打开对话动作类型:允许从其他 NPC 打开对话框。
  • 修复哈希问题:为 ConditionDataSet 与 ActionDataSet 补充 equals 与 hashCode 方法。
  • 为 #622 新增自定义数据测试物品,便于测试自定义数据。
  • 改进 records,并修复潜在的数据缺失问题。

6.3.0

  • 重构配置 UI 的专用组件,并将其从核心模组中移除。
  • 修复对话数据:在发送到客户端前过滤对话数据。
  • 修复对话编辑器布局问题,并提升易用性。
  • 修复某些对话数据字段缺少默认值的问题。
  • 新增对话优先级支持:控制对话执行顺序。
  • 新增对话与计分板动作的条件支持。
  • 新增对话频率支持:限制对话显示频率。
  • 新增用于计分板与条件支持的 NPC 预设。
  • 改进对话按钮数据格式:移除冗余字段。

6.2.0

  • 修复对话框中的字符串注入问题。
  • 修复动作类型缺少翻译的问题。
  • 新增计分板动作类型:增加、减少、设置计分板数值。
  • 新增 @score(...) NPC 宏:在对话中显示计分板数值。
  • 新增额外单元测试。
  • 改进纺线器按钮:加入指示器并提升易用性。

6.1.2

  • 修复容器与菜单同步问题:补发缺失的关闭容器数据包。
  • 修复关闭按钮在某些情况下无效的问题。
  • 修复在界面切换时鼠标光标跳动的问题。
  • 修复翻译文件并移除重复与已弃用条目。
  • 将 Easy NPC 魔杖移动到现有核心物品选项卡,而不是创建新的选项卡。
  • 新增猫姿势对不同模型部件的支持(尾巴除外)。
  • 改进 EasyNPCWand 的发光效果性能:不需要时禁用。
  • 改进高级实体探测器:排除展示实体、标记实体、投掷物与刷怪笼等非生物实体。
  • 改进猫变种处理。

6.1.1

  • 修复 #612:重新校验实体类型。
  • 修复 #610:对特定模型强制同步帽子与头部层。
  • 修复兽人皮纹理。
  • 改进自定义模型支持与性能:将相关逻辑仅保留在客户端。
  • 改进玩家到 UUID 映射的缓存(用于玩家皮肤)。
  • 将更改模型命令与逻辑限制为 Doppler NPC 专用。

6.1.0 ✨

这是一次重大版本更新。更新前请务必备份你的世界与 NPC 数据。 此版本包含大量改进、优化与内部变更,且与更早版本不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需要手动调整。
  • 为支持新的使用场景,内部数据格式与部分行为已被重构。

🧩 全新模块化结构

Easy NPC 现在拆分为三个独立模组:

  • Easy NPC – 整合包:同时包含 Core 与 Configuration UI,提供即装即用体验。
  • Easy NPC: Core – 轻量运行时与 NPC 逻辑,依赖最少。面向服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 独立配置界面:用于创建与编辑 NPC。可安装在需要 UI 的客户端上。

🎯 为什么要这样改?

  • 服务器与整合包可以在服务端仅发布 Core 模组,以获得更精简的配置。
  • 当不需要 UI 时,减少内存占用与加载时间。
  • 通过拆分 UI 与核心逻辑,让开发与测试更高效。

Easy NPC (Bundle) 6.8.4

on 2026 Feb 26
下载

Easy NPC (1.20.1) 更新日志

注意

本更新日志仅包含摘要性变更。 完整更新日志请前往 GitHub 历史记录。

注意:升级新版本前,请务必备份您的世界/NPC数据! 更多信息请参阅升级指南。

6.8.4

  • 为NPC实体数据中的所有者变更和维度变更添加同步支持。

6.8.3

  • 通过强制升级网络协议版本修复 #680(版本不匹配问题)。
  • 通过重置命名牌的位置、旋转和大小修复 #679。
  • 通过为根部旋转添加多状态滑动功能修复 #665。
  • 通过添加禁用跟随鼠标光标的选项(便于摆姿势)修复 #664。
  • 通过改进对X轴和Z轴根部旋转的支持修复 #663。
  • 通过添加潜行时使用NPC魔杖快速旋转功能(使根部朝向玩家)修复 #661。
  • 通过在交互处理器中添加移动工具检测,修复移动工具错误触发交互的问题。
  • 通过在交互处理器中添加预设物品检测,修复预设物品错误触发交互的问题。
  • 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及命名牌位置问题。
  • 通过调整偏移值修复史莱姆与恶魂的GUI位置问题。

6.8.2

  • 通过扩展 SafeMerchantData 并添加 notifyTrade 方法避免崩溃,修复 #677。
  • 新增基于玩家交互与行为的NPC升级进度数据支持。
  • 新增全局NPC追踪系统,便于跨世界管理与调试NPC。
  • 新增 OriginalModelConfig.withVariantTexture() 选项,允许原始模型使用额外纹理。

6.8.1

  • 通过使用现有预设辅助方法而非自定义方法修复 #676。

6.8.0(新增API支持)

  • 通过为无效网络数据包添加警告信息与额外检查修复 #667。
  • 修复马刷怪蛋模型。
  • 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
  • 新增NPC基础类以增强API支持。
  • 新增NPC原始类以支持高级API功能。
  • 新增史莱姆与恶魂NPC类型。
  • 新增自定义模型API,便于与其他模组及自定义模型集成。
  • 重构内部数据处理与注册逻辑,提升可维护性并为未来改进做准备。

6.7.1

  • 通过为原版漏洞添加额外客户端检查修复 #657 与 #656。

6.7.0

  • 通过在 setupAnim 方法中实现狼腿动画修复 #650。
  • 修复 canBeHitByProjectiles 的翻译问题。
  • 通过新增 allowBypassInvulnerability 配置选项,控制是否允许绕过NPC无敌状态,修复 #645。
  • 修复删除按钮在窄宽度下仍显示标签的问题。
  • 修复上下按钮在某些情况下定位错误的问题。
  • 修复对话框与配置界面中命名牌意外显示的问题。
  • 修复距离动作中多个动作未正确触发的问题。
  • 修复NPC预设相关问题。
  • 修复猫与狼NPC的所有者数据未正确同步的问题。
  • 新增预设浏览器,便于选择常用NPC预设。
  • 新增预设 .snbt(文本)导出与导入功能,便于分享NPC预设。
  • 重构现有NPC预设,改用新的 .snbt 格式。
  • 重构刷怪笼系统,采用新预设格式以提升可维护性并为未来改进做准备。

6.6.2

  • 通过重构缩放系统修复 #643。
  • 修复重启/重载后缩放未正确更新碰撞箱与命名牌位置的问题。
  • 新增 MID 与 MOUSE_OVER 命名牌可见模式,精细控制NPC名称显示。
  • 新增队伍基础命名牌可见性支持,兼容原版队伍系统。

6.6.1

  • 通过重构显示属性的内部数据处理修复 #638。

6.6.0

  • 通过实现异步材质加载(专用线程池)修复 #634。
  • 修复材质加载阻塞渲染线程导致游戏卡顿的问题。
  • 通过原子操作修复材质重载保护中的竞态条件。
  • 修复远程材质下载时HTTP连接的资源泄漏问题。
  • 修复URL验证垃圾信息,允许多个相同纹理同时下载。
  • 修复远程图片验证的异常处理,防止因无效URL导致崩溃。
  • 修复NPC加载时出现的 defineId called for: 警告信息。
  • 重构材质加载架构,加入多层防护与速率限制。
  • 重构实体数据注册逻辑,提升可维护性。
  • 将数据类转换为现代Java记录类,增强不可变性与线程安全。
  • 新增线程安全的会话服务器防刷机制(使用ConcurrentHashMap)。
  • 新增全面错误恢复机制,失败时自动重置冷却时间。
  • 改进材质加载:采用双线程池与500ms速率限制。
  • 改进异常处理:为IIOException与FileNotFoundException添加专用捕获块。

6.5.2

  • 修复村民职业与工作皮肤问题。
  • 通过为Gradle依赖添加缓存改进GitHub工作流。
  • 优化Gradle构建时间与清理任务。

6.5.1

  • 通过实现ON_KILL动作类型与事件修复 #632。
  • 通过优化材质处理性能、缓存与内存占用修复 #629。
  • 修复击杀命令对NPC无效的问题。
  • 修复材质重载保护阻止缓存被驱逐后重新加载的问题。
  • 修复远程图片验证器中的WebP验证错误(缺失return语句)。
  • 重构材质处理逻辑,提升可维护性并为未来改进做准备。
  • 新增基于时间的重载保护(60秒),替代永久屏蔽机制。
  • 新增材质处理的额外单元测试。
  • 优化Gradle构建任务。

6.5.0

  • ⚠️ 移除jar-in-jar捆绑方式,提升模组兼容性与API能力。
  • 通过改进剪刀实现方式修复 #627,提升与其他模组的兼容性。
  • 通过修复旋转或移动模型部件时的生动动画问题修复 #625。
  • 修复使用缩放模型部件时默认动画被取消的问题。
  • 新增智能、默认与无三种姿势动画控制选项。

6.4.1

  • 通过改进不同NPC UUID的屏幕切换逻辑修复 #626,感谢 Spawnblade 的详细调查与修复建议。

6.4.0

  • 通过改进对话数据验证与错误处理修复 #626。
  • 通过重构渲染数据与渲染处理修复 #623。
  • 通过确保自定义数据正确保存与加载修复 #622。
  • 修复打开对话动作类型,允许从其他NPC打开对话。
  • 通过为ConditionDataSet与ActionDataSet添加缺失的equals与hashCode方法修复哈希问题。
  • 为 #622 新增自定义数据测试物品,便于测试自定义数据。
  • 改进记录类并修复潜在缺失数据问题。

6.3.0

  • 重构配置界面专用组件并将其从核心模组中移除。
  • 通过在发送至客户端前过滤对话数据修复对话数据问题。
  • 修复对话编辑器布局问题并提升可用性。
  • 修复部分对话数据字段缺失默认值的问题。
  • 新增对话优先级支持,控制对话执行顺序。
  • 新增对话与计分板动作的条件支持。
  • 新增对话频率支持,限制对话显示频率。
  • 新增支持计分板与条件的新NPC预设。
  • 通过移除冗余字段改进对话按钮数据格式。

6.2.0

  • 修复对话内的字符串注入问题。
  • 修复动作类型缺失翻译的问题。
  • 新增计分板动作类型,支持增加、减少、设置计分板数值。
  • 新增 @score(...) NPC宏,在对话中显示计分板数值。
  • 新增额外单元测试。
  • 改进旋转按钮,添加指示器并提升可用性。

6.1.2

  • 通过补充缺失的关闭容器数据包修复容器与菜单同步问题。
  • 修复某些情况下关闭按钮无效的问题。
  • 修复屏幕切换间鼠标光标跳动的问题。
  • 修复翻译文件,移除重复与已弃用条目。
  • 将Easy NPC魔杖移至现有核心物品选项卡,而非新建选项卡。
  • 新增猫姿势支持(除尾巴外的不同模型部件)。
  • 通过在非必要时禁用发光效果,提升EasyNPCWand发光效果性能。
  • 通过排除展示物、造物主、投掷物与刷怪笼等非生物实体,改进自定义实体检测。
  • 改进猫品种处理。

6.1.1

  • 通过重新验证实体类型修复 #612。
  • 通过强制同步特定模型的帽子与头部图层修复 #610。
  • 修复兽人材质。
  • 通过将相关逻辑移至仅客户端,改进自定义模型支持与性能。
  • 改进玩家皮肤的玩家到UUID映射缓存。
  • 限制更改模型命令与逻辑仅适用于Doppler NPC。

6.1.0 ✨

此为重大版本更新。升级前请务必备份您的世界与NPC数据。 本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。

⚠️ 破坏性变更

  • 6.1.0之前版本的现有NPC及其配置数据可能无法正确加载,或需手动调整。
  • 为支持新用例,内部数据格式与部分行为已重构。

🧩 新模块化结构

Easy NPC现拆分为三个独立模组:

  • Easy NPC – 包含核心与配置界面的捆绑包,提供即插即用体验。
  • Easy NPC: Core – 轻量级NPC运行时与逻辑,依赖极少。适用于服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 用于创建与编辑NPC的独立配置界面。可安装于需要UI的客户端。

🎯 为何如此变更?

  • 允许服务器与整合包仅在服务端部署核心模组,实现更精简配置。
  • 在无需UI时减少内存占用与加载时间。
  • 通过分离UI与核心逻辑,加速开发与测试。

Easy NPC (Bundle) 6.8.4

on 2026 Feb 26
下载

Easy NPC (1.20.1) 更新日志

注意事项

本更新日志仅包含摘要性变更。 完整更新日志请前往 GitHub 历史记录 查阅。

注意:升级新版本前,请务必备份您的世界/NPC 数据! 更多信息请参阅 升级指南。

6.8.4

  • 为 NPC 实体数据中的所有者变更与维度变更添加同步支持。

6.8.3

  • 通过强制升级网络协议版本修复 #680(版本不匹配问题)。
  • 通过重置名称标签的位置、旋转和大小修复 #679。
  • 通过为根部旋转添加多状态滑动功能修复 #665。
  • 通过添加选项禁用跟随鼠标光标,便于摆姿势,修复 #664。
  • 通过增强对 X 和 Z 轴根部旋转的支持修复 #663。
  • 通过添加潜行时使用 NPC 法杖快速旋转根部朝向玩家的功能修复 #661。
  • 通过在交互处理器中增加移动工具检测,修复移动工具错误触发交互的问题。
  • 通过在交互处理器中增加预设物品检测,修复预设物品错误触发交互的问题。
  • 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及名称标签位置问题。
  • 通过调整偏移值修复史莱姆与恶魂 GUI 位置问题。

6.8.2

  • 通过扩展 SafeMerchantData 并添加 notifyTrade 避免崩溃,修复 #677。
  • 新增进度数据支持,允许根据玩家交互与行为提升 NPC 等级。
  • 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
  • 新增 OriginalModelConfig.withVariantTexture() 选项,支持原始模型使用变种纹理。

6.8.1

  • 通过使用现有预设辅助方法而非自定义方法修复 #676。

6.8.0(新增 API 支持)

  • 通过为无效网络数据包添加警告信息与额外检查修复 #667。
  • 修复马刷怪蛋模型。
  • 修复悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆与恼鬼的姿势支持。
  • 新增 NPC 基础类以增强 API 支持。
  • 新增 NPC 原始类以支持高级 API 功能。
  • 新增史莱姆与恶魂 NPC 类型。
  • 新增自定义模型 API,便于与其他模组及自定义模型集成。
  • 重构内部数据处理与注册逻辑,提升可维护性并为未来改进做准备。

6.7.1

  • 通过为原版漏洞添加额外客户端检查修复 #657 与 #656。

6.7.0

  • 通过在 setupAnim 方法中实现狼腿动画修复 #650。
  • 修复 canBeHitByProjectiles 的翻译问题(#648)。
  • 通过添加 allowBypassInvulnerability 配置选项,允许/禁止绕过 NPC 的无敌效果,修复 #645。
  • 修复删除按钮在宽度较小时仍显示标签的问题。
  • 修复上下按钮在某些情况下位置不正确的问题。
  • 修复对话框与配置 GUI 中名称标签意外显示的问题。
  • 修复距离动作触发多个动作时未能正确执行的问题。
  • 修复 NPC 预设相关问题。
  • 修复猫与狼 NPC 的所有者数据未正确同步的问题。
  • 新增预设浏览器,便于选择常用 NPC 预设。
  • 新增预设 .snbt(文本)导出与导入功能,便于共享 NPC 预设。
  • 重构现有 NPC 预设以使用新的 .snbt 格式。
  • 重构刷怪笼系统,采用新预设格式以提升可维护性并为未来改进做准备。

6.6.2

  • 通过重构缩放系统修复 #643。
  • 修复重启/重载后缩放未能正确更新碰撞箱与名称标签位置的问题。
  • 新增 MID 与 MOUSE_OVER 名称标签可见模式,精细控制 NPC 名称显示。
  • 新增基于队伍的名称标签可见性支持,兼容原版队伍系统。

6.6.1

  • 通过重构显示属性的内部数据处理修复 #638。

6.6.0

  • 通过使用专用线程池实现异步材质加载修复 #634。
  • 修复材质加载阻塞渲染线程导致游戏卡顿的问题。
  • 通过原子操作修复材质重载保护中的竞态条件。
  • 修复远程材质下载时 HTTP 连接的资源泄漏问题。
  • 修复 URL 验证垃圾信息,允许多个相同材质同时下载。
  • 修复远程图像验证的异常处理,避免因无效 URL 导致崩溃。
  • 修复 NPC 加载时出现的 defineId called for: 警告信息。
  • 重构材质加载架构,加入多层防御与速率限制机制。
  • 重构实体数据注册逻辑,提升可维护性。
  • 将数据类转换为现代 Java 记录类,增强不可变性与线程安全性。
  • 新增线程安全的会话服务器防刷机制,使用 ConcurrentHashMap。
  • 新增全面的错误恢复机制,在失败时自动重置冷却时间。
  • 改进材质加载,采用 2 线程池与 500ms 速率限制。
  • 改进异常处理,为 IIOException 与 FileNotFoundException 添加特定捕获块。

6.5.2

  • 修复村民职业与工作皮肤问题。
  • 通过为 Gradle 依赖项添加缓存改进 GitHub 工作流。
  • 优化 Gradle 构建时间与清理任务。

6.5.1

  • 通过实现 ON_KILL 动作类型与事件修复 #632。
  • 通过优化材质处理性能、缓存与内存占用修复 #629。
  • 修复击杀命令对 NPC 无效的问题。
  • 修复材质重载保护阻止缓存重载的问题。
  • 修复远程图像验证器中的 WebP 验证错误(缺失 return 语句)。
  • 重构材质处理逻辑,提升可维护性并为未来改进做准备。
  • 新增基于时间的重载保护(60 秒),取代永久屏蔽机制。
  • 新增材质处理的额外单元测试。
  • 优化 Gradle 构建任务。

6.5.0

  • ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 功能。
  • 通过改进剪刀实现方式提升与其他模组的兼容性,修复 #627。
  • 修复使用旋转或移动模型部件时生动动画失效的问题(#625)。
  • 修复使用缩放模型部件时默认动画被取消的问题。
  • 新增智能、默认、无三种姿势动画控制选项。

6.4.1

  • 修复不同 NPC UUID 的界面切换逻辑,感谢 Spawnblade 提供详细调查与修复建议(#626)。

6.4.0

  • 通过改进对话数据验证与错误处理修复 #626。
  • 通过重构渲染数据与渲染处理修复 #623。
  • 通过确保自定义数据正确保存与加载修复 #622。
  • 修复打开对话动作类型,允许从其他 NPC 打开对话。
  • 通过为 ConditionDataSet 与 ActionDataSet 添加缺失的 equals 与 hashCode 方法修复哈希问题。
  • 为 #622 新增自定义数据测试物品,便于测试自定义数据。
  • 优化记录类并修复潜在的缺失数据问题。

6.3.0

  • 重构配置 UI 专用组件并将其从核心模组中移除。
  • 通过在发送至客户端前过滤对话数据修复对话数据问题。
  • 修复对话编辑器布局问题并提升可用性。
  • 修复部分对话数据字段缺失默认值的问题。
  • 新增对话优先级支持,控制对话执行顺序。
  • 新增对话与计分板动作的条件支持。
  • 新增对话频率支持,限制对话显示频率。
  • 新增支持计分板与条件的新 NPC 预设。
  • 通过移除冗余字段优化对话按钮数据格式。

6.2.0

  • 修复对话内的字符串注入问题。
  • 修复动作类型缺失翻译的问题。
  • 新增计分板动作类型,支持增加、减少、设置计分板数值。
  • 新增 @score(...) NPC 宏,在对话中显示计分板数值。
  • 新增额外单元测试。
  • 优化旋转按钮,添加指示器并提升可用性。

6.1.2

  • 修复因缺少关闭容器数据包导致的容器与菜单同步问题。
  • 修复某些情况下关闭按钮无效的问题。
  • 修复屏幕切换时光标跳跃的问题。
  • 修复翻译文件,移除重复与已弃用条目。
  • 将 Easy NPC 法杖移至现有核心物品选项卡,而非创建新选项卡。
  • 新增猫不同模型部件(尾巴除外)的姿势支持。
  • 通过在不需要时禁用发光效果,优化 EasyNPCWand 发光性能。
  • 通过排除显示器、造物主、投掷物与刷怪笼等非生物实体,优化自定义实体检测。
  • 优化猫品种处理。

6.1.1

  • 通过重新验证实体类型修复 #612。
  • 通过强制同步特定模型的帽子与头部图层修复 #610。
  • 修复兽人纹理。
  • 通过将相关逻辑移至仅客户端,优化自定义模型支持与性能。
  • 优化玩家皮肤的玩家到 UUID 映射缓存。
  • 限制更改模型命令与逻辑仅适用于 Doppler NPC。

6.1.0 ✨

此为重大版本更新。升级前请务必备份您的世界与 NPC 数据。 本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需手动调整。
  • 内部数据格式与部分行为已重构,以支持新用例。

🧩 新模块化结构

Easy NPC 现拆分为三个独立模组:

  • Easy NPC – 包含核心与配置 UI 的捆绑包,提供即插即用体验。
  • Easy NPC: Core – 轻量级 NPC 运行时与逻辑,依赖极少,适用于服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 独立配置界面,用于创建与编辑 NPC,可安装于需要 UI 的客户端。

🎯 为何如此变更?

  • 允许服务器与整合包仅在服务端部署 Core 模组,实现更精简设置。
  • 在无需 UI 时减少内存占用与加载时间。
  • 通过分离 UI 与核心逻辑,加快开发与测试速度。

Easy NPC (Bundle) 6.8.3

on 2026 Feb 18
下载

Easy NPC (1.20.1) 更新日志

注意事项

本更新日志仅包含摘要性变更。
完整更新日志请前往 GitHub 提交历史 查看。

注意:在更新至新版本前,请务必备份你的世界与NPC数据!
更多信息请参阅 升级指南。

6.8.3

  • 通过升级网络协议版本强制校验版本不匹配问题,修复 #680。
  • 通过重置命名牌的位置、旋转和大小,修复 #679。
  • 为根部旋转添加多状态滑动支持,修复 #665。
  • 添加选项以禁用跟随鼠标光标的自动朝向功能,便于调整姿势,修复 #664。
  • 改进对 X 和 Z 轴根部旋转的支持,修复 #663。
  • 在交互处理器中增加移动工具检测,防止移动工具误触发交互,修复相关问题。
  • 在交互处理器中增加预设物品检测,防止预设物品误触发交互,修复相关问题。
  • 通过调整边界框和眼睛高度计算,修复史莱姆与恶魂的碰撞箱及命名牌位置问题。
  • 通过调整偏移值,修复史莱姆与恶魂的 GUI 位置问题。

6.8.2

  • 扩展 SafeMerchantData 并加入 notifyTrade 方法以避免崩溃,修复 #677。
  • 新增基于玩家交互与行为的 NPC 升级进度数据支持。
  • 新增全局 NPC 追踪系统,便于跨世界管理与调试 NPC。
  • 为 OriginalModelConfig 添加 withVariantTexture() 选项,允许原始模型使用变体材质。

6.8.1

  • 使用现有预设辅助方法替代自定义方法,修复 #676。

6.8.0(新增 API 支持)

  • 添加无效网络数据包的警告信息与额外检查,修复 #667。
  • 修复马刷怪蛋的模型显示问题。
  • 为悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆和恼鬼添加姿势支持。
  • 新增 NPC 基础类,以提供更好的 API 支持。
  • 新增 NPC 原始类,用于高级 API 集成。
  • 新增史莱姆与恶魂 NPC 类型。
  • 新增自定义模型 API,便于与其他模组及自定义模型集成。
  • 重构内部数据处理与注册逻辑,提升可维护性并为未来改进打下基础。

6.7.1

  • 通过添加额外的客户端检查以规避原版漏洞,修复 #657 与 #656。

6.7.0

  • 在 setupAnim 方法中实现狼腿部动画,修复 #650。
  • 修正 canBeHitByProjectiles 的翻译问题,修复 #648。
  • 新增 allowBypassInvulnerability 配置选项,用于控制是否允许绕过 NPC 的无敌状态,修复 #645。
  • 修复删除按钮在宽度较小时仍显示标签的问题。
  • 修复上/下按钮在某些情况下位置不正确的问题。
  • 修复命名牌在对话框与配置界面中意外显示的问题。
  • 修复距离触发动作中多个动作未能正确触发的问题。
  • 修复 NPC 预设相关问题。
  • 修复猫与狼 NPC 的所有者数据未正确同步的问题。
  • 新增预设浏览器,便于快速选择常用 NPC 预设。
  • 新增预设 .snbt(文本)导出与导入功能,方便共享 NPC 预设。
  • 将现有 NPC 预设重构为新的 .snbt 格式。
  • 重构刷怪笼系统,采用新预设格式以提升可维护性并支持未来改进。

6.6.2

  • 重构缩放系统,修复 #643。
  • 修复重启/重载后缩放未正确更新碰撞箱与命名牌位置的问题。
  • 新增 MID 与 MOUSE_OVER 命名牌可见性模式,实现对 NPC 名称显示的精细控制。
  • 新增基于队伍的命名牌可见性支持,遵循原版队伍机制。

6.6.1

  • 重构显示属性的内部数据处理逻辑,修复 #638。

6.6.0

  • 通过专用线程池实现异步材质加载,修复 #634。
  • 修复材质加载阻塞渲染线程导致游戏冻结的问题。
  • 使用原子操作修复材质重载保护中的竞态条件。
  • 修复远程材质下载时 HTTP 连接的资源泄漏问题。
  • 修复 URL 验证重复触发问题,避免同一材质被多次同时下载。
  • 修复无效 URL 导致崩溃的问题,改进远程图片验证的异常处理。
  • 修复 NPC 加载时出现的 defineId called for: 警告信息。
  • 重构材质加载架构,加入多层防护与速率限制机制。
  • 重构实体数据注册逻辑,提升可维护性。
  • 将数据类转换为现代 Java 记录(records),增强不可变性与线程安全性。
  • 使用 ConcurrentHashMap 添加线程安全的会话服务器垃圾信息防护。
  • 添加全面的错误恢复机制,在失败时自动重置冷却时间。
  • 改进材质加载性能:使用 2 线程池并设置 500ms 速率限制。
  • 改进异常处理,为 IIOException 与 FileNotFoundException 添加专用捕获块。

6.5.2

  • 修复村民职业与工作皮肤显示问题。
  • 改进 GitHub 工作流,为 Gradle 依赖添加缓存。
  • 优化 Gradle 构建时间与清理任务。

6.5.1

  • 实现 ON_KILL 动作类型与事件,修复 #632。
  • 优化材质处理性能、缓存与内存使用,修复 #629。
  • 修复对 NPC 使用 kill 命令无效的问题。
  • 修复驱逐后缓存无法重新加载的问题,完善材质重载保护。
  • 修复远程图片验证器中的 WebP 验证漏洞(缺失 return 语句)。
  • 重构材质处理逻辑,提升可维护性并支持未来改进。
  • 添加基于时间的重载保护(60 秒),替代永久性屏蔽机制。
  • 为材质处理添加额外的单元测试。
  • 改进 Gradle 构建任务。

6.5.0

  • ⚠️ 移除 jar-in-jar 捆绑方式,以提升模组兼容性与 API 能力。
  • 改进剪刀功能实现,提升与其他模组的兼容性,修复 #627。
  • 修复使用旋转或移动模型部件时动画异常的问题,修复 #625。
  • 修复使用缩放模型部件时默认动画被取消的问题。
  • 新增更智能的姿势动画控制选项:smart(智能)、default(默认)、none(无)。

6.4.1

  • 修复不同 NPC UUID 间的界面切换逻辑,感谢 Spawnblade 提供详细调查与修复建议,修复 #626。

6.4.0

  • 通过改进对话数据验证与错误处理,修复 #626。
  • 通过重构渲染数据与渲染处理逻辑,修复 #623。
  • 确保自定义数据能正确保存与加载,修复 #622。
  • 修复“打开对话框”动作类型,使其能从其他 NPC 触发对话。
  • 为 ConditionDataSet 与 ActionDataSet 添加缺失的 equals 与 hashCode 方法,修复哈希问题。
  • 为 #622 添加自定义数据测试物品,便于测试自定义数据。
  • 改进记录(records)结构,修复潜在的缺失数据问题。

6.3.0

  • 将配置界面专用组件从核心模组中分离并重构。
  • 在发送至客户端前过滤对话数据,修复对话数据问题。
  • 修复对话编辑器布局问题并提升可用性。
  • 为部分对话数据字段补充缺失的默认值。
  • 新增对话优先级支持,用于控制对话执行顺序。
  • 为对话与计分板动作添加条件支持。
  • 为对话添加频率限制功能,控制对话显示频率。
  • 新增支持计分板与条件的 NPC 预设。
  • 精简对话按钮数据格式,移除冗余字段。

6.2.0

  • 修复对话中的字符串注入问题。
  • 补充动作类型的缺失翻译。
  • 新增计分板动作类型,支持增加、减少或设定计分板数值。
  • 新增 @score(...) NPC 宏,用于在对话中显示计分板数值。
  • 添加额外的单元测试。
  • 改进带指示器的旋钮按钮,提升可用性。

6.1.2

  • 修复因缺少关闭容器数据包导致的容器与菜单同步问题。
  • 修复某些情况下关闭按钮无效的问题。
  • 修复界面切换时光标跳动的问题。
  • 清理翻译文件,移除重复与已弃用的条目。
  • 将 Easy NPC 法杖移至现有的核心物品栏,而非创建新栏位。
  • 为猫添加除尾巴外各模型部件的姿势支持。
  • 在无需时禁用 EasyNPCWand 的发光效果,提升性能。
  • 改进自定义实体检测,排除非生物实体(如展示物、造物者、投掷物与刷怪笼)。
  • 改进猫变种处理逻辑。

6.1.1

  • 通过重新验证实体类型,修复 #612。
  • 为特定模型强制同步帽子与头部图层,修复 #610。
  • 修复兽人皮材质问题。
  • 将相关逻辑移至仅客户端执行,提升自定义模型支持与性能。
  • 优化玩家皮肤 UUID 映射的缓存机制。
  • 限制模型更换命令与逻辑仅对 Doppler NPC 生效。

6.1.0 ✨

此为重大版本更新。更新前请务必备份你的世界与 NPC 数据。
本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需手动调整。
  • 为支持新用例,内部数据格式与部分行为已重构。

🧩 全新模块化结构

Easy NPC 现拆分为三个独立模组:

  • Easy NPC – 包含 Core 与 Configuration UI 的完整捆绑包,开箱即用。
  • Easy NPC: Core – 轻量级 NPC 运行时与逻辑核心,依赖极少,适用于服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 独立的 NPC 创建与编辑配置界面,可单独安装于需要 UI 的客户端。

🎯 为何如此变更?

  • 允许服务器与整合包仅在服务端部署 Core 模组,实现更精简的配置。
  • 在无需 UI 的场景下降低内存占用并缩短加载时间。
  • 通过分离 UI 与核心逻辑,加快开发与测试速度。

Easy NPC (Bundle) 6.8.3

on 2026 Feb 18
下载

Easy NPC 更新日志(1.20.1)

注意

本更新日志仅包含简要变更摘要。
完整更新日志请前往 GitHub 提交历史 查看。

注意:在更新至新版本前,请务必备份你的世界/NPC 数据!
更多信息请参阅 升级指南。

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 基础类以更好地支持 API。
  • 新增 NPC 原始类以支持高级 API 功能。
  • 新增史莱姆与恶魂 NPC 类型。
  • 新增自定义模型 API,便于与其他模组及自定义模型集成。
  • 重构内部数据处理与注册逻辑,提升可维护性并为未来改进打下基础。

6.7.1

  • 通过添加额外的客户端校验以规避原版漏洞,修复 #657 与 #656。

6.7.0

  • 通过在 setupAnim 方法中实现狼腿部动画,修复 #650。
  • 修复 canBeHitByProjectiles 的翻译问题,修复 #648。
  • 通过添加 allowBypassInvulnerability 配置选项,允许/禁止绕过 NPC 的无敌效果,修复 #645。
  • 修复删除按钮在宽度较小时仍显示标签的问题。
  • 修复上下按钮在某些情况下位置不正确的问题。
  • 修复对话框和配置 GUI 中命名牌意外显示的问题。
  • 修复距离触发行为中多个动作未能正确触发的问题。
  • 修复 NPC 预设相关问题。
  • 修复猫 NPC 与狼 NPC 所有者数据未正确同步的问题。
  • 新增预设浏览器,便于快速选择常用 NPC 预设。
  • 新增预设 .snbt(文本)导出与导入功能,便于分享 NPC 预设。
  • 将现有 NPC 预设重构为使用新的 .snbt 格式。
  • 重构刷怪笼系统以使用新预设格式,提升可维护性并为未来改进打下基础。

6.6.2

  • 通过重构缩放系统,修复 #643。
  • 修复重启/重载后缩放未能正确更新碰撞箱与命名牌位置的问题。
  • 新增 MID 与 MOUSE_OVER 命名牌可见性模式,实现对 NPC 名称显示的精细控制。
  • 新增基于队伍的命名牌可见性支持,兼容原版队伍机制。

6.6.1

  • 通过重构显示属性的内部数据处理逻辑,修复 #638。

6.6.0

  • 通过实现带专用线程池的异步材质加载,修复 #634。
  • 修复材质加载阻塞渲染线程导致游戏冻结的问题。
  • 通过原子操作修复材质重载保护中的竞态条件。
  • 修复远程材质下载时 HTTP 连接的资源泄漏问题。
  • 修复 URL 校验重复触发问题,允许多个相同材质同时下载。
  • 修复远程图片校验中的异常处理,防止因无效 URL 导致崩溃。
  • 修复 NPC 加载过程中出现的 defineId called for: 警告信息。
  • 重构材质加载架构,采用多层防御机制与速率限制。
  • 重构实体数据注册逻辑,提升可维护性。
  • 将数据类转换为现代 Java 记录(records),增强不可变性与线程安全性。
  • 新增基于 ConcurrentHashMap 的线程安全会话服务器防刷机制。
  • 新增全面的错误恢复机制,在失败时自动重置冷却时间。
  • 改进材质加载性能,采用 2 线程池与 500ms 速率限制。
  • 改进异常处理,针对 IIOException 与 FileNotFoundException 添加专用捕获块。

6.5.2

  • 修复村民职业与工作皮肤问题。
  • 通过为 Gradle 依赖添加缓存,改进 GitHub 工作流。
  • 优化 Gradle 构建时间与清理任务。

6.5.1

  • 通过实现 ON_KILL 行为类型与事件,修复 #632。
  • 通过优化材质处理性能、缓存与内存使用,修复 #629。
  • 修复击杀命令对 NPC 无效的问题。
  • 修复材质重载保护机制阻止缓存驱逐后重新加载的问题。
  • 修复远程图片校验器中的 WebP 校验漏洞(缺少 return 语句)。
  • 重构材质处理逻辑,提升可维护性并为未来改进打下基础。
  • 新增基于时间的重载保护机制(60 秒),替代永久阻塞机制。
  • 新增材质处理相关的额外单元测试。
  • 优化 Gradle 构建任务。

6.5.0

  • ⚠️ 移除 jar-in-jar 打包方式,以提升模组兼容性与 API 能力。
  • 通过改进剪刀实现方式,提升与其他模组的兼容性,修复 #627。
  • 修复使用旋转或移动模型部件时动画异常活跃的问题,修复 #625。
  • 修复使用缩放模型部件时默认动画被取消的问题。
  • 新增更智能的姿势动画控制,提供 smart、default 与 none 三种选项。

6.4.1

  • 修复不同 NPC UUID 的界面切换逻辑,感谢 Spawnblade 提供详细调查与修复建议,修复 #626。

6.4.0

  • 通过改进对话数据验证与错误处理,修复 #626。
  • 通过重构渲染数据与渲染处理逻辑,修复 #623。
  • 通过确保自定义数据能正确保存与加载,修复 #622。
  • 修复“打开对话框”行为类型,允许从其他 NPC 打开对话框。
  • 通过为 ConditionDataSet 与 ActionDataSet 添加缺失的 equals 与 hashCode 方法,修复哈希问题。
  • 为 #622 新增自定义数据测试物品,便于测试自定义数据。
  • 改进记录结构并修复潜在的数据缺失问题。

6.3.0

  • 重构配置 GUI 专用组件,并将其从核心模组中移除。
  • 通过在发送至客户端前过滤对话数据,修复对话数据问题。
  • 修复对话编辑器布局问题并提升可用性。
  • 修复部分对话数据字段缺少默认值的问题。
  • 新增对话优先级支持,用于控制对话执行顺序。
  • 新增对话与计分板行为的条件支持。
  • 新增对话频率限制功能,控制对话显示频率。
  • 新增支持计分板与条件的新 NPC 预设。
  • 通过移除冗余字段,改进对话按钮数据格式。

6.2.0

  • 修复对话中的字符串注入问题。
  • 修复行为类型缺少翻译的问题。
  • 新增计分板行为类型,用于增加、减少或设置计分板数值。
  • 新增 @score(...) NPC 宏,用于在对话中显示计分板数值。
  • 新增额外单元测试。
  • 改进纺线器按钮,添加指示器并提升可用性。

6.1.2

  • 修复因缺少关闭容器封包导致的容器与菜单同步问题。
  • 修复某些情况下关闭按钮无效的问题。
  • 修复界面切换时光标跳动的问题。
  • 修复翻译文件,移除重复与弃用条目。
  • 将 Easy NPC 法杖移至现有核心物品选项卡,不再创建新选项卡。
  • 新增猫姿势支持(除尾巴外的各模型部件)。
  • 通过在不需要时禁用发光效果,提升 EasyNPCWand 发光效果性能。
  • 通过排除非生物实体(如展示物、造物主、投掷物与刷怪笼),改进自定义实体检测。
  • 改进猫变种处理逻辑。

6.1.1

  • 通过重新校验实体类型,修复 #612。
  • 通过强制同步特定模型的帽子与头部图层,修复 #610。
  • 修复兽人皮材质。
  • 通过将相关逻辑移至仅客户端执行,改进自定义模型支持与性能。
  • 改进玩家皮肤中玩家到 UUID 映射的缓存机制。
  • 限制模型更换命令与逻辑仅适用于 Doppler NPC。

6.1.0 ✨

此为重大版本更新。更新前请务必备份你的世界与 NPC 数据。
本版本包含大量改进、优化与内部变更,与早期版本不完全兼容。

⚠️ 破坏性变更

  • 6.1.0 之前版本的现有 NPC 及其配置数据可能无法正确加载,或需手动调整。
  • 为支持新用例,内部数据格式与部分行为已重构。

🧩 新模块化结构

Easy NPC 现已拆分为三个独立模组:

  • Easy NPC – 包含 Core 与 Configuration UI 的整合包,提供即装即用体验。
  • Easy NPC: Core – 轻量级 NPC 运行时与逻辑核心,依赖极少,适用于服务器、整合包与开发者。
  • Easy NPC: Configuration UI – 独立的 NPC 创建与编辑配置界面,可单独安装于需要 UI 的客户端。

🎯 此变更原因

  • 允许服务器与整合包仅在服务端部署 Core 模组,实现更精简的配置。
  • 在无需 UI 的场景下降低内存占用与加载时间。
  • 通过分离 UI 与核心逻辑,加快开发与测试速度。

Easy NPC (Bundle) 6.8.2

on 2026 Feb 16
下载

Easy NPC (Bundle) 6.8.2

on 2026 Feb 16
下载

Changelog for Easy NPC (1.20.1)

Note

This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead.

Note: Please always back up your world / NPCs before updating to a new version! Check the [upgrade guide][upgrade_guide] for more information.

6.8.2

  • Fixed #677 by extending SafeMerchantData with notifyTrade to avoid crashes.
  • Added progression data support for leveling up NPCs based on player interactions and actions.
  • Added global NPC tracking system for better management and debugging of NPCs across the world.
  • Added OriginalModelConfig.withVariantTexture() option to allow using variant textures with the original model.

6.8.1

  • Fixed #676 by using existing preset helper method instead of custom one.

6.8.0 (Adding API support)

  • Fixed #667 by adding warning messages and additional checks for invalid network packets.
  • Fixed Horse spawn eggs model.
  • Fixed pose support for allay, chicken, creeper, fox, ghast, horse, illager, iron golem, slime and vex.
  • Added NPC base classes for better API support.
  • Added NPC raw classes for advanced API support.
  • Added Slim and Ghast NPC types.
  • Added Custom Model API for easier integration with other mods and custom models.
  • Refactored internal data handling and registration for better maintainability and future improvements.

6.7.1

  • Fixed #657 and #656 by adding additional client side checks for vanilla bug.

6.7.0

  • Fixed #650 by implementing Wolf Leg Animations in setupAnim method.
  • Fixed #648 by fixing canBeHitByProjectiles translation.
  • Fixed #645 by adding allowBypassInvulnerability config option to allow/deny bypassing invulnerability for NPCs.
  • Fixed delete button showing label even with small width.
  • Fixed up and down buttons not positioned correctly in some cases.
  • Fixed name tag showing up for dialog and configuration UI.
  • Fixed distance action issue were multiple actions are not properly triggered.
  • Fixed issues with NPC presets.
  • Fixed Cat NPC and Wolf NPC owner data not syncing properly.
  • Added preset browser for easier selection of common NPC presets.
  • Added preset .snbt (text) export and import functionality for sharing NPC presets.
  • Refactored existing NPC presets to use new .snbt format.
  • Refactored spawner system to use new preset format for better maintainability and future improvements.

6.6.2

  • Fixed #643 by rework scaling system.
  • Fixed scaling not properly updating hitbox and nametag position after restart / reload.
  • Added MID and MOUSE_OVER name tag visibility modes for finer control over NPC name display.
  • Added team-based name tag visibility support respecting vanilla Team.

6.6.1

  • Fixed #638 by refactored internal data handling for display attributes.

6.6.0

  • Fixed #634 by implementing asynchronous texture loading with dedicated thread pool.
  • Fixed texture loading blocking render thread causing game freezes.
  • Fixed race conditions in texture reload protection using atomic operations.
  • Fixed resource leaks in HTTP connections during remote texture downloads.
  • Fixed URL validation spam allowing multiple simultaneous downloads of the same texture.
  • Fixed exception handling for remote image validation preventing crashes on invalid URLs.
  • Fixed defineId called for: warning messages during NPC loading.
  • Refactored texture loading architecture with multi-level defense and rate limiting.
  • Refactored entity data registration logic for better maintainability.
  • Converted data classes to modern Java records for better immutability and thread-safety.
  • Added thread-safe session server spam protection with ConcurrentHashMap.
  • Added comprehensive error recovery with automatic cooldown reset on failures.
  • Improved texture loading with 2-thread pool and 500ms rate limiting.
  • Improved exception handling with specific catch blocks for IIOException and FileNotFoundException.

6.5.2

  • Fixed Villager profession and job skin issue.
  • Improved GitHub workflows by adding cache for gradle dependencies.
  • Improved Gradle build time and cleanup tasks.

6.5.1

  • Fixed #632 by implementing ON_KILL action type and event.
  • Fixed #629 by improving texture handling performance, caching, and memory usage.
  • Fixed kill command is not working on NPCs.
  • Fixed texture reload protection preventing cache reload after eviction.
  • Fixed WebP validation bug in remote image validator (missing return statement).
  • Refactored texture handling logic for better maintainability and future improvements.
  • Added time-based reload protection (60 seconds) to replace permanent blocking mechanism.
  • Added additional unit tests for texture handling.
  • Improved gradle build tasks.

6.5.0

  • ⚠️ Removed jar-in-jar bundle approach for better mod compatibility and api capabilities.
  • Fixed #627 scissor implementation for better compatibility with other mods.
  • Fixed #625 lively animation issues when using rotated or moved model parts.
  • Fixed default animation are canceled when using scaled model parts.
  • Added better pose animation control with smart, default und none options.

6.4.1

  • Fixed #626 screen switching logic for different NPC UUIDs, thanks to Spawnblade for the detailed investigation and fix suggestion.

6.4.0

  • Fixed #626 by improving dialog data validation and error handling.
  • Fixed #623 by refactoring render data and render handling.
  • Fixed #622 by making sure custom data are properly saved and loaded.
  • Fixed open dialog action type to allow opening dialogs from other NPCs.
  • Fixed hashing issues by adding missing equals and hashCode methods for ConditionDataSet and ActionDataSet.
  • Added custom data test item for #622 and easier testing of custom data.
  • Improved records and fixed potential issues with missing data.

6.3.0

  • Refactored config ui specific components and removed them from the core mod.
  • Fixed dialog data by filtering dialog data before sending to the client.
  • Fixed dialog editor layout issues and improved usability.
  • Fixed missing default values for some dialog data fields.
  • Added dialog priority support to control the order of dialog execution.
  • Added condition support for dialog and scoreboard actions.
  • Added frequency support for dialog to limit how often an dialog can be shown.
  • Added new NPC preset to for scoreboard and condition support.
  • Improved dialog button data format by removing redundant fields.

6.2.0

  • Fixed string injection within dialogs.
  • Fixed missing translation for action types.
  • Added scoreboard action type to increase, decrease, set scoreboard values.
  • Added @score(...) NPC macro to display scoreboard values in the dialog.
  • Added additional unit tests.
  • Improved spin button with indicators and better usability.

6.1.2

  • Fixed container and menu sync issues with missing close container packets.
  • Fixed close button not working in some cases.
  • Fixed jumping mouse cursor between screen transitions.
  • Fixed translation files and removed duplicate and deprecated entries.
  • Moved Easy NPC wand to existing core item tab instead of creating a new one.
  • Added cat pose support for different model parts (except tail).
  • Improved EasyNPCWand glowing effect performance by disabling it when not needed.
  • Improved custom entity detection by excluding non-living entities like displays, makers, throwns and spawners.
  • Improved cat variant handling.

6.1.1

  • Fixed #612 by re-validating entity types.
  • Fixed #610 by force sync of hat and head layers for specific models.
  • Fixed orc textures.
  • Improved custom model support and performance, by moving related logic into to client side only.
  • Improved caching of player to UUID mappings for player skins.
  • Limited change model commands and logic to Doppler NPCs only.

6.1.0 ✨

This is a major release. Please back up your worlds and NPC data before updating. This version contains many improvements, optimizations, and interna

... [内容过长已截断]

Easy NPC (Bundle) 6.8.1

on 2026 Feb 13
下载

更改日志:简易NPC:核心 (1.21.1)

注意

此更改日志包含简要的更改。 如需完整更改日志,请访问GitHub历史记录。

注意:请在更新到新版本之前始终备份您的世界/NPC! 有关更多信息,请参阅升级指南。

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名称显示。
  • 添加了基于团队的名称标签可见性支持,尊重原版团队。

6.6.1

  • 通过重构内部数据处理修复了#638中的显示属性。

6.6.0

  • 通过使用专用线程池实现异步纹理加载修复了#634。
  • 修复了纹理加载阻塞渲染线程导致游戏卡顿的问题。
  • 通过使用原子操作修复了纹理重载保护中的竞争条件。
  • 修复了远程纹理下载时HTTP连接中的资源泄漏。
  • 修复了URL验证垃圾邮件,允许多次同时下载同一纹理的问题。
  • 修复了远程图像验证中的异常处理,防止无效URL导致崩溃。
  • 修复了NPC加载期间的defineId called for:警告消息。
  • 重构了带有多层次防御和速率限制的纹理加载架构。
  • 重构了实体数据注册逻辑,以提高可维护性。
  • 将数据类转换为现代Java记录,以提高不可变性和线程安全性。
  • 添加了使用ConcurrentHashMap的线程安全会话服务器垃圾邮件保护。
  • 添加了全面的错误恢复,自动在失败时重置冷却时间。
  • 通过2线程池和500毫秒速率限制改进了纹理加载。
  • 通过特定的catch块改进了IIOException和FileNotFoundException的异常处理。

6.5.2

  • 修复了村民职业和工作皮肤问题。
  • 通过添加Gradle依赖项缓存改进了GitHub工作流程。
  • 改进了Gradle构建时间和清理任务。

6.5.1

  • 通过实现ON_KILL动作类型和事件修复了#632。
  • 通过改进纹理处理性能、缓存和内存使用修复了#629。
  • 修复了kill命令对NPC不起作用的问题。
  • 修复了纹理重载保护阻止缓存重载的问题。
  • 修复了远程图像验证器中的WebP验证错误(缺少返回语句)。
  • 重构了纹理处理逻辑,以提高可维护性和未来的改进。
  • 添加了基于时间的重载保护(60秒),以替换永久阻塞机制。
  • 添加了额外的纹理处理单元测试。
  • 改进了Gradle构建任务。

6.5.0

  • ⚠️ 移除了jar-in-jar捆绑方法,以提高模组兼容性和API能力。
  • 通过改进剪切实现修复了#627,以更好地与其他模组兼容。
  • 通过修复旋转或移动模型部件时的生动动画问题修复了#625。
  • 修复了使用缩放模型部件时默认动画被取消的问题。
  • 添加了更好的姿态动画控制,提供智能、默认和无选项。

6.4.1

  • 通过修复不同NPC UUID的屏幕切换逻辑修复了#626,感谢Spawnblade的详细调查和修复建议。

6.4.0

  • 通过改进对话数据验证和错误处理修复了#626。
  • 通过重构渲染数据和渲染处理修复了#623。
  • 通过确保自定义数据正确保存和加载修复了#622。
  • 修复了打开对话动作类型,允许从其他NPC打开对话。
  • 通过为ConditionDataSet和ActionDataSet添加缺失的equals和hashCode方法修复了哈希问题。
  • 添加了用于#622的自定义数据测试项,以便更轻松地测试自定义数据。
  • 改进了记录并修复了潜在的数据缺失问题。

6.3.0

  • 重构了配置UI特定组件,并将其从核心模组中移除。
  • 通过在发送到客户端之前过滤对话数据修复了对话数据。
  • 修复了对话编辑器布局问题并提高了可用性。
  • 修复了一些对话数据字段缺少默认值的问题。
  • 添加了对话优先级支持,以控制对话执行顺序。
  • 添加了对话和记分板动作的条件支持。
  • 添加了对话频率支持,以限制对话显示的频率。
  • 添加了新的NPC预设,以支持记分板和条件。
  • 通过移除冗余字段改进了对话按钮数据格式。

6.2.0

  • 修复了对话中的字符串注入问题。
  • 修复了动作类型缺少翻译的问题。
  • 添加了记分板动作类型,以增加、减少或设置记分板值。
  • 添加了@score(...)NPC宏,以在对话中显示记分板值。
  • 添加了额外的单元测试。
  • 通过指示器和更好的可用性改进了旋钮按钮。

6.1.2

  • 修复了由于缺少关闭容器数据包而导致的容器和菜单同步问题。
  • 修复了某些情况下关闭按钮无法工作的问题。
  • 修复了屏幕切换时鼠标光标跳跃的问题。
  • 修复了翻译文件并移除了重复和已弃用的条目。
  • 将简易NPC魔杖移到现有的核心物品选项卡中,而不是创建一个新的选项卡。
  • 添加了猫的不同模型部件(尾巴除外)的姿态支持。
  • 通过在不需要时禁用简易NPC魔杖的发光效果来提高其性能。
  • 通过排除非生物实体(如显示器、标记、投掷物和生成器)改进了自定义实体检测。
  • 改进了猫变种处理。

6.1.1

  • 通过重新验证实体类型修复了#612。
  • 通过强制同步特定模型的帽子和头部层修复了#610。
  • 修复了兽人纹理。
  • 通过将相关逻辑仅移动到客户端一侧来改进自定义模型支持和性能。
  • 通过改进玩家到UUID映射的缓存来提高玩家皮肤的性能。
  • 将改变模型命令和逻辑限制为仅多普勒NPC。

6.1.0 ✨

这是一个主要版本。请在更新前备份您的世界和NPC数据。 此版本包含许多改进、优化和内部更改,这些更改不完全兼容早期版本。

⚠️ 破坏性更改

  • 版本6.1.0之前的现有NPC及其配置数据可能无法正确加载,或者需要手动调整。
  • 内部数据格式和一些行为已被重构以支持新的用例。

🧩 新的模块化结构

简易NPC现在分为三个独立的模组:

  • 简易NPC – 包括核心和配置UI的捆绑包,提供即插即用体验。
  • 简易NPC:核心 – 轻量级运行时和NPC逻辑,具有最少的依赖项。适用于服务器、模组包和开发者。
  • 简易NPC:配置UI – 独立的配置界面,用于创建和编辑NPC。可以安装在需要UI的客户端上。

🎯 为什么进行此更改?

  • 允许服务器和模组包仅在服务器端安装核心模组,以实现更精简的设置。
  • 在不需要UI的情况下减少内存使用和加载时间。
  • 通过分离UI和核心逻辑,加快开发和测试速度。

Easy NPC (Bundle) 6.8.1

on 2026 Feb 13
下载

易用NPC:核心 (1.21.1) 更新日志

注意

此更新日志包含简要的更改摘要。 如需完整更新日志,请访问 GitHub 历史记录。

注意:请在更新到新版本之前始终备份您的世界/NPC! 有关更多信息,请查看 升级指南。

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和鼠标悬停名称标签可见性模式,以更精细地控制NPC名称显示。
  • 添加了基于团队的名称标签可见性支持,尊重原版团队设置。

6.6.1

  • 通过重构内部数据处理修复了显示属性问题 #638。

6.6.0

  • 通过实现异步纹理加载和专用线程池修复了 #634。
  • 修复了纹理加载阻塞渲染线程导致游戏卡顿的问题。
  • 使用原子操作修复了纹理重载保护中的竞态条件。
  • 修复了远程纹理下载时HTTP连接中的资源泄漏。
  • 修复了URL验证垃圾信息,允许多个同时下载相同纹理的问题。
  • 修复了远程图像验证中的异常处理,防止无效URL导致崩溃。
  • 修复了NPC加载期间的defineId called for:警告信息。
  • 重构了具有多级防御和速率限制的纹理加载架构。
  • 重构了实体数据注册逻辑,以提高可维护性。
  • 将数据类转换为现代Java记录,以提高不可变性和线程安全性。
  • 添加了使用ConcurrentHashMap的线程安全会话服务器垃圾信息保护。
  • 添加了全面的错误恢复,并在失败时自动重置冷却时间。
  • 改进了纹理加载,使用2线程池和500ms速率限制。
  • 改进了带有特定捕获块的IIOException和FileNotFoundException的异常处理。

6.5.2

  • 修复了村民职业和工作皮肤问题。
  • 通过添加Gradle依赖项缓存改进了GitHub工作流程。
  • 改进了Gradle构建时间和清理任务。

6.5.1

  • 通过实现ON_KILL动作类型和事件修复了 #632。
  • 通过改进纹理处理性能、缓存和内存使用修复了 #629。
  • 修复了kill命令对NPC不起作用的问题。
  • 修复了纹理重载保护阻止缓存重载的问题。
  • 修复了远程图像验证器中的WebP验证错误(缺少返回语句)。
  • 重构了纹理处理逻辑,以提高可维护性和未来的改进。
  • 添加了基于时间的重载保护(60秒),以替换永久阻塞机制。
  • 添加了纹理处理的额外单元测试。
  • 改进了Gradle构建任务。

6.5.0

  • ⚠️ 移除了jar-in-jar捆绑方式,以提高模组兼容性和API能力。
  • 通过改进剪切实现修复了与其他模组的兼容性问题 #627。
  • 修复了使用旋转或移动模型部件时的生动动画问题 #625。
  • 修复了使用缩放模型部件时默认动画被取消的问题。
  • 添加了更好的姿势动画控制,提供智能、默认和无选项。

6.4.1

  • 通过改进屏幕切换逻辑修复了不同NPC UUID的问题,感谢Spawnblade的详细调查和修复建议。

6.4.0

  • 通过改进对话数据验证和错误处理修复了 #626。
  • 通过重构渲染数据和渲染处理修复了 #623。
  • 通过确保自定义数据正确保存和加载修复了 #622。
  • 修复了打开对话动作类型,允许从其他NPC打开对话。
  • 通过添加ConditionDataSet和ActionDataSet的缺失equals和hashCode方法修复了哈希问题。
  • 添加了用于 #622 的自定义数据测试项,以便更轻松地测试自定义数据。
  • 改进了记录并修复了潜在的数据缺失问题。

6.3.0

  • 重构了配置UI特定组件,并将其从核心模组中移除。
  • 通过在发送给客户端之前过滤对话数据修复了对话数据。
  • 修复了对话编辑器布局问题并提高了可用性。
  • 修复了一些对话数据字段缺少默认值的问题。
  • 添加了对话优先级支持,以控制对话执行顺序。
  • 添加了对话和记分板动作的条件支持。
  • 添加了频率支持,以限制对话显示的频率。
  • 添加了新的NPC预设以支持记分板和条件。
  • 通过移除冗余字段改进了对话按钮数据格式。

6.2.0

  • 修复了对话中的字符串注入问题。
  • 修复了动作类型缺少翻译的问题。
  • 添加了记分板动作类型,以增加、减少或设置记分板值。
  • 添加了@score(...) NPC宏以在对话中显示记分板值。
  • 添加了额外的单元测试。
  • 通过指示器和更好的可用性改进了旋钮按钮。

6.1.2

  • 修复了容器和菜单同步问题,缺少关闭容器的数据包。
  • 修复了某些情况下关闭按钮不起作用的问题。
  • 修复了屏幕切换时鼠标光标跳跃的问题。
  • 修复了翻译文件并移除了重复和废弃的条目。
  • 将易用NPC魔杖移到现有核心物品标签中,而不是创建一个新的。
  • 添加了猫的不同模型部分(尾巴除外)的姿态支持。
  • 通过在不需要时禁用效果来改进易用NPC魔杖发光效果性能。
  • 通过排除非生物实体(如展示物、标记物、投掷物和生成器)来改进自定义实体检测。
  • 改进了猫变种处理。

6.1.1

  • 通过重新验证实体类型修复了 #612。
  • 通过强制同步特定模型的帽子和头部层修复了 #610。
  • 修复了兽人纹理。
  • 通过将相关逻辑移动到客户端侧来改进自定义模型支持和性能。
  • 改进了玩家到UUID映射的缓存,以支持玩家皮肤。
  • 将改变模型的命令和逻辑限制为仅Doppler NPC。

6.1.0 ✨

这是一个重大版本。请在更新前备份您的世界和NPC数据。 此版本包含许多改进、优化和内部更改,与早期版本不完全兼容。

⚠️ 破坏性更改

  • 版本6.1.0之前的现有NPC及其配置数据可能无法正确加载,或者需要手动调整。
  • 内部数据格式和一些行为已被重构,以支持新的用例。

🧩 新的模块化结构

易用NPC现在分为三个独立的模组:

  • 易用NPC – 包含核心和配置UI的捆绑包,提供即插即用体验。
  • 易用NPC:核心 – 轻量级运行时和NPC逻辑,依赖最少。适用于服务器、模组包和开发者。
  • 易用NPC:配置UI – 独立的配置界面,用于创建和编辑NPC。可以安装在需要UI的客户端上。

🎯 为什么要进行这些更改?

  • 允许服务器和模组包仅在服务器端部署核心模组,以实现更精简的设置。
  • 当不需要UI时,减少内存使用和加载时间。
  • 通过分离UI和核心逻辑,加快开发和测试速度。

Easy NPC (Bundle) 6.8.1

on 2026 Feb 13
下载

更改日志:简易NPC:核心 (1.21.1)

注意

此更改日志包含总结的更改。 如需完整更改日志,请访问 GitHub 历史记录。

注意:请在更新到新版本之前始终备份您的世界/NPC! 有关更多信息,请查看升级指南。

6.8.0(添加API支持)

  • 通过添加警告信息和对无效网络数据包的额外检查,修复了#667。
  • 修复了马生成蛋模型。
  • 修复了悦灵、鸡、苦力怕、狐狸、恶魂、马、灾厄村民、铁傀儡、史莱姆和恼鬼的姿势支持。
  • 添加了NPC基础类以更好地支持API。
  • 添加了NPC原始类以支持高级API。
  • 添加了Slim和Ghast NPC类型。
  • 添加了自定义模型API以便与其他模组和自定义模型更轻松地集成。
  • 重构了内部数据处理和注册,以提高可维护性和未来的改进。

6.7.1

  • 通过添加额外的客户端检查修复了#657和#656中的原版bug。

6.7.0

  • 通过在setupAnim方法中实现狼腿动画修复了#650。
  • 通过修复canBeHitByProjectiles翻译修复了#648。
  • 通过添加allowBypassInvulnerability配置选项来允许/禁止绕过NPC的无敌状态,修复了#645。
  • 修复了即使宽度很小也会显示删除按钮标签的问题。
  • 修复了某些情况下上下按钮位置不正确的问题。
  • 修复了对话和配置UI中显示名称标签的问题。
  • 修复了距离动作问题,多个动作没有正确触发。
  • 修复了NPC预设的问题。
  • 修复了猫NPC和狼NPC所有者数据不同步的问题。
  • 添加了预设浏览器,以便更轻松地选择常见的NPC预设。
  • 添加了预设.snbt(文本)导出和导入功能,以便共享NPC预设。
  • 重构现有的NPC预设以使用新的.snbt格式。
  • 重构了生成器系统,以使用新的预设格式,提高可维护性和未来的改进。

6.6.2

  • 通过重新设计缩放系统修复了#643。
  • 修复了重启/重新加载后缩放未正确更新碰撞箱和名称标签位置的问题。
  • 添加了MID和鼠标悬停名称标签可见性模式,以更精细地控制NPC名称显示。
  • 添加了基于团队的名称标签可见性支持,尊重原版团队设置。

6.6.1

  • 通过重构内部数据显示属性的处理修复了#638。

6.6.0

  • 通过实现异步纹理加载并使用专用线程池修复了#634。
  • 修复了纹理加载阻塞渲染线程导致游戏卡顿的问题。
  • 使用原子操作修复了纹理重新加载保护中的竞态条件。
  • 修复了远程纹理下载期间HTTP连接中的资源泄漏问题。
  • 修复了URL验证垃圾邮件,允许多次同时下载同一纹理的问题。
  • 修复了远程图像验证中的异常处理,防止在无效URL上崩溃。
  • 修复了NPC加载期间的defineId called for:警告消息。
  • 重构了带有多层次防御和速率限制的纹理加载架构。
  • 重构了实体数据注册逻辑,以提高可维护性。
  • 将数据类转换为现代Java记录,以提高不可变性和线程安全性。
  • 添加了使用ConcurrentHashMap的线程安全会话服务器垃圾邮件保护。
  • 添加了全面的错误恢复,自动在失败时重置冷却时间。
  • 通过2线程池和500毫秒速率限制改进了纹理加载。
  • 通过特定捕获块改进了IIOException和FileNotFoundException的异常处理。

6.5.2

  • 修复了村民职业和工作皮肤问题。
  • 通过添加Gradle依赖项缓存改进了GitHub工作流。
  • 改进了Gradle构建时间和清理任务。

6.5.1

  • 通过实现ON_KILL动作类型和事件修复了#632。
  • 通过改进纹理处理性能、缓存和内存使用修复了#629。
  • 修复了kill命令无法在NPC上生效的问题。
  • 修复了纹理重新加载保护阻止缓存重新加载的问题。
  • 修复了远程图像验证器中的WebP验证bug(缺少返回语句)。
  • 重构了纹理处理逻辑,以提高可维护性和未来的改进。
  • 添加了基于时间的重新加载保护(60秒),以替换永久阻止机制。
  • 添加了纹理处理的附加单元测试。
  • 改进了Gradle构建任务。

6.5.0

  • ⚠️ 移除了jar-in-jar捆绑方法,以提高模组兼容性和API能力。
  • 通过改进剪切实现修复了#627,以更好地兼容其他模组。
  • 通过修复旋转或移动模型部件时的生动动画问题修复了#625。
  • 修复了使用缩放模型部件时默认动画被取消的问题。
  • 添加了更好的姿势动画控制,具有智能、默认和无选项。

6.4.1

  • 通过改进屏幕切换逻辑修复了#626,感谢Spawnblade的详细调查和修复建议。

6.4.0

  • 通过改进对话数据验证和错误处理修复了#626。
  • 通过重构渲染数据和渲染处理修复了#623。
  • 通过确保自定义数据正确保存和加载修复了#622。
  • 修复了打开对话动作类型,允许从其他NPC打开对话。
  • 通过为ConditionDataSet和ActionDataSet添加缺失的equals和hashCode方法修复了哈希问题。
  • 添加了用于#622和更轻松测试自定义数据的自定义数据测试项目。
  • 改进了记录并修复了潜在的缺失数据问题。

6.3.0

  • 重构了配置UI特定组件,并将其从核心模组中移除。
  • 通过在发送到客户端之前过滤对话数据修复了对话数据。
  • 修复了对话编辑器布局问题并提高了可用性。
  • 修复了某些对话数据字段缺少默认值的问题。
  • 添加了对话优先级支持,以控制对话执行顺序。
  • 添加了对话和记分板动作的条件支持。
  • 添加了对话频率支持,以限制对话显示的频率。
  • 添加了新的NPC预设,以支持记分板和条件。
  • 通过移除冗余字段改进了对话按钮数据格式。

6.2.0

  • 修复了对话中的字符串注入问题。
  • 修复了动作类型缺少翻译的问题。
  • 添加了记分板动作类型,以增加、减少、设置记分板值。
  • 添加了NPC宏@score(...)以在对话中显示记分板值。
  • 添加了附加单元测试。
  • 通过指示器和更好的可用性改进了旋转按钮。

6.1.2

  • 修复了由于缺少关闭容器数据包而导致的容器和菜单同步问题。
  • 修复了某些情况下关闭按钮不起作用的问题。
  • 修复了屏幕切换时鼠标光标跳跃的问题。
  • 修复了翻译文件并移除了重复和已弃用的条目。
  • 将简易NPC魔杖移动到现有的核心物品标签中,而不是创建一个新的标签。
  • 添加了不同模型部分(尾巴除外)的猫姿势支持。
  • 通过在不需要时禁用发光效果来改进简易NPC魔杖的性能。
  • 通过排除非生物实体(如展示、标记、投掷物和生成器)来改进自定义实体检测。
  • 改进了猫变体处理。

6.1.1

  • 通过重新验证实体类型修复了#612。
  • 通过强制同步特定模型的帽子和头部层修复了#610。
  • 修复了兽人纹理。
  • 通过将相关逻辑移动到客户端侧来改进自定义模型支持和性能。
  • 改进了玩家皮肤的玩家到UUID映射缓存。
  • 限制了仅Doppler NPC的改变模型命令和逻辑。

6.1.0 ✨

这是一个主要版本。请在更新前备份您的世界和NPC数据。 此版本包含许多改进、优化和内部更改,这些更改与早期版本不完全兼容。

⚠️ 破坏性更改

  • 来自6.1.0之前的版本的现有NPC及其配置数据可能无法正确加载,或者可能需要手动调整。
  • 内部数据格式和一些行为已被重构以支持新的用例。

🧩 新模块化结构

简易NPC现在分为三个独立的模组:

  • 简易NPC – 包括核心和配置UI的捆绑包,提供即插即用体验。
  • 简易NPC:核心 – 轻量级运行时和NPC逻辑,最小依赖。适用于服务器、模组包和开发者。
  • 简易NPC:配置UI – 用于创建和编辑NPC的独立配置界面。可以安装在需要UI的客户端上。

🎯 为什么进行此更改?

  • 允许服务器和模组包仅在服务器端安装核心模组,以实现更精简的设置。
  • 当不需要UI时,减少内存使用和加载时间。
  • 通过分离UI和核心逻辑,加快开发和测试速度。
1
2
15
BBSMC Logo

中国最活跃的 Minecraft 中文资源社区

QQ 群:1078515449

资源

模组整合包光影资源包地图

社区

汉化软件插件数据包

帮助

服务条款隐私政策社区规则开源代码
设置

"Minecraft"以及"我的世界"为美国微软公司的商标,本站与微软公司没有从属关系。 本站与 Modrinth 无从属关系,网站遵循 LGPL 协议开源。

© 2019-2026 青岛柒兮网络科技有限公司 | 鲁B2-20210590 | 鲁ICP备2021009459号-12 | 公安备案 鲁公网安备37021002001586号