问题描述
你好,正在读这篇文章的人, 我正在开发一个插件,该插件可以使您增加死亡人数,但是对于我一生,我无法弄清楚如何从玩家中删除记分牌,我正在尝试player.setscoreboard(null);但这似乎不起作用,是否有人可以告诉我如何删除计分板,这就是我所拥有的
List<String> pop = new ArrayList<String>();
public boolean onCommand(CommandSender sender,Command cmd,String label,String[] args) {
if (label.equalsIgnoreCase("scorecount")) {
if (!(sender instanceof Player)) {
sender.sendMessage("You cannot do that console!");
return true;
}
if (sender.hasPermission("scorecount.use")) {
if (args.length == 3) {
this.sendInvalid(sender);
Player pvp = Bukkit.getPlayer((String)args[1]);
if (pvp == null) {
sender.sendMessage((Object)ChatColor.RED + "Player " + args[1] + " is not online.");
return true;
}
if (args[0].equalsIgnoreCase("add")) {
if (pop.contains(pvp.getName())) {
sender.sendMessage((Object)ChatColor.RED + pvp.getName() + " Already has a scoreList!");
return true;
}
pop.add(pvp.getName());
sender.sendMessage((Object)ChatColor.GREEN + pvp.getName() + " Now has the scoreList!");
scoreboardManager manager = Bukkit.getscoreboardManager();
scoreboard board = (scoreboard) manager.getNewscoreboard();
Objective obj = board.registerNewObjective("pvpscoreboard","dummy",ChatColor.translatealternateColorCodes('&',"&a&l<< &2&lPvP &a&l>>"));
obj.setdisplaySlot(displaySlot.SIDEBAR);
score score = obj.getscore("____________");
score.setscore(3);
score score2 = obj.getscore(ChatColor.AQUA + "Online Players: " + ChatColor.DARK_AQUA + Bukkit.getonlinePlayers().size());
score2.setscore(2);
score score3 = obj.getscore(ChatColor.AQUA + "Total Kills(mobs): " + ChatColor.DARK_AQUA + pvp.getStatistic(Statistic.MOB_KILLS));
score3.setscore(3);
pvp.setscoreboard(board);
pop.add(pvp.getName());
return true;
}
} else if (args.length == 2) {
Player player = Bukkit.getPlayer((String)args[1]);
if (player == null) {
sender.sendMessage((Object)ChatColor.RED + "Player " + args[1] + " is not online.");
return true;
}
if (args[0].equalsIgnoreCase("remove")) {
sender.sendMessage("Help");
Player pvp = Bukkit.getPlayer((String)args[1]);
pvp.setscoreboard(null);
pop.remove(pvp.getName());
sender.sendMessage((Object)ChatColor.GREEN + pvp.getName() + " no Longer has a Socrecount!");
pvp.setscoreboard(null);
pop.remove(pvp.getName());
return true;
}
}
}
}
return false;
}
private void sendInvalid(CommandSender sender) {
sender.sendMessage((Object)ChatColor.RED + "Invalid usage. Please use:");
sender.sendMessage((Object)ChatColor.RED + "/scorecount add <player>");
sender.sendMessage((Object)ChatColor.RED + "/scorecount remove <player>");
}
}
}```
解决方法
我以前没有使用过Bukkit,也没有找到API文档,但是this教程建议您需要执行以下操作来“删除”玩家的记分牌:
pvp.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());