UU看書

第四十六章 team——管理隊伍和成員

天才一秒記住【UU看書】地址:www.uukanshu.co

前面我們瞭解到,記分板的作用就是承載各個計分項。實際上,記分板的作用不止於此,在MinecraftJava版中(嚴格來說是MinecraftJava113之前的版本)中,記分板還有一個極其重要的功能:遊戲隊伍(team)。

你是不是對記分板有“遊戲隊伍”這個功能感到不可思議?Mojang也是這樣想的,於是在MinecraftJava113扁平化中將這個功能從記分板中獨立了出來,成了一套基本上獨立的系統。

說了這麼多,那麼我們該如何使用這個功能呢?

其實不難。在MinecraftJava113版本之前,該功能是內建在scoreboard指令中的,即teams子命令。透過team,我們可以:add(新增)、remove(刪除)、list(列出)、join(加入)、empty(清除)、leave(離開)以及option(設定)。它的具體格式是:

scoreboardteams

隊伍管理

addlt隊伍名稱gt隊伍顯示名稱——新增隊伍。

list隊伍名稱——列出當前所有隊伍及其資訊。如果指定了隊伍名稱,將會列出該隊伍的成員名單。

removelt隊伍名稱gt——刪除隊伍。

隊伍成員管理

joinlt隊伍名稱gt目標選擇器——將所選目標加入到隊伍中。目標選擇器可用代指所有玩家和非玩家。目標選擇器未填寫的話預設是執行者自己。(注:一個玩家或非玩家只能同時存在於一個隊伍中,加入另外一個隊伍將會自動退出原先的隊伍)

leave目標選擇器——將所選目標從ta所在的隊伍中移出。目標選擇器可用代指所有玩家和非玩家。目標選擇器未填寫的話預設是執行者自己。

emptylt隊伍名稱gt——刪除指定隊伍中的所有成員。

高階隊伍管理

optionlt隊伍名稱gtcolorlt顏色gt——設定隊伍的顏色。

optionlt隊伍名稱gtfriendlyfirelt布林值:truefalsegt——設定隊伍成員間是否可以互相傷害。預設為true,如果為false則不可以互相傷害。

optionlt隊伍名稱gtseeFriendlyInvisibleslt布林值:truefalsegt——設定該隊伍的成員是否可以看見處於隱身狀態的隊友(如果設定為true會看見半透明的隱身狀態隊友,false則保持通常情況,即不可見)。預設為true。

optionlt隊伍名稱gtnametagVisibilitylt名稱牌可見性:neverhideforotherteamshideforownteamalwaysgt——設定該隊伍成員頭上名字(更準確的說是名稱牌)的可見性,預設為always。

optionlt隊伍名稱gtdeathMessageVisibilitylt死亡資訊可見性:neverhideforotherteamshideforownteamalwaysgt——設定該隊伍成員死亡資訊的可見性,預設為always。

optionlt隊伍名稱gtcollisionRulelt碰撞模式:alwaysneverpushownteampushotherteamsgt——控制該隊伍成員的碰撞模式,預設為always。

不難發現,隊伍的組成和計分項的組成差不多。一個隊伍的組成有如下幾個部分:

①名稱——除了這個是隊伍的名稱外,其他方面都與計分項的名稱相同。

②顯示名稱——除了這個是隊伍的顯示名稱外,其他方面都與計分項的顯示名稱相同。

③成員

④隊伍顏色

⑤隊伍規則

(實際上一個隊伍還有字首Prefix和字尾Suffix,但是由於兩者在113版本中才能在命令中被正式使用,這裡我們先不瞭解。關於前字尾的內容,會在第一百一十九章講到。)

現在,我們可以嘗試自己建立一個隊伍:

scoreboardteamsaddteam一個隊伍

執行這條指令,遊戲將建立一個名稱為team,顯示名稱為“一個隊伍”的隊伍。

如果你對這個隊伍並不滿意,就需要使用remove刪除這個隊伍:

scoreboardteamsremoveteam

這樣子,就成功刪除一個隊伍了。

如果你是一條魚,只有7秒記憶,建立後第10秒你想要刪除這個隊伍,但是你在3秒前已經忘記這個隊伍叫什麼了,此時你該怎麼辦?

執行scoreboardteamslist可以列出所有隊伍及其顯示名稱和成員數量。我們現在執行一遍,就會得到如下資訊:

記分板上正在顯示1個隊伍

team一個隊伍有0個玩家

list子命令還可以顯示指定隊伍的成員名單。當然,在瞭解並使用之前,我們不妨先來看看如何為一個隊伍新增成員。

雖然遊戲一直說是新增玩家,但是實際上隊伍成員和計分項的分數持有者一樣,可以是個實體甚至是不存在的玩家。新增成員需要用到join子命令。比如我們要將這存檔中所有的羊(sheep)加入到剛剛我們建立的team隊伍,就需要執行如下指令:

scoreboardteamsjointeametypesheep

然後你就會看到一堆的實體UUID,這些都是羊們的UUID,而且現在這些羊都是這個隊伍的隊員了。如果你想要仔細看看這些羊的UUID,就需要使用list列出成員名單,具體指令如下:

scoreboardteamslistteam

這將會列出team隊伍的所有成員。

相應的,我們也可以使用leave子命令來讓羊們都離開這個隊伍:

scoreboardteamsleaveetypesheep

執行上面的命令後,理想情況下team隊伍就沒有成員了。

需要注意一點,一個玩家或非玩家在同一個存檔最多隻能同時存在於一個隊伍中。因此,如果我們還建立了一個隊伍叫做duiwu,在沒有使用leave子命令把這群羊從team隊伍移出之前,我們執行scoreboardteamsjoinduiwuetypesheep把這群羊加入到duiwu中,然後又一次執行scoreboardteamslist列出team和duiwu的資訊,你就會驚奇的發現在沒有使用leave子命令的情況那些羊們竟然自動退出了team這個隊伍,全跑到了duiwu這個隊伍中。

因為這個原因,所以leave這個子命令才沒有一個“隊伍名稱”引數,功能也不是退出指定隊伍而是使所選目標離開其所在的隊伍。

理想情況下,執行上面的join和leave子命令來對羊們進行隊伍歸屬操作,是能做到全體操作的。但在現實中,有些羊可能會因為種種原因(如處於非載入區塊中)而沒有被目標選擇器選中,導致它還在原本的隊伍。如果只有一兩隻手抄一下UUID也沒關係,但如果是五隻、六隻甚至是幾十只呢?這時候你還會去抄嗎?

其實你並不需要抄那些UUID,你只需要用一條指令即可:

scoreboardteamsemptyteam

執行後,隊伍team中的所有成員就被清除掉了。這個empty子命令的作用就是這樣,清除指定隊伍中的所有成員。

上面的內容均是MinecraftJava113扁平化更新前的內容。那麼113更新後呢?

scoreboardteams被單獨的指令team替代。好在,內容基本保持不變,team的格式和原本的teams子命令相差不大,唯一的一個重大改變是option(設定)子命令變成了modify(修飾)子命令,並且該子命令下面還多了兩個東西:prefix(字首)和suffix(字尾)。當然,關於前字尾的內容,我前面已經說過了,第119章有講到。所以本章的內容還是可以套到目前的最新版本當中的。

注:隊伍顯示名稱的值在113及以上版本是JSON文字元件)

現在,我們已經知道了如何使用add、list、remove、join、leave和empty這六個子命令,本章也差不多可以到這裡結束了。下一章我們來了解一些高階一點的操作。

team的歷史:

MinecraftJava

15——在記分板的基礎上加入了隊伍相關功能

18——現在非玩家也可以加入隊伍了(注意,18版本之前,僅玩家可以被計入記分板和加入隊伍)。同時加入了隊伍的相關準則、隊伍側邊欄顯示和nametagVisibility、deathMessageVisibility隊伍規則。

19——加入了collisionRule規則。

113——以指令team替代了scoreboardteams,同時將option改為modify。加入了prefix和suffix。並且,隊伍顯示名現在是JSON文字了。

如遇章節錯誤,請點選報錯(無需登陸)

新書推薦

三國之我是個小兵 聯盟之王朝基石 LOL:都奪冠了誰還打職業啊! 全球對映:開局我是滿級大佬 莫瑟的日常 商如意宇文愆小說全本免費閱讀 當我穿越進入諸神的世界