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

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

В чем может быть проблема?
 
У меня возникает ошибка при вызове события при вызове метода 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

В чем может быть проблема?
Расскажи логику плагина, пожалуйста.
 
  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. }

    Попробуй
    Ну кто его знает...



    Да суть не в самом плагине. У меня не работает именно этот кусок метода, я его даже в отдельный плагин вынес.
 
  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. }

    Попробуй

Эээ, а что изменилось?
А, понял, но вы в курсе, что после 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;
        }
    }
 
Эээ, а что изменилось?
А, понял, но вы в курсе, что после 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;
}
}
В выделенном месте поставил {
 
У меня возникает ошибка при вызове события при вызове метода 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

В чем может быть проблема?
Если компиляция и проверка на сервере 1.5.2, то нужно скачать билд крафтбуккита новее, так как InventoryAction появился не сразу
 
Если компиляция и проверка на сервере 1.5.2, то нужно скачать билд крафтбуккита новее, так как InventoryAction появился не сразу

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

Или если делать без Action, то как отследить перемещение предмета в сундук?
 
При комиляции и на сервере испоьзую одну и туже версию и в обоих есть InventoryAction.

Или если делать без Action, то как отследить перемещение предмета в сундук?
Есть старый костыльный метод сверки номера кликнутого слота(getRawSlot)
 
Есть старый костыльный метод сверки номера кликнутого слота(getRawSlot)

Ок.

event.isCancelled() зачем тебе этот кусок?

Ну это вдруг другой плагин до меня уже отменил это действие, и чтобы зря не делать всю работу, я проверяю, не отменено-ли действие.
 
Доки не читай@тупую херню вытворяй.
 
Назад
Верх