Files
netease-bedrock-wiki/mconline/10-addon教程/第04章:指令系统,你的创作管家/课程03.理解指令参数.md
2025-08-25 18:36:29 +08:00

304 lines
8.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
front: https://mc.res.netease.com/pc/zt/20201109161633/mc-dev/assets/img/3_1.21fa97ec.png
hard: 进阶
time: 40分钟
---
# 理解指令参数
#### 作者:境界
#### 什么是坐标参数
![](./images/3_1.png)
上图示例提示下一类指令参数填写坐标参数。
绝对坐标:世界坐标被视作绝对坐标。例如,冒险家使用指令“/tp 128 64 128”时会将人物传送到世界坐标为“x:128 y:64 z:128”的位置上。
相对坐标:相对坐标视为绝对坐标的偏移量。通常,冒险家可以用波浪符号~来指代坐标为当前所站的世界坐标。因此,可以在~符号旁添加计算式来达到坐标偏移的结果。例如,冒险家使用指令“/tp ~+1 ~-1 ~”时会将他传送到距离当前世界坐标X轴正一格Y轴负一格的位置上。
局部坐标:局部坐标为视线方向的偏移量。通常,冒险家可以用插入符号“^”来指代坐标为当前头部的方向坐标。
![](./images/3_2.png)
与相对坐标不同的是局部坐标以头部方向为基准点。例如若冒险家希望让传送对象向面朝方向传送就会用到插入局部坐标。还是以“tp”指令为例冒险家使用指令“/tp ^ ^ ^+5”时会把冒险家从当前位置向面朝方向的位置传送5格。
#### 什么是目标选择器
![](./images/3_3.png)
上图示例提示下一类指令参数填写目标选择器。
在通常情况下,指令由使用者输入,再由使用者执行。如执行“/tp”指令可以传送执行者到一个坐标。
但在地图玩法中,往往执行指令的个体不单单是拥有具体名称的玩家,也有可能是地图中的其他生物。如何获取到这些生物,就需要学会如何使用目标选择器。
目标选择器可以根据使用者所选的变量,再用条件参数筛选出最后满足条件的一个或多个执行指令的个体。
目标选择器变量用于指定待选目标的大致分类。共有5种变量
```
@p选择最近的玩家
@r选择随机的玩家
@a选择所有玩家
@e选择包括所有玩家在内的全部实体
@s选择您自己
```
![](./images/3_4.png)
如果仅仅只输入选择器变量是不足以满足开发者的各种定制需求。因此我的世界指令系统还为使用者提供了条件参数的功能来筛选出目标个体。这里称之为目标选择器参数。在当前中国版中共有12种类型
```
x, y, z坐标
r、rm距离
dx, dy, dz体积尺寸
scores计分项分数
tag记分板标签
c数量
l、lm经验等级
m游戏模式
name实体名称
rx、rxm垂直旋转角度
ry、rym水平旋转角度
type实体类型
```
通过特定格式@变量[<参数>=<值>,<参数>=<值>,<参数>=<值>,.....]来限制选取的群体,其中参数和值不区分大小写。
#### 坐标参数
坐标参数用以定义一个起始点它常用的用法是和距离参数一起使用。例如指令使用者希望以某个坐标点开始让周围半径5格内的实体传送到自己身边。目标选择器可以这么做
![](./images/3_5.png)
“x,y,z”三个参数决定世界的一个坐标“r”代表距离范围内。“rm”则相反代表距离范围外。两者结合使用则可以获取从一个范围开始到另一个范围结束的实体目标。
因此,起始点的作用常用于配合距离参数来框选一个区域内的实体目标。
#### 体积尺寸
![](./images/3_6.png)
体积尺寸参数用于定义一个一定长方体区域。它常与坐标参数一起使用以坐标参数传入的世界坐标为基准点向“X”方向(dx)延伸特定格数向“Y”方向(dy)延伸特定格数并向“Z”方向(dz)延伸特定格数。最后形成的长方体区域内与之坐标重叠的实体便是筛选出的实体目标。例子中指令使用者尝试以某个坐标点开始让它延伸出5x5x5的立方体区域并将与之重叠的实体传送到自己身边。
#### 计分项分数参数
计分项分数参数允许开发者通过分数选择目标生物的分数来自“scoreboard”指令根据指定目标的分数过滤有多种写法但基本格式是以@变量[scores={计分项=计分值}]为准:
```
@e[scores={myscore=10}]——选择所有记分项myscore分数为10的目标。
@e[scores={myscore=10..12}] — 选择所有记分项myscore分数为包含10到12之间的目标。
@e[scores={myscore=5..}] — 选择所有记分项myscore分数为5及以上的目标。
@e[scores={myscore=..15}] — 选择所有记分项myscore分数为15及以下的目标。
@e[scores={foo=10,bar=1..5}] — 选择所有记分项foo分数为10且记分项bar分数为包含1到5之间的目标。
```
#### 记分板
记分板标签参数允许开发者通过标签选择目标生物的分数来自tag指令基本格式是以@变量[tag=标签名称]为准:
```
@e[tag=标签名称]——选择所有带有“标签名称”的实体。
@e[tag=!标签名称]——选择所有没带有“标签名称”的实体。
@e[tag=]——选择所有没有标签的实体。
@e[tag=!]——选择所有带有标签的实体。
```
允许目标选择器参数同时筛选多个标签的情况,被筛选出的目标个体必须满足所有标签参数的条件:
```
@e[tag=abc,tag=def]——选择所有同时带有“abc”和“def”标签的实体
@e[tag=abc,tag=!def]——选择所有同时带有"abc",但不带有"def"标签的实体
```
#### 数量参数
数量参数用于所选的目标数量不超过给定数值,在基岩版中,默认下使用目标选择器变量“@p”和“@r”会限制获取的目标数量为“1”那么冒险家就可以用数量参数来增加获取的数量。而在“@e”和“@a”中,数量参数传入正值会获取离冒险家最近的、满足筛选要求的目标实体,传入负值则相反,会获取满足筛选条件且离使用者最远的目标实体。
```
@p[c=3]——获取离使用者最近的3名玩家
@a[c=-4]——选择离使用者最远的4名玩家
@r[c=2]——随机选择正在世界中的2名玩家
```
#### 等级参数
等级参数用于筛选满足给定等级范围的目标实体。在基岩版中,有两个相关参数:
lm——等级超过给定值
l——等级小于给定值
例如:
```
@e[lm=1]——获取等级大于1的实体由于只有玩家有等级概念因此相当于获取等级大于1的玩家
@p[l=16]——获取离使用者最近等级在16以内的玩家
@a[lm=8,l=16]——获取等级在8~16范围内的玩家
```
#### 游戏模式参数
游戏模式参数用于筛选满足给定游戏模式的目标实体在基岩版中使用“m”来标识
“m”的值可以用0、s代表生存1、c代表创造2、a代表冒险模式。
例如:
```
@e[m=0]——获取生存模式的玩家实体
@a[m=c]——获取创造模式的玩家实体
@a[m=!2]——获取不为冒险模式的玩家实体
```
#### 名称参数
名称参数用于筛选满足给定名字的目标实体在基岩版中使用name来标识
```
@a[name=Steve]——获得世界中名为Steve的玩家实体
@a[name=!Steve]——获得世界中名称不为Steve的玩家群体
```
#### 角度参数
通过垂直旋转角度参数,开发者可以筛选出给到角度范围内的目标实体,在基岩版中,使用两种参数来表示:
rxm——角度超过给定值
rx——角度小于给定值
![](./images/3_7.png)
例如:
```
@e[rxm=30,rx=60]——获取所有视线角度在30~60垂直角度内的实体目标
@e[rx=0]——获取所有视线角度与水平线持平的实体目标
@e[rxm=45]——获取所有视线角度大于45度的实体目标
```
通过水平旋转角度参数,开发者可以筛选出给定角度范围内的目标实体,在基岩版中,使用两种参数来表示:
rym——角度超过给定值
ry——角度小于给定值
![](./images/3_8.png)
例如:
```
@e[rym=30,ry=60]——获取所有视线角度在30~60水平角度内的实体目标
@e[ry=0]——获取所有视线角度在0水平角度内的实体目标
@e[rym=45]——获取所有水平角度大于45度的实体目标
```
#### 类型参数
类型参数可以帮助开发者筛选满足给定生物类型的目标实体在基岩版中使用type来表示
例如:
```
@e[type=cow]——获取世界中所有的牛实体
@e[type=!cow]——获取世界中不为牛类型的实体
@e[type=cow,type=chicken]——获取世界中牛类型和鸡类型的目标实体
```
#### 什么是原始JSON文本
![](./images/3_9.png)
在基岩版中,/tellraw指令使用原始json文本来显示文本信息结果。
```
<raw json message: json>内的格式为{"rawtext":[{"text":""}]},其中<"text":> 后的双引号内,可以填写包含任意字符的文本信息。
```