Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

Помогите Топ игроков (по счету) в GUI.

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

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

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Здравствуйте, давно я тут не был, однако перейдём к проблеме.

    Мы имеем конфигурационный файл(конфиг), в нем есть список игроков и их счет.
    Код:
    players:
        udq: 135163
        notch: 1261
        huahwi: 1893
        russianpvp: 81934
    Так, нам нужно отсортировать всех этих игроков, чтобы в GUI выставить например 9 наивысших счетов, среди игроков. Т.е. нужно лучшие 9 счетов из players взять в GUI в виде головы со скином игрока. Эту сортировку я засунул в application, и получил
    Код:
    public static void main(String args[]) {
        int i;
        int large[] = new int[9];
        List<Integer> list = Arrays.asList(1,2,3,4,5);
        int array[] = new int[list.toArray(new Integer[0]).length];
        for(int j = 0; j < list.toArray(new Integer[0]).length; j++)
            array[j] = list.toArray(new Integer[0])[j].intValue();
        int max = 0, index;
        for (int j = 0; j < 9; j++) {
            max = array[0];
            index = 0;
            for (i = 1; i < array.length; i++) {
                if (max < array[i]) {
                    max = array[i];
                    index = i;
                }
            }
            large[j] = max;
            array[index] = Integer.MIN_VALUE;
            if(large[j] > 0) System.out.println("Самое больше " + Integer.valueOf(j+1) +  "-е число: " + large[j]);
        }
    }
    Проблема в том, что при таком коде, я не смогу получить ники игроков, обладающих этим высшим(1-9) счетом. И отсортировать тоже не получается. Перевести лист в массив у меня получилось, но нам нужно запихнуть в лист числа из конфига. Не знаю почему, но когда я это делаю, то они просто не сортируются. Все числа, которые я взял из конфига стали топ-1.

    Если я буду писать число не из конфига, а вручную (как в том коде (1,2,3,4,5)), то все нормально.
     
    Последнее редактирование: 17 мар 2017
  2. Хостинг MineCraft
    <
  3. DiamondDen

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

    Баллы:
    76
    Skype:
    danil_20034
    Имя в Minecraft:
    DiamondDen
    ****ь ты говно кодер, иди java учи....
    Мои глаза....
     
  4. Dymeth

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

    Баллы:
    76
    Почитай про компараторы в Java
     
  5. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Что твои глаза? Смысл ты сюда пишешь, если твой мозг настолько крошечный, что ты даже написать грамотно не можешь? Почему ты вообще "java" на английском пишешь? Все на русском, а "java" на английском? Найс. Еще вопрос, зачем ты написал про глаза с новой строки?! Почему троеточие ты написал из 4-х точек?

    Неужто ты реально настолько убогий, как личность?
     
  6. gamerforEA

    gamerforEA Старожил Пользователь

    Баллы:
    143
    Skype:
    sk2000sk1
    Имя в Minecraft:
    gamerforEA_MCPC
    Код:
    public static LinkedHashMap<String, Integer> getTopPlayers(Map<String, Integer> map, int amount)
    {
       LinkedHashMap<String, Integer> result = new LinkedHashMap<>();
       Comparator<? super Map.Entry<String, Integer>> comparator = (e1, e2) -> -e1.getValue().compareTo(e2.getValue());
       map.entrySet().stream().sorted(comparator).limit(amount).forEach(e -> result.put(e.getKey(), e.getValue()));
       return result;
    }
    Насчёт чтения чисел из конфига:
    Узнать все ключи (в данном случае это будут ники игроков) в секции конфига можно через ConfigurationSection.getKeys(false), а дальше остаётся только получить по ним значения.
     
  7. Автор темы
    iD3LSY

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

    Баллы:
    46
    Имя в Minecraft:
    opy
    Тема закрывается. Спасибо, gamerforEa <3
     
Статус темы:
Закрыта.

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