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

Помогите Как взять предмет в инвентаре по имени.

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

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

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    У меня существует инвентарь с предметами и мне нужно взять тот предмет(ы) чьё имя равно "ИМЯ"
    затем взаимодействовать с ним.

    Можно ли как то в принципе так сделать?, лично у меня не получалось найти в инвентаре.
     
  2. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    PHP:
    public List<ItemStackgetStacksByName(Inventory inventoryString name) {
        List<
    ItemStackresult = new ArrayList<>();
        for(
    ItemStack stack inventory) {
            if(
    stack==null) continue;
            if(
    name.equals(stack.getItemMeta().getDisplayName())) result.add(stack);
        }
        return 
    result;
    }
     
    Последнее редактирование: 18 июл 2018
  3. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Поправил
     
  4. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK

    Вложения:

  5. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    У меня код другой немного
    И зачем ты при смене руки добавляешь предмет в список?
     
  6. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    ну я нашел его теперь хочу взаимодействать с ним
     
  7. Exception_Prototype

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

    Баллы:
    96
    В смысле ошибка, ты сам то понял что делаешь? После вызова того метода, тебе возвращается список всех предметов, найденных в инвентаре с таким именем.
     
  8. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Тебе список возвращает всех предметов с таким именем. И я опять немного поправил код выше
     
  9. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    я не понимаю можно пример ? я глупенький просто :D
     
  10. Exception_Prototype

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

    Баллы:
    96
    Для начала скажи - что ты хочешь сделать с найденным предметом?
     
  11. Автор темы
    SashaX2

    SashaX2 Участник Пользователь

    Баллы:
    36
    Имя в Minecraft:
    NOTXSK
    удалить его
     
  12. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    PHP:
    final ItemStack AIR = new ItemStack(Material.AIR);
    for(
    int i 0inventory.getSize(); i++) {
        
    ItemStack item inventory.getItem(i);
        if (
    item == null || !item.hasItemMeta()) continue;
        
    ItemMeta meta item.getItemMeta();
        if (!
    meta.hasDisplayName() || !meta.getDisplayName().equals(name)) continue;
        
    inventory.setItem(iAIR);
    }
     
  13. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Или с моим методом
    PHP:
    List<ItemStackstacks getStacksByName(inventory,"ИМЯ");
    inventory.removeItem(list.toArray(new ItemStack[stacks.size()]));
     
  14. AbstractCoder

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

    Баллы:
    76
    Имя в Minecraft:
    AbstractCoder
    В этом смысла меньше, ибо после получения еще раз проходить по массиву собранных ItemStack-ов для удаления.
    И на справку, вместо list.toArray(new ItemStack[stacks.size()]) лучше использовать list.toArray(new ItemStack[0]).
     

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