Потому что печатать лень
📖 О модификации
Клиентская модификация, предоставляющая улучшенные подсказки автодополнения для команд.
Поддерживает модифицированные и пользовательские команды из датапаков или серверных плагинов. Не требует установки на сервере.
💡 Использование
Для ввода команды/аргумента, состоящего из нескольких слов, введите только первые буквы этих слов.
Например, чтобы ввести /gamerule doDaylightCycle true, можно ввести /gr dc t
⌨ Горячие клавиши
Помимо <Tab>, можно использовать <Ctrl>+<Space> для принятия подсказки. Это автоматически добавит пробел для ввода следующего аргумента.
Если текущая команда неполна (текст красный), нажатие <Enter> примет выбранную подсказку вместо попытки выполнения неверной команды.
Принятие подсказки через <Ctrl>+<Space> или среднюю кнопку мыши удаляет текст после курсора при редактировании. Это настраивается.
🔀 Разрешение неоднозначностей
Для различения похожих подсказок может потребоваться ввести более одной буквы на слово.
Например, чтобы выбрать fireDamage вместо fallDamage (появляется первым при вводе fd), введите fid.
Ввод дополнительных букв быстрее, чем поиск стрелками или <Tab>. Со временем вы запомните минимальные комбинации для частых команд.
🔍 Поиск подсказок
Так как введенные слова могут находиться не только в начале названия, вы увидите больше релевантных подсказок.
Например, при вводе /give @p wood вы увидите все предметы, содержащие слово, начинающееся на wood.
При отсутствии совпадений по первым буквам выполняется нечеткий поиск по всему предложению.
🎁 Дополнительные возможности
По умолчанию порядок подсказок инвертирован (наиболее релевантные — ближе к строке ввода).
Отключить можно командой:
/smartcompletion invert_suggestion_order false
Исправлена ошибка, при которой мышь автоматически выделяла подсказки под курсором.
✨ Принцип работы
Для каждой команды отправляется два запроса на сервер: без последнего аргумента (слепой запрос) и с полным вводом (информированный запрос). Запросы кэшируются для уменьшения задержки.
Предполагается, что сервер возвращает все возможные подсказки для слепого запроса. Затем выполняется умная фильтрация и сортировка на стороне клиента.
Непредусмотренные подсказки из информированного запроса, не соответствующие фильтрации, выделяются другим цветом.
Фильтрация использует:
- Сопоставление сегментов запроса с первыми буквами слов предложения (gr → gamerule)
- Нечеткий поиск частей запроса внутри предложения (lock on → b(lock)Explosi(on)DropDecay)
✂ Разделение слов
Слова разделяются по не-буквенным символам и регистру camelCase.
Для команд в flatcase (например, dodaylightcycle) используется словарь слов из Minecraft, Fabric, (Neo)Forge и WorldEdit.
Словарь можно изменить через ресурспаки. Сообщайте о некорректном разделении.
📋 Сортировка подсказок
Подсказки сортируются по приоритету:
- Близость к курсору
- Совпадения по первым буквам слов > нечеткие совпадения
- Более значимые совпадения (например, apple > acacia_pressure_plate)
- Большее количество совпадений инициалов
- Совпадения, где инициал соответствует нескольким словам
- Меньшее количество слов
- Совпадения ближе к началу предложения
- Более короткие предложения
Иначе сохраняется исходный порядок сервера (обычно алфавитный).
🎨 Настройка внешнего вида
Стили выделения настраиваются через файл style.json в ресурспаках.
По умолчанию:
- Основные совпадения: синий
- Альтернативные/нечеткие/неожиданные совпадения: темно-бирюзовый
- Пространства имен (например, minecraft:): темно-серый (если не совпадают)