Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Скрыть объявление

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

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

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

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

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

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

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

    Заранее спасибо
     
  2. Хостинг MineCraft
    <
  3. AtomicInteger

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

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

    Lilian_solo Новичок Пользователь Заблокирован

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

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

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

    Lilian_solo Новичок Пользователь Заблокирован

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

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

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

    Lilian_solo Новичок Пользователь Заблокирован

    Баллы:
    21
    Имя в Minecraft:
    CoreKolas
    Стоит добавит эти строки и всё будет ок...
    Код:
    
             if (!target.hasPlayedBefore()) {
               p.sendMessage(ChatColor.RED + "Этот игрок еще не заходил на сервер");
               return true;
             }
    [DOUBLEPOST=1483287194,1483287111][/DOUBLEPOST]
    Вернёт, он всегда что-то возвращает....[DOUBLEPOST=1483287225][/DOUBLEPOST]
    Короче, чтобы не спорить проверь свой и мой код...
     
  9. AtomicInteger

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

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

    Lilian_solo Новичок Пользователь Заблокирован

    Баллы:
    21
    Имя в 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;
          }
         }
     
  11. AtomicInteger

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

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

    Lilian_solo Новичок Пользователь Заблокирован

    Баллы:
    21
    Имя в Minecraft:
    CoreKolas
    Во-первых, код писал не я, во-вторых, покажи где тут гавнокод.[DOUBLEPOST=1483288206,1483287767][/DOUBLEPOST]Ну же, где тут гавнокод?
     
  13. AtomicInteger

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

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

    Lilian_solo Новичок Пользователь Заблокирован

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

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

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

    Lilian_solo Новичок Пользователь Заблокирован

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

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

    Баллы:
    46
  18. Lilian_solo

    Lilian_solo Новичок Пользователь Заблокирован

    Баллы:
    21
    Имя в Minecraft:
    CoreKolas
  19. AtomicInteger

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

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

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

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


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

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

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

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