Solved Help with scoreboard plugin

Discussion in 'Plugin Development' started by TheRealItsMike, Nov 29, 2016.

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

    TheRealItsMike

    Hi, i have created a scoreboard plugin with things such as health, xp and the amount of players because of this i need to constantly update the scoreboard which causes a small flicker. I would like to know if there is anyway to remove the flicker?

    My plugin code
    Code:java
    1.  
    2. package me.ItsMike.SBL;
    3.  
    4. import org.bukkit.Bukkit;
    5. import org.bukkit.entity.Player;
    6. import org.bukkit.event.EventHandler;
    7. import org.bukkit.event.Listener;
    8. import org.bukkit.event.entity.EntityDamageEvent;
    9. import org.bukkit.event.player.PlayerJoinEvent;
    10. import org.bukkit.event.player.PlayerQuitEvent;
    11. import org.bukkit.plugin.java.JavaPlugin;
    12. import org.bukkit.scheduler.BukkitRunnable;
    13. import org.bukkit.scoreboard.DisplaySlot;
    14. import org.bukkit.scoreboard.Objective;
    15. import org.bukkit.scoreboard.Score;
    16. import org.bukkit.scoreboard.Scoreboard;
    17. import org.bukkit.scoreboard.ScoreboardManager;
    18.  
    19. public class Main extends JavaPlugin implements Listener{
    20.  
    21. public void updateSB(Player p){
    22. ScoreboardManager manager = Bukkit.getScoreboardManager();
    23. Scoreboard board = manager.getNewScoreboard();
    24.  
    25. Objective o = board.registerNewObjective("test", "dumy");
    26.  
    27. o.setDisplaySlot(DisplaySlot.SIDEBAR);
    28. o.setDisplayName("§cWelcome to§f DarkPvP");
    29.  
    30. Score s1 = o.getScore("§c------------------------------");
    31. s1.setScore(12);
    32.  
    33. Score name = o.getScore("§d§l >§b Name§7:§f " + p.getName());
    34. name.setScore(11);
    35.  
    36. Score n1 = o.getScore(" ");
    37. n1.setScore(10);
    38.  
    39. Score amount = o.getScore("§d§l >§b Players§7:§f " + Bukkit.getOnlinePlayers().size());
    40. amount.setScore(9);
    41.  
    42. Score n2 = o.getScore(" ");
    43. n2.setScore(8);
    44.  
    45. Score web = o.getScore("§d§l >§b Website§7:§f " + "[URL="http://www.google.com"]www.google.com[/URL]");
    46. web.setScore(7);
    47.  
    48. Score n3 = o.getScore(" ");
    49. n3.setScore(6);
    50.  
    51. Score health = o.getScore("§d§l >§b Health§7:§f " + p.getHealth());
    52. health.setScore(5);
    53.  
    54. Score n4 = o.getScore(" ");
    55. n4.setScore(4);
    56.  
    57. Score xp = o.getScore("§d§l >§b XP§7:§f " + p.getLevel());
    58. xp.setScore(3);
    59.  
    60. Score s2 = o.getScore("§c------------------------------ ");
    61. s2.setScore(2);
    62.  
    63. p.setScoreboard(board);
    64.  
    65.  
    66. }
    67.  
    68. @EventHandler
    69. public void onJoin(PlayerJoinEvent e){
    70. for(Player all : Bukkit.getOnlinePlayers()){
    71. updateSB(all);
    72. }
    73. }
    74. @EventHandler
    75. public void onDamage(EntityDamageEvent e){
    76. if(e.getEntity() instanceof Player){
    77. for(Player all : Bukkit.getOnlinePlayers()){
    78. updateSB(all);
    79. }
    80. }
    81. }
    82. @EventHandler
    83. public void onLeave(PlayerQuitEvent e){
    84. new BukkitRunnable(){
    85.  
    86. @Override
    87. public void run() {
    88. for(Player all : Bukkit.getOnlinePlayers()){
    89. updateSB(all);
    90. }
    91.  
    92. }
    93.  
    94. }.runTaskTimer(this, 0, 20);
    95.  
    96. }
    97.  
    98. public void onEnable(){
    99. Bukkit.getServer().getPluginManager().registerEvents(this, this);
    100.  
    101. }
    102. }
    103.  
    104.  
    105.  
    106.  
    107.  
     
  2. Offline

    Zombie_Striker

    @TheRealItsMike
    To stop the flicker, stop creating new scoreboards:
    Don't create new scoreboards, get the existing one and modify the values that change.
     
  3. Offline

    TheRealItsMike

    Thanks dude. I feel like a massive idiot for not thinking of that.
     
  4. Offline

    Zombie_Striker

    @TheRealItsMike
    If your problem has been solved, mark this thread as solved.
     
Thread Status:
Not open for further replies.

Share This Page