Solved Scoreboard error

Discussion in 'Plugin Development' started by Dmrtje, Jul 21, 2014.

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

    Dmrtje

    I have an error with my scoreboard and i don't know what to do

    Scoreboard class:

    Code:java
    1. package me.timmaker.pixarcraft.scoreboard;
    2.  
    3. import me.timmaker.pixarcraft.PixarCraft;
    4.  
    5. import org.bukkit.Bukkit;
    6. import org.bukkit.ChatColor;
    7. import org.bukkit.entity.Player;
    8. import org.bukkit.event.EventHandler;
    9. import org.bukkit.event.Listener;
    10. import org.bukkit.event.player.PlayerJoinEvent;
    11. import org.bukkit.scoreboard.DisplaySlot;
    12. import org.bukkit.scoreboard.Objective;
    13. import org.bukkit.scoreboard.Score;
    14. import org.bukkit.scoreboard.Scoreboard;
    15. import org.bukkit.scoreboard.ScoreboardManager;
    16.  
    17. public class PixarBoard implements Listener {
    18.  
    19. protected static ScoreboardManager manager = Bukkit.getScoreboardManager();
    20. protected static Scoreboard board = manager.getNewScoreboard();
    21. protected static Objective objective = board.registerNewObjective("obj", "dummy");
    22.  
    23.  
    24. public static void setupScoreboard() {
    25.  
    26. Score uniekeSpelers = objective.getScore(ChatColor.WHITE + "Unieke spelers");
    27.  
    28. objective.setDisplayName(ChatColor.GOLD + "" + ChatColor.BOLD + "PixarCraft");
    29. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
    30. uniekeSpelers.setScore(PixarCraft.getInstance().playerInfo.getInt("us"));
    31.  
    32. for (Player p : Bukkit.getOnlinePlayers()) {
    33. p.setScoreboard(board);
    34. }
    35. }
    36.  
    37.  
    38. @EventHandler
    39. public void onPlayerFirstJoin(PlayerJoinEvent e) {
    40. if (e.getPlayer().hasPlayedBefore()) {
    41. PixarCraft.getInstance().playerInfo.set("us", PixarCraft.getInstance().playerInfo.getInt("us") + 1);
    42. }else return;
    43. }
    44.  
    45. }
    46.  


    Main class:
    Code:java
    1. package me.timmaker.pixarcraft;
    2.  
    3. import me.timmaker.pixarcraft.resources.config.MyConfig;
    4. import me.timmaker.pixarcraft.resources.config.MyConfigManager;
    5. import me.timmaker.pixarcraft.scoreboard.PixarBoard;
    6. import net.milkbowl.vault.economy.Economy;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.plugin.RegisteredServiceProvider;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11.  
    12. public class PixarCraft extends JavaPlugin {
    13.  
    14. public static Economy economy = null;
    15.  
    16. private static PixarCraft instance;
    17.  
    18. MyConfigManager manager;
    19. public MyConfig playerInfo;
    20.  
    21. public void onEnable() {
    22. PixarBoard.setupScoreboard();
    23.  
    24. manager = new MyConfigManager(this);
    25. playerInfo = manager.getNewConfig("Speler info - niet veranderen- .yml");
    26.  
    27. Bukkit.getPluginManager().registerEvents(new PixarBoard(), this);
    28.  
    29. instance = this;
    30. }
    31.  
    32. public void onDisable() {
    33.  
    34. }
    35.  
    36. private boolean setupEconomy()
    37. {
    38. RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
    39. if (economyProvider != null) {
    40. economy = economyProvider.getProvider();
    41. }
    42.  
    43. return (economy != null);
    44. }
    45.  
    46. public static PixarCraft getInstance() {
    47. return instance;
    48. }
    49.  
    50. }
    51.  


    Error:
    Code:java
    1. [21:20:51] [Server thread/INFO]: [PixarCraft] Enabling PixarCraft v0.0.2
    2. [21:20:51] [Server thread/ERROR]: Error occurred while enabling PixarCraft v0.0.2 (Is it up to date?)
    3. at me.timmaker.pixarcraft.scoreboard.PixarBoard.setupScoreboard(PixarBoard.java:30) ~[?:?]
    4. at me.timmaker.pixarcraft.PixarCraft.onEnable(PixarCraft.java:22) ~[?:?]
    5. at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    6. at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:324) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    7. at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    8. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.loadPlugin(CraftServer.java:446) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    9. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.enablePlugins(CraftServer.java:380) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    10. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.reload(CraftServer.java:799) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    11. at org.bukkit.Bukkit.reload(Bukkit.java:288) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    12. at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    13. at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:180) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    14. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchCommand(CraftServer.java:701) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    15. at org.bukkit.craftbukkit.v1_7_R3.CraftServer.dispatchServerCommand(CraftServer.java:688) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    16. at net.minecraft.server.v1_7_R3.DedicatedServer.aB(DedicatedServer.java:296) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    17. at net.minecraft.server.v1_7_R3.DedicatedServer.v(DedicatedServer.java:261) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    18. at net.minecraft.server.v1_7_R3.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    19. at net.minecraft.server.v1_7_R3.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
    20. at net.minecraft.server.v1_7_R3.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.1-10-g8688bd4-b3092jnks]
     
  2. Offline

    Flegyas

    You're getting a NullPointer because first you call PixarBoard.setupScoreboard(); on line 22 of PixarCraft but you do instance = this only at the end of the onEnable method of PixarCraft and when setupScoreboard use getInstance() he gets a null object. The solution is moving the instance = null on the first line of onEnable() in PixarCraft.
     
  3. Offline

    adam753

    setupScoreboard() uses Main.instance, but in onEnable you're calling setupScoreboard before you set Main.instance, so it's null at that time.
     
  4. Offline

    Dmrtje

    adam753 Flegyas still getting the same error

    Main Class:
    Code:java
    1. package me.timmaker.pixarcraft;
    2.  
    3. import me.timmaker.pixarcraft.resources.config.MyConfig;
    4. import me.timmaker.pixarcraft.resources.config.MyConfigManager;
    5. import me.timmaker.pixarcraft.scoreboard.PixarBoard;
    6. import net.milkbowl.vault.economy.Economy;
    7.  
    8. import org.bukkit.Bukkit;
    9. import org.bukkit.plugin.RegisteredServiceProvider;
    10. import org.bukkit.plugin.java.JavaPlugin;
    11.  
    12. public class PixarCraft extends JavaPlugin {
    13.  
    14. public static Economy economy = null;
    15.  
    16. private static PixarCraft instance;
    17.  
    18. MyConfigManager manager;
    19. public MyConfig playerInfo;
    20.  
    21. public void onEnable() {
    22.  
    23. instance = this;
    24.  
    25. PixarBoard.setupScoreboard();
    26.  
    27. manager = new MyConfigManager(this);
    28. playerInfo = manager.getNewConfig("Speler info - niet veranderen- .yml");
    29.  
    30. Bukkit.getPluginManager().registerEvents(new PixarBoard(), this);
    31.  
    32. }
    33.  
    34. public void onDisable() {
    35.  
    36. }
    37.  
    38. private boolean setupEconomy()
    39. {
    40. RegisteredServiceProvider<Economy> economyProvider = getServer().getServicesManager().getRegistration(net.milkbowl.vault.economy.Economy.class);
    41. if (economyProvider != null) {
    42. economy = economyProvider.getProvider();
    43. }
    44.  
    45. return (economy != null);
    46. }
    47.  
    48. public static PixarCraft getInstance() {
    49. return instance;
    50. }
    51.  
    52. }
    53.  
     
  5. Offline

    daavko

    Dmrtje Put these two lines:
    Code:java
    1. manager = new MyConfigManager (this);
    2. playerInfo = manager.getNewConfig ("Speler info - niet veranderen- .yml");


    Before this line:
    Code:java
    1. PixarBoard.setupScoreboard();


    So it will look like this:
    Code:java
    1. manager = new MyConfigManager (this);
    2. playerInfo = manager.getNewConfig ("Speler info - niet veranderen- .yml");
    3. PixarBoard.setupScoreboard();
     
  6. Offline

    Dmrtje

    daavko gonna test it right now.

    *EDIT*
    It worked thanks to everyone that helped me.
     
  7. Offline

    fireblast709

    Eew so much static abuse
     
Thread Status:
Not open for further replies.

Share This Page