No description
Find a file
TysonTheEmber 6737c60bda ci: cache Gradle dependencies to speed up Actions
Adds actions/cache@v4 for ~/.gradle so builds restore the dependency
set instead of re-downloading it every run.

[skip ci]
2026-07-04 23:35:48 -06:00
.forgejo/workflows ci: cache Gradle dependencies to speed up Actions 2026-07-04 23:35:48 -06:00
.run Initial commit 2026-07-04 19:04:40 -06:00
gradle/wrapper Initial commit 2026-07-04 19:04:40 -06:00
src/main Initial commit 2026-07-04 19:04:40 -06:00
.gitattributes Initial commit 2026-07-04 19:04:40 -06:00
.gitignore Initial commit 2026-07-04 19:04:40 -06:00
build.gradle Initial commit 2026-07-04 19:04:40 -06:00
CHANGELOG.md Initial commit 2026-07-04 19:04:40 -06:00
gradle.properties Initial commit 2026-07-04 19:04:40 -06:00
gradlew Initial commit 2026-07-04 19:04:40 -06:00
gradlew.bat Initial commit 2026-07-04 19:04:40 -06:00
kubejs_studio.svg Initial commit 2026-07-04 19:04:40 -06:00
kubejs_studio_512.png Initial commit 2026-07-04 19:04:40 -06:00
kubejs_studio_square.svg Initial commit 2026-07-04 19:04:40 -06:00
kubejs_studio_square_512.png Initial commit 2026-07-04 19:04:40 -06:00
modpack-helper-spec.md Initial commit 2026-07-04 19:04:40 -06:00
README.md Initial commit 2026-07-04 19:04:40 -06:00
settings.gradle Initial commit 2026-07-04 19:04:40 -06:00

KubeJS Studio

An in-game IDE for KubeJS. Build recipes, edit tags, rework loot tables, and retune item/block stats from a real GUI inside Minecraft. Studio writes clean KubeJS scripts for you, so everything you make is a normal script you can keep, version, and share, no black-box save format.

Press one key, open the workspace, click a recipe, change it, apply. No alt-tabbing to a text editor, no memorising event.shaped(...) syntax, no reload-guessing which file broke.

Requires KubeJS 2101.7+ for NeoForge 1.21.1. Studio is a client-side authoring tool that generates KubeJS scripts; KubeJS runs them.

KubeJS Studio workspace


Why

Writing a modpack means writing hundreds of KubeJS recipes, tag edits, and loot tweaks by hand. That is a lot of syntax to remember, a lot of item IDs to look up, and a lot of /reload cycles to find the one typo that killed the script.

KubeJS Studio turns that loop into point-and-click. You browse what is actually loaded in your game, edit it visually, and Studio emits the exact script KubeJS expects. It is not a replacement for KubeJS, it is a front end for it.


Open it

Press K (rebindable in Controls) in-game to open the workspace. Five tabs across the top: Recipes, Tags, Loot, Properties, Files.

Nothing is applied until you queue it. Every change lands in a Pending Changes panel first, so you can review the whole batch before it touches your pack. When you apply, Studio writes the scripts and (for recipes/tags/loot) they go live on the next /reload.


The tabs

Recipes

Browse every recipe loaded in your instance, filter by mod, item, or type, and edit in place. Add new recipes with a visual grid, override or disable existing ones, and pull items straight from an item picker instead of typing IDs.

Supports vanilla recipe types (shaped, shapeless, smelting, blasting, smoking, campfire, stonecutting, smithing) and Create 6 recipe types (mixing, crushing, pressing, deploying, sequenced assembly, and the rest) when Create is installed.

Use case: "This modpack has three ways to make brass and I want to remove two of them." Filter recipes to brass_ingot, click the two you do not want, disable them, apply. Done in under a minute, and the result is a readable recipes.js you can drop in any pack.

Recipe browser and editor

Generated output (Studio writes this for you):

ServerEvents.recipes(event => {
  event.remove({ output: 'create:brass_ingot', type: 'create:mixing' })
  event.shaped('minecraft:chest', ['PPP', 'P P', 'PPP'], { P: '#minecraft:planks' })
})

Tags

Add to, remove from, or replace the contents of any tag, for any registry (items, blocks, fluids, entities, and dynamic registries resolved by path). Pick a Tag Type, find the tag, edit its values. Great for wiring new mod items into vanilla tags like #minecraft:planks or #forge:ingots/copper so recipes and mechanics pick them up.

Use case: "My custom wood should count as planks everywhere." Open Tags, Tag Type: Item, find minecraft:planks, add your item, apply.

Tag editor

Loot

Edit real loot tables in place. Click a block or entity, see its actual drops, and change the count, weight, or entries directly. No JSON diffing, no guessing at pool structure, you edit the drops the game is really rolling.

Use case: "Diamond ore should drop two to four diamonds with Fortune scaling." Open the ore's loot table, bump the count range, apply.

Loot table editor

Properties

Retune base item and block stats that no recipe or tag can touch: max stack size, durability, food values, burn time, mining speed, blast resistance, light emission, friction, "requires tool to drop." Studio writes the ItemEvents.modification / BlockEvents.modification startup script.

These are startup edits: they apply on game restart, not /reload. Studio tells you which changes need a restart.

Use case: "Make torches stack to 16 and let apples fully heal." A couple of field edits, restart, done.

Properties editor

Files

A full file explorer and multi-file text editor built into the game. Browse your whole pack instance, open and edit any text file across tabs, preview images, and do create / rename / delete with guard rails. The editor has syntax highlighting, autocomplete backed by the live game state, and searchable API / ID browsers so you can look up the right event or item ID without leaving the screen.

Use case: Tweak a hand-written script, fix a pack.mcmeta, or check an icon without alt-tabbing to a separate editor.

Files explorer and editor


Where your work goes

Studio writes real KubeJS scripts into your pack's kubejs/ folder, one clean file per resource type (recipes.js, tags/<registry>.js, loot_tables.js, and a startup script for properties). Re-applying merges into the existing files instead of clobbering them.

That means everything you build in Studio is a normal, version-controllable KubeJS script. Ship your pack, hand the files to a teammate, or keep editing them by hand, Studio does not lock you in.

There is also a datapack backend for output that belongs in kubejs/data.

Pending changes review


Extras

  • Create integration. Detects Create and unlocks its recipe types in the Recipe tab, emitting valid Create 6 JSON.
  • Themes. Multiple built-in color themes, and you can drop your own JSON theme in config/kubejsstudio/themes.
  • Resizable panels. Drag to resize the browser and editor columns; your layout is remembered.

Compatibility

Minecraft 1.21.1
Loader NeoForge
Java 21
Requires KubeJS 2101.7+
Optional Create 6 (unlocks Create recipe types)

Client-side authoring tool. Install it in a dev instance, build your pack, ship the generated scripts.


Building from source

NeoForge 1.21.1 only.

./gradlew build          # jar in build/libs/
./gradlew runClient      # launch a dev client

License

See tysontheember.dev/modding-licence.