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

Помогите TabCompleteEvent

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

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

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

    Баллы:
    76
    Доброго времени суток, форумчане.

    Сижу, ловлю TabCompleteEvent и отправляю туда свое.
    Код:
    @EventHandler
        public void onTabComplete(TabCompleteEvent e){
            List<String> completions=new ArrayList<>();
            if (e.getBuffer().startsWith("shop ")){
                if (e.getSender().hasPermission("shop.reload"))    completions.add("reload");
                if (e.getSender().hasPermission("shop.setsale")) completions.add("setsale");
                e.setCompletions(completions);
            }
        }
    Вот так это выглядит.
    как сделать что бы он не удалял все что там есть, а нормально дополнял. ибо если сейчас написать shop relo и нажать таб, то relo будет удален.
    как делать правильно?
    if (startsWith("shop r")) setBuffer(); ?
    Или как то по другому?
     
  2. Jampire

    Jampire Старожил Пользователь

    Баллы:
    173
    Skype:
    jampire-h
    Имя в Minecraft:
    Jampire
    для подобных целей действительно лучше onTabComplete юзать.
     
  3. Автор темы
    Blc_Dragon

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

    Баллы:
    76
    Доки на это есть?
     
  4. Exception_Prototype

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

    Баллы:
    96
  5. Reality_SC

    Reality_SC Старожил Пользователь

    Баллы:
    123
    Имя в Minecraft:
    Reality_SC
    Разбить Buffer на массив токенов (.split("\\s+"), затем по очереди с первого проверять, нужный ли это тебе токен.
    В примере ТСа будет токен #0 = "shop", последний, потенциально недописанный, "relo".
    Скорее всего нужно в качестве completions вставлять склейки tokens от 0 до предпоследнего + завершённое последнее слово.
    Как вариант, сделать массив слов для каждого уровня, в цикле startsWith(tokens[tokens.length - 1] то в комплишены.
    Сам не юзал, выглядит всё как-то так.
     
  6. Автор темы
    Blc_Dragon

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

    Баллы:
    76
    спасибо, я уже давно таб комплитером сделал. и Вам его же советую.
     
Статус темы:
Закрыта.

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