Перейти к содержимому

ProbeJS Legacy

Неофициальное продолжение ProbeJS для версий, заброшенных официальным ProbeJS

Forge
Загрузчики
Forge
Скачиваний на Modrinth
97,1 тыс.
Подписчиков на Modrinth
0
версий
14
Обновлён
31 мая 202631 мая
Опубликован
в 2026
Это библиотека — она нужна другим модам и сама ничего не добавляет в игру

Коротко о моде

Библиотека — нужна другим модам
Работает на Forge
Для Minecraft 1.16.5, 1.20.1–1.20.6
Нужен и в игре, и на сервере
Последняя версия — 6.2.0 от 31 мая 2026
Лицензия GPL-3.0-only — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.16.5, 1.20.1–1.20.6
Описание переведено автоматическиПоказать оригинал (EN)

ProbeJS Legacy

Это неофициальное продолжение ProbeJS для версий KubeJS, заброшенных официальным ProbeJS.

Использование

  1. Очевидно, вам нужно установить ProbeJS Legacy.
  2. Зайдите в мир с одиночной игрой. Используйте /probejs dump, чтобы экспортировать данные, собранные ProbeJS Legacy. Для новых пользователей это произойдёт автоматически при входе в мир.
  3. Откройте папку вашего игрового инстанса в VSCode.
  4. Наслаждайтесь!

Примечание 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_
  • Улучшенное именование параметров

    • Имена параметров, конфликтующие с 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` теперь действительно можно использовать для подсказки типов.
  • Улучшенный instanceof

    • ProbeJS Legacy теперь корректно поддерживает obj instanceof $SomeClass, где $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`
}
  • Биннинг полей

    • Некоторые поля будут преобразованы в 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 на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
GNU General Public License v3.0 onlyможно использовать и распространять; изменённые версии — под той же лицензией и с исходным кодом
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее