
自定义动态NPC
一个完整的NPC系统和可自定义的敌对生物,包含Blockbench模型、程序化动画、所见即所得的视觉编辑器及生成区域管理——所有功能均可通过服务器完全控制。
自定义动态NPC
Minecraft 1.20.1 · Fabric · 服务端权威
一个完整的动态NPC和可自定义敌对生物系统,支持Blockbench模型、程序化动画、所见即所得可视化编辑器以及生成区域管理——所有功能均由服务端完全控制。
✨ 主要特性
🧑🤝🧑 动态NPC系统
- 服务端权威:所有逻辑在服务端运行;客户端仅负责渲染。
- 状态:空闲、对话、行走、动画、工作、睡眠、自定义。
- 可配置AI大脑(
NpcBrain):自动状态转换、计时器、漫游。 - 自定义皮肤:为每个NPC分配任意皮肤。
- Blockbench模型(.bbmodel):直接在游戏中上传自定义3D模型。
- 可配置碰撞箱:为每个NPC调整碰撞宽度和高度。
- 模型旋转:将NPC模型旋转到任意角度。
- 默认无敌:NPC不会被伤害(可配置)。
- 路径系统:定义路径点,使NPC可以循环行走。
- 完全持久化:所有NPC自动保存,重启后仍存在。
⚔️ 基于区域的敌对生物系统
- 生成区域(
MobZone):定义矩形区域,敌对生物自动在其中生成。 - 可配置变体:每个区域可以有多个生物变体,包含:
- 📛 自定义名称
- ⚔️ 伤害、⚡ 速度、❤️ 生命值、🎯 追踪范围
- 🧱 碰撞箱(宽度×高度)
- 🎨 皮肤和模型(玩家模型、Blockbench或原版生物)
- 🚶 行走动画:
无、上下晃动、左右摇摆、弹跳 - 👊 攻击动画:
无、前倾、脉冲、震动
- 可配置掉落物:定义死亡战利品,包含最小/最大数量和概率。
- 可控生成:生成延迟、最大存活生物数量、每个区域的启用/禁用。
- 多维度支持:每个区域会记住其所在维度。
- 三重渲染系统:
- 🟣 Blockbench模型,支持导入纹理和程序化动画。
- 🟢 原版生物代理(例如
minecraft:turtle、minecraft:zombie):渲染原生外观和动画。 - 🔵 玩家模型作为后备。
🎬 程序化动画(Blockbench模型)
导入的Blockbench模型支持自动动画,无需单独的动画文件:
| 类型 | 名称 | 效果 |
|---|---|---|
| 🚶 行走 | 上下晃动 |
行走时平滑上下弹动 |
| 🚶 行走 | 左右摇摆 |
行走时左右摇摆 |
| 🚶 行走 | 弹跳 |
脉冲式的挤压与拉伸 |
| 👊 攻击 | 前倾 |
攻击时身体前倾 |
| 👊 攻击 | 脉冲 |
攻击时短暂的缩放脉冲 |
| 👊 攻击 | 震动 |
攻击时快速震动 |
动画会根据实体实际移动、挥击/受伤状态触发。
🖥️ 完整可视化GUI
📋 管理面板(/dnpc panel)
针对操作员的主要控制面板:
- NPC列表,支持搜索和选择。
- 3D预览所选NPC,包含模型和皮肤。
- 模型库,带可滚动卡片和3D预览。
- .bbmodel上传,直接从本地文件上传。
- 可视化碰撞箱控制,带滑块。
- 内联编辑名称、皮肤、模型、状态、漫游。
🎨 所见即所得GUI编辑器(GuiNodeEditorScreen)
拖放式可视化编辑器,用于创建NPC界面:
- 可调整大小的网格画布。
- 可拖动的节点:按钮、面板、标签、分隔符、图片、物品。
- 属性面板,包含选项卡:预设、样式、动作、高级。
- 可用动作:运行命令、关闭GUI、打开网址、发送消息、播放音效、改变状态、打开预设、给予物品、打开对话、传送玩家、显示标题、NPC动画、设置分数、打开背包、消耗物品、检查背包。
- 条件:拥有权限、NPC状态、拥有物品、分数大于等于。
- 可保存的预设:商店、对话、自定义JSON。
🗺️ 区域面板(/dnpc zone panel)
管理敌对生成区域的可视化面板:
- 区域列表,显示开/关状态、大小、变体、掉落物、活跃生物数量。
- 快速创建,自动填充坐标。
- 每个区域三个选项卡:
- ⚙️ 设置:可编辑边界(6个坐标)、生成延迟、最大生物数量、状态。
- ⚔️ 变体:卡片展示属性、模型、动画。按钮打开生物选择器。
- 💎 掉落物:卡片展示物品、数量、概率。按钮打开物品选择器。
- 可视化切换(
◉ 显示):启用/禁用游戏中区域边界的渲染。
🦎 生物选择器(GuiMobPickerScreen)
用于在创建变体时选择生物/模型的可视化浏览器:
- 来源列表,按模组命名空间分类(minecraft、模组、⚡ 模型)。
- 可视化网格,显示刷怪蛋和自定义模型图标。
- 按名称和ID搜索。
- 属性字段:名称、伤害、速度、生命值、追踪范围、碰撞箱宽/高。
- 动画选择器:通过按钮循环选择行走/攻击动画。
🎒 物品选择器(GuiItemPickerScreen)
用于添加掉落物的可视化浏览器:
- 物品网格,显示真实渲染的图标。
- 按模组命名空间筛选。
- 字段:最小数量、最大数量、概率。
🌐 区域边界渲染(ZoneBoundaryRenderer)
- 线框+半透明填充,用于每个区域,在游戏中可见。
- 每个区域独特的颜色(红、蓝、绿、黄、紫、橙、青)。
- 选中区域会高亮显示,带有明亮的脉冲效果和一个显示名称和大小的浮动标签。
- 从区域面板GUI切换显示。
📡 网络与性能
- GZIP压缩数据包,以最小化网络使用。
- 双工通道:10多个专用的S2C和C2S通道。
- 模型清单同步:加入游戏时,服务器发送模型清单;客户端仅下载所需部分。
- 客户端模型缓存,包含动态纹理。
- 代理实体缓存,用于原版渲染(复用虚拟实体)。
📜 命令
所有命令使用 /dnpc(需要OP等级2):
NPC
| 命令 | 描述 |
|---|---|
/dnpc panel |
打开管理可视化面板 |
/dnpc spawn <名称> [坐标] |
创建一个NPC |
/dnpc remove <名称|UUID|nearest> |
移除一个NPC |
/dnpc list |
列出所有NPC |
/dnpc tp <ID> <坐标> |
传送一个NPC |
/dnpc state <ID> <状态> |
更改状态 |
/dnpc skin <ID> <皮肤> |
更改皮肤 |
/dnpc model <ID> <模型ID> |
分配一个Blockbench模型 |
/dnpc anim <ID> <动画> |
播放一个动画 |
/dnpc wander <ID> <true|false> |
启用/禁用漫游 |
/dnpc rename <ID> <新名称> |
重命名一个NPC |
/dnpc path add/clear/loop <ID> |
路径系统 |
/dnpc gui open <ID> [玩家] |
打开NPC GUI |
/dnpc gui set <ID> shop|dialogue|json |
分配一个GUI预设 |
/dnpc models list |
列出Blockbench模型 |
/dnpc models reload |
从磁盘重新加载模型 |
/dnpc reload |
重新加载NPC |
/dnpc save |
保存所有内容 |
敌对区域
| 命令 | 描述 |
|---|---|
/dnpc zone panel |
打开区域可视化面板 |
/dnpc zone create <ID> <坐标1> <坐标2> |
创建一个区域 |
/dnpc zone remove <ID> |
移除一个区域并杀死其中的生物 |
/dnpc zone list |
列出所有区域 |
/dnpc zone info <ID> |
区域详情 |
/dnpc zone enable/disable <ID> |
启用/禁用 |
/dnpc zone set <ID> delay/maxmobs <值> |
配置生成 |
/dnpc zone variant add/remove/list/set |
管理变体 |
/dnpc zone drop add/remove/list |
管理掉落物 |
/dnpc zone save/reload |
保存/重新加载区域 |
📦 安装
- 安装 Fabric Loader ≥ 0.16.9 和 Fabric API ≥ 0.92.2+1.20.1。
- 将
customdynamicnpc-1.0.5.jar放入服务端和客户端的mods/文件夹。 - 重启Minecraft。
- 使用
/dnpc panel开始创建NPC,或使用/dnpc zone panel管理敌对区域。
🔧 要求
| 要求 | 版本 |
|---|---|
| Minecraft | 1.20.1 |
| Fabric Loader | ≥ 0.16.9 |
| Fabric API | ≥ 0.92.2+1.20.1 |
| Java | JDK 17+ |
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。