Just Enough Hiding
A client-side Minecraft Forge 1.20.1 mod that records who hides JEI/EMI content and why, reveals what was hidden, and lets you hide content with your own local list - a single place for modpack authors to manage recipe-viewer visibility.
Features
- Reveal: show ingredients hidden by tags, edit mode or the blacklist again; restore ingredients removed at runtime; unhide hidden recipes and recipe categories (JEI and EMI).
- Intent recording: record hide/show actions by other mods, the viewer itself and the server, with a viewer UI (source, count, time).
- ListEHiding: your own hide list; hides matching content from the viewer. Multi-select / toggle / delete.
- Types & matching: all ingredient types (items, fluids, chemicals, ...), recipes, recipe categories, tags, wildcards and regex.
- Unified management: JEHide also treats recorded hide-intents as hide rules ("reveal first, then re-hide from list + intents").
- KubeJS: read/write the hide list from
kubejs/client_scripts.
EMI support
When EMI is installed it becomes the active viewer (UI/icons), while JEI-side reveal and intent recording keep working:
- Reveals content hidden by tags (
c:hidden_from_recipe_viewers), plugin removals (removeEmiStacks/removeRecipes), EMI edit mode, and data-pack filesassets/emi/index/stacks/assets/emi/recipe/filters. - EMI hides are recorded: plugin removals (source = calling mod), edit mode (
EMI edit mode), and data-pack hides (source = the resource pack providing the file). - Note:
assets/emi/...are client resources - edit them and use F3+T (or toggle the pack) to reload;/reloadonly reloads server data.
Requirements
- Minecraft 1.20.1
- Forge
- JEI or EMI (either; EMI is preferred when both are installed) - optional, the mod does nothing without one
- KubeJS - optional
Config (config/jeh/)
client.toml- settings (generated by Forge on first run):[intentRecording] enabled,[reveal] enabled,[jehide] enabled,[jehide] applyIntents,[intentView] sortModes/bookmarkTarget.listehiding.json- hide list; a default list is generated on first run (armor-trim recipe pattern enabled; AE2/Create/Refined Storage disguise plates listed but disabled), which also serves as a format example.intentoverrides.json- per-intent apply/ignore flags (written by the GUI).
Commands & keys
/jeh intents- open the intent viewer/jeh list- open the hide-list editor- Optional keybinds (unbound by default):
key.justenoughhiding.open_intents,key.justenoughhiding.open_list
KubeJS
JEH.add('minecraft:stone')
JEH.add('#minecraft:logs')
JEH.add('minecraft:*')
JEH.addRecipe('minecraft:crafting', 'minecraft:stick')
JEH.remove('minecraft:stone')
JEH.setEnabled('minecraft:stone', false)
JEH.save() // persist; without it changes are in-memory only
License
MIT

