开启辅助访问     
收藏本站

站内搜索

搜索

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

[闲聊] 我居然试出了无文档组件的两个字段

 发表于 2024-9-21 19:37:50 来自手机|显示全部楼层|阅读模式 IP:天津
最后我决定不去管无框玻璃板了,转而看看其他东西。红石导体的那个方块组件的文档也出现了,方块标签列表也有了,物品组件也多了个稀有度出来,但还有两个组件没有文档——minecraft:damage_absorption 伤害吸收组件和 minecraft:durability_sensor 耐久检测组件。
这两个组件用于物品,第一个组件的主要功能是让物品像狼铠一样吸收外界伤害并转化为掉耐久,保护穿戴者不受伤害;第二个组件的主要功能是检测物品的耐久值,一旦低于某个值就显示一个粒子或播放一个声音。
由于没有文档,我们不知道这两个组件怎么写。不过更新日志中提到了,它们的参数都只有一个字段,而且都是列表,所以只需要猜列表里的东西。
第一个组件的语法很好猜,因为它只有一个字段——absorbable_causes。一般这个字段的名称会反映它是做什么的,这里翻译过来就是“可吸收的伤害来源”,因此我猜列表里是代表伤害来源的字符串(例如 fall 就是摔落伤害)。进游戏试试,果然是这样,于是第一个组件就被我攻克了。
第二个就不是那么好猜了——其实相当不好猜。因为它需要三个信息——要检测的耐久值、播放的声音ID和显示的粒子ID。一般这种情况就是列表里有对象,对象里指定这三个值,事实证明我是对的。我定义了一个物品,设置耐久度为 4096,而且让它吸收摔落伤害,方便测试。当我在这个组件的列表里输入整数 1 时,内容日志告诉我要填写对象。于是我改成了 {},这下没有内容日志了。不过我也不知道怎么继续探索了,于是我尝试写出 "value": 4000 来代表“耐久阈值为 4000”,结果失败了,提示物品模式里没有此字段。
于是我试了试别的键,结果都失败了。我又把目标转移到“试出粒子效果的字段”上,试了很多次,因为有太多英文短语能表达这个意思了。
之后,我彻底陷入了迷茫。上次 minecraft:geometry 方块组件的文档没有更新,我就试了半天方块剔除的效果,试过像是 block_culling culling_rule block_cull_rule geometry_culling 这样的字符串,单复数和动词形式变来变去,都没有成功。最后我偶然看到了结果,原来是一个词 culling!这次也几乎逃不掉这样的命运,试再多次都不如等官方放出文档。
我决定看看那个 240 多 MiB 的 .so 文件,说不定那里有我想要的。在那个庞大无比的文件里搜寻了很久,我找到了几个可疑的关键字:ParticleEffectType particle_sound_effect_event ParticleEventRandomNode ParticleEventNode。首先排除最后两个,因为它们形式差不多,只是一个 random 的差别,而且还有 node,肯定不是。然后我试了第二个,结果失败。我把第一个转为用下划线连接的形式试了试,也失败了。那时我还不知道,其实我离成功只有一个单词之遥。
之后我又试了试声音,结果浪费了很多时间也没有一点成果。其实本来就不该出成果,失败了是常态,成功了才不对劲。
最后,我一口气试了六七个字段,粒子声音一起来。打开存档,娴熟地 /reload all,结果跳出了一堆内容日志。“又失败了,”我想。
“等等,怎么……有点不对劲?”我突然发现内容日志的数量好像和文件里尝试字段的数量对不上。经过排查,我发现 particle_type 居然没有报错!我赶忙删掉其他字段,就留一个 particle_type。为了避免偶然,我又随手添加了一个 durability 字段,毕竟之前试过这么多次,总不至于这一下就试对了,这个字段肯定是错的,看看会不会有内容日志。进入存档,没有任何内容日志!
难道游戏被我整坏了,不弹内容日志了?我这么想。为了验证我的想法,我随手在 durability 字段中间加了个字母,变成了 durabililty。进入游戏,只有 durabililty 的提示!难道……我顺手把指定耐久度阈值的字段猜出来了?
为了验证这两个字段真的在工作,我删掉 durabililty,尝试把 durability 字段设为 4000,然后在 particle_type 字段中填写一个粒子。我随便找了个显眼的粒子,就教育版的大象牙膏粒子吧!
打开存档,我使用了 /damage @s 100 fall 命令。这个命令的意思是对自己造成 100 点摔落伤害,由于有伤害吸收组件,物品应该掉 100 点耐久,正好从 4096 掉到 3996,会越过 4000 的阈值触发粒子。结果却没有触发粒子,直到物品爆掉也没有,这让我怀疑我试出的字段的正确性。我又试了一个原版粒子——高营火烟雾粒子,有无前缀的 ID 都试了,结果没有任何效果。
正当我陷入自我怀疑之时,我突然想起一个东西——旧版粒子 ID。也许我们要用这个!于是我打开旧版粒子 ID 的列表,选择了高营火烟雾粒子,它的 ID 是 campfiresmoketall。(我之前做的开发命令库里正好有这个命令。)
进入存档,我照常输入命令,结果却没有任何粒子。这时我发现是耐久从 3996 掉到了 3896,所以没触发。我给了自己一个新的物品,穿上,输入命令——真的有粒子出现了!(一缕胜利的炊烟。)
这意味着,我之前试出来的两个字段完全正确!现在就剩一个播放声音的字段没试出来了。



说实话,现在想想,这是很巧合的。万一今天我运气不佳,万一我没发现内容日志少一条,万一我之前没做开发命令库,我就不会知道还有“旧版粒子 ID”这种东西,也不会有今天的成功了。



我已经更新了附加包教程,首先是重新排版了一下,这样方便在电脑上看。然后是修复了一些问题,增加了一些描述。最后是把今天的成果放上去了,虽然他们一旦放出文档,今天的成果就不能叫成果了。
不知道为什么,那期教程进了核审,现在我每编辑一次都要核审一次,所以有时候别人看不到帖子。那帖子肯定是要继续更新的,我也没办法改变什么,所以就让它那样吧。
苦力怕论坛,感谢有您~
 发表于 2024-9-21 21:50:40 来自手机|显示全部楼层 IP:安徽省
看不懂,但大受震撼
2#2024-9-21 21:50:40回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

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

QQ群

访问手机版

访问手机版

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

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

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

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