Level stats help

Discussion in 'Plugin Development' started by Maikle, Sep 24, 2017.

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

    Maikle

    Hello Guys, I want to make a level plugin if his kills is 10 > level 1 - 20 kills > level 2 etc... , I won't repeat it 1000 times because its very big, is there a method I can do it with? , Note: I store kills in the config.

    My Code:

    Code:
        @SuppressWarnings("deprecation")
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            if (!(sender instanceof Player)) {
                sender.sendMessage(Main.c("&cYou must be a player to use this command!"));
                return true;
            }
            Player p = (Player) sender;
            if (args.length == 1) {
                OfflinePlayer t = p.getServer().getOfflinePlayer(args[0]);
                String uuid = t.getUniqueId().toString();
                if (!t.isOnline()) {
                    p.sendMessage(Main.c(Main.prefix + "&cCould not find " + args[0] + "&c!"));
                    return true;
                }
                int kills = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Kills");
                int points = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Points");
                int deaths = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Deaths");
                double kdr = deaths > 0 ? ((double) kills / (double) deaths) : -1;
                String out = String.format("%.1f", Double.valueOf(kdr));
                p.sendMessage(Main.c(Main.prefix + "&8&m---------&8〡&6Stats&8〡&8&m---------"));
                p.sendMessage(Main.c(Main.prefix + "&6Player: &7" + t.getName()));
                p.sendMessage(Main.c(Main.prefix + "&6Points: &7" + points));
                p.sendMessage(Main.c(Main.prefix + "&6Kills: &7" + kills));
                p.sendMessage(Main.c(Main.prefix + "&6Deaths: &7" + deaths));
                p.sendMessage(Main.c(Main.prefix + "&6KillStreak: &7" + p.getLevel()));
                p.sendMessage(Main.c(Main.prefix + "&6KDR: &7" + out));
                p.sendMessage(Main.c(Main.prefix + "&8&m---------&8〡&6Stats&8〡&8&m---------"));
                return true;
    
            } else {
                if (args.length == 0) {
                    String uuid = p.getUniqueId().toString();
                    int kills = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Kills");
                    int points = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Points");
                    int deaths = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Deaths");
                    double kdr = deaths > 0 ? ((double) kills / (double) deaths) : -1;
                    String out = String.format("%.1f", Double.valueOf(kdr));
                    p.sendMessage(Main.c(Main.prefix + "&8&m---------&8〡&6Stats&8〡&8&m---------"));
                    p.sendMessage(Main.c(Main.prefix + "&6Player: &7" + p.getName()));
                    p.sendMessage(Main.c(Main.prefix + "&6Points: &7" + points));
                    p.sendMessage(Main.c(Main.prefix + "&6Kills: &7" + kills));
                    p.sendMessage(Main.c(Main.prefix + "&6Deaths: &7" + deaths));
                    p.sendMessage(Main.c(Main.prefix + "&6KillStreak: &7" + p.getLevel()));
                    p.sendMessage(Main.c(Main.prefix + "&6KDR: &7" + out));
                    p.sendMessage(Main.c(Main.prefix + "&8&m---------&8〡&6Stats&8〡&8&m---------"));
                    return true;
                } else {
                    if (args.length > 1) {
                        p.sendMessage(Main.c(Main.prefix + "&cInvaild arguments. Usage: /stats (player)"));
                        return true;
                    }
                }
            }
            return true;
        }
     
  2. Offline

    timtower Administrator Administrator Moderator

  3. Offline

    Maikle

    thanks.

    Can I ask you something ?
    How can I make the scoreboard on one world only.
    I tried to make:-

    Code:
    if(p.getWorld().getName().equals("SkyPvP")) {
    updateSB(p);
    } else {
    p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard);
    }
    It works good, but when I go to skypvp world then I go to creative world it shows. When I don't go to skypvp world and directly to creative world it don't show.

    My Code:

    Code:
    package me.mohammed.mylvl.Utilities;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.PlayerDeathEvent;
    import org.bukkit.event.player.PlayerChangedWorldEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.event.player.PlayerRespawnEvent;
    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 me.mohammed.mylvl.Main;
    
    public class SB implements Listener {
    
        @EventHandler
        public void on(PlayerJoinEvent e) {
            Player p = e.getPlayer();
            updateSB(p);
        }
    
        @EventHandler
        public void on(PlayerRespawnEvent e) {
            Player p = e.getPlayer();
            updateSB(p);
        }
    
        @EventHandler
        public void on4(PlayerDeathEvent e) {
            Player p = (Player) e.getEntity();
            Player k = p.getKiller();
            updateSB(k);
            updateSB(p);
        }
    
        @EventHandler
        public void on(PlayerChangedWorldEvent e) {
            Player p = e.getPlayer();
            updateSB(p);
        }
    
        public static void updateSB(Player p) {
            if(p.getWorld().getName().equals("SkyPvP")) {
            ScoreboardManager manager = Bukkit.getScoreboardManager();
            Scoreboard board = manager.getNewScoreboard();
            String uuid = p.getUniqueId().toString();
            int kills = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Kills");
            int level = kills / 10;
            int deaths = Main.getPlugin().getConfig().getInt("Players." + uuid + ".Deaths");
            double kdr = deaths > 0 ? ((double) kills / (double) deaths) : -1;
            String out = String.format("%.1f", Double.valueOf(kdr));
            Objective o = board.registerNewObjective("test", "dummy");
            o.setDisplaySlot(DisplaySlot.SIDEBAR);
            o.setDisplayName(Main.c("      &6Statistics      "));
            Score s1 = o.getScore(" ");
            s1.setScore(12);
            Score f6 = o.getScore("  ");
            f6.setScore(11);
            Score s2 = o.getScore(Main.c("&3Level: &f" + level));
            s2.setScore(10);
            Score f1 = o.getScore("  ");
            f1.setScore(9);
            Score s3 = o.getScore(Main.c("&3Kills: &f" + kills));
            s3.setScore(8);
            Score f2 = o.getScore("   ");
            f2.setScore(7);
            Score s4 = o.getScore(Main.c("&3Deaths: &f" + deaths));
            s4.setScore(6);
            Score f3 = o.getScore("    ");
            f3.setScore(5);
            Score s5 = o.getScore(Main.c("&3KDR: &f" + out));
            s5.setScore(4);
            Score f4 = o.getScore("       ");
            f4.setScore(3);
            Score s6 = o.getScore(Main.c("&3Streak: &f" + p.getLevel()));
            s6.setScore(2);
            Score s7 = o.getScore("      ");
            s7.setScore(1);
    
            p.setScoreboard(board);
           
            } else {
                p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
            }
    
        }
    
    }
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited: Sep 24, 2017
Thread Status:
Not open for further replies.

Share This Page