1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

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

Тема в разделе "Разработка плагинов для новичков", создана пользователем Fenix78563, 1 янв 2017.

Статус темы:
Закрыта.
  1. Автор темы
    Fenix78563

    Fenix78563 Активный участник Пользователь

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

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

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

    Заранее спасибо
     
  2. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Код:
    if(Bukkit.getPlayerExact(args[0]) != null) {
    // Игрок онлайн
    } else // Игрок оффлайн
     
  3. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    -_-, facepalm, .....
    А что, старый isOnline уже не пашет или я не догоняю?
    И я не уверен, что твой код сработает, т.к. null он вернёт в том случае, если игрок не заходил на сервер вообще...
    Код:
             if (player.isOnline()) {
               p.sendMessage("Онлайн: " + ChatColor.GREEN + "Да");
             } else {
               p.sendMessage("Онлайн: " + ChatColor.DARK_RED + "Нет");
             }
     
  4. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    А где ты взял ссылку player?
     
  5. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Player player = Bukkit.getPlayerExact(args[0]);
    Сложно угадать?
     
  6. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    А если Bukkit.getPlayerExact(args[0]); ничего не вернет(он то вернёт, но не игрока)?Не находишь?
     
  7. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Стоит добавит эти строки и всё будет ок...
    Код:
    
             if (!target.hasPlayedBefore()) {
               p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
               return true;
             }

    Вернёт, он всегда что-то возвращает....
    Короче, чтобы не спорить проверь свой и мой код...
     
  8. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Я проверил.И ты не поверишь, твой кидает нул, а мой работает.
     
  9. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Вот мой полностью рабочий код, уже месяц на сервере стоит, что-то я не вижу, что бы он хоть раз выдал нулл -_-
    Код:
       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;
          }
         }
     
  10. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Молодец, славно наговнокодил.
     
  11. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Во-первых, код писал не я, во-вторых, покажи где тут гавнокод.
    Ну же, где тут гавнокод?
     
  12. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Да нет, бесполезно.Пусть будет по-твоему, твой код лучше, да.Ты победил.
     
  13. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Так бы сразу...
     
  14. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    P.S.target в твоем коде = null)0)00)))00
     
  15. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
    Пруфы
     
  16. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
  17. Lilian_solo

    Lilian_solo Активный участник Пользователь Заблокирован

    Баллы:
    46
    Имя в Minecraft:
    CoreKolas
  18. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Ты не перестаешь меня удивлять.
     
  19. Автор темы
    Fenix78563

    Fenix78563 Активный участник Пользователь

    Баллы:
    76
    Имя в Minecraft:
    Blc_Dragon
    спасибо, выручил.


    ало, этот метод вернет null если игрок ПРОСТО ОФФЛАЙН, этот метод хрен ложил на "играл игрок раньше или нет", я проверил тока что
     
  20. AtomicInteger

    AtomicInteger Активный участник Пользователь

    Баллы:
    76
    Ему бесполезно что-либо объяснять.
     
Статус темы:
Закрыта.

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