你肯定不知道,但看完下面这一段,你就知道了。
实际上,不光是小白的箭无法捡起。当你开启创造模式用弓射一发再调成生存时,你会发现你照样无法捡起创造模式射出来的箭。
为啥?
pickup这个单词的意思是“皮卡”,但这边应该把它拆分成pick up(捡起)。
既然pick up的意思是捡起,那么就是对捡起的设置咯?
对!
在上面的NBT中,pickup的值是2b,b说明这也是一个byte字节型标签。那这个2说明了什么?
pickup的值你翻遍整个Minecraft之后会发现只有三种:
小白射出的箭——0
你在非创造模式射出的箭——1
你在创造模式射出的箭——2
结合你玩Minecraft的经验和作者上面分享的发现,可以得出:
非玩家生物射出的箭:0——不可被玩家捡起
非创造模式玩家射出的箭(发射器也算):1——可被除旁观者模式外其他模式玩家捡起(注:Wiki上言“可以被玩家在生存或创造模式中捡起”,未提冒险模式,但作者实测冒险模式也可以捡起)
创造模式玩家射出的箭:2——只可被创造模式玩家捡起
现在我们可以回答上面的问题了:
这个2说明了这是一个创造模式玩家射出的箭
(注:用指令生成的箭pickup值也是0,即不可被捡起。推测是游戏本身产生的箭都不可以被玩家捡起)
........
在之前,我们遇见过两个在1.13扁平化中被合并的NBT标签,这两个标签相信大家还记得,它们是:
DisplayTile+DisplayData=DisplayState(矿车共通标签)
Block+Data=BlockState(下落的方块)
现在,我们在1.12.2版本的箭共通标签遇见了:
inTile和inData
这两个NBT标签和我们之前遇见的那两个标签在未合并之前的构造非常相似,那么它们是否在1.13版本中被合并了?
DisplayState和BlockState有个共同点,就在于他们都是与方块有关系。合并之前,它们都分别有一个用来表示数据值的标签:DisplayData和Data。数据值在1.13版本中被删除,所以这种类型的标签也就合并了。
inData和DisplayData、Data一样,末尾都有一个“Data”,那inData是否就是表示方块数据值所用呢?
inData如果真是表示数据值,那inTile呢?是不是用来表示方块id?
您别说,还真是。
在上面的NBT中,这两个标签的值分别是:
inTile:“minecraft:air“
inData:0b
你看,这minecraft:air不就是空气方块吗?这“0”不就是方块数据值吗?
这两个标签存的是啥我们知道了,但用处呢?
我们已经知道这支箭是飞在空中的,既然这里是空气方块,那么这两个的作用难道是.......
这支箭所处的方块?