开启辅助访问     
收藏本站

站内搜索

搜索

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

[BE教程] 附加包教程:9.物品(四)

 发表于 2023-1-11 09:50:30 来自手机|显示全部楼层|阅读模式 IP:天津
本帖最后由 Cat_Anchor 于 2025-4-19 10:02 编辑

本页面所述内容仅能在 1.21.0 及以下的游戏版本中运行。

前言
上期,我们学习了所有我已知的物品事件方法。也就是说,我们已经学完了物品相关知识。这一期,我们要进行实战演练。
演练目标
根据演练目标,使用对应的组件和事件,完成演练。
目标:一把剑(命名空间ID:test_pack:test_sword),伤害为26,创造模式下不能拿着它破坏方块,有附魔闪光(即使还没有附魔),附魔能力是70,耐久是5000,掉耐久几率是50%,潜行打到生物会造成范围5格伤害并掉5点耐久,潜行打破方块会有4分之1几率给持有者清除所有状态效果,然后增加状态效果(力量5、急迫5,都是30秒),然后掉5点耐久,不会刷新掉,可以放在副手。
思路
那么,让我们按照顺序完成这个任务吧!
既然是一把剑,那么首先在components里添加:
  1. "minecraft:tags": {
  2.   "tags": [
  3.     "minecraft:is_sword"
  4.   ]
  5. }
复制代码

伤害是26,创造模式下不能拿着它破坏方块,有附魔闪光。这3个条件分别代表3个组件,继续添加:
  1. "minecraft:damage": 26,
  2. "minecraft:can_destroy_in_creative": false,
  3. "minecraft:glint": true
复制代码

附魔能力是70,可以用minecraft:enchantable解决。
  1. "minecraft:enchantable":{"value":70,"slot":"sword"}
复制代码

耐久是5000,掉耐久几率是50%,可以用minecraft:durability解决。
  1. "minecraft:durability":{"damage_chance":{"min":50,"max":50},"max_durability":5000}
复制代码

接下来的一些功能有些复杂,我们先看最后的“不会刷新掉,可以放在副手”,可以用2个组件解决。
  1. "minecraft:should_despawn": false
  2. "minecraft:allow_off_hand": true
复制代码

然后,让我们看看题目里的隐藏要求。既然是剑,那么应该是破坏蜘蛛网和竹子很快,而且是装备,所以要装备在手上,最大堆叠数量应该是1。后者可以很简单地解决,前者则需要一点点功夫。剑没有效率附魔,所以use_efficiency应该是false。然后还得定义一个耐久下降的事件。
  1. "minecraft:hand_equipped":true,"minecraft:max_stack_size":1,"minecraft:digger":{"use_efficiency":false,"destroy_speeds":[{"block":"minecraft:web","speed":30,"on_dig":{"event":"damage"}},{"block":"minecraft:bamboo","speed":30,"on_dig":{"event":"damage"}}]}
  2. //上面是组件,下面是事件
  3. "damage":{"damage":{"type":"durability","amount":1,"target":"self"}}
复制代码

还有,剑应该能被修复,而且应该放在创造模式物品栏的“剑”这一类里。新版本中,同类自定义物品的修复无需额外组件。
  1. "minecraft:creative_category": {"parent":"itemGroup.name.sword"}
复制代码

最后是最难的地方。“潜行打到生物会造成范围5格伤害并掉5点耐久,潜行打破方块会有4分之1几率给持有者清除所有状态效果,然后增加状态效果(力量5、急迫5,都是30秒),然后掉5点耐久。”
这一堆东西可以用一个组件搞定,主要是事件怎么写。组件如下。
  1. "minecraft:weapon":{
  2.   "on_hit_block": "destroy",
  3.   "on_hurt_entity": "hurt",
  4.   "on_not_hurt_entity": "damage"
  5. } //注:1.20.40.21中移除了这个组件。
复制代码

然后再运用sequence和randomize写一下事件。这个有点长,为了便于理解,我还没有像上面一样压缩代码,所以用折叠块折起来。

最后,把以上写的一大堆东西结合在一起,成为一个文件,游戏内就可以起效了!
总结
这一期,我们进行了实战演练,运用之前学的组件和事件方法在代码上给原版游戏新增了一把剑。关于物品的学习即将结束,下期,我们就开始学习方块。我把我最终的成品放在下面当模板,可以按照这个改。
 test_sword.json(3.3 KB, 下载次数: 132)


评分

参与人数 1铁粒 +10收起理由
 CraftBu*** + 10苦力怕论坛感谢有你~

查看全部评分

苦力怕论坛,感谢有您~
 发表于 2024-7-28 19:40:36 来自手机|显示全部楼层 IP:山东省
评论复审中...编号:10650267
9#2024-7-28 19:40:36收起回复
Stone_Nugget2024-7-28 20:52IP:辽宁省
回复举报
方法1:on_use组件触发run_command事件运行function(格式版本<1.20.30)
方法2:去学sapi
qzusergjf2024-7-28 21:12IP:山东省
回复举报
sapi有什么好的教程吗mojang把on_use删了没法用了
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-2-16 18:12:04|显示全部楼层 IP:广西
评论复审中...编号:10364731
8#2024-2-16 18:12:04收起回复
Cat_Anchor2024-2-16 22:01IP:山西省
回复举报
r或者rm都是目标选择器里的范围参数,可以是小数。一个物品造成的伤害一般是整数,但是实体的生命值以单精度浮点数(Float)存储,可能会有小数。
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 楼主|  发表于 2024-2-16 17:34:44 来自手机|显示全部楼层 IP:山西省
评论复审中...编号:10364517
7#2024-2-16 17:34:44回复收起回复
苦力怕论坛,感谢有您~
 发表于 2024-2-16 13:38:43|显示全部楼层 IP:广西
评论复审中...编号:10363224
6#2024-2-16 13:38:43回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2023-1-11 10:36:41 来自手机|显示全部楼层 IP:广东省
评论复审中...编号:4958324
5#2023-1-11 10:36:41回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2023-1-11 10:23:56 来自手机|显示全部楼层 IP:天津
评论复审中...编号:4958026
4#2023-1-11 10:23:56回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-1-11 09:57:39 来自手机|显示全部楼层 IP:广东省
评论复审中...编号:4957417
3#2023-1-11 09:57:39回复收起回复
苦力怕论坛,感谢有您~
 发表于 2023-1-11 09:55:26 来自手机|显示全部楼层 IP:安徽省
评论复审中...编号:4957370
2#2023-1-11 09:55:26回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

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

QQ群

访问手机版

访问手机版

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

| 由 木韩网络 提供支持 | GMT+8, 2026-6-14 00:17

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

Powered by Discuz! X3.4