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

51 lines
2.2 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.

# 制作原版可对话生物
> 本篇教程获得第一期知识库必看教程奖。
>
> 获奖作者:某只苦力怕。
首先,默认你会自定义生物,而且知道组件组、组件和行为。
## 教程开始
第一步,生物行为
1. 先在生物的行为文件的description中加入scripts和animations引用动画控制器(行为包里的)。
2. 在生物的行为文件中加入些东西,使得玩家可以触发`events`(行为)添加`component_groups`(组件组),我用的是`minecraft:interact`组件(交互组件)触发`events`,然后在组件组中用`minecraft:variant`组件和`minecraft:mark_variant`组件定义`variant``mark_variant`的数值,记得在组件组中写上触发下一个`events`的组件。
![img](./images/1_0.png)
第二步,动画控制器
动画控制器(行为包里的)写法也和材质包里的一样用`transitions`进行切换,然后我这里同时使用`variant``mark_variant`为条件当他们都为1时触发动画控制器`liaotian1`,然后这个动画控制器里的`on_entry`执行指令:`say 嘤嘤嘤,教学开始`
![img](./images/1_1.png)
第三步对图2中44行`liaotian5`里的`/function yuyan`进行定义,可以用其他指令比如`function``tellraw``title`,如果`tellraw`放在动画控制器中反而会导致整个动画控制器文件错误,所以放在`mcfunction`文件中。
![img](./images/1_2.png)
第四步,对生物行为文件中的`interact_text`里的`action.interact.liaotian`进行定义,推荐这个方法,当然你想直接在生物行为文件中输入中文也是可以。
![img](./images/1_3.png)
## 小结
这样一个利用指令进行对话的`npc`就做好了,你也可以在组件组中加入些攻击组件,这样对话到那个组件组,生物就会开始攻击玩家,也可以在动画控制器中加入其他指令,比如`playsound`(播放音效),这样就能代替`minecraft:interact`组件里的`play_sounds`(交互时播放音效)了,当然如果你要自定义对话按钮的图案的话就没办法用原版的方法了,这边推荐用自定义`ui+python`的方式了。
附带教程文件的下载地址:[教程附带模组](https://wwn.lanzouy.com/ixrfx0dw6zpc) 。