Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.66 KB | None | 0 0
  1. package ca.draxer.scoreboard.utils;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.apache.commons.lang.StringUtils;
  7. import org.bukkit.ChatColor;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.scoreboard.DisplaySlot;
  10. import org.bukkit.scoreboard.Objective;
  11. import org.bukkit.scoreboard.Scoreboard;
  12. import org.bukkit.scoreboard.Team;
  13.  
  14. import com.google.common.base.Preconditions;
  15.  
  16. public class ScoreboardHelper {
  17.  
  18. private List<ScoreboardText> texts;
  19. private Scoreboard sb;
  20. private Objective obj;
  21. private String str;
  22. private int last;
  23.  
  24. public ScoreboardHelper(Scoreboard sb, String name) {
  25. texts = new ArrayList<>();
  26. str = "PlaceHolder";
  27. last = -1;
  28. Preconditions.checkState(name.length() <= 32, "title can not be more than 32");
  29. str = ChatColor.translateAlternateColorCodes('&', name);
  30. this.sb = sb;
  31. (obj = getOrCreateObjective(str)).setDisplaySlot(DisplaySlot.SIDEBAR);
  32. }
  33.  
  34. public Scoreboard getScoreBoard() {
  35. return this.sb;
  36. }
  37.  
  38. public void add(String msg) {
  39. msg = ChatColor.translateAlternateColorCodes('&', msg);
  40. ScoreboardText text = null;
  41. if(msg.length() <= 16) {
  42. text = new ScoreboardText(msg, "");
  43. } else {
  44. String first = msg.substring(0, 16);
  45. String second = msg.substring(16, msg.length());
  46. if(first.endsWith(String.valueOf('§'))) {
  47. first = first.substring(0, first.length() - 1);
  48. second = String.valueOf(String.valueOf('§')) + second;
  49. }
  50. String lastColors = ChatColor.getLastColors(first);
  51. second = String.valueOf(String.valueOf(lastColors)) + second;
  52. text = new ScoreboardText(first, StringUtils.left(second, 16));
  53. }
  54. texts.add(text);
  55. }
  56.  
  57. public void clear() {
  58. texts.clear();
  59. }
  60.  
  61. public void remove(int index) {
  62. String name = getNameForIndex(index);
  63. sb.resetScores(name);
  64. Team team = getOrCreateTeam(String.valueOf(String.valueOf(ChatColor.stripColor(StringUtils.left(str, 14)))) + index, index);
  65. team.unregister();
  66. }
  67.  
  68. public void update(Player player) {
  69. player.setScoreboard(this.sb);
  70. for(int sentCount = 0; sentCount < texts.size(); sentCount++) {
  71. Team i = getOrCreateTeam(String.valueOf(String.valueOf(ChatColor.stripColor(StringUtils.left(str, 14)))) + sentCount, sentCount);
  72. ScoreboardText str = (ScoreboardText)texts.get(texts.size() - sentCount - 1);
  73. i.setPrefix(str.getLeft());
  74. i.setSuffix(str.getRight());
  75. obj.getScore(getNameForIndex(sentCount)).setScore(sentCount + 1);
  76. }
  77. if(last != -1) {
  78. int sentCount = this.texts.size(); for (int var4 = 0; var4 < last - sentCount; var4++) {
  79. remove(sentCount + var4);
  80. }
  81. }
  82. last = texts.size();
  83. }
  84.  
  85. public Team getOrCreateTeam(String team, int i) {
  86. Team value = sb.getTeam(team);
  87. if(value == null) {
  88. value = sb.registerNewTeam(team);
  89. value.addEntry(getNameForIndex(i));
  90. }
  91. return value;
  92. }
  93.  
  94. public Objective getOrCreateObjective(String objective) {
  95. Objective value = sb.getObjective("dummyhubobj");
  96. if(value == null) {
  97. value = sb.registerNewObjective("dummyhubobj", "dummy");
  98. }
  99. value.setDisplayName(objective);
  100. return value;
  101. }
  102.  
  103. public String getNameForIndex(int index) {
  104. return String.valueOf(String.valueOf(ChatColor.values()[index].toString())) + ChatColor.RESET;
  105. }
  106.  
  107. private static class ScoreboardText {
  108. private String left;
  109. private String right;
  110.  
  111. public ScoreboardText(String left, String right) {
  112. this.left = left;
  113. this.right = right;
  114. }
  115.  
  116. public String getLeft() {
  117. return this.left;
  118. }
  119.  
  120. public String getRight() {
  121. return this.right;
  122. }
  123. }
  124. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement