mc里的每一个指令,都有一个执行环境

比如说,你自己在聊天栏里输入指令,那么执行环境就是:

  • 执行位置:你自己的坐标
  • 执行实体:你自己
  • 执行维度:你自己的维度
  • 执行朝向:你自己的朝向

很好理解,对吧

那么你如果想更改执行环境,就要用到 execute 指令了!

execute 有不少的子命令,分为四类:

  1. 修饰子命令 :用来更改执行环境
  2. 条件子命令 :就是 if 语句
  3. 存储子命令 :将命令的return值存起来
  4. run子命令 :后面接要执行的指令

子命令可以在 execute 后串连在一起使用,可出现在命令的任意位置及重复任意次数。run子命令除外,其只能位于末尾且只能使用一次。

如果看不懂,先往下看就懂了


修饰子命令

这里只介绍常用的

  • as :把实体设置成执行者

  • facing :将命令的执行朝向设置为面向指定坐标或指定实体。

  • at : 把实体的坐标,维度,朝向设置成执行位置,执行维度,执行朝向

这些都是把实体的数据作为自己的执行环境的

最开始以你自己的环境作为执行环境,然后各子命令按其在命令中的顺序被依次处理,依次覆盖掉前面的。下列命令中子命令虽然一致,但由于顺序不同,会产生不同效果:

/execute as @e at @s run tp @s ^ ^ ^1
# 所有实体向各自所朝方向移动一格。
/execute at @s as @e run tp @s ^ ^ ^1
# 所有实体移动到执行者前方一格。

你想如果想特定一个执行环境,那么你可以用以下的子命令

  • positioned :将执行位置设置为指定坐标或指定实体位置。

  • rotated :将执行朝向设为特定方向或设为指定实体的朝向。

  • in :将命令执行维度设置为特定维度。

给点例子:

/execute positioned 114 514 0 run locate structure #village
# 寻找离坐标(114, 514, 0)最近的村庄。
/execute in minecraft:the_end run tp 0 0 0
# tp到末地的(0, 0, 0)

还挺简单的是吧


条件子命令

条件子命令包括 if 和 unless 两种,unless 就是 if not

只有当条件满足了以后,才会执行 run子命令

这是可用条件类型,将它跟在 if 和 unless 后面就行:

  • biome:检测给定位置上的生物群系是否为特定生物群系。
  • block:检测给定位置上的方块是否是特定的方块或方块状态。
  • blocks:检测给定区域内的方块是否匹配另一个同等大小区域内的方块。
  • data:检测方块、实体或存储容器是否拥有给定的NBT标签。
  • dimension:检测命令执行时所处的维度是否为特定维度。
  • entity:检测一个或多个特定实体是否存在。
  • items:检测方块或实体的给定物品栏槽位或槽位区间内是否拥有指定物品。
  • loaded:检测给定位置是否已被加载。
  • score:检测指定目标的记分板中的记分项的分数是否与另一个(或同一个)目标的记分板的记分项的分数是否符合指定的关系,或者是否在给定的范围之内。

请理解一下这些示例:

/execute as @a if data entity @s Inventory[{Slot:0b}].components."minecraft:enchantments".levels."minecraft:efficiency" run tp @s 0 64 0
# 将所有快捷栏第一槽位物品带有效率魔咒的玩家传送到0, 64, 0

/execute as @a at @s if block ~ ~ ~ water run say "我湿了!"
# 让所有在水中的玩家在聊天框里说:“我湿了!”:
# 注意,玩家的坐标是脚底下的坐标

/execute as @e[type=zombie] unless data entity @s equipment.head.id run kill @s
# 杀死所有没有头盔的僵尸

一些具体的子命令的使用方法可自行查阅使用方式在这个网站

这些是还算简单的的部分,下一期上难度

2 条评论

  • @ 2025-6-16 14:17:32

    盲猜你是@

    • @ 2025-6-16 12:40:29

      实现爆炸弓

      /execute as @e[type=arrow] at @s unless block ^ ^ ^1 air run function sommon_tnt
      
      # 在 sommon_tnt 里面放这些 ↓
      /summon tnt
      /kill @s 
      

      function怎么用,以后会出一期的

      • 1