Solved PlayerInteractEvent giving error

Discussion in 'Plugin Development' started by dajako, Dec 23, 2013.

Thread Status:
Not open for further replies.
  1. Code:
    Code:
    @EventHandler
    public void specialSign(PlayerInteractEvent event) {
    if(event.getClickedBlock().getType() == Material.SIGN_POST || event.getClickedBlock().getType() == Material.WALL_SIGN || event.getClickedBlock().getType() == Material.SIGN) {
    Player p = event.getPlayer();
    BlockState state = event.getClickedBlock().getState();
     
    if (state instanceof Sign) {
    final Sign s = (Sign)state;
     
    Location loc = p.getLocation();
         
    if(s.getLine(0).equals("[BED]") || s.getLine(0).equals(ChatColor.GREEN + "[BED]")){
    int x = getConfig().getInt(p.getName() + ".bed.X");
    int y = getConfig().getInt(p.getName() + ".bed.Y");
    int z = getConfig().getInt(p.getName() + ".bed.Z");
    loc.setX(x);
    loc.setY(y);
    loc.setZ(z);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[BED]");
    s.update();
    }
     
    if(s.getLine(0).equals("[SPAWN1]") || s.getLine(0).equals(ChatColor.GREEN + "[SPAWN1]")){
    loc.setX(0);
    loc.setY(80);
    loc.setZ(0);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[SPAWN1]");
    s.update();
    }
     
    if(s.getLine(0).equals("[SPAWN2]") || s.getLine(0).equals(ChatColor.GREEN + "[SPAWN2]")){
    loc.setX(-1000);
    loc.setY(80);
    loc.setZ(-1000);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[SPAWN2]");
    s.update();
    }
     
    if(s.getLine(0).equals("[SPAWN3]") || s.getLine(0).equals(ChatColor.GREEN + "[SPAWN3]")){
    loc.setX(1000);
    loc.setY(80);
    loc.setZ(1000);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[SPAWN3]");
    s.update();
    }
     
    if(s.getLine(0).equals("[SPAWN4]") || s.getLine(0).equals(ChatColor.GREEN + "[SPAWN4]")){
    loc.setX(-1000);
    loc.setY(80);
    loc.setZ(1000);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[SPAWN4]");
    s.update();
    }
     
    if(s.getLine(0).equals("[SPAWN5]") || s.getLine(0).equals(ChatColor.GREEN + "[SPAWN5]")){
    loc.setX(1000);
    loc.setY(80);
    loc.setZ(-1000);
    loc.getChunk().load();
    p.teleport(loc);
    s.setLine(0, ChatColor.GREEN + "[SPAWN5]");
    s.update();
    }
                }
            }
    }
    Error:
    Code:
    [00:47:22 ERROR]: Could not pass event PlayerInteractEvent to Apoc v1.0
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:427) ~[bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:477) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:462) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callPlayerInte
    ractEvent(CraftEventFactory.java:191) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220
    179-b2948jnks]
            at org.bukkit.craftbukkit.v1_7_R1.event.CraftEventFactory.callPlayerInte
    ractEvent(CraftEventFactory.java:161) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220
    179-b2948jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    :966) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInArmAnimation.a(SourceFile:43
    ) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInArmAnimation.handle(SourceFi
    le:9) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    ) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [bukk
    it.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    51) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    41) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :453) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
    Caused by: java.lang.NullPointerException
            at me.dajakos.apoc.apoc.specialSign(apoc.java:326) ~[?:?]
            at sun.reflect.GeneratedMethodAccessor115.invoke(Unknown Source) ~[?:?]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .6.0_24]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.6.0_24]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:425) ~[bukkit.jar:git-Bukkit-1.6.4-R2.0-34-g2220179-b2948jnks]
            ... 15 more
    >
    >
    Line 326:
    Code:
    if(event.getClickedBlock().getType() == Material.SIGN_POST || event.getClickedBlock().getType() == Material.WALL_SIGN || event.getClickedBlock().getType() == Material.SIGN) {

    Thanks to anyone who helps! :)
     
  2. Offline

    xTigerRebornx

    dajako Check if event.getClickedBlock() != null before checking if it is a sign (and whatever else you are checking)
     
  3. Offline

    CorePvP

    if(e.getClickedBlock instanceof Sign) {

    Sign s = ....
     
  4. Offline

    xTigerRebornx

    CorePvP Its giving null because you are clicking air, you need to check if the block clicked isn't null before you can check if it is an instanceof Sign
     

  5. Code:
    if (event.getClickedBlock() != null) {}else{
            if(event.getClickedBlock().getType() == Material.SIGN_POST || event.getClickedBlock().getType() == Material.WALL_SIGN || event.getClickedBlock().getType() == Material.SIGN) {
    Is this correct? I am still getting the error whenever I punch or right click anything.
     
  6. Offline

    xTigerRebornx

    dajako No, its close, but not correct

    Code:
    if (event.getClickedBlock() != null){
            if(event.getClickedBlock().getType() == Material.SIGN_POST || event.getClickedBlock().getType() == Material.WALL_SIGN || event.getClickedBlock().getType() == Material.SIGN) {
     
    dajako likes this.
  7. OMG, derp :)
    I didn't see the !. :)
     
Thread Status:
Not open for further replies.

Share This Page