跳到正文
本頁目錄

📝 計分板 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]

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]

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]

JavaScript
//对于一个玩家对象pl
pl.deleteScore("what");

移除一個已存在的計分項

mc.removeScoreObjective(name)

  • 參數:

  • name : String
    計分項名稱

  • 返回值:是否移除成功

  • 返回值類型:Boolean

此接口的作用類似命令 /scoreboard objectives remove <name>

使計分項停止顯示

mc.clearDisplayObjective(slot)

  • 參數:

  • slot : String
    顯示槽位名稱字符串,可以為"sidebar"/"belowname"/"list"

  • 返回值:是否清除成功

  • 返回值類型:Boolean