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

Расположение предметов в инвентаре

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

  1. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Здравствуйте, у меня есть список с играми. (Мапа). В этих играх есть методы получения количества людей в игре. Мне нужно расположить предметы в инвентаре что-бы количество предмета была от большого к меньшему по количеству игроков в игре. То есть: https://prnt.sc/jtji50
    И вот ещё кодом:

    Код:
    Inventory inv = Bukkit.createInventory(this, 54, ""); //Инвентарь
    Map<String, Game> games = GameManager.getAllGame(); //Мапа с играми (String - индентификатор игры, Game - сама игра)
    for (Game game: games.values()) {
        game.getInGame().size(); //Метод получения игроков (количества)
    }
    Сорри, но по другому не могу объяснить, попытайтесь понять :D
    Желательно все кодом.
     
  2. Mr Hosting
  3. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Что тебе стремно ?)
     
  4. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    PHP:
    Map<GameIntegergamesMap games.entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getValue().getInGame().size()));
    TreeSet<GamegamesSet = new TreeSet<>(gamesMap.entrySet().stream().sorted(Map.Entry.<GameInteger>comparingByValue()).map(entry -> entry.getKey()).collect(Collectors.toSet()));
    gamesSet - твой отсортированный по кол-ву игроков сет с играми.
     
  5. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Код:
    [12:10:54 WARN]: [RFLGmq] Task #440 for RFLGmq v2.9 generated an exception
    java.lang.ClassCastException: null
    P.S - юзаю это в bukkitrunnable
     
  6. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Весь код покажи, я вроде ничего нигде не кастил.
     
  7. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Код:
    public static void reload() {
            new BukkitRunnable() {
    
                @Override
                public void run() {
                    Map<String, Game> games = GameManager.getAllGame();
                    Map<Game, Integer> gamesMap = games.entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getValue().getInGame().size()));
                    TreeSet<Game> gamesSet = new TreeSet<>(gamesMap.entrySet().stream().sorted(Map.Entry.<Game, Integer>comparingByValue()).map(entry -> entry.getKey()).collect(Collectors.toSet()));
                }
    
            }.runTaskTimer(RFL.getPlugin(RFL.class), 0, 20);
        }
     
  8. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    На строке с TreeSet ошибка вылетает?
     
  9. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Строка не указана. Я тебе полную ошибку кинул
     
  10. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Убираю твой код, ошибки нет
     
  11. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    PHP:
    Map<GameIntegergamesMap games.entrySet().stream().collect(Collectors.toMap(entry -> entry.getValue(), entry -> entry.getValue().getInGame().size()));
    SortedSet<GamegamesSet = new TreeSet<>();
    gamesMap.entrySet().stream().sorted(Map.Entry.<GameInteger>comparingByValue()).forEach(entry -> gamesSet.add(entry.getKey()));
    Попробуй так
     
  12. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Такая же ошибка
     
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Походу у тебя что-то null. Возможно games.
     
  14. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Нет, он не нулл, если я сделаю цикл который будет выводит количество всех игроков в играх которые в списке games все будет работать. При добавлении этого кода выходит ошибка.
     
  15. Автор темы
    Akultist

    Akultist Новичок Только чтение Пользователь

    Баллы:
    21
    Не знаю в чём была причина, но я изменил SortedSet на LinkedList и всё заработало
     
  16. HunterGaming

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

    Баллы:
    76
    Имя в Minecraft:
    HunterGaming13
    Скорее из-за сортировки, для сортировки в TreeSet нужно писать свой Comparable/Comparator, возможно, я ошибаюсь
     
  17. Slavkaa

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

    Баллы:
    76
    Имя в Minecraft:
    Slavok2001
    Да, именно из-за этого
     

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