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

Помогите проблема с инвентарем

Тема в разделе "Разработка плагинов для новичков", создана пользователем StealerSlain, 10 фев 2014.

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

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    Есть кастомный инвентарь. Хочу чтобы если первый игрок вышел с инвентаря (закрыл его), то у другого автоматически закрывается тоже. InventoryCloseEvent выдает непрерывное количество ошибок, либо я криворук.
     
  2. Автор темы
    StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
  3. ShaGTF

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

    Баллы:
    68
    Имя в Minecraft:
    CoolShaGGy
    public class YourClass extends JavaPlugin implements Listener {
    Написал ли ты это? И еще
    Bukkit.getPluginManager().registerEvents(this, this);
    Это в onEnable().
    Знаю немного тупо, но вдруг...
    Код скинь, пожалуйста.
     
  4. JustBlender

    JustBlender Старожил Девелопер Пользователь

    Баллы:
    123
    Skype:
    justblender
    Имя в Minecraft:
    JustBlender
    Соглашусь. Никто не будет гадать что ты написал, дай что у тебя есть, посмотрим.
     
    ShaGTF нравится это.
  5. Автор темы
    StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    Ну, если у тебя из-за этого была первая ошибка - не значит, что она у меня тоже будет.) Другие эвенты у меня работают и сам инвентарь работает.

    Вот и код. (одна из сотен попыток, которая к сожалению не работает)

    Код:
        @EventHandler
        public void onTradeClose(InventoryCloseEvent e){
            if(e.getInventory().getName() == "TestInventory"){
                closeInventory = true;
                if(closeInventory == true){
                    e.getInventory().getViewers().get(0).closeInventory();// V
                    e.getInventory().getViewers().get(1).closeInventory(); //вот это выдает триллион непрекращаемых ошибок
                    closeInventory = false;
                }
            }
        }
    Код не скинул, потому что он не так важен. Я же вас попросил объяснить просто: как закрыть инвентарь второго игрока, если первый из него вышел.

    Остальной код (самого инвентаря и его манипуляций) не важен, он с этим никак не связан. Только если там сверху где-то торчит булеан closeInventory. Все.
     
  6. ptnk

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

    Баллы:
    173
    А что, если после get(0).closeInventory() смотрителей всего 1 чевлоек, и get(1) тупо возращает ошибку, когда возможно нужно get(0).closeInvetory() сделать два раза?

    Включай думалку.
     
  7. Автор темы
    StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    Не, не работает. Вся консоль опять непрерывно выводит ошибки. И после того, кстати, как игрок закроет инвентарь (один из них), то другой не может вообще никакие либо gui интерфейсы открывать (то есть даже меню)
    Upd.
    Вот еще небольшая подсказка, которую забыл сказать: у меня есть хэшмапа и при открытии инвентаря ("TestInventory") я двух игроков закидываю туда. То есть с помощью хэшмапы тоже пробовал закрыть игрокам инвентарь, но тоже самое.
     
  8. ptnk

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

    Баллы:
    173
    значит, нужно глядеть на ошибки
     
  9. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    e.getInventory().getName() == "TestInventory"
    UB во все поля?
     
  10. Автор темы
    StealerSlain

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

    Баллы:
    88
    Имя в Minecraft:
    StealerSlain
    не понял.
     
    Последнее редактирование: 11 фев 2014
  11. BeYkeR

    BeYkeR Старожил Девелопер Пользователь

    Баллы:
    173
    Увидел первую ошибку:
    Код:
    if(e.getInventory().getName() == "Trade")
    Надо писать:
    Код:
    if(e.getInventory().getName().equals("Trade"))
    А про вторую я не знаю.
     
  12. kris13

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

    Баллы:
    78
    Так есть шанс поймать NullPointer, лучше всегда брать equals от константы, если это возможно, т.е.
    Код:
    if("Trade".equals(e.getInventory().getName()))
     
    BeYkeR нравится это.

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