Seperated Scoreboards

Discussion in 'Plugin Development' started by S431, Aug 16, 2017.

Thread Status:
Not open for further replies.
  1. I want to give online players a seperate scoreboard.The title & score name will be the same but the score for each player will be different.
    I've made 4 scoreboards but I don't know how to assign them to 4 onlineplayers onPlayerJoinEvent.What should I do?
    P.S how would I save the players score after the server reloads?
    Code:
    public class Main extends JavaPlugin{
        private Scoreboard board;
        private Objective o;
        private Score score;
        private Scoreboard board2;
        private Objective o2;
        private Score score2;
        private Scoreboard board3;
        private Objective o3;
        private Score score3;
        private Scoreboard board4;
        private Objective o4;
        private Score score4;
        public void onEnable(){
            initialize();
        }
        public void initialize(){
            ScoreboardManager sm = Bukkit.getScoreboardManager();
            board = sm.getNewScoreboard();
            o = board.registerNewObjective("Test", "dummy");
            o.setDisplayName(ChatColor.BLACK + "Scoreboardtest");
            o.setDisplaySlot(DisplaySlot.SIDEBAR);
            score = o.getScore(ChatColor.BLACK + "Score");
            board2 = sm.getNewScoreboard();
            o2 = board2.registerNewObjective("Test2", "dummy");
            o2.setDisplayName(ChatColor.BLACK + "Scoreboardtest");
            o2.setDisplaySlot(DisplaySlot.SIDEBAR);
            score2 = o.getScore(ChatColor.BLACK + "Score");
            board3 = sm.getNewScoreboard();
            o3 = board3.registerNewObjective("Test3", "dummy");
            o3.setDisplayName(ChatColor.BLACK + "Scoreboardtest");
            o3.setDisplaySlot(DisplaySlot.SIDEBAR);
            score3 = o.getScore(ChatColor.BLACK + "Score");
            o4 = board4.registerNewObjective("Test4", "dummy");
            o4.setDisplayName(ChatColor.BLACK + "Scoreboardtest");
            o4.setDisplaySlot(DisplaySlot.SIDEBAR);
            score4 = o.getScore(ChatColor.BLACK + "Score");
            score.setScore(0);
            score2.setScore(0);
            score3.setScore(0);
            score4.setScore(0);
    }
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e){
            Player p = e.getPlayer();
          
          
        }
    }
     
  2. Here

    Save the scoreboard data to a .yml file with the Players UUID, then call it when the player joins.
     
    Last edited: Aug 17, 2017
  3. I've created individual scoreboards but I want to make it so that the score stays the same after the server reloads.What should I do?
    P.s How would I get player2's score and change the score?
    Code:
    public static ScoreboardManager sm = Bukkit.getScoreboardManager();
         public static Map<UUID, Scoreboard> scoreboards = new HashMap<UUID, Scoreboard>();
    @EventHandler
         public void onPlayerJoin(PlayerJoinEvent e){
                Player p = e.getPlayer();
                setScoreboard(p);
            }
    public void setScoreboard(final Player p){
             Scoreboard board = sm.getNewScoreboard();
             Objective o = board.registerNewObjective("Test", "dummy");
             UUID uuid = p.getUniqueId();
             scoreboards.put(uuid, board);
             o.setDisplayName("Test");
             o.setDisplaySlot(DisplaySlot.SIDEBAR);
             p.setScoreboard(scoreboards.get(uuid));
             Score score = o.getScore(ChatColor.BLACK + "Score");
             score.setScore(0);
             p.setScoreboard(scoreboards.get(uuid));
         }
    @Override
            public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
                Player player = (Player) sender;
                if(args.length == 1){
                    String argument = args[0];
                    String pscore = args[1];
                    Player player2 = Bukkit.getPlayer(argument);
                        if(player2 != null && player2.isOnline()){
                        
                        }
        }
            
     
  4. Save the score to a config file, and save it. The data should stay there after a reload.

    Here, have a look under the "Scoreboards" bit
     
  5. The scoreboard isn't displaying for players.Is something wrong?
    Code:
    public class Main extends JavaPlugin implements Listener{
        public static ScoreboardManager sm = Bukkit.getScoreboardManager();
         public static Map<UUID, Scoreboard> scoreboards = new HashMap<UUID, Scoreboard>();
        public void onEnable(){
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable(){
          
        }
         public void setScoreboard(final Player p){
             Scoreboard board = sm.getNewScoreboard();
             Objective o = board.registerNewObjective("Test", "dummy");
             UUID uuid = p.getUniqueId();
             scoreboards.put(uuid, board);
             o.setDisplayName("Test");
             o.setDisplaySlot(DisplaySlot.SIDEBAR);
             p.setScoreboard(scoreboards.get(uuid));
             Score score = o.getScore(ChatColor.BLACK + "Score");
             score.setScore(0);
             p.setScoreboard(scoreboards.get(uuid));
         }
         @EventHandler
         public void onPlayerJoin(PlayerJoinEvent e){
                Player p = e.getPlayer();
                setScoreboard(p);
         }
    }
    
     
  6. Offline

    timtower Administrator Administrator Moderator

    @S431 Run it a tick later.
     
  7. @timtower It still doesn't work.
    Code:
    public class Main extends JavaPlugin implements Listener{
        public static ScoreboardManager sm = Bukkit.getScoreboardManager();
         public static Map<UUID, Scoreboard> scoreboards = new HashMap<UUID, Scoreboard>();
        public void onEnable(){
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable(){
          
        }
         public void setScoreboard(final Player p){
             Scoreboard board = sm.getNewScoreboard();
             Objective o = board.registerNewObjective("Test", "dummy");
             UUID uuid = p.getUniqueId();
             scoreboards.put(uuid, board);
             o.setDisplayName("Test");
             o.setDisplaySlot(DisplaySlot.SIDEBAR);
             p.setScoreboard(scoreboards.get(uuid));
             Score score = o.getScore(ChatColor.BLACK + "Score");
             score.setScore(0);
             p.setScoreboard(scoreboards.get(uuid));
         }
         @SuppressWarnings("deprecation")
        @EventHandler
         public void onPlayerJoin(PlayerJoinEvent e){
                Player p = e.getPlayer();
                Bukkit.getScheduler().scheduleAsyncDelayedTask(this, new Runnable(){
    
                    @Override
                    public void run() {
                    setScoreboard(p);
                      
                    }
              
                },20 * 1);
              
         }
    }
    
    
     
  8. Offline

    timtower Administrator Administrator Moderator

    @S431 Make it a sync task to start with.
     
  9. @timtower Changed it to a syncdelayedtask.
    Code:
    public class Main extends JavaPlugin implements Listener{
        public static ScoreboardManager sm = Bukkit.getScoreboardManager();
         public static Map<UUID, Scoreboard> scoreboards = new HashMap<UUID, Scoreboard>();
        public void onEnable(){
            Bukkit.getServer().getPluginManager().registerEvents(this, this);
        }
        public void onDisable(){
        
        }
         public void setScoreboard(final Player p){
             Scoreboard board = sm.getNewScoreboard();
             Objective o = board.registerNewObjective("Test", "dummy");
             UUID uuid = p.getUniqueId();
             scoreboards.put(uuid, board);
             o.setDisplayName("Test");
             o.setDisplaySlot(DisplaySlot.SIDEBAR);
             p.setScoreboard(scoreboards.get(uuid));
             Score score = o.getScore(ChatColor.BLACK + "Score");
             score.setScore(0);
             p.setScoreboard(scoreboards.get(uuid));
         }
        @EventHandler
         public void onPlayerJoin(PlayerJoinEvent e){
                Player p = e.getPlayer();
                Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){
    
                    @Override
                    public void run() {
                    setScoreboard(p);
                    
                    }
            
                },20 * 1);
            
         }
    }
    
    Buy it still throws up.a npe ....
     
    Last edited: Aug 19, 2017
Thread Status:
Not open for further replies.

Share This Page