我有使用Bukkit API記分牌取出得分的一個大問題。這裏是我的代碼:重設客觀評分?
ScoreBoard board;
Objective obj = board.registerNewObjective("foo", "dummy");
obj.getScore("bar").setScore(5);
// ...
現在,我需要從記分牌(目標)刪除"bar"
得分。我怎麼做?我做了研究,並且找不到可以從目標中刪除現有分數條目的Bukkit API中的方法。
我有使用Bukkit API記分牌取出得分的一個大問題。這裏是我的代碼:重設客觀評分?
ScoreBoard board;
Objective obj = board.registerNewObjective("foo", "dummy");
obj.getScore("bar").setScore(5);
// ...
現在,我需要從記分牌(目標)刪除"bar"
得分。我怎麼做?我做了研究,並且找不到可以從目標中刪除現有分數條目的Bukkit API中的方法。
條目您可以使用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());
}
也許記分牌的resetScores()
方法可以幫助(resetScores of Scoreboard)
另外的目的能夠實現自己的目標的unregister()
方法? (unregister of Objective)
我相信第二種方法正是你想要的。
看看Scoreboard.resetScores(String)
。
刪除所有分數這個記分牌