目录

新人手册

命令执行

命令简介

命令是一个特殊的功能,透过输入一些字串,玩家能够做到不同的东西,比如瞬移等。
从1.7开始,由于命令的功能更加强大,更多玩家开始使用命令方块(俗称"CB")以做出一些特别的功能,比如RPG类地图及原版模组。

命令的使用方法(单人,并且你要有使用该命令的权限):

命令类型

命令有6种类型,分别是

需要注意的是, 某些命令可能是复合类型的, 比如/replaceitem, 分别能够影响玩家及方块。

命令执行对象、作用对象

任何命令都有其执行者作用对象

比如玩家执行一条命令, 执行者就是玩家。命令方块执行一条命令, 执行者就是命令方块。/execute一个实体执行命令,执行者就是那个实体。
所以命令的执行者可以是: 服务器(这玩意比较少提及,也不清楚执行坐标在哪(没人测试))、命令方块、玩家(未必是实体,比如死了的玩家也可以执行命令的)、实体。

命令也有作用对象, 和执行者类似, 作用对象也未必是玩家、实体, 可以是方块, 甚至存档的设定。

为什么要分开两者呢?
有些命令默认会作用在执行者身上, 如/clear命令默认会清空执行玩家的背包。然而执行对象未必是作用对象, 比如/setblock命令作用是在某个坐标放置方块, 那么难道是作用在执行玩家身上么?
那么执行者是否没用、可以忽略呢?也不是。有些命令需要视乎坐标(其实很多命令都需要, 尤其是使用目标选择器的时候), 那个时候就很在乎执行坐标了。而执行坐标一般视乎执行者。这时候执行者就有很重要的影响了。

命令执行坐标

默认情况下, 命令执行坐标是执行者的坐标。
命令执行坐标对相对坐标有非常重要的影响(相对坐标是以执行坐标为原点计算的), 以及目标选择器选择条件、顺序也和执行坐标有关系。

然而执行坐标由两种情况下不是执行者坐标:

命令执行

大部分命令的执行可以分拆成多次执行, 主要是一些牵涉到目标选择器的命令。
举个例子, /give @a command_block这命令, 先假设@a选择到的玩家是a、b和c
就可以分别拆成:

大部分这类型针对实体的命令都能分拆成多个小命令多次执行, 不过也有些是例外的, 比如/spreadplayers。

这样子思考的话, 就能够解决很多牵涉到多个实体的命令执行情况了。比如是/execute嵌套。

命令执行统计

命令执行的时候会统计影响到的东西数量、成功执行次数与执行结果。
所有统计都是整数, 储存在NBT里, 需要时可以直接用nbt查询或以/stats命令绑定到指定玩家名/实体的记分板分数。

成功执行次数

成功执行次数(SuccessCount)就是命令成功执行的次数。
上面的命令执行部分可以看到, 部分命令是可以分拆成多次执行的, 而实际上MC也是那么执行。
因此, 那类型的命令的执行次数就是选择器选择到的实体数。
成功执行次数就是那些执行次数里成功执行的次数。

其他命令的成功执行次数就全部是1。

execute的成功执行次数之后execute的章节会详细讲解。

影响实体数

影响实体数(AffectedEntities)就是命令在一次执行里影响到的实体数量。

注意: 几乎全部命令(即使是setblock), 即使执行失败, AffectedEntities也是1...别问我为什么, 去问Mojang吧

影响方块数

影响方块数(AffectedBlocks)就是命令在一次执行里影响到的方块数量, 不影响方块的命令则为0
大部分影响方块的命令都只会影响一个方块, 因此大部分的影响方块数=1。
然而, 部分命令, 如/fill、/clone、/testforblocks会影响多个方块, 它们的影响方块数就比较特别, 讲解它们的时候会详细说明。

影响物品数

影响物品数(AffectedItems)顾名思义就是影响了多少个物品...
只对/give、/clear、/replaceitem等影响物品的命令有用, 其他命令为0。

查询结果

查询结果(QueryResult)是比较特别的一种统计, 会储存查询结果的数值。
只对/gamerule(查询模式)、/time query等查询命令有效。其他命令均为0。