Solved Scoreboard Help?

Discussion in 'Plugin Development' started by TheRedstoneGuy, Aug 17, 2015.

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

    TheRedstoneGuy

    Hello everyone, I have recently started taking an interest into developing plugins.
    Right now I am currently working on a factions Scoreboard (& other misc thrown in) for my server. Right now i am having trouble setting the scoreboard on a player and adding that player to a team.

    Code:
        public void onEnable() {
           
            PluginManager pm = Bukkit.getServer().getPluginManager();
            pm.registerEvents(this, this);
           
            new PlayerListener(this);
           
            @EventHandler
            public void onPlayerJoin(PlayerJoinEvent event); {
                Player player = event.getPlayer();
                uno.addPlayer(player);
                player.setScoreboard(board);
           
            Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
           
            Objective objective = board.registerNewObjective("Test", "Test2");
            objective.setDisplayName(ChatColor.AQUA + "Test");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
           
            Team uno = board.registerNewTeam("default");
           
            MPlayer mp = MPlayer.get(player);
           
            Score score = objective.getScore(ChatColor.DARK_RED + "Online Players:");
            score.setScore(Bukkit.getOnlinePlayers().size());
            Score score2 = objective.getScore(ChatColor.DARK_RED + "Current Faction:");
            score2.setScore(2);
           
            Score score3 = objective.getScore(ChatColor.GOLD + "" + mp.getFaction());
            score3.setScore(3);
            Score score4 = objective.getScore(ChatColor.GOLD + "Faction Power:");
            score4.setScore(Bukkit.getSpawnRadius());
           
            @SuppressWarnings("deprecation")
            Score score5 = objective.getScore(ChatColor.DARK_RED + "Welcome" + Bukkit.getOfflinePlayer(player.getName()) + "!");
            score5.setScore(1);
            }
    Thank you for displaying interest in my thread, I hope you can help!
     
  2. Offline

    Lolmewn

    Did you throw that event inside of your onEnable function? That's not gonna work \o/
     
    TheRedstoneGuy likes this.
  3. Offline

    TheRedstoneGuy

    Now i have moved it to my main, still, no dice.
    Code:
            @EventHandler
            public void onPlayerJoin(PlayerJoinEvent event); {
                Player player = event.getPlayer();
                uno.addPlayer(player);
                player.setScoreboard(board);
           
            Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
           
            Objective objective = board.registerNewObjective("Test", "Test2");
            objective.setDisplayName(ChatColor.AQUA + "Test");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
           
            Team uno = board.registerNewTeam("default");
           
            MPlayer mp = MPlayer.get(player);
           
            Score score = objective.getScore(ChatColor.DARK_RED + "Online Players:");
            score.setScore(Bukkit.getOnlinePlayers().size());
            Score score2 = objective.getScore(ChatColor.DARK_RED + "Current Faction:");
            score2.setScore(2);
           
            Score score3 = objective.getScore(ChatColor.GOLD + "" + mp.getFaction());
            score3.setScore(3);
            Score score4 = objective.getScore(ChatColor.GOLD + "Faction Power:");
            score4.setScore(Bukkit.getSpawnRadius());
           
            @SuppressWarnings("deprecation")
            Score score5 = objective.getScore(ChatColor.DARK_RED + "Welcome" + Bukkit.getOfflinePlayer(player.getName()) + "!");
            score5.setScore(1);
            }
     
  4. Offline

    griffjack

    Now all your other code is in your PlayerJoinEvent. This means it all runs when every player joins.

    Edit: You only need to set the players scoreboard, the rest only needs to be ran once.
     
    Last edited: Aug 17, 2015
    TheRedstoneGuy likes this.
  5. Offline

    TheRedstoneGuy

    But do i leave the rest of the Scoreboard in onEnable? or do i move it out like so? Also i have another playerlistener class but i cannot figure out how to retrieve board in player.setScoreboard(board); from the main class (scoreboard location) & Same goes for the team uno in uno.addPlayer(player);

    Sorry if there is some really stupid answer to this that I am not aware of.

    Code:
    package me.colin.bukkit;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.Team;
    
    import com.massivecraft.factions.entity.MPlayer;
    
    public class Heregoesnothing extends JavaPlugin implements Listener {
    
        public void onEnable() {
          
            PluginManager pm = Bukkit.getServer().getPluginManager();
            pm.registerEvents(this, this);
          
            new PlayerListener(this);
          
            }
    
            public void makeScoreboard(Player player) {
            Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
          
            Objective objective = board.registerNewObjective("Test", "Test2");
            objective.setDisplayName(ChatColor.AQUA + "Test");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
          
            Team uno = board.registerNewTeam("default");
          
            MPlayer mp = MPlayer.get(player);
          
            Score score = objective.getScore(ChatColor.DARK_RED + "Online Players:");
            score.setScore(Bukkit.getOnlinePlayers().size());
            Score score2 = objective.getScore(ChatColor.DARK_RED + "Current Faction:");
            score2.setScore(2);
          
            Score score3 = objective.getScore(ChatColor.GOLD + "" + mp.getFaction());
            score3.setScore(3);
            Score score4 = objective.getScore(ChatColor.GOLD + "Faction Power:");
            score4.setScore(Bukkit.getSpawnRadius());
          
            @SuppressWarnings("deprecation")
            Score score5 = objective.getScore(ChatColor.DARK_RED + "Welcome" + Bukkit.getOfflinePlayer(player.getName()) + "!");
            score5.setScore(1);
          
            @EventHandler
            public void onPlayerJoin(PlayerJoinEvent event); {
                Player player = event.getPlayer();
                uno.addPlayer(player);
                player.setScoreboard(board);
          
            }
        }
    
        public void onDisable() {
          
            saveConfig();
      
        }
      
    
    }
     
  6. Offline

    lilian58660

    (PlayerJoinEvent event);{
    delete the ;
     
  7. Offline

    TheRedstoneGuy

    Okay, So I managed to get it to the point with no errors. Yet every time on playerjoin, it fails to pass the event to my plugin.

    Main Class:
    Code:
    package me.colin.bukkit;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    
    import com.massivecraft.factions.entity.MPlayer;
    
    public class Heregoesnothing extends JavaPlugin implements Listener {
          
        private Scoreboard board;
        private Objective objective;
       
        public void onEnable() {       
            getServer().getPluginManager().registerEvents(this, this);
           
            new PlayerListener(this);
           
                board = Bukkit.getScoreboardManager().getNewScoreboard();
           
            Objective objective = board.registerNewObjective("Test", "Test2");
            objective.setDisplayName(ChatColor.AQUA + "Test");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
           
            Score score = objective.getScore(ChatColor.DARK_RED + "Online Players:");
            score.setScore(Bukkit.getOnlinePlayers().size());
           
            Score score2 = objective.getScore(ChatColor.DARK_RED + "Current Faction:");
            score2.setScore(2);
           
            Score score4 = objective.getScore(ChatColor.GOLD + "Faction Power:");
            score4.setScore(Bukkit.getSpawnRadius());
           
            }
       
        public void onDisable() {
        }
       
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            MPlayer mp = MPlayer.get(player);
            Score score3 = objective.getScore(ChatColor.GOLD + "" + mp.getFaction());
            score3.setScore(3);
            Score score5 = objective.getScore(ChatColor.DARK_RED + "Welcome " + player.getName().toString() + "!");
            score5.setScore(1);
            player.setScoreboard(board);
       
        }
    }
    Error message from console:

    Error message (open)

    [18:20:37] [Server thread/ERROR]: Could not pass event PlayerJoinEvent to RedsPlugin v4.2.0
    org.bukkit.event.EventException
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerList.onPlayerJoin(PlayerList.java:272) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.PlayerList.a(PlayerList.java:156) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.LoginListener.b(LoginListener.java:109) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.LoginListener.c(LoginListener.java:41) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.NetworkManager.a(NetworkManager.java:159) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.ServerConnection.c(ServerConnection.java:82) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:800) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_51]
    Caused by: java.lang.NullPointerException
    at me.colin.bukkit.Heregoesnothing.onPlayerJoin(Heregoesnothing.java:68) ~[?:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_51]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_51]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_51]
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[Spigot18.jar:git-Spigot-c3c767f-33d5de3]
    ... 14 more
     
Thread Status:
Not open for further replies.

Share This Page