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

Помогите метод создания голов в инвентаре

Тема в разделе "Разработка плагинов для новичков", создана пользователем Chupaaa, 19 май 2019.

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

    Chupaaa Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Всем привет!
    Есть у меня файл, там записано так:
    Код:
    players:
      Chupaaa:
        points: 2
        lvl: 5
      xChupa:
        points: 33
        lvl: 9
    
    Я "написал" метод, который возвращает голову только Chupaaa.
    А мне нужно чтобы он возвращал, и Chupaaa, и xChupa.
    Код:
        public ItemStack Top(FileConfiguration file) {
            ConfigurationSection typeSection = file.getConfigurationSection("players");
            if(typeSection == null) return null;
            for (String type : typeSection.getKeys(false)) {
                String owner = typeSection.getString(type);
                ItemStack head = new ItemStack(Material.SKULL_ITEM,1, (short) 3);
                SkullMeta meta = (SkullMeta) head.getItemMeta();
                meta.setOwner(owner);
                head.setItemMeta(meta);
                return head;
        }
            return null;
    }
    
    Потом я прописываю в event: inv.addItem(Top(file))
    И у меня добавляется в инв только первая голова.
    Прошу вашей помощи.
     
  2. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Ну правильно, ты заходишь в фор, а возвращаешь только первую голову.
    Сделай List<ItemStack> и добавляй туда головы с фора, потом возвращай этот список и со списка уже ставь в инвентарь.
     
  3. Автор темы
    Chupaaa

    Chupaaa Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Понял, принял. Спасибо :)
     
  4. Автор темы
    Chupaaa

    Chupaaa Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Код:
       public List<ItemStack> Top(FileConfiguration file) {
           ConfigurationSection typeSection = file.getConfigurationSection("players");
           if(typeSection == null) return null;
           for (String type : typeSection.getKeys(false)) {
               String owner = typeSection.getString(type);
               ItemStack head = new ItemStack(Material.SKULL_ITEM,1, (short) 3);
               SkullMeta meta = (SkullMeta) head.getItemMeta();
               meta.setOwner(owner);
               head.setItemMeta(meta);
                List<ItemStack> trt = new ArrayList<>();
                trt.add(head);
                return trt;
       }
           return null;
    }
    
    for(ItemStack heads : Top(file))
    inv.addItem(heads);
    не помогло, явно я делаю что-то не так.
     
  5. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Да, ты делаешь что-то не так. Опять возвращаешь список с одним элементом
     
  6. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    Включи логику и поймешь что не так.
    Создание и возвращение списка должно быть за пределами цикла.
     
  7. Автор темы
    Chupaaa

    Chupaaa Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    xChupa
    Теперь точно понял:)))))))
     
  8. TheSkiffSailor

    TheSkiffSailor Новичок Пользователь

    Баллы:
    21
    Имя в Minecraft:
    TheSkiffSailor
    list.stream().filter(###).map(###).forEach((##) -> {//TODO####})
     
  9. imDaniX

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

    Баллы:
    96
    Имя в Minecraft:
    imDaniX
    1) Вопрос уже решен.
    2) На кой черт ты напихал сюда стрим, фильтр и мап? Зачем здесь вообще использовать лямбду?
     
  10. LuckyZeeRo

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

    Баллы:
    96
    Имя в Minecraft:
    i0xHeX
    2) Повыделоваться конечно же
     

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