KubeJEI
Modby ZZZank
Advanced JEI support for KubeJS
Type
Mod
CurseForge Downloads
1,265
CurseForge ID
1109581
Last Updated
Aug 18, 2026
Description
KubeJEI
provides advanced JEI support for KubeJS, allowing devs to do basically anything a JEIPlugin can do.
Features:
- Everything in a JEIPlugin redirected to KubeJS via events
- Custom JEI category
- Events for "denying" categories and recipes. By filtering them early, instead of hiding them after everything is loaded, almost all related computations can be eliminated.
- Helpers for creating compound IDrawables, entity rendering, and custom tick timer
- /kube_jei reload command shortcut for reloading KubeJS & JEI
Examples (2.0.0 for 1.21.1 neoforge)
Deny a category, together with all recipes for it:
KubeJEIEvents.denyCategory(event => { event.deny("minecraft:campfire_cooking") }) KubeJEIEvents.denyRecipe(event => { event.denyAllInCategory("minecraft:campfire_cooking") })Make a custom category for custom recipes:
/** @type {{input: Internal.$ItemStack_, catalyst: Internal.$FluidStack_, output: Internal.$ItemStack_}[]} */ const recipes = [ { input: "ae2:1k_crafting_storage", catalyst: "minecraft:milk", output: "ae2:16k_crafting_storage" } ] KubeJEIEvents.registerCategories(event => { const helpers = event.registration.jeiHelpers event.custom("my:example_category", builder => { builder.icon = helpers.guiHelper.createDrawableItemStack("minecraft:gold_ingot") builder.background = helpers.guiHelper.createBlankDrawable(20 * 4, 18) builder.title = Component.literal("Random Conversion") // actually you can simply use (...) => {...}, instead of { setRecipe(...) {...} } // but unfortunately you wont get type hints when using lambda, as of ProbeJS 8.0.3. Hopefully it will be fixed eventually builder.recipeSetHandler = { setRecipe(builder, recipe, focuses) { /** @type {typeof recipes[0]} */ const data = recipe.data const catalyst = Fluid.of(data.catalyst) builder.addInputSlot(0, 0).addItemStack(data.input) builder.addInputSlot(20, 0).addFluidStack(catalyst.fluid, catalyst.getAmount(), catalyst.componentsPatch) builder.addOutputSlot(20 * 3, 0).addItemStack(data.output) } } builder.drawHandler = { draw(recipe, graphics, mouseX, mouseY) { helpers.guiHelper.recipeFlameFilled.draw(graphics, 40, 1) } } }) }) KubeJEIEvents.registerRecipes(event => { event.custom("my:example_category").addAll(recipes) })1.16 only
Note that all 1.4.0+ version requires Rhizo instead of Rhino to run, it's because Rhino for mc 1.16 has been EOL for a long time, missing features for our jsdoc generation
events:
- kube_jei.on_runtime_available
- kube_jei.register_advanced
- kube_jei.register_categories
- kube_jei.register_fluid_subtypes
- kube_jei.register_gui_handlers
- kube_jei.register_ingredients
- kube_jei.register_item_subtypes
- kube_jei.register_recipe_catalysts
- kube_jei.register_recipes
- kube_jei.register_recipe_transfer_handlers
- kube_jei.register_vanilla_category_extensions
- kube_jei.deny.recipes
- kube_jei.deny.categories
Recommended Gear
AffiliateHardware and extras that pair well with this mod.
As an Amazon Associate I earn from qualifying purchases.
Screenshots
Similar Mods
Primal Winter Reimagined
A reimagined take on Primal Winter that locks the world in a brutal, atmospheric blizzard with a configurable start day...
Feed A Friend
A Minecraft Forge mod which allows players to feed each other food.
Bedrock Voice Chat
Bedrock Voice Chat is a voice chat program that allows players to communicate with each other on Windows, iOS, and Andro...
SourceBlock
Adds infinite source blocks for water, lava, and milk.
[IU] MiningWorld Upgrade
Adds the ability to integrate IndustrialUpgrade and MiningWorld vein system
Lets Döner Kebab
It adds a food called "Döner" and some more things.