為名稱標記實體設置年齡的命令
我的目標是在 spawn 處放置一個命令塊來檢查每個帶有名字標籤的暴徒的年齡。如果實體的年齡小於零,則命令塊將年齡設置為
-999999999
。這應該允許所有被標記為嬰兒的動物、生物、村民等仍然是嬰兒。所有未命名的實體都應該正常老化。
我對 minecraft 編碼只有非常基本的了解,所以儘管我已經研究和測試了大約三個小時,但我還沒有走得很遠。
我試過命名一隻成年狼
Child
並執行這個命令把它變成一個孩子。execute as @e[name='Child'] run data merge entity @s {age:-9999999}
Minecraft 說日期合併是成功的,但我沒有看到任何變化。成年狼仍然是成年人。(我還嘗試使用相同的命令將小狼變成成年人,但沒有成功。)
由於我無法完成第一步,我不確定最終命令應該是什麼樣子。有人可以幫我理解如何編寫最終命令。如前所述,我想辨識所有年齡小於零的名稱標記實體,然後將它們的年齡設置為
-9999999
。
您原始文章中的命令不起作用的原因是因為 NBT 標籤區分大小寫,並且您不尊重
Age
標籤的大小寫。你應該用過
{Age:-9999999}
,不是{age:-9999999}
。這是一個非常簡單的問題,很容易預防。以後,請務必查看Minecraft Wiki,它會顯示具有正確大寫字母的 NBT 標籤列表。您還可以執行
/data get entity @e[type=wolf,limit=1,sort=nearest]
以列印最近實體(在本例中為最近的狼)的數據。您還可以嘗試使用MCStacker等命令生成器。如果您這樣做,我建議您使用他們的
/summon
生成器來嘗試設置暴民年齡時會發生什麼,然後將 NBT 複製並粘貼到您自己的命令中。
我想出了一種方法來為我的生存玩家和他們的寵物做到這一點!
從玩家的角度來看,這非常簡單。玩家使用名稱標籤將動物命名為“孩子”。這種動物現在仍然是一個孩子——即使它使用新的名稱標籤重新命名。如果玩家決定他們希望他們的動物長大,那麼他們可以使用名稱標籤將動物命名為“成人”。這只動物現在會正常老化,直到它成年——即使它使用新的名稱標籤重新命名。
以下是實現此結果的方法:
在生成時創建兩個單獨的命令塊,設置為重複、無條件、始終啟動。以下是每個命令塊的命令:
/tag @e[name='Child'] add child /tag @e[name='Adult'] remove child
這些命令塊搜尋名稱為“兒童”或“成人”的任何實體。如果實體被命名為“Child”,則應用子標籤。如果一個實體被命名為“成人”,那麼子標籤將被刪除。
在生成時創建另一個命令塊,設置為重複、無條件、始終處於活動狀態。這是該命令塊的命令:
/execute as @e[tag=child] run data merge entity @s {Age:-24000}
此命令塊將檢查任何帶有子標籤的實體並將年齡設置為 -24000。在刪除子標籤之前,該實體將一直是子實體。