Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите getHolder() всегда выдает null, даже если открыт кастомный инвентарь

Статус
Закрыто для дальнейших ответов.

VladNotch

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Frontalvlad
У меня есть меню MainGUI, которое наследуется классом InventoryHolder, в нем есть метод
onInventoryClick.

public void onInventoryClick(InventoryClickEvent args) {
...
}


Есть так же класс InventoryEventListener, который проверяет открытое меню, и если сравнивается
args.getClickedInventory().getHolder() и MainGUI, то должен выполнятся тот метод onInventoryClick из MainGUI.
@EventHandler
public void onInventoryClick(InventoryClickEvent args) {
Inventory inventory = args.getClickedInventory();
if (inventory == null || args.getClickedInventory().getHolder() == null) return;
if (inventory.getHolder() instanceof MainGUI) {
args.setCancelled(true);
((MainGUI) inventory.getHolder()).onInventoryClick(args);
}
}



Но почему-то args.getClickedInventory().getHolder() выдает null, из-за чего срабатывает проверка на null. Что не так?
 
Холдер необходимо указывать при создании инвентаря (передавать в конструктор)
 
Кринж, еще и пытается бесконечно вызывать метод onInventoryClick? null тебя спас :D
 
Можно пожалуйста пример, если он у вас есть?
Документация:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Bukkit.html#getHelpMap()
Чуть ниже несколько перегруженных методов createInventory().

Гайд - первый же, что нашел по запросу в гугл: https://rubukkit.org/threads/sravnivaem-inventari.134144/

Кринж, еще и пытается бесконечно вызывать метод onInventoryClick? null тебя спас :D
А кто сказал, что слушатель находится в InventoryHolder'е? Это вполне могут быть разные методы в разных классах с одинаковым названием. Да и в конце концов увидит StackOverflow и сам поймёт ошибку
 
Документация:
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Bukkit.html#getHelpMap()
Чуть ниже несколько перегруженных методов createInventory().

Гайд - первый же, что нашел по запросу в гугл: https://rubukkit.org/threads/sravnivaem-inventari.134144/


А кто сказал, что слушатель находится в InventoryHolder'е? Это вполне могут быть разные методы в разных классах с одинаковым названием. Да и в конце концов увидит StackOverflow и сам поймёт ошибку
Благодарю) Да, все верно, слушатель находится в отдельном классе, так как сам GUI у меня наследуется InventoryHolder, а листенер наследует Listener.
 
Статус
Закрыто для дальнейших ответов.

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

Назад
Верх