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

Помогите Возвращение null в GUI меню.

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

Статус темы:
Закрыта.
  1. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Здравствуйте форумчата, нашёл ошибку в GUI меню, хотел спросить у вас.
    Ошибочка: при нажатии за пределы GUI меню - null. (Ругается на 151 строчку).
    Пример моего кода:

    Код:
    package Boss90.RegionSheller;
    
    import java.util.HashMap;
    import java.util.Map;
    import org.bukkit.Bukkit;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.inventory.InventoryClickEvent;
    import org.bukkit.event.inventory.InventoryCloseEvent;
    import org.*********ventory.Inventory;
    import org.*********ventory.ItemStack;
    import org.*********ventory.meta.ItemMeta;
    import com.google.common.collect.Lists;
    
    public class ShopGUI implements Listener, CommandExecutor {
    private GLClass plugin;
    
    public ShopGUI(GLClass plugin) {
    this.plugin = plugin;
    }
    private Map<Player, Inventory> holders = new HashMap<>();
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player p = (Player) sender;
            Inventory i = holders.get(p);
            if(i == null) {
                i = Bukkit.createInventory(null, 9, NameGUI);
                holders.put(p, i);
    }
    if(e.getClickedInventory().getName().equalsIgnoreCase("Shop")){ //Это и есть 151 строчка
    // Здесь мой кодик
    }
    Ошибка в консоль:
    [​IMG]
     
  2. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Ошибка:
     

    Вложения:

  3. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    getClickedInventory у тебя null. Сделай проверку на null.
     
  4. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Минутку...
     
  5. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Возвращает false.
     
  6. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Ошибка говорит об обратном
    [​IMG]
     
  7. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    System.out.println(e.getClickedInventory() == null);
    Screenshot_13.png
     
  8. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    И ту же ошибку выкидывает хочешь сказать?
     
  9. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    upload_2021-1-16_19-8-34.png
     
  10. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Ну кидай тогда полный код класса (Желательно через pastebin)
     
  11. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Здесь была ссылка на мой код, но её нету)
     
    Последнее редактирование: 16 янв 2021
  12. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Я так понимаю, тебе эту ошибку не всегда выкидывает? Потому что у тебя проверка стоит после проверки на имя, которая судя по ошибке кидает NPE
     
  13. LOVEC3327

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

    Баллы:
    76
    Имя в Minecraft:
    LOVEC3327
    Попробуй сделать проверку до 151 строки.
    PHP:
            if (e.getClickedInventory() == null)
                return;
            
    //TODO
     
  14. Автор темы
    Boss90

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

    Баллы:
    66
    Имя в Minecraft:
    Boss90
    Работает), спасибо. :D
     

    Вложения:

Статус темы:
Закрыта.

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