从目标重置分数?

时间:2014-10-01 04:03:05

标签: java bukkit

使用Bukkit API从记分板中删除分数时遇到了很大的问题。这是我的代码:

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

现在,我需要从记分板(目标)中删除"bar"分数。我怎么做?我做了研究,并且无法在Bukkit API中找到一个方法来删除目标中的现有分数条目。

3 个答案:

答案 0 :(得分:3)

如果"bar"的条目仅存在于目标中,则可以使用Scoreboard.resetScores(String),并且重置分数将保持可行(例如,当另一个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());
}

答案 1 :(得分:2)

也许记分板的resetScores()方法可以提供帮助(resetScores of Scoreboard

或者,目标的unregister()方法可以实现您的目标吗? (unregister of Objective

我相信第二种方法完全符合您的要求。

答案 2 :(得分:2)

看看Scoreboard.resetScores(String)

  

删除此记分板上的条目的所有分数