我的世界:僅一條指令,讓苦力怕給你“暖”被窩!你選擇跟誰睡?

問:苦力怕能“睡”在床上麼?

“當然不能!”這可能是大多數人的想法。一直以來,很多人都希望《我的世界》怪物們也可以實現在床上睡覺,尤其是變身萌娘之後的苦力怕。所以基於此,我們來做一期關於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,它們才能乖乖的躺在床上。

最後,怪物如此兇悍,但睡著的《我的世界》怪物們,可就任你擺佈了哦!只是你會選擇跟誰睡呢?


分享到:


相關文章: