AI 速览
附加包教程第十一期讲解如何给自定义剑添加伤害显示、命中事件与耐久消耗
这是附加包教程系列的第十一期,承接上一期的武器基础内容,教读者在自定义剑的 JSON 中补充 minecraft:weapon 组件,让工具提示显示攻击伤害,并在击中实体时触发事件。教程详细说明了 sequence、randomize、teleport、run_command、damage 等事件写法的含义,还介绍了用空事件调整触发概率的技巧,以及 on_hit_block、on_not_hurt_entity 等拓展用法。适合已了解物品基础与基础武器组件、想进一步做武器进阶功能的附加包作者阅读。
- 使用该附加包必须开启假日创造者功能实验性玩法
- 教程假定读者已了解第八期物品基础与上一期武器基础内容
- 命令中若使用双引号必须转义,否则会引发重大错误
本卡片由 AI 阅读本帖后生成,可能存在疏漏,请以帖子正文为准。
|
本帖最后由 782 于 2022-5-20 20:20 编辑 物品(四) 武器进阶 一、前言 上一期,我们了解了武器的基本组件, 今天,我们就来给上一期制作的剑添加其他功能与事件。 本期教程假定读者已基本了解第八期(物品:基础)和上一期的内容。 提示:使用此附加包时,必须打开“假日创造者功能”实验性玩法! ![]() 二、正文 “minecraft:weapon”组件 上一期是基础武器的教程,但你可能希望能够在游戏中显示剑会造成的伤害点数。 要做到这一点,需要添加“minecraft:weapon”组件,即使它只是空的,这也足以让mc在内部知道,这是武器。 因此,如果将上述组件添加到上一期制作的武器的json文件中,现在将在其工具提示中看到 +10攻击伤害。 你可能在想“你为什么不在上一期添加这个?”答案是,我们将扩充这个组件,在本期教程中添加更多很酷的东西,所以我想把它分开讲述。 添加伤害时事件 如果你想做这样的事情,我们需要利用“minecraft:weapon”组件,并在武器击中实体时执行一个事件。 就像这样:
我们添加这一部分之后,那么每次用这把剑伤害实体时,它都会引发事件demo:my_sword.hurt_entity。 你可以随心所欲地命名它,但如果你有很多事件,建议有一定规则地命名,比较常用的是“命名空间:物品.名称” 例如,在这个示例中,demo是命名空间,my_sword指定事件运用在什么物品上,hurt_entity是该物品的事件名称。 我们可以用事件做我们想做的事。在下面这个例子中,我将做三件事:
然后,回到my_sword.item.json,并在components部分之后添加一个像这样的新部分。
详解: “sequence”用于执行多个事件,是数组,内含各个事件的JSON对象。 “randomize”定义了多个随机运行的事件,是数组,内含各个事件的JSON对象。 这里面还有其他的内容: “weight”表示执行事件的概率,填写整数。 “teleport”是事件的组成部分之一,表示传送实体。它里面有两个组件:
“run_command”是事件组成的部分之一,表示执行命令。 其中的“command”定义要运行的命令,是一个数组,里面可以填写带有命令的字符串。 要注意的是,如果要在命令中使用双引号,必须使用转义符号(\),否则会引发重大错误! 不知道大家有没有注意,在主事件下面还有一个空的事件,这个空的事件可以理解为虚拟事件。 这个空的事件有一个重要的作用:调整概率。 我们有一个比重(weight)为1的主事件和第二个比重(weight)为4的第二个空事件,所以这说明有四分之一(25%)的概率执行主事件(传送玩家)。 如果我们使用比重(weight)为100的空事件,那么我们将有一百分之一(1%)的概率会执行主事件(传送玩家)。 如果我们没有第二个空事件,那么第一个事件的比重(weight)将被忽略,并且它会100%发生。 后面还有一个“damage”事件,是为了减少剑的耐久度。
拓展 在“minecraft:weapon”组件中,还可以添加其他内容 例如: “on_hit_block”指定当破坏方块的时候执行的事件; “on_not_hurt_entity”指定攻击生物但没有造成伤害的时候执行的事件。 ![]() 三、本期文件下载 行为包文件示例:
my_sword.item.json
(2.22 KB, 下载次数: 90)
![]() 预告:下一期会教大家制作自定义工具 附加包教程系列导航 上一期 下一期 |



提升卡
观察者