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

Помогите Как проверить предмет с ItemMeta в инвентаре игрока?

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    f3azzy
    Привет, хочу сделать прокачку предметов по типу бартера, типо нужно отдать другие предметы, чтобы получить прокачанный предмет. Столкнулся с такой проблемой что не знаю как проверить предмет в инвентаре игрока.
     
  2. MurlikMurlik

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

    Баллы:
    96
    Получи инвентарь игрока, получи коллекцию этих предметов, делай итерацию и ищи там нужный предмет с нужной метой, потом забирай его.
     
  3. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    ItemStack[] arr = p.getInventory().getContents();
     
  4. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    public static void getpredmet(Player p) {
    ItemStack[] arr = p.getInventory().getContents();
    ArrayList<ItemStack> im = new ArrayList<ItemStack>();
    for(int x = 0; x < arr.length;x++) {
    im.add(arr[x]);
    }
    for (int i = 0; i < im.size(); i++) {
    if(im.get(i) != null) {
    Bukkit.broadcastMessage("§3#" + String.valueOf(im.get(i).getType()));
    }
    }
    }
    upload_2019-8-26_2-43-26.png
    upload_2019-8-26_2-44-12.png
     

    Вложения:

  5. MurlikMurlik

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

    Баллы:
    96
    А зачем создавать коллекцию листа да и еще добавлять в него объекты массива, если можно тупо сделать forEach по массиву?
     
  6. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    хз, я этого не знал)
     
  7. Luminate_

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

    Баллы:
    76
    Имя в Minecraft:
    Luminate_
    Учи stream api и foreach обычный.
    Player.getInventory().getContents().forEach(stack -> {/*Твой код, stack это предмет*/});
     
  8. zabelov

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

    Баллы:
    61
    Имя в Minecraft:
    Zabelov
    Массивы не умеют в forEach(). Нужно либо в коллекцию, либо Stream.of(array)
     
  9. Luminate_

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

    Баллы:
    76
    Имя в Minecraft:
    Luminate_
    В принципе я принцип показал. Можно обычным форычем можно стрим открыть.
     
  10. alexandrage

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

    Баллы:
    173
    Код:
            e.getPlayer().getInventory().forEach(item -> {
                item.isSimilar(item2);
            });
     
  11. SkyCrafting_

    SkyCrafting_ Активный участник

    Баллы:
    61
    Имя в Minecraft:
    SkyCrafting_
    if(p.getInventory().contains(Material.IRON_INGOT)) {
    /* ТВОЙ КОД */
    }
     
  12. Dymeth

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

    Баллы:
    98
    Имя в Minecraft:
    Dymeth
    Ему по мете надо, а не по материалу. Более того, ответ на этот вопрос уже был дан ранее
     

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