基本信息
我的世界Java版本
1.21.3
1.21–1.21.1
1.20.1–1.20.2
1.19.2
1.18.2
平台
Fabric
运行环境
搬运团队
搬运资源声明
对于可进行 JAR 文件搬运的许可证,我们提供站内下载服务;其他资源会跳转到原帖下载。资源更新可能不及时,建议前往资源内提供的原帖链接下载最新版本。
详情信息
许可证 MIT
发布于 2025-01-03
更新于 2026-04-15
更新日志
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 与核心逻辑,加快开发和测试速度。



