All Mods Resource Packs Data Packs Shaders Modpacks Plugins
KubeJS Studio

KubeJS Studio

by TysonTheEmber • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

KubeJS Studio

KubeJS Studio is an in-game front end for KubeJS. Press K and you get a workspace for recipes, tags, loot tables, item and block stats and new registry entries, plus a code editor that knows what is loaded in your pack. Studio writes plain files under kubejs/: scripts, datapack JSON, lang files and models. There is no project format to export, and the generated files keep working without Studio.

Needs KubeJS. On Forge 1.20.1 it also needs Kotlin for Forge. LDLib2 is bundled inside the jar. Client side only, it never has to go on a server.

Recipes tab

GUI or code, your call

A GUI can be faster than writing a script by hand. Other times it's just better to edit the script. Studio does both, and you can switch whenever you like, or use both at once.

If you have never written a KubeJS script, start with the five visual tabs. Pick a recipe, a tag, a loot table or an item, change it with real item slots and normal fields, hit Queue. Studio shows you exactly what it is going to write before it touches anything.

If you already write KubeJS, the Files tab is a proper editor. Completion, hover docs and error checking are built from the running instance, not from a typings file that went stale two updates ago. Type event.recipes. and the list is the recipe types loaded in that pack, mods included.

The workspace

Recipes

Every loaded recipe is in the browser, filterable by mod, type or item. Supported types open in a form with item slots filled from a picker (or a Held button that copies the stack in your hand into the result), count and category fields, and the generated output shown underneath as you edit. Override a recipe, disable it, duplicate it, or start a blank one.

Vanilla crafting, cooking, stonecutting and smithing have hand-built forms. Create's processing recipes do too, including heated mixing and sequenced assembly. Farmer's Delight, Ars Nouveau and the common Mekanism machine types have their own layouts.

For other types, Studio builds a flat form from the recipe schema KubeJS already has for it: item and fluid fields become slots, numbers and flags become fields. That covers a lot of mods with a KubeJS addon without me writing anything per mod. If a type has no schema, or the existing JSON is more complicated than that form can round-trip, it opens as raw JSON and you edit that.

Create mixing recipe

Recipe JSON comes from the running world, so what you see is what the game loaded. JEI and EMI recipe pages get an Edit button that jumps into Studio with that recipe selected (singleplayer, creative mode).

Farmer's Delight cooking recipe

Tags

Pick a registry (items, blocks, fluids, entities, and any dynamic registry the game exposes), find the tag, add or remove members. Additions and removals are shown inline against the live contents so you can see the diff before you queue it. This is the quick way to get modded items into #minecraft:planks or #c:ingots/copper so recipes and mechanics pick them up.

Tags tab

Loot

Real loot tables, edited in place as a tree of pools and entries. Rolls, count and weight stay inline. The ... on a row opens the full editor for that entry, which is where conditions and functions live as typed forms: tool checks, random chance, Fortune style bonuses, explosion decay, names, lore, components or NBT, and nested all_of / any_of logic. Table-level settings (context type, random sequence, table-wide functions) are under Table…. The catalog follows the Minecraft version, and anything without a typed form stays editable as raw JSON.

Loot tab

Loot entry editor

Properties

Base stats that no recipe or tag can touch. Items expose stack size, durability, food values, burn time and an enable-only fire resistance flag. Blocks expose hardness, blast resistance, light level, friction, whether a tool is required, mining tier and the tool it is mineable with. Studio writes the matching ItemEvents.modification or BlockEvents.modification startup script.

The same tab renames and retextures anything already in the game, which lands as a lang entry and a model override under kubejs/assets. Stat changes need a game restart, mining tags apply on /reload, names and textures on F3+T. Each row is marked with which one it needs.

Properties tab

Create

New items, blocks and fluids without touching a startup script. Give it an id, pick one of Studio's builder types (plain item, tools, armor pieces, slab, stairs, door, crop, a fluid with its bucket, among others) and fill in the fields you care about. The field list is version correct, so 1.20.1 only shows what 1.20.1 KubeJS supports. Everything you create stays listed on the left so you can reopen it or delete it later.

Create tab

The editor

If you have used ProbeJS, the goal will feel familiar. ProbeJS generates typings so an external IDE can help you write KubeJS; I wanted that help inside Minecraft. Studio reflects over the KubeJS runtime you actually have (the event groups and handlers, the globals bound into the script scopes, addons included) and reads recipe schemas and game ids from the open world as completion needs them. There is no typings step and no second window, and a cached copy of the symbol index covers the odd case where live reflection fails.

The Files tab itself is a file explorer and multi-tab editor for your whole instance with syntax highlighting for JS, JSON, TOML and logs. It edits text files (up to 2 MB), previews images, and does create, rename and delete with guard rails. Favorites and pinned folders keep your kubejs/ tree one click away.

Completion

Type event. and you get the members of that event. Type event.recipes. and you get the namespaces of every mod with a KubeJS recipe schema, then the types under them, then the chain methods that type supports (.heated() on Create mixing, .xp() on smelting). String completion follows context: item and tag ids (with icons) where a recipe wants one, mod ids in filters, builder types in registry events, loot table ids and lang keys where they fit. A class loaded through Java.loadClass gets static member completion, and datapack JSON recognizes the common id fields (item, tag, id, type).

Completion inside a recipe call

Hover docs and signature help

Hover a KubeJS member, a variable, an id or a diagnostic to see what it is: the signature and a short description, the type, the item behind the id, the full message. While the caret sits inside a recognized call, a signature strip appears above it. Docs come from the harvested runtime index (KubeJS's own @Info annotations included) plus a small built-in reference for the parts KubeJS does not describe about itself.

Hover documentation

Diagnostics

Errors and warnings appear as you type, with a count below the editor and the full message on hover. Unknown members and identifiers, misspelled item, tag, mod and recipe ids, argument counts that do not match the recipe schema, ids in the wrong kind of slot, events used from the wrong script type (ServerEvents in a startup script), malformed // priority and // requires headers, unbalanced brackets and unterminated strings, and Java classes the KubeJS class filter would reject. KubeJS console errors from the last reload that carry a source location land on the offending line as well, so a broken recipe points back at the statement instead of a log file.

Diagnostic on hover

Console and reload

The console panel lists KubeJS errors and warnings from the last reload. Click one to jump to its line, or use the command box to run /kubejs errors, /reload or anything else without leaving the screen. The Reload button reloads the script type of the file you are editing (startup, server or client scripts, or /reload for data), so you are not rebuilding the whole datapack to test a client script.

Console panel

The rest

Find and replace with match case, whole word and regex, formatting, a snippet palette, word wrap, bracket closing and auto indent, preview tabs, session restore, and undo that batches nearby typing into single steps. Ctrl+I opens the item picker at the caret and inserts an id (or expands a tag into its member ids), Ctrl+R inserts a recipe's JSON, Ctrl+P searches the harvested KubeJS index, and the { } API button opens the same index grouped into globals, events and types. Lang files get a "Missing keys" button that inserts the block, item, entity, effect and enchantment keys the namespace has not translated yet.

It ships with JetBrains Mono, which on 1.20.1 goes through an SDF pipeline so it stays sharp at any GUI scale. Other fonts from your resource packs can be picked in Settings (Embers Text API widens what is selectable).

API browser and item picker

Queue, review, apply

Nothing in the visual tabs writes straight to disk. Changes collect in a pending list at the bottom of the screen. By default Apply shows a diff of the files it is about to write, keeps a .bak of the previous version next to each one, and reloads afterwards. All three are settings if you would rather it did not.

Review before apply

Recipe, tag and loot changes can be written either as KubeJS scripts or as datapack JSON under kubejs/data, per change, and datapack is the default until you flip it. Stat changes and new registry entries are always startup scripts, and names and textures are always resource files. Scripts go under kubejs/server_scripts/kubejsstudio/ and kubejs/startup_scripts/kubejsstudio/, one file per kind of thing. Re-applying merges by id into what Studio wrote before rather than replacing the file wholesale, but treat those files as generated output and keep your own hand-written scripts elsewhere. Anything Studio wrote can be reset from the same tab that made it.

The small stuff

  • Themes. Eighteen built in: Studio Dark, Catppuccin in all four flavors, Dracula, Everforest, GitHub dark and light, Gruvbox, Kanagawa, Monokai, Nord, One Dark, Rose Pine, Solarized dark and light, Tokyo Night. Drop a JSON file in config/kubejsstudio/themes for your own; an example is written there on first run.
  • Settings. One searchable dialog covers fonts, editor behavior, which intelligence features are on and how eager they are, and the workflow toggles above.
  • Keybinds. Studio shortcuts for tab switching, search, queue and apply, completion, snippets, formatting and file actions are rebound in that same dialog. The K key and optional direct binds for each tab live in Minecraft's Controls screen.
  • Layout. The main panels resize and collapse, dialogs remember their size, and Settings has a one-click reset for when you paint yourself into a corner.
  • /kubejsstudio opens the workspace from chat, with a subcommand per tab.

Themes Settings

Compatibility

Minecraft Loader Java Requires
1.21.1 NeoForge 21.1.216+ 21 KubeJS
1.20.1 Forge 47+ 17 KubeJS, Kotlin for Forge 4.11+

The manifest does not pin a KubeJS version. This release was built against KubeJS 2101.7.2 on 1.21.1 and 2001.6.5 on 1.20.1; other builds will probably work, but those are the ones I test. The NeoForge floor comes from the bundled LDLib2, which is why it is higher than the loader's own baseline.

Optional: Create (unlocks its recipe forms), JEI or EMI (edit button on their recipe screens; JEI 15.17.0.74+ on Forge, 19.27.0.335+ on NeoForge).

Studio is a client-side authoring tool. Install it in the instance you build your pack in, ship the generated files, and it does not need to be on the server or in anyone else's client. The browsers read from the singleplayer server, so open a world before using them.

License

See tysontheember.dev/modding-licence.

Bundled third-party work (JetBrains Mono under the OFL, LDLib2 under the LGPL) is covered by licenses/NOTICE.txt inside the jar, alongside the full license texts.

How to Install KubeJS Studio (Mod)

KubeJS Studio by TysonTheEmber is verified for Forge, Neoforge across Minecraft versions 1.20.1, 1.21.1, 26.1, 26.1.1, 26.1.2 (latest release: 1.3.0+neoforge-1.21.1, file size: 8.4 MB). Follow the steps below to install it safely from ModCraft.tv:

  1. Click the Download button above and select your Minecraft version (1.20.1, 1.21.1, 26.1, 26.1.1, 26.1.2) and platform (Forge, Neoforge).
  2. Make sure you have the compatible loader or environment installed for Forge, Neoforge.
  3. Move the downloaded KubeJS Studio file into your Minecraft .minecraft/mods folder and launch the game.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.21.1
Neoforge
1mo ago 1
26.1.x
Neoforge
1mo ago 1
1.20.1
Forge
1mo ago 1
1.21.1
Neoforge
1mo ago 1
1.20.1
Forge
1mo ago 1
26.1.x
Neoforge
1mo ago 1
1.21.1
Neoforge
2mo ago 1
26.1.x
Neoforge
2mo ago 1
1.20.1
Forge
2mo ago 1
1.21.1
Neoforge
3mo ago 1
1.20.1
Forge
3mo ago 1
1.21.1
Neoforge
3mo ago 1
1.20.1
Forge
3mo ago 1
1.21.1
Neoforge
4mo ago 1

### Added

  • /kubejsstudio dumpdocs [depth] exports the scripting API as JSON to kubejsstudio/docs-dump-<minecraft>-<loader>.json in the game folder. It covers classes, events and recipe schemas, and each entry names the mod that provides it. Recipe schemas are only available in singleplayer

### Fixed

  • Bean properties now use the names Rhino exposes, and static beans show up on loaded classes
  • Docs entries for bindings are attributed to the plugin that registers them
  • In the Properties tab, a long attribute list scrolls instead of overflowing the panel


### Added

  • /kubejsstudio dumpdocs [depth] exports the scripting API as JSON to kubejsstudio/docs-dump-<minecraft>-<loader>.json in the game folder. It covers classes, events and recipe schemas, and each entry names the mod that provides it. Recipe schemas are only available in singleplayer

### Fixed

  • Bean properties now use the names Rhino exposes, and static beans show up on loaded classes
  • Docs entries for bindings are attributed to the plugin that registers them
  • In the Properties tab, a long attribute list scrolls instead of overflowing the panel


### Added

  • /kubejsstudio dumpdocs [depth] exports the scripting API as JSON to kubejsstudio/docs-dump-<minecraft>-<loader>.json in the game folder. It covers classes, events and recipe schemas, and each entry names the mod that provides it. Recipe schemas are only available in singleplayer

### Fixed

  • Bean properties now use the names Rhino exposes, and static beans show up on loaded classes
  • Docs entries for bindings are attributed to the plugin that registers them
  • In the Properties tab, a long attribute list scrolls instead of overflowing the panel


### Added

  • Loot roll preview. The Loot tab's Roll button rolls the table you are editing 100, 1000 or 10000 times and lists each drop with its chance per roll, average count and range. The item in your main hand is the tool, so Fortune and Silk Touch apply. Tool gating from the block itself (requires tool) is not part of the table and is not simulated
  • More block properties. Speed factor, jump factor, sound type (picked from the names KubeJS accepts), collision and random ticks, all written through BlockEvents.modification
  • Crafting remainder on items, written through ItemEvents.modification
  • Find in files. Ctrl+Shift+F searches every text file in the instance with match case, whole word and regex, groups results by file, and clicking a match opens the file with the match selected
  • Go to line with Ctrl+G
  • The item picker shows your last twelve picks in a Recent row above the list, plus a Bookmarks row with your JEI, EMI or REI bookmarks. Inventory, Recent and Bookmarks each collapse with a click and stay that way
  • The console panel has a Copy button for its output
  • Indent guides in the editor. One line per indent level, with the caret's block drawn brighter. Turn them off under Settings, Editor
  • Separate window. The pop out icon in the tab strip, Ctrl+Shift+O, or Settings, Appearance, Separate window, moves Studio into its own OS window so you can put it on a second monitor and alt-tab to it while the game keeps running. The same icon or key docks it again. The UI scales itself so a half-screen window keeps the full-screen proportions, and Settings, Appearance, Window scale sets a fixed size instead. The window remembers its size and position, the game does not pause while you work in it, and fullscreen falls back to the in-game screen
  • Code folding. Bracket blocks and block comments fold from the gutter arrow (hover the gutter to see them) or with Ctrl+Shift+[ and Ctrl+Shift+]. Ctrl+Shift+Minus folds everything and Ctrl+Shift+Equals unfolds it. A folded line keeps its closing bracket on screen and shows a dots badge that unfolds on click
  • The find bar has an arrow on its left that opens the replace row, like VS Code. Enter in the replace field replaces the current match and Ctrl+Alt+Enter replaces every match. Ctrl+H still opens it with replace showing
  • Select several rows in the Tags, Loot, Properties and Create browsers with Ctrl+click and Shift+click, or pick every row the search shows (up to 256). Properties queues the same change on every selected item or block, Tags and Loot reset them together, and Create deletes them together. Name, texture and attributes are skipped while more than one is selected
  • Inventory clicks insert. With a text field or the editor focused, clicking an item in the inventory dialog puts its id at the caret, or replaces the id you are in. In a tag field it offers the item's tags instead
  • Event handlers from the API browser. Picking an event inserts a ready-made handler with the right callback, an
...

### Added

  • Loot roll preview. The Loot tab's Roll button rolls the table you are editing 100, 1000 or 10000 times and lists each drop with its chance per roll, average count and range. The item in your main hand is the tool, so Fortune and Silk Touch apply. Tool gating from the block itself (requires tool) is not part of the table and is not simulated
  • More block properties. Speed factor, jump factor, sound type (picked from the names KubeJS accepts), collision and random ticks, all written through BlockEvents.modification
  • Crafting remainder on items, written through ItemEvents.modification
  • Find in files. Ctrl+Shift+F searches every text file in the instance with match case, whole word and regex, groups results by file, and clicking a match opens the file with the match selected
  • Go to line with Ctrl+G
  • The item picker shows your last twelve picks in a Recent row above the list, plus a Bookmarks row with your JEI, EMI or REI bookmarks. Inventory, Recent and Bookmarks each collapse with a click and stay that way
  • The console panel has a Copy button for its output
  • Indent guides in the editor. One line per indent level, with the caret's block drawn brighter. Turn them off under Settings, Editor
  • Separate window. The pop out icon in the tab strip, Ctrl+Shift+O, or Settings, Appearance, Separate window, moves Studio into its own OS window so you can put it on a second monitor and alt-tab to it while the game keeps running. The same icon or key docks it again. The UI scales itself so a half-screen window keeps the full-screen proportions, and Settings, Appearance, Window scale sets a fixed size instead. The window remembers its size and position, the game does not pause while you work in it, and fullscreen falls back to the in-game screen
  • Code folding. Bracket blocks and block comments fold from the gutter arrow (hover the gutter to see them) or with Ctrl+Shift+[ and Ctrl+Shift+]. Ctrl+Shift+Minus folds everything and Ctrl+Shift+Equals unfolds it. A folded line keeps its closing bracket on screen and shows a dots badge that unfolds on click
  • The find bar has an arrow on its left that opens the replace row, like VS Code. Enter in the replace field replaces the current match and Ctrl+Alt+Enter replaces every match. Ctrl+H still opens it with replace showing
  • Select several rows in the Tags, Loot, Properties and Create browsers with Ctrl+click and Shift+click, or pick every row the search shows (up to 256). Properties queues the same change on every selected item or block, Tags and Loot reset them together, and Create deletes them together. Name, texture and attributes are skipped while more than one is selected
  • Inventory clicks insert. With a text field or the editor focused, clicking an item in the inventory dialog puts its id at the caret, or replaces the id you are in. In a tag field it offers the item's tags instead
  • Event handlers from the API browser. Picking an event inserts a ready-made handler with the right callback, an
...

### Added

  • Loot roll preview. The Loot tab's Roll button rolls the table you are editing 100, 1000 or 10000 times and lists each drop with its chance per roll, average count and range. The item in your main hand is the tool, so Fortune and Silk Touch apply. Tool gating from the block itself (requires tool) is not part of the table and is not simulated
  • More block properties. Speed factor, jump factor, sound type (picked from the names KubeJS accepts), collision and random ticks, all written through BlockEvents.modification
  • Crafting remainder on items, written through ItemEvents.modification
  • Find in files. Ctrl+Shift+F searches every text file in the instance with match case, whole word and regex, groups results by file, and clicking a match opens the file with the match selected
  • Go to line with Ctrl+G
  • The item picker shows your last twelve picks in a Recent row above the list, plus a Bookmarks row with your JEI, EMI or REI bookmarks. Inventory, Recent and Bookmarks each collapse with a click and stay that way
  • The console panel has a Copy button for its output
  • Indent guides in the editor. One line per indent level, with the caret's block drawn brighter. Turn them off under Settings, Editor
  • Separate window. The pop out icon in the tab strip, Ctrl+Shift+O, or Settings, Appearance, Separate window, moves Studio into its own OS window so you can put it on a second monitor and alt-tab to it while the game keeps running. The same icon or key docks it again. The UI scales itself so a half-screen window keeps the full-screen proportions, and Settings, Appearance, Window scale sets a fixed size instead. The window remembers its size and position, the game does not pause while you work in it, and fullscreen falls back to the in-game screen
  • Code folding. Bracket blocks and block comments fold from the gutter arrow (hover the gutter to see them) or with Ctrl+Shift+[ and Ctrl+Shift+]. Ctrl+Shift+Minus folds everything and Ctrl+Shift+Equals unfolds it. A folded line keeps its closing bracket on screen and shows a dots badge that unfolds on click
  • The find bar has an arrow on its left that opens the replace row, like VS Code. Enter in the replace field replaces the current match and Ctrl+Alt+Enter replaces every match. Ctrl+H still opens it with replace showing
  • Select several rows in the Tags, Loot, Properties and Create browsers with Ctrl+click and Shift+click, or pick every row the search shows (up to 256). Properties queues the same change on every selected item or block, Tags and Loot reset them together, and Create deletes them together. Name, texture and attributes are skipped while more than one is selected
  • Inventory clicks insert. With a text field or the editor focused, clicking an item in the inventory dialog puts its id at the caret, or replaces the id you are in. In a tag field it offers the item's tags instead
  • Event handlers from the API browser. Picking an event inserts a ready-made handler with the right callback, an
...

### Minecraft 26.1

  • Studio now has a NeoForge 26.1 build, alongside the existing NeoForge 1.21.1 and Forge 1.20.1 ones. It needs Java 25 and LDLib2 26.1.2.37 or newer
  • EMI has no 26.1 release yet, so the EMI edit button is absent on that build only. JEI and REI are still picked up

### Added

  • Recipe conflict finder. It groups recipes that fight over the same inputs so you can see which one actually wins, and the groups collapse and expand
  • Item usages view. Pick an item and see every recipe that consumes or produces it, without leaving Studio
  • Bulk recipe operations. Filter with a regex, review the full match list, and remove or disable the lot in one queued change
  • Typed component editor on 1.21.1. Item components get real forms instead of raw JSON, component ids complete and validate in the editor, and loot set_components opens the same editor
  • Attribute modifiers. The Properties tab lists an item's attribute stats and lets you edit modifiers as an open ended list, written through KubeJS
  • Embers Text API integration. Studio highlights and completes ETA markup inside string literals, previews the rendered result inline in the editor, and previews ETA fonts in Settings
  • Tooltip line editor. Add tooltip lines with per line placement, reorder them by their drag handle, and watch a live preview that resizes and wraps long lines
  • SNBT editing on recipe item inputs and outputs, so NBT sensitive ingredients are editable in the form instead of falling back to raw JSON
  • Slot dragging. Drag an ingredient across slots to copy it or fill several at once, and right drag across slots to clear them
  • Disk autosave for unsaved buffers. Close the game with a dirty file open and it comes back
  • A Studio GUI scale setting, independent of Minecraft's, plus a separate UI font size setting
  • Panel snap resistance and an overlay split mode for the main layout
  • Queued operations can be reopened and edited from the dock instead of being cancelled and redone
  • The loot browser filters tables by category
  • The item picker and the recipe frame show your player inventory
  • Workspace tabs stay alive across GUI closes

### Changed

  • New recipe, tag and loot changes now default to being written as KubeJS scripts rather than datapack JSON. The per change toggle is unchanged, and so is anything you already queued
  • The editor's text shadow is off by default and its current line highlight is on
  • On 1.21.1 recipe JSON is captured raw from the reload instead of being re encoded through its codec, so fields Studio has no form for survive a round trip untouched
  • UI arrows are drawn as vectors, so they stay sharp at any GUI scale

### Fixed

  • NBT ingredients on Forge, unsaved buffer loss, and pending queue changes not surviving a restart
  • The Studio window no longer stops filling the screen when the GUI scale changes, and scale changes are clamped to the screen and applied when Settings closes
  • Queued mining tag operations replace each other instead of stacking
...

### Minecraft 26.1

  • Studio now has a NeoForge 26.1 build, alongside the existing NeoForge 1.21.1 and Forge 1.20.1 ones. It needs Java 25 and LDLib2 26.1.2.37 or newer
  • EMI has no 26.1 release yet, so the EMI edit button is absent on that build only. JEI and REI are still picked up

### Added

  • Recipe conflict finder. It groups recipes that fight over the same inputs so you can see which one actually wins, and the groups collapse and expand
  • Item usages view. Pick an item and see every recipe that consumes or produces it, without leaving Studio
  • Bulk recipe operations. Filter with a regex, review the full match list, and remove or disable the lot in one queued change
  • Typed component editor on 1.21.1. Item components get real forms instead of raw JSON, component ids complete and validate in the editor, and loot set_components opens the same editor
  • Attribute modifiers. The Properties tab lists an item's attribute stats and lets you edit modifiers as an open ended list, written through KubeJS
  • Embers Text API integration. Studio highlights and completes ETA markup inside string literals, previews the rendered result inline in the editor, and previews ETA fonts in Settings
  • Tooltip line editor. Add tooltip lines with per line placement, reorder them by their drag handle, and watch a live preview that resizes and wraps long lines
  • SNBT editing on recipe item inputs and outputs, so NBT sensitive ingredients are editable in the form instead of falling back to raw JSON
  • Slot dragging. Drag an ingredient across slots to copy it or fill several at once, and right drag across slots to clear them
  • Disk autosave for unsaved buffers. Close the game with a dirty file open and it comes back
  • A Studio GUI scale setting, independent of Minecraft's, plus a separate UI font size setting
  • Panel snap resistance and an overlay split mode for the main layout
  • Queued operations can be reopened and edited from the dock instead of being cancelled and redone
  • The loot browser filters tables by category
  • The item picker and the recipe frame show your player inventory
  • Workspace tabs stay alive across GUI closes

### Changed

  • New recipe, tag and loot changes now default to being written as KubeJS scripts rather than datapack JSON. The per change toggle is unchanged, and so is anything you already queued
  • The editor's text shadow is off by default and its current line highlight is on
  • On 1.21.1 recipe JSON is captured raw from the reload instead of being re encoded through its codec, so fields Studio has no form for survive a round trip untouched
  • UI arrows are drawn as vectors, so they stay sharp at any GUI scale

### Fixed

  • NBT ingredients on Forge, unsaved buffer loss, and pending queue changes not surviving a restart
  • The Studio window no longer stops filling the screen when the GUI scale changes, and scale changes are clamped to the screen and applied when Settings closes
  • Queued mining tag operations replace each other instead of stacking
...

### Minecraft 26.1

  • Studio now has a NeoForge 26.1 build, alongside the existing NeoForge 1.21.1 and Forge 1.20.1 ones. It needs Java 25 and LDLib2 26.1.2.37 or newer
  • EMI has no 26.1 release yet, so the EMI edit button is absent on that build only. JEI and REI are still picked up

### Added

  • Recipe conflict finder. It groups recipes that fight over the same inputs so you can see which one actually wins, and the groups collapse and expand
  • Item usages view. Pick an item and see every recipe that consumes or produces it, without leaving Studio
  • Bulk recipe operations. Filter with a regex, review the full match list, and remove or disable the lot in one queued change
  • Typed component editor on 1.21.1. Item components get real forms instead of raw JSON, component ids complete and validate in the editor, and loot set_components opens the same editor
  • Attribute modifiers. The Properties tab lists an item's attribute stats and lets you edit modifiers as an open ended list, written through KubeJS
  • Embers Text API integration. Studio highlights and completes ETA markup inside string literals, previews the rendered result inline in the editor, and previews ETA fonts in Settings
  • Tooltip line editor. Add tooltip lines with per line placement, reorder them by their drag handle, and watch a live preview that resizes and wraps long lines
  • SNBT editing on recipe item inputs and outputs, so NBT sensitive ingredients are editable in the form instead of falling back to raw JSON
  • Slot dragging. Drag an ingredient across slots to copy it or fill several at once, and right drag across slots to clear them
  • Disk autosave for unsaved buffers. Close the game with a dirty file open and it comes back
  • A Studio GUI scale setting, independent of Minecraft's, plus a separate UI font size setting
  • Panel snap resistance and an overlay split mode for the main layout
  • Queued operations can be reopened and edited from the dock instead of being cancelled and redone
  • The loot browser filters tables by category
  • The item picker and the recipe frame show your player inventory
  • Workspace tabs stay alive across GUI closes

### Changed

  • New recipe, tag and loot changes now default to being written as KubeJS scripts rather than datapack JSON. The per change toggle is unchanged, and so is anything you already queued
  • The editor's text shadow is off by default and its current line highlight is on
  • On 1.21.1 recipe JSON is captured raw from the reload instead of being re encoded through its codec, so fields Studio has no form for survive a round trip untouched
  • UI arrows are drawn as vectors, so they stay sharp at any GUI scale

### Fixed

  • NBT ingredients on Forge, unsaved buffer loss, and pending queue changes not surviving a restart
  • The Studio window no longer stops filling the screen when the GUI scale changes, and scale changes are clamped to the screen and applied when Settings closes
  • Queued mining tag operations replace each other instead of stacking
...

  • Joining a multiplayer server no longer disconnects the client: LDLib2 is bundled client side only, so its network payloads are now registered as optional instead of required
  • Fixed the startup crash alongside ImmediatelyFast with fast_text_lookup enabled; the Studio text renderer no longer injects into the same call ImmediatelyFast redirects, so the option can stay on
  • Fixed the native crash alongside Ixeris below 4.6.4, which hands its own cursor cache keys to GLFW. Studio leaves the pointer as the plain arrow on those versions; update Ixeris to 4.6.4 or newer to get the resize and text cursors back


  • Joining a multiplayer server no longer disconnects the client: LDLib2 is bundled client side only, so its network payloads are now registered as optional instead of required
  • Fixed the startup crash alongside ImmediatelyFast with fast_text_lookup enabled; the Studio text renderer no longer injects into the same call ImmediatelyFast redirects, so the option can stay on
  • Fixed the native crash alongside Ixeris below 4.6.4, which hands its own cursor cache keys to GLFW. Studio leaves the pointer as the plain arrow on those versions; update Ixeris to 4.6.4 or newer to get the resize and text cursors back


First stable release.

  • Forge 1.20.1 support alongside NeoForge 1.21.1, both from one codebase
  • KubeJS is now a required dependency on both loaders; the NeoForge floor is 21.1.216 for the bundled LDLib2
  • Rebuilt UI on LDLib2: resizable and collapsible panels, resizable dialogs, runtime themes with a palette picker, and a settings dialog with categories, search and rebindable studio keybinds
  • Create tab: make new items, blocks and fluids from a form, with builder types and version-correct fields
  • Loot tab: edit pools, entries, conditions and functions with typed forms and version-correct catalogs
  • Properties tab: override the display name and texture of any item or block
  • Recipes: schema-driven forms for every recipe type KubeJS ships a usable schema for, editors for Farmer's Delight, Ars Nouveau, Thermal and Mekanism, wider Create coverage, a searchable type dropdown, and invalid recipes flagged separately from disabled ones
  • Farmer's Delight cutting gains per-result chance, a fourth result slot and the sound field, and saves in the shape the mod reads on 1.20.1
  • Recipe types KubeJS has no schema for open the raw JSON editor instead of a visual form
  • Edit-in-Studio button on JEI and EMI recipe views
  • Files tab: multi-file editor with syntax highlighting, find and replace, soft wrap, undo batching, snippet palette and session restore
  • Script intelligence backed by the live game: completion for KubeJS members, typed recipe chains, mod ids, loot tables, lang keys and header lines, hover docs, signature help, inline diagnostics, console errors and targeted reload
  • Java classes in scripts: Java.loadClass completes class names the KubeJS class filter allows, the loaded class and class-bound globals like Items complete their static members, and unknown or denied classes are flagged
  • Bundled JetBrains Mono as the default font, rendered through an SDF pipeline on 1.20.1
  • Legacy event.custom recipe statements migrate to the virtual datapack
  • Light themes render field, dropdown and button text in the palette's text color, and long recipe type names no longer clip
  • The Forge JEI edit button accepts JEI 15.17.0.74 and newer instead of one exact build


First stable release.

  • Forge 1.20.1 support alongside NeoForge 1.21.1, both from one codebase
  • KubeJS is now a required dependency on both loaders; the NeoForge floor is 21.1.216 for the bundled LDLib2
  • Rebuilt UI on LDLib2: resizable and collapsible panels, resizable dialogs, runtime themes with a palette picker, and a settings dialog with categories, search and rebindable studio keybinds
  • Create tab: make new items, blocks and fluids from a form, with builder types and version-correct fields
  • Loot tab: edit pools, entries, conditions and functions with typed forms and version-correct catalogs
  • Properties tab: override the display name and texture of any item or block
  • Recipes: schema-driven forms for every recipe type KubeJS ships a usable schema for, editors for Farmer's Delight, Ars Nouveau, Thermal and Mekanism, wider Create coverage, a searchable type dropdown, and invalid recipes flagged separately from disabled ones
  • Farmer's Delight cutting gains per-result chance, a fourth result slot and the sound field, and saves in the shape the mod reads on 1.20.1
  • Recipe types KubeJS has no schema for open the raw JSON editor instead of a visual form
  • Edit-in-Studio button on JEI and EMI recipe views
  • Files tab: multi-file editor with syntax highlighting, find and replace, soft wrap, undo batching, snippet palette and session restore
  • Script intelligence backed by the live game: completion for KubeJS members, typed recipe chains, mod ids, loot tables, lang keys and header lines, hover docs, signature help, inline diagnostics, console errors and targeted reload
  • Java classes in scripts: Java.loadClass completes class names the KubeJS class filter allows, the loaded class and class-bound globals like Items complete their static members, and unknown or denied classes are flagged
  • Bundled JetBrains Mono as the default font, rendered through an SDF pipeline on 1.20.1
  • Legacy event.custom recipe statements migrate to the virtual datapack
  • Light themes render field, dropdown and button text in the palette's text color, and long recipe type names no longer clip
  • The Forge JEI edit button accepts JEI 15.17.0.74 and newer instead of one exact build


First public beta of KubeJS Studio.

  • In-game workspace for authoring recipes, tags, loot tables, and item/block properties
  • Recipe editor covering shaped, shapeless, smelting/blasting/smoking/campfire, stonecutting, smithing, Create machine recipes, and a raw JSON/KubeJS mode
  • Override or disable existing recipes; edit tags and loot tables in place
  • Files tab: browse and edit your KubeJS scripts with syntax highlighting, an API browser, and item/recipe insertion
  • Output as KubeJS scripts or datapack JSON, applied live with /reload
  • Resizable, collapsible panels and a themeable dark UI

KubeJS Studio Icon
Download KubeJS Studio
Select game version
Select platform