Multiple ScoreBoards Problem.

Discussion in 'Plugin Development' started by vasil7112, Aug 23, 2013.

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

    vasil7112

    I want to create a ScoreBoard per player so the players can navigate easily through some of their stuff, e.x points.
    Here is the code i made:
    PlayerListener:
    Code:java
    1. package me.vasil7112.<plugin>
    2.  
    3. import org.bukkit.event.player.PlayerJoinEvent;
    4. ..//And other imports
    5.  
    6.  
    7. public class PlayerListener implements Listener{
    8. public static Main plugin;
    9. public static void init(Main i){
    10. plugin = i;
    11. }
    12.  
    13. @EventHandler(priority=EventPriority.HIGHEST)
    14. public void onJoin(PlayerJoinEvent e){
    15. Player player = e.getPlayer();
    16.  
    17. ScoreBoards.Instance.updateScoreBoard(player); //LINE WITH ERROR
    18. }
    19.  
    20. @EventHandler(priority=EventPriority.HIGHEST)
    21. public void onPlayerChat(AsyncPlayerChatEvent e) {
    22. }//and other events....
    23. }

    ScoreBoardListener..
    Code:java
    1. package me.vasil7112.<plugin>;
    2.  
    3. import org.bukkit.Bukkit;
    4. ...//And other imports
    5. //ScoreBoard Imports
    6. import org.bukkit.scoreboard.DisplaySlot;
    7. import org.bukkit.scoreboard.Objective;
    8. import org.bukkit.scoreboard.Scoreboard;
    9. import org.bukkit.scoreboard.ScoreboardManager;
    10.  
    11.  
    12. public class ScoreBoards implements Listener{
    13. public static Main plugin;
    14. public static ScoreBoards Instance;
    15. ScoreboardManager manager = Bukkit.getScoreboardManager();;
    16. Scoreboard board = manager.getNewScoreboard();
    17. Objective objective;
    18.  
    19. public static void init(Main i){
    20. plugin = i;
    21. }
    22.  
    23. public ScoreBoards(){
    24. Instance = this;
    25. }
    26.  
    27. //Update scoreboards for all players
    28. public void updateScoreBoards(){
    29. for(Player player : Bukkit.getServer().getOnlinePlayers()){
    30. objective = board.registerNewObjective("SB_" + player.getName(), "dummy");
    31. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    32. objective.setDisplayName("Status");
    33. objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Points:")).
    34. setScore(Main.Instance.getConfig().getInt("PlayerStats." + player.getName() + ".points"));
    35. player.setScoreboard(board);
    36. }
    37. }
    38. //Update ScoreBoard for a specific player
    39. public void updateScoreBoard(Player player){
    40. objective = board.registerNewObjective("SB" , "dummy");
    41. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    42. objective.setDisplayName("Status");
    43. objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Points:")).
    44. setScore(1); // in this case i don't use the config just for testing.
    45. player.setScoreboard(board);
    46. }
    47. }


    ERROR RECIEVED:
    Code:
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:30)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:478)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:463)
        at net.minecraft.server.v1_6_R2.PlayerList.c(PlayerList.java:208)
        at net.minecraft.server.v1_6_R2.PlayerList.a(PlayerList.java:104)
        at net.minecraft.server.v1_6_R2.PendingConnection.e(PendingConnection.java:136)
        at net.minecraft.server.v1_6_R2.PendingConnection.d(PendingConnection.java:48)
        at org.spigotmc.netty.NettyServerConnection.b(NettyServerConnection.java:132)
        at net.minecraft.server.v1_6_R2.MinecraftServer.t(MinecraftServer.java:592)
        at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:239)
        at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:481)
        at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java:413)
        at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:582)
    Caused by: java.lang.NullPointerException
        at me.vasil7112.<plugin>.listeners.PlayerListener.onJoin(PlayerListener.java:28) //Check PlayerListener
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        ... 14 more
    It was really weird, so i took everything from scoreboard listener and pasted it to the player listener to check(Because i couldn't find something to be null)
    Code:java
    1. //Imports e.t.c
    2. public void onJoin(PlayerJoinEvent e){
    3. Player player = e.getPlayer();
    4. objective = board.registerNewObjective("SB" , "dummy");
    5. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    6. objective.setDisplayName("Status");
    7. objective.getScore(Bukkit.getOfflinePlayer(ChatColor.GREEN + "Points:")).
    8. setScore(1);
    9. player.setScoreboard(board);
    10. }

    And for some reason it worked.
    But that isn't what i want. I want to have a listener to fire the commands. (ScoreBoardsListener)
    Hopefully someone can help.
    Kind regards
     
  2. Offline

    Tirelessly

    Scoreboards.Instance is null.
     
  3. Offline

    vasil7112

    Ah yeah!
    And all this time i was trying to find the mistake after Scoreboards.Instance
    Thanks alot, i fixed it:)
     
Thread Status:
Not open for further replies.

Share This Page