- Баллы
- 103
Собственно суть:
Как отследить что игрок положил вещь в сундук?
Как отследить что игрок положил вещь в сундук?
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
Это же в инвентаре, нет?InventoryClickEvent
А сундук - это не инвентарь?Это же в инвентаре, нет?
Ну в принципе тоже правильно. Но я думал, что этот эвент только для плеерскоого инвентаря.А сундук - это не инвентарь?
InventoryClickEvent
@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
В чем может быть проблема?
Проблема с Bukkit API?Проблема с Bukkit API?
Расскажи логику плагина, пожалуйста.
Ну кто его знает...
Да суть не в самом плагине. У меня не работает именно этот кусок метода, я его даже в отдельный плагин вынес.
- @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;
- }
- }
Попробуй
@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;
}
}
Неправильно. Ничего не будет работать.
- @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;
}
}
Вот я и говорю, там же после return выход из функции.Неправильно. Ничего не будет работать.
Если компиляция и проверка на сервере 1.5.2, то нужно скачать билд крафтбуккита новее, так как InventoryAction появился не сразуУ меня возникает ошибка при вызове события при вызове метода 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 появился не сразу
Есть старый костыльный метод сверки номера кликнутого слота(getRawSlot)При комиляции и на сервере испоьзую одну и туже версию и в обоих есть InventoryAction.
Или если делать без Action, то как отследить перемещение предмета в сундук?
Есть старый костыльный метод сверки номера кликнутого слота(getRawSlot)
event.isCancelled() зачем тебе этот кусок?