Помогите Как занести онлайн в переменную

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

Darth Udko

Старожил
Пользователь
Баллы
103
Пытаюсь занести онлайн сервера в переменную, чтобы в будущем ее засунуть в шедуллер чтобы она там обновлялась, но вот беда, не получается(
Код:
long onlineCount = Bukkit.getOnlinePlayers().size();
Код:
@Override
            public void run() {
                long online = Bukkit.getOnlinePlayers().size();
 
Или может можно как то проще обновлять скорборд вместе с онлайном?
 
Весь код шедулера бы.
 
При срабатывании ивента "игрок вышел" отнимай у этой переменной 1,при входе прибавляй onlineCount++ .
 
Весь код шедулера бы.
Код:
BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
        Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                long online = Bukkit.getOnlinePlayers().size();
                Integer i = A.size();
                if(i == 1) {
                    objective.setDisplayName(Colors("&b&lPlugin"));
                    A.add("A");
                }
                if(i == 2) {
                    objective.setDisplayName(Colors("&5&lPlugin"));
                    A.add("B");
                }
                if(i == 3) {
                    objective.setDisplayName(Colors("&d&lPlugin"));
                    A.add("C");
                }
                if(i == 3) {
                    A.clear();
                    A.add("1");
                }
            }
        }, 0L, 100L);
        player.setScoreboard(board);
    }
ДисплейНейм обновляется, а вот как онлайн обновить?
Код:
int online = Bukkit.getOnlinePlayers().size(); //Узнаю количество игроков онлайн
online.setSuffix(online); //Вставляю переменную, но пишет что переменная должна быть String
За место int пробывал ставить double не помогло :(
 
Последнее редактирование:
String.valueOf(online), Integer online = ... ; online.toString (не уверен что так), online.setSuffix (""+online)
Выбирай что хочешь.
 
String.valueOf(online), Integer online = ... ; online.toString (не уверен что так), online.setSuffix (""+online)
Выбирай что хочешь.
Код:
Integer onlineCount = Bukkit.getOnlinePlayers().size();
        String.valueOf(onlineCount);
Не работают способы. Мне нужно к тиме скорборда привязать префикс.(если кто не понял)
 
а нафиг, если можно всегда напрямую актуальные данные брать? даже из любого таймера, даже из асинхронного. ничего плохого не случится -_-

Bukkit.getOnlinePlayers().size()

а перевести переменную в стринг (без конката) можно через String.valueOf(int)
 
а нафиг, если можно всегда напрямую актуальные данные брать? даже из любого таймера, даже из асинхронного. ничего плохого не случится -_-

Bukkit.getOnlinePlayers().size()

а перевести переменную в стринг (без конката) можно через String.valueOf(int)
Щас вот сделал вот так
Код:
final Team online = board.registerNewTeam("online");
              
        Objective objective = board.registerNewObjective("Scoreboard", "dummy");
        objective.setDisplaySlot(DisplaySlot.SIDEBAR);
      
        Score score = objective.getScore(ChatColor.GOLD + "Онлайн: " + online);
        score1.setScore(1);
      
        BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
        Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {          
            @Override
            public void run() {
                int onlineCount = Bukkit.getOnlinePlayers().size();
                online.setSuffix("§e" + onlineCount);
             
                for (Player player : Bukkit.getOnlinePlayers()){
                    player.setScoreboard(board);
                }
            }
        }, 0L, 100L);
    }
Так скорборд вообще не показывается теперь ;D
а нафиг, если можно всегда напрямую актуальные данные брать? даже из любого таймера, даже из асинхронного. ничего плохого не случится -_-

Bukkit.getOnlinePlayers().size()

а перевести переменную в стринг (без конката) можно через String.valueOf(int)
Так я таким методом беру данные онлайна, но он обновляется только для тех, кто заходит. Например 1 игрок зашел пишет онлайн 1, 2 игрок заходит ему пишет онлайн 2, а 1 игроку онлайн не обновляется
Вроде как сделал, но криво..
d1a887b9bee4.jpg

Теперь у меня при входе игрока создается новая строка с обновленным онлайном :D
Возможно я *баный наркоман, но вот как я это сделал
Код:
BukkitScheduler Scheduler = Bukkit.getServer().getScheduler();
        Scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                Score score1 = objective.getScore(ChatColor.GREEN + "Онлайн: " + Bukkit.getOnlinePlayers().size() + "/" + Bukkit.getMaxPlayers());
                score1.setScore(2);
                Integer i = A.size();
                if(i == 1) {
                    objective.setDisplayName(Colors("&b&lPlugin"));
                    A.add("A");
                }
                if(i == 2) {
                    objective.setDisplayName(Colors("&5&lPlugin"));
                    A.add("B");
                }
                if(i == 3) {
                    objective.setDisplayName(Colors("&d&lPlugin"));
                    A.add("C");
                }
                if(i == 3) {
                    A.clear();
                    A.add("1");
                }
            }
        }, 0, 5);
        player.setScoreboard(board);
    }

Мне никто не поможет? :(
Закрыто. Уже сам решил все
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх