ProbeJS Legacy
Неофициальное продолжение ProbeJS для версий, заброшенных официальным ProbeJS
- Загрузчики
- Forge
- Скачиваний на Modrinth
- 97,1 тыс.
- Подписчиков на Modrinth
- 0
- версий
- 14
- Обновлён
- 31 мая 202631 мая
- Опубликован
- в 2026
Коротко о моде
Нужен и в игре, и на сервере
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`
- ProbeJS преобразует `$Class
вtypeof T`, но игнорирует многие условия, где этого делать не следует. ProbeJS Legacy делает это более корректно. - Некоторые базовые классы, например
java.lang.Stringиjava.lang.Character, теперь можно дампить. Tв `$Class` теперь действительно можно использовать для подсказки типов.
- ProbeJS преобразует `$Class
Улучшенный
instanceof- ProbeJS Legacy теперь корректно поддерживает
obj instanceof $SomeClass, где$SomeClass— это класс, загруженный черезjava(...)илиJava.loadClass(...).
- ProbeJS Legacy теперь корректно поддерживает
Пример:
const $BoatItem = java("some.path.to.BoatItem")
let item = Item.of("boat").item; // здесь тип `item` — `$Item`
if (item instanceof $BoatItem) {
// здесь тип `item` может быть выведен как `$BoatItem`
}Биннинг полей
- Некоторые поля будут преобразованы в getter+setter, чтобы обеспечить лучшую поддержку TypeWrapper
- Рассмотрим
objс полем вроде этого:block: $Block, иobj.block = "minecraft:stone"— это допустимый синтаксис в KubeJS. Раньше это не поддерживалось типизацией, но теперь ProbeJS Legacy может это корректно поддерживать.
Совместное использование файлов типизации
- За счёт извлечения общих частей из дампленных классов общий размер файлов типизации может быть намного меньше, чем раньше.
- Ещё один плюс: TS-сервер теперь может переиспользовать общие типизации между 3 типами скриптов, улучшая производительность IDE.
Улучшенное форматирование комментариев
- пустые строки в начале/конце теперь игнорируются
- комментарии будут отформатированы в одну строку, если есть только одна допустимая строка
Методы, доступные только на одной стороне (помеченные
@OnlyIn), будут иметь комментарии, сообщающие, что они только для сервера или только для клиента.Файл
xxx.d.tsс слишком большим количеством модулей теперь автоматически разбивается на меньшие файлы, обеспечивая лучшую производительность IDEМетоды/поля в файлах деклараций теперь естественно отсортированы.
Разрешение
global: значения, которые вы помещаете вglobal, теперь могут быть разрешены. Настройте глубину разрешения через конфиг'global' Resolving Depth.- И множество внутренних изменений. Этот Readme точно станет слишком длинным, если я запишу их все.
Сбор данных
Событие KubeJS
Для 1.16.5 ProbeJS Legacy будет записывать все отправленные события. Если вы не можете найти некоторые распространённые события, попробуйте вызвать их перед дампом данных. Пример: событие block.place вызывается при установке блока.
Для 1.20.1 все зарегистрированные события KJS будут выгружаться автоматически, без необходимости их触发.
События Forge
ProbeJS Legacy будет записывать все события Forge, независимо от того, были они отправлены или нет. Это поведение можно изменить через конфиг Class Scanner.
Java-классы
ProbeJS Legacy использует несколько подходов для сбора 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.
Зачем
Изначально всё, что я хотел — просто найти какую-нибудь документацию или помощник для написания скриптов KubeJS, чтобы не испытывать такой боли в заднице при разработке Enlightend6Expert(https://www.curseforge.com/minecraft/modpacks/enlightened-6-expert) .
Но после некоторых исследований я понял, что 1.16.5, несмотря на то, что это одна из самых популярных версий с модами, даже не имела нормального мода-помощника для KubeJS.
Так что вот он, форк ProbeJS для 1.16.5.
Это мой первый проект на Java и первый проект мода для Minecraft, и, честно говоря, ProbeJS слишком сложен для такого новичка в программировании, как я. К счастью, я справился.
Этот проект лицензирован под LGPLv3, так же как и оригинальный ProbeJS.
Частые вопросы
Как установить ProbeJS Legacy?
Установите Forge под свою версию Minecraft, скачайте ProbeJS Legacy под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть ProbeJS Legacy?
У ProbeJS Legacy есть сборки для Minecraft 1.16.5, 1.20.1–1.20.6.
Нужен ли ProbeJS Legacy на сервере?
Нужен и в игре, и на сервере