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

Как сделать так, чтобы предмет не выдавался повторно если он есть в инвентаре

Тема в разделе "Разработка плагинов для новичков", создана пользователем Dynamite Play, 23 июн 2021.

Статус темы:
Закрыта.
  1. Автор темы
    Dynamite Play

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

    Баллы:
    61
    Здравствуйте. Я пишу свой первый плагин на выдачу меню и у меня возникла проблема. У меня получается выдать меню, но мне хотелось бы, чтобы после перезахода на сервер оно не выдавалось повторно если уже имеется в инвентаре у игрока. Буду очень благодарен за помощь!
    Скрин того, что имеется, если кому-то нужно:
     

    Вложения:

  2. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Проверяй в цикле весь инвентарь на наличие предмета и если он такой есть то return
     
  3. Автор темы
    Dynamite Play

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

    Баллы:
    61
    А можно покажешь как? Я просто нуб(
     
  4. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Код:
    for(int g = 0; g>= 35; g++){
    if(p.getinventory.getitem(g) == item) return;
    }
    
    Писал с телефона могут быть ошибки.
     
  5. Автор темы
    Dynamite Play

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

    Баллы:
    61
    Хорошо, спасибо. Вроде понял)
     
  6. Blc_Dragon

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

    Баллы:
    76
    конечно будут, данное условие никогда не вернет true, т.к. ссылки там как минимум разные.
    более того цикл даже не запустится 0 не удовлетворит условию >=35
    вместо 35 - Inventory#getSize() (мб по другому называется, не помню)
    для проверки стаков - ItemStack#isSimilar()
     
  7. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Ок с цыклом да но предметы так можно сравнить.
     
  8. Blc_Dragon

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

    Баллы:
    76
    ну запусти, сравни)
     
  9. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Хз я так сравнивал + я говорил что с мобилки.
     
  10. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Сравнивать не предмет, а ссылку на него, сильно, конечно
     
  11. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Окей что сравнивает вашь ItemStack#isSimilar().
     
  12. Blc_Dragon

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

    Баллы:
    76
  13. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Характеристики предмета проще говоря. А вообще, мог бы в javadoc об этом прочитать.
     
  14. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Я говорю с мобилки так что так легче. Ладно убедили
     
  15. Автор темы
    Dynamite Play

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

    Баллы:
    61
    М, хорошо. А можно покажешь как оно в итоге выглядеть будет?
     
  16. Blc_Dragon

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

    Баллы:
    76
    Рубаккит неизменно радует меня, когда бы я сюда ни зашел, спасибо)

    нет, поработай головой сам
     
  17. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    Если ты постоянно будешь копипастить код то так ничего из этого и не поймешь. Попробуй разобратся что он сказал и просто изменить то что скинул я
     
  18. Bezobrazie

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

    Баллы:
    46
    Имя в Minecraft:
    MySoulIsCry
    )
     
  19. Автор темы
    Dynamite Play

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

    Баллы:
    61
    Ладно, хорошо. Всем спасибо! Тему, как я понимаю, можно закрывать?
     
  20. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Код:
    public boolean hasItem(ItemStack targetStack, Inventory inventory) {
        for (ItemStack stack : inventory.getContents())
            if (stack.isSimilar(targetStack)) return true;
        return false;
    }
     
Статус темы:
Закрыта.

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