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

Помогите Номер слота предмета в PlayerItemDamageEvent

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

Метки:
  1. Автор темы
    posix

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

    Баллы:
    61
    Есть необходимость заменить один предмет на другой в PlayerItemDamageEvent, думаю это будет так:
    Код:
    player.getInventory().setItem(номер_слота, item);
    
    Как узнать номер слота для event.getItem() в PlayerItemDamageEvent?

    Заранее благодарен за любую помощь.
     
  2. Nikolai_Faint

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

    Баллы:
    96
    [​IMG]
     
  3. Автор темы
    posix

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

    Баллы:
    61
    Это я знаю. Мне нужен метод, которому я скормлю ItemStack и Player, а на выходе получу номер слота.

    Причем мне нужен конкретный предмет, который тикнул в ивенте. В инвентаре пользователя могут быть несколько таких же предметов, а мне нужен тот самый.
     
  4. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    берешь и проверяешь предметы в руке и броню
     
  5. Автор темы
    posix

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

    Баллы:
    61
    Код:
        public int getSlot(Player player, ItemStack item) {
            for (int i = 0; i < player.getInventory().getSize(); i++) {
    
                if (player.getInventory().getItem(i).equals(item)) {
                    return i;
                    // player.getInventory().setItem(i, itemStack);
                }
            }
            return -1;
        }
    
    Так? Есть мысль что при наличии двух одинаковых айтемов в инвентаре, выстрелит первый из них.
     
  6. Cool_boy

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

    Баллы:
    96
    Имя в Minecraft:
    prettydude
    Ради интереса, для чего ты меняешь предмет при изменении прочности? Думаю, есть ещё варианты решения.
     
  7. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    а зачем тебе вообще по слоту его менять, меняй тупо сразу в ивенте
     
  8. Автор темы
    posix

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

    Баллы:
    61
    Cool_boy, при износе я обновляю кстомный nbt на предмете, а на определенном проценте износа предмет должен меняться на предмет другого типа.

    Zнамя Юности, а это как? Видимо я что-то не знаю...

    Еще хотел заметить, что предмет также может быть броней, одетой в соответствующие слоты.
     
  9. Zнамя Юности

    Zнамя Юности Активный участник Пользователь

    Баллы:
    76
    ну берешь ItemStack item = e.getItem();
    и делаешь updateNBT(item); или типа того смотря какой у тебя там для этого метод.
    проверяешь на нужное тебе условие и делаешь item.setType() если требуется.
     

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