Solved Scoreboard doesnt update

Discussion in 'Plugin Development' started by ArianYX, Dec 12, 2022.

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

    ArianYX

    Hey I've made a scoreboard plugin but the Money counter doesn't update...
    Code:
    import me.deecaad.core.lib.adventure.platform.facet.Facet;
    import net.milkbowl.vault.chat.Chat;
    import net.milkbowl.vault.economy.Economy;
    import net.milkbowl.vault.economy.EconomyResponse;
    import net.milkbowl.vault.permission.Permission;
    import org.bukkit.*;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.*;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.RegisteredServiceProvider;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.*;
    
    import java.util.List;
    import java.util.logging.Logger;
    
    public final class Cyberwars extends JavaPlugin implements Listener {
    
        @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e) {
        Player player = e.getPlayer();
    
        //Scoreboard
            Scoreboard s = Bukkit.getScoreboardManager().getNewScoreboard();
            Objective o = s.registerNewObjective("cyberwars", "dummy", ChatColor.DARK_BLUE + "" + ChatColor.BOLD  + "Cyber" + ChatColor.AQUA + ""+ ChatColor.BOLD + "wars");
            o.setDisplaySlot(DisplaySlot.SIDEBAR);
    
    
            o.getScore(ChatColor.DARK_GRAY + "a").setScore(12);
            o.getScore(ChatColor.GRAY + "a").setScore(11);
            o.getScore(ChatColor.DARK_AQUA + "Rang:").setScore(10);
    
            if (player.hasPermission("cyberwars.score.owner")) {
                o.getScore("§4§lOwner").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.admin")) {
                o.getScore("§cAdmin").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.helper")){
                o.getScore("§3Helper").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.diamond")) {
                o.getScore("§b§lDiamond").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.titanium")) {
                o.getScore("§8§lTitanium").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.platium")) {
                o.getScore("§7Platium").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.gold")) {
                o.getScore("§6§lGold").setScore(9);
            }
            else if (player.hasPermission("cyberwars.score.silver")) {
                o.getScore("§fSilver").setScore(9);
            }
            else if (player.hasPermission("wps.score.bronze")) {
                o.getScore("§eBronze").setScore(9);
            }
            else {
                o.getScore("§rPlayer").setScore(9);
            }
    
    
            o.getScore(player.isOp() ? ChatColor.DARK_RED + "" + ChatColor.BOLD + "Owner" : ChatColor.RESET + "Player").setScore(9);
            o.getScore(ChatColor.GOLD + "a").setScore(8);
            o.getScore(ChatColor.BLUE + "Shards:").setScore(7);
            o.getScore(ChatColor.WHITE + "⨳").setScore(6);
            o.getScore(ChatColor.BLUE + "Purse:").setScore(5);
    
            Team purse = s.getTeam("purse") == null ? s.registerNewTeam("purse") : s.getTeam("purse");
            purse.addEntry("§r");
            purse.setPrefix(ChatColor.WHITE + "$" + econ.getBalance(player));
            o.getScore("§r").setScore(4);
    
            o.getScore(ChatColor.BLACK + "a").setScore(3);
            o.getScore(ChatColor.YELLOW + "a").setScore(2);
            o.getScore(ChatColor.GREEN + "a").setScore(1);
            o.getScore(ChatColor.RED + "store.cyberwars.net").setScore(0);
    
            player.setScoreboard(s);
            o.setDisplaySlot(DisplaySlot.SIDEBAR);
        }
    
        public void updateSoreboard(Player player) {
            Scoreboard board = player.getScoreboard();
            board.getTeam("purse").setPrefix(ChatColor.WHITE + "$" + econ.getBalance(player));
        }
    
        public void onJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            Cyberwars.getInstance().getCyberwarsTablist().setTablist(player);
        }
    
    @Override
        public void onEnable() { getServer().getPluginManager().registerEvents(this, this); }
    
    @Override
        public void onDisable() {}
    
    I've looked through alot of forum post but I couldn't find an answer.
     
  2. Online

    timtower Administrator Administrator Moderator

    @ArianYX You need to update it manually, there is nothing being called when the money updates.
     
  3. Offline

    ArianYX

    How do I update it manually?
     
  4. Online

    timtower Administrator Administrator Moderator

    BukkitRunnable that runs every ... ticks and updates the values in the scoreboard.
     
  5. Offline

    ArianYX

    I made the BukkitRunnable but the amount of money (form Vault) is constantly switching with the previous amount and I don't know why
    Code:
    @EventHandler
        public void onPlayerJoin(PlayerJoinEvent e) {
            Player player = (Player) e.getPlayer();
    
    
                //Scoreboard
                final Scoreboard s = Bukkit.getScoreboardManager().getNewScoreboard();
                final Objective o = s.registerNewObjective("cyberwars", "dummy", ChatColor.DARK_BLUE + "" + ChatColor.BOLD + "Cyber" + ChatColor.AQUA + "" + ChatColor.BOLD + "wars");
                o.setDisplaySlot(DisplaySlot.SIDEBAR);
    
            new BukkitRunnable() {
                @Override
                public void run() {
    
                    for (Player p : Bukkit.getOnlinePlayers()) {
                        p.setScoreboard(s);
                    }
    
                }
            }.runTaskTimer(this, 20L, 20L);
    
    
                o.getScore(ChatColor.DARK_GRAY + "a").setScore(12);
                o.getScore(ChatColor.GRAY + "a").setScore(11);
                o.getScore(ChatColor.DARK_AQUA + "Rang:").setScore(10);
    
                if (player.hasPermission("cyberwars.score.owner")) {
                    o.getScore("§4§lOwner").setScore(9);
                } else if (player.hasPermission("cyberwars.score.admin")) {
                    o.getScore("§cAdmin").setScore(9);
                } else if (player.hasPermission("cyberwars.score.helper")) {
                    o.getScore("§3Helper").setScore(9);
                } else if (player.hasPermission("cyberwars.score.diamond")) {
                    o.getScore("§b§lDiamond").setScore(9);
                } else if (player.hasPermission("cyberwars.score.titanium")) {
                    o.getScore("§8§lTitanium").setScore(9);
                } else if (player.hasPermission("cyberwars.score.platium")) {
                    o.getScore("§7Platium").setScore(9);
                } else if (player.hasPermission("cyberwars.score.gold")) {
                    o.getScore("§6§lGold").setScore(9);
                } else if (player.hasPermission("cyberwars.score.silver")) {
                    o.getScore("§fSilver").setScore(9);
                } else if (player.hasPermission("wps.score.bronze")) {
                    o.getScore("§eBronze").setScore(9);
                } else {
                    o.getScore("§rPlayer").setScore(9);
                }
    
    
                o.getScore(ChatColor.GOLD + "a").setScore(8);
                o.getScore(ChatColor.BLUE + "Shards:").setScore(7);
                o.getScore(ChatColor.WHITE + "⨳").setScore(6);
                o.getScore(ChatColor.BLUE + "Purse:").setScore(5);
    
                Team purse = s.getTeam("purse") == null ? s.registerNewTeam("purse") : s.getTeam("purse");
                purse.addEntry("§r");
                purse.setPrefix(ChatColor.WHITE + "$" + econ.getBalance(player));
                o.getScore("§r").setScore(4);
    
                o.getScore(ChatColor.BLACK + "a").setScore(3);
                o.getScore(ChatColor.YELLOW + "a").setScore(2);
                o.getScore(ChatColor.GREEN + "a").setScore(1);
                o.getScore(ChatColor.RED + "store.cyberwars.net").setScore(0);
    
                player.setScoreboard(s);
                o.setDisplaySlot(DisplaySlot.SIDEBAR);
                player.setScoreboard(s);
            }
     
  6. Online

    timtower Administrator Administrator Moderator

    @ArianYX Now you are setting the scoreboard every second, for all players.
    To the same scoreboard, not different ones.
    And everybody gets the scoreboard of the player that joined last
     
Thread Status:
Not open for further replies.

Share This Page