Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SimpleScoreboard
- {
- private Objective obj;
- private Scoreboard scoreboard;
- private String title;
- private Map<String, Integer> scores;
- private List<Team> teams;
- public SimpleScoreboard(String title)
- {
- this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
- this.title = title;
- this.scores = Maps.newLinkedHashMap();
- this.teams = Lists.newArrayList();
- }
- public void blankLine()
- {
- add(" ");
- }
- public void add(String text)
- {
- add(text, null);
- }
- public void add(String text, Integer score)
- {
- Preconditions.checkArgument(text.length() < 48, "text cannot be over 48 characters in length");
- text = fixDuplicates(text);
- this.scores.put(text, score);
- }
- private String fixDuplicates(String text)
- {
- while (this.scores.containsKey(text)) {
- text = text + "ยงr";
- }
- if (text.length() > 48) {
- text = text.substring(0, 47);
- }
- return text;
- }
- private Map.Entry<Team, String> createTeam(String text)
- {
- String result = "";
- if (text.length() <= 16) {
- return new AbstractMap.SimpleEntry(null, text);
- }
- Team team = this.scoreboard.registerNewTeam("text-" + this.scoreboard.getTeams().size());
- Iterator<String> iterator = Splitter.fixedLength(16).split(text).iterator();
- team.setPrefix((String)iterator.next());
- result = (String)iterator.next();
- if (text.length() > 32) {
- team.setSuffix((String)iterator.next());
- }
- this.teams.add(team);
- return new AbstractMap.SimpleEntry(team, result);
- }
- public void build()
- {
- obj = this.scoreboard.registerNewObjective(this.title.length() > 16 ? this.title.substring(0, 15) : this.title, "dummy");
- obj.setDisplayName(this.title);
- obj.setDisplaySlot(DisplaySlot.SIDEBAR);
- int index = this.scores.size();
- for (Map.Entry<String, Integer> text : this.scores.entrySet())
- {
- Map.Entry<Team, String> team = createTeam((String)text.getKey());
- Integer score = Integer.valueOf(text.getValue() != null ? ((Integer)text.getValue()).intValue() : index);
- String player = (String)team.getValue();
- if (team.getKey() != null) {
- ((Team)team.getKey()).addPlayer(Bukkit.getOfflinePlayer(player));
- }
- obj.getScore(player).setScore(score.intValue());
- index--;
- }
- }
- public void reset()
- {
- this.title = null;
- this.scores.clear();
- for (Team t : this.teams) {
- t.unregister();
- }
- this.teams.clear();
- }
- public Scoreboard getScoreboard()
- {
- return this.scoreboard;
- }
- public void send(Player... players)
- {
- Player[] arrayOfPlayer;
- int j = (arrayOfPlayer = players).length;
- for (int i = 0; i < j; i++)
- {
- Player p = arrayOfPlayer[i];
- p.setScoreboard(this.scoreboard);
- }
- }
- @SuppressWarnings("deprecation")
- public void update(String text, Integer score) {
- if (scores.containsKey(text)) {
- scores.put(text, score);
- for (Team t : teams) {
- if (t.getName() == text) {
- t.unregister();
- }
- }
- Map.Entry<Team, String> team = createTeam(text);
- OfflinePlayer player = Bukkit.getOfflinePlayer(team.getValue());
- if (team.getKey() != null)
- team.getKey().addPlayer(player);
- obj.getScore(player).setScore(score);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement