开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[BE教程] 附加包教程第十五期——物品:盔甲高级

 发表于 2022-5-24 20:04:02|显示全部楼层|阅读模式 IP:江苏省
本帖最后由 782 于 2022-6-2 17:05 编辑


物品(八)
盔甲高级

一、前言
我们之前学习了盔甲,它们可以自定义各种功能,但不能添加效果、粒子。
然而,使用动画、MoLang和物品标签,这很容易做到!
今天,我们就来学习如何在装备盔甲的时候执行命令!
请记住,这需要修改玩家的行为包文件,这是许多附加包的常见问题;
因此,如果这样做,附加包可能与其他人做的不兼容。
本教程假定读者已经制作了第十三期(物品:盔甲基础)的全套盔甲。
提示:使用此附加包时,必须打开“假日创造者功能”实验性玩法!

二、动画文件
第一步是创建一个动画文件,这是一个可以在某些关键帧上运行命令或事件的文件。
我们可以首先使用以下内容作为示例:
路径:行为包/animations/player.json
  1. {
  2.     "format_version": "1.10.0",
  3.     "animations": {
  4.         "animation.player.my_armor": {
  5.             "timeline": {
  6.                 "0.0": []
  7.             },
  8.             "animation_length": 0.05,
  9.             "loop": true
  10.         }
  11.     }
  12. }
复制代码

让我们来看看这个示例中的内容以及所有功能:
“animation.player.my_armor”是我们动画的标识符。
可以将其更改为其他内容,例如 “animation.player.phantom_armor”。
“timeline”用于在给定的关键帧上运行命令和事件。
“animation_length”是动画持续的时间,填写浮点数(小数)。
我们将使用0.05秒,因为那是游戏刻的时长。
“loop”非常通俗易懂:将其设置为true会使动画循环,填写布尔值。

我们可以将命令添加到“timeline”中的0.0数组中以执行,例如/effect命令:
  1. {
  2.     "0.0": [
  3.         "/effect @s speed 1 0"
  4.     ]
  5. }
复制代码

当然了,不只是/effect命令可以,还有其他命令也可以生效哦!

三、物品行为包文件
为了实际检查我们的物品是否配备齐全,我们可以使用Molang查询来检查物品标签。
在我们物品的行为文件中,我们必须在“components”中添加标签。
例如,如果我们想添加demo:my_tier标签,我们会添加“tag:demo:my_tier”组件:
  1. "tag:demo:my_tier": {}
复制代码

就这样,现在可以给物品分配的任何标签!
如果你愿意,还可以为物品添加更多标签。


四、玩家行为文件
我们需要修改玩家的行为包文件来运行动画。
没有原版玩家行为包文件的可以在本期教程的底部下载。
首先,我们需要为我们的动画设置一个简短的名称;
然后,将动画添加到描述中,并再次设置一个简短的名称,例如:
  1. {
  2.     "identifier": "minecraft:player",
  3.     "is_spawnable": false,
  4.     "is_summonable": false,
  5.     "is_experimental": false,
  6.     "animations": {
  7.         "my_armor": "animation.player.my_armor"
  8.     }
  9. }
复制代码

将“scripts”添加到“description”中,并设置要运行的Molang。


要检查物品,我们可以使用以下Molang之一:
1. query.is_item_name_any:在指定槽位中检查给定的物品标识符。

此示例将在主手检查“demo:totem_of_retreat”:
  1. query.is_item_name_any('slot.weapon.mainhand',0,'demo:totem_of_retreat')
复制代码

2. query.equipped_item_any_tag:检查指定槽位中至少一个的指定的物品标签。

此示例将检查在头盔槽位具有“demo:emerald_tier”或“demo:phantom_tier”物品标签的物品:
  1. query.equipped_item_any_tag('slot.armor.head','demo:emerald_tier','demo:phantom_tier')
复制代码

3. query.equipped_item_all_tags:检查指定槽位中所有的指定的物品的标签。

此示例将检查在头盔槽位同时具有“demo:emerald_tier”和“demo:phantom_tier”物品标签的物品:
  1. query.equipped_item_all_tags('slot.armor.head','demo:phantom_tier','demo:emerald_tier')
复制代码

让我们来看看使用query.equipped_item_any_tag的示例:
  1. {
  2.     "identifier": "minecraft:player",
  3.     "is_spawnable": false,
  4.     "is_summonable": false,
  5.     "is_experimental": false,
  6.     "animations": {
  7.         "my_armor": "animation.player.my_armor"
  8.     },
  9.     "scripts": {
  10.         "animate": [
  11.             {
  12.                 "my_armor": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier')"
  13.             }
  14.         ]
  15.     }
  16. }
复制代码

如果头盔槽位中配备了具有标签“demo:my_tier”的物品,此示例将运行带有“my_armor”短名称的动画。
可以更改Molang表达式以匹配物品标签,使用其他方法或添加其他方法。

五、拓展
我们还可以拓展我们的Molang,比如说:
多个条件
如果想在装备多个盔甲时运行命令,我们可以扩展我们的Molang:
  1. "animate": [
  2.     {
  3.         "my_armor": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier') && query.equipped_item_any_tag('slot.armor.chest','demo:my_tier') && query.equipped_item_any_tag('slot.armor.legs','demo:my_tier') && query.equipped_item_any_tag('slot.armor.feet','demo:my_tier')"
  4.     }
  5. ]
复制代码

此示例将检查所有四个装甲槽位中的具有“demo:my_tier”标签的物品,如果它们都存在了,则运行动画。
这里的“&&”意为“和,与,并(and)”。

根据这个语法,我们还可以制作以下示例:
如果我们想让盔甲仅在生命值较低时运行动画,我们可以在Molang中添加:
  1. "animate": [
  2.     {
  3.         "my_armor": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier') && query.health <= 5"
  4.     }
  5. ]
复制代码

此示例将以5或更少的生命值播放动画,允许玩家在危险时快速逃跑。

我们也可以将此应用于上面的示例,变成更长的Molang:
  1. {
  2.     "animate": [
  3.         {
  4.             "my_armor": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier') && query.equipped_item_any_tag('slot.armor.chest','demo:my_tier') && query.equipped_item_any_tag('slot.armor.legs','demo:my_tier') && query.equipped_item_any_tag('slot.armor.feet','demo:my_tier') && query.health <= 5"
  5.         }
  6.     ]
  7. }
复制代码


多个效果
如果你想要更多具有独特效果的物品,不要担心,因为这很容易做到。
可以创建一个新的动画文件,也可以添加到之前文件中,例如:
  1. {
  2.     "format_version": "1.10.0",
  3.     "animations": {
  4.         "animation.player.my_armor_1": {
  5.             "timeline": {
  6.                 "0.0": ["..."]
  7.             },
  8.             "animation_length": 0.05,
  9.             "loop": true
  10.         },
  11.         "animation.player.my_armor_2": {
  12.             "timeline": {
  13.                 "0.0": ["..."]
  14.             },
  15.             "animation_length": 0.05,
  16.             "loop": true
  17.         }
  18.     }
  19. }
复制代码

这需要添加到player.json(description组件)中:
  1. {
  2.     "identifier": "minecraft:player",
  3.     "is_spawnable": false,
  4.     "is_summonable": false,
  5.     "is_experimental": false,
  6.     "animations": {
  7.         "my_armor_1": "animation.player.my_armor_1",
  8.         "my_armor_2": "animation.player.my_armor_2"
  9.     },
  10.     "scripts": {
  11.         "animate": [
  12.             {
  13.                 "my_armor_1": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier_1')"
  14.             },
  15.             {
  16.                 "my_armor_2": "query.equipped_item_any_tag('slot.armor.head','demo:my_tier_2')"
  17.             }
  18.         ]
  19.     }
  20. }
复制代码


六、本期文件下载
原版player.json文件:  player.json(5.07 KB, 下载次数: 28)

预告:下一期会教大家物品的事件函数
大家的打赏是对楼主最好的鼓励!
附加包教程系列导航
上一期  下一期

评分

参与人数 1铁粒 +10收起理由
 WZM*** + 10很给力!

查看全部评分

苦力怕论坛,感谢有您~
 楼主|  发表于 2022-5-24 21:20:26|显示全部楼层 IP:江苏省
@lpyqzMinecraft
我又来更新了
2#2022-5-24 21:20:26回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-5-24 22:43:33 来自手机|显示全部楼层 IP:广西
大力支持一下
3#2022-5-24 22:43:33回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-11-26 04:47:17 来自手机|显示全部楼层 IP:广西
666666666666666
4#2022-11-26 04:47:17回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-3-5 21:55:04 来自手机|显示全部楼层 IP:安徽省
6666666666
5#2023-3-5 21:55:04回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-12-22 22:33

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3