Bedrock Wiki
  • QQ
  • 原站
新手入门指南
  • Guide
    • 1. 简介
      指南
    • 2. 附加组件详解
    • 3. 软件与准备工作
    • 4. 项目设置
    • 5. 创建自定义物品
    • 6. 创建自定义实体
    • 7. Blockbench:建模、贴图与动画制作
    • 8. 添加战利品表、生成规则与合成配方
  • Extra
    • a. 理解JSON
    • b. 下载示例包
    • c. 故障排除
      帮助
    • d. 高级清单文件指南
    • e. 格式版本
    • f. Android 项目设置
JSON UI
  • General
    • JSON UI 入门指南
      指南
    • 最佳实践
      指南
  • Tutorials
    • Aseprite 动画
    • 保留标题文本
      中级
    • 修改服务器表单
      中级
    • 字符串与数字转换
      中级
    • 按钮与开关
      新手
    • 添加HUD界面元素
      新手
  • Documentation
    • JSON UI 文档
Meta
  • Style Guide
  • 使用JSON模式(Schemas)
  • 实用链接
  • 版本控制
  • 附加包性能优化
  • Q&A
    • GameTest 问答集 2021/08/06
    • 世界生成问答 2024/11/15
    • 延迟渲染技术预览问答 2024/02/23
    • 方块与物品问答 2024/08/30
    • 脚本与编辑器问答 2023/09/22
NBT
  • General
    • .mcstructure
  • Tutorials
    • 扩展结构限制
      简单
    • 教育版中的实验功能
      简单
  • NBT in Depth
    • NBT 库列表
      专家
    • NBT读取示例
      专家
    • 关于NBT(命名二进制标签)
      专家
世界生成
  • General
    • 世界生成入门
      指南
      实验性
    • 特性类型
      实验性
    • 生物群系
      指南
      实验性
  • Tutorials
    • 特征(Feature)的方块条件
      实验性
    • 生成地表区块
      实验性
    • 生成自定义矿石
      实验性
    • 生成自定义结构
      实验性
    • 高度图噪声地形
      实验性
  • Documentation
    • 生物群系标签
动画控制器
  • 动画控制器入门指南
    指南
  • 实体命令
    中级
  • AFK检测器
  • 将Molang变量转换为计分板数值
  • 死亡指令
  • 重生指令
命令
  • General
    • 命令方块入门指南
    • 函数
    • NBT 命令
    • 坐标系
    • 方块状态
    • 理解目标选择器
    • 记分板操作
  • Commands
    • Execute
      简单
    • Playanimation
    • 伤害
    • 播放音效
  • On Event Systems
    • 玩家首次加入时
    • On Player Join
    • 玩家离开时触发
    • 玩家死亡事件
    • 玩家重生事件系统
    • 首次加载世界时
  • Scoreboard Systems
    • 实体计数器
    • 计分板计时器
    • 比较与获取分数
  • Techniques
    • 执行逻辑门
    • MBE - Max的方块实体
    • FMBE - 创建显示实体的新方法
    • 视线检测
    • 移动状态检测
    • 轨道摄像机
  • Useful Creations
    • 多人位置重排系统
      函数
    • 自定义合成台
      简单
实体
  • General
    • Intro to Entities BP
      指南
      新手
    • 实体资源包入门
      指南
      新手
    • 实体问题排查指南
      帮助
    • NPC对话系统
      中级
    • 实体事件
      新手
    • 实体属性
    • 渲染控制器
      新手
    • 生成规则
  • Tutorials
    • 任意坐标系间的坐标转换(世界、实体、骨骼)
      中级
    • 创建船只
      中级
    • 实体手持物品
      中级
    • 实体攻击机制
      中级
    • 实体睡眠机制
      中级
    • 实体碰撞体
      中级
    • 实体移动
    • 实体计时器
      中级
    • 无敌实体
      新手
    • 村庄机制实现指南
    • 检测其他实体
      中级
    • 生成已驯服的实体
      脚本
      中级
    • 视线检测实体
      中级
    • 禁用队友伤害
      中级
    • 范围效果云入门指南
      中级
    • 虚拟实体
      新手
    • 飞行实体控制
      中级
  • Documentation
    • Vanilla Usage Spawn Rules
    • 原版使用组件
    • 抛射物
    • 虚拟组件
    • 运行时标识符
    • 非生物实体运行时标识符
战利品、配方与交易
  • General
    • 交易行为
  • Documentation
    • 战利品表
    • 交易表
    • 合成配方
    • 物品函数
  • Tutorials
    • 随机化结构战利品
      简单
文档
  • Shared Constructs
  • Molang 查询详解
  • Vanilla Materials
    专家
  • 声音定义
  • 文件类型
  • 材质配置文件说明
    专家
  • 菜单分类
  • 资源包文件夹结构
  • 雾效ID
  • 高级Molang指南
方块
  • General
    • 方块入门指南
      指南
      新手
    • 方块组件
    • Block Tags
    • 方块状态
    • Block Traits
    • 方块排列组合
    • 方块事件
      脚本
    • 方块事件迁移指南
      帮助
    • 方块物品化
      中级
    • 方块问题排查指南
      帮助
  • Visuals
    • 方块剔除
      中级
    • 方块模型
      指南
      新手
      简单
    • 方块着色
      简单
    • 方块纹理动画
      中级
    • 方块纹理变体
      中级
  • Tutorials
    • Precise Interaction
      专家
      脚本
    • Precise Rotation
      专家
      脚本
    • 伪方块
      中级
    • 可旋转方块
    • 应用持续效果
      简单
      脚本
    • 矿石战利品表
      简单
      脚本
    • 规避状态值限制
      专家
  • Vanilla Re-Creations
    • 自定义作物
      中级
      脚本
    • 自定义活板门
      中级
      脚本
    • 自定义玻璃
      新手
      简单
      已弃用
    • 自定义釉面陶瓦
      简单
  • Documentation
    • 原版方块模型
      新手
    • 方块形状
    • 方块格式历史
    • 方块音效
服务器
  • Software
    • Bedrock Server Software
  • Protocols
    • Bedrock Protocol
    • NetherNet 协议
    • RakNet 协议
概念
  • contents.json
  • Molang
    中级
  • Rawtext
  • textures_list.json
  • 命名空间
  • 子包
  • 文本与本地化
  • 着色器
  • 纹理图集
    中级
  • 表情符号与特殊字符
  • 覆盖资源
    中级
  • 音效
    中级
物品
  • General
    • 物品入门指南
      指南
      新手
    • 物品组件
    • 物品标签
    • 物品事件
      脚本
    • Item Event Migration
      帮助
    • 物品问题排查指南
      帮助
  • Tutorials
    • Custom Pottery Sherds
    • 可投掷物品
      中级
    • 生成物品
      中级
    • 自定义武器
      简单
    • 自定义盔甲
    • 自定义食物
      简单
      脚本
    • 通过装备物品执行命令
      实验性
      中级
    • 高分辨率物品
  • Documentation
    • 附魔
    • Numerical Item IDs
    • Vanilla Usage Components
    • 原版物品标识符
      已弃用
    • 可附着物
      新手
    • 物品格式历史记录
视觉效果
  • General
    • 实体视觉效果简介
      指南
    • 基岩版建模指南
    • 动画中的特效
    • 基于数学的动画
      中级
    • 材质
      专家
    • 材质创作
      专家
    • 皮肤包制作指南
    • 自定义死亡动画
      中级
  • Tutorials
    • Glowing Entity Texture
    • 受伤动画
      中级
    • 实体纹理动画
      中级
    • 栓绳位置调整
      简单
    • 玩家几何模型
      新手
    • 移除实体阴影
      中级
    • 重绘生成蛋纹理
      新手
  • Ideas
    • 结构展示技巧
粒子效果
  • General
    • 粒子效果入门
      指南
  • Tutorials
    • 禁用粒子效果
      新手
  • Documentation
    • 原版粒子效果
脚本编写
  • General
    • 脚本编程入门
    • 什么是Script API?
    • API 模块
  • Tutorials
    • GameTests
      实验性
    • 简易聊天命令
      实验性
    • 脚本核心功能
    • 脚本表单
      实验性
    • 脚本请求API
      实验性
    • 阻止方块放置
  • Documentation
    • JavaScript 问题排查指南
    • Script Resources
    • Script Watchdog
      实验性
    • TypeScript
    • 引擎环境
虚拟现实
  • General
    • 启用VR模式
      指南
    • 配置资源包
      专家
  • Tutorials
    • 编辑你的第一个模型
      专家

Execute

easy
Execute
  • 引言
  • 理解执行上下文
  • Execute 命令及其变更原因
  • 语法详解
    • /execute as
    • /execute at
    • /execute in
    • /execute positioned
    • /execute align
    • /execute anchored
    • /execute rotated
    • /execute facing
    • /execute (if|unless)
    • /execute run
  • 示例与旧命令升级

引言 ​

随着 1.19.50 版本的发布,/execute 命令经历了语法重构。虽然新语法更加冗长,但它能更精细地控制命令的上下文组件,并支持条件判断,从而取代了 /testfor、/testforblock 和 /testforblocks 等命令。

在深入探讨语法细节之前,我们需要理解旧版 /execute 的工作原理、变更内容及其原因。这将有助于更好地解释新语法中的概念。

理解执行上下文 ​

无论是命令初学者还是熟悉旧版 /execute 的玩家,都有必要回顾命令的执行上下文概念。

简而言之,执行上下文是影响命令运行的参数集合。包括:命令的执行者(即运行命令的实体)、命令运行的位置和维度,以及命令应用的旋转角度等。

每个命令都带有这样的上下文,且上下文会根据命令的运行方式而变化。从命令方块触发的命令没有执行者,其位置设为该命令方块的位置;通过聊天栏输入的命令则以玩家为执行者,并在玩家所在位置运行。

Execute 命令及其变更原因 ​

/execute 命令代表一个或多个实体执行另一条命令。旧版语法如下:

/execute <目标> <位置> <命令>
/execute <目标> <位置> detect <位置> <方块> <数据值> <命令>
1
2

旧语法中,你需要指定一个目标来执行命令,随后命令的上下文会切换为该目标,并在该目标的位置运行。任何位置偏移都相对于该目标。

虽然这在多数情况下很有用,但它强制将命令的目标和位置绑定在一起(除非手动输入世界坐标作为 <位置>)。此外,由于每次都必须以实体身份执行,这种语法在构建条件判断时显得不够灵活。

在 2017 年夏季的「水域更新」开发期间,Minecraft: Java 版的开发者们收集了社区关于如何改进 /execute 语法的反馈,最终形成了以下核心理念:/execute 可以接受无限数量的子命令,这些子命令按指定顺序逐步修改命令的上下文,最后通过 run 子命令触发实际命令。

这种设计大幅提升了 /execute 的灵活性,并允许将执行者和命令位置分离。

语法详解 ​

现在,让我们详细解析 /execute 的新语法:

/execute as ​

修改命令的执行者,即目标选择器 @s 所指向的实体。

/execute as <origin: target> -> execute
1

此子命令不会改变命令的位置、旋转或维度上下文。

如果指定了多个目标,则命令会为每个目标分别运行一次,@s 依次指向每个实体。

/execute at ​

修改命令的运行位置,将命令的位置、旋转和维度上下文设为指定实体的值。

/execute at <origin: target> -> execute
1

此子命令不会改变命令的执行者,因此 @s 仍指向最近一次通过 as 指定的目标。

如果指定了多个目标,则命令会为每个目标分别运行一次,并更新上下文为各目标的位置、旋转和维度。

/execute in ​

设置命令运行的维度。

/execute in <dimension: string> -> execute
1

当前支持的维度参数为 overworld(主世界)、nether(下界)和 the_end(末地)。

例如,要在末地维度执行命令:

/execute in the_end positioned 0 -100 0 as @a[rm=1] run say 我位于末地维度
1

注意:维度切换时会自动应用维度比例尺。从主世界进入下界时,位置坐标会乘以 0.125;反之则乘以 8。

/execute positioned ​

直接设置命令的位置上下文。

/execute positioned <position: x y z> -> execute
1

将命令的位置设为指定坐标。相对坐标和局部坐标基于命令当前位置计算。

/execute positioned as <origin: target> -> execute
1

将命令的位置设为指定目标的位置。功能类似于 /execute at,但仅修改位置,不改变旋转或维度。

如果指定了多个目标,则命令会为每个目标分别运行一次,并更新位置上下文。

/execute align ​

将命令的当前位置对齐到方块网格。

/execute align <axes: swizzle> -> execute
1

对齐操作会对坐标取整。该子命令接受 "x"、"y"、"z" 的非重复组合,并在指定轴上对位置取整。

要将目标对齐到方块中心:

/execute as <target> at @s align xyz run tp @s ~0.5 ~0.5 ~0.5
1

/execute anchored ​

设置命令的锚点为执行者的脚部或眼部。修改锚点会影响局部坐标的计算基准。

/execute anchored (eyes|feet) -> execute
1

默认锚点为目标的脚部。

当锚点设为 eyes 时,命令的局部坐标会基于执行者的"眼睛高度"进行偏移。

由于漏洞 MCPE-162681,当前该偏移也会影响相对坐标。

此外,同一 /execute 命令中只能使用一次 anchored 子命令,后续设置将无效。这是由漏洞 MCPE-165051 导致的。

/execute rotated ​

直接设置命令的旋转上下文。

/execute rotated <yaw: value> <pitch: value> -> execute
1

将命令的旋转设为指定角度值。相对坐标和局部坐标基于当前旋转计算。默认旋转为 0(俯仰角和偏航角均为 0),除非先前已被修改。

/execute rotated as <origin: target> -> execute
1

将命令的旋转设为指定目标的旋转角度。

如果指定了多个目标,则命令会为每个目标分别运行一次,并更新旋转上下文。

/execute facing ​

设置命令的旋转角度使其朝向某个位置。旋转计算基于命令当前位置。

/execute facing <position: x y z> -> execute
1

设置命令朝向指定方块位置。相对坐标和局部坐标基于当前位置计算。

/execute facing entity <origin: target> (eyes|feet) -> execute
1

设置命令朝向指定目标的位置。锚点设为 feet 时朝向目标的站立位置,设为 eyes 时则朝向目标的眼部位置(参见 /execute anchored)。

如果指定了多个目标,则命令会为每个目标分别运行一次,并更新旋转上下文。

/execute (if|unless) ​

根据条件判断是否执行命令。if 在条件为真时继续执行,unless 则相反。

/execute if entity <target: target> -> execute
1

功能类似 /testfor。当目标存在时返回真。

/execute if block <position: x y z> <block: string> -> execute
1

功能类似 /testforblock。当指定位置存在该方块时返回真。

可额外指定数据值或方块状态,否则忽略方块状态(视为 -1)。

/execute if blocks <begin: x y z> <end: x y z> <destination: x y z> (all|masked) -> execute
1

功能类似 /testforblocks。构造起始点到终点的区域,当目标区域的方块匹配时返回真。

参数 all 要求所有方块必须匹配,masked 则忽略空气方块。

/execute if score <target: target> <objective: string> matches <range: integer range> -> execute
1

检测指定分数是否在给定范围内。使用整数范围语法。

/execute if score <target: target> <objective: string> (=|<|<=|>|>=) <source: target> <objective: string> -> execute
1

检测两个分数是否符合逻辑比较。支持等于(=)、大于(>)、大于等于(>=)、小于(<)和小于等于(<=)。

/execute run ​

/execute run <command: command>
1

使用当前所有上下文修改运行指定命令。该子命令必须位于 /execute 命令的末尾。

不过该子命令并非必需——以 if 或 unless 结尾的 /execute 命令同样有效,此时会返回条件测试的结果。

示例与旧命令升级 ​

由于子命令可以无限组合,/execute 的参数组合几乎无穷无尽。这里仅展示一些常见用例。

旧版 /execute 的功能可通过 as <目标> at @s 复现。如需基于实体的位置偏移,添加 positioned;如需检测方块存在,添加 if block。以下是对等示例:

  1. 带偏移的传送
yaml
# 旧语法:
/execute @p ~ ~1.62 ~ teleport @s ^ ^ ^3
# 新语法:
/execute as @p at @s positioned ~ ~1.62 ~ run teleport @s ^ ^ ^3
1
2
3
4
  1. 链式执行
yaml
# 旧语法:
/execute @e[type=sheep] ~ ~ ~ execute @e[type=item,r=5] ~ ~ ~ detect ~ ~-1 ~ stone kill @s
# 新语法:
/execute at @e[type=sheep] as @e[type=item,r=5] at @s if block ~ ~-1 ~ stone run kill @s
1
2
3
4

(注意此处不使用 as @e[type=sheep] at @s,因为只需羊的位置而非执行身份。)

以下是旧语法难以实现或无法单命令完成的新功能示例:

yaml
# 检测虚拟玩家分数:
/execute if score game_settings var matches 3.. run say [游戏] 难度已设为困难。

# 比较两个分数是否相等:
/execute as @a if score @s wiki:cash = @s wiki:bank run say 我的现金余额与银行存款相等。

# 检测实体存在而不选择它:
/execute as @a at @s if entity @e[type=armor_stand,r=10] run gamemode survival @s
1
2
3
4
5
6
7
8

(推荐阅读下一篇)逻辑门实现

贡献者

编辑 Execute

Bedrock Wiki by Bedrock OSS ,Translate by 8aka-Team

"Minecraft"是Mojang AB的注册商标。

Bedrock OSS、Bedrock Wiki以及 bedrock.dev 与Microsoft及Mojang AB不存在任何隶属关系。

  • 隐私政策
  • 加入QQ社区
  • 参与贡献指南
  • 访问代码仓库