--- front: https://nie.res.netease.com/r/pic/20211104/69055361-2e7a-452f-8b1a-f23e1262a03a.jpg hard: 高级 time: 20分钟 --- # 常用命令及用法 本节我们介绍最常用的一些命令及其使用方法。我们从实体、世界、聊天、方块、音效和粒子等角度介绍常用的命令。 ## 实体命令 ### summon `/summon`命令可以用于在世界中召唤一系列实体。它的语法为: ```shell summon [spawnPos: x y z] [spawnEvent: string] [nameTag: string] ``` - `entityType`:EntityType类型,实体类型,可以为实体ID。 - `spawnPos`:x y z类型,生成点,是你要召唤的实体的生成坐标。 - `spawnEvent`:string类型,生成事件,生成时实体触发的事件。 - `nameTag`:string类型,实体出生自带的名字。 ### scoreboard `scoreboard`命令是一种可以在各个实体的基础上跟踪数值,以及执行数学运算的命令,其使用的容器被称作**记分板**(**Scoreboard**)。记分板非常复杂,如果想详细了解,可以参见[Minecraft Wiki的记分板页面](https://zh.minecraft.wiki/w/%E8%AE%B0%E5%88%86%E6%9D%BF)。 ### tag `tag`命令允许你在各个实体的基础上跟踪标签。有如下几种子命令: 为目标添加一个标签: ```shell tag add ``` 移除目标的一个标签: ```shell tag remove ``` 列出目标所拥有的所有标签: ```shell tag list ``` ## 世界命令 ### time `time`命令可以用于调整世界时间。它的语法如下: - `set`子命令: ```shell /time set /time set ``` - `query`子命令: ```shell time query ``` - `add`子命令: ```shell time add ``` `set`子命令用于设置当前时间,后面紧跟的参数为要设置的时间数值或`TimeSpec`枚举值,枚举值可以为`day`、`night`、`noon`、`midnight`、`sunrise`和`sunset`。 `query`子命令用于查询当日时间、游戏时间和天数。 `add`子命令用于在当前时间的基础上添加一定量的时间。 ### weather `weather`命令用于调整天气。它的语法如下: ```shell /weather [duration: int] ``` 第一个字面参数是要调整的目标: - `clear`代表晴天。 - `rain`代表雨雪。 - `thunder`代表雷暴。 第二个可选参数代表该状态的持续时间,单位是游戏刻,其中20游戏刻等于1秒。 ### gamemode `gamemode`命令可以用来更改一个玩家的游戏模式。它的语法如下: ```shell /gamemode [player: target] /gamemode [player: target] ``` 我们可以看到,第一个参数是必需参数,可以为一个代表游戏模式的整数,或是一个`GameMode`枚举值。枚举值可以为`survival`(`s`)生存模式、`creative`(`c`)创造模式、`adventure`(`a`)冒险模式和、`default`(`d`)默认的游戏模式。 第二个参数是可选参数,如果不指定则默认更改当前执行命令的玩家的游戏模式。如若指定玩家,则更改指定玩家的游戏模式,该参数可以为玩家名或一个目标选择器。 ### gamerule `gamerule`命令是用来更新一个**游戏规则**(**Game Rule**)的。游戏中有大量的游戏规则,控制着游戏中的各种事件是否应该发生。我们可以通过如下语法使用该命令: ```shell /gamerule [value: Boolean] /gamerule [value: int] ``` 游戏规则有两种形态,一种是布尔游戏规则,其值只有`true`或`false`;一种是整数游戏规则,其值可以为整数。完整的游戏规则列表可以在[Minecraft Wiki的游戏规则页面](https://zh.minecraft.wiki/w/%E6%B8%B8%E6%88%8F%E8%A7%84%E5%88%99)找到。 ## 聊天命令 ### tell `tell`命令是用于向一个或多个玩家私发消息的命令。该命令有两个别名,分别是`msg`和`w`,这两个别名和本名有相同的效果。有如下格式: ```shell tell msg w ``` 第一个参数可以为玩家名或目标选择器,通过目标选择器可以选择多个玩家。第二个参数是一个消息文本,即你要发送的消息。通过灵活使用该命令可以做到针对世界中不同玩家发送不同的独占消息,制作一些针对每个人都不同的成就、交易消息等非常有用。 ## 方块命令 ### setblock `setblock`命令可以在指定坐标处放置一个指定方块。 ```shell setblock [tileData: int] [destroy|keep|replace] setblock [blockStates: block states] [destroy|keep|replace] ``` 其中最后一个字面参数分别可以用于选择一下三种模式: - `destroy`:摧毁模式,原位置的方块将被模拟摧毁,正常掉落并播放破坏音效。该模式为默认值。 - `keep`:保留模式,只有在原位置是空气时才会成功放置,否则都将保留原方块不变。 - `replace`:替换模式,原方块直接消失并被替换成新方块,不会经历破坏和掉落。 ### fill `fill`命令用于在某个矩形区域内批量填充方块,其语法如下: ```shell fill [tileData: int] [oldBlockHandling: FillMode] fill [blockStates: block states] [oldBlockHandling: FillMode] ``` 最后一个`oldBlockHandling`枚举参数除了上述三种模式外,还支持如下两种模式: - `hollow`:镂空模式,将区域的最外层方块更改为指定的方块,内部全部替换为空气。 - `outline`:外框模式,将区域的最外层方块更改为指定的方块,内部保留原样。 该参数的默认值为`replace`。 ### clone `clone`命令用于将一处地形复制(克隆)到另一处,其本质也是方块的复制。 ```shell clone [maskMode: MaskMode] [cloneMode: CloneMode] clone filtered clone filtered ``` 其中`maskMode`枚举参数能够指定掩码模式,有以下几种类型: - `masked`:执行一种类似于计算机中“掩码取或”的过程,即使最终结果为仅复制非空气方块,保持目的区域中原本会被替换为空气的方块不变。 - `replace`:执行纯粹的替换过程,用源区域的方块覆盖目标区域中的所有方块。该模式为默认值。 - `filtered`:执行一种类似于筛选的过程,使命令只复制指定方块。其本质也是一种掩码模式,但是需要再跟一些参数额外制定一个方块。 `cloneMode`枚举参数能够指定克隆模式,有以下三种类型: - `force`:强制克隆,即使源区域与目标区域有重叠。 - `move`:移动克隆,并将源区域替换为空气。如果掩码模式为`filtered`,只有被指定的克隆的方块位置才会替换为空气。 - `noraml`:正常克隆,不强制或移动。该模式为默认值。 ## 音效命令 ### playsound `playsound`命令用于在游戏中播放一条声音。其语法如下: ```shell playsound [player: target] [position: x y z] [volume: float] [pitch: float] [minimumVolume: float] ``` 其中`sound`参数必须指定一个`sound_definitions.json`中定义的声音事件,例如`mob.fox.ambient`。 ## 粒子命令 ### particle `particle`命令的主要作用是在游戏中生成一个国际版粒子发射器。 ```shell particle ``` `effect`参数是粒子发射器的ID,必须带有命名空间。`position`是粒子发射器生成的初坐标,之后发射器可能会根据其定义文件里的配置情况而改变位置。