
ProbeJS Legacy
Неофициальное продолжение ProbeJS для версий KubeJS, которые забросил оригинальный мод. Помогает с автодополнением типов, подсказками и документацией прямо в IDE - больше не надо лезть в вики.
ProbeJS Legacy
ProbeJS Legacy - это форк оригинального ProbeJS, который поддерживает те версии Minecraft и KubeJS, где официальный мод перестал обновляться. Если вы пишете скрипты для KubeJS (а это мод, позволяющий кастомизировать рецепты, события, генерацию и многое другое), то знаете, как мучительно вспоминать названия предметов, методов и классов. ProbeJS Legacy решает эту проблему: он собирает всю информацию о загруженных классах, событиях и регистрах, а затем генерирует файлы типов (.d.ts), которые подхватывает ваша IDE - Visual Studio Code, WebStorm или любая другая с поддержкой TypeScript.
Как пользоваться
- Установите мод ProbeJS Legacy (он нужен на клиенте и на сервере, если вы пишете скрипты).
- Зайдите в одиночную игру или на сервер. Используйте команду
/probejs dump, чтобы выгрузить все данные. Для первого запуска дамп выполняется автоматически при входе в мир. - Откройте папку экземпляра игры (ту, где лежит папка
kubejs) в VSCode. - Готово - теперь при написании скриптов будут работать автодополнение, подсказки типов и переход к определению.
Важно: если вы используете другую IDE с поддержкой TypeScript (например, IntelliJ IDEA), она тоже подхватит сгенерированные файлы.
Что нового по сравнению с оригинальным ProbeJS
- Симуляция
Internal- создаётся пространство имёнInternal, что упрощает миграцию со старых версий ProbeJS. Например,Internal.ItemStackиInternal.ItemStack_. - Умные имена параметров - если имя параметра конфликтует с TypeScript или выглядит как
arg123, мод переименует его на основе типа. Былоarg0, сталоblockPos0. - Корректная работа с
$Class<T>- теперь$Class<T>преобразуется вtypeof Tтолько там, где это действительно нужно. Базовые классы вродеjava.lang.Stringтоже дампятся. - Поддержка
instanceof- можно писатьobj instanceof $SomeClass, и TypeScript правильно выведет тип внутри условия. - Геттеры и сеттеры для полей - некоторые поля превращаются в getter+setter, чтобы корректно работали присваивания в стиле
obj.block = "minecraft:stone". - Общие типы - дублирующиеся части выносятся в общие файлы, что уменьшает размер дампа и ускоряет работу IDE.
- Чистые комментарии - пустые строки в начале/конце комментариев игнорируются, однострочные комментарии форматируются компактно.
- Методы с
@OnlyIn- помечаются комментариями "только для сервера" или "только для клиента". - Автоматическое разбиение больших файлов - если
.d.tsстановится слишком большим, он дробится на части для лучшей производительности IDE. - Естественная сортировка - методы и поля в файлах деклараций отсортированы по алфавиту.
- Разрешение
global- значения, которые вы кладёте в объектglobal, теперь тоже получают типизацию (глубину можно настроить в конфиге).
Как собираются данные
События KubeJS
- Для Minecraft 1.16.5 мод записывает только те события, которые были вызваны. Если какого-то события нет в дампе - просто вызовите его (например, поставьте блок, чтобы сработало
block.place). - Для Minecraft 1.20.1 все зарегистрированные события KubeJS дампятся автоматически, ничего дополнительно делать не нужно.
События Forge
ProbeJS Legacy собирает все события Forge независимо от того, были ли они вызваны. Это поведение можно изменить в конфиге Class Scanner.
Java-классы
Мод использует несколько источников для сбора классов:
- Классы, загруженные вручную через
java(...)илиJava.loadClass(...). - Классы, на которые ссылаются JS-привязки (например,
AABB,Text). - Классы, на которые ссылаются уже известные классы (например,
Item.classвнутриItemStack.class). - Объекты из реестров (например,
BoatItemдля ванильных лодок). По умолчанию пропускаются неванильные объекты - настройка черезRegistry Object Filter. - Классы из определённых модов (список задаётся в
Mods with forced Full Scanning). - Классы из кэш-файла (сохраняется в
<папка экземпляра>/.probe/classes.txt). - Классы, найденные сканером (настройка
Class Scanner).
Зачем это нужно
Оригинальный ProbeJS перестал обновляться для версий 1.16.5 и некоторых других, хотя именно на них сидит огромное количество сборок. Без такого мода писать сложные скрипты для KubeJS - сплошное мучение: приходится постоянно сверяться с документацией или гадать, какой метод вызывать. ProbeJS Legacy закрывает эту дыру и делает разработку скриптов такой же удобной, как на актуальных версиях.
Мод распространяется под лицензией LGPLv3 (как и оригинальный ProbeJS).
Скачайте ProbeJS Legacy и забудьте про ошибки в скриптах - IDE сама подскажет всё, что нужно.
Как поиграть с друзьями с модом ProbeJS Legacy?
Мод ProbeJS Legacy куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода ProbeJS Legacy будет готов за пару минут - BungeeHost сделает всё за вас.
