第153章牛顿心中的Minecraft:下落的方块 - Minecraft指令手册 - 你好MC - 游戏竞技小说 - 30读书

第153章牛顿心中的Minecraft:下落的方块

前十二章,我们详细地了解了生物的共通nbt以及nbt格式。但别忘了,本卷的名字叫做:

实体与nbt

所以接下来,我们就要回归正题。

——第一节:关于下落的方块这个大类只有一种实体这档事

在第一百二十九章里,我们知道了很多关于实体的东东。比如:下落的方块是个实体。

但有没有人想过这么一个问题:

我在对下落的方块这种实体举例子的时候,为什么举了一个“下落的方块”实体的例子?

深入思考的话,我们就会得出一个神奇的结论:下落的方块这种实体只有一个实体——下落的方块(fallingsand[1.13之前]、falling_block[1.13及之后])

所以这就可以解释你在用kill清除实体时,就不会跳出来“下落的沙子”了,更不会跳出来“沙子”(因为这名字已经被掉落物占了),而是统一“下落的方块”。因为人家变成实体之后就统一成了一个实体。

再深入思考,我们又会得到一个问题:

统一成一个实体后,下落的方块是如何确定自身到底是什么方块的?

为了解决这个问题,我们可以回顾一下第一百零八章到第一百零九章对掉落物的介绍,就会得出一个对掉落物确定自己到底是什么物品的方法的结论:

用nbt存储物品的信息

按理来说,用实验法来研究生物,得出结论后也就差不多了。但我们不是在进行一个生物实验,而是在学习nbt。况且,就算我们这是一本生物书,生物学它本身也是一个:

...→观察并思考→提出问题→收集资料→作出假设→制定实验计划→实施实验并记录→得出结果→研究并思考→提出新的问题→...

所以我们可以研究这个结论,并提出一个新的问题:

为什么掉落物要用nbt来存储物品的信息呢,而不用item_<物品id>这样子每个物品的掉落物都有一个对应的单独实体?

答案很简单:

1mojang这个喜欢3的家伙很懒(主要原因)

2如果这样子做的话虽然也能达到目的,但游戏会更大

深入思考,我们还会得出一个震惊的结论:

这样子的话,那么掉落物这个大类也只有一个实体唉:掉落物

实际上还真是这样的,掉落物确实只有一个实体:minecraft:item

(注意!minecraft:item_frame这个实体实际上是物品展示框,而不是掉落物)

得出了这些结论,我们再来看看下落的方块。刚才我们发现下落的方块只有一个实体:下落的方块。这说明了什么?

下落的方块也是使用nbt来存储方块的信息。

这就是上面那个问题的答案。

——第二节:下落的方块的nbt

下落的方块中存储着方块信息的nbt是:

blockstate(复合标签)

意思是:block(方块)state(状态)

这个复合标签里有两个重要的东西:

name(字符串):这个正在下落的方块的id

properties(复合标签):可选,这个正在下落的方块的方块状态

举个例子。比如,现在这里有一个沙子被炸飞了,那么它的blockstate很有可能是:

{blockstate:{name:“minecraft:sand“}}

properties这个先不管,方块状态等我们以后讲到你就立马会了。

我们可以使用/summonminecraft:falling_block(1.11及之后,之前为/summonminecraft:fallingsand)来生成一个下落的方块。按照生成掉落物的经验,我们就可以搞出一些神奇的东西,比如:

/summonminecraft:falling_block~~~{blockstate:{name:“minecraft:diamond_block“}}

执行它,你的下半身就会立马被一个钻石块包裹。然后这个钻石块开始下落,接着就消失了!

如果你用循环命令方块来执行,建议你稍微改一下指令:

/summonminecraft:falling_block~~2~{blockstate:{name:“minecraft:diamond_block“}}

开启!你就会发现你搞出来了一个不断在空中振动(???)的没有碰撞箱(???)的钻石块(???)。

这到底是怎么一回事呢?

实际上还有更有趣的。

如果你在这个不断振动的钻石块的位置上放置一个钻石块。如果下面是空的,你就会发现:

你放置的这个钻石块给这个在不断振动的钻石块给震掉下来了!

还可以更奇葩吗?

可以!

如果下面有方块,你还放的话,你就会发现:

字体大小
主题切换