You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
179 lines
5.6 KiB
179 lines
5.6 KiB
package cx.sfy.TheBridge.utils;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.entity.Player;
|
|
import org.bukkit.potion.PotionEffect;
|
|
import org.bukkit.potion.PotionEffectType;
|
|
import org.bukkit.scoreboard.DisplaySlot;
|
|
import org.bukkit.scoreboard.Objective;
|
|
import org.bukkit.scoreboard.Scoreboard;
|
|
import org.bukkit.scoreboard.Team;
|
|
|
|
public class ScoreboardUtil {
|
|
|
|
private Scoreboard scoreboard;
|
|
private Objective objective;
|
|
private Objective objective2;
|
|
private boolean reset;
|
|
|
|
public String color(String s) {
|
|
return s.replaceAll("&", "§");
|
|
}
|
|
|
|
public ScoreboardUtil(String s, String s2, Boolean b) {
|
|
this.scoreboard = Bukkit.getScoreboardManager().getNewScoreboard();
|
|
(this.objective = this.scoreboard.registerNewObjective(s2, "dummy")).setDisplayName(s);
|
|
this.objective2 = this.scoreboard.registerNewObjective("h2", "health");
|
|
this.objective.setDisplaySlot(DisplaySlot.SIDEBAR);
|
|
this.objective2.setDisplayName((Object)ChatColor.RED + "❤");
|
|
this.objective2.setDisplaySlot(DisplaySlot.BELOW_NAME);
|
|
}
|
|
|
|
public void setName(String substring) {
|
|
if (substring.length() > 32) {
|
|
substring = substring.substring(0, 32);
|
|
}
|
|
this.objective.setDisplayName(color(substring));
|
|
}
|
|
|
|
public void lines(Integer n, String substring) {
|
|
Team team = this.scoreboard.getTeam("TEAM_" + n);
|
|
if (substring.length() > 32) {
|
|
substring = substring.substring(0, 32);
|
|
}
|
|
String[] splitStringLine = this.splitStringLine(substring);
|
|
if (team == null) {
|
|
Team registerNewTeam = this.scoreboard.registerNewTeam("TEAM_" + n);
|
|
registerNewTeam.addEntry(this.getEntry(n));
|
|
this.setPrefix(registerNewTeam, splitStringLine[0]);
|
|
this.setSuffix(registerNewTeam, splitStringLine[1]);
|
|
this.objective.getScore(this.getEntry(n)).setScore((int)n);
|
|
} else {
|
|
this.setPrefix(team, splitStringLine[0]);
|
|
this.setSuffix(team, splitStringLine[1]);
|
|
}
|
|
}
|
|
|
|
public int getArb(Player p) {
|
|
for (PotionEffect e : p.getActivePotionEffects()) {
|
|
if (e.getType().equals(PotionEffectType.ABSORPTION)) {
|
|
return e.getAmplifier();
|
|
}
|
|
}
|
|
return 0;
|
|
}
|
|
|
|
public void setPrefix(Team team, String prefix) {
|
|
if (prefix.length() > 16) {
|
|
team.setPrefix(prefix.substring(0, 16));
|
|
return;
|
|
}
|
|
team.setPrefix(prefix);
|
|
}
|
|
|
|
public void setSuffix(Team team, String s) {
|
|
if (s.length() > 16) {
|
|
team.setSuffix(this.maxChars(16, s));
|
|
}
|
|
else {
|
|
team.setSuffix(s.substring(0, s.length()));
|
|
}
|
|
}
|
|
|
|
public String maxChars(int n, String s) {
|
|
if (ChatColor.translateAlternateColorCodes('&', s).length() > n) {
|
|
return s.substring(0, n);
|
|
}
|
|
return ChatColor.translateAlternateColorCodes('&', s);
|
|
}
|
|
|
|
public String getEntry(Integer n) {
|
|
if (n == 0) {
|
|
return "§0";
|
|
}
|
|
if (n == 1) {
|
|
return "§1";
|
|
}
|
|
if (n == 2) {
|
|
return "§2";
|
|
}
|
|
if (n == 3) {
|
|
return "§3";
|
|
}
|
|
if (n == 4) {
|
|
return "§4";
|
|
}
|
|
if (n == 5) {
|
|
return "§5";
|
|
}
|
|
if (n == 6) {
|
|
return "§6";
|
|
}
|
|
if (n == 7) {
|
|
return "§7";
|
|
}
|
|
if (n == 8) {
|
|
return "§8";
|
|
}
|
|
if (n == 9) {
|
|
return "§9";
|
|
}
|
|
if (n == 10) {
|
|
return "§a";
|
|
}
|
|
if (n == 11) {
|
|
return "§b";
|
|
}
|
|
if (n == 12) {
|
|
return "§c";
|
|
}
|
|
if (n == 13) {
|
|
return "§d";
|
|
}
|
|
if (n == 14) {
|
|
return "§e";
|
|
}
|
|
if (n == 15) {
|
|
return "§f";
|
|
}
|
|
return "";
|
|
}
|
|
|
|
public Scoreboard getScoreboard() {
|
|
return this.scoreboard;
|
|
}
|
|
|
|
public void setReset(boolean reset) {
|
|
this.reset = reset;
|
|
}
|
|
|
|
public boolean isReset() {
|
|
return this.reset;
|
|
}
|
|
|
|
public void build(Player player) {
|
|
player.setScoreboard(this.scoreboard);
|
|
}
|
|
|
|
private String[] splitStringLine(String s) {
|
|
StringBuilder sb = new StringBuilder(s.substring(0, (s.length() >= 16) ? 16 : s.length()));
|
|
StringBuilder sb2 = new StringBuilder((s.length() > 16) ? s.substring(16) : "");
|
|
if (sb.toString().length() > 1 && sb.charAt(sb.length() - 1) == '§') {
|
|
sb.deleteCharAt(sb.length() - 1);
|
|
sb2.insert(0, '§');
|
|
}
|
|
String string = "";
|
|
for (int i = 0; i < sb.toString().length(); ++i) {
|
|
if (sb.toString().charAt(i) == '§' && i < sb.toString().length() - 1) {
|
|
string = String.valueOf(string) + "§" + sb.toString().charAt(i + 1);
|
|
}
|
|
}
|
|
String string2 = new StringBuilder().append((Object)sb2).toString();
|
|
if (sb.length() > 14) {
|
|
string2 = (string.isEmpty() ? ("§" + string2) : (String.valueOf(String.valueOf(string)) + string2));
|
|
}
|
|
return new String[] { (sb.toString().length() > 16) ? sb.toString().substring(0, 16) : sb.toString(), (string2.toString().length() > 16) ? string2.toString().substring(0, 16) : string2.toString() };
|
|
}
|
|
|
|
}
|