Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Помогите Как достать ники всех онлайн игроков на сервере?

Ты присваиваешь строке массив.
Player[] names = Bukkit.getOnlinePlayers(); не будет выдавать ошибку.
Дальше циклом перебирай всех игроков
 
Ты присваиваешь строке массив.
Player[] names = Bukkit.getOnlinePlayers(); не будет выдавать ошибку.
Дальше циклом перебирай всех игроков
The method getBalance(String) in the type Economy is not applicable for the arguments (Player[])
Код:
                Player[] names = Bukkit.getOnlinePlayers();
                double moneyvar = econ.getBalance(names);
 
Тебе нужно определить количество игроков на сервере и например сделать циклом
For(int i=0,i<k,i++)
Вместо k количество игроков онлайн, погугли как получить, после names в квадратный скобках индекс i, после него ставь точку и выбирай нужный параметр - что-то типо getName
 
Java:
for (Player p : Bukkit.getOnlinePlayers()) {
    double money = econ.getBalance(p.getName());
    p.sendMessage("[Ваш кэп] У вас "+money+"$");
    // В теле цикла делаете всё что хотите с игроками, хоть баньте
}
Ещё пример кода
Java:
String answer = "";
for (Player p : Bukkit.getOnlinePlayers()) {
        answer += p.getName()+" ";
}
sender.sendMessage("Сейчас на сервере: "+answer);
 
Последнее редактирование:
Java:
                int k = Bukkit.getOnlinePlayers().length;
                Player[] names[i].getName() = Bukkit.getOnlinePlayers(); #ошибка в синтаксисе
                For(int i=0,i<k,i++); #i cannot be resolved to a variable
                double moneyvar = econ.getBalance(names);
Можно пожалуйста подробней объяснять, я полный 0,0000001
 
Гугли каждое слово, а лучше поищи плагин или сделай запрос на разработку, тут как минимум нужно быть 0,1. Во второй строке убери i, getName тоже перенеси в последнюю.
 
Java:
                int k = Bukkit.getOnlinePlayers().length;
                Player[] names[i].getName() = Bukkit.getOnlinePlayers(); #ошибка в синтаксисе
                For(int i=0,i<k,i++); #i cannot be resolved to a variable
                double moneyvar = econ.getBalance(names);
Можно пожалуйста подробней объяснять, я полный 0,0000001
Первой строкой вы задаёте в переменную k количество игроков на сервере.
Второй строкой вы непонятно что делаете
Тело цикла фор пустое, и надо вместо запятых - точки с запятыми.
Ну и на последок.... да ну криво всё
Если хотите начать программировать - вам нужно сначала понять логику. Например я не понимаю логику вашего плагина, также, как и Eclipse и Java. Лучше купите книжку по программированию на Java...
...или
Гугли каждое слово, а лучше поищи плагин или сделай запрос на разработку
 
Я в Java не силен, но считаю, что для моддинга нужно просто несколько кусков готового кода и голова, чтобы его правильно подстраивать)
 
Java:
for (Player p : Bukkit.getOnlinePlayers()) {
    double money = econ.getBalance(p.getName());
    p.sendMessage("[Ваш кэп] У вас "+money+"$");
    // В теле цикла делаете всё что хотите с игроками, хоть баньте
}
Ещё пример кода
Java:
String answer = "";
for (Player p : Bukkit.getOnlinePlayers()) {
        answer += p.getName()+" ";
}
sender.sendMessage("Сейчас на сервере: "+answer);
Первый пример не работает, я так миллион раз уже пытался сделать, в консоли выдает ошибку, а во втором откуда я возьму sender?
 
Первый пример не работает, я так миллион раз уже пытался сделать, в консоли выдает ошибку, а во втором откуда я возьму sender?
Какая ошибка?
sender - отправитель команды. Если этот код должен выполняться не при команде, а при эвенте, надо sender заменить на event.getPlayer().
 
Какая ошибка?
sender - отправитель команды. Если этот код должен выполняться не при команде, а при эвенте, надо sender заменить на event.getPlayer().
Java:
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                int onlineCount = Bukkit.getOnlinePlayers().length;
                online.setSuffix("§e" + onlineCount);
               
                for (Player player : Bukkit.getOnlinePlayers()){
                   double moneys = econ.getBalance(player.getName());
                   player.sendMessage("[Ваш кэп] У вас "+moneys+"$");
                    player.setScoreboard(sBoard);
                }
            }
        }, 0L, 100L);
                }
Код:
[WARNING] [MChestScoreBoard] Task #11 for MChestScoreBoard v1.0 generated an exception
java.lang.NullPointerException
    at ru.MineChest.ScoreBoard.Main$1.run(Main.java:93)
    at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftTask.run(CraftTask.java:53)
    at org.bukkit.craftbukkit.v1_5_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:345)
    at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:513)
    at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:226)
    at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:477)
    at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:410)
    at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
Тогда 2 вариант мне не подойдет так как мне нужно каждые 5 секунд обновлять ScoreBoard для всех игроков

Возможно проблема еще в том, что я неправильно подключил экономику
Java:
    private boolean setupEconomy() {
        if (getServer().getPluginManager().getPlugin("Vault") == null) {
            return false;
        }
        RegisteredServiceProvider<Economy> rsp = getServer().getServicesManager().getRegistration(Economy.class);
        if (rsp == null) {
            return false;
        }
        econ = rsp.getProvider();
        return econ != null;
    }
 
Последнее редактирование:

Поделиться этой страницей

Назад
Верх