Помогите Scoreboard не дополняется.

  • Автор темы Автор темы Kloper
  • Дата начала Дата начала

Kloper

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

Вот код:

Код:
@EventHandler
    public void j(PlayerJoinEvent e) {
        Player p = e.getPlayer();
        String pName = e.getPlayer().getName();
                
        Holdings h1 = new Account(p.getName()).getHoldings();
        double balance1 = h1.getBalance();
    Scoreboard newScoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
    Objective o = newScoreboard.registerNewObjective("stats", "dummy");
    o.setDisplayName("§a§l✖§c§lRelease§3§lProject§a§l✖");
    o.setDisplaySlot(DisplaySlot.SIDEBAR);
    o.getScore("§7www.vk.com/releaseproject_mc").setScore(13);
    o.getScore("§4").setScore(12);
    o.getScore("§a§l✔§aУбийства-Мобов: §c" + getKills(p)).setScore(11);
    o.getScore("§a§l✔§aБаланс: §6§l" + h1.getBalance()).setScore(10);
    o.getScore("§a§l✔§aНик: §5" + pName(p)).setScore(9);
    o.getScore("§8").setScore(8);
    o.getScore("§fНа нашем сервере в честь §c§lОБТ,").setScore(7);
    o.getScore("§fДействуют скидки на §c§lдонат-услуги!").setScore(6);
    o.getScore("§f").setScore(5);
    o.getScore("§fМеню сервера - /§3§lmenu").setScore(4);
    o.getScore("§fПравила - /§6§lrules").setScore(3);
    o.getScore("§1").setScore(2);
    o.getScore("§7www.vk.com/releaseproject_mc").setScore(1);
    e.getPlayer().setScoreboard(newScoreboard);

    }







    @SuppressWarnings("unused")
    private Score pName(Player p) {
        String pName = p.getName();
        return null;
    }

    
    @EventHandler
    public void xzxz(BlockBreakEvent e) {
        Player p = e.getPlayer();
        if(p == null) return;
        updateScoreboard(p);
    }





    @EventHandler
    public void xz(EntityDeathEvent e) {
    Player p = e.getEntity().getKiller();
    if(p == null) return;
    updateScoreboard(p);
    }
    

    private void updateScoreboard(Player p) {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
            
            @Override
            public void run() {
                Scoreboard s = p.getScoreboard();
                for (String e : s.getEntries()) {
                    s.resetScores(e);
                }
                
                Holdings h1 = new Account(p.getName()).getHoldings();
                Objective o = s.getObjective("stats");
                o.getScore("§7www.vk.com/releaseproject_mc").setScore(13);
                o.getScore("§4").setScore(12);
                o.getScore("§a§l✔§aУбийства-Мобов: §c" + getKills(p)).setScore(11);
                o.getScore("§a§l✔§aБаланс: §6§l" + h1.getBalance()).setScore(10);
                o.getScore("§a§l✔§aНик: §5" + pName(p)).setScore(9);
                o.getScore("§8").setScore(8);
                o.getScore("§fНа нашем сервере в честь §c§lОБТ,").setScore(7);
                o.getScore("§fДействуют скидки на §c§lдонат-услуги!").setScore(6);
                o.getScore("§f").setScore(5);
                o.getScore("§fМеню сервера - /§3§lmenu").setScore(4);
                o.getScore("§fПравила - /§6§lrules").setScore(3);
                o.getScore("§1").setScore(2);
                o.getScore("§7www.vk.com/releaseproject_mc").setScore(1);
            }
            }, 0L, 20L);
            
        }
                
    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 j(PlayerJoinEvent e) {
        Player p = e.getPlayer();
        String pName = e.getPlayer().getName();
               
        Holdings h1 = new Account(p.getName()).getHoldings();
        double balance1 = h1.getBalance();
    Scoreboard newScoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
    Objective o = newScoreboard.registerNewObjective("stats", "dummy");
    o.setDisplayName("§a§l✖§c§lRelease§3§lProject§a§l✖");
    o.setDisplaySlot(DisplaySlot.SIDEBAR);
    o.getScore("§7www.vk.com/releaseproject_mc").setScore(13);
    o.getScore("§4").setScore(12);
    o.getScore("§a§l✔§aУбийства-Мобов: §c" + getKills(p)).setScore(11);
    o.getScore("§a§l✔§aБаланс: §6§l" + h1.getBalance()).setScore(10);
    o.getScore("§a§l✔§aНик: §5" + pName(p)).setScore(9);
    o.getScore("§8").setScore(8);
    o.getScore("§fНа нашем сервере в честь §c§lОБТ,").setScore(7);
    o.getScore("§fДействуют скидки на §c§lдонат-услуги!").setScore(6);
    o.getScore("§f").setScore(5);
    o.getScore("§fМеню сервера - /§3§lmenu").setScore(4);
    o.getScore("§fПравила - /§6§lrules").setScore(3);
    o.getScore("§1").setScore(2);
    o.getScore("§7www.vk.com/releaseproject_mc").setScore(1);
    e.getPlayer().setScoreboard(newScoreboard);

    }







    @SuppressWarnings("unused")
    private Score pName(Player p) {
        String pName = p.getName();
        return null;
    }

   
    @EventHandler
    public void xzxz(BlockBreakEvent e) {
        Player p = e.getPlayer();
        if(p == null) return;
        updateScoreboard(p);
    }





    @EventHandler
    public void xz(EntityDeathEvent e) {
    Player p = e.getEntity().getKiller();
    if(p == null) return;
    updateScoreboard(p);
    }
   

    private void updateScoreboard(Player p) {
        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
           
            @Override
            public void run() {
                Scoreboard s = p.getScoreboard();
                for (String e : s.getEntries()) {
                    s.resetScores(e);
                }
               
                Holdings h1 = new Account(p.getName()).getHoldings();
                Objective o = s.getObjective("stats");
                o.getScore("§7www.vk.com/releaseproject_mc").setScore(13);
                o.getScore("§4").setScore(12);
                o.getScore("§a§l✔§aУбийства-Мобов: §c" + getKills(p)).setScore(11);
                o.getScore("§a§l✔§aБаланс: §6§l" + h1.getBalance()).setScore(10);
                o.getScore("§a§l✔§aНик: §5" + pName(p)).setScore(9);
                o.getScore("§8").setScore(8);
                o.getScore("§fНа нашем сервере в честь §c§lОБТ,").setScore(7);
                o.getScore("§fДействуют скидки на §c§lдонат-услуги!").setScore(6);
                o.getScore("§f").setScore(5);
                o.getScore("§fМеню сервера - /§3§lmenu").setScore(4);
                o.getScore("§fПравила - /§6§lrules").setScore(3);
                o.getScore("§1").setScore(2);
                o.getScore("§7www.vk.com/releaseproject_mc").setScore(1);
            }
            }, 0L, 20L);
           
        }
               
    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();
    }
Дак сделай шедулер и обновляй переменные
 
так ниже же я обновляю их, в updateScoreboard
Ты обновляешь борд только когда игрок заходит на сервер...
И все, больше борд никогда не обновится. Тебе нужно шедулером его обновлять.
 
Ты обновляешь борд только когда игрок заходит на сервер...
И все, больше борд никогда не обновится. Тебе нужно шедулером его обновлять.
как именно его обновлять, я же так же его обновляю при убийстве мобов.
 
как именно его обновлять, я же так же его обновляю при убийстве мобов.
Ты сейчас при убийствах, ломания или установке блоков, каждый раз запускаешь новый шедулер на обновление... то есть сломаешь 20 блоков, запустишь 20 шедулеров, которые будут тебе обновлять борд..
Запускай шедулер после запуска плагина и убирай все ивенты кроме входа.
При входе создавай боард и обновляй игроку его. А шедулер сам указанное время будет у всех его обновлять.
 
Ты сейчас при убийствах, ломания или установке блоков, каждый раз запускаешь новый шедулер на обновление... то есть сломаешь 20 блоков, запустишь 20 шедулеров, которые будут тебе обновлять борд..
Запускай шедулер после запуска плагина и убирай все ивенты кроме входа.
При входе создавай боард и обновляй игроку его. А шедулер сам указанное время будет у всех его обновлять.
спасибо
 
Назад
Верх