Advertisement
Guest User

Untitled

a guest
Jul 19th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.27 KB | None | 0 0
  1. package de.lavita.freebuild.manager;
  2.  
  3. import de.lavita.freebuild.main.Main;
  4. import de.lavita.freebuild.mysql.MySQL;
  5. import de.lavita.freebuild.mysql.MySQLStats;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.scheduler.BukkitRunnable;
  10. import org.bukkit.scoreboard.DisplaySlot;
  11. import org.bukkit.scoreboard.Objective;
  12. import org.bukkit.scoreboard.Scoreboard;
  13. import org.bukkit.scoreboard.Team;
  14. import ru.tehkode.permissions.PermissionUser;
  15. import ru.tehkode.permissions.bukkit.PermissionsEx;
  16.  
  17. import java.sql.ResultSet;
  18. import java.util.ArrayList;
  19. import java.util.HashMap;
  20. import java.util.List;
  21. import java.util.Map;
  22.  
  23. public class ScoreboardManager {
  24.  
  25. private Map<Player, Scoreboard> playerScoreboards;
  26.  
  27. public ScoreboardManager() {
  28. this.playerScoreboards = new HashMap<>();
  29. updateAllScoreboards(true, true);
  30. startSidebarUpdater();
  31. }
  32.  
  33. public void set(Player p) {
  34. if (playerScoreboards.containsKey(p)) {
  35. return;
  36. }
  37. p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
  38. Scoreboard scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  39.  
  40. Team teamSpieler = scoreboard.registerNewTeam("L_Spieler");
  41. Team teamPrime = scoreboard.registerNewTeam("K_Prime");
  42. Team teamUltimate = scoreboard.registerNewTeam("J_Ultimate");
  43. Team teamSupreme = scoreboard.registerNewTeam("I_Supreme");
  44. Team teamLegend = scoreboard.registerNewTeam("H_Legend");
  45. Team teamYT = scoreboard.registerNewTeam("G_YouTuber");
  46. Team teamAzubi = scoreboard.registerNewTeam("F_Azubi");
  47. Team teamSup = scoreboard.registerNewTeam("E_Sup");
  48. Team teamMod = scoreboard.registerNewTeam("D_Mod");
  49. Team teamDev = scoreboard.registerNewTeam("C_Dev");
  50. Team teamAdmin = scoreboard.registerNewTeam("B_Admin");
  51. Team teamOwner = scoreboard.registerNewTeam("A_Leitung");
  52.  
  53. teamSpieler.setPrefix("§7");
  54. teamPrime.setPrefix("§6Prime §8┃ §7");
  55. teamUltimate.setPrefix("§aUlti §8┃ §7");
  56. teamSupreme.setPrefix("§bSupreme §8┃ §7");
  57. teamLegend.setPrefix("§eLegend §8┃ §7");
  58. teamYT.setPrefix("§5YT §8┃ §7");
  59. teamAzubi.setPrefix("§2Azubi §8┃ §7");
  60. teamSup.setPrefix("§eSup §8┃ §7");
  61. teamMod.setPrefix("§cMod §8┃ §7");
  62. teamDev.setPrefix("§bDev §8┃ §7");
  63. teamAdmin.setPrefix("§4Admin §8┃ §7");
  64. teamOwner.setPrefix("§4Owner §8┃ §7");
  65.  
  66. Objective objective = scoreboard.registerNewObjective("aaa", "bbb");
  67. objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  68.  
  69. Team sbteamStats = scoreboard.registerNewTeam("Stats");
  70. Team sbteamCoins = scoreboard.registerNewTeam("Coins");
  71. Team sbteamRanking = scoreboard.registerNewTeam("Ranking");
  72.  
  73. sbteamStats.addEntry(" §8➥ §a");
  74. sbteamCoins.addEntry(" §8➥ §a§a");
  75. sbteamRanking.addEntry(" §8➥ §c§c§a");
  76.  
  77. objective.setDisplayName("§8» §2§lPvP §8«");
  78. objective.getScore(ChatColor.AQUA + "").setScore(16);
  79. objective.getScore("§8» §2Name").setScore(15);
  80. objective.getScore(" §8➥ §a" + p.getName()).setScore(14);
  81. objective.getScore(ChatColor.BLACK + "").setScore(13);
  82. objective.getScore("§8» §2Kills §8● §2Tode").setScore(12);
  83. objective.getScore(" §8➥ §a").setScore(11);
  84. objective.getScore(ChatColor.BLUE + "").setScore(10);
  85. objective.getScore("§8» §2Coins").setScore(9);
  86. objective.getScore(" §8➥ §a§a").setScore(8);
  87. objective.getScore(ChatColor.DARK_PURPLE + "").setScore(7);
  88. objective.getScore("§8» §2Ranking").setScore(6);
  89. objective.getScore(" §8➥ §c§c§a").setScore(5);
  90. objective.getScore(ChatColor.RED + "").setScore(4);
  91.  
  92. p.setScoreboard(scoreboard);
  93. playerScoreboards.put(p, scoreboard);
  94. updateTeamlistForPlayer(p);
  95. updateSidebar(p);
  96. }
  97.  
  98. public void removePlayerScoreboard(Player p) {
  99. if (!this.playerScoreboards.containsKey(p)) {
  100. return;
  101. }
  102. Scoreboard board = (Scoreboard)this.playerScoreboards.get(p);
  103. for (Objective scoreOb : board.getObjectives()) {
  104. scoreOb.unregister();
  105. }
  106. for (Team scoreTeam : board.getTeams()) {
  107. scoreTeam.unregister();
  108. }
  109. this.playerScoreboards.remove(p);
  110. p.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
  111. }
  112.  
  113. public void updateTeamlistForPlayer(Player forWhom) {
  114. if (!this.playerScoreboards.containsKey(forWhom)) {
  115. set(forWhom);
  116. }
  117. Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
  118. List<String> onlineName = new ArrayList<String>();
  119. for (Player all : Bukkit.getOnlinePlayers()) {
  120. onlineName.add(all.getName());
  121. Team playerTeam = getTeamForPlayer(board, all);
  122. if (!playerTeam.hasEntry(all.getName())) {
  123. playerTeam.addEntry(all.getName());
  124. }
  125. }
  126. for (String entry : board.getEntries()) {
  127. if (!onlineName.contains(entry)) {
  128. Team team = searchTeamsForEntry(forWhom, entry);
  129. if (team != null && !team.getName().equals("Ranking") && !team.getName().equals("Stats") &&
  130. !team.getName().equals("Coins")) {
  131. team.removeEntry(entry);
  132. }
  133. }
  134. }
  135. }
  136. public void updateSidebar(Player forWhom) {
  137. if (!this.playerScoreboards.containsKey(forWhom)) {
  138. set(forWhom);
  139. }
  140. Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
  141. Team sbteamStats = board.getTeam("Stats");
  142. Team sbteamCoins = board.getTeam("Coins");
  143. Team sbteamRanking = board.getTeam("Ranking");
  144.  
  145. sbteamStats.setSuffix(MySQLStats.getKills(forWhom.getUniqueId().toString()) + " §8● §a" + MySQLStats.getDeaths(forWhom.getUniqueId().toString()));
  146. sbteamCoins.setSuffix(MySQLStats.getCoins(forWhom.getUniqueId().toString()) + "");
  147. sbteamRanking.setSuffix(getRanking(forWhom.getUniqueId().toString()) + "");
  148. }
  149.  
  150. public void updateAllScoreboards(boolean teamList, boolean sidebar) {
  151. if (teamList) {
  152. for (Player all : this.playerScoreboards.keySet()) {
  153. updateTeamlistForPlayer(all);
  154. }
  155. }
  156. if (sidebar) {
  157. for (Player all : this.playerScoreboards.keySet()) {
  158. updateSidebar(all);
  159. }
  160. }
  161. }
  162. private Team getTeamForPlayer(Scoreboard board, Player forWhom) {
  163. PermissionUser pUser = PermissionsEx.getUser(forWhom);
  164. if (pUser.inGroup("Leitung")) {
  165. return board.getTeam("A_Leitung");
  166. }
  167. if (pUser.inGroup("Admin")) {
  168. return board.getTeam("B_Admin");
  169. }
  170. if (pUser.inGroup("Developer")) {
  171. return board.getTeam("C_Dev");
  172. }
  173. if (pUser.inGroup("Moderator")) {
  174. return board.getTeam("D_Mod");
  175. }
  176. if (pUser.inGroup("Supporter")) {
  177. return board.getTeam("E_Sup");
  178. }
  179. if (pUser.inGroup("Azubi")) {
  180. return board.getTeam("F_Azubi");
  181. }
  182. if (pUser.inGroup("YouTuber")) {
  183. return board.getTeam("G_YouTuber");
  184. }
  185. if (pUser.inGroup("Legend")) {
  186. return board.getTeam("H_Legend");
  187. }
  188. if (pUser.inGroup("Supreme")) {
  189. return board.getTeam("I_Supreme");
  190. }
  191. if (pUser.inGroup("Ultimate")) {
  192. return board.getTeam("J_Ultimate");
  193. }
  194. if (pUser.inGroup("Prime")) {
  195. return board.getTeam("K_Prime");
  196. }
  197. return board.getTeam("L_Spieler");
  198. }
  199.  
  200. private Team searchTeamsForEntry(Player forWhom, String entry) {
  201. if (!this.playerScoreboards.containsKey(forWhom)) {
  202. set(forWhom);
  203. }
  204. Scoreboard board = (Scoreboard)this.playerScoreboards.get(forWhom);
  205. for (Team team : board.getTeams()) {
  206. if (team.hasEntry(entry)) {
  207. return team;
  208. }
  209. }
  210. return null;
  211. }
  212.  
  213. public void startSidebarUpdater() { (new BukkitRunnable() {
  214. public void run() {
  215. ScoreboardManager.this.updateAllScoreboards(false, true);
  216. }
  217. }).runTaskTimer(Main.getInstance(), 60L, 60L); }
  218.  
  219. public static Integer getRanking(String uuid) {
  220. boolean done = false;
  221. int n = 0;
  222. try {
  223. ResultSet rs = Main.mysql.query("SELECT UUID FROM Stats ORDER BY KILLS DESC;");
  224. while (rs.next() && !done) {
  225. ++n;
  226. if (!rs.getString(1).equalsIgnoreCase(uuid)) continue;
  227. done = true;
  228. }
  229. rs.close();
  230. }
  231. catch (Exception err) {
  232. System.err.println("[] gSystem-Error-User-getUserRanking []");
  233. System.err.println(err);
  234. System.err.println("[] gSystem-Error-User-getUserRanking []");
  235. }
  236. return n;
  237. }
  238.  
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement