Помогите Scoreboard и онлайн игроков

Статус
Закрыто для дальнейших ответов.

Forest_SD

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
Forest_SD
Я хочу сделать чтобы в scoreboard показывалось,сколько игроков зашло,пример(Игроков: 1/24),и обновлялось как только игрок зашел или вышел
 
Создешь скорборд, обьект, даешь всем игрокам. При заходе игрока увеличиваешь score на 1
 
И?я делал это,или ошибка,или значение не обновляется при выходи игрока,мне нужно как-то сделать это в PlayerJoinEvent, и PlayerQuitEvent, а потом передать значения в scoreboard,только я не могу додумать как...
 
Упс.. Забыл. Счас
Сори, лоханулся
 
-_-

Щас се будет


создаем статичный метод со входящим аргументом Player:
public static void classname (Player p) {
}

Находим сам ск:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
}

Регаем новую задачу:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");
}

Выводим вывод ск и его название:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);
}

Задаем сами очки и их значение (у нас же dummy)
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers()); // я знаю, что не поставил слэш, но не как-то по***.
sc.setScore(int)
}

И последнее:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers());
sc.setScore(int)

p.setScoreboard(board);
}

Регаешь два твоих ивента на выход и вход, вызываешь этот статичный метод, указываешь ему аргумент (это игрок) и профит. Ты получил то, что хотел.
 
-_-

Щас се будет


создаем статичный метод со входящим аргументом Player:
public static void (Player p) {
}

Находим сам ск:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
}

Регаем новую задачу:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");
}

Выводим вывод ск и его название:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);
}

Задаем сами очки и их значение (у нас же dummy)
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers()); // я знаю, что не поставил слэш, но не как-то по***.
sc.setScore(int)
}

И последнее:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers());
sc.setScore(int)

p.setScoreboard(board);
}

Регаешь два твоих ивента на выход и вход, вызываешь этот статичный метод, указываешь ему аргумент (это игрок) и профит. Ты получил то, что хотел.
Спасибо огромное!)
-_-

Щас се будет


создаем статичный метод со входящим аргументом Player:
public static void classname (Player p) {
}

Находим сам ск:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
}

Регаем новую задачу:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");
}

Выводим вывод ск и его название:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);
}

Задаем сами очки и их значение (у нас же dummy)
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers()); // я знаю, что не поставил слэш, но не как-то по***.
sc.setScore(int)
}

И последнее:
public static void (Player p) {
ScoreboardManager manager = Bukkit.getScoreboardManageer();
Scoreboard board = manager.getNewScoreBoard();
Objective obj = board.registerNewObjective("obj", "dummy");

obj.setDisplaySlot(DisplaySlot.SIDEBAR);
obj.setDisplayName(String);

Score sc = obj.getScore(Bukkit.getOnlinePlayers().size + Bukkit.getMaxPlayers());
sc.setScore(int)

p.setScoreboard(board);
}

Регаешь два твоих ивента на выход и вход, вызываешь этот статичный метод, указываешь ему аргумент (это игрок) и профит. Ты получил то, что хотел.
Я сделал немного по другому...но у меня возникли проблемы,вот код
Код:
public PlayerListener(){
        Objective obj = scoreboard.registerNewObjective("Test","Test");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Test_Server");

        Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
        score.setScore(5);

    }


    @EventHandler
    public void JoinPlayer(PlayerJoinEvent event){
        Player p = event.getPlayer();
        p.setScoreboard(scoreboard);
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
        score.setScore(1);

    }

    @EventHandler
    public void move(PlayerQuitEvent event){
        Player p = event.getPlayer();
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
        score.setScore(1);

    }
Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит
Я сделал немного по другому...но у меня возникли проблемы,вот код
Код:
public PlayerListener(){
        Objective obj = scoreboard.registerNewObjective("Test","Test");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Test_Server");

        Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
        score.setScore(5);

    }


    @EventHandler
    public void JoinPlayer(PlayerJoinEvent event){
        Player p = event.getPlayer();
        p.setScoreboard(scoreboard);
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
        score.setScore(1);

    }

    @EventHandler
    public void move(PlayerQuitEvent event){
        Player p = event.getPlayer();
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
        score.setScore(1);

    }
Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит
 

Вложения

  • test.png
    test.png
    13,3 КБ · Просмотры: 26
Спасибо огромное!)

Я сделал немного по другому...но у меня возникли проблемы,вот код
Код:
public PlayerListener(){
        Objective obj = scoreboard.registerNewObjective("Test","Test");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Test_Server");

        Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
        score.setScore(5);

    }


    @EventHandler
    public void JoinPlayer(PlayerJoinEvent event){
        Player p = event.getPlayer();
        p.setScoreboard(scoreboard);
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
        score.setScore(1);

    }

    @EventHandler
    public void move(PlayerQuitEvent event){
        Player p = event.getPlayer();
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
        score.setScore(1);

    }
Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит
Я сделал немного по другому...но у меня возникли проблемы,вот код
Код:
public PlayerListener(){
        Objective obj = scoreboard.registerNewObjective("Test","Test");
        obj.setDisplaySlot(DisplaySlot.SIDEBAR);
        obj.setDisplayName("Test_Server");

        Score score = obj.getScore(ChatColor.GOLD+ "Сервер: "+ ChatColor.GREEN + "Test");
        score.setScore(5);

    }


    @EventHandler
    public void JoinPlayer(PlayerJoinEvent event){
        Player p = event.getPlayer();
        p.setScoreboard(scoreboard);
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + Bukkit.getOnlinePlayers().size()));
        score.setScore(1);

    }

    @EventHandler
    public void move(PlayerQuitEvent event){
        Player p = event.getPlayer();
        Objective obj = scoreboard.getObjective(DisplaySlot.SIDEBAR);
        Score score = obj.getScore(Bukkit.getServer().getOfflinePlayer(ChatColor.BLUE + "Сейчас онлайн: " + ChatColor.YELLOW + "" + ChatColor.BOLD + (Bukkit.getOnlinePlayers().size() - 1)));
        score.setScore(1);

    }
Проблема на картинке...мне нужно чтобы оно перечисляло(когда игрок зашел на сервер),а не создавало новый score, и отнимало (-1) когда игрок выходит
Ты вообще сделал не так. Во-первых я бы порекомендовал делать скорборд в статическом методе, оттуда его вызывать из ивентов.

Ясное дело, что дублируется, ведь ты, как я понял создаешь два разных объекта.
 
Ты вообще сделал не так. Во-первых я бы порекомендовал делать скорборд в статическом методе, оттуда его вызывать из ивентов.

Ясное дело, что дублируется, ведь ты, как я понял создаешь два разных объекта.
Я разобрался)тема закрыта
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх