在13w36a快照之后,NBT标签(亦称数据标签)可以在/give和/summon等命令用作设定物品、生物和方块实体的高级数据。同时,它也可以给你的命令系统添加不少乐子!
在开始学习NBT命令标签之前,你应当对这些概念有一些基本的了解:
NBT,正如其名,它是通过一个个标签来储存和读取数据的。一个标签由标签名称和数值两部分组成,两者用冒号:隔开。例如foo:1就是一个标签。
标签名称应当仅出现字母a-z,A-Z、数字09和下划线_。标签名称中不允许出现空格[注1]、中文或是特殊符号,且对大小写敏感。例如,Tag:1、tag:1和TAG:1是三个不同的标签。a_Tag_name是一个合法的标签名称,而atagname或tag&com则不是。
多个标签需要使用逗号,隔开。例如foo:1,bar:2。
请注意:本文中所提到的标点符号均为半角符号,即英文输入法输入的符号。他们要比中文输入法输入的全角符号更窄更小。
一串标签应该被包裹在一对花括号{}中,才能被称之为NBT。例如{foo:1,bar:2}就是一串NBT。在命令中所使用的NBT标签都需要被花括号括起来。
NBT可以储存多种多样类型的数据,例如整数、实数、字符串、甚至是另一串NBT。不同的数据类型会有不同的表示数据的方法。这个表格列出了所有的数据类型:
下文即将列出一些表格,来说明各个物品、实体和方块实体所含有的标签及其含义。例如:
那么你应当这样使用它:
/give@sminecraft:player_head{SkullOwner:"Steve"}就可以获得玩家名称为Steve的皮肤的头颅。
这里只是一个示范,你可以自行更改标签的值。
掌握这些小技巧,可以让你在学习和使用数据标签中事半功倍:
这些标签能够用在/give、/replaceitem和/clear等有关物品操作的命令里。
这些标签只能用在物品上。对于实体形式的掉落物所用的标签,请见下文。
以下这个表格对之前的子标签提供更多细节。
获得的金剑的效果
点拨
获得的鞘翅的效果
鞘翅穿在身上时的效果
两者的作用完全一样。
数据标签中经常有地方需要表达一个物品。例如生物手持的物品、村民买入的项目、容器中的一个物品等等。它们都使用同一种表达方式,你只需要将此表中的标签都塞进一个复合标签里。
玩家物品栏各个栏位的编号
这些标签用于自定义药水(包括喷溅药水和滞留药水)和药箭(包括它们以弹射物形式发射出去的实体)的状态效果。它同样适用于定义实体拥有的状态效果和区域效果云生效时的状态效果。
这些标签是用在/summon命令生成实体或是/data命令来更改实体的数据标签。
下表为上面所提到的子标签提供更多细节:
召唤一个下落中的草方块。
下落的草方块
/summonminecraft:falling_block~~~{BlockState:{Name:"minecraft:grass_block"},Time:1}点拨
召唤一只蝙蝠,上面骑着一只手持木棍、头戴皮革帽子的骷髅。
一只手持木棍、头戴皮革帽子,骑着蝙蝠的骷髅
/summonminecraft:bat~~~{Passengers:[{id:"minecraft:skeleton",ArmorItems:[{},{},{},{id:"minecraft:leather_helmet",Count:1b}],HandItems:[{id:"minecraft:stick",Count:1b}]}]}点拨
/summonminecraft:zombie~~~{Attributes:[{Name:"generic.max_health",Base:100f}],Health:100f}点拨
这些标签用于掉落物形式(即实体)的物品。对于在物品中使用的NBT标签,请参见上文。
/summonminecraft:item~~~{Item:{id:"minecraft:diamond_sword",Count:1b},PickupDelay:32767s}
这些标签用于生成村民和流浪商人。
(在流浪商人身上是不必要的)VillagerData村民职业的命名空间ID(纯文本字符串)type村民的种类,未定义时默认生成为minecraft:plains(平原)。(在流浪商人身上是不必要的)VillagerData村民种类的命名空间ID(纯文本字符串)Type村民的言论类型。不同的言论类型会影响玩家交易的最终价格,或者村民生成铁傀儡的行为。注意:major_negative会导致铁傀儡对引发该言论的玩家敌对,具体取决于Value(不小于20)。
(在流浪商人身上是不必要的)Gossips(的一项)数据类型所允许的任意数值Target引发此言论的对象的UUID,用于区分言论的引发者。(在流浪商人身上是不必要的)Gossips(的一项)数组,包含四个数值,每一项都是UUID相应部分的32位数值盔甲架这些标签被使用于召唤盔甲架时。
生成一只跳舞的盔甲架,同时带着一个苦力怕的头和一套皮革盔甲。
跳舞的苦力怕盔甲架
/summonminecraft:armor_stand~~1~{ShowArms:1b,Pose:{RightArm:[-135.0f,0.0f,0.0f],Head:[-15.0f,20.0f,0.0f],LeftArm:[-130.0f,0.0f,0.0f],RightLeg:[-115.0f,30.0f,0.0f],Body:[0.0f,20.0f,0.0f]},ArmorItems:[{id:"minecraft:leather_boots",Count:1b},{id:"minecraft:leather_leggings",Count:1b},{id:"minecraft:leather_chestplate",Count:1b},{id:"minecraft:creeper_head",Count:1b}]}注意:由于聊天栏的长度限制,过长的命令可能无法在聊天栏中输入。你可以使用命令方块来突破此限制。
这些标签用于生成猪灵或疣猪兽。
这些标签被用于生成海龟。
这些标签被用于生成区域效果云。
生成一个满足以下条件的区域效果云:
生成的区域效果云和其生效时施加的状态效果,为便于观察区域效果云的形状已显示碰撞箱
/summonminecraft:area_effect_cloud~~~{Duration:1200,WaitTime:60,Age:0,DurationOnUse:-20,Radius:20.0f,RadiusOnUse:4.9f,RadiusPerTick:-0.05f,ReapplicationDelay:80,Effects:[{Id:5b,Amplifier:1b,Duration:320,Ambient:1b}],Particle:"minecraft:blockminecraft:gold_block"}再次警告:不要轻易将DurationOnUse、RadiusOnUse和RadiusPerTick均设置为正数,特别是数值较大的正数,除非你有把握在区域效果云失控前清除它。如果确有需求,在一个新存档里进行测试并在旁边准备一个写有/kill@e[type=area_effect_cloud]的命令方块是推荐的。
这些标签用于生成烟花火箭。但是其中的一些标签也用于定义物品形式的烟花火箭或者烟火之星。
这些标签用于/setblock或/fill命令放置方块或是/data命令更改方块实体的数据标签。
这些标签被用于放置或修改命令方块、连锁型命令方块或循环型命令方块
放置一个保持开启的循环型命令方块,并让这个方块包含一条目的为“将自己所在位置的方块改变为条件制约且保持开启的连锁型命令方块”的指令。/setblock~~~repeating_command_block{auto:1b,Command:"/setblock~~~chain_command_block[conditional=true]{auto:1b}"}
注意
这些标签被用于放置或修改大多数容器方块,但是同样也适用于使用/summon生成或使用/data更改的运输矿车和漏斗矿车。
这些标签被用于放置或修改信标。
注意:如果所填写的状态效果的id不在上述列举的范围内,信标并不会提供该状态效果,而是会将该值改为0[注3]。
这些标签用于放置或修改刷怪笼,但是同样也对刷怪笼矿车有效。