执行命令时我的记分板没有停止

问题描述

你好,正在读这篇文章的人, 我正在开发一个插件,该插件可以使您增加死亡人数,但是对于我一生,我无法弄清楚如何从玩家中删除记分牌,我正在尝试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());