- Баллы
- 103
- Имя в Minecraft
- Nick
Имеется ScoreBoard в котором мерцает скорборд, и чем больше игроков играет тем сильнее мерцает.
В ооп не шарю, находил какой-то код, но так в нем и не разобрался.
В ооп не шарю, находил какой-то код, но так в нем и не разобрался.
Код:
@EventHandler
public void onJoin(PlayerJoinEvent e){
createBoard(e.getPlayer());
}
public void createBoard(Player player) {
Scoreboard scoreboard = Bukkit.getServer().getScoreboardManager().getNewScoreboard();
Objective objective = scoreboard.registerNewObjective("stats", "dummy");
Objective objective1 = scoreboard.registerNewObjective("lives", "dummy");
setScore(objective, player);
setLevel(objective1, player);
setPrefix(scoreboard);
player.setScoreboard(scoreboard);
}
public void setLevel(Objective o, Player p) {
o.setDisplaySlot(DisplaySlot.BELOW_NAME);
o.setDisplayName(data.getString("below"));
for(Player online : Bukkit.getOnlinePlayers()){
Score score = o.getScore(online);
long health = Math.round((online).getHealth());
score.setScore((int) health);
}
}
public void setScore(Objective o, Player p) {
o.setDisplaySlot(DisplaySlot.SIDEBAR);
List<String> board = new ArrayList<>();
board = data.getStringList("scoreboard.score");
o.setDisplayName(data.getString("scoreboard.title"));
o.getScore(board.get(0).replace("{battle}", ""+points.get(p))).setScore(4);
o.getScore(board.get(1)).setScore(3);
o.getScore(board.get(2).replace("{random}", randomLine(p))).setScore(2);
o.getScore(board.get(3)).setScore(1);
o.getScore(board.get(4)).setScore(0);
}
@SuppressWarnings("deprecation")
public void startscoreboard() {
new BukkitRunnable(){
@Override
public void run() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
Scoreboard scoreboard = player.getScoreboard();
if(scoreboard == null){
createBoard(player);
}else{
for(String entry : scoreboard.getEntries()){
scoreboard.resetScores(entry);
}
setScore(scoreboard.getObjective("stats"), player);
setLevel(scoreboard.getObjective("lives"), player);
player.setScoreboard(scoreboard);
}
}
}
}.runTaskTimer(Main.getInstance(), 0L, (long)(60));
}
public void starttabprefix() {
new BukkitRunnable(){
@Override
public void run() {
updatePrefix();
}
}.runTaskTimer(Main.getInstance(), 0L, (long)(61));
}
public void setPrefix(Scoreboard scoreboard) {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
String string = "#" + player.getName();
String preo;
if(string.length() > 16) {
preo = string.substring(0, 16);
}else{
preo = string;
}
Team team = scoreboard.getTeam(preo);
if (team == null) {
team = scoreboard.registerNewTeam(preo);
if(Events.getRegion(player).equalsIgnoreCase("Кафе")){
team.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.NEVER);
}else{
team.setOption(Team.Option.COLLISION_RULE, Team.OptionStatus.ALWAYS);
}
team.addPlayer((OfflinePlayer)player);
team.setPrefix(data.getString("prefix").replace("{level}", ""+Level.get(player)));
}else{
team.addEntry(player.getName());
}
}
}
public void updatePrefix() {
for (Player player : Bukkit.getServer().getOnlinePlayers()) {
for (Team team : player.getScoreboard().getTeams()) {
team.unregister();
}
}
Bukkit.getServer().getOnlinePlayers().stream().forEach((player) -> {
setPrefix(player.getScoreboard());
});
}