Advertisement
Guest User

Untitled

a guest
Dec 8th, 2019
136
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.57 KB | None | 0 0
  1. package com.dazzhub.Utils.Scoreboard;
  2.  
  3. import com.dazzhub.Arena.Arena;
  4. import com.dazzhub.Main;
  5. import com.dazzhub.MySQL.Utils.GamePlayer;
  6. import org.bukkit.Bukkit;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.configuration.Configuration;
  9. import org.bukkit.entity.Player;
  10.  
  11. import java.security.SecureRandom;
  12. import java.text.SimpleDateFormat;
  13. import java.util.Date;
  14. import java.util.HashMap;
  15.  
  16. public class ScoreBoardAPI {
  17.  
  18. private Main plugin;
  19. private HashMap<Player, Integer> scoretask;
  20.  
  21. public ScoreBoardAPI(Main plugin) {
  22. this.plugin = plugin;
  23. this.scoretask = new HashMap<>();
  24.  
  25. }
  26.  
  27. public void setScoreBoard(Player p, ScoreboardType scoreboardType) {
  28. removeScoreBoard(p);
  29. p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
  30. ScoreBoardBuilder scoreboard = new ScoreBoardBuilder(randomString(8), false,false,false);
  31. int id = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, () -> {
  32. Configuration config = plugin.getConfigUtils().getConfig(plugin, "Scoreboards");
  33. scoreboard.setName(chars(p, config.getString(scoreboardType.toString() + ".title")));
  34.  
  35. int line = config.getStringList(scoreboardType.toString() + ".lines").size();
  36. for (final String s : config.getStringList(scoreboardType.toString() + ".lines")) {
  37. scoreboard.lines(line, chars(p, s));
  38. line--;
  39. }
  40. }, 0, 20).getTaskId();
  41. p.setScoreboard(scoreboard.getScoreboard());
  42. this.scoretask.put(p, id);
  43. }
  44.  
  45. public void setGameScoreboard(Player p, ScoreboardType scoreboardType, boolean health, boolean spect, boolean gamePlayers, Arena arena) {
  46. removeScoreBoard(p);
  47. p.setScoreboard(Bukkit.getScoreboardManager().getNewScoreboard());
  48. ScoreBoardBuilder scoreboard = new ScoreBoardBuilder(randomString(8), health, spect, gamePlayers);
  49. int id = Bukkit.getScheduler().runTaskTimerAsynchronously(plugin, () -> {
  50. Configuration config = plugin.getConfigUtils().getConfig(plugin, "Scoreboards");
  51.  
  52. scoreboard.setName(charsArena(p, arena, config.getString(scoreboardType.toString() + ".title")));
  53.  
  54.  
  55. int line = config.getStringList(scoreboardType.toString() + ".lines").size();
  56. for (final String s : config.getStringList(scoreboardType.toString() + ".lines")) {
  57. scoreboard.lines(line, charsArena(p, arena, s));
  58. line--;
  59. }
  60. if (health) scoreboard.updatelife(arena);
  61. if (spect) scoreboard.updatespect(arena);
  62. if (gamePlayers) scoreboard.updategames(arena);
  63. }, 0, 20).getTaskId();
  64. p.setScoreboard(scoreboard.getScoreboard());
  65. this.scoretask.put(p, id);
  66. }
  67.  
  68. public void removeScoreBoard(Player p) {
  69. p.setScoreboard(Bukkit.getServer().getScoreboardManager().getNewScoreboard());
  70. if (this.scoretask.containsKey(p)) Bukkit.getScheduler().cancelTask(this.scoretask.get(p));
  71. }
  72.  
  73. private String charsArena(Player p, Arena arena, String c) {
  74. String transformed = (ChatColor.translateAlternateColorCodes('&', c)
  75. .replaceAll("%date%", getDate())
  76. .replaceAll("%online%", String.valueOf(arena.getPlayers().size()))
  77. .replaceAll("%maxPlayers%", String.valueOf(arena.getMaxPlayers()))
  78. .replaceAll("%map%", arena.getName())
  79. .replaceAll("%start%", arena.getStartingGame2())
  80. .replaceAll("%event%", arena.typeEvent())
  81. .replaceAll("%kills%", String.valueOf(arena.getKillers().get(p.getName())))
  82. );
  83.  
  84. if (plugin.getPlayerManager().containsPlayer(p)) {
  85. GamePlayer gamePlayer = plugin.getPlayerManager().getPlayer(p);
  86. transformed = (transformed
  87. .replaceAll("%kit%", String.valueOf(gamePlayer.getKit()))
  88. .replaceAll("%coins%", String.valueOf(gamePlayer.getCoins()))
  89. );
  90. }
  91.  
  92. return transformed;
  93. }
  94.  
  95. private String chars(Player p, String c) {
  96. GamePlayer gamePlayer = plugin.getPlayerManager().getPlayer(p);
  97. return (ChatColor.translateAlternateColorCodes('&', c)
  98. .replaceAll("%date%", getDate())
  99. .replaceAll("%wins%", String.valueOf(gamePlayer.getWins()))
  100. .replaceAll("%kills%", String.valueOf(gamePlayer.getKills()))
  101. .replaceAll("%deaths%", String.valueOf(gamePlayer.getDeaths()))
  102. .replaceAll("%hits%", String.valueOf(gamePlayer.getShots()))
  103. .replaceAll("%kit%", gamePlayer.getKit().replace("none", plugin.getLang().getString("Messages.MySQL.Kit")))
  104. .replaceAll("%player%", String.valueOf(gamePlayer.getPlayer()))
  105. .replaceAll("%coins%", String.valueOf(gamePlayer.getCoins()))
  106. );
  107. }
  108.  
  109. private String getDate() {
  110. return new SimpleDateFormat("MM/dd/yy").format(new Date());
  111. }
  112.  
  113. private String randomString(int length) {
  114. String AB = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
  115. SecureRandom rnd = new SecureRandom();
  116.  
  117. StringBuilder sb = new StringBuilder(length);
  118. for (int i = 0; i < length; i++)
  119. sb.append(AB.charAt(rnd.nextInt(AB.length())));
  120. return sb.toString();
  121. }
  122.  
  123. private String c(String c) {
  124. return ChatColor.translateAlternateColorCodes('&', c);
  125. }
  126.  
  127. public enum ScoreboardType {
  128. LOBBY, STARTING, INGAME
  129. }
  130.  
  131. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement