Scoreboard help

Discussion in 'Plugin Development' started by TrippyHD, Feb 7, 2016.

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

    TrippyHD

    I don't how to set the scoreboard to update automatically, I have when you join it updates but I want it so when you get a kill or you die it updates please help.

    Code (Scoreboard is at the bottom):

    Code:
    package FB.Teams;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.scoreboard.DisplaySlot;
    import org.bukkit.scoreboard.Objective;
    import org.bukkit.scoreboard.Score;
    import org.bukkit.scoreboard.Scoreboard;
    import org.bukkit.scoreboard.ScoreboardManager;
    
    import java.io.File;
    import java.io.IOException;
    
    public class Main extends JavaPlugin implements Listener {
        private Main plugin;
    
    
        static FileConfiguration config;
        public static String prefix = "§5Stats §7| §3";
        public static File file = new File("plugins/Stats", "Stats.yml");
        public static FileConfiguration cfg;
    
    
        static {
            cfg = YamlConfiguration.loadConfiguration(file);
        }
    
        public Main() {
        }
    
        public static void saveFile() {
            try {
                cfg.save(file);
            } catch (IOException var1) {
                var1.printStackTrace();
            }
    
        }
    
    
        public void onEnable() {
            PluginManager pm = Bukkit.getPluginManager();
            registerEvents(pm);
            super.onEnable();
        }
    
        private void registerEvents(PluginManager pm) {
            pm.registerEvents(new DeathListener(), this);
            Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "---------------------------");
            Bukkit.getConsoleSender().sendMessage(ChatColor.BLUE + "Teams plugin has been " + ChatColor.GREEN + "ENABLED!");
            Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "Plugin made by: FBS1imJim");
            Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "---------------------------");
            Team.clearTeams();
            Bukkit.getPluginManager().registerEvents(this, this);
            for (Player players : Bukkit.getOnlinePlayers()) {
                updateScoreboard(players);
            }
        }
    
        public void onDisable() {
            Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "---------------------------");
            Bukkit.getConsoleSender().sendMessage(ChatColor.BLUE + "Teams plugin has been " + ChatColor.RED + "DISABLED!");
            Bukkit.getConsoleSender().sendMessage(ChatColor.YELLOW + "Plugin made by: FBS1imJim");
            Bukkit.getConsoleSender().sendMessage(ChatColor.GREEN + "---------------------------");
            Team.clearTeams();
        }
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (label.equalsIgnoreCase("team") && args[0].equalsIgnoreCase("join")) {
                int i = 0;
                for (Player player : Bukkit.getOnlinePlayers()) {
                    if (i < Bukkit.getOnlinePlayers().size() / 2) {
                        Team.addToTeam(TeamType.RED, player);
                    } else {
                        Team.addToTeam(TeamType.BLUE, player);
                    }
                    i++;
                }
            }
            if (label.equalsIgnoreCase("myteam")) {
                sender.sendMessage(ChatColor.GREEN + "You are in " + Team.getTeamType(((Player) sender)).name() + " team.");
            }
            Player player = (Player) sender;
            if (label.equalsIgnoreCase("team") && args[0].equalsIgnoreCase("leave")) {
                sender.sendMessage(ChatColor.BLACK + "[" + ChatColor.BLUE + "Teams" + ChatColor.BLACK + "] " + ChatColor.GOLD + "You have left the " + Team.getTeamType(((Player) sender)).name() + " team.");
            }
            if (cmd.getName().equalsIgnoreCase("stats")) {
                player.sendMessage("§aYour stats:");
                player.sendMessage("§3Kills: §8" + Stats.getKills(player.getName()));
                player.sendMessage("§3Deaths: §8" + Stats.getDeaths(player.getName()));
            }
            return true;
        }
    
        /*Start of the scoreboard stuff
        Look in onEnable for the other stuff
         */
        @EventHandler
        public void onJoin(PlayerJoinEvent event) {
            Player player = event.getPlayer();
            updateScoreboard(player);
        }
    
    
        public void updateScoreboard(Player player) {
    
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            Scoreboard board = manager.getNewScoreboard();
            updateScoreboard(player);
            Objective obj = board.registerNewObjective("dummy", "Kills");
            obj.setDisplaySlot(DisplaySlot.SIDEBAR);
            obj.setDisplayName(ChatColor.RED + "Kills:" + ChatColor.RESET);
    
            Score score1 = obj.getScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Kills:" + ChatColor.RESET));
            Score score2 = obj.getScore(Bukkit.getOfflinePlayer(ChatColor.RED + "Deaths:" + ChatColor.RESET));
    
            score1.setScore(Stats.getKills(player.getName()));
            score2.setScore(Stats.getDeaths(player.getName()));
    
            for (Player all : Bukkit.getOnlinePlayers()) {
                all.setScoreboard(board);
            }
    
    
        }
    }
    
    
    
     
    Last edited: Feb 7, 2016
  2. Offline

    pie_flavor

    @TrippyHD Uh... Your updateScoreboard method calls itself. Is this intentional?
    But other than that, you can just do a PlayerDeathEvent for when the player dies.
    For when the player kills someone, adding on to the PlayerDeathEvent, you can do getLastDamageCause(), check if it's instanceof an EntityDamageByEntityEvent, and check if the damager was a player. If so, give the damager a kill.
     
Thread Status:
Not open for further replies.

Share This Page