/execute 有什么用?
/execute 命令会运行另一个命令,同时改变执行者、执行位置和执行方式,并可选择添加条件。此构建器会按正确顺序链接子命令,让你不再混淆语法。
如何构建 /execute 命令链
- 按所需顺序添加子命令。每个子命令都会修改其后所有内容的执行上下文。
- 配置每个子命令:实体选择器、坐标、条件和分数比较。
- 设置 run 命令:在命令链末尾,使用修改后的上下文执行的最终命令。
- 复制组装好的命令链,并粘贴到聊天框或命令方块中。
难点在于语法。一个命令链很容易超过 200 个字符,一个放错位置的关键词就会使整个命令失效。这个构建器通过下拉菜单、输入字段和实时预览消除了这种风险。
/execute 子命令详解
| Subcommand | What it changes |
|---|---|
| as | 执行实体 (who) |
| at | 位置、旋转和维度 |
| positioned | 仅位置 |
| rotated | 仅旋转 |
| facing | 旋转以面向某个点或实体 |
| align | 将位置对齐到方块网格 |
| anchored | 锚点 (眼睛或脚) |
| in | 维度 |
| on | 选择一个实体关系 |
| if / unless | 条件执行 |
| store | 将 result 或 success 保存到数据 |
| run | 要执行的最终命令 |
修饰符子命令
as 将执行者更改为所选实体,at 将执行位置移动到它们,positioned 和 rotated 直接设置位置和旋转,facing 瞄准一个点或实体,align 对齐到方块网格,anchored 选择眼睛或脚,in 更改维度,on 选择实体关系。
条件子命令
if 和 unless 用于测试条件,仅当条件通过时才继续执行命令链。Java 版可用的测试包括 entity、block、blocks、data、score、loaded、predicate、biome 和 function;Bedrock 版可用的测试包括 entity、block、blocks 和 score。
Store(仅限 Java 版)
store result 和 store success 将最终命令的输出保存到 score、block entity、entity NBT、命令 storage 或 bossbar 中。Bedrock 版没有 store 子命令。
顺序很重要
子命令从左到右执行。当 as 或 at 选中多个 entity 时,命令链的其余部分会为每个 entity 分叉一次,例如 execute as @a run say Hi 会同时为每个玩家运行。
常见示例
让每个玩家说“Hello”:execute as @a run say Hello
在草地上的僵尸处召唤闪电:execute as @e[type=zombie] at @s if block ~ ~-1 ~ minecraft:grass_block run summon lightning_bolt
将玩家生命值存储为 score:execute store result score @s health run data get entity @s Health
常见问题
我的 execute 命令为什么不工作?
命令链必须以 run 子命令或条件结束,run 只能在命令链的末尾出现一次,并且语法在不同版本之间有所变化。如果命令方块显示“unparseable”,请将您的命令链与您版本对应的 Wiki 示例进行比较。
Bedrock 版可以使用 store 吗?
不能。store、on、summon、data、biome、predicate、function 和 loaded 仅限 Java 版。当选中 Bedrock 版时,此构建器会隐藏它们。
如何为每个玩家运行命令?
使用 execute as @a run <command>。as 子命令会选择每个玩家,命令链会为每个选中的 entity 运行一次。
as 和 at 有什么区别?
as 改变执行者(谁执行),at 改变执行位置(在哪里执行)。使用 as 对 entity 进行操作,使用 at 在其位置进行操作,或者两者结合:execute as @e at @s run summon lightning_bolt。
我需要操作员权限吗?
Java 版需要权限等级 2(命令方块或操作员)。Bedrock 版需要世界设置中启用作弊。
Minecraft 中 maxCommandForkCount 的最大值是多少?
max_command_forks gamerule 默认值为 65,536,它限制了单个 /execute 命令可以创建的执行上下文数量。如果 as @e 选择的实体数量超过此限制,命令将失败。max_command_sequence_length 同样默认为 65,536,它限制了命令链或函数中的命令总数。