ProbeJS Legacy — генератор подсказок для KubeJS

ProbeJS Legacy — неофициальное продолжение ProbeJS для Minecraft: генерация .d.ts подсказок для KubeJS, поддержка 1.16.5 и 1.20.1 на Forge.

ProbeJS Legacy

Если вы когда-нибудь писали скрипты на KubeJS и ловили себя на мысли, что приходится угадывать названия методов и типов, то ProbeJS Legacy создан именно для вас. Это неофициальное продолжение оригинального ProbeJS, которое берёт на себя поддержку тех версий KubeJS, от которых официальный мод отказался. Простыми словами — это генератор подсказок, который превращает внутренности игры и модов в удобные TypeScript-описания, и ваш редактор кода наконец начинает понимать, что вы вообще пишете.

Зачем это нужно и что оно делает

KubeJS — мощный инструмент, но без автодополнения работа с ним превращается в археологию. ProbeJS Legacy для Minecraft решает эту боль: он сканирует классы, события, реестры и генерирует файлы .d.ts, которые подхватывает VS Code. В результате вы получаете подсказки по методам, типам возвращаемых значений и даже по комментариям. Откройте папку игрового инстанса в редакторе — и работайте с комфортом.

Мод особенно полезен для сборок на базе Forge: поддержка охватывает как 1.16.5, так и 1.20.1. Для 1.16.5 есть нюанс — события KubeJS записываются по мере их срабатывания, поэтому если чего-то не хватает, просто вызовите событие в игре перед дампом. На 1.20.1 все зарегистрированные события выгружаются автоматически, ничего триггерить не надо.

Как установить

Установка предельно простая, и здесь важно не перепутать шаги. Сначала скачайте ProbeJS Legacy и поместите его в папку mods вашего инстанса. Затем зайдите в одиночный мир — при первом входе дамп данных запустится сам. Если нужно обновить подсказки вручную, введите команду /probejs dump. После этого откройте папку инстанса в VS Code, и всё готово.

Тем, кто предпочитает не возиться с ручной раскладкой файлов, стоит заглянуть на foxygame.net: в каталоге дополнений этого лаунчера ProbeJS Legacy можно поставить буквально в один клик, а версия под нужный инстанс подберётся автоматически. Это экономит время и избавляет от путаницы с путями.

Полезные команды и подсказки

  • /probejs dump — выгрузка всех собранных данных в файлы типов.
  • @item и @block_tag — просмотр сгенерированных сниппетов прямо в редакторе.
  • Папка инстанса — та, где лежит каталог kubejs.
  • Подойдут не только VS Code, но и другие IDE с поддержкой .d.ts.

Что нового по сравнению с оригиналом

ProbeJS Legacy — это не просто форк ради совместимости, а заметно переработанный инструмент. Автор добавил пространство имён Internal, чтобы миграция с ProbeJS 6 и Legacy 3 проходила безболезненно: теперь можно писать Internal.ItemStack и получать корректные подсказки. Имена параметров вроде arg0, arg1 переименовываются на основе их типов — читаемость сигнатур выросла в разы.

Отдельно стоит отметить работу с $Class<T>: раньше преобразование в typeof T срабатывало где попало, теперь логика стала куда аккуратнее, а сам T реально используется для подсказок типов. Конструкция obj instanceof $SomeClass тоже наконец поддерживается корректно, включая классы, загруженные через java(...) или Java.loadClass(...).

Производительность и удобство

Общие части выгруженных классов теперь выносятся отдельно, поэтому суммарный размер файлов типов заметно меньше, а TS-сервер переиспользует их между разными типами скриптов. Слишком большие .d.ts автоматически разбиваются на части, методы и поля сортируются естественным образом, а комментарии форматируются аккуратно — лишние пустые строки отбрасываются, а методы с пометкой @OnlyIn честно сообщают, что они только для сервера или только для клиента.

Сбор данных: как это устроено

Мод собирает классы несколькими путями: вручную загруженные через java(...), упомянутые в JS-биндингах, связанные с известными классами, объекты реестров, классы из модов с принудительным полным сканированием, а также из кэша .probe/classes.txt. Сканер классов и фильтр объектов реестра настраиваются, так что при желании можно расширить охват. По умолчанию неванильные объекты пропускаются.

Изначально автор делал это для себя — чтобы не мучиться при разработке сборки Enlightened 6 Expert на 1.16.5, где нормального хелпера для KubeJS просто не было. Проект распространяется под лицензией LGPLv3, как и оригинальный ProbeJS.

Итог

ProbeJS Legacy — обязательный спутник для тех, кто серьёзно пишет скрипты на KubeJS, особенно на 1.16.5 и 1.20.1 с Forge. Он экономит часы отладки, делает код читаемым и превращает разработку из угадайки в нормальную работу с автодополнением. Если вы ещё не пробовали — самое время скачать ProbeJS Legacy и посмотреть, насколько приятнее станет ваш редактор.