Помогите TabCompleteEvent

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

Blc_Dragon

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

Сижу, ловлю TabCompleteEvent и отправляю туда свое.
Java:
@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(); ?
Или как то по другому?
 
для подобных целей действительно лучше onTabComplete юзать.
 
Разбить Buffer на массив токенов (.split("\\s+"), затем по очереди с первого проверять, нужный ли это тебе токен.
В примере ТСа будет токен #0 = "shop", последний, потенциально недописанный, "relo".
Скорее всего нужно в качестве completions вставлять склейки tokens от 0 до предпоследнего + завершённое последнее слово.
Как вариант, сделать массив слов для каждого уровня, в цикле startsWith(tokens[tokens.length - 1] то в комплишены.
Сам не юзал, выглядит всё как-то так.
 
Разбить Buffer на массив токенов (.split("\\s+"), затем по очереди с первого проверять, нужный ли это тебе токен.
В примере ТСа будет токен #0 = "shop", последний, потенциально недописанный, "relo".
Скорее всего нужно в качестве completions вставлять склейки tokens от 0 до предпоследнего + завершённое последнее слово.
Как вариант, сделать массив слов для каждого уровня, в цикле startsWith(tokens[tokens.length - 1] то в комплишены.
Сам не юзал, выглядит всё как-то так.
спасибо, я уже давно таб комплитером сделал. и Вам его же советую.
 
Статус
Закрыто для дальнейших ответов.
Назад
Верх