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

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

_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+"монеток!");
            }
           
        }
       
       
    }

}
 
К чему кастовать игрока Player на Player? И у тебя где то бублик.
 
Location loc = e.getClickedBlock().getLocation();
getClickedBlock() - null.
e.hasBlock()
 
Так чтоли?
Код:
        Player clicker = e.getPlayer();
        Location loc = e.getClickedBlock().getLocation();
        if(e.getClickedBlock() == null)
        {
           
            e.hasBlock();
           
        }

К чему кастовать игрока Player на Player? И у тебя где то бублик.
Кастовал случайно, копировал кусок кода с другого моего плагина...Тупанул
 
Так чтоли?
Код:
        Player clicker = e.getPlayer();
        Location loc = e.getClickedBlock().getLocation();
        if(e.getClickedBlock() == null)
        {
       
            e.hasBlock();
       
        }


Кастовал случайно, копировал кусок кода с другого моего плагина...Тупанул
У null нет локации. И типа тоже.
 
Сейчас попробую проверить, кликает ли он на блок
 
Чет такое получилось, ща буду проверять...
Код:
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+"монеток!");
                }
               
            }
           
        }
       
    }

}

Ты сперва на бублик чекай, потом уже локацию и тип.
Всм, на бублик, я не очень понимаю этих слэнгов...
 
Так чтоли?
Код:
        Player clicker = e.getPlayer();
        Location loc = e.getClickedBlock().getLocation();
        if(e.getClickedBlock() == null)
        {
         
            e.hasBlock();
         
        }
Совсем дурак?
Java:
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+"монеток!");
            }
         
        }
     
     
    }

}
 
Тот случай, когда скобки явно лишние.
if(!e.hasBlock()) return; и смотрится лучше.
 
Location loc = e.getClickedBlock().getLocation();
getClickedBlock() - null.
e.hasBlock()
Ну и разжую этот пост для лишенных соображалки.

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

Тот случай, когда скобки явно лишние.
if(!e.hasBlock()) return; и смотрится лучше.
Я лишь "поддержал" его стиль разметки. Оставлять скобки или убирать - не моя задача.
 
бублик=NPE=NullPointerException

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

Это как тебя подводят к столу где два пакета с конфетами и говорят "бери три конфеты из третьего пакета" - ты естественно не сможешь. так и тут
 
Совсем дурак?
Java:
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+"монеток!");
            }
       
        }
   
   
    }

}
Точь в точь написал, даже проверял...Ошибка:
Код:
[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
 
Точь в точь написал, даже проверял...Ошибка:
Код:
[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
Вангую что тут public static Economy econ; Ибо не увидел назначение переменной.
 
Чет я уже не знаю, в чем еще может быть проблема...
 
Чет я уже не знаю, в чем еще может быть проблема...
тебе написали.
publicstatic Economy econ;
ты где то в коде даешь ему норм значение? нет. все. иди накуй.


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

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

в скобках сначала название класса (HappyEvent.java) а через двоеточие строчка где это случилось.
 
Переменную econ нужно инициализировать, а блок, по которому кликнули проверять на null.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх