天才一秒记住【第一中文网】地址:www.dyzww.cc
(于2022\/7\/15重写)
还记得那些被execute替代的指令吗?其中,\/testfor、\/testforblock、\/testforblocks和\/scoreboard players test的功能被合并到了条件子命令中,也就是if和unless子命令。
if和unless这两个子命令虽说是子命令,但它们毕竟是多条指令融合而成的,自然而然也就有『子命令』的『子命令』,所以说我们是否可以把子命令的子命令称之为execute的『孙子命令』呢?
(滑稽)
虽然if和unless这两个子命令有完全相同的格式,但它们俩的效果是完全相反的:
if——如果给出的条件为真(true),也就是条件成立,即通过检测,运行指令
unless——如果给出的条件为假(false),也就是条件不成立,即通过检测,运行指令
如果你看不懂上面的描述,没关系,待会我们会举些例子,毕竟上面的描述比较偏向于编程思维。
条件子命令的子命令,截止minecraft Java1.19版本,一共有六个:
block ——探测指定位置是否为某种方块
blocks ——将指定区域与另外一个指定区域进行对比
entity ——探测指定实体是否存在。
score ——探测指定玩家在指定计分项上的分数是否与另一个玩家在指定计分项上的分数符合指定的关系
data ——探测指定方块、实体和存储Nbt是否拥有指定的Nbt标签
predicate ——检查指定谓词是否通过
其中,data子命令我们放到以后讲Nbt时再来(这玩意儿作为一个孙子命令,竟然还有三个子命令,也就是说execute有曾孙子了),predicate子命令我们在上一章已经遇到过了,所以我们这边就先来看看这剩下的四个子命令:
block、blocks、entity和score
其中,前三者实际上根本就不用讲。为何呢?让我们看一下它们的用法:
... if|unless block <方块位置><方块Id或标签>...
... if|unless blocks <源区域起始坐标><源区域终止坐标><比较区域下西北角坐标><对比模式:masked|all>...
... if|unless entity <检测目标:目标选择器>...
是不是有些熟悉?这难不成就是:
Java1.13之前
\/testfor <指定目标:目标选择器>[探测Nbt是否符合]
\/testforblock <探测位置:坐标><方块Id:字符串>[数据值:整数]
\/testforblock <探测位置:坐标><方块Id:字符串>[方块状态]
\/testforblocks <源区域起始坐标><源区域终止坐标><比较区域下西北角坐标>[<模式:masked|all>]
mojang这是直接移植过来的啊,模式名都不带改一下的。
既然这些子命令和被删除的那些指令用法几乎完全一样,我们这边也就不多讲了,直接上例子。
例子一:
\/execute as @e[type=player] at @s if entity @e[distance
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!