Solved Java doesn't like me.

Discussion in 'Plugin Development' started by Unica, Sep 6, 2014.

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

    Unica

    So, I get an NullPointerException, fair enough.
    I change my code blablabla, and I get the same NPE, on the same line.
    The difference is, that line contains a comment :l.

    The problem, I seem to get errors only on line 35, doesn't matter what I put there.
    When I use a debug message on my BlockBreakEvent, it doesn't even get fired.
    Waaht?

    BlockBreak
    Code:java
    1.  
    2. private Strikerz m;
    3. public BlockBreak(Strikerz instance){
    4. m = instance;
    5. }
    6.  
    7. public static HashMap<String, Integer> crux_health_black = new HashMap<String, Integer>();
    8. public static HashMap<String, Integer> crux_health_white = new HashMap<String, Integer>();
    9.  
    10. int max_health_black = 20;
    11. int max_health_white = 20;
    12.  
    13. @EventHandler
    14. public void onBreak(BlockBreakEvent e){
    15. System.out.println("EVENT FIRED"); //Doesn't show.
    16. Block b = e.getBlock();
    17. Player p = e.getPlayer(); //Line 35
    18. if(p.getGameMode() != GameMode.CREATIVE){
    19. e.setCancelled(true);
    20. }
    21. if(!(m.ingame.isIngame(p))) return;


    - Did you register.. ?
    Yes. Else I wouldn't get an error when I mined something.

    Stacktrace
    Code:
    [17:59:12 ERROR]: Could not pass event BlockBreakEvent to Strikerz v0.1
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:320) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:481) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:466) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.PlayerInteractManager.breakBlock(PlayerI
    nteractManager.java:263) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b299
    1jnks]
            at net.minecraft.server.v1_7_R1.PlayerInteractManager.a(PlayerInteractMa
    nager.java:191) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.PlayerConnection.a(PlayerConnection.java
    :548) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInBlockDig.a(SourceFile:53) [c
    raftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.PacketPlayInBlockDig.handle(SourceFile:8
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.NetworkManager.a(NetworkManager.java:146
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.ServerConnection.c(SourceFile:134) [craf
    tbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.u(MinecraftServer.java:6
    55) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:2
    50) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:5
    45) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java
    :457) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:6
    17) [craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
    Caused by: java.lang.NullPointerException
            at me.dubehh.Listeners.BlockBreak.onBreak(BlockBreak.java:35) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    _67]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    _67]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .7.0_67]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:318) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.2-14-g15b04d8-b2991jnks]
            ... 15 more

     
  2. Offline

    Rmarmorstein

    Post the Entire BlockBreak class so we can see what line 35 is.
     
  3. Offline

    Unica

    Rmarmorstein Unica

    It seems my OnDamage event also doesn't get fired.
    There must be something wrong with the constructor :eek:
     
  4. Offline

    Necrodoom

    Your error description makes no sense, paste full class please.
     
  5. Offline

    Rocoty


    The stacktrace you are getting is not from the code posted. Reasoning:
    For one, the debug message you added does not print (as stated by yourself).
    And there is no possible way an NPE could be thrown at that line, because that would imply that e points to null. Which it can't because the previous line goes through just fine.

    My suggestion is that you recompile the project and make sure you upload the new version to your server and then restart the server and run the code again. Then post the new code and stacktrace here.
     
  6. Offline

    Unica

    Rocoty Necrodoom
    I will test in 20 minutes, i'll let you guys now (and post full code)

    Rocoty Necrodoom

    Block Break
    Code:java
    1. public class BlockBreak implements Listener{
    2.  
    3. private Strikerz m;
    4. public BlockBreak(Strikerz instance){
    5. m = instance;
    6. }
    7.  
    8. public static HashMap<String, Integer> crux_health_black = new HashMap<String, Integer>();
    9. public static HashMap<String, Integer> crux_health_white = new HashMap<String, Integer>();
    10.  
    11. int max_health_black = 20;
    12. int max_health_white = 20;
    13.  
    14. @EventHandler
    15. public void onBreak(BlockBreakEvent e){
    16. System.out.println("EVENT FIRED");
    17. Block b = e.getBlock();
    18. Player p = e.getPlayer();
    19. if(p.getGameMode() != GameMode.CREATIVE){
    20. e.setCancelled(true);
    21. }
    22. if(!(m.ingame.isIngame(p))) return;
    23. String arenaName = m.ingame.getCurrentArena(p);
    24. if(m.cruxloc.isBlackCrux(b, arenaName.toLowerCase()) || m.cruxloc.isWhiteCrux(b, arenaName.toLowerCase())){
    25. if(m.cruxloc.isBlackCrux(b, arenaName.toLowerCase())){
    26. if(m.teams.isBlack(p)) return;
    27. updateBlackHealth(arenaName);
    28. for(Player all : Bukkit.getOnlinePlayers()){
    29. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    30. all.sendMessage(GRAY+"Warning! "+RED+p.getName()+GRAY+" damaged the "+DARK_GRAY+"Black Crux"+GRAY+"!");
    31. all.playSound(p.getLocation(), Sound.ANVIL_LAND, 4, 0);
    32. }
    33. }
    34. if(checkBlack(arenaName)){
    35. for(Player all : Bukkit.getOnlinePlayers()){
    36. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    37. all.sendMessage(GRAY+"Game over! "+AQUA+getWinner(arenaName)+GRAY+" won the game!");
    38. }
    39. }
    40. m.arena_stop.stopArenaTiming(arenaName.toLowerCase());
    41. }
    42. return;
    43.  
    44. }
    45. if(m.cruxloc.isWhiteCrux(b, arenaName.toLowerCase())){
    46. if(m.teams.isWhite(p)) return;
    47. updateWhiteHealth(arenaName);
    48. for(Player all : Bukkit.getOnlinePlayers()){
    49. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    50. all.sendMessage(GRAY+"Warning! "+RED+p.getName()+GRAY+" damaged the "+WHITE+"White Crux"+GRAY+"!");
    51. all.playSound(p.getLocation(), Sound.ANVIL_LAND, 4, 0);
    52. }
    53. }
    54. if(checkWhite(arenaName)){
    55. for(Player all : Bukkit.getOnlinePlayers()){
    56. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    57. all.sendMessage(GRAY+"Game over! "+AQUA+getWinner(arenaName)+GRAY+" won the game!");
    58. }
    59. }
    60. m.arena_stop.stopArena(arenaName.toLowerCase());
    61. }
    62. return;
    63. }
    64. }
    65. }
    66.  
    67. //Alot of small methods here. Can show them, would be quite useless.


    Error;
    Code:
    [18:36:38 ERROR]: Could not pass event BlockBreakEvent to Strikerz v0.1
    org.bukkit.event.EventException
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:294) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:62) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j
    ava:501) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:486) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.PlayerInteractManager.breakBlock(PlayerI
    nteractManager.java:263) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b307
    2jnks]
            at net.minecraft.server.v1_7_R3.PlayerInteractManager.dig(PlayerInteract
    Manager.java:118) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.PlayerConnection.a(PlayerConnection.java
    :536) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.PacketPlayInBlockDig.a(SourceFile:53) [c
    raftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.PacketPlayInBlockDig.handle(SourceFile:8
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.NetworkManager.a(NetworkManager.java:157
    ) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.ServerConnection.c(SourceFile:134) [craf
    tbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.v(MinecraftServer.java:6
    67) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:2
    60) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:5
    58) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java
    :469) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:6
    28) [craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
    Caused by: java.lang.NullPointerException
            at me.dubehh.Listeners.BlockBreak.onBreak(BlockBreak.java:35) ~[?:?]
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.7.0
    _67]
            at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.7.0
    _67]
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1
    .7.0_67]
            at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.7.0_67]
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:292) ~[craftbukkit.jar:git-Bukkit-1.7.2-R0.3-56-g3779cff-b3072jnks]
            ... 15 more
    Update: Once ingame and I hit the 'crux' it works :eek:? But I don't get the debug message.
    EDIT: It kinda works, because when I break a random block the block doesn't drop anything.
    (Get set to air)

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

    Necrodoom

     
    Rmarmorstein likes this.
  8. Offline

    Unica

    Necrodoom
    Like it makes more sense now?
    Code:java
    1. package me.dubehh.Listeners;
    2.  
    3. import java.util.HashMap;
    4.  
    5. import me.dubehh.Main.Strikerz;
    6.  
    7. import org.bukkit.Bukkit;
    8. import org.bukkit.GameMode;
    9. import org.bukkit.Sound;
    10. import org.bukkit.block.Block;
    11. import org.bukkit.entity.Player;
    12. import org.bukkit.event.EventHandler;
    13. import org.bukkit.event.Listener;
    14. import org.bukkit.event.block.BlockBreakEvent;
    15.  
    16. import static org.bukkit.ChatColor.*;
    17.  
    18. public class BlockBreak implements Listener{
    19.  
    20. private Strikerz m;
    21. public BlockBreak(Strikerz instance){
    22. m = instance;
    23. }
    24.  
    25. public static HashMap<String, Integer> crux_health_black = new HashMap<String, Integer>();
    26. public static HashMap<String, Integer> crux_health_white = new HashMap<String, Integer>();
    27.  
    28. int max_health_black = 20;
    29. int max_health_white = 20;
    30.  
    31. @EventHandler
    32. public void onBreak(BlockBreakEvent e){
    33. System.out.println("EVENT FIRED");
    34. Block b = e.getBlock();
    35. Player p = e.getPlayer();
    36. if(p.getGameMode() != GameMode.CREATIVE){
    37. e.setCancelled(true);
    38. }
    39. if(!(m.ingame.isIngame(p))) return;
    40. String arenaName = m.ingame.getCurrentArena(p);
    41. if(m.cruxloc.isBlackCrux(b, arenaName.toLowerCase()) || m.cruxloc.isWhiteCrux(b, arenaName.toLowerCase())){
    42. if(m.cruxloc.isBlackCrux(b, arenaName.toLowerCase())){
    43. if(m.teams.isBlack(p)) return;
    44. updateBlackHealth(arenaName);
    45. for(Player all : Bukkit.getOnlinePlayers()){
    46. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    47. all.sendMessage(GRAY+"Warning! "+RED+p.getName()+GRAY+" damaged the "+DARK_GRAY+"Black Crux"+GRAY+"!");
    48. all.playSound(p.getLocation(), Sound.ANVIL_LAND, 4, 0);
    49. m.sm.updateHits(p);
    50. }
    51. }
    52. if(checkBlack(arenaName)){
    53. for(Player all : Bukkit.getOnlinePlayers()){
    54. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    55. all.sendMessage(GRAY+"Game over! "+AQUA+getWinner(arenaName)+GRAY+" won the game!");
    56. }
    57. }
    58. m.arena_stop.stopArenaTiming(arenaName.toLowerCase());
    59. }
    60. return;
    61.  
    62. }
    63. if(m.cruxloc.isWhiteCrux(b, arenaName.toLowerCase())){
    64. if(m.teams.isWhite(p)) return;
    65. updateWhiteHealth(arenaName);
    66. for(Player all : Bukkit.getOnlinePlayers()){
    67. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    68. all.sendMessage(GRAY+"Warning! "+RED+p.getName()+GRAY+" damaged the "+WHITE+"White Crux"+GRAY+"!");
    69. all.playSound(p.getLocation(), Sound.ANVIL_LAND, 4, 0);
    70. m.sm.updateHits(p);
    71. }
    72. }
    73. if(checkWhite(arenaName)){
    74. for(Player all : Bukkit.getOnlinePlayers()){
    75. if(m.ingame.getCurrentArena(all).equals(arenaName.toLowerCase())){
    76. all.sendMessage(GRAY+"Game over! "+AQUA+getWinner(arenaName)+GRAY+" won the game!");
    77. }
    78. }
    79. m.arena_stop.stopArena(arenaName.toLowerCase());
    80. }
    81. return;
    82. }
    83. }
    84. }
    85.  
    86. private int getBlackHealth(String arenaName){
    87. if(!(crux_health_black.containsKey(arenaName.toLowerCase()))){
    88. crux_health_black.put(arenaName.toLowerCase(), max_health_black);
    89. }
    90. return crux_health_black.get(arenaName.toLowerCase());
    91. }
    92.  
    93. private int getWhiteHealth(String arenaName){
    94. if(!(crux_health_white.containsKey(arenaName.toLowerCase()))){
    95. crux_health_white.put(arenaName.toLowerCase(), max_health_white);
    96. }
    97. return crux_health_white.get(arenaName.toLowerCase());
    98. }
    99.  
    100. private void updateBlackHealth(String arenaName){
    101. int new_black_health = getBlackHealth(arenaName) - 1;
    102. crux_health_black.put(arenaName.toLowerCase(), new_black_health);
    103. }
    104.  
    105. private void updateWhiteHealth(String arenaName){
    106. int new_white_health = getWhiteHealth(arenaName) - 1;
    107. crux_health_white.put(arenaName.toLowerCase(), new_white_health);
    108. }
    109.  
    110. private boolean checkBlack(String arenaName){
    111. if(getBlackHealth(arenaName) == 0) return true;
    112. return false;
    113. }
    114.  
    115. private boolean checkWhite(String arenaName){
    116. if(getWhiteHealth(arenaName) == 0) return true;
    117. return false;
    118. }
    119.  
    120. private String getWinner(String arenaName){
    121. if(getBlackHealth(arenaName) > getWhiteHealth(arenaName)){
    122. return "Black";
    123. }
    124. return "White";
    125. }
    126.  
    127.  
    128. }
     
  9. Offline

    Necrodoom

    Unica the plugin on the server is not the plugin you are pasting code of.
     
  10. Offline

    Unica

    Necrodoom
    I am so sorry.
    You can call me extremely stupid, because it was already working, I was saving my .jar file to a different folder rather than my actual testing server.

    So I was testing the same .jar over again.
     
Thread Status:
Not open for further replies.

Share This Page