浙江热线网

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

导读: 

问:苦力怕能“睡”在床上么?“当然不能!”这可能是大多数人的想法。一直以来,很多人都希望《我的世界》怪物们也可以实现在床上睡觉,尤其是变身萌娘之后的苦力怕。所以基于此,我们来做一期关于Minecraf

问:苦力怕能“睡”在床上么?

“当然不能!”这可能是大多数人的想法。一直以来,很多人都希望《我的世界》怪物们也可以实现在床上睡觉,尤其是变身萌娘之后的苦力怕。所以基于此,我们来做一期关于Minecraft“睡觉”的知识。一个让怪物们也可以睡觉的方法!

村民“睡觉”原理


我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

自1.14更新之后,《我的世界》村民拥有了“睡觉”的能力。并且他们会首先绑定一个床,然后每天固定去那一张床睡觉。这是什么原理呢?

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

原理:在村民的NBT标签中,有个memories的属性用于记录村民需要记忆的内容。其中minecraft:home标记了床的维度和坐标。所以村民是依靠自身代码的一个“记忆”NBT标签,实现所谓的人类记忆功能。这就是村民寻找床,并且能够记住它的而基本原理。

但是请你记住,这只是一个“记住”床在哪的NBT标签。却不是控制村民睡觉的NBT标签。

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

我们进一步观察惊讶地发现,一只“正在睡觉”的村民会诞生全新的三个标签:SleepingX,SleepingY,SleepingZ。并且这三个坐标和床头那一格方块是完全一致的。而没有睡觉的村民则不存在这三种NBT标签。

所以我们在这里提出一个大胆的猜想,村民睡觉这一行为需要满足三个条件,

  • 其一:SleepingXYZ标签,控制着村民睡觉的位置;
  • 其二:这个位置必须要有床,否则无法进行睡眠;
  • 其三:村民睡觉姿势和朝向由床的位置来决定。

修改村民睡觉的位置,会发生什么?


我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

利用上述原理,突然想到一个问题。一个正在睡觉的村民,若在躺下的时候睡在了船上或者是矿车中,它可以持续睡觉的状态,并且被矿车运送走;甚至是曾经频繁出现过的尸首分离。

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

那是否意味着,一个村民可以在睡觉的时候,通过修改“SleepingX,SleepingY,SleepingZ”的值,来达不在床上也可以睡觉的目的呢?

我们以Creeper为例,通过命令方块来修改“苦力怕”的NBT标签,看看是否可以让怪物也躺在床上。

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

  • 指令一:用命令方块修改已存在生物的NBT;/data merge entity @e[type=creeper,limit=1] {SleepingX:31,SleepingY:56,SleepingZ:11,NoAI:1}
  • 指令二:用指令直接生成一只睡觉的生物;/summon minecraft:zombie ~ ~ ~ {SleepingX:38,SleepingY:56,SleepingZ:3,NoAI:1};
  • 注:坐标处一定要有一张床,且为床头的位置;

仅一条指令,就可以跟苦力怕睡觉觉了。NBT标签当中的Sleeping坐标检测到了床的坐标,让苦力怕也成为了一只可以睡觉的生物。并且它在睡觉的时候,拥有和村民相同的“无敌”特性。(例如不能被攻击,不能岩浆灼烧等等)

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

此时,我们再执行“/tp @e[type=minecraft:creeper,nbt={NoAI:1b}] 31 56 7”就可以让躺下的苦力怕以睡觉的姿势,离开床。

似乎这就是1.14下村民总是出现“睡觉BUG”的真正原因。倘若Mojang给NBT标签中的Sleeping坐标和床的坐标一个范围值判定,也许就不会出现这种所谓的“特性”。

你选谁给你“暖被窝”?


我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

我们测试了几乎所有的生物,甚至是凋灵BOSS都会呈现90°躺下的姿态。水生生物则大多数无法实现躺下,但也是进入的“睡眠”状态。唯一个生物例外,那就是“末影龙”。

我的世界:仅一条指令,让苦力怕给你“暖”被窝!你选择跟谁睡?

另外,我们为什么一定要给生物一个NoAI的标签,因为在怪物们的AI里是没有“睡觉”的概念的。所以即使是进入睡眠它们依然会保留对人类发起进攻的特性。只有失去了AI,它们才能乖乖的躺在床上。

最后,怪物如此凶悍,但睡着的《我的世界》怪物们,可就任你摆布了哦!只是你会选择跟谁睡呢?


推荐阅读:叶紫网