Войти или зарегистрироваться

Помогите Цикл для Inventory.all в диспенсере

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

poiNt_3D

Активный участник
Пользователь
Баллы
68
Здравствуйте.
Проблема такая: нужно посчитать все предметы определенного типа в диспенсере, затем удалить их.
В документации нашел подходящий метод - all. Но возвращает он какой-то непонятный для меня тип: <Integer,? extends ItemStack> (я новичек в программировании).
Поискав в гугле, нашел вроде-бы подходящий цикл, но он почему-то делает только один проход.
Собственно, вот код:
Код:
public void onBlockDispenseEvent(BlockDispenseEvent event) {
    Block block = event.getBlock();
    Dispenser dispenser = (Dispenser) block.getState();
    Inventory inventory = dispenser.getInventory();
    ItemStack item = event.getItem();
    Integer amount = 1;
    for (Entry<Integer, ? extends ItemStack> pair : ((HashMap<Integer, ? extends ItemStack>)inventory.all(item)).entrySet()){
      System.out.println("Key: " + pair.getKey() + ", Value: " + pair.getValue());
      ItemStack stack = (ItemStack) pair.getValue();
     
      amount += stack.getAmount();
      inventory.clear(pair.getKey());
    }
   
    item.setAmount(amount);
    event.setItem(item);
   
}
Насколько я понимаю, цикл должен обходить все элементы HashMap, а выходит только один. Где тут ошибка?
Вторая проблема заключается в том, что даже если тупо применить ко всему инвентарю clear, удалятся все stack'и, кроме того который был выброшен из диспенсера.
 
Если новичек - так вначале прочитай пару умных книжек, а потом уже спрашивай.
Его можно взять и перебрать с помощью итератора, без всяких заумных HashMap.
for(ItemStack is: inventory)
 
Ок, спасибо за направление - почитаю про интераторы.
Заумные книжки, я надеюсь, будут впереди. Но надо, чтобы зацепило программирование, а то если с них начать, можно вообще забить.
Объясните пожалуйста про "? extends ItemStack" как это называется и где про это почитать? Как можно объявить наследование в возвращаемом типе?
 
Ок, спасибо за направление - почитаю про интераторы.
Заумные книжки, я надеюсь, будут впереди. Но надо, чтобы зацепило программирование, а то если с них начать, можно вообще забить.
Объясните пожалуйста про "? extends ItemStack" как это называется и где про это почитать? Как можно объявить наследование в возвращаемом типе?
В разделе для новичков есть перечень литературы, которую было бы не плохо прочитать любому человеку, который хочется заниматься данным языком. Поэтому меньше левых вопросов - и вперёд за чтением.
 
Посмотрел я на вопросы, которые тут задают. Обычно всё гораздо проще. И ведь отвечают.
А я не спросив гугл и не почтитав документацию Bukkit не стал бы спрашивать.
Ну да ладно...
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх