📝 計分板 API
在腳本引擎中,使用「計分項對象」來操作和獲取某一個特定的計分項變量,並且提供了很多其他操作計分板的通用接口
MC使用 計分項 作為計分板系統的核心,每一個計分項擁有一個名字,並可以用來跟蹤特定的玩家、實體甚至字符串目標。計分項中,記錄著每一個跟蹤目標各自對應的分數。
獲取一個計分項對象
通過下面的接口,來獲取一個計分項對象,並進行相關操作
創建一個新的計分項
mc.newScoreObjective(name,displayName)
- 參數:
- name :
String
計分項名稱 - displayName :
String
計分項顯示名稱 - 返回值:新增創建的計分項對象
- 返回值類型:
Objective - 如果返回
Null,則代表創建失敗
此接口的作用類似命令 /scoreboard objectives add <name> <displayName> dummy
獲取某個已存在的計分項
mc.getScoreObjective(name)
- 參數:
- name :
String
要獲取的計分項名稱 - 返回值:對應的計分項對象
- 返回值類型:
Objective - 如果返回
Null,則代表計分項不存在
獲取所有計分項
mc.getAllScoreObjectives()
- 返回值:計分板系統記錄的所有計分項對象
- 返回值類型:
Array<Objective,Objective,...>
此接口的作用類似命令 /scoreboard objectives list
獲取某個處於顯示狀態的計分項
mc.getDisplayObjective(slot)
- 參數:
- slot :
String
待查詢的顯示槽位名稱,可以為"sidebar"/"belowname"/"list" - 返回值:正在
slot槽位顯示的計分項 - 返回值類型:
Objective - 如果返回
Null,則代表對應槽位未顯示計分項
計分項對象 - 屬性
每一個計分項對象都包含一些固定的對象屬性。對於某個特定的計分項對象ob,有以下這些屬性
| 屬性 | 含義 | 類型 |
|---|---|---|
| ob.name | 計分項名稱 | String |
| ob.displayName | 計分項的顯示名稱 | String |
這些對象屬性都是隻讀的,無法被修改
計分項對象 - 函數
每一個計分項對象都包含一些可以執行的成員函數(成員方法)。對於某個特定的計分項對象ob,可以通過以下這些函數對這個計分項進行一些操作
獲取跟蹤的某個目標的分數
ob.getScore(target)
- 參數:
- target :
Player/String
待查詢的跟蹤目標,可傳入玩家對象或者任意字符串 - 返回值:該目標/玩家在此計分項中的分數
- 返回值類型:
Integer
使用前請保證計分項存在
修改某個目標的分數
設置分數 ob.setScore(target,score)
增加分數 ob.addScore(target,score)
減少分數 ob.reduceScore(target,score)
- 參數:
- target :
Player/String
計分項跟蹤的目標,可傳入玩家對象或者任意字符串 - score :
Integer
要設置/增加/減少的分數 - 返回值:該目標在經過設置/增加/減少操作後的分數
- 返回值類型:
Integer - 如果返回
Null,則代表操作失敗
Warning
若計分項不存在,則會嘗試創建計分項,此時會返回0(當target為String時)或null(當target為Player時)
原因參見: #971
停止跟蹤某個目標
ob.deleteScore(target)
- 參數:
- target :
Player/String
計分項跟蹤的目標,可傳入玩家對象或者任意字符串 - 返回值:是否停止成功
- 返回值類型:
Boolean
停止跟蹤將直接刪除這個目標對應的計分項數值,下次如需要訪問需要再次創建
設置計分項的顯示狀態
ob.setDisplay(slot[,sortOrder=0])
- 參數:
- slot :
String
顯示槽位名稱字符串,可以為"sidebar"/"belowname"/"list" - sortOrder :
Integer
(可選參數)排序方式,可以為0(升序)或1(降序),默認值為0 - 返回值:是否設置成功
- 返回值類型:
Boolean
其他計分板 API
下面這些API提供了更多操作計分板系統的API
獲取在線玩家計分項的分數(方便函數)
pl.getScore(name)
- 參數:
- name :
String
計分項名稱 - 返回值:計分板上的數值
- 返回值類型:
Integer
使用前,必須保證對應的計分項已經存在
[JavaScript]
//对于一个玩家对象pl
log("You have money:",pl.getScore("money"));獲取玩家計分項的分數(可查詢離線玩家計分板)
mc.getPlayerScore(uuid, name)
- 參數:
- uuid :
String玩家的UUID - name :
String
計分項名稱 - 返回值:計分板上的數值
- 返回值類型:
Integer
修改在線玩家計分項的分數(方便函數)
設置分數 pl.setScore(name,value)
增加分數 pl.addScore(name,value)
減少分數 pl.reduceScore(name,value)
- 參數:
- name :
String
計分項名稱 - value :
Integer
要設置 / 增加 / 減少的數值 - 返回值:是否設置成功
- 返回值類型:
Boolean
若計分項不存在,則會返回false並創建計分項
[JavaScript]
//对于一个玩家对象pl
pl.setScore("money",10000);
pl.addScore("money",100);
pl.reduceScore("money",50);修改玩家計分項的分數(可修改離線玩家計分板)
設置分數 mc.setPlayerScore(uuid, name, value)
增加分數 mc.addPlayerScore(uuid, name, value)
減少分數 mc.reducePlayerScore(uuid, name, value)
移除分數 mc.deletePlayerScore(uuid, name)
- 參數:
- uuid :
String
玩家的UUID - name :
String
計分項名稱 - value :
Integer
要設置 / 增加 / 減少的數值 - 返回值:是否設置成功
- 返回值類型:
Boolean
玩家停止跟蹤計分項(方便函數)
pl.deleteScore(name)
- 參數:
- name :
String
計分項名稱 - 返回值:是否移除成功
- 返回值類型:
Boolean
使用前,必須保證對應的計分項已經存在
[JavaScript]
//对于一个玩家对象pl
pl.deleteScore("what");移除一個已存在的計分項
mc.removeScoreObjective(name)
-
參數:
-
name :
String
計分項名稱 -
返回值:是否移除成功
-
返回值類型:
Boolean
此接口的作用類似命令 /scoreboard objectives remove <name>
使計分項停止顯示
mc.clearDisplayObjective(slot)
-
參數:
-
slot :
String
顯示槽位名稱字符串,可以為"sidebar"/"belowname"/"list" -
返回值:是否清除成功
-
返回值類型:
Boolean