2014-10-01 26 views
2

我有使用Bukkit API記分牌取出得分的一個大問題。這裏是我的代碼:重設客觀評分?

ScoreBoard board; 
Objective obj = board.registerNewObjective("foo", "dummy"); 
obj.getScore("bar").setScore(5); 
// ... 

現在,我需要從記分牌(目標)刪除"bar"得分。我怎麼做?我做了研究,並且找不到可以從目標中刪除現有分數條目的Bukkit API中的方法。

回答

3

條目您可以使用Scoreboard.resetScores(String)如果只存在於客觀上爲"bar"的條目,並重新將比分仍然是可行的(例如,不是在另一個Objective包含項):

{ 
    Objective obj; 
    // ... 
    obj.getScoreboard().resetScores("bar"); 
} 

否則,您可以更換目標,而忽略了項刪除:

{ 
    Objective obj; 
    // ... 
    Scoreboard sb = obj.getScoreboard(); 
    final HashMap<String, Integer> map = new HashMap<>(); 
    for (String entry : sb.getEntries()) 
     map.put(entry, obj.getScore(entry).getScore(); 
    obj.unregister(); 
    obj = sb.registerNewObjective("foo", "dummy"); 
    for (final Entry<String, Integer> entry : map.entrySet()) 
     obj.getScore(entry.getKey()).setScore(entry.getValue()); 
}