0

I would like to have the teams "coins" and "tokens" update in the scoreboard every second when the player enters the server. The BukkitRunnable should be interrupted when the player leaves the server.

I experimented a bit and found a solution. I would be interested in your opinion on the code, if I wrote it efficiently and practically.

The "updateScoreboard()" method is in the PlayerJoinEvent listener.

Do you have any suggestions for improvement?

public class ScoreBoard {
    
    public void setScoreBoard(Player player) {
        
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective object = board.registerNewObjective("returnscoreboard", "dummy");
        
        object.setDisplayName("§cTest");
        object.setDisplaySlot(DisplaySlot.SIDEBAR);
        
        Team satoshis = board.registerNewTeam("satoshis");
        Team tokens = board.registerNewTeam("tokens");
        
        object.getScore("§a").setScore(6);
        object.getScore("§esatoshis:").setScore(5);
        object.getScore("§b").setScore(4);
        object.getScore("§c").setScore(3);
        object.getScore("§etokens").setScore(2);
        object.getScore("§d").setScore(1);
        object.getScore("§f").setScore(0);
        
        satoshis.addEntry("§b");
        satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
        
        tokens.addEntry("§d");
        tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
        
        player.setScoreboard(board);
        
    }
    
    public void updateScoreboard(Player player) {
        
        Scoreboard board = player.getScoreboard();
        Team satoshis = board.getTeam("satoshis");
        Team tokens = board.getTeam("tokens");
        
        BukkitRunnable tester = new BukkitRunnable() {
            
            @Override
            public void run() {
                if(player.isOnline()) {
                    satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
                    tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
                    System.out.println("RELOAD");
                } else {
                    System.out.println("OFFLINE");
                    cancel();
                }
                
            }
        };
        tester.runTaskTimer(Main.getPlugin(), 0, 40);
    }

}
pppery
  • 3,731
  • 22
  • 33
  • 46
TheHuman
  • 11
  • 1
  • Your code is working fine ? What is wrongly working ? You ask for improvement, but about what are you thinking about ? – Elikill58 Jul 28 '22 at 14:38
  • Unfocused reviews of code are better suited to [codereview.se] than Stack Overflow, but make sure to check their [on-topic page](https://codereview.stackexchange.com/help/how-to-ask) before asking there. – pppery Aug 02 '22 at 00:28

1 Answers1

0

I can assure you that there will be nothing more to add or remove.

public class ScoreBoard {

    public void setScoreBoard(Player player) {
        Scoreboard board = Bukkit.getScoreboardManager().getNewScoreboard();
        Objective object = board.registerNewObjective("returnscoreboard", "dummy");
        
        object.setDisplayName("§cTest");
        object.setDisplaySlot(DisplaySlot.SIDEBAR);
        
        Team satoshis = board.registerNewTeam("satoshis");
        Team tokens = board.registerNewTeam("tokens");
        
        object.getScore("§a").setScore(6);
        object.getScore("§esatoshis:").setScore(5);
        object.getScore("§b").setScore(4);
        object.getScore("§c").setScore(3);
        object.getScore("§etokens").setScore(2);
        object.getScore("§d").setScore(1);
        object.getScore("§f").setScore(0);
        
        satoshis.addEntry("§b");
        satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
        
        tokens.addEntry("§d");
        tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
        
        player.setScoreboard(board);
        
    }
    
    public void updateScoreboard(Player player) {
        
        Scoreboard board = player.getScoreboard();
        Team satoshis = board.getTeam("satoshis");
        Team tokens = board.getTeam("tokens");
        
        BukkitRunnable tester = new BukkitRunnable() {
            
            @Override
            public void run() {
                if(player.isOnline()) {
                    satoshis.setPrefix("≫ §a" + API_Geld.getSatoshis(player.getUniqueId()));
                    tokens.setPrefix("≫ §a" + API_Geld.getReturnTokens(player.getUniqueId()));
                    System.out.println("RELOAD");
                } else {
                    System.out.println("OFFLINE");
                    cancel();
                }
                
            }
        };
        tester.runTaskTimer(Main.getPlugin(), 0, 40);
    }

}
Seal
  • 140
  • 4