ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 命令 > 本文只讨论原版(无Mod无插件)、单人模式可以执行、权限等级为2的命令 命令就是一条文字,通过让游戏运行这条文字来执行不同的功能、操作。命令有不同参数,也就是可以改变的地方,决定了命令执行的结果,如把东西传送到什么地方、在玩家聊天栏显示什么文字等等。 根据命令的功能,我们可以大致分为几类: + 只影响玩家的 + 影响实体的(无论能不能影响玩家) + 影响方块的 + 显示的(只有玩家能看见、听见,不影响游戏内任何东西的) + 记分板及检测类 + 其他(其他的几乎都自成一体系) > 部分命令同时属于几类,如`replaceitem`能影响实体及方块实体(block-entity) > 本文将**不会说明所有命令的用法**,只会在例子中对使用的命令作出**简单介绍**,详细说明请见 https://minecraft.gamepedia.com/Commands (英文版,有能力者建议阅读英文版)或 https://minecraft-zh.gamepedia.com/%E5%91%BD%E4%BB%A4 (中文版,部分内容较过时) ## 执行者 执行者就是执行那段命令的物件,分别有几种情况: + 管理员执行命令(于聊天栏执行或聊天栏、书本的clickEvent),执行者为管理员自己(玩家) + 服主于后台执行命令,即服务器执行命令,执行者为服务器(非方块非实体,坐标为(0, 0, 0),权限等级为4,即能执行所有命令) + 玩家点击牌子执行命令,执行者为玩家,权限为2(不论点击者权限为多少) + 命令方块执行命令,执行者为命令方块(方块) + `execute`让实体执行后方的命令,后方的命令的执行者为被选择到的实体 + `function`执行`xxx.mcfunction`文件内命令,`xxx.mcfunction`内所有命令的执行者为`function`的执行者 + 游戏规则(gamerule)中`gameLoopFunction`执行的`xxx.mcfunction`文件内命令的执行者为一个虚拟执行者,权限为2,坐标为(0, 0, 0) > 这里需要的`execute`命令的**不完全语法**: `execute <实体> ~ ~ ~ <命令>`,即让实体执行指定命令 > 这里需要的目标选择器**不完全语法**: `@e[name=xxx]`,即选择名称为xxx的实体 例子: 让管理员(名称为admin)执行以下命令 ``` execute @e[name=a] ~ ~ ~ execute @e[name=b] ~ ~ ~ say hi ``` 整条命令的执行者为玩家admin `execute @e[name=b]... hi`这命令的执行者为实体a `say hi`这命令的执行者为实体b ## 执行点 默认情况下, 命令执行点就是执行者的坐标。 命令执行点对相对坐标有非常重要的影响(相对坐标大多是以执行坐标为原点计算的), 以及目标选择器选择条件、顺序也和执行坐标有关系。 有两种情况会导致执行点与执行者坐标不同: + `execute`命令,而且有指定后方的执行坐标(不是(~, ~, ~))。那时候后面的命令的执行坐标就和执行者坐标不同了。 + 牌子clickEvent。那情况下执行者是点击的玩家,然而执行坐标是牌子的坐标。 ## 执行统计 命令执行的时候会统计影响到的东西数量、成功执行次数与执行结果。 所有统计都是整数,储存在NBT里,需要时可以直接用nbt查询或以`stats`命令绑定到 指定玩家名/实体 的记分板分数。 注意: 之后的执行结果会覆盖之前的数值。 执行统计包括: + 成功执行次数(SuccessCount) + 影响实体数(AffectedEntities) + 影响方块数(AffectedBlocks) + 影响物品数(AffectedItems) + 查询结果(QueryResult),部分查询类的命令会把结果写进这统计里,如`time query gametime`、`worldborder get`等 > 部分影响实体的命令会使用循环的方式执行,也就是逐个目标实体执行命令,类似编程中的`foreach` > 故此,那些命令的影响实体数总是1,只是SuccessCount有不同 > > 使用执行统计前请多测试,避免实际结果与猜测的不同