第七章 指令的格式与指令执行的三要素
2020年1月4日 14:38 2098字
(本章的指令并不是原版真实存在的指令,而是作者瞎编的。)
在学习指令之前,你还得了解一下指令格式的语法,不然到时候看不懂格式别怪我。(本章的指令并不是原版真实存在的指令,而是作者瞎编的。)
Minecraft 官方的指令格式有六种术语、三种括号(基岩版是两种)。一种是 <>(安卓客户端会乱码,建议用网页版或IOS客户端,不然接下来你怎么看指令格式啊?),另一种是 [],还有一种是 ()。注:这是唯独阅文集团旗下应用,如起点读书、QQ 阅读等会出现的问题,在 MineBBS 上阅读本书不会遇到该问题。
具体的内容如下:
- 纯文本-照着写即可(如 /server info 中的 info 参数)
- <参数描述> - 必填,根据括号内对参数的描述填写(如 /name <玩家>中的“玩家”参数)
- <参数描述|参数描述> - 必填,选择括号内其中一项填写,符号“|”在这里表示“或”的意思(如 /drop <物品ID|方块ID>中的“物品ID或方块ID”参数)
- (第一项|第二项) - 必填,选择括号内其中一项参数填写(如 /learn (math|physics)中的“math或physics”参数)
- [参数描述] - 选填,根据括号内对参数的描述填写(如 /set [坐标]中的“坐标”参数)
- [第一项|第二项] - 选填,选择括号内其中一项填写(如 /find [item|entity]中的“item或entity”参数)
需要注意:本书中文指令格式较为混乱,且并没有完全按照 Minecraft 本身的指令格式,因此建议真的要查指令格式还是到 Minecraft Wiki。至于为什么不完全按照 Minecraft 本身的指令格式,因为刚开始写本书的时候没怎么注意:hua_嘿嘿:。
目前我已经在改善本书的指令格式,现在的情况已经好很多了。
本书采用的指令格式大体是这样的:
- 纯文本-同官方
- <参数描述> - 同官方,但部分旧章节会采用一些奇奇怪怪的括号,如“《》”和“〈〉”。
- (第一项|第二项) - 大部分章节还是采用类似基岩版的尖括号包裹。
- <参数描述|参数描述> - 同官方
- [参数描述] - 同官方
- [第一项|第二项] - 同官方
- [参数描述|参数描述] - 选填,根据括号内其中一项对参数的描述填写。
- [<参数描述|参数描述>] - 同『[参数描述|参数描述]』
- [<第一项|第二项>] - 同『[第一项|第二项]』
- 参数描述- Java 版和基岩版混用
- 执行位置——简单来说就是指令执行的位置,你可以通过一个问句来理解它:这条指令在哪里运行?
- 执行者——就是执行指令的东西,你也可以通过一个问句来理解它:执行这条指令的人是谁?
- 参数——就是你给指令提供的参数,你还是可以通过一个问句来理解它:执行这条指令的人要对什么东西干什么事情?
这三要素有什么用呢?
如果你用过 MCreator 这个软件来创建指令,你会发现创建指令后 MCreator 要求你写一个指令运行时的流程(也就是游戏解析并运行指令的过程),同时游戏将给这个流程提供以下信息:
- Entity - 执行指令的实体(对应“执行者”)
- xyz - 执行指令的 X、Y、Z 坐标(对应“执行位置”)
- World - 执行指令的维度(还是对应“执行位置”)
- Cmdparams - 提供的参数(对应“参数”)
其中『参数』我们得稍微讲一下。
我们在序言中讲解参数时是通过举例的方式,并没有给其下一个明确的定义,所以其实我们还是不知道参数究竟是什么。
所以参数究竟是什么呢?
参数(Parameter),又称元素(Elements),是指一条指令中除指令开头的单词和前缀外,提供的其他信息。
比如在指令 /tp @s ~ ~ ~ ~20 0 true 中,前缀『/』和指令单词 tp(有些指令教程也叫做指令头,反正怎么叫都可以,没有一个固定称谓)之外的『@s』目标选择器,相对坐标『~ ~ ~』,旋转角度『~20 0』和安全检查模式『true』均为参数。
参数按照其作用,可以笼统地分为六类:
- 子命令——有些指令,比如 scoreboard 会有很多的作用,此时就需要子命令来将不同的作用区分开来。(为什么不叫子指令呢?)
- 位置(坐标)——指令执行的地点,也就是上面的三要素之一,一般是一个坐标
- 目标——指令所操作的对象。如果对象是实体,一般用的是 UUID、玩家名或目标选择器;如果对象是方块,一般用的是坐标;如果对象是其他的一些东西,一般就会用一些特殊的 ID。
(注:本书中,默认将 UUID、玩家名和目标选择器合并起来。所以后面如果你看到一个参数可以填写目标选择器,那就大概率也能填写玩家名和 UUID)
- 值——这东西无法很好的定义,因为在不同的指令中,值类型的参数的作用不一致,但大多数情况下的作用都是具体化对目标的操作。比如在『将玩家传送至一个地点』的指令中,这个地点的坐标就是一个值类型的参数。当然你其实并不需要现在就将它理解得十分透彻,后面学习的过程中你慢慢就会懂了。
- 模式——对目标进行操作时,所采取的模式。比如传送玩家的时候,你可以选择是默认模式,还是开启安全传送模式。
- NBT、JSON——一般位于指令的末尾,对目标进行更具体的选择或进行一些更高级的操作。
所以空格在指令中十分重要,千万要记住了!
这就是本章的全部内容。接下来我们将会步入正式的指令学习阶段。