ProbeJS Legacy
является неофициальным продолжением ProbeJS для версий KubeJS, не поддерживаемых официальным ProbeJS.
Использование
- Необходимо установить ProbeJS Legacy.
- Войти в однопользовательский мир. Используйте /probejs dumpдля экспорта данных, собранных ProbeJS Legacy. Для новых пользователей это выполняется автоматически при первом входе в мир.
- Откройте папку экземпляра игры в VSCode.
- Наслаждайтесь!
Примечание0: введите @item или @block_tag для просмотра сгенерированных сниппетов.
Примечание1: папка экземпляра игры — это место, где можно напрямую увидеть папку kubejs.
Примечание2: Другие IDE с поддержкой типизации TypeScript (.d.ts) также должны работать.
Новые возможности
(В сравнении с ProbeJS)
- Эмуляция - Internal- Теперь ProbeJS Legacy генерирует пространство имён Internal, упрощая миграцию с ProbeJS 6 или ProbeJS Legacy 3.
- Пример: Internal.ItemStackиInternal.ItemStack_
 
- Теперь ProbeJS Legacy генерирует пространство имён 
- Улучшенные наименования параметров - Параметры, конфликтующие с ключевыми словами TypeScript, переименовываются.
- Параметры методов/конструкторов в формате arg123заменяются на имена, производные от их типа.
 
Пример:
"mayUseItemAt"(arg0: $BlockPos$$Type, arg1: $Direction$$Type, arg2: $ItemStack$$Type): booleanпреобразуется в:
"mayUseItemAt"(blockPos0: $BlockPos$$Type, direction1: $Direction$$Type, itemStack2: $ItemStack$$Type): boolean- Улучшенный - $Class<T>- $Class<T>корректно преобразуется в- typeof Tс учётом граничных условий.
- Добавлена поддержка базовых классов (например, java.lang.String).
- Tв- $Class<T>теперь используется для подсказок типов.
 
- Улучшенный - instanceof- Корректная обработка obj instanceof $SomeClassдля классов, загруженных черезjava(...)илиJava.loadClass(...).
 
- Корректная обработка 
Пример:
const $BoatItem = java("some.path.to.BoatItem")
let item = Item.of("boat").item; // тип `item` — `$Item`
if (item instanceof $BoatItem) {
    // здесь тип `item` выводится как `$BoatItem`
}- Трансформация полей - Некоторые поля преобразуются в геттеры/сеттеры для лучшей поддержки TypeWrapper.
- Пример: присвоение obj.block = "minecraft:stone"теперь имеет корректную типизацию.
 
- Совместное использование типизаций - Общие части классов выделяются в отдельные файлы, уменьшая общий размер типизаций.
- Улучшает производительность IDE за счёт повторного использования типов между скриптами.
 
- Улучшенное форматирование комментариев - Пустые строки в начале/конце игнорируются.
- Однострочные комментарии форматируются в одну строку.
 
- Методы, помеченные - @OnlyIn, содержат комментарии об ограничении по стороне (сервер/клиент).
- Большие файлы - xxx.d.tsавтоматически разделяются для улучшения производительности IDE.
- Методы и поля в файлах объявлений сортируются естественным образом. 
- Разрешение значений в - global. Глубина настраивается через- 'global' Resolving Depth.
Сбор данных
События KubeJS
Для 1.16.5: записываются все запущенные события. Если событие отсутствует, вызовите его перед дампом (например, поместите блок для block.place).
Для 1.20.1: все зарегистрированные события KJS дампируются автоматически.
События Forge
Записываются все события 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).
 
										 
        
