没错,在NBT层面,你的实体NBT被嵌套进了马的NBT里面!
好,那么我们现在想一想,从理论上来说,你可以骑在羊上吗?或者说甚至是一些其他的实体,如你可以骑在玩家上吗?
我们先不要过早下结论,让我们来看看2022年4月1日Mojang发布了个什么惊人更新:
One Block at a Time Update(一次只拿一块更新)
在这次更新中,你可以和其他玩家叠高高,也就是骑在玩家身上,而且最高还可以叠5层!
这说明了什么?这就说明了,玩家也是可以骑在玩家身上的。
但为什么玩家在这次更新就可以被骑了呢?是不是Mojang为了实现这个功能把马的骑乘模块移到了玩家身上?
答案并不是这样的,而是玩家本身就有骑乘模块,或者说Minecraft中的所有实体都有骑乘模块,只不过Mojang仅仅让少数实体可以应用这些模块而已。
所以从理论上来说,你是可以骑在羊身上的,甚至你可以说,你可以骑在任何实体身上!
那么这跟指令以及命令方块矿车有什么关系呢?
现在让我们再来看看另一个东西:下落的方块。
下落的方块,名字听起来是个方块,但实际上它是个实体。
你可能认为你从来没有见到过下落的方块,但实际上,你很容易就可以遇见它。
在Minecraft中,如果一个受到重力影响的方块(如沙子)要落下,那么游戏就会将其转换为“下落的方块”这个实体,并将方块的相关数据存储于实体NBT中,等到实体落到地面之后游戏再将其转换回去。
既然下落的方块是个实体,那么我们就可以通过summon指令将其生成。并且,由于方块的相关数据都存储于实体NBT中,所以我们可以通过指令来召唤特定的“下落的方块”。比如,你可以召唤出一个“下落的钻石块”,这个实体版的钻石块照样会在落到地面时变回方块版的钻石块。
好,你现在听懂了吧,但这又跟命令方块矿车有什么关系呢?
想一想,如果我们使用summon命令,召唤一个“下落的红石块”,这个“下落的红石块”上面骑着“下落的激活铁轨”,而这个“下落的激活铁轨”上面又骑着一个命令方块矿车,最后,这个命令方块矿车里写了一串指令:say hello Minecraft。
听着有点晕是吧?正常。简单点说,就是你召唤了一个叠高高,这个叠高高一共有三层,最上面一层是写有“say hello Minecraft”指令的命令方块矿车,中间一层是正处于下落状态的“激活铁轨”,最下面一层是正处于下落状态的“下落的红石块”
本小章还未完,请点击下一页继续阅读后面精彩内容!
能够明白了吧?想一想,当这个“叠高高”到达地面时,会发生什么事情?
红石块会先落到地面并回到方块形态,然后激活铁轨就会因为红石块变回方块而也变回方块形态,随后被红石块激活。命令方块矿车接着会落到激活铁轨上面,并开始重复执行指令。最终你的聊天栏就会不断出现“hello Minecraft”的消息。
是不是很神奇?仅用一条指令,就执行了........say hello Minecraft?这本来就可以一条指令做到啊,搞这么复杂有毛病啊?!
没有毛病。别忘了,既然命令方块矿车可以骑在下落的方块上,那不也能骑在命令方块矿车上吗?而且由于铁轨方块的特性,同一个铁轨上可以有许多个矿车卡在一起。所以从理论上,你可以通过“叠高高”的形式召唤一大堆的命令方块矿车,这些命令方块矿车可以分别执行不同的指令,但你召唤它们仅需要一条十分十分十分长的指令即可。
这就是OOC(Only One Command),即“仅有一条指令”在游戏中真正的表现形式。
(其实还有一种表现形式,就是召唤叠高高的“下落的命令方块”,照样也可以实现类似的功能,就是比较占地)
现在你知道命令方块矿车有何作用了吧?
(你知道吗,在基岩版1.17尚未更新时,命令方块矿车有一个恶性BUG,编号MCPE-。
这个BUG的内容很简单:游戏规则mandblocksenabled用于控制命令方块是否启动,但这个规则管不到命令方块矿车,这就导致就算关闭了mandblocksenabled这个规则,命令方块矿车也可以运行命令。
在当时,许多基岩版的服务器就因为这个BUG遭到了破坏,Mojang也是很快地在有人反馈后就在1.17更新中修复了这个bug。现在已经没有这个bug了。)