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

Помогите [РЕШЕНО] Ошибка в консоли, PlayerInteractEvent

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

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

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Вообщем, плагин должен так работать:

    Плагин проверяет блок, на который кликаешь, если это голова, то голова удаляется, а игроку пишет сообщение и выдает ему 5 монеток.
    Вот ошибка консоли:
    [14:15:48] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Lobby v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:195) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:191) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1203) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:18) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInArmAnimation.a(PacketPlayInArmAnimation.java:1) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_111]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_111]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:772) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
    Caused by: java.lang.NullPointerException
    at master.cape.lobby.HappyEvent.onClickHead(HappyEvent.java:24) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    ... 18 more
    [14:16:06] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Lobby v1.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:762) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_111]
    at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_111]
    at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:772) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
    Caused by: java.lang.NullPointerException
    at master.cape.lobby.HappyEvent.onClickHead(HappyEvent.java:29) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
    ... 17 more

    Вот код класса:
    Код:
    package master.cape.lobby;
    
    import org.bukkit.entity.Player;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerInteractEvent;
    import net.milkbowl.vault.economy.Economy;
    import net.milkbowl.vault.economy.EconomyResponse;
    
    public class HappyEvent implements Listener
    {
    
        public static Economy econ;
       
        @EventHandler
        public void onClickHead(PlayerInteractEvent e)
        {
           
            Player clicker = (Player) e.getPlayer();
            Location loc = e.getClickedBlock().getLocation();
           
            if(e.getClickedBlock().getType() == Material.SKULL)
            {
               
                EconomyResponse r = econ.depositPlayer(clicker, 5.00);
               
                if(r.transactionSuccess())
                {
                    e.getClickedBlock().setType(Material.AIR);
                   
                    clicker.playSound(loc, Sound.ITEM_PICKUP, 1, 1);
                   
                    clicker.sendMessage(ChatColor.WHITE+"Вы нашли голову и получили"+ChatColor.AQUA+" 5 "+ChatColor.WHITE+"монеток!");
                }
               
            }
           
           
        }
    
    }
    
     
  2. alexandrage

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

    Баллы:
    173
    К чему кастовать игрока Player на Player? И у тебя где то бублик.
     
  3. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Location loc = e.getClickedBlock().getLocation();
    getClickedBlock() - null.
    e.hasBlock()
     
  4. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Так чтоли?
    Код:
            Player clicker = e.getPlayer();
            Location loc = e.getClickedBlock().getLocation();
            if(e.getClickedBlock() == null)
            {
               
                e.hasBlock();
               
            }
            

    Кастовал случайно, копировал кусок кода с другого моего плагина...Тупанул
     
  5. alexandrage

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

    Баллы:
    173
    У null нет локации. И типа тоже.
     
  6. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Чет я не понял, мне это вообще убрать, этот if(e.getClickedBlock() == null) и тд? или что
     
  7. alexandrage

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

    Баллы:
    173
    Ну ты пытался получить из бублика локацию и тип.
     
  8. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Сейчас попробую проверить, кликает ли он на блок
     
  9. alexandrage

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

    Баллы:
    173
    Ты сперва на бублик чекай, потом уже локацию и тип.
     
  10. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Чет такое получилось, ща буду проверять...
    Код:
    public class HappyEvent implements Listener
    {
    
        public static Economy econ;
       
        @EventHandler
        public void onClickHead(PlayerInteractEvent e)
        {
           
            Player clicker = e.getPlayer();
            if(e.getAction() == Action.RIGHT_CLICK_BLOCK)
            {
               
                Location loc = e.getClickedBlock().getLocation();
               
                if(e.getClickedBlock().getType() == Material.SKULL)
                {
                   
                    EconomyResponse r = econ.depositPlayer(clicker, 5.00);
                   
                    if(r.transactionSuccess())
                    {
                        e.getClickedBlock().setType(Material.AIR);
                       
                        clicker.playSound(loc, Sound.ITEM_PICKUP, 1, 1);
                       
                        clicker.sendMessage(ChatColor.WHITE+"Вы нашли голову и получили"+ChatColor.AQUA+" 5 "+ChatColor.WHITE+"монеток!");
                    }
                   
                }
               
            }
           
        }
    
    }
    

    Всм, на бублик, я не очень понимаю этих слэнгов...
     
  11. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Совсем дурак?
    Код:
    package master.cape.lobby;
    
    import org.bukkit.entity.Player;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.Sound;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerInteractEvent;
    import net.milkbowl.vault.economy.Economy;
    import net.milkbowl.vault.economy.EconomyResponse;
    
    public class HappyEvent implements Listener
    {
    
        public static Economy econ;
     
        @EventHandler
        public void onClickHead(PlayerInteractEvent e)
        {
            if (!e.hasBlock())
            {
                return;
            }
         
            Player clicker = (Player) e.getPlayer();
            Location loc = e.getClickedBlock().getLocation();
         
            if(e.getClickedBlock().getType() == Material.SKULL)
            {
             
                EconomyResponse r = econ.depositPlayer(clicker, 5.00);
             
                if(r.transactionSuccess())
                {
                    e.getClickedBlock().setType(Material.AIR);
                 
                    clicker.playSound(loc, Sound.ITEM_PICKUP, 1, 1);
                 
                    clicker.sendMessage(ChatColor.WHITE+"Вы нашли голову и получили"+ChatColor.AQUA+" 5 "+ChatColor.WHITE+"монеток!");
                }
             
            }
         
         
        }
    
    }
    
     
  12. alexandrage

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

    Баллы:
    173
    Тот случай, когда скобки явно лишние.
    if(!e.hasBlock()) return; и смотрится лучше.
     
  13. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Походу, да... Лан, попробую так, спасибо
     
  14. Dereku

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

    Баллы:
    173
    Skype:
    derek_unavailable
    Имя в Minecraft:
    _Dereku
    Ну и разжую этот пост для лишенных соображалки.

    NPE у тебя в Location loc = e.getClickedBlock().getLocation();.
    А точнее getClickedBlock() возвращает null.
    Перед работой своей поставь проверку e.hasBlock()

    Я лишь "поддержал" его стиль разметки. Оставлять скобки или убирать - не моя задача.
     
  15. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    бублик=NPE=NullPointerException

    Это когда какой то не умный человек пытается работать с объектом который null.

    Это как тебя подводят к столу где два пакета с конфетами и говорят "бери три конфеты из третьего пакета" - ты естественно не сможешь. так и тут
     
  16. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Точь в точь написал, даже проверял...Ошибка:
    Код:
    [14:57:22] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to Lobby v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:310) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at org.bukkit.craftbukkit.v1_8_R3.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:228) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerInteractManager.interact(PlayerInteractManager.java:463) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:762) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:52) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:1) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(SourceFile:13) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_111]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_111]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SourceFile:44) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:772) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:378) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:711) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:614) [lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_111]
    Caused by: java.lang.NullPointerException
        at master.cape.lobby.HappyEvent.onClickHead(HappyEvent.java:37) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_111]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_111]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_111]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[lobby1.jar:git-PaperSpigot-0d986bb-18fbb24]
        ... 17 more
     
  17. alexandrage

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

    Баллы:
    173
    Вангую что тут public static Economy econ; Ибо не увидел назначение переменной.
     
  18. Автор темы
    _MasterCapeXD_

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

    Баллы:
    76
    Имя в Minecraft:
    _MasterCapeXD_
    Чет я уже не знаю, в чем еще может быть проблема...
     
  19. Fenix78563

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

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    тебе написали.
    publicstatic Economy econ;
    ты где то в коде даешь ему норм значение? нет. все. иди накуй.


    А вот для таких гомнокодеров

    Caused by: java.lang.NullPointerException
    at master.cape.lobby.HappyEvent.onClickHead(HappyEvent.java:37) ~[?:?]

    в скобках сначала название класса (HappyEvent.java) а через двоеточие строчка где это случилось.
     
  20. AtomicInteger

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

    Баллы:
    76
    Переменную econ нужно инициализировать, а блок, по которому кликнули проверять на null.
     
Статус темы:
Закрыта.

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