Помогите Личный скорборд отображается всем

kungermu

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
kungermu
Приветствую. Пишу плагин со скорбордом, столкнулся с проблемой, что скорборд обновляется для всех во время вызова, т.е. скорборда игрока Player1 обновляется и становиться у всех игроков идентичным.

Код обновления:
Код:
 public static void updateScoreboard(Player p)
  {
    String playerName = p.getName();
    File userdata = new File(Bukkit.getServer().getPluginManager().getPlugin("неважно").getDataFolder(), File.separator + "users");
    File user = new File(userdata, File.separator + playerName + ".yml");
    FileConfiguration data = YamlConfiguration.loadConfiguration(user);
    p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
    Scoreboard playerBoard = p.getScoreboard();
    for (Objective obj : playerBoard.getObjectives()) {
      obj.unregister();
    }
    Objective stats = playerBoard.registerNewObjective("§e§lневажно", "dummy");
    stats.setDisplaySlot(DisplaySlot.SIDEBAR);
    stats.getScore("§8неважно").setScore(6);
    stats.getScore("§8").setScore(5);
    stats.getScore("§b§lСтатистика").setScore(4);
    stats.getScore("   §fМонеты: §6" + data.getInt("stats.coins")).setScore(3);
    stats.getScore("   §fЗолото: §e" + data.getInt("stats.gold")).setScore(2);
    stats.getScore("§8§l").setScore(1);
    stats.getScore("§eневажно").setScore(0);
  }

Код вызова обновления:
Код:
ScoreBoard api = new ScoreBoard();
Player p = e.getPlayer();

api.updateScoreboard(p);
 
А нафига ты делаешь ScoreBoard api = new ScoreBoard();? У тебя метод статичный, да и конфиг даже не кешируешь.
 
Насчет статичности метода и правда ступил, поправлю, авось заработает.
 
А еще ты нигде не создаешь новый скорборд и не присваиваешь его игроку.
Пересоздание я думаю неособо требуется, скорборд и так хорошо обновляется, тут лишь проблема с тем, что всем показывалось, щас прикрутил для каждого игрока свой team в скорборде, думаю проблема исчезнет. Что скажешь насчет данного?

Код:
 public static void updateScoreboard(Player p)
  {
    String playerName = p.getName();
    File userdata = new File(Bukkit.getServer().getPluginManager().getPlugin("неважно").getDataFolder(), File.separator + "users");
    File user = new File(userdata, File.separator + playerName + ".yml");
    FileConfiguration data = YamlConfiguration.loadConfiguration(user);
    p.getScoreboard().clearSlot(DisplaySlot.SIDEBAR);
    Scoreboard playerBoard = p.getScoreboard();
    for (Objective obj : playerBoard.getObjectives()) {
      obj.unregister();
    }
    Objective stats = playerBoard.registerNewObjective("§e§lневажно", "dummy");
    if (playerBoard.getTeam(playerName) == null) {
      Team team = playerBoard.registerNewTeam(playerName);
      team.setDisplayName(playerName);
    }
    stats.setDisplaySlot(DisplaySlot.SIDEBAR);
    stats.getScore("§8неважно").setScore(6);
    stats.getScore("§8").setScore(5);
    stats.getScore("§b§lСтатистика").setScore(4);
    stats.getScore("   §fМонеты: §6" + data.getInt("stats.coins")).setScore(3);
    stats.getScore("   §fЗолото: §e" + data.getInt("stats.gold")).setScore(2);
    stats.getScore("§8§l").setScore(1);
    stats.getScore("§eневажно").setScore(0);
    playerBoard.getTeam(playerName).addPlayer(p);
  }
}

или лучше все-же для каждого свое название вместо dummy?
 
Назад
Верх