我的世界指令:如何使用指令及目标选择器

您所在的位置:网站首页 我的世界指令输入格式是什么 我的世界指令:如何使用指令及目标选择器

我的世界指令:如何使用指令及目标选择器

2024-07-07 17:15| 来源: 网络整理| 查看: 265

本文章教你如何用指令选择目标,请务必仔细看使用方法[编辑 | 编辑源代码]

在客户端中,命令通过Minecraft的聊天窗口输入,通过按下T键(默认)或/键唤出聊天窗口。使用/键会同时输入命令必需的前缀斜杠(/),因此这是个实用的快捷键。↑和↓键可浏览之前输入的文本,包含所有之前执行的命令。在输入命令时按下Tab ↹键会循环显示当前可用的命令或参数,也可以快速输入准星当前指向方块的坐标(在Java版输入实体参数时,如果准星指向某个实体,则可以直接输入其UUID)。当光标在某些参数(比如一个ID)的对应位置时,在文本框上方会展示一个可用值的列表。如果这个参数已经输入了一半,这个列表则只会展示包含当前输入内容的值。

在命令方块中,命令可以以前缀斜杠开头,但不是必须的。在命令方块中的命令通常还需要一个可选参数,如玩家名称。

命令也可以在多人服务器的控制台中输入,但是不应加入前缀/。在英语中,以这种方式执行命令的服务器管理员被称为“ghosting”。

大多数命令只能在以下状况有效:

·         在Minecraft多人联机服务器游戏中,由管理员或命令方块使用。

·         在其他的多人模式游戏中,由开启局域网并允许作弊的玩家,或主持多人联机服务器的玩家使用。

·         在单人模式中,创建世界时开启作弊(借由“更多选项”按钮)。

权限等级为0的命令所有玩家均可用。详见限制条件。

注意:在单人游戏中,如果不允许作弊,仍可以通过公开目前的游戏至局域网 (Esc→“公开至局域网”,点选“允许作弊”为开,接着“开始局域网游戏”) 而暂时可以作弊。你不必实际连入局域网或等待别人加入。这并不是永久的,但直至退出世界前都可以使用命令,且命令做出的修改都会被保存(物品、生物生成等)。你可以在再次开启游戏时重复以上步骤。注意当公开至局域网时游戏便无法暂停,所以在公开到局域网时若有需要最好找个安全的地方。你可以重新载入世界来取消公开至局域网。

相对坐标和局部坐标[编辑 | 编辑源代码]

世界坐标被视作绝对坐标。很多命令可以使用波浪号(~)来指定相对坐标,使用插入符(^)来指定局部坐标(也称本地坐标)。在波浪号和插入符后可以跟一个数字,表示相对基准点的偏移量。基准点由命令本身决定。举例来说,常见的基准点包括命令的执行位置和命令指定的其他坐标。局部坐标的基准点默认为执行者的头部而不是脚部。

相对坐标以世界的绝对坐标为偏移量。局部坐标以执行者的头部为基准点,并在包括头部的倾斜角度下分别指向左、上、前方为坐标轴 x y z 的正方向。无论是哪一个,数字的正负号都表示向坐标轴的正或负方向偏移。一个单独的波浪号~是~0的简写,表示没有偏移。同样地,^是^0的简写。

举例来说,/tp 0 64 0将会移动使用者到坐标(0, 64, 0),而/tp ~3 ~ ~-3会使使用者往x轴的正方向(东方)移动3米,保持原本高度,并在z轴的负方向(北方)移动3米,而/tp ^ ^ ^3会使使用者往前移动3米。

通常绝对坐标和相对坐标可以混合使用,但局部坐标不可与绝对或相对坐标混合使用。举例来说,/tp ~ 64 ~会保持执行者的x轴和z轴坐标,但是将传送执行者到绝对高度64。/tp ^-5 ^ ^将根据头部的倾斜,将玩家向右传送5个方块的距离。

在基岩版,多个命令参数有时可以不需要空格,如~~~可以代表~ ~ ~,~~1~可以代表~ ~1 ~,比如/tp @a ~1 ~2 ~3可以简写为/tp @a ~1~2~3。注意~~1不能代表~ ~ 1,因为“~1”会被视为一个整体,而“1~”不会。‌‌[仅基岩版]

目标选择器[编辑 | 编辑源代码]

 

本段文字中,variable翻译为变量,argument翻译为参数,而value代表数值。有些命令因为易读性的关系,并不会把它翻译出来。

大多数以实体或玩家作为参数的命令,可以通过某些限定条件来选择一个或多个实体或玩家,而不必指定实体名、玩家名或UUID。要用条件来选择实体或玩家,应先输入一个目标选择器变量,如有需要,还可再使用一个或多个目标选择器参数以制定具体的条件(可选)。

比如,要把A队所有玩家的游戏模式改为创造模式,但不使用玩家名来逐个指明:

/gamemode creative @a[team=A]

请注意,Java版的目标选择器和基岩版有较大的区别,有的语法只适用于Java版,有的语法只适用于基岩版,请注意文中的“仅Java版”和“仅基岩版”标识。

 

目标选择器变量[编辑 | 编辑源代码]

目标选择器变量汇总

变量

功能

@p

距离最近的玩家

@r

随机玩家

@a

所有玩家

@e

所有实体

@s

命令的执行者

@c

自己的吉祥物

@v

所有吉祥物

目标选择器变量用于指定待选目标的大致分类。共有5种变量:

@p

选择最近的玩家。在服务器控制台中输入时,默认基准点为(0, 0, 0)。如果有多个最近的玩家,他们与基准点距离完全相同,那么会选择其中最晚进入服务器的玩家。

目标选择器参数可以进一步筛选待选目标。举例来说,@p[team=A]‌‌[仅Java版]只会选择A队中距离最近的玩家,即使有其他非A队玩家更为靠近。

c‌‌[仅基岩版]或limit‌‌[仅Java版]目标选择器参数可以用来追加待选目标。(举例来说,@p[c=3]‌‌[仅基岩版]或@p[limit=3]‌‌[仅Java版]将选择三个最近的玩家)。若参数c是负值,会反转选择目标的顺序(举例来说,@p[c=-1]会选择最远的一名玩家)‌‌[仅基岩版]。

@r

选择随机玩家(type目标选择器参数已经不适用于@r)。

目标选择器参数可以进一步筛选待选目标。举例来说,@r[team=A]‌‌[仅Java版]只会随机选择A队玩家。

c‌‌[仅基岩版]或limit‌‌[仅Java版]目标选择器参数可以用来追加待选目标。比如,@r[c=3]‌‌[仅基岩版]或@r[limit=3]‌‌[仅Java版]将随机选择三个玩家。

@a

选择所有玩家。

目标选择器参数可以进一步筛选待选目标。举例来说,@a[team=A]‌‌[仅Java版]只会选择A队的所有玩家。

@e

选择所有实体(包含玩家),但不包含死亡的实体。除@e以外的所有目标选择器都可以选中死亡的实体。

目标选择器参数可以进一步筛选待选目标。举例来说,@e[type=cow]只会选择牛。

@s

只选择唯一一个实体:该命令的执行者,包括已死亡玩家。若命令执行者不是一个实体,比如是命令方块或服务器控制台执行命令,则此选择器不会选中任何东西。

目标选择器参数 可用于确定执行者是否会成为目标。举例来说,@s[type=cow,team=Red]只会在命令执行者是红队的一头牛时才会将其选中。

@c

选择自己的吉祥物。‌‌[仅教育版]

目标选择器参数可以用于标记自己的吉祥物。举例来说,/tp @c 50 60 40会将自己的吉祥物传送到指定的位置。

@v

选择所有的吉祥物。‌‌[仅教育版]

目标选择器参数可以用于标记所有的吉祥物。举例来说,/remove @v将移除所有的吉祥物。

 

目标选择器参数[编辑 | 编辑源代码]

目标选择器参数汇总

通过坐标

参数

选择标准

x, y, z

坐标

distance‌‌[仅Java版]   r,rm‌‌[仅基岩版]

距离

dx, dy, dz

体积尺寸

通过记分板参数

参数

选择标准

scores

分数

tag

记分板标签

team‌‌[仅Java版]

队伍名称

通过其他特性

参数

选择标准

limit、sort‌‌[仅Java版]   c‌‌[仅基岩版]

数量

level‌‌[仅Java版]   l、lm‌‌[仅基岩版]

经验等级

gamemode‌‌[仅Java版]   m‌‌[仅基岩版]

游戏模式

name

实体名称

x_rotation‌‌[仅Java版]   rx、rxm‌‌[仅基岩版]

垂直旋转角度

y_rotation‌‌[仅Java版]   ry、rym‌‌[仅基岩版]

水平旋转角度

type

实体类型

nbt‌‌[仅Java版]

实体的数据标签

advancements‌‌[仅Java版]

进度

predicate‌‌[仅Java版]

谓词

在使用目标选择器之后,你可以使用参数来限定所要选择的群组。当使用@a或@e时,待选目标从全体筛选成特定的少数。当使用@p或@r时,参数将从完整的待选列表缩小到被筛选后的待选列表。当使用@s时,命令执行者只有在所有参数都满足时才会被选择,否则命令执行失败。

在目标选择器变量之后附加键值对构成的逗号分隔,并包含在方括号中:

@[=,=,…]

参数和值区分大小写(在基岩版中可以不区分大小写),括号、等号和逗号旁可以有空格(目标选择器和第一个方括号之间除外)。键值对只能用逗号分隔。

指定基准点

[x=,y=,z=]

在世界中定义一个位置,用于distance参数或dx、dy和dz参数。如果没有这些参数,单独定义位置是没有用的,所以将它(并且只有它)应用于@e仍然会选择世界上的所有实体。

坐标可以是整数或像12.34这样的小数(具体为双精度浮点数)且不会进行中心校正(center-corrected),这意味着x=0不再自动更正为x=0.5。波浪号可用于此参数‌‌[仅基岩版]。

通过距离选择目标

[,,,distance=] — 根据到某点的欧几里得距离过滤目标。如果位置参数未定义,则相对于命令执行的位置计算。只允许使用非负数。‌‌[仅Java版]

[r=R] — 只选择所有小于R个方块的目标执行命令。

[rm=RM] — 只选择所有大于RM个方块的目标执行命令。‌‌[仅基岩版]

支持使用范围表示,以定义圆形区域:

·         @e[distance=10] — 选择所有距离执行位置10个方块的实体。

·         @e[distance=10..12] — 选择所有距离执行位置10至12个方块之间(包含)的实体。

·         @e[distance=5..] — 选择所有距离执行位置大于5个方块的实体。

·         @e[distance=..15] — 选择所有距离执行位置小于15个方块的实体。

通过体积尺寸选择目标

[,,,dx=,dy=,dz=] — 只选择所有位于一定长方体区域内部的目标。体积定义为从基准点开始,向“x”方向(东方)延伸特定格(包括基准点本身,下同),向“y”方向(上方)延伸特定格,并向“z”方向(南方)延伸特定格。

这可以解释为创建一个由初始位置(, , )至对角线向量(, , )组成的正方体,然后选择碰撞箱与其重叠的所有实体。如果位置参数未定义,则相对于命令执行的位置计算。允许任何值,包括负数和小数。

注意dx、dy、dz用来指定与坐标的距离;它们不是指定一个新的坐标。

·         @e[x=1,y=2,z=3,dx=4,dy=5,dz=6] — 只有碰撞箱在方块区域(1~5,2~7,3~9)(或以数学语言来讲,范围是{(x,y,z)|x∈[1,6),y∈[2,8),z∈[3,10)})内所有有重叠的实体会被选择。

·         @e[x=1,y=2,z=3,dx=0,dy=0,dz=0] — 只有碰撞箱在方块区域(1,2,3)内所有有重叠的实体会被选择。

可以将通过按距离来选择与按体积来选择组合在一起, 在这种情况下,命令将选择在两个区域的重叠内的目标(在基准点的某个半径范围内,且不在定义的体积之外)。

通过分数选择目标

[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之间(包含)的目标。

参见:记分板§记分项

通过队伍选择目标‌‌[仅Java版]

[team=] — 选择所有属于队伍“某队伍”的目标。‌‌[仅Java版]

[team=!] — 只选择所有不属队伍“某队伍”的目标。‌‌[仅Java版]

[team=] — 选择所有不属于任何队伍的目标。‌‌[仅Java版]

[team=!] — 选择所有属于任意队伍的目标。‌‌[仅Java版]

参见:记分板§队伍

指定数量并排序选择目标

[limit=] — 仅选择指定数量的目标。‌‌[仅Java版]

[c=] — 通常以距离命令执行点的顺序排列。‌‌[仅基岩版]

当使用@p和@r变量时,此参数默认为1。对它们使用limit参数时会增加选择最近或随机目标的数量。当使用@a或@e变量时,此参数会限制目标数量。

当输入的值为负值时,目标的顺序会被反转。举例来说,@p[c=-3] 会回传3个最远的目标,而且,如果所有目标距离都一样远,@e[c=-3] 会选择3个刚加载/生成的目标。‌‌[仅基岩版]

[limit=,sort=(nearest|furthest|random|arbitrary)] — 选择指定数量的目标,并指定优先级。‌‌[仅Java版]

·         sort=nearest — 将目标由近到远排序。(@p的默认排序方式)

·         sort=furthest — 将目标由远到近排序。

·         sort=random — 将目标随机排序。(@r的默认排序方式)

·         sort=arbitrary — 不进行排序。(@a和@e的默认排序方式)

·         @a[limit=3,sort=nearest]‌‌[仅Java版]或@p[limit=3]‌‌[仅Java版]或@p[c=3]‌‌[仅基岩版] — 选择距离最近的3名玩家。

·         @a[limit=4,sort=furthest]‌‌[仅Java版]或@p[c=-4]‌‌[仅基岩版] — 选择距离最远的4名玩家。

·         @a[limit=2,sort=random]‌‌[仅Java版]或@r[c=2]‌‌[仅基岩版] — 随机选择2名玩家。

通过经验等级选择目标

[level=] — 根据指定目标的经验等级过滤目标。这将自动过滤非玩家目标。‌‌[仅Java版]

[l=L] — 只选择所有经验等级低于L的目标。‌‌[仅基岩版]

[lm=LM] — 只选择所有经验等级高于LM的目标。‌‌[仅基岩版]

此选择器支持使用范围。

·         @a[level=10] — 选择所有10级的玩家。

·         @a[level=10..12] — 选择所有10级与12级之间(包含)的玩家。

·         @a[level=5..] — 选择所有至少为5级的玩家。

·         @a[level=..15] — 选择所有至多为15级的玩家。

通过游戏模式选择目标

[gamemode=] — 选择所有处于指定游戏模式的目标。‌‌[仅Java版]

[gamemode=!] — 选择所有不处于指定游戏模式的目标。‌‌[仅Java版]

[m=M] — 选择所有处于指定游戏模式的玩家。‌‌[仅基岩版]

[m=!M] — 选择所有不处于指定游戏模式的玩家。‌‌[仅基岩版]

的值可以为spectator‌‌[仅Java版]、adventure、creative和survival。

这将自动过滤非玩家目标。

M可以为全称,也可以是数字(0=生存模式,1=创造模式,2=冒险模式)或缩写(s=生存模式,c=创造模式,a=冒险模式)。‌‌[仅基岩版]

·         @a[gamemode=survival]‌‌[仅Java版]或@a[m=0]‌‌[仅基岩版]或@a[m=s]‌‌[仅基岩版] — 选择所有生存模式的玩家。

·         @a[gamemode=spectator]‌‌[仅Java版] — 选择所有旁观者模式的玩家。

·         @a[gamemode=!survival,gamemode=!adventure]‌‌[仅Java版] — 选择所有既不是生存模式又不是冒险模式的玩家。

通过名称选择目标

[name=] — 选择所有名字为“某名称”的目标。

[name=!] — 选择所有名字不为“某名称”的目标。

这是一个字符串,包含空格时应当用双引号括起。不能是JSON文本。

·         @e[name=!Steve] — 选择不叫“Steve”的目标。

通过垂直旋转选择目标

[x_rotation=] — 根据指定目标的垂直旋转角度过滤目标。‌‌[仅Java版]

[rx=RX] — 仅选择所有最大垂直旋转角度为RX的目标。‌‌[仅基岩版]

[rxm=RXM] — 仅选择所有最小垂直旋转角度为RXM的目标。‌‌[仅基岩版]

更具体地说,是旋转高度与地平线的夹角,以度为单位。垂直旋转值从-90(垂直向上)向上增加,之后增加到0(水平),最后增加到90(竖直向下)(因此垂直旋转值随着向下旋转而增加)。

此选择器支持范围。

·         @e[x_rotation=0] — 选择所有看向地平线的目标。

·         @e[x_rotation=30..60] — 选择所有看向地平线偏下30°至60°(包含)的目标。

·         @e[x_rotation=45..] — 选择所有看向地平线偏下45°(包含)及更低的目标。

·         @e[x_rotation=..0] — 选择所有看向地平线偏上的目标。

通过水平旋转选择目标

[y_rotation=] — 根据指定目标的水平旋转角度过滤目标。‌‌[仅Java版]

[ry=RY] — 仅选择最大水平旋转为RY的目标。‌‌[仅基岩版]

[rym=RYM] — 仅选择最小水平旋转为RYM的目标。‌‌[仅基岩版]

其角度以正南(或正Z轴方向)为基准顺时针旋转。水平旋转值从-180(面向正北)开始,到-90(面向正东),再到0(面向正南),再到90(面向正西),最后到180(再次面向正北)。

此选择器支持范围。

·         @a[y_rotation=0] — 选择所有看向正南的目标。

·         @a[y_rotation=45] — 选择所有看向南偏西45°的目标。

·         @a[y_rotation=96] — 选择所有看向西偏北6°的目标。

·         @a[y_rotation=-90..0] — 选择所有看向正东和正南(包含)之间的目标。

·         @a[y_rotation=-90..90] — 选择所有看向正东和正西之间(包含)的目标,区域穿过正南。

·         @a[y_rotation=0..] — 选择所有不看向南方(包含)和东方之间的目标。

通过实体类型选择目标

[type=] — 选择所有特定的实体类型的目标。

[type=!] — 选择所有不是特定的实体类型的目标。

实体类型必须使用有效的实体ID或或实体标签。如果实体ID的命名空间在minecraft:内则可以省略命名空间。(举例来说,minecraft:creeper指定苦力怕,minecart指定普通矿车,tnt指定点燃的TNT等等)实体ID或标签区分大小写。

当与@r一起使用时,原本用来选择玩家的命令也可以被用来选择其他实体。

·         @e[type=skeleton] — 选择所有骷髅。

·         @e[type=!chicken,type=!cow] — 选择所有除鸡和牛之外的目标。

·         @e[type=chicken,type=cow] — 无效选择:选择所有既是鸡又是牛的目标(不存在)。

·         @e[type=#skeletons] — 选择所有在标签#skeletons内的目标(骷髅、凋灵骷髅和流浪者)。

通过标签选择目标

[tag=] — 选择所有有标签“标签名”的目标。

[tag=!] — 选择所有没有标签“标签名”的目标。

[tag=] — 选择所有没有标签的目标。

[tag=!] — 选择所有有标签的目标。

允许使用多个参数。被选择的实体必须满足所有的参数条件。

·         @e[tag=a,tag=b,tag=!c] — 选择所有拥有标签a和b,但没有标签c的目标。

·         @r[tag=a] — 选择一个有标签a的随机玩家。

参见:记分板§标签命令

通过数据标签选择目标‌‌[仅Java版]

[nbt=] — 选择具有指定NBT的所有目标。NBT结构以其命令定义编写。

例如:

·         @a[nbt={OnGround:true}] — 选择所有站在地上的玩家。

·         @e[type=sheep,nbt={Color:0b}] — 选择所有白色的羊。

·         @e[type=item,nbt={Item:{id:"minecraft:slime_ball"}}] — 选择所有粘液球物品实体。

·         @e[nbt={Tags:[a,b]}]与@e[tag=a,tag=b]的效果相同。后者更简单,且减少了CPU的负载。

注意:当匹配字符串内的命名空间ID时,不得省略其命名空间。

因此@e[type=item,nbt={Item:{id:slime_ball}}]找不到任何东西,因为 id字段始终包含一个已经被转换的命名空间ID字符串。

通过进度选择目标‌‌[仅Java版]

从Java版1.13开始,目标选择器支持advancements参数,取代/advancement test。参数名称是进度的IDadvancements后接一组用中括号包含来的键值对,其中键为进度或条件的名称,值为true或false或表示进度的各条件的键值对。

·         @a[advancements={story/form_obsidian=true}] — 选择所有已达成进度“冰桶挑战”(minecraft:story/form_obsidian)的玩家。

·         @a[advancements={story/form_obsidian=false}] — 选择所有未达成进度“冰桶挑战”(minecraft:story/form_obsidian)的玩家。

·         @a[advancements={story/obtain_armor={iron_helmet=true}}] — 选择所有装备过铁头盔的玩家。选择时玩家不一定正在装备铁头盔,也不一定需要达成进度“整装上阵”(minecraft:story/obtain_armor)。

·         @a[advancements={story/follow_ender_eye=true}]与@a[advancements={story/follow_ender_eye={in_stronghold=true}}]的效果相同。

通过谓词选择目标‌‌[仅Java版]

[predicate=] — 选择所有匹配该谓词的目标。

[predicate=!] — 选定所有不匹配该谓词的目标。

从19w38a起,选择器可以在其参数中使用谓词。

·         @a[predicate=example:test_predicate] — 选择所有匹配谓词example:test_predicate的玩家。

·         @e[predicate=!minecraft-wiki:smart_entity] — 选择所有不匹配谓词minecraft-wiki:smart_entity的实体。

 

数据标签[编辑 | 编辑源代码]

主条目:NBT格式

数据标签是一种树状数据结构,可以被用花括号包含的键值对描述。数据标签用于Java版的命令中,用于指定玩家、实体和一些方块的较为复杂的数据。

数据标签由零个或多个用逗号分隔的键值对组成,且本身用大括号括住。每个键值对包含键名和键值,用冒号分开。但是,有些键值可以继续包含键值对,因此数据标签可以用来描述层次结构。

例: {name1:123,name2:"sometext",name3:{subname1:456,subname2:789}}

这些数据标签所采用的数据结构与Minecraft世界存档相同。这种数据结构在其他条目中有详细描述。命令使用的数据标签中键名有严格的限定(区分大小写):

数据结构规范链接

对象

例子

方块

箱子、熔炉、命令方块、刷怪蛋、告示牌等

物品

物品栏中的物品 (包括附魔、自定义名称等)

物品实体

在地上的物品

生物

苦力怕、牛、村民等

弹射物

弓箭、火球、喷溅药水等

交通工具

船、矿车等

动态方块

引燃的TNT、正在掉落的沙子、沙砾、铁砧

其他实体

烟花火箭、画和物品展示框

指定键名的键值也必须符合数据类型要求。

数据标签键值数据类型

类型

说明

 字节(byte)

介于-128和127之间(包含)的整数。

 短整型(short)

介于-32768和32767之间(包含)的整数。

 整型(int)

介于-2147483648和2147483647之间(包含)的整数。

 长整型(long)

介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807之间(包含)的整数。

 单精度浮点型(float)    双精度浮点型(double)

Float: 32位单精度浮点数,介于-3.4E+38和+3.4E+38之间。

例:3.1415926

Double:   64位双精度浮点数,介于-1.7E+308和+1.7E+308之间。

例:3.141592653589793

详见IEEE二进制浮点数算术标准。

 字符串(string)

一串字符,如果内容包含不在 a-z   A-Z 0-9 _ .(不包括空格)的字符则需要在整个字符串前后加上双引号。\可以将后面的字符转义(不支持像json那样\u00a7这样的转义)。转义方式为,在"及\号前加上\。

例:"Call me \"Ishmael\""

 列表(list)

值的序列,用逗号分隔并用方括号包含。所有值的数据类型必须统一——数据类型标准由列表的第一个元素决定。

例:[3.2,64,129.5]

 复合标签(compound)

键值对的序列,用逗号分隔并用花括号包含。

例: {X:3,Y:64,Z:129}

每个数据标签的内容本身就是一个复合标签。

复合标签里面可以包含任何标签。

 字节数组(byte-array)

介于-128和127(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识B;。

例: [B;1b,2b,3b]

 整型数组(int-array)

介于-2,147,483,648和2,147,483,647(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识I;。

例: [I;1,2,3]

 长整型数组(int-array)

介于-9,223,372,036,854,775,808和9,223,372,036,854,775,807(包含)之间的整数序列,用逗号分隔内容并用方括号包含,首个元素前方需要加入类型标识L;。

例: [L;1l,2l,3l]

 布尔型(boolean)

一种数据类型,只有“true”和“false”两种取值。由于程序通常使用 字节存储布尔值,布尔型只会在JSON格式中出现。在NBT中,true和false相当于1和0。

例: {doFoo:true}

某些命令要求明确指明某些数值的数据类型,这可以通过在数值后附加限定字符(B、S、L、F、D)来实现。举例来说,3s表示短整型,3.2f表示单精度浮点,等等。(字符I不能限定整型。)限定字符不区分大小写。在不加限定字符,且Minecraft无法根据上下文来确定数据类型或需要比对数据标签时,会将数据类型假定为双精度浮点型(数值有小数部分时)、整型(数值没有小数点,且在整型取值范围内)或字符串(若前述情况均不符合)。被方括号包含的集合中,被逗号分隔的元素若全为整型,则会将数据类型假定为整型数组(如[I;1,2,3]是一个整型数组,[L;1L,2L,3L]是一个长整型数组);否则会假定为列表。但有以下特例:[]是一个空列表,而[,]是一个空整型数组。

如果用/testfor、/testforblock、/clear等命令来查找数据标签,这些命令只会检查目标实体/方块/物品是否存在此标签。这意味着一个符合条件的实体/方块/物品可能同时还拥有其他标签。这对列表和数组同样成立:只要列表或数组中包含待查找的所有元素,就会成功匹配,既不考虑元素的排列顺序,也不考虑是否有多余的元素存在。

数据标签的数据结构是JSON的lenient形式。

原始JSON文本[编辑 | 编辑源代码]

  关于基岩版的原始JSON文本,请见“基岩版原始JSON文本格式”。

/tellraw和/title命令使用严格的JSON语法。

在告示牌被放置或修改时,或在一本成书被“翻开”(书写后第一次打开)时,记分板分数和目标选择器会被解析成具体的值。这些结果不再更新,使用NBT编辑器修改已存在的告示牌或已翻开的书也不会起作用。解析的结果无法在告示牌上换行,或在书上换页,超出的文字只会直接消失。

原始JSON文本的格式是JSON字符串、JSON列表或复合标签。JSON文本的格式支持以下(大多是可选的)元素的JSON对象:

·         直接显示的原始文本字符串。与只有标签 text的基础对象效果相同。

·         每一个元素都与原始JSON文本结构重复。

·          基础聊天组件对象。

·          text:字符串,存储在聊天框中直接出现的纯文字。(如果是数字或布尔值则可以转化为字符串,如果是组合对象或者列表则会报错。)注意像是“@a”和“@p”的选择器并不会转译成玩家名字,必须使用selector代替。可以使用转义字符,例如用“\n”换行、“\t”缩进等。

·          translate:显示文本的翻译标识符,用于将文本翻译至玩家使用的语言。此标识符与从assets文件夹或资源包中找到的语言文件的标识符一致。当text存在时忽略此参数。如果翻译标识符无效,则显示标识符本身。

·          with:translate所使用的聊天对象参数列表和字符串参数。

·         该参数为当前语言翻译文本中出现的参数赋值,参数依序排列(例如,列表中的第一个元素将会取代翻译文本中的“%1$s”)。如果翻译标识符无效,但含有%s或%1$s这样的内容,则也能够替换。

·          score:一个玩家在一个记分板目标里的分数。若该玩家没有被该记分板目标追踪,则什么都不显示。当上述的文本显示字段存在时忽略此参数。

·          name:要被显示分数的玩家的名字。可使用选择器(例如@p),以及记分板系统中存在的虚拟玩家名称。另外,如果名称为“*”,会显示读者自己的分数(例如,/tellraw @a {"score":{"name":"*","objective":"obj"}}将给每个在线玩家显示他们自己在“obj”目标里的分数)。

·          objective:要显示分数的记分板目标。

·          value:可选。如果存在,将以此覆盖目标原先的分数。

·          selector:一个包含了一个选择器(@s、@p、@a、@r或@e)的字符串以及可选的选择器参数。不像text,此处的选择器将会被解析为正确的玩家/实体名。如果多于一个玩家/实体符合条件,其将会被以例如“名字1, 名字2”或“名字1,名字2,名字3,名字4”的形式显示。当上述的文本显示字段存在时忽略此参数。在/tellraw命令中使用此标签时,点击结果中的玩家名称会出现私信该玩家的命令建议;按住⇧ Shift点击玩家名称会将名称填入聊天框中;按住⇧ Shift点击非玩家实体的名称会将其UUID填入聊天框中。

·          keybind:显示用于执行特定操作的按键键位。例如,key.inventory会向玩家显示打开物品栏的按键,若玩家使用默认设置,则会显示“E”。当上述的文本显示字段存在时忽略此参数。

·          nbt:一段NBT路径,用于从实体或方块处查找特定NBT数据标签的值并将其显示。当上述的文本显示字段存在时忽略此参数。

·          interpret:布尔值,用于说明是否将 nbt指示的字符串化NBT值解释为原始JSON文本(根据此原始JSON文本结构)。 若不为原始JSON文本则没有效果。

·          block:字符串,指定要获取NBT数据标签的方块实体的坐标。坐标可以是绝对坐标或相对坐标。 nbt不存在时,该标签无效。

·          entity:字符串,以目标选择器的形式指定要获取NBT数据标签的实体。 nbt不存在时,该标签无效。

·          storage:字符串,指定要获取NBT数据标签的命令存储的命名空间ID。 nbt不存在时,该标签无效。

·          extra:附加对象的列表,格式与基础对象相同。

·         与基础聊天组件对象格式相同的附加对象。注意所有对象的属性都会被其子对象所继承,除了text、extra、translate、with和score。这表意味着子对象会保留与父对象相同的格式和事件,除非子对象有自己的属性将其覆盖。

·          color:渲染文字时使用的颜色。有效值有:“black”、“dark_blue”、“dark_green”、“dark_aqua”、“dark_red”、“dark_purple”、“gold”、“gray”、“dark_gray”、“blue”、“green”、“aqua”、“red”、“light_purple”、“yellow”、“white”和“reset”(取消父对象使用的颜色效果)。技术上来说,“bold” (粗体)、“underline”(下划线)、“italic”(斜体)、“strikethrough”(删除线)和“obfuscated”(模糊处理)都是可接受的,不过建议使用下文提到的标签来实现。

·          bold:布尔值(true/false) - 是否将文字渲染为粗体,默认为false。

·          italic:布尔值(true/false) - 是否将文字渲染为斜体,默认为false。

·          underlined:布尔值(true/false) - 是否为文字添加下划线,默认为false。

·          strikethrough:布尔值(true/false) - 是否为文字添加删除线,默认为false。

·          obfuscated:布尔值(true/false) - 是否将文字模糊处理,默认为false。

·          insertion:当玩家按住⇧ Shift并点击文字时,此字符串会自动填入聊天编辑框中。不会覆盖原有的文字。

·          clickEvent:当玩家点击文字时产生的事件。

·          action:当点击文字时所触发的行为。有效值为“open_url”(在玩家的默认浏览器中打开value中的URL地址)、“open_file”(打开用户计算机上的value文件)、“run_command”(以玩家的身份在聊天框中输入value值并提交。可以用来执行命令,但是如果玩家没有所需的权限,命令会失败)、“change_page”(只能用在成书中,如果该value页存在,翻至该页)、“suggest_command”(和“run_command”相似,但是文本只会出现在玩家的聊天输入栏,并不会自动提交。与insertion不同,这会直接取代原先在聊天输入框中的内容)和“copy_to_clipboard”(将value复制到剪贴板中)。“open_file”用于游戏自动生成的信息中(如截图时显示的信息),不能在命令和告示牌中使用。

·          value:前述指定的action使用到的URL地址、文件、聊天内容、命令或书页。注意,命令之前一定要加上“/”斜杠。

·          hoverEvent:当玩家将鼠标指针悬浮在文字之上时显示的说明提示。

·          action:说明提示的类型。有效值为“show_text”(显示JSON文本)、“show_item”(显示一个可带NBT标签的物品)和“show_entity”(显示实体的名称,还可能显示其类型和UUID)。

·          value:此标签的格式取决于action。注意,“show_text”是唯一接受对象作为value值的类型;其他类型对应的value值都是字符串,所以必须用引号引起。

·         “show_text”:可以是字符串,或是与基础对象格式相同的一个对象。注意,此对象的clickEvent和hoverEvent在说明提示中不会生效,但是它的格式和extra标签仍然有效。

·         “show_item”:与物品NBT标签格式相同的的字符串。包含“id”标签,和可选的“Damage”标签和“tag”标签(和/give命令所使用的“dataTag”标签中的组合相同)。

·         “show_entity”:描述一个组合的字符串,包含值“type”(例如“Zombie”)、“name”和“id”(要求为实体UUID,但接受任意字符串)。

由于extra标签的存在,以上格式可递归地嵌套成非常复杂与多功能的字符串。然而,JSON文本不必弄得如此复杂:几乎所有的属性都可选或会被忽略。

为了确保有效,每一个对象至少应该包含以下任意一个元素:text、translate、score、selector或keybind(其余的元素都是可选的)。为使用方便,整个对象可以只用一个字符串表示。此时字符串视为text的值。例如,"This is raw text"和{"text":"This is raw text"}是等价的。这种写法在任何需要使用JSON文本的地方都是有效的(包括/tellraw里面所用到的参数,extra列表中的元素,以及hover_event中“show_text”的value值)。

/tellraw也接受一个对象及字符串数组,数组与extra的处理方式大致相同(首个元素视作其后元素的父元素,继承文字样式)。它也接受多层嵌套的数组树,这样会以最深层的数据开始解释。例如:

/tellraw @a ["Hello there, ",{"selector":"@p"},"."]/tellraw @a [[[["The "],[["quick ","brown "],[{"selector":"@p"}," jumps "],"over "],"the "],["lazy ","dog."]]]

最后,不同于其他使用JSON的命令,/tellraw中的字符串允许通过\u####符号使用Unicode字符,其中####是表示Unicode字符的十六进制数。

外部链接

Skylinerw的JSON格式示例(英文)

Tellraw命令生成器(可选中文)

键位名称一览表

Java版中的ID参数[编辑 | 编辑源代码]

参见:命名空间ID§从字符串识别

许多命令要求指定某种方块、物品、实体、药水效果、附魔、boss栏等的ID。在下文的命令语法中,这些参数会被标注为、,或在实例中用诸如minecraft:stone之类的标识符替换。这些ID都有命名空间。所有来自Minecraft的内容都使用minecraft命名空间,而来自mod及数据包的内容都使用其他命名空间。 在大多数情况下,可以省略命名空间为minecraft的ID的前缀,但是在某些情况下,例如匹配NBT数据标签时,需要完整的命名空间ID。

[编辑 | 编辑源代码]

例子:

·         stone

·         minecraft:redstone_wire[power=15,north=up,south=side]

·         minecraft:jukebox{RecordItem:{...}}

·         minecraft:furnace[facing=north]{BurnTime:200}

参数的格式为命名空间ID[方块状态]{数据标签},其中方块状态和数据标签在不需要时可以省略。

·         方块的命名空间ID是必需的(如果没有设定命名空间则将默认为预设值:minecraft:)。

·         方块状态是可选的,位于[]内,名称与值用等号分隔,名称数值组用逗号分隔,且必须是该方块支持的状态:

[=,=,…]

·          

o    minecraft:stone[doesntexist=purpleberry]有语法错误,因为stone(石头)没有doesntexist状态。

o    minecraft:redstone_wire[power=tuesday]有语法错误,因为redstone_wire(红石线)的power是一个在0和15之间的数字。

·         数据标签是可选的,位于{}内。

·         如果方块参数被用于检查方块,则只会检查参数内指定了的方块状态与数据标签是否符合。

·         如果方块参数用于放置方块,你所提供的任何状态与标签都会被设置,而其他未提供的状态与标签会被设为预设值

o    如当你设置redstone_wire[power=15],那它将设置power到15却使north设为预设值(在这个情况下被设置为none)

如果方块参数被用于检查方块,则也可以填写带#前缀的方块标签的命名空间ID,如#minecraft:planks。

[编辑 | 编辑源代码]

例子:

·         stone

·         minecraft:stick{display:{Name:"\"谎言之杖\""}}

参数的格式为命名空间ID{数据标签},其中数据标签在不需要时可以省略。

·         物品的命名空间ID是必需的(如果没有设定命名空间则将设为预设值minecraft:)。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3