- Баллы
- 66
Я хочу сделать скордборд.
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scoreboard.DisplaySlot;
import org.bukkit.scoreboard.Objective;
import org.bukkit.scoreboard.Score;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.ScoreboardManager;;
public class ScoreListener implements Listener {
/**
* Первым делом мы делаем ивент, который при входе игрока будет отображать борд
* Пустые пробелы меняем на текст, в зависимости что будете отображать
*/
@EventHandler
public void PlayerJoinEvent(PlayerJoinEvent event) {
scoreboard(event.getPlayer());
}
public static void scoreboard(final Player player) {
new BukkitRunnable() {
public void run() {
if (Bukkit.getPlayer(player.getUniqueId()) == null) {
this.cancel();
} else {
ScoreboardManager scoreboardmanager = Bukkit.getScoreboardManager();
Scoreboard scoreboard = scoreboardmanager.getNewScoreboard();
Objective objective = scoreboard.registerNewObjective("test", "dummy");
objective.setDisplaySlot(DisplaySlot.SIDEBAR);
objective.setDisplayName("Server Name");
/**
* Здесь я сделал отображение даты (МСК)
**/
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Date date = new Date();
Score score12 = objective.getScore("§7" + dateFormat.format(date));
score12.setScore(12);
Score score11 = objective.getScore("");
score11.setScore(11);
Score score10 = objective.getScore("");
score10.setScore(10);
Score score9 = objective.getScore("");
score9.setScore(9);
// Это как пример, сюда можно что угодно ставить в место получени онлайна
Score score8 = objective.getScore("" + Bukkit.getServer().getOnlinePlayers().size());
score8.setScore(8);
Score score7 = objective.getScore("");
score7.setScore(7);
Score score6 = objective.getScore("");
score6.setScore(6);
Score score5 = objective.getScore("");
score5.setScore(5);
Score score4 = objective.getScore("");
score4.setScore(4);
Score score3 = objective.getScore("");
score3.setScore(3);
Score score2 = objective.getScore("");
score2.setScore(2);
Score score1 = objective.getScore("");
score1.setScore(1);
Score score0 = objective.getScore("server ip");
score0.setScore(0);
player.setScoreboard(scoreboard);
}
}
// Здесь getInstance идёт из основного класса, я думаю, что вы сможете это метод создать
}.runTaskTimer(Название_Вашего_Класса.getInstance(), 0L, 40L);
}
}
Bukkit.getPlayer(player.getUniqueId()) == null
Ну или хотябС этой проверки я выпал)
Используй player.isOnline() и будет счастье.Код:Bukkit.getPlayer(player.getUniqueId()) == null
Bukkit.getOnlinePlayers().contains(player)
Ужас, ничем не лучше. Бессмысленная штука ващеНу или хотяб
Код:Bukkit.getOnlinePlayers().contains(player)
player != null ?)Ужас, ничем не лучше. Бессмысленная штука ваще
player != null ?)
Он не может быть нулл, если изначально им не был. Это же не AtomicReference.player != null ?)
По идее же вообще можно вызвать этот метод в цикле Bukkit.getOnlinePlayers() и проверка не будет нужна, да?Он не может быть нулл, если изначально им не был. Это же не AtomicReference.
Поэтому в данном случае только player.isOnline() и никак иначе
В примере выше идёт работа с конкретным игроком, поэтому перебирать всех не требуется.По идее же вообще можно вызвать этот метод в цикле Bukkit.getOnlinePlayers() и проверка не будет нужна, да?
А, Я думал он создаётся для всех игроков на сервереВ примере выше идёт работа с конкретным игроком, поэтому перебирать всех не требуется.
Чисто теоретически сработает и Bukkit.getOnlinePlayers().contains(), но .isOnline() работает существенно эффективней
эту хрень я кодил ещё со времён, когда динозавры зарождалисьС этой проверки я выпал)
Используй player.isOnline() и будет счастье.Код:Bukkit.getPlayer(player.getUniqueId()) == null
