Files
2025-08-25 18:36:29 +08:00

135 lines
5.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
front: https://nie.res.netease.com/r/pic/20210730/ee109f39-8987-46e0-9fe7-40ebb23060fa.png
hard: 入门
time: 20分钟
selection: true
---
# 自定义NPC的基本行为
现在已经基本具备海滨小岛的内容不过还缺乏生机岛上只有玩家自己是不行的所以让我们来给小岛上添加各种各样的NPC吧。在添加NPC前需要了解什么是[自定义生物](../../10-addon教程/第07章自定义生物/课程01.认识自定义生物.md),当我们创建一个基本的自定义生物后,就该把它变换一个“形态”,让其成为可以闲逛、交易、且生机勃勃的海滨岛民。
![0](./images/0.png)
## 创建一个自定义生物
我们打开这个实体的行为文件,添加一些最基本的行为,让他们可以出现在地图上。除了基本的跳跃、开门、行走、碰撞体积、移动速度、闲逛外,还添加了一些稍微特殊的行为:
- 继承原版村民的特性,使其更加“真实”。
- 给NPC命名并且永久显示在头上。
- 让NPC永远不会消失。
> 如果对自定义生物完全不了解,建议点击文章开头的“自定义生物”超链接 深入了解。
```json
{
"format_version": "1.13.0",
"minecraft:entity": {
"description": {
"identifier": "farm:animal_shop",
"is_spawnable": true,
"is_summonable": true,
"is_experimental": false,
"runtime_identifier": "minecraft:villager" //可以理解为继承某一个生物的特性,这里指向原版村民(攻击生物会飘出生气的粒子),如果你想完全自定义一个生物,不建议添加,直接删除此行即可。
},
"components": {
"minecraft:nameable": {
"allow_name_tag_renaming":true, //是否可用命名牌改名
"always_show":true //是否永久显示
},
"minecraft:annotation.open_door": {
},
"minecraft:jump.static": {
},
"minecraft:can_climb": {
},
"minecraft:persistent":{}, //使生物永远不会消失
"minecraft:collision_box": {
"width": 0.8,
"height": 2
},
"minecraft:movement": {
"value": 0.25
},
"minecraft:navigation.walk": {
"can_path_over_water": true,
"can_pass_doors": true,
"can_open_doors": true,
"avoid_water": true
},
"minecraft:movement.basic": {
},
"minecraft:health": {
"value": 5,
"max": 5
},
"minecraft:behavior.random_stroll": {
"priority": 7,
"speed_multiplier": 1
},
"minecraft:behavior.look_at_player": {
"priority": 8,
"look_distance": 6,
"probability": 0.02
},
"minecraft:behavior.random_look_around": {
"priority": 9
},
"minecraft:physics": {
}
},
"component_groups": {
},
"events": {
}
}
}
```
除了打开行为文件修改,还可以从**新版关卡编辑器**中直接添加,比起修改文件,后者更方便直观,所有的行为都有详细的介绍。为了更好且便利的使用,接下来简单介绍一下基本功能
![2](./images/1.gif)
图中用红色框出的部分从左至右依次是:**资源配置**、**资源管理**和**属性窗口**,所有创建的自定义内容都可以在配置中找到,点击配置就可以在右侧属性中自由修改,也可以在下方资源管理窗口找到相应的文件查看。
![3](./images/2.png)
点击左下角资源管理中选择新建-配置-实体,可以选择覆盖一个原版生物的模板,也可以创建空生物,所有的行为都由我们自己来添加,这里我们选择 "空"。
![3](./images/3.gif)
新建一个实体后,在左侧的配置窗口就可以看到了,点击打开并修改其属性,这里重点介绍。
- 整体模板:选择一个原版生物并继承其所有的行为和资源
- 配套文件 - 行为包json仅继承某一原版生物的行为部分行为、AI等
- 配套文件 - 资源包json仅继承某一原版生物的资源部分模型、动画等
- 配套文件 - 语言文件:修改生物、物品等的文字描述
- 基础属性 - 标识符:用此来定义生物,不可以与其它生物重复(前缀:名称)
- 基础属性 - 自然生成:生物是否可在世界中自然生成
- 基础属性 - 召唤生成:在创造物品栏中出现该生物的刷怪蛋
- 行为包组件:创建生物的行为,可添加多个组件(主要使用)
因为我们创建的是空,所以整体模板遗迹配套文件都为空,跳过这些,直接添加行为包组件
<img src="./images/4.png" alt="4" style="zoom:115%;" />
添加需要基本行为组件后,点击某个组件的加号,还可以继续添加或修改更精细的行为,以“可被命名”举例,点击后面的加号,添加可以被命名且永久显示。
![5](./images/5.png)
基本的行为添加完后,在编辑器中点击**开发测试**进入到游戏,这里需要注意,如果点击开发测试进入游戏修改内容,地图是不会有变化的,点击**编辑**进入地图编辑器才行,如果有特殊需要,也可以把修改后的测试存档导出再重新导入到编辑器中。
![42](./images/42.png)
把NPC生成到地图中并且使用命名牌改名试一下这里有个小细节改完名字后可以回到行为包中将**可以被命名牌修改名称**改为**False**这样NPC的名字就锁定为目前修改的名称了。
![6](./images/6.gif)