肥鹏
回答者
回答于 2026-10-20
在Minecraft中,使用execute指令让实体在特定条件下执行命令,需根据游戏版本选择对应语法。
Java版(1.13及以上)
Java版采用子命令链式结构,基本格式为:
execute <子命令链> run <最终执行的命令>
常用子命令包括:
as <目标选择器>:将命令执行者更改为匹配的实体,但不改变执行坐标。at <目标选择器>:将执行坐标和朝向更改为匹配实体的位置。if entity <目标选择器>:当存在匹配实体时满足条件。if block <坐标> <方块>:当指定坐标为特定方块时满足条件。run <命令>:在前面所有条件满足后,执行该命令。
示例:让所有站在金块上的玩家给自己一个苹果。
execute as @a at @s if block ~ ~-1 ~ minecraft:gold_block run give @s apple 1
解析:as @a以每个玩家身份执行,at @s将坐标移至该玩家处,if block判断脚下是否为金块,满足则run执行give命令。
基岩版
基岩版沿用旧版语法,格式为:
execute <执行者> <x> <y> <z> <detect条件(可选)> <命令>
示例:
execute @e[type=pig] ~ ~ ~ say 我是猪
若需检测方块条件,加入detect参数:
execute @a ~ ~ ~ detect ~ ~-1 ~ gold_block 0 say 我站在金块上
适用条件与注意事项
as仅改变执行者身份,不改变坐标;需要同时改变坐标时必须配合at @s使用。if子命令作为前置条件,只有全部满足才会触发run后的命令。- 目标选择器(如@a、@e[type=...])决定了哪些实体参与判定。
- Java版1.12及更早版本的语法与基岩版类似,但1.13起已完全重构,不可混用。
常见误区
- 混淆
as与at的功能,单独使用as不会使命令在实体所在位置执行。 - 在Java版中使用旧版语法导致命令无法识别。
- 忽略
run关键字,Java版中run是连接条件与最终命令的必要标记。