虽然这么写也能执行指令,但是将会没有任何效果。
下面我们再来看两个例子:
①/execute store result score item_count counter if entity @e[type=minecraft:item] store result score cow_count counter if entity @e[type=cow]
②/execute store result score item_count susu if entity @e[type=minecraft:item] store result score cow_count susu if entity @e[type=cow] store result score player_count susu run execute if entity @e[type=player]
第一个例子中有两组store+if。第二个例子中,在第一个例子的基础上,又加上了第三个store和一个run子命令来运行『execute if entity @e[type=player]』。
我们先来看看第一个例子。假设现在有2个掉落物,3头牛,请你猜一猜,运行这条指令会发生什么?
A.出现错误。
B.item_count的分数变成2,cow_count的分数变为3。
C.item_count的分数变为3,cow_count的分数变为3。
D.item_count的分数变成2,cow_count的分数变为2。
请你将公屏,打在你的答案上。
(这哪有公屏,这只有评论啊)
让我们等五秒钟,看看答案是什么。
五
四
三
二
一
答案是:
C!
当一个不带有run子命令的execute指令中含有多个store和条件子命令时,除了在最后一个条件子命令后面的store子命令收不到数据以外,其他的store子命令将会获取到最后一个条件子命令的数据。
但需要注意,虽然store子命令只能获取到最后一个条件子命令的数据,但是这不代表其他条件子命令没有作用。如果前面的条件子命令发现条件不符合的话,那么store就会无法获取到任何数据而不更改分数。
我们再来看看第二个例子。假设现在还是有2个掉落物,3头牛,1个玩家,请你猜一猜,运行第二个例子会发生什么?
答案是:item_count、cow_count和player_count的分数均会变为1
当一个带有run子命令的execute指令中含有多个store和条件子命令时,store子命令仅仅只会获取到run子命令运行的数据,并不会获取到其他条件子命令的数据。
你听懂了吗?
在本章的最后,我们来稍微了解一下store的这个storage子命令。
storage子命令(store)和predicate子命令(if|unless)都是在Java1.15版本中被添加的,并不是Java1.13一开始就有的。有趣的是,这两个东西都和数据包有较大关系。谓词我们已经知道了,那这个storage子命令又是什么呢?
正如我对这条子命令的描述一样,这条子命令可以将返回的值存储到硬盘上。更确切地说,是存储到指定的存储容器中(这是Minecraft Wiki的说法)。
硬盘?存储容器?都是什么鬼!
待会你就知道是什么鬼了。让我们先来看看这东西的格式:
... store <返回类型> storage <目标存储容器ID>
举个简单的例子:
/execute store result storage minecraft:distance To_the_nearest_village double 1.0 run locate structure #minecraft:village
这条指令适用于Java1.19及以上版本,效果是:将执行地点与最近村庄的距离以double双精度浮点数类型存储到名为『minecraft:distance』容器内的To_the_nearest_village标签。
如果你的存档是个全新的,那么你在运行上述指令后,首先游戏将会给你创建一个叫做『minecraft:distance』的存储容器,这个存储容器以NBT树状结构存储数据,并放置于你的存档目录下的data文件夹内的mand_storage_minecraft.dat文件中,具体路径如下:
小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。