1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем HaloSpartan, 14 ноя 2018.

Статус темы:
Закрыта.
  1. Автор темы
    HaloSpartan

    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);
        }
    
    При заходе игрока на сервер всё работает, то есть скорборд отображается, отображается и кол-во убийств, но при убийстве мобов скорборд пропадает. Не могу разобраться в чём ошибка.
    Прошу помочь, благодарю.
     
  2. DeethzzCoder

    DeethzzCoder Активный участник Пользователь

    Баллы:
    76
    Ты в updateScoreboard() сначала создаешь новый score, а потом очищаешь все существующие, даже новый.
     
  3. Автор темы
    HaloSpartan

    HaloSpartan Активный участник Пользователь

    Баллы:
    66
    Со скорбордам знаком от силы минут 20, можешь подсказать как очищать только старый?
     
  4. DeethzzCoder

    DeethzzCoder Активный участник Пользователь

    Баллы:
    76
    Код:
        @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);
        }
     
  5. Автор темы
    HaloSpartan

    HaloSpartan Активный участник Пользователь

    Баллы:
    66
    Спасибо за помощь :3
     
Статус темы:
Закрыта.

Поделиться этой страницей