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

Помогите Как отследить складывание в сундук?

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

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

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

    Баллы:
    103
    Собственно суть:
    Как отследить что игрок положил вещь в сундук?
     
  2. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    InventoryClickEvent
     
  3. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Это же в инвентаре, нет?
     
    TAB_mk нравится это.
  4. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    А сундук - это не инвентарь?
     
  5. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Ну в принципе тоже правильно. Но я думал, что этот эвент только для плеерскоого инвентаря.
     
  6. Автор темы
    kirill2011s

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

    Баллы:
    103
    У меня возникает ошибка при вызове события при вызове метода getAction(), говорит что метод не найден.

    Код:
    @EventHandler
        public void getItemInventoy(InventoryClickEvent event) {
            if (event.isCancelled())
                return;
            if (event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) {
                log.info("Move to other inventory.");
                return;
            }
    }
    А вот лог:

    Код:
    Caused by: java.lang.NoSuchMethodError: org.bukkit.event.inventory.InventoryClickEvent.getAction()Lorg/bukkit/event/inventory/InventoryAction;
        at org.polushin.GLTChat.GLTChatMain.getItemInventoy(GLTChatMain.java:244)
        at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        ... 15 more
    В чем может быть проблема?
     
  7. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    Расскажи логику плагина, пожалуйста.
     
    TAB_mk нравится это.
  8. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    :confused: Проблема с Bukkit API?
     
  9. Автор темы
    kirill2011s

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

    Баллы:
    103
    Ну кто его знает...

    Да суть не в самом плагине. У меня не работает именно этот кусок метода, я его даже в отдельный плагин вынес.
     
  10. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    1. @EventHandler
    2. public void getItemInventoy(InventoryClickEvent event) {
    3. if (event.isCancelled()) {
    4. return;
    5. if (event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) {
    6. log.info("Move to other inventory.");
    7. return;
    8. }
    9. }

      Попробуй
     
    ПриветОтЛайки и TAB_mk нравится это.
  11. Автор темы
    kirill2011s

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

    Баллы:
    103
    Эээ, а что изменилось?
    А, понял, но вы в курсе, что после return; ничего дальше не выполняется?
    Хотя не, если честно, я вообще не понял что тут написано и как это должно работать
    Кароче это должно быть отформатированно как-то так:
    Код:
    @EventHandler
        public void getItemInventoy(InventoryClickEvent event) {
            if (event.isCancelled()) {
                return; //Но дальше-же выход из функции, разве нет?
                if (event.getAction() == InventoryAction.MOVE_TO_OTHER_INVENTORY) {
                log.info("Move to other inventory.");
                return;
            }
        }
     
  12. serega6531

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

    Баллы:
    173
    Skype:
    shkurovs
    Неправильно. Ничего не будет работать.
     
  13. BeLkA

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

    Баллы:
    153
    Skype:
    FayStaff
    В выделенном месте поставил {
     
  14. Автор темы
    kirill2011s

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

    Баллы:
    103
    Вот я и говорю, там же после return выход из функции.

    Так в чем-же все-таки проблемма?
     
  15. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Если компиляция и проверка на сервере 1.5.2, то нужно скачать билд крафтбуккита новее, так как InventoryAction появился не сразу
     
  16. Автор темы
    kirill2011s

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

    Баллы:
    103
    При комиляции и на сервере испоьзую одну и туже версию и в обоих есть InventoryAction.

    Или если делать без Action, то как отследить перемещение предмета в сундук?
     
  17. Den_Abr

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

    Баллы:
    173
    Skype:
    Den_Abr
    Имя в Minecraft:
    Den_Abr
    Есть старый костыльный метод сверки номера кликнутого слота(getRawSlot)
     
    ПриветОтЛайки и ql_Nik_lp нравится это.
  18. konfyciu98

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

    Баллы:
    123
    Skype:
    wwwixelsor9
    Имя в Minecraft:
    konfyciu
    event.isCancelled() зачем тебе этот кусок?
     
    saharin94 нравится это.
  19. Автор темы
    kirill2011s

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

    Баллы:
    103
    Ок.

    Ну это вдруг другой плагин до меня уже отменил это действие, и чтобы зря не делать всю работу, я проверяю, не отменено-ли действие.
     
    ПриветОтЛайки нравится это.
  20. Shevchik

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

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Доки не читай@тупую херню вытворяй.
     
    Den_Abr нравится это.

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