我的世界:僅一條指令,讓苦力怕給你“暖”被窩!你選擇跟誰睡?
問:苦力怕能“睡”在床上么?
“當(dāng)然不能!”這可能是大多數(shù)人的想法。一直以來,很多人都希望《我的世界》怪物們也可以實(shí)現(xiàn)在床上睡覺,尤其是變身萌娘之后的苦力怕。所以基于此,我們來做一期關(guān)于Minecraft“睡覺”的知識(shí)。一個(gè)讓怪物們也可以睡覺的方法!
村民“睡覺”原理

自1.14更新之后,《我的世界》村民擁有了“睡覺”的能力。并且他們會(huì)首先綁定一個(gè)床,然后每天固定去那一張床睡覺。這是什么原理呢?

原理:在村民的NBT標(biāo)簽中,有個(gè)memories的屬性用于記錄村民需要記憶的內(nèi)容。其中minecraft:home標(biāo)記了床的維度和坐標(biāo)。所以村民是依靠自身代碼的一個(gè)“記憶”NBT標(biāo)簽,實(shí)現(xiàn)所謂的人類記憶功能。這就是村民尋找床,并且能夠記住它的而基本原理。
但是請(qǐng)你記住,這只是一個(gè)“記住”床在哪的NBT標(biāo)簽。卻不是控制村民睡覺的NBT標(biāo)簽。

我們進(jìn)一步觀察驚訝地發(fā)現(xiàn),一只“正在睡覺”的村民會(huì)誕生全新的三個(gè)標(biāo)簽:SleepingX,SleepingY,SleepingZ。并且這三個(gè)坐標(biāo)和床頭那一格方塊是完全一致的。而沒有睡覺的村民則不存在這三種NBT標(biāo)簽。
所以我們?cè)谶@里提出一個(gè)大膽的猜想,村民睡覺這一行為需要滿足三個(gè)條件,
其一:SleepingXYZ標(biāo)簽,控制著村民睡覺的位置;
其二:這個(gè)位置必須要有床,否則無法進(jìn)行睡眠;
其三:村民睡覺姿勢(shì)和朝向由床的位置來決定。
修改村民睡覺的位置,會(huì)發(fā)生什么?

利用上述原理,突然想到一個(gè)問題。一個(gè)正在睡覺的村民,若在躺下的時(shí)候睡在了船上或者是礦車中,它可以持續(xù)睡覺的狀態(tài),并且被礦車運(yùn)送走;甚至是曾經(jīng)頻繁出現(xiàn)過的尸首分離。

那是否意味著,一個(gè)村民可以在睡覺的時(shí)候,通過修改“SleepingX,SleepingY,SleepingZ”的值,來達(dá)不在床上也可以睡覺的目的呢?
我們以Creeper為例,通過命令方塊來修改“苦力怕”的NBT標(biāo)簽,看看是否可以讓怪物也躺在床上。

指令一:用命令方塊修改已存在生物的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};
注:坐標(biāo)處一定要有一張床,且為床頭的位置;
僅一條指令,就可以跟苦力怕睡覺覺了。NBT標(biāo)簽當(dāng)中的Sleeping坐標(biāo)檢測(cè)到了床的坐標(biāo),讓苦力怕也成為了一只可以睡覺的生物。并且它在睡覺的時(shí)候,擁有和村民相同的“無敵”特性。(例如不能被攻擊,不能巖漿灼燒等等)

此時(shí),我們?cè)賵?zhí)行“/tp @e[type=minecraft:creeper,nbt={NoAI:1b}] 31 56 7”就可以讓躺下的苦力怕以睡覺的姿勢(shì),離開床。
似乎這就是1.14下村民總是出現(xiàn)“睡覺BUG”的真正原因。倘若Mojang給NBT標(biāo)簽中的Sleeping坐標(biāo)和床的坐標(biāo)一個(gè)范圍值判定,也許就不會(huì)出現(xiàn)這種所謂的“特性”。
你選誰給你“暖被窩”?

我們測(cè)試了幾乎所有的生物,甚至是凋靈BOSS都會(huì)呈現(xiàn)90°躺下的姿態(tài)。水生生物則大多數(shù)無法實(shí)現(xiàn)躺下,但也是進(jìn)入的“睡眠”狀態(tài)。唯一個(gè)生物例外,那就是“末影龍”。

另外,我們?yōu)槭裁匆欢ㄒo生物一個(gè)NoAI的標(biāo)簽,因?yàn)樵诠治飩兊腁I里是沒有“睡覺”的概念的。所以即使是進(jìn)入睡眠它們依然會(huì)保留對(duì)人類發(fā)起進(jìn)攻的特性。只有失去了AI,它們才能乖乖的躺在床上。
最后,怪物如此兇悍,但睡著的《我的世界》怪物們,可就任你擺布了哦!只是你會(huì)選擇跟誰睡呢?