NullPointerException when setting a Block and String array in a HashMap.

Discussion in 'Plugin Development' started by iTristan, Feb 22, 2014.

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

    iTristan

    Hello, I am having a bug in a plugin I am currently writing that has me totally stumped. I am trying to associate a String array to a Block using a HashMap.

    Here's my code:
    Code:java
    1. //Map
    2. public Map<Block, String[]> statusSigns;
    3.  
    4. //Inside onEnable
    5. statusSigns = new HashMap<Block, String[]>();
    6.  
    7. //Function that stores the info in the HashMap
    8. public void storeStatusSigns() {
    9. String[] string = new String[2];
    10. for (String key : config.getKeys(false)) {
    11. for (String key2 : config.getConfigurationSection(key + ".statussigns").getKeys(false)) {
    12. //Bukkit.broadcastMessage("Stored sign @ " + new Location(Bukkit.getWorld(config.getString(key + ".statussigns." + key2 + ".world")), config.getInt(key + ".statussigns." + key2 + ".x"), config.getInt(key + ".statussigns." + key2 + ".y"), config.getInt(key + ".statussigns." + key2 + ".z")).toString());
    13. Block target = new Location(Bukkit.getWorld(config.getString(key + ".statussigns." + key2 + ".world")), config.getInt(key + ".statussigns." + key2 + ".x"), config.getInt(key + ".statussigns." + key2 + ".y"), config.getInt(key + ".statussigns." + key2 + ".z")).getBlock();
    14. string[0] = key;
    15. string[1] = key2;
    16. getLogger().info(key + ".statussigns." + key2 + ".world");
    17. try {
    18. statusSigns.put(target, string);
    19. } catch (Exception e) {
    20. e.printStackTrace();
    21. }
    22. }
    23. }
    24. }


    Line 94 (statusSigns.put(target, string);) causes the NPE.

    Stacktrace:

    Code:
    [07:16:47 WARN]: java.lang.NullPointerException
    [07:16:47 WARN]:        at org.tzone.tristan.arena.Arena.storeStatusSigns(Arena.java:94)
    [07:16:47 WARN]:        at org.tzone.tristan.arena.Arena.onEnable(Arena.java:42)
    [07:16:47 WARN]:        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:218)
    [07:16:47 WARN]:        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:457)
    [07:16:47 WARN]:        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:385)
    [07:16:47 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.loadPlugin(CraftServer.java:302)
    [07:16:47 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.enablePlugins(CraftServer.java:284)
    [07:16:47 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.reload(CraftServer.java:639)
    [07:16:47 WARN]:        at org.bukkit.Bukkit.reload(Bukkit.java:279)
    [07:16:47 WARN]:        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:24)
    [07:16:47 WARN]:        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:196)
    [07:16:47 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchCommand(CraftServer.java:546)
    [07:16:47 WARN]:        at org.bukkit.craftbukkit.v1_7_R1.CraftServer.dispatchServerCommand(CraftServer.java:533)
    [07:16:47 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.aw(DedicatedServer.java:309)
    [07:16:47 WARN]:        at net.minecraft.server.v1_7_R1.DedicatedServer.u(DedicatedServer.java:274)
    [07:16:47 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.t(MinecraftServer.java:540)
    [07:16:47 WARN]:        at net.minecraft.server.v1_7_R1.MinecraftServer.run(MinecraftServer.java:446)
    [07:16:47 WARN]:        at net.minecraft.server.v1_7_R1.ThreadServerApplication.run(SourceFile:617)
    Any help would be greatly appreciated.
    -Tristan
     
  2. Offline

    Stoux

    That is indeed weird. Add some debugging statements?

    Code:java
    1. try {
    2.  
    3. System.out.println("Map is null: " + String.valueOf(statusSigns == null));
    4. System.out.println("Target is null: " + String.valueOf(target == null));
    5. System.out.println("String is null: " + String.valueOf(string == null)); //This should be impossible, as it would have thrown an nullpointer earlier on
    6.  
    7. statusSigns.put(target, string);
    8.  
    9. } catch (Exception ~
     
  3. Offline

    Rocoty

    Can you post the whole onEnable method?
     
Thread Status:
Not open for further replies.

Share This Page