当我执行命令时,我的记分牌没有停止
My Scoreboard is not stoppping when i do the command
向正在阅读本文的人问好,
我正在开发一个插件,它可以让你在死亡时添加一个记分牌,但对于我来说,我无法弄清楚如何从玩家身上删除记分牌,我正在尝试 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());
向正在阅读本文的人问好, 我正在开发一个插件,它可以让你在死亡时添加一个记分牌,但对于我来说,我无法弄清楚如何从玩家身上删除记分牌,我正在尝试 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());