Skip to content

UI Customization

Since 6.3

These are 3 special recipe types that are used to customize the UI in JEI/REI/EMI from the server side.

Currently, modifying elements is not supported for anvil crafting and shaped crafting recipe.

  • Category metadata allows you to modify the elements and properties of a category.
  • Category modifier allows you to modify the elements in the specific recipes of a category.
  • Blank recipe allows you to display something from scratch along with category modifiers.

The category id format is usually <recipe type id>/<group id namespace>/<group id path>. Specifically, the block clicking recipe uses block interacting recipe's recipe type id.

If the group id is not specified, it will be set to default. Recipes with the same category id will be grouped together in JEI/REI/EMI.

The elements are split into many sections. You can add new elements by using any new name, or replace the existing elements by using the existing name. Replacing the existing elements with an empty array will remove that section.

Category Metadata

Format

Name Description Type / Literal
type type "lychee:category_metadata"
sort_order sort order optional int
category category id matcher RegExPattern | RegExPattern[]
elements UI elements optional dictionary<string, UIElement[]>
icon category icon optional UIElement
render_default render default elements optional true | false
size base panel size optional int[2]
workstation workstations optional Ingredient | Ingredient[]

Only one category metadata can take effect. If multiple category metadata are matched, the one with the lowest sort order will be used.

Category Modifier

Format

Name Description Type / Literal
type type "lychee:category_modifier"
sort_order sort order optional int
category category id matcher RegExPattern | RegExPattern[]
recipe recipe id matcher RegExPattern | RegExPattern[]
elements UI elements optional dictionary<string, UIElement[]>
render_default render default elements optional true | false

Multiple category modifiers can take effect on one recipe. Modifier with greater sort order will replace the previous element member if their key is the same.

Blank Recipe

Format

Name Description Type / Literal
type type "lychee:blank"
item_in ingredients optional SizedIngredient | SizedIngredient[]

Built-in Section Names

lychee:block_interacting

ingredient_group, action_group, info, consume_block_in, block_in, method

lychee:item_inside

ingredient_group, action_group, info, consume_block_in, block_in, method

lychee:item_burning

ingredient_group, action_group, info, consume_block_in, block_in, method

lychee:block_exploding

action_group, info, consume_block_in, block_in

lychee:block_crushing

ingredient_group, action_group, info, consume_block_in, falling_block, landing_block

lychee:dripstone_dripping

action_group, info, consume_block_in, source_block, dripstone_block, target_block

lychee:item_exploding

ingredient_group, action_group, info, block_in, tnt

lychee:lightning_channeling

ingredient_group, action_group, info, lightning_bolt, lightning_rod

lychee:blank

ingredient_group, action_group