Solved Error Could not pass event PlayerInteractEvent

Discussion in 'Plugin Development' started by TheRage66, Dec 7, 2013.

Thread Status:
Not open for further replies.
  1. Offline

    TheRage66

    Hi I am working on a kitpvp plugin and when I click any blocks that aren't signs it gives me Could not pass event PlayerInteractEvent. Here's my code:

    Code:
    package me.TheRage66.PVPKits;
     
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.block.Sign;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.BlockBreakEvent;
    import org.bukkit.event.block.SignChangeEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.ItemStack;
     
    public class PVPKitsListener implements Listener{
     
        public static PVPKits plugin;
        public PVPKitsListener(PVPKits pvpKits) {
            plugin = pvpKits;
        }
     
        @EventHandler
        public void onSignChange(SignChangeEvent sign){
            Player player = sign.getPlayer();
            if(sign.getLine(0).equalsIgnoreCase("[PVPKits]")){
                sign.setLine(0, "[PVPKits]");
                sign.getLine(1);
                if(sign.getLine(1).equalsIgnoreCase("Archer")){
                player.sendMessage(ChatColor.YELLOW + "PVPKits Archer Sign Has Been Created!");
                    }
                else if(sign.getLine(1).equalsIgnoreCase("Tank")){
                    player.sendMessage(ChatColor.YELLOW + "PVPKits Tank Sign Has Been Created!");
                    }
                }
            }
        @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event){
            Player player = event.getPlayer();
            if(event.getClickedBlock().getState() instanceof Sign);
            if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Archer")){
                player.sendMessage(ChatColor.GOLD + "Here Is Your Archer Kit!");
                player.getInventory().clear();
                player.getInventory().setHelmet(null);
                player.getInventory().setChestplate(null);
                player.getInventory().setLeggings(null);
                player.getInventory().setBoots(null);
                player.getInventory().addItem(new ItemStack(Material.BOW));
                player.getInventory().addItem(new ItemStack(Material.ARROW, 64));
                player.getInventory().setBoots(new ItemStack(Material.LEATHER_BOOTS));
            }
            else if(event.getClickedBlock().getState() instanceof Sign);
                if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Tank")){
                player.sendMessage(ChatColor.DARK_RED + "Here Is Your Tank Kit!");
                player.getInventory().clear();
                player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
                player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
                player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
                player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
                player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));   
                    }
        }
        @EventHandler
        public void onBlockBreak(BlockBreakEvent event){
            Player player = event.getPlayer();
            if(player.hasPermission("pvpkits.sign.break") || player.isOp()){
                event.setCancelled(false);
            }else{
            Block sign = event.getBlock();
            if(sign.getType() == Material.SIGN);
            event.setCancelled(true);
            }   
        }
    }
     
  2. Offline

    Stealth2800

    It would be helpful if you posted the stacktrace so we can see where exactly the problem is.
     
  3. Offline

    Wolfey

    I think I know what's wrong, but just to make sure, can I see the stack trace?
     
  4. Offline

    TheRage66

    [19:15:29] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to PVPKits v1.0
    Thats all its giving me theres no other errors with it.
     
  5. Offline

    Wolfey

    That doesn't seem right.. Well, when you check what type of block they clicked, write an else statement, then return.
     
  6. Offline

    TheRage66

    Okay so I didn't change the code now it gives me this error:

    Code:
    [08:32:19] [Server thread/ERROR]: Could not pass event PlayerInteractEvent to PVPKits v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427) ~[craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:191) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:161) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java:966) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInArmAnimation.a(SourceFile:43) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.PacketPlayInArmAnimation.handle(SourceFile:9) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:651) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:250) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:541) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:453) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617) [craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
    Caused by: java.lang.NullPointerException
        at me.TheRage66.PVPKits.PVPKitsListener.onPlayerInteract(PVPKitsListener.java:24) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0_13]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_13]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0_13]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_13]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425) ~[craftbukkit.jar:git-Bukkit-1.6.4-R2.0-26-g31d7c5f-b2943jnks]
        ... 15 more
    
    bump

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
  7. Offline

    Wolfey

    Whats on line 24 in your PVPKitsListener class?
     
  8. Offline

    PolarCraft

    Why are you using 1.6.4 and not 1.7.2??
     
  9. Offline

    TheRage66

    PolarCraft I am using 1.7 I don't know why it's giving me that error.
    Wolfey this is
    Code:
    Player player = sign.getPlayer();
     
  10. Offline

    Wolfey

    That can't be right, it's pointing for a onPlayerInteract, and looking at your code, it's not it.
     
  11. Offline

    TheRage66

    Wolfey Well heres my playerinteractevent
    Code:
    @EventHandler
        public void onPlayerInteract(PlayerInteractEvent event){
            Player player = event.getPlayer();
            if(player.hasPermission("pvpkits.use.archer"))
            if(event.getAction().equals(Action.LEFT_CLICK_BLOCK))
            if(((Sign)  event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Archer")){
            player.sendMessage(ChatColor.GOLD + "Here Is Your Archer Kit!");
            player.getInventory().clear();
            player.getInventory().setHelmet(new ItemStack(Material.LEATHER_HELMET));
            player.getInventory().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
            player.getInventory().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
            player.getInventory().setBoots(new ItemStack(Material.LEATHER_BOOTS));
            player.getInventory().addItem(new ItemStack(Material.BOW));
            player.getInventory().addItem(new ItemStack(Material.ARROW, 64));
        }
            else if(player.hasPermission("pvpkits.use.tank"))
            if(event.getAction().equals(Action.LEFT_CLICK_BLOCK))
            if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Tank")){
            player.sendMessage(ChatColor.DARK_RED + "Here Is Your Tank Kit!");
            player.getInventory().clear();
            player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
            player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
            player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
            player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
            player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));   
                            }
                        }
                    }
     
  12. Offline

    samosaara

    What is your kind of variable are the sing Field? The method getPlayer() is returning null
     
  13. Offline

    Wolfey

    Can you post that whole class with Java syntax?
    If what he says is correct, doesn't seem like getPlayer() would return with null...
     
  14. Offline

    TheRage66

    Wolfey

    Code:java
    1. package me.TheRage66.PVPKits;
    2.  
    3. import org.bukkit.ChatColor;
    4. import org.bukkit.Material;
    5. import org.bukkit.block.Sign;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.event.EventHandler;
    8. import org.bukkit.event.Listener;
    9. import org.bukkit.event.block.Action;
    10. import org.bukkit.event.block.SignChangeEvent;
    11. import org.bukkit.event.player.PlayerInteractEvent;
    12. import org.bukkit.inventory.ItemStack;
    13.  
    14.  
    15. public class PVPKitsListener implements Listener{
    16.  
    17. public static PVPKits plugin;
    18. public PVPKitsListener(PVPKits pvpKits) {
    19. plugin = pvpKits;
    20. }
    21. @EventHandler
    22. public void onSignChange(SignChangeEvent sign){
    23. Player player = sign.getPlayer();
    24. if(sign.getLine(0).equalsIgnoreCase("[PVPKits]")){
    25. sign.setLine(0, "[PVPKits]");
    26. if(sign.getLine(1).equalsIgnoreCase("Archer")){
    27. player.sendMessage(ChatColor.YELLOW + "[PVPKits]" + ChatColor.AQUA + " Archer Sign Has Been Created!");
    28. }
    29. else if(sign.getLine(0).equalsIgnoreCase("[PVPKits]")){
    30. if(sign.getLine(1).equalsIgnoreCase("Tank")){
    31. player.sendMessage(ChatColor.YELLOW + "[PVPKits]" + ChatColor.AQUA + " Tank Sign Has Been Created!");
    32. }else if(sign.getLine(1).equalsIgnoreCase("RedTeam")){
    33. player.sendMessage(ChatColor.YELLOW + "[PVPKits]" + ChatColor.AQUA + " RedTeam Sign Created!");
    34. }else if(sign.getLine(1).equalsIgnoreCase("BlueTeam")){
    35. player.sendMessage(ChatColor.YELLOW + "[PVPKits]" + ChatColor.AQUA + " BlueTeam Sign Created!");
    36. }
    37. }
    38. }
    39. }
    40. @EventHandler
    41. public void onPlayerInteract(PlayerInteractEvent event){
    42. Player player = event.getPlayer();
    43. if(player.hasPermission("pvpkits.use.archer"))
    44. if(event.getAction().equals(Action.LEFT_CLICK_BLOCK))
    45. if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Archer")){
    46. player.sendMessage(ChatColor.GOLD + "Here Is Your Archer Kit!");
    47. player.getInventory().clear();
    48. player.getInventory().setHelmet(new ItemStack(Material.LEATHER_HELMET));
    49. player.getInventory().setChestplate(new ItemStack(Material.LEATHER_CHESTPLATE));
    50. player.getInventory().setLeggings(new ItemStack(Material.LEATHER_LEGGINGS));
    51. player.getInventory().setBoots(new ItemStack(Material.LEATHER_BOOTS));
    52. player.getInventory().addItem(new ItemStack(Material.BOW));
    53. player.getInventory().addItem(new ItemStack(Material.ARROW, 64));
    54. }
    55. else if(player.hasPermission("pvpkits.use.tank"))
    56. if(event.getAction().equals(Action.LEFT_CLICK_BLOCK))
    57. if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Tank")){
    58. player.sendMessage(ChatColor.DARK_RED + "Here Is Your Tank Kit!");
    59. player.getInventory().clear();
    60. player.getInventory().addItem(new ItemStack(Material.WOOD_SWORD));
    61. player.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
    62. player.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
    63. player.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
    64. player.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
    65. }
    66. }
    67. }

    And i looked at the wrong line its actually the if(sign.getLine(0).equalsIgnoreCase("[PVPKits]")){ :p
     
  15. Offline

    PolarCraft

    TheRage66 Check your properties and see if 1.6.4 is there.
     
  16. Offline

    TheRage66

    PolarCraft I am not using 1.6.4 I used the latest 1.7 dev build..

    Anyone know how to fix the error I can't seem to figure it out.

    EDIT: Nvm figured it out changed a few lines this is the new code:
    From:
    Code:java
    1. Player player = event.getPlayer();
    2. if(player.hasPermission("pvpkits.use.archer"))
    3. if(event.getAction().equals(Action.LEFT_CLICK_BLOCK))
    4. if(((Sign) event.getClickedBlock().getState()).getLine(1).equalsIgnoreCase("Archer


    To:
    Code:java
    1. if(event.getAction() == Action.LEFT_CLICK_BLOCK) {
    2. if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST) {
    3. String[] line = sign.getLines();
    4. if(line[1].equalsIgnoreCase("Tank")) {


    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 5, 2016
Thread Status:
Not open for further replies.

Share This Page