Помогите Не работает обнавление скорборда

Статус
Закрыто для дальнейших ответов.

HaloSpartan

Активный участник
Пользователь
Баллы
66
Код:
@EventHandler
    public void killscore(EntityDeathEvent e)
    {
        Player p = e.getEntity().getKiller();
        if(p == null) return;
        updateScoreboard(p);
    }
    
    private void updateScoreboard(Player p) {
        Scoreboard s = p.getScoreboard();
        Objective obj = s.getObjective("stats");
        obj.getScore("§cУбийства: §7" + getKills(p)).setScore(1);
        for(String e : s.getEntries())
        {
            s.resetScores(e);
        }
        
    }

    private int getKills(Player player)
    {
        Scoreboard main = Bukkit.getScoreboardManager().getMainScoreboard();
        Objective obj = main.getObjective("kills");
        if(obj == null) obj = main.registerNewObjective("kills", "totalKillCount");
        return obj.getScore(player.getName()).getScore();
    }
    
    //ВХОД ИГРОКА НА СЕРВЕР
    @EventHandler
    public void join(PlayerJoinEvent e)
    {
        //scoreboard
        Scoreboard newScoreBoard = Bukkit.getScoreboardManager().getNewScoreboard();       
        Objective obj = newScoreBoard.registerNewObjective("stats", "dummy");
        obj.setDisplayName("§6        Masters Cubes        ");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.getScore("§7").setScore(2);
        obj.getScore("§cУбийства: §7" + getKills(e.getPlayer())).setScore(1);
        e.getPlayer().setScoreboard(newScoreBoard);
    }

При заходе игрока на сервер всё работает, то есть скорборд отображается, отображается и кол-во убийств, но при убийстве мобов скорборд пропадает. Не могу разобраться в чём ошибка.
Прошу помочь, благодарю.
 
Код:
@EventHandler
    public void killscore(EntityDeathEvent e)
    {
        Player p = e.getEntity().getKiller();
        if(p == null) return;
        updateScoreboard(p);
    }
   
    private void updateScoreboard(Player p) {
        Scoreboard s = p.getScoreboard();
        Objective obj = s.getObjective("stats");
        obj.getScore("§cУбийства: §7" + getKills(p)).setScore(1);
        for(String e : s.getEntries())
        {
            s.resetScores(e);
        }
       
    }

    private int getKills(Player player)
    {
        Scoreboard main = Bukkit.getScoreboardManager().getMainScoreboard();
        Objective obj = main.getObjective("kills");
        if(obj == null) obj = main.registerNewObjective("kills", "totalKillCount");
        return obj.getScore(player.getName()).getScore();
    }
   
    //ВХОД ИГРОКА НА СЕРВЕР
    @EventHandler
    public void join(PlayerJoinEvent e)
    {
        //scoreboard
        Scoreboard newScoreBoard = Bukkit.getScoreboardManager().getNewScoreboard();      
        Objective obj = newScoreBoard.registerNewObjective("stats", "dummy");
        obj.setDisplayName("§6        Masters Cubes        ");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.getScore("§7").setScore(2);
        obj.getScore("§cУбийства: §7" + getKills(e.getPlayer())).setScore(1);
        e.getPlayer().setScoreboard(newScoreBoard);
    }

При заходе игрока на сервер всё работает, то есть скорборд отображается, отображается и кол-во убийств, но при убийстве мобов скорборд пропадает. Не могу разобраться в чём ошибка.
Прошу помочь, благодарю.
Ты в updateScoreboard() сначала создаешь новый score, а потом очищаешь все существующие, даже новый.
 
Ты в updateScoreboard() сначала создаешь новый score, а потом очищаешь все существующие, даже новый.
Со скорбордам знаком от силы минут 20, можешь подсказать как очищать только старый?
 
Со скорбордам знаком от силы минут 20, можешь подсказать как очищать только старый?
Код:
    @EventHandler
    public void killscore(EntityDeathEvent e)
    {
        Player p = e.getEntity().getKiller();
        if(p == null) return;
        updateScoreboard(p);
    }

    private void updateScoreboard(Player p) {
        Scoreboard s = p.getScoreboard();
        Objective obj = s.getObjective("stats");
        for(String e : s.getEntries())
        {
            s.resetScores(e);
        }
        obj.getScore("§cУбийства: §7" + getKills(p)).setScore(1);
        // Сетишь все свои скоры.
    }

    private int getKills(Player player)
    {
        Scoreboard main = Bukkit.getScoreboardManager().getMainScoreboard();
        Objective obj = main.getObjective("kills");
        if(obj == null) obj = main.registerNewObjective("kills", "totalKillCount");
        return obj.getScore(player.getName()).getScore();
    }

    //ВХОД ИГРОКА НА СЕРВЕР
    @EventHandler
    public void join(PlayerJoinEvent e)
    {
        //scoreboard
        Scoreboard newScoreBoard = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = newScoreBoard.registerNewObjective("stats", "dummy");
        obj.setDisplayName("§6        Masters Cubes        ");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.getScore("§7").setScore(2);
        obj.getScore("§cУбийства: §7" + getKills(e.getPlayer())).setScore(1);
        e.getPlayer().setScoreboard(newScoreBoard);
    }
 
Код:
    @EventHandler
    public void killscore(EntityDeathEvent e)
    {
        Player p = e.getEntity().getKiller();
        if(p == null) return;
        updateScoreboard(p);
    }

    private void updateScoreboard(Player p) {
        Scoreboard s = p.getScoreboard();
        Objective obj = s.getObjective("stats");
        for(String e : s.getEntries())
        {
            s.resetScores(e);
        }
        obj.getScore("§cУбийства: §7" + getKills(p)).setScore(1);
        // Сетишь все свои скоры.
    }

    private int getKills(Player player)
    {
        Scoreboard main = Bukkit.getScoreboardManager().getMainScoreboard();
        Objective obj = main.getObjective("kills");
        if(obj == null) obj = main.registerNewObjective("kills", "totalKillCount");
        return obj.getScore(player.getName()).getScore();
    }

    //ВХОД ИГРОКА НА СЕРВЕР
    @EventHandler
    public void join(PlayerJoinEvent e)
    {
        //scoreboard
        Scoreboard newScoreBoard = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective obj = newScoreBoard.registerNewObjective("stats", "dummy");
        obj.setDisplayName("§6        Masters Cubes        ");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.getScore("§7").setScore(2);
        obj.getScore("§cУбийства: §7" + getKills(e.getPlayer())).setScore(1);
        e.getPlayer().setScoreboard(newScoreBoard);
    }
Спасибо за помощь :3
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх