CYADEM

asdasdasda

May 4th, 2019
369
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.53 KB | None | 0 0
  1. package me.tinchx.factions.scoreboard;
  2.  
  3. import com.doctordark.utils.DurationFormatter;
  4. import com.google.common.collect.Ordering;
  5. import lombok.Getter;
  6. import me.tinchx.factions.HCF;
  7. import me.tinchx.factions.classes.PvpClass;
  8. import me.tinchx.factions.classes.archer.ArcherClass;
  9. import me.tinchx.factions.classes.archer.ArcherMark;
  10. import me.tinchx.factions.classes.bard.BardClass;
  11. import me.tinchx.factions.classes.chain.GhostClass;
  12. import me.tinchx.factions.configuration.ConfigurationService;
  13. import me.tinchx.factions.eventgame.EventTimer;
  14. import me.tinchx.factions.eventgame.tracker.ConquestTracker;
  15. import me.tinchx.factions.factions.type.CitadelFaction;
  16. import me.tinchx.factions.factions.type.ConquestFaction;
  17. import me.tinchx.factions.factions.type.KothFaction;
  18. import me.tinchx.factions.factions.type.PlayerFaction;
  19. import me.tinchx.factions.listener.DateTimeFormats;
  20. import me.tinchx.factions.minigames.Game;
  21. import me.tinchx.factions.minigames.GameHandler;
  22. import me.tinchx.factions.minigames.GamePlayerState;
  23. import me.tinchx.factions.timer.GlobalTimer;
  24. import me.tinchx.factions.timer.PlayerTimer;
  25. import me.tinchx.factions.timer.Timer;
  26. import me.tinchx.factions.timer.TimerManager;
  27. import me.tinchx.factions.timer.type.SOTWTimer;
  28. import me.tinchx.factions.user.Profile;
  29. import net.xlduo.axis.AxisAPI;
  30. import net.xlduo.axis.AxisConfiguration;
  31. import net.xlduo.axis.board.BoardAdapter;
  32. import net.xlduo.axis.board.BoardStyle;
  33. import net.xlduo.axis.utilities.AxisUtils;
  34. import org.bukkit.Bukkit;
  35. import org.bukkit.entity.Player;
  36.  
  37. import java.util.*;
  38.  
  39. public class HCFBoard implements BoardAdapter {
  40.  
  41. private HCF plugin = HCF.getPlugin();
  42. @Getter
  43. private static String BARS = "&7&m-------------------";
  44.  
  45. @Override
  46. public String getTitle(Player player) {
  47. if (AxisAPI.getProfile(player).isStaffMode() && player.hasPermission(AxisUtils.STAFF_PERMISSION)) {
  48. return "&6&lMod Mode &3(" + AxisUtils.getOnlineStaff().size() + ')';
  49. }
  50. return ConfigurationService.SCOREBOARD_TITLE.replace("|", "┃");
  51. }
  52.  
  53. @Override
  54. public List<String> getLines(Player player) {
  55. List<String> lines = new ArrayList<>();
  56.  
  57. TimerManager timerManager = plugin.getTimerManager();
  58. EventTimer eventTimer = timerManager.getEventTimer();
  59.  
  60. if (AxisAPI.getProfile(player).isStaffMode() && player.hasPermission(AxisUtils.STAFF_PERMISSION)) {
  61. lines.add(BARS);
  62. lines.add("online players: &b" + Bukkit.getOnlinePlayers().size());
  63. int i = (int) Bukkit.getOnlinePlayers().stream().filter(o -> AxisAPI.getProfile(o).isFrozen()).count();
  64. lines.add("players frozen: &b" + i);
  65. lines.add((AxisAPI.getProfile(player).isVanished() ? "&cur" : "&aur not") + " vanished");
  66. lines.addAll(getScoreboardEvents(player, eventTimer, false));
  67. lines.add(BARS);
  68. return lines;
  69. }
  70.  
  71. if (AxisAPI.getProfile(player).isFrozen()) {
  72. lines.addAll(getScoreboardFreeze());
  73. return lines;
  74. }
  75.  
  76. Profile profile = Profile.getByUUID(player.getUniqueId());
  77.  
  78. PvpClass pvpClass = plugin.getPvpClassManager().getEquippedClass(player);
  79. GameHandler gameHandler = plugin.getGameHandler();
  80.  
  81. if (ConfigurationService.KIT_MAP) {
  82. if (gameHandler.getActiveGame() != null && gameHandler.getActiveGame().getPlayers().containsKey(player) && !gameHandler.getActiveGame().getPlayers(GamePlayerState.REMOVED).contains(player)) {
  83. for (Game game : plugin.getGameHandler().getGames()) {
  84. if (!game.getName().equalsIgnoreCase(gameHandler.getActiveGame().getName())) {
  85. continue;
  86. }
  87. lines.addAll(game.getScoreboard(player));
  88. }
  89. return lines;
  90. } else if (gameHandler.getUpcomingGame() != null && (gameHandler.getPlayers().contains(player) || gameHandler.getSpectators().contains(player))) {
  91. lines.add(BARS);
  92. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getUpcomingGame().getDisplayName());
  93. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lPlayers: &f" + gameHandler.getPlayers().size() + '/' + gameHandler.getUpcomingGame().getMaxPlayers());
  94. lines.add("");
  95. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&lStarting in &f" + gameHandler.getStartTime() + 's');
  96. lines.add(BARS);
  97. return lines;
  98. }
  99. if (profile.statsScoreboard) {
  100. lines.add(ConfigurationService.SCOREBOARD_KILLS_FORMAT.replace("%kills%", String.valueOf(profile.kills)));
  101. lines.add(ConfigurationService.SCOREBOARD_DEATHS_FORMAT.replace("%deaths%", String.valueOf(profile.deaths)));
  102. if (ConfigurationService.SCOREBOARD_STREAK_ONLY_MORE_THAN_0) {
  103. if (profile.killStreak > 0) {
  104. lines.add(ConfigurationService.SCOREBOARD_STREAK_FORMAT.replace("%streak%", String.valueOf(profile.killStreak)));
  105. }
  106. } else {
  107. lines.add(ConfigurationService.SCOREBOARD_STREAK_FORMAT.replace("%streak%", String.valueOf(profile.killStreak)));
  108. }
  109. if (plugin.getFactionManager().getFactionAt(player.getLocation()).isSafezone()) {
  110. if (profile.gamesWins > 0) {
  111. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&6" : "&b") + "&bGames Wins: &f" + profile.gamesWins);
  112. }
  113. int size = lines.size();
  114. boolean send = true;
  115. if (gameHandler.getActiveGame() != null) {
  116. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getActiveGame().getDisplayName());
  117. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lPlayers: &f" + gameHandler.getActiveGame().getPlayers(GamePlayerState.ALIVE).size() + '/' + gameHandler.getActiveGame().getMaxPlayers());
  118. } else if (gameHandler.getUpcomingGame() != null) {
  119. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lGame: " + gameHandler.getUpcomingGame().getDisplayName());
  120. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lStarting In: &f" + gameHandler.getStartTime() + 's');
  121. } else {
  122. send = false;
  123. }
  124. if (send) {
  125. lines.add(size, getBARS());
  126. }
  127. }
  128. }
  129. }
  130.  
  131. long sotwTimer = timerManager.getSOTWTimer().getRemaining();
  132. if (sotwTimer > 0L) {
  133. if (timerManager.getSOTWTimer().sotwDisabled.contains(player.getUniqueId())) {
  134. lines.add(ConfigurationService.SCOREBOARD_SOTWTIMER_FORMAT[0]);
  135. } else {
  136. lines.add(ConfigurationService.SCOREBOARD_SOTWTIMER_FORMAT[1].replace("%timer%", DurationFormatter.getRemaining(sotwTimer, true)));
  137. }
  138. }
  139.  
  140. if (pvpClass != null) {
  141. if (ConfigurationService.SCOREBOARD_CLASS_ENABLED) {
  142. lines.add(ConfigurationService.SCOREBOARD_CLASS_STYLE.replace("%class%", pvpClass.getName()));
  143. }
  144. if (ConfigurationService.CLASS_GHOST_ENABLED && pvpClass instanceof GhostClass) {
  145. lines.add("&bMode&7: " + (GhostClass.getLevel(player.getUniqueId()) == 1 ? "&dStealth" : GhostClass.getLevel(player.getUniqueId()) == 2 ? "&cPower" : "&aNormal"));
  146. if (GhostClass.getCooldown(player.getUniqueId()) > 0L) {
  147. lines.add("&bDelay&7: &c" + DurationFormatter.getRemaining(GhostClass.getCooldown(player.getUniqueId()), false));
  148. }
  149. } else if (ConfigurationService.CLASS_BARD_ENABLED && pvpClass instanceof BardClass) {
  150. BardClass bardClass = (BardClass) pvpClass;
  151. lines.add(ConfigurationService.SCOREBOARD_BARD_ENERGY.replace("%energy%", handleBardFormat(bardClass.getEnergyMillis(player))));
  152.  
  153. long remaining = bardClass.getRemainingBuffDelay(player);
  154. if (remaining > 0L) {
  155. lines.add(ConfigurationService.SCOREBOARD_BARD_DELAY.replace("%delay%", DurationFormatter.getRemaining(remaining, true)));
  156. }
  157. } else if (ConfigurationService.CLASS_ARCHER_ENABLED && pvpClass instanceof ArcherClass && !ConfigurationService.KIT_MAP) {
  158. ArcherClass archerClass = (ArcherClass) pvpClass;
  159.  
  160. List<Map.Entry<UUID, ArcherMark>> entryList = Ordering.from(ARCHER_MARK_COMPARATOR).sortedCopy(archerClass.getSentMarks(player).entrySet());
  161. entryList = entryList.subList(0, Math.min(entryList.size(), 3));
  162.  
  163. for (Map.Entry<UUID, ArcherMark> entry : entryList) {
  164. ArcherMark archerMark = entry.getValue();
  165. Player target = Bukkit.getPlayer(entry.getKey());
  166. if (target != null) {
  167. String color;
  168. switch (archerMark.currentLevel) {
  169. case 1: {
  170. color = "&e";
  171. break;
  172. }
  173. case 2: {
  174. color = "&a";
  175. break;
  176. }
  177. case 3: {
  178. color = "&c";
  179. break;
  180. }
  181. default: {
  182. color = "&e";
  183. break;
  184. }
  185. }
  186.  
  187. String name = target.getName().substring(0, Math.min(target.getName().length(), 15));
  188.  
  189. lines.add("&e» &c" + name + ' ' + color + "[Mark " + archerMark.currentLevel + ']');
  190. }
  191. }
  192. }
  193. }
  194.  
  195. Collection<Timer> timers = timerManager.getTimers();
  196. for (Timer timer : timers) {
  197. if (timer instanceof EventTimer) {
  198. continue;
  199. }
  200. if (timer instanceof PlayerTimer) {
  201. if (!profile.scoreboardTimer) {
  202. continue;
  203. }
  204. PlayerTimer playerTimer = (PlayerTimer) timer;
  205. if (playerTimer.getRemaining(player) > 0L) {
  206. String name = playerTimer.getName();
  207. if (name.length() > 14) {
  208. name = name.substring(0, 14);
  209. }
  210. lines.add(playerTimer.getScoreboardPrefix() + name + "&7: &c" + DurationFormatter.getRemaining(playerTimer.getRemaining(player), true));
  211. }
  212. } else if (timer instanceof GlobalTimer) {
  213. GlobalTimer globalTimer = (GlobalTimer) timer;
  214. if (globalTimer instanceof SOTWTimer) {
  215. continue;
  216. }
  217. if (globalTimer.getRemaining() > 0L) {
  218. String name = globalTimer.getName();
  219. if (name.length() > 14) {
  220. name = name.substring(0, 14);
  221. }
  222. lines.add(globalTimer.getScoreboardPrefix() + name + "&7: &c" + DurationFormatter.getRemaining(globalTimer.getRemaining(), true));
  223. }
  224. }
  225. }
  226.  
  227. lines.addAll(getScoreboardEvents(player, eventTimer, lines.isEmpty()));
  228.  
  229. if (!lines.isEmpty()) {
  230. if (lines.size() < 15) {
  231. lines.add(0, BARS);
  232. if (lines.size() < 14) {
  233. lines.add(BARS);
  234. }
  235. }
  236. }
  237. return lines;
  238. }
  239.  
  240. @Override
  241. public BoardStyle getBoardStyle(Player player) {
  242. return BoardStyle.MODERN;
  243. }
  244.  
  245. private List<String> getScoreboardFreeze() {
  246. List<String> lines = new ArrayList<>();
  247. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&m-----------------------");
  248. lines.add("\u2588\u2588\u2588\u2588&c\u2588&f\u2588\u2588\u2588\u2588");
  249. lines.add("\u2588\u2588\u2588&c\u2588&0\u2588&c\u2588&f\u2588\u2588\u2588");
  250. lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
  251. lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
  252. lines.add("\u2588\u2588&c\u2588&6\u2588&0\u2588&6\u2588&c\u2588&f\u2588\u2588");
  253. lines.add("\u2588&c\u2588&6\u2588\u2588\u2588&6\u2588\u2588&c\u2588&f\u2588");
  254. lines.add("&c\u2588&6\u2588\u2588\u2588&0\u2588&6\u2588\u2588\u2588&c\u2588");
  255. lines.add("&c\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588");
  256. lines.add("");
  257. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&b" : "&6") + "&lTeamSpeak: &3" + AxisConfiguration.getString("teamspeak"));
  258. lines.add((ConfigurationService.SERVER_NAME.startsWith("vexus") || ConfigurationService.SERVER_NAME.startsWith("teamshq") ? "&3" : "&e") + "&m-----------------------");
  259. return lines;
  260. }
  261.  
  262. private List<String> getScoreboardEvents(Player player, EventTimer eventTimer, boolean linesEmpty) {
  263. List<String> lines = new ArrayList<>();
  264. if (eventTimer.getEventFaction() instanceof KothFaction) {
  265. lines.add("&9&l" + eventTimer.getEventFaction().getName() + "&7: &c" + DurationFormatter.getRemaining(eventTimer.getRemaining(), true));
  266. } else if (eventTimer.getEventFaction() instanceof CitadelFaction) {
  267. lines.add("&5&lCitadel&7: &c" + DurationFormatter.getRemaining(eventTimer.getRemaining(), true));
  268. } else if (eventTimer.getEventFaction() instanceof ConquestFaction) {
  269. if (!linesEmpty) {
  270. lines.add(BARS);
  271. }
  272. lines.add("&e&lConquest&7:");
  273. int points = 0;
  274. ConquestFaction conquestFaction = (ConquestFaction) eventTimer.getEventFaction();
  275. ConquestTracker conquestTracker = (ConquestTracker) conquestFaction.getEventType().getEventTracker();
  276. List<Map.Entry<PlayerFaction, Integer>> entries = new ArrayList<>(conquestTracker.getFactionPointsMap().entrySet());
  277.  
  278. for (Map.Entry<PlayerFaction, Integer> entry : entries) {
  279. if (entry.getValue() < 1) {
  280. continue;
  281. }
  282. lines.add(' ' + entry.getKey().getDisplayName(player) + "&7: " + entry.getValue());
  283. points++;
  284.  
  285. if (points >= 3) break;
  286. }
  287.  
  288. if (points < 1) {
  289. lines.add(" &7No scores yet!");
  290. }
  291. if (lines.size() < 10) {
  292. lines.add(BARS);
  293. lines.add("&d&lMain&7: " + conquestFaction.getMain().getScoreboardRemaining());
  294. lines.add("&c&lRed&7: " + conquestFaction.getRed().getScoreboardRemaining());
  295. lines.add("&9&lBlue&7: " + conquestFaction.getBlue().getScoreboardRemaining());
  296. lines.add("&e&lYellow&7: " + conquestFaction.getYellow().getScoreboardRemaining());
  297. lines.add("&a&lGreen&7: " + conquestFaction.getGreen().getScoreboardRemaining());
  298. }
  299. }
  300. return lines;
  301. }
  302.  
  303. private String handleBardFormat(long millis) {
  304. return (DateTimeFormats.REMAINING_SECONDS_TRAILING).get().format(millis * 0.001);
  305. }
  306.  
  307. private Comparator<Map.Entry<UUID, ArcherMark>> ARCHER_MARK_COMPARATOR = Comparator.comparing(Map.Entry::getValue);
  308. }
Advertisement
Add Comment
Please, Sign In to add comment