Solved Not share Score board

Discussion in 'Plugin Development' started by Dyukusi, Jan 7, 2015.

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

    Dyukusi

    Thank you for help.
    I want to add player own scoreboard that doesn't share.
    For example, display current money that player has.
    However, if there more than one player in server, it seems all player are sharing the scoreboard.

    I implement this and work when player join.
    Code:
    void set_status_scoreboard(Player player) {
            ScoreboardManager manager = this.getServer().getScoreboardManager();
            Scoreboard board = manager.getNewScoreboard();
            board.registerNewTeam("sample team");
    
            Objective objective;
            if ((objective = board.getObjective("status")) == null) {
                objective = board.registerNewObjective("status", player.getName());
            }
            objective.setDisplayName(ChatColor.DARK_GREEN + "STATUS");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.getScore(craftlevel_board);
            objective.getScore(exp_board);
            objective.getScore(dollar_board);
            player.getPlayer().setScoreboard(board);
        }
    Then this update BukkitRunnable task is executed per some ticks.
    But this code share the score with all players.
    Any suggestions?
     
  2. Offline

    CheesyFreezy

    The problem is that you make a for loop for all online players in the Update_var class. Make a RepeatingTask in a PlayerJoinEvent and run the Update_var class there so it only updates for the player
     
  3. Offline

    Dyukusi

    Thank you very much for help me.
    Now it seems work correctly.

    Code:
    @EventHandler
        void PlayerJoin(PlayerJoinEvent event) {
            // set_status_scoreboard(event.getPlayer());
            Player player = event.getPlayer();
            ScoreboardManager manager = this.getServer().getScoreboardManager();
            Scoreboard board = manager.getNewScoreboard();
            Objective objective;
            if ((objective = board.getObjective("status")) == null) {
                objective = board.registerNewObjective("status", player.getName());
            }
            objective.setDisplayName(ChatColor.DARK_GREEN + "STATUS");
            objective.setDisplaySlot(DisplaySlot.SIDEBAR);
            objective.getScore(craftlevel_board);
            objective.getScore(exp_board);
            objective.getScore(dollar_board);
            player.getPlayer().setScoreboard(board);
            new Update_var(this, event.getPlayer(), board, objective, economy, craftlevel).runTaskTimer(this, 10, 5);
        }
    
    Code:
    public class Update_var extends BukkitRunnable {
        MyScoreboard plugin;
        Player player;
        Scoreboard board;
        Objective objective;
        Economy economy;
        CraftLevel craftlevel;
    
        public Update_var(MyScoreboard ms, Player p, Scoreboard b, Objective obj, Economy eco, CraftLevel cl) {
            this.plugin = ms;
            this.player = p;
            this.board = b;
            this.objective = obj;
            this.economy = eco;
            this.craftlevel = cl;
        }
    
        public void run() {
    
            if (objective != null) {
    
                objective.getScore(plugin.get_craftlevel_board()).setScore(
                        craftlevel.get_player_crafting_level_info(player).get_level());
    
                objective.getScore(plugin.get_exp_board()).setScore(
                        craftlevel.get_player_crafting_level_info(player).get_exp());
                objective.getScore(plugin.get_dollars_board()).setScore((int) economy.getBalance((OfflinePlayer) player));
    
                player.setScoreboard(board);
            }
    
        }
    }
     
Thread Status:
Not open for further replies.

Share This Page