Помогите Получить рандомного игрока без групп.

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

slavik123123123

Старожил
Пользователь
Баллы
143
Имя в Minecraft
Leymooo
Здравствуйте. Как можно сделать выполнение кода например ровно в 13:00, 17:00, 18:30.
Как можно получить рандомного игрока на сервере, у которого нет никаких групп?
Java:
        for (Player p : Bukkit.getOnlinePlayers()) {
            String group = perms.getPrimaryGroup(p).toString().toLowerCase();
            if (group == "default") {
                   ТУТ ИХ НУЖНО ПОЛУЧИТЬ
            }
        }
    }
 
Последнее редактирование:
Попробуй как-то так может быть)
Java:
Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
               
            }
        }, new Date());
PыSы. Вместо new Date() создай дату когда надо выполнить run() (можно с помощью SimpleDateFormat).
 
Попробуй как-то так может быть)
Java:
Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
              
            }
        }, new Date());
PыSы. Вместо new Date() создай дату когда надо выполнить run() (можно с помощью SimpleDateFormat).
Можно пример. А то я чтото не врубаюсь(
 
Можно пример. А то я чтото не врубаюсь(
Java:
        Timer timer = new Timer(); //Создаем таймер
        SimpleDateFormat SDT = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); //Формат даты
        Date date = SDT.parse("2016/05/14 13:38:40"); //Дата
        timer.schedule(new TimerTask() { //Запускаем "шедулер"
            @Override
            public void run() { //Делаем то шо надо :-)
                System.out.println("TEST: " + SDT.format(new Date()));
            }
        }, date); //Вставляем дату когда это событие запустится
Можно)
 
Java:
        Timer timer = new Timer(); //Создаем таймер
        SimpleDateFormat SDT = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); //Формат даты
        Date date = SDT.parse("2016/05/14 13:38:40"); //Дата
        timer.schedule(new TimerTask() { //Запускаем "шедулер"
            @Override
            public void run() { //Делаем то шо надо :-)
                System.out.println("TEST: " + SDT.format(new Date()));
            }
        }, date); //Вставляем дату когда это событие запустится
Можно)
спасибо. работает.
Новый вопрос:
Как можно получить рандомного игрока на сервере, у которого нет никаких групп?
Java:
        for (Player p : Bukkit.getOnlinePlayers()) {
            String group = perms.getPrimaryGroup(p).toString().toLowerCase();
            if (group == "default") {
                   ТУТ ИХ НУЖНО ПОЛУЧИТЬ
            }
        }
    }
 
спасибо. работает.
Новый вопрос:
Как можно получить рандомного игрока на сервере, у которого нет никаких групп?
Java:
        for (Player p : Bukkit.getOnlinePlayers()) {
            String group = perms.getPrimaryGroup(p).toString().toLowerCase();
            if (group == "default") {
                   ТУТ ИХ НУЖНО ПОЛУЧИТЬ
            }
        }
    }
Если нельзя сразу получить список игроков с дефолтной группой, то в этом цикле формируешь список игроков и получаешь рандомный элемент из полученного списка.
 
Java:
    public Player getRandomPlayerFromGroup(String group) {
        ArrayList<Player> playersInGroup = new ArrayList();
        for (Player p : Bukkit.getOnlinePlayers()) {
            String pGroup = perms.getPrimaryGroup(p).toString().toLowerCase();
            if (pGroup.equals(group)) playersInGroup.add(p);
        }
        return playersInGroup.get(new Random().nextInt(playersInGroup.size()));
    }
Как аргумент group посылаешь "default"
 
Вот вариант со stream (java 8). Правда, никто не обещает того, что будет действительно случайный игрок.
Java:
PermissionsEx perms = (PermissionsEx) this.getServer().getPluginManager().getPlugin("PermissionsEx");

public Player getRandomPlayerInGroup(String group) {
    Set<PermissionUser> activeUsers = perms.getPermissionsManager().getGroup(group).getActiveUsers();
    PermissionUser user = activeUsers.stream().findFirst().get();
    return user.getPlayer();
}


А вот с повышенной случайностью вариант:
Java:
PermissionsEx perms = (PermissionsEx) this.getServer().getPluginManager().getPlugin("PermissionsEx");

public Player getRandomPlayerInGroup(String group) {
    //Слишком ленив, чтобы сделать это красиво
    PermissionUser[] tempArray = (PermissionUser[]) perms.getPermissionsManager()
            .getGroup(group).getActiveUsers().toArray();
    List<PermissionUser> activeUsers = Arrays.asList(tempArray);
    Collections.shuffle(activeUsers);
    PermissionUser user = activeUsers.stream().findFirst().get();
    return user.getPlayer();
}
 
Последнее редактирование:
Не могу понять почему не работает (String == String)
Java:
    public void OnChat(AsyncPlayerChatEvent e) {
        System.out.print(perms.getPrimaryGroup(e.getPlayer()).toString().toLowerCase());
        if (perms.getPrimaryGroup(e.getPlayer()).toString().toLowerCase() == "default") {
        System.out.print("AA");
        }
}
Тоесть в консоль нормально выводится default. А при сравнении ничего не происходит.

Код:
[22:16:38 INFO]: default
[22:16:38 INFO]: <Leymooooooooooo> a
>
 
Спасибо всем! Если не сложно, то подскажите как сделать так, чтобы таймер не запускался после нужного времени. А то после перезагрузки сервера таймер почемуто сразуже запускается(Тоесть если время 15:40, а в коде 15:50, то код запустится в 15:50. А если запустить сервер или плагин после 15:50, то почемуто код запустится.)
Java:
        Timer timer = new Timer(); //Создаем таймер
        SimpleDateFormat SDT = new SimpleDateFormat("yyyy/MM/dd hh:mm:ss"); //Формат даты
        Date date = SDT.parse("2016/05/14 13:38:40"); //Дата
        timer.schedule(new TimerTask() { //Запускаем "шедулер"
            @Override
            public void run() { //Делаем то шо надо :-)
                System.out.println("TEST: " + SDT.format(new Date()));
            }
        }, date); //Вставляем дату когда это событие запустится
 
Спасибо всем! Если не сложно, то подскажите как сделать так, чтобы таймер не запускался после нужного времени. А то после перезагрузки сервера таймер почемуто сразуже запускается(Тоесть если время 15:40, а в коде 15:50, то код запустится в 15:50. А если запустить сервер или плагин после 15:50, то почемуто код запустится.)
Ну при включении проверяй, если дата:время уже прошло, то меняй дату на следующий день.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх