{"id":125210,"date":"2026-06-07T11:33:19","date_gmt":"2026-06-07T08:33:19","guid":{"rendered":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/"},"modified":"2026-06-07T11:33:19","modified_gmt":"2026-06-07T08:33:19","slug":"probejs-legacy","status":"publish","type":"mod","link":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/","title":{"rendered":"ProbeJS Legacy"},"content":{"rendered":"<p># ProbeJS Legacy<\/p>\n<p>is an unofficial continuation of ProbeJS for KubeJS versions abandoned by official ProbeJS.<\/p>\n<p>## Usage<\/p>\n<p>1.  You need to install ProbeJS Legacy, obviously.<br \/>\n2.  Enter a singleplayer world. Use `\/probejs dump` to export datas gathered by ProbeJS Legacy. For first-time users, this will be done automatically when you join the world.<br \/>\n3.  Open your game instance folder using VSCode.<br \/>\n4.  Enjoy!<\/p>\n<p>Note0: type `@item` or `@block_tag` to see snippets generated.<\/p>\n<p>Note1: game instance folder is where you can see the `kubejs` folder directly.<\/p>\n<p>Note2: Other IDEs with support for TypeScript typing (.d.ts) should also work.<\/p>\n<p>## New Features<\/p>\n<p>(Compared to ProbeJS)<\/p>\n<p>&#8211; Simulated `Internal`<br \/>\n   &#8211; ProbeJS Legacy will now generate a `Internal` namespace, allowing users to migrate from ProbeJS 6 or ProbeJS Legacy 3 easily.<br \/>\n   &#8211; Example: `Internal.ItemStack` and `Internal.ItemStack_`<\/p>\n<p>&#8211; Better Param Naming<br \/>\n   &#8211; Param names that conflict with TypeScript will now be renamed in a better way.<br \/>\n   &#8211; Param names in Method\/Constructor, if in `arg123` format, will be renamed to a new name generated from its type.<\/p>\n<p>Example:<\/p>\n<p>&#8220;`typescript<br \/>\n&#8220;mayUseItemAt&#8221;(arg0: $BlockPos$$Type, arg1: $Direction$$Type, arg2: $ItemStack$$Type): boolean<br \/>\n&#8220;`<br \/>\nwill be renamed to<\/p>\n<p>&#8220;`typescript<br \/>\n&#8220;mayUseItemAt&#8221;(blockPos0: $BlockPos$$Type, direction1: $Direction$$Type, itemStack2: $ItemStack$$Type): boolean<br \/>\n&#8220;`<\/p>\n<p>&#8211; Better `$Class<T>`<br \/>\n   &#8211; ProbeJS will transform `$Class<T>` into `typeof T`, but ignoring many conditions where this should not be done. ProbeJS Legacy makes it more correct.<br \/>\n   &#8211; Some basic classes, for example `java.lang.String` and `java.lang.Character`. can now be dumped.<br \/>\n   &#8211; The `T` in `$Class<T>` is now actually usable for type hint.<\/p>\n<p>&#8211; better `instanceof`<br \/>\n   &#8211; ProbeJS Legacy can now properly support `obj instanceof $SomeClass`, where `$SomeClass` is a class loaded via `java(&#8230;)` or `Java.loadClass(&#8230;)`.<\/p>\n<p>Example:<\/p>\n<p>&#8220;`js<br \/>\nconst $BoatItem = java(&#8220;some.path.to.BoatItem&#8221;)<\/p>\n<p>let item = Item.of(&#8220;boat&#8221;).item; \/\/ here the type of `item` is `$Item`<br \/>\nif (item instanceof $BoatItem) {<br \/>\n    \/\/ here the type of `item` can be inferred to `$BoatItem`<br \/>\n}<br \/>\n&#8220;`<\/p>\n<p>&#8211; Field Beaning<br \/>\n   &#8211; Some fields will be transformed into getter+setter, in order to provide better support for TypeWrapper<br \/>\n   &#8211; Consider a `obj` with a field like this: `block: $Block`, and `obj.block = &#8220;minecraft:stone&#8221;` is a valid syntax in KubeJS. This had no typing support before, but now ProbeJS Legacy can support it properly.<\/p>\n<p>&#8211; Typing files sharing<br \/>\n   &#8211; By extracting common parts in dumped classes, the total typing files size can be much smaller than before.<br \/>\n   &#8211; Another benefits is that TS server can now reuse common typings between 3 script types, improving IDE performance.<\/p>\n<p>&#8211; Better comment formatting<br \/>\n   &#8211; blank lines at the front\/back will now be ignored<br \/>\n   &#8211; comments will be formatted as one line if there&#8217;s only one valid line<\/p>\n<p>&#8211; Side only methods (marked by `@OnlyIn`) will have comments telling you that it&#8217;s server-only or client-only.<\/p>\n<p>&#8211; `xxx.d.ts` file with too many modules in it will now be split into smaller files automatically, providing better IDE performance<\/p>\n<p>&#8211; Method\/Field in declaration files are now naturally sorted.<\/p>\n<p>&#8211; `gloabl` resolving: values you put into `global` can be resolved now. Configure resolving depth via `&#8217;global&#8217; Resolving Depth` config.<\/p>\n<p>&#8211; And many internal changes. This Readme will certainly be too long if I write them all down.<\/p>\n<p>## Collecting data<\/p>\n<p>### KubeJS Event<\/p>\n<p>For 1.16.5, ProbeJS Legacy will record all posted event. If you&#8217;re unable to find some common events, try triggering it before dumping data. Example: `block.place` event is triggered by placing a block.<\/p>\n<p>For 1.20.1, all registered KJS events will be dumped automatically, no need for triggering.<\/p>\n<p>### Forge Event<\/p>\n<p>ProbeJS Legacy will record all Forge events, regardless of whether they have been posted or not. This behaviour can be altered via `Class Scanner` config.<\/p>\n<p>### Java Classes<\/p>\n<p>ProbeJS Legacy will use multiple approaches for collecting Java classes.<\/p>\n<p>These classes will be recorded:<br \/>\n&#8211; Classes loaded manually, aka those loaded via `java(&#8230;)` or `Java.loadClass(&#8230;)`<br \/>\n&#8211; Classes referenced by JS bindings, for example `AABB` and `Text`.<br \/>\n&#8211; Classes references by known classes, for example `Item.class` referenced by `ItemStack.class`.<br \/>\n&#8211; Registry objects, for example `BoatItem` for vanilla boats. By default this will skip non-vanilla objects, and can be altered via `Registry Object Filter` config.<br \/>\n&#8211; Classes from certain mods. See `Mods with forced Full Scanning` config.<br \/>\n&#8211; Classes read from cache file. The cache file is saved to `<your instance folder>\/.probe\/classes.txt`.<br \/>\n&#8211; Classes found by class scanner. See `Class Scanner` config.<\/p>\n<p>## Why<\/p>\n<p>Initially, all I want to do is just find some sort of doc or helper for KubeJS script writing, so that I won&#8217;t need to feel such pain in the arse when developing Enlightend6Expert(https:\/\/www.curseforge.com\/minecraft\/modpacks\/enlightened-6-expert) .<br \/>\nBut after some research, I realized that 1.16.5, despite being one of the hottest modded versions, didn&#8217;t even have a proper KubeJS helper mod.<br \/>\nSo there it is, a ProbeJS fork for 1.16.5.<br \/>\nThis is my first Java project and first Minecraft Mod project, and to be honest, ProbeJS is too tough for a coding noob like me. Thankfully I made it.<\/p>\n<p>This project is licensed under LGPLv3, the same as the original ProbeJS.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Unofficial continuation of ProbeJS for versions abandoned by official ProbeJS<\/p>\n","protected":false},"featured_media":125211,"template":"","meta":{"_minecraft_slug":"probejs-legacy","_minecraft_project_id":"KVw0Q70k","_minecraft_author":"ZZZank","_minecraft_license":"GPL-3.0-only","_minecraft_downloads":6620,"_minecraft_follows":0,"_minecraft_client_side":"required","_minecraft_server_side":"required","_minecraft_storage_type":"zip","_minecraft_archive_name":"probejs-legacy.zip","_minecraft_size_bytes":4903827,"_minecraft_version_count":10,"_minecraft_updated_at":"2026-05-16T16:31:59.771554Z","_minecraft_date_created":"2026-01-29T03:13:50.981127Z","_minecraft_date_modified":"2026-05-14T12:28:38.773037Z","_minecraft_project_url":"https:\/\/modrinth.com\/mod\/probejs-legacy","_minecraft_icon_attachment_id":125211,"_minecraft_imported_at":"2026-06-07T08:33:20+00:00","_minecraft_import_hash":"82392b244a0ef1e61c076fb15a981730","_minecraft_versions":"","_minecraft_links":"","_minecraft_gallery":"","_minecraft_api_metadata":""},"mod_category":[104,873,92],"mod_loader":[106],"minecraft_version":[48,36,60,93,94,101,102],"class_list":["post-125210","mod","type-mod","status-publish","has-post-thumbnail","hentry","mod_category-forge","mod_category-library","mod_category-utility","mod_loader-forge","minecraft_version-1-16-5","minecraft_version-1-20-1","minecraft_version-1-20-2","minecraft_version-1-20-3","minecraft_version-1-20-4","minecraft_version-1-20-5","minecraft_version-1-20-6"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>ProbeJS Legacy - Minecraft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ProbeJS Legacy - Minecraft\" \/>\n<meta property=\"og:description\" content=\"Unofficial continuation of ProbeJS for versions abandoned by official ProbeJS\" \/>\n<meta property=\"og:url\" content=\"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/\" \/>\n<meta property=\"og:site_name\" content=\"Minecraft\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/\",\"name\":\"ProbeJS Legacy - Minecraft\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp\",\"datePublished\":\"2026-06-07T08:33:19+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/#primaryimage\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp\",\"contentUrl\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp\",\"width\":96,\"height\":96},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/probejs-legacy\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Mods\",\"item\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/mods\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"ProbeJS Legacy\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/#website\",\"url\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/\",\"name\":\"Minecraft\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/vpesports.com\\\/minecraft\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ProbeJS Legacy - Minecraft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/","og_locale":"en_US","og_type":"article","og_title":"ProbeJS Legacy - Minecraft","og_description":"Unofficial continuation of ProbeJS for versions abandoned by official ProbeJS","og_url":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/","og_site_name":"Minecraft","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/","url":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/","name":"ProbeJS Legacy - Minecraft","isPartOf":{"@id":"https:\/\/vpesports.com\/minecraft\/#website"},"primaryImageOfPage":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/#primaryimage"},"image":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/#primaryimage"},"thumbnailUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp","datePublished":"2026-06-07T08:33:19+00:00","breadcrumb":{"@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/#primaryimage","url":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp","contentUrl":"https:\/\/vpesports.com\/minecraft\/wp-content\/uploads\/2026\/06\/probejs-legacy-icon-a1ae496e45e876596820bbfed8e618184e116484_96.webp","width":96,"height":96},{"@type":"BreadcrumbList","@id":"https:\/\/vpesports.com\/minecraft\/mods\/probejs-legacy\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/vpesports.com\/minecraft\/"},{"@type":"ListItem","position":2,"name":"Mods","item":"https:\/\/vpesports.com\/minecraft\/mods\/"},{"@type":"ListItem","position":3,"name":"ProbeJS Legacy"}]},{"@type":"WebSite","@id":"https:\/\/vpesports.com\/minecraft\/#website","url":"https:\/\/vpesports.com\/minecraft\/","name":"Minecraft","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/vpesports.com\/minecraft\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod\/125210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod"}],"about":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/types\/mod"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media\/125211"}],"wp:attachment":[{"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/media?parent=125210"}],"wp:term":[{"taxonomy":"mod_category","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_category?post=125210"},{"taxonomy":"mod_loader","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/mod_loader?post=125210"},{"taxonomy":"minecraft_version","embeddable":true,"href":"https:\/\/vpesports.com\/minecraft\/wp-json\/wp\/v2\/minecraft_version?post=125210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}