UU看書

第四十一章 objectives——管理一個計分項

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

如何建立並管理一個計分項呢?這就需要使用scoreboard。

scoreboard

作用:控制計分板

需要許可權等級:Java2,基岩1

需要作弊:是

格式(本章所涉及):

scoreboardobjectives

Java版

addlt計分項名稱gtlt準則gtlt顯示名稱:JSONgt——新增計分項(注:JE113以下版本“顯示名稱”引數的值型別為字串)

list——列出當前所有計分項

modifylt計分項名稱gt——對指定計分項進行一些更改操作113更新

displaynamelt顯示名稱:JSONgt——更改指定計分項的顯示名稱113更新

rendertypeltheartsintegergt——指定顯示該計分項數值時是採用愛心(hearts)還是數值(integer)顯示113更新

removelt計分項名稱gt——刪除計分項

setdisplaylt顯示位置gt計分項名稱——指定特定的位置顯示指定的計分項或取消顯示計分項。

基岩版

addlt計分項名稱:字串gtlt準則gtlt顯示名稱:字串gt——新增計分項

list——列出當前所有計分項

removelt計分項名稱:字串gt——刪除計分項

setdisplaylt顯示位置gt計分項名稱:字串排序方法:ascendingdescending——指定特定的位置顯示指定的計分項或取消顯示計分項。

現在讓我們來試一試。首先來嘗試新增一個最基本的計分項:

scoreboardobjectivesaddcoindummy金錢——僅Java113以下和基岩版

scoreboardobjectivesaddcoindummy“金錢“——僅Java1122以上

上面的指令將會新增一個準則為dummy,顯示名稱為“金錢”,叫做“coin”的計分項。

新增計分項時我們需要特別注意準則的選擇。正如上一章所說的“準則決定了記分項具體要跟蹤的資訊”,一個計分項的作用,很大程度上是由準則決定的。

準則在基岩版只有dummy(虛擬型),在Java版有兩大類:單一準則和複合準則。

單一準則不可自定義,是Mojang已經給你預設好的準則,目前有如下幾種:

dummy:虛擬型,最基礎的準則,僅可透過scoreboardplayers指令修改。

trigger:觸發器,類似於dummy,但所有玩家均可修改自己的trigger型計分項。具體內容會在第九十八章講到。

deathCount:玩家死亡次數,當玩家死亡時遊戲會自動增加他的分數,可以透過指令修改。(Java版的死亡榜就是這麼搞的)

playerKillCount:玩家擊殺(玩家)數,當玩家擊殺其他玩家時遊戲會自動增加他的分數,可以透過指令修改。

totalKillCount:玩家擊殺(生物)數,當玩家擊殺其他任意生物時遊戲會自動增加他的分數,可以透過指令修改。

health:玩家生命值,傷害吸收和生命提升的血也會計算在其中。當玩家第一次重新整理生命值之前該玩家的分數會為0。不可透過指令修改。

xp:玩家經驗值,不可透過指令修改。

level:玩家經驗等級(注意和xp準則區分),不可透過指令修改。

food:玩家飽和度,和health準則一樣,在玩家第一次重新整理飽和度之前該玩家的分數會為0,不可透過指令修改。

air:玩家空氣值(就是潛水時顯示的那個),不可透過指令修改。

armor:玩家盔甲值,和health準則一樣,在玩家第一次重新整理盔甲值之前該玩家的分數會為0,不可透過指令修改。

複合準則可以自定義,其格式如下:

lt基礎準則ID:名稱空間gtlt次級準則gt(112更新後)

複合準則實際上就是Mojang將你選單介面中的“統計資料”和計分板繫結在一起而已。基礎準則具體有:

teamkilllt隊伍顏色gt——玩家殺死指定顏色的隊伍成員便會增加分數

killedByTeamlt隊伍顏色gt——玩家被指定顏色的隊伍成員殺死便會增加分數

minecraftcustomltEmmm不知道怎麼描述gt——對應的是統計資訊選單中的“通用”一欄資訊。比如準則minecraftcustomminecraftleavegame就是跟蹤每一名玩家統計選單中的“遊戲退出次數”。具體的每項統計資訊所對應的名稱空間ID就太多了,需要的可以自行到MinecraftWiki檢視(指明路線:統計資訊→名稱空間ID→統計資訊列表)。

minecraftpickeduplt物品IDgt——玩家撿起指定物品時便會增加分數(對應統計選單“物品”一欄的“拾起個數”)

minecraftdroppedlt物品IDgt——玩家丟棄指定物品時便會增加分數(對應統計選單“物品”一欄的“丟棄個數”)

minecraftusedlt物品IDgt——玩家使用指定物品時便會增加分數(對應統計選單“物品”一欄的“使用次數”)

minecraftbrokenlt物品IDgt——玩家消耗指定物品時便會增加分數(對應統計選單“物品”一欄的“工具消耗數”)

minecraftcraftedlt物品IDgt——玩家合成指定物品時便會增加分數(對應統計選單“物品”一欄的“合成次數”)

minecraftminedlt方塊IDgt——玩家挖掘指定方塊時便會增加分數(對應統計選單“方塊”一欄的“開採次數”)

minecraftkilledlt實體IDgt——玩家擊殺指定實體時便會增加分數(對應統計選單“生物”一欄的“你殺死了n只xxx”中的n)

minecraftkilledbylt實體IDgt——玩家被指定實體擊殺時便會增加分數(對應統計選單“生物”一欄的“xxx殺死了你n次”中的n)

注意:Java113更新中將統計資訊中的“方塊”併到“物品”一欄。

現在,我們有了一個計分項。但如果你想要修改顯示名稱該怎麼辦?

在基岩版和Java113以下版本中,你只能刪了重新搞。這時候你就需要使用remove:

scoreboardobjectivesremovecoin

這樣子就可以刪掉叫做coin的計分項。

但如果你忘記了計分項的名稱該怎麼辦?使用list列出所有計分項以檢視:

scoreboardobjectiveslist

(注意,在Java1122以上版本中,如果你的計分項設定了顯示名稱,那麼list只會列出該計分項的顯示名稱,要檢視具體的名稱需要將滑鼠移到列出的計分項顯示名稱的上方)

在Java1122以上版本中,有一種便捷的方法可以不刪除計分項就可以更改顯示名稱:modify。

舉個例子:假設你想要修改我們剛才建立的coin計分項的名稱為“軟妹幣”,你就需要執行:

scoreboardobjectivesmodifycoindisplayname“軟妹幣“

modify不只是可以修改名稱,它還可以修改計分項中玩家分數的值的顯示方式。

當然在研究這個值顯示方式之前,我們得了解一下setdisplay的作用。

上面列格式時就已經提到過setdisplay的作用了:顯示計分項於某個位置。

具體的這個位置有哪些呢?

list——Java版中是在Tab玩家列表中顯示每名玩家的分數(不顯示具體是哪個計分項),基岩版中是在暫停介面顯示。

sidebar——在螢幕的右側顯示列表,並在列表的最上方顯示該計分項的顯示名稱

sidebarteamlt隊伍顏色gt——和sidebar作用相同,只是只會給指定顏色的隊伍檢視僅Java版

belowName——在玩家的頭上面顯示該玩家的分數

舉個例子:

scoreboardobjectivessetdisplaysidebarcoin

執行指令,就可以將我們剛才建立的coin計分項以列表的形式顯示在右側。需要注意,如果已經有其他計分項顯示在該位置,執行該條指令後將會覆蓋顯示為coin計分項。

在基岩版,使用list和sidebar位置時還可以指定列表排序方式:ascending(從小到大)和descending(從大到小預設)。比如:

scoreboardobjectivessetdisplaysidebarcoinascending

就可以將最窮的玩家顯示在列表最上方的位置。

如果你仔細看了setdisplay的格式,你會發現“計分項名稱”這個引數是選填的。那如果不填會發生什麼?

重置該位置,也就是取消顯示計分項在該位置。比如:

scoreboardobjectivessetdisplaysidebar

就可以讓右側一欄重回清淨。

透過modify的rendertype我們還可以修改指定計分項的分數顯示時的樣子。Mojang給了我們兩個選擇:hearts(生命值)和integer(數值)。

比如:

scoreboardobjectivesmodifycoinrendertypehearts

就會將coin計分項中每名玩家的分數以生命值的形式顯示出來。

需要注意的是,生命值形式僅支援Tab玩家列表。

在Java113更新前,計分項的複合準則並不是這樣,而是:

lt一級準則gtlt二級準則gt次一級準則次二級準則(113更新前)

複合準則也並不是完全和統計選單的資料繫結。在113更新前,複合準則具體有如下內容:

achievementlt成就IDgt——(112版本中被移除)以一個玩家達成指定成就數量作為值。比如achievementdiamonds就是“鑽石”成就的達成次數。這個成就的達成次數是什麼意思呢?舉個例子,你獲得到1塊鑽石,就達成了“鑽石”成就1次。如果你再次獲得一塊鑽石,雖然遊戲不會告訴你你又一次達成了“鑽石”成就,但是你實打實地達成了這個成就兩次。由於MinecraftWiki會慢慢捨棄舊遊戲內容,我就把成就ID全放這了,具體指的是什麼成就自己扔進生草機裡翻譯:“acquireIron“、“bakeCake“、“blazeRod“、“bookcase“、“breedCow“、“buildBetterPickaxe“、“buildFurnace“、“buildHoe“、“buildPickaxe“、“buildSword“、“buildWorkBench“、“cookFish“、“diamonds“、“diamondsToYou“、“enchantments“、“exploreAllBiomes“、“flyPig“、“fullBeacon“、“ghast“、“killCow“、“killEnemy“、“killWither“、“makeBread“、“mineWood“、“onARail“、“openInventory“、“overkill“、“overpowered“、“portal“、“potion“、“snipeSkeleton“、“spawnWither“、“theEnd“、“theEnd2“。

statlt內容gt——對應113更新後的“minecraftcustomltemmm不知道怎麼描述gt”。比如statsneakTime準則就是玩家的潛行時間。“內容”可以填“animalsBred“、“armorCleaned“、“bannerCleaned“、“beaconInteraction“、“boatOneCm“、“brewingstandInteraction“、“cakeSlicesEaten“、“cauldronFilled“、“cauldronUsed“、“chestOpened“、“climbOneCm“、“craftingTableInteraction“、“crouchOneCm“、“damageDealt“、“damageTaken“、“deaths“、“dispenserInspected“、“diveOneCm“、“drop“、“dropperInspected“、“enderchestOpened“、“fallOneCm“、“fishCaught“、“flowerPotted“、“flyOneCm“、“furnaceInteraction“、“hopperInspected“、“horseOneCm“、“itemEnchanted“、“jump“、“junkFished“、“leaveGame“、“minecartOneCm“、“mobKills“、“noteblockPlayed“、“noteblockTuned“、“pigOneCm“、“playerKills“、“playOneMinute“、“recordPlayed“、“sneakTime“、“sprintOneCm“、“swimOneCm“、“talkedToVillager“、“timeSinceDeath“、“tradedWithVillager“、“trappedChestTriggered“、“treasureFished“和“walkOneCm“。

statcraftItemlt物品數字ID或英文IDgt——對應113更新後的minecraftcraftedlt物品IDgt。如statcraftItem261準則就是玩家合成弓的次數,statcraftItemminecraftbow也是玩家合成弓的次數。注意,使用英文ID,名稱空間就需要作為次1級準則,物品ID就要放到次2級準則中。

statuseItemlt物品數字ID或英文IDgt——對應113更新後的minecraftusedlt物品IDgt,用法和statcraftItemlt物品數字ID或英文IDgt一樣。

statbreakItemlt物品數字ID或英文IDgt——對應113更新後的minecraftbrokenlt物品IDgt,用法也一樣。

statmineBlocklt方塊數字ID或英文IDgt——對應113更新後的minecraftminedlt方塊IDgt,用法仍然一樣。

statkillEntitylt實體IDgt——對應113更新後的minecraftkilledlt實體IDgt。只不過支援的實體ID相比於113更新後的版本要少許多,並且不支援mod實體,因為沒有名稱空間。如statkillEntityVillager就是殺死村民的次數。

statentityKilledBylt實體IDgt——對應113更新後的minecraftkilledbylt實體IDgt,用法和statkillEntitylt實體IDgt一樣。

需要注意,在Java18版本之前,statcraftItem等準則是不支援物品和方塊的ID名(英文ID)的。

本章到此結束。

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

新書推薦

上帝時刻 我在詭異世界修改歷史 我在特雷森開逃那些年 末日滿級玩家 鋒腰搖擺人,足壇以我為模板 開局門將單刀必撲 暗黑破壞神之毀滅