Помогите В погоне за оптимизацией

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

Fenix78563

Активный участник
Пользователь
Баллы
76
Имя в Minecraft
Blc_Dragon
Доброго времени суток, форумчане.
Гонюсь за оптимизацию, и встал вопрос.

Некто вводит команду и в аргументе проскакивает ник игрока.

не известно есть этот игрок на сервере или нет. Как сделать быстрее - try,catch (сразу или сначала получить оффлайн игрока, а потом в try засунуть каст) или брать всех онлайн игроков и смотреть есть там этот игрок с таким именем или нет. Или есть другие варианты?

Заранее спасибо
 
Java:
if(Bukkit.getPlayerExact(args[0]) != null) {
// Игрок онлайн
} else // Игрок оффлайн
 
Java:
if(Bukkit.getPlayerExact(args[0]) != null) {
// Игрок онлайн
} else // Игрок оффлайн
-_-, facepalm, .....
А что, старый isOnline уже не пашет или я не догоняю?
И я не уверен, что твой код сработает, т.к. null он вернёт в том случае, если игрок не заходил на сервер вообще...
Java:
         if (player.isOnline()) {
           p.sendMessage("Онлайн: " + ChatColor.GREEN + "Да");
         } else {
           p.sendMessage("Онлайн: " + ChatColor.DARK_RED + "Нет");
         }
 
-_-, facepalm, .....
А что, старый isOnline уже не пашет или я не догоняю?
И я не уверен, что твой код сработает, т.к. null он вернёт в том случае, если игрок не заходил на сервер вообще...
Java:
         if (player.isOnline()) {
           p.sendMessage("Онлайн: " + ChatColor.GREEN + "Да");
         } else {
           p.sendMessage("Онлайн: " + ChatColor.DARK_RED + "Нет");
         }
А где ты взял ссылку player?
 
А если Bukkit.getPlayerExact(args[0]); ничего не вернет(он то вернёт, но не игрока)?Не находишь?
Стоит добавит эти строки и всё будет ок...
Java:
         if (!target.hasPlayedBefore()) {
           p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
           return true;
         }

А если Bukkit.getPlayerExact(args[0]); ничего не вернет(он то вернёт, но не игрока)?Не находишь?
Вернёт, он всегда что-то возвращает....
А если Bukkit.getPlayerExact(args[0]); ничего не вернет(он то вернёт, но не игрока)?Не находишь?
Короче, чтобы не спорить проверь свой и мой код...
 
Стоит добавит эти строки и всё будет ок...
Java:
         if (!target.hasPlayedBefore()) {
           p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
           return true;
         }


Вернёт, он всегда что-то возвращает....

Короче, чтобы не спорить проверь свой и мой код...
Я проверил.И ты не поверишь, твой кидает нул, а мой работает.
 
Я проверил.И ты не поверишь, твой кидает нул, а мой работает.
Вот мой полностью рабочий код, уже месяц на сервере стоит, что-то я не вижу, что бы он хоть раз выдал нулл -_-
Java:
   public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player p = (Player)sender;
     if (command.getName().equalsIgnoreCase("test")) {
       if (p.hasPermission("plugin.test")) {
         if (args.length != 1) {
           return false;
         }
        Player target = Bukkit.getPlayerExact(args[0]);
         if (!target.hasPlayedBefore()) {
         p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
           return true;
         }
         p.sendMessage(ChatColor.DARK_GREEN + "Собираем информацию о " + target.getDisplayName() + ChatColor.DARK_GREEN + ":");
         if (target.isOnline()) {
           p.sendMessage(ChatColor.GOLD + "Онлайн: " + ChatColor.GREEN + "Да");
         } else {
           p.sendMessage(ChatColor.GOLD + "Онлайн: " + ChatColor.DARK_RED + "Нет");
         }
       }
      else {
        p.sendMessage(ChatColor.RED + "У Вас недостаточно прав!");
         return true;
      }
     }
 
Вот мой полностью рабочий код, уже месяц на сервере стоит, что-то я не вижу, что бы он хоть раз выдал нулл -_-
Java:
   public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { Player p = (Player)sender;
     if (command.getName().equalsIgnoreCase("test")) {
       if (p.hasPermission("plugin.test")) {
         if (args.length != 1) {
           return false;
         }
        Player target = Bukkit.getPlayerExact(args[0]);
         if (!target.hasPlayedBefore()) {
         p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
           return true;
         }
         p.sendMessage(ChatColor.DARK_GREEN + "Собираем информацию о " + target.getDisplayName() + ChatColor.DARK_GREEN + ":");
         if (target.isOnline()) {
           p.sendMessage(ChatColor.GOLD + "Онлайн: " + ChatColor.GREEN + "Да");
         } else {
           p.sendMessage(ChatColor.GOLD + "Онлайн: " + ChatColor.DARK_RED + "Нет");
         }
       }
      else {
        p.sendMessage(ChatColor.RED + "У Вас недостаточно прав!");
         return true;
      }
     }
Молодец, славно наговнокодил.
 
Java:
if(Bukkit.getPlayerExact(args[0]) != null) {
// Игрок онлайн
} else // Игрок оффлайн
спасибо, выручил.


Мой косяк, if(target == null) p.sendMessage("Не играл ранее");
ало, этот метод вернет null если игрок ПРОСТО ОФФЛАЙН, этот метод хрен ложил на "играл игрок раньше или нет", я проверил тока что
 
спасибо, выручил.



ало, этот метод вернет null если игрок ПРОСТО ОФФЛАЙН, этот метод хрен ложил на "играл игрок раньше или нет", я проверил тока что
Ему бесполезно что-либо объяснять.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх