Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ca.draxer.scoreboard.utils;
- import java.util.ArrayList;
- import java.util.List;
- import org.apache.commons.lang.StringUtils;
- import org.bukkit.ChatColor;
- import org.bukkit.entity.Player;
- import org.bukkit.scoreboard.DisplaySlot;
- import org.bukkit.scoreboard.Objective;
- import org.bukkit.scoreboard.Scoreboard;
- import org.bukkit.scoreboard.Team;
- import com.google.common.base.Preconditions;
- public class ScoreboardHelper {
- private List<ScoreboardText> texts;
- private Scoreboard sb;
- private Objective obj;
- private String str;
- private int last;
- public ScoreboardHelper(Scoreboard sb, String name) {
- texts = new ArrayList<>();
- str = "PlaceHolder";
- last = -1;
- Preconditions.checkState(name.length() <= 32, "title can not be more than 32");
- str = ChatColor.translateAlternateColorCodes('&', name);
- this.sb = sb;
- (obj = getOrCreateObjective(str)).setDisplaySlot(DisplaySlot.SIDEBAR);
- }
- public Scoreboard getScoreBoard() {
- return this.sb;
- }
- public void add(String msg) {
- msg = ChatColor.translateAlternateColorCodes('&', msg);
- ScoreboardText text = null;
- if(msg.length() <= 16) {
- text = new ScoreboardText(msg, "");
- } else {
- String first = msg.substring(0, 16);
- String second = msg.substring(16, msg.length());
- if(first.endsWith(String.valueOf('§'))) {
- first = first.substring(0, first.length() - 1);
- second = String.valueOf(String.valueOf('§')) + second;
- }
- String lastColors = ChatColor.getLastColors(first);
- second = String.valueOf(String.valueOf(lastColors)) + second;
- text = new ScoreboardText(first, StringUtils.left(second, 16));
- }
- texts.add(text);
- }
- public void clear() {
- texts.clear();
- }
- public void remove(int index) {
- String name = getNameForIndex(index);
- sb.resetScores(name);
- Team team = getOrCreateTeam(String.valueOf(String.valueOf(ChatColor.stripColor(StringUtils.left(str, 14)))) + index, index);
- team.unregister();
- }
- public void update(Player player) {
- player.setScoreboard(this.sb);
- for(int sentCount = 0; sentCount < texts.size(); sentCount++) {
- Team i = getOrCreateTeam(String.valueOf(String.valueOf(ChatColor.stripColor(StringUtils.left(str, 14)))) + sentCount, sentCount);
- ScoreboardText str = (ScoreboardText)texts.get(texts.size() - sentCount - 1);
- i.setPrefix(str.getLeft());
- i.setSuffix(str.getRight());
- obj.getScore(getNameForIndex(sentCount)).setScore(sentCount + 1);
- }
- if(last != -1) {
- int sentCount = this.texts.size(); for (int var4 = 0; var4 < last - sentCount; var4++) {
- remove(sentCount + var4);
- }
- }
- last = texts.size();
- }
- public Team getOrCreateTeam(String team, int i) {
- Team value = sb.getTeam(team);
- if(value == null) {
- value = sb.registerNewTeam(team);
- value.addEntry(getNameForIndex(i));
- }
- return value;
- }
- public Objective getOrCreateObjective(String objective) {
- Objective value = sb.getObjective("dummyhubobj");
- if(value == null) {
- value = sb.registerNewObjective("dummyhubobj", "dummy");
- }
- value.setDisplayName(objective);
- return value;
- }
- public String getNameForIndex(int index) {
- return String.valueOf(String.valueOf(ChatColor.values()[index].toString())) + ChatColor.RESET;
- }
- private static class ScoreboardText {
- private String left;
- private String right;
- public ScoreboardText(String left, String right) {
- this.left = left;
- this.right = right;
- }
- public String getLeft() {
- return this.left;
- }
- public String getRight() {
- return this.right;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement