Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.lavita.freebuild.manager;
- import de.lavita.freebuild.main.Main;
- import de.lavita.freebuild.mysql.MySQL;
- import de.lavita.freebuild.mysql.MySQLStats;
- import org.bukkit.Bukkit;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- import org.bukkit.scheduler.BukkitRunnable;
- import org.bukkit.scoreboard.DisplaySlot;
- import org.bukkit.scoreboard.Objective;
- import org.bukkit.scoreboard.Scoreboard;
- import org.bukkit.scoreboard.Team;
- import ru.tehkode.permissions.PermissionUser;
- import ru.tehkode.permissions.bukkit.PermissionsEx;
- import java.sql.ResultSet;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class ScoreboardManager {
- private Map<Player, Scoreboard> playerScoreboards;
- public ScoreboardManager() {
- this.playerScoreboards = new HashMap<>();
- updateAllScoreboards(true, true);
- startSidebarUpdater();
- }
- public void set(Player p) {
- if (playerScoreboards.containsKey(p)) {
- return;
- }
- p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
- Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
- Team teamSpieler = scoreboard.registerNewTeam("L_Spieler");
- Team teamPrime = scoreboard.registerNewTeam("K_Prime");
- Team teamUltimate = scoreboard.registerNewTeam("J_Ultimate");
- Team teamSupreme = scoreboard.registerNewTeam("I_Supreme");
- Team teamLegend = scoreboard.registerNewTeam("H_Legend");
- Team teamYT = scoreboard.registerNewTeam("G_YouTuber");
- Team teamAzubi = scoreboard.registerNewTeam("F_Azubi");
- Team teamSup = scoreboard.registerNewTeam("E_Sup");
- Team teamMod = scoreboard.registerNewTeam("D_Mod");
- Team teamDev = scoreboard.registerNewTeam("C_Dev");
- Team teamAdmin = scoreboard.registerNewTeam("B_Admin");
- Team teamOwner = scoreboard.registerNewTeam("A_Leitung");
- teamSpieler.setPrefix("§7");
- teamPrime.setPrefix("§6Prime §8┃ §7");
- teamUltimate.setPrefix("§aUlti §8┃ §7");
- teamSupreme.setPrefix("§bSupreme §8┃ §7");
- teamLegend.setPrefix("§eLegend §8┃ §7");
- teamYT.setPrefix("§5YT §8┃ §7");
- teamAzubi.setPrefix("§2Azubi §8┃ §7");
- teamSup.setPrefix("§eSup §8┃ §7");
- teamMod.setPrefix("§cMod §8┃ §7");
- teamDev.setPrefix("§bDev §8┃ §7");
- teamAdmin.setPrefix("§4Admin §8┃ §7");
- teamOwner.setPrefix("§4Owner §8┃ §7");
- Objective objective = scoreboard.registerNewObjective("aaa", "bbb");
- objective.setDisplaySlot(DisplaySlot.SIDEBAR);
- Team sbteamStats = scoreboard.registerNewTeam("Stats");
- Team sbteamCoins = scoreboard.registerNewTeam("Coins");
- Team sbteamRanking = scoreboard.registerNewTeam("Ranking");
- sbteamStats.addEntry(" §8➥ §a");
- sbteamCoins.addEntry(" §8➥ §a§a");
- sbteamRanking.addEntry(" §8➥ §c§c§a");
- objective.setDisplayName("§8» §2§lPvP §8«");
- objective.getScore(ChatColor.AQUA + "").setScore(16);
- objective.getScore("§8» §2Name").setScore(15);
- objective.getScore(" §8➥ §a" + p.getName()).setScore(14);
- objective.getScore(ChatColor.BLACK + "").setScore(13);
- objective.getScore("§8» §2Kills §8● §2Tode").setScore(12);
- objective.getScore(" §8➥ §a").setScore(11);
- objective.getScore(ChatColor.BLUE + "").setScore(10);
- objective.getScore("§8» §2Coins").setScore(9);
- objective.getScore(" §8➥ §a§a").setScore(8);
- objective.getScore(ChatColor.DARK_PURPLE + "").setScore(7);
- objective.getScore("§8» §2Ranking").setScore(6);
- objective.getScore(" §8➥ §c§c§a").setScore(5);
- objective.getScore(ChatColor.RED + "").setScore(4);
- p.setScoreboard(scoreboard);
- playerScoreboards.put(p, scoreboard);
- updateTeamlistForPlayer(p);
- updateSidebar(p);
- }
- public void removePlayerScoreboard(Player p) {
- if (!this.playerScoreboards.containsKey(p)) {
- return;
- }
- Scoreboard board = (Scoreboard)this.playerScoreboards.get(p);
- for (Objective scoreOb : board.getObjectives()) {
- scoreOb.unregister();
- }
- for (Team scoreTeam : board.getTeams()) {
- scoreTeam.unregister();
- }
- this.playerScoreboards.remove(p);
- p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
- }
- public void updateTeamlistForPlayer(Player forWhom) {
- if (!this.playerScoreboards.containsKey(forWhom)) {
- set(forWhom);
- }
- Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
- List<String> onlineName = new ArrayList<String>();
- for (Player all : Bukkit.getOnlinePlayers()) {
- onlineName.add(all.getName());
- Team playerTeam = getTeamForPlayer(board, all);
- if (!playerTeam.hasEntry(all.getName())) {
- playerTeam.addEntry(all.getName());
- }
- }
- for (String entry : board.getEntries()) {
- if (!onlineName.contains(entry)) {
- Team team = searchTeamsForEntry(forWhom, entry);
- if (team != null && !team.getName().equals("Ranking") && !team.getName().equals("Stats") &&
- !team.getName().equals("Coins")) {
- team.removeEntry(entry);
- }
- }
- }
- }
- public void updateSidebar(Player forWhom) {
- if (!this.playerScoreboards.containsKey(forWhom)) {
- set(forWhom);
- }
- Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
- Team sbteamStats = board.getTeam("Stats");
- Team sbteamCoins = board.getTeam("Coins");
- Team sbteamRanking = board.getTeam("Ranking");
- sbteamStats.setSuffix(MySQLStats.getKills(forWhom.getUniqueId().toString()) + " §8● §a" + MySQLStats.getDeaths(forWhom.getUniqueId().toString()));
- sbteamCoins.setSuffix(MySQLStats.getCoins(forWhom.getUniqueId().toString()) + "");
- sbteamRanking.setSuffix(getRanking(forWhom.getUniqueId().toString()) + "");
- }
- public void updateAllScoreboards(boolean teamList, boolean sidebar) {
- if (teamList) {
- for (Player all : this.playerScoreboards.keySet()) {
- updateTeamlistForPlayer(all);
- }
- }
- if (sidebar) {
- for (Player all : this.playerScoreboards.keySet()) {
- updateSidebar(all);
- }
- }
- }
- private Team getTeamForPlayer(Scoreboard board, Player forWhom) {
- PermissionUser pUser = PermissionsEx.getUser(forWhom);
- if (pUser.inGroup("Leitung")) {
- return board.getTeam("A_Leitung");
- }
- if (pUser.inGroup("Admin")) {
- return board.getTeam("B_Admin");
- }
- if (pUser.inGroup("Developer")) {
- return board.getTeam("C_Dev");
- }
- if (pUser.inGroup("Moderator")) {
- return board.getTeam("D_Mod");
- }
- if (pUser.inGroup("Supporter")) {
- return board.getTeam("E_Sup");
- }
- if (pUser.inGroup("Azubi")) {
- return board.getTeam("F_Azubi");
- }
- if (pUser.inGroup("YouTuber")) {
- return board.getTeam("G_YouTuber");
- }
- if (pUser.inGroup("Legend")) {
- return board.getTeam("H_Legend");
- }
- if (pUser.inGroup("Supreme")) {
- return board.getTeam("I_Supreme");
- }
- if (pUser.inGroup("Ultimate")) {
- return board.getTeam("J_Ultimate");
- }
- if (pUser.inGroup("Prime")) {
- return board.getTeam("K_Prime");
- }
- return board.getTeam("L_Spieler");
- }
- private Team searchTeamsForEntry(Player forWhom, String entry) {
- if (!this.playerScoreboards.containsKey(forWhom)) {
- set(forWhom);
- }
- Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
- for (Team team : board.getTeams()) {
- if (team.hasEntry(entry)) {
- return team;
- }
- }
- return null;
- }
- public void startSidebarUpdater() { (new BukkitRunnable() {
- public void run() {
- ScoreboardManager.this.updateAllScoreboards(false, true);
- }
- }).runTaskTimer(Main.getInstance(), 60L, 60L); }
- public static Integer getRanking(String uuid) {
- boolean done = false;
- int n = 0;
- try {
- ResultSet rs = Main.mysql.query("SELECT UUID FROM Stats ORDER BY KILLS DESC;");
- while (rs.next() && !done) {
- ++n;
- if (!rs.getString(1).equalsIgnoreCase(uuid)) continue;
- done = true;
- }
- rs.close();
- }
- catch (Exception err) {
- System.err.println("[] gSystem-Error-User-getUserRanking []");
- System.err.println(err);
- System.err.println("[] gSystem-Error-User-getUserRanking []");
- }
- return n;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement