lNockl

Objeto/Scoreboard

Jul 29th, 2017
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.93 KB | None | 0 0
  1. package me.nock.test.Utils.Minigame;
  2.  
  3. import java.util.HashMap;
  4. import java.util.LinkedHashMap;
  5. import java.util.Map;
  6.  
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.entity.Player;
  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.  
  15. public abstract class ScoreManager {
  16.  
  17. private Scoreboard scoreboard;
  18. private Objective objective;
  19. private Player player;
  20.  
  21. protected int currentLine = 16;
  22. protected Map<Integer, String> last = new HashMap<>();
  23. protected Map<Integer, String> cache = new LinkedHashMap<>();
  24.  
  25. public ScoreManager(Player p, String title) {
  26. this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
  27. this.objective = scoreboard.registerNewObjective("sbapi", "dummy");
  28. this.objective.setDisplayName(title.replace("&", "§"));
  29. this.objective.setDisplaySlot(DisplaySlot.SIDEBAR);
  30. this.setPlayer(p);
  31. p.setScoreboard(this.scoreboard);
  32. }
  33.  
  34. public boolean add(String text) {
  35. if (currentLine <= 0)
  36. return false;
  37. cache.put(currentLine--, text.replace("&", "§"));
  38. return true;
  39. }
  40.  
  41. public boolean BlankLine() {
  42. return add("");
  43. }
  44.  
  45. public void updateScore() {
  46. currentLine = 16;
  47. for (String text : cache.values())
  48. update(text);
  49. }
  50.  
  51. protected boolean update(String text) {
  52. text = placeHolders(text);
  53. if (text.length() > 32) {
  54. if (last.containsKey(currentLine))
  55. if (!last.get(currentLine).equals(text.substring(16, 32)))
  56. scoreboard.resetScores(last.get(currentLine));
  57. }
  58. String prefix = text.length() > 32 ? text.substring(0, 16) : "";
  59. String entry = text.length() > 32 ? text.substring(16, 32) : ChatColor.values()[currentLine - 1] + "§r";
  60. String suffix = text.length() > 32 ? text.substring(32, text.length() > 48 ? 48 : text.length()) : "";
  61. if (!text.isEmpty() && prefix == "")
  62. prefix = text.substring(0, text.length() > 16 ? 16 : text.length());
  63. if (text.length() > 16 && suffix == "") {
  64. if (prefix.substring(prefix.length() - 1).equals("§")) {
  65. prefix = prefix.substring(0, prefix.length() - 1);
  66. text = text.replace(prefix, "");
  67. suffix = text.substring(0, text.length() > 16 ? 16 : text.length());
  68. } else {
  69. text = ChatColor.getLastColors(prefix) + text.replace(prefix, "");
  70. suffix = text.substring(0, text.length() > 16 ? 16 : text.length());
  71. }
  72. }
  73. Team t = scoreboard.getTeam("[Team:" + currentLine + "]");
  74. if (t == null)
  75. t = scoreboard.registerNewTeam("[Team:" + currentLine + "]");
  76. t.setPrefix(prefix);
  77. t.setSuffix(suffix);
  78. if (!t.hasEntry(entry))
  79. t.addEntry(entry);
  80. objective.getScore(entry).setScore(currentLine);
  81. last.put(currentLine--, entry);
  82. return true;
  83. }
  84.  
  85. public abstract String placeHolders(String str);
  86.  
  87. public Player getPlayer() {
  88. return player;
  89. }
  90.  
  91. public void setPlayer(Player player) {
  92. this.player = player;
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment