- Баллы
- 66
- Имя в Minecraft
- HogeltBellai
Код:
package ru.hogeltbellai.network.api.scoreboard;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;
import org.bukkit.scoreboard.Team;
import ru.hogeltbellai.network.api.group.GroupAPI;
import ru.hogeltbellai.network.api.player.BalanceAPI;
import ru.hogeltbellai.network.main.MainNetwork;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.HashMap;
import java.util.Map;
@SuppressWarnings("unused")
public class ScoreboardAPI {
private GroupAPI groupAPI;
private static Map<Player, Scoreboard> playerScoreboards = new HashMap<>();
private static Map<Player, Map<Integer, Team>> playerScoreboardTeams = new HashMap<>();
public ScoreboardAPI(GroupAPI groupAPI) {
this.groupAPI = groupAPI;
}
public void createScoreboard(Player p, String title) {
Scoreboard scoreboard = p.getScoreboard();
Objective objective = scoreboard.registerNewObjective("main", "dummy");
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
objective.setDisplayName(title);
playerScoreboards.put(p, scoreboard);
playerScoreboardTeams.put(p, new HashMap<>());
}
public void setLine(Player player, String text, int score) {
Scoreboard scoreboard = playerScoreboards.get(player);
if(scoreboard == null) return;
Objective objective = scoreboard.getObjective("main");
if(objective == null) return;
Team team = getTeamForScore(player, score);
if (team != null) {
team.unregister();
}
team = scoreboard.registerNewTeam("line" + score);
team.addEntry(generateEntry(score));
team.setPrefix(text);
objective.getScore(generateEntry(score)).setScore(score);
playerScoreboardTeams.get(player).put(score, team);
}
private Team getTeamForScore(Player player, int score) {
if (!playerScoreboardTeams.containsKey(player)) {
return null;
}
return playerScoreboardTeams.get(player).get(score);
}
private String generateEntry(int score) {
return ChatColor.values()[score].toString();
}
public void removeScoreboard(Player player) {
Scoreboard scoreboard = playerScoreboards.get(player);
if (scoreboard != null) {
player.setScoreboard(Bukkit.getScoreboardManager().getMainScoreboard());
playerScoreboards.remove(player);
playerScoreboardTeams.remove(player);
}
}
public void setPlayerPrefix(Player player, String prefix) {
Scoreboard scoreboard = player.getScoreboard();
Team team = scoreboard.getTeam(player.getName());
if (team == null) {
team = scoreboard.registerNewTeam(player.getName());
}
team.setPrefix(prefix + " ");
team.addEntry(player.getName());
}
public void setPrefixesForAllPlayers() {
for (Player p : Bukkit.getOnlinePlayers()) {
String groupName = groupAPI.getPlayerGroup(p.getUniqueId().toString());
if (groupName != null) {
String prefix = groupAPI.getPrefixPlayerGroup(p.getUniqueId().toString());
if (prefix != null) {
setPlayerPrefix(p, prefix);
}
}
}
}
}
Нужно сделать так что бы префиксы были видны всем, ибо щас они для каждого отдельно видны