使用Bukkit API从记分板中删除分数时遇到了很大的问题。这是我的代码:
ScoreBoard board;
Objective obj = board.registerNewObjective("foo", "dummy");
obj.getScore("bar").setScore(5);
// ...
现在,我需要从记分板(目标)中删除"bar"
分数。我怎么做?我做了研究,并且无法在Bukkit API中找到一个方法来删除目标中的现有分数条目。
答案 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)
。
删除此记分板上的条目的所有分数