Skip to content
Just Enough Filtering (JEF)

Quick rating

Community listing page, reviews may not be monitored by the author.

Just Enough Filtering (JEF)

No reviews yet

JEF is a small client-side add-on for JEI/REI/EMI that adds extra search-bar filtering for item stats.

Mod Loaders
Minecraft
26.3 26.2

About

Description

Just Enough Filtering (JEF)

Ever wanted to find the strongest weapons, tools, and armor in your modpack without reading every tooltip? That's what JEF is for. It adds extra search-bar filtering so you can find items by their actual stats.

JEF adds no GUI. Everything is typed into the search bar you already use. It is client-side only, so servers don't need it.

Supported hosts: JEI, EMI, and REI. JEF hooks whichever one is installed.

What Your Host Mod Already Offers

JEF keeps all native search behavior and only strips its own stat tokens before handing the rest back.

Prefix JEI / REI EMI
@ mod name mod name
tooltip text # ($ on newer JEI) $
tags $ (# on newer JEI) #
% creative tab creative tab
^ color color
& item id / resource location item id / resource location

Also supported: spaces = AND, | = OR, -token = exclude, and quotes for multi-word tokens such as #"attack damage".

What JEF Offers

1) Attribute filtering with !

Filter items by attribute value, whether the attribute is vanilla, Forge, or modded.

  • !ad>=7 - Attack Damage at least 7
  • !as<=2.4 - Attack Speed at most 2.4
  • !akb>0 - Attack Knockback above 0
  • !dps>=20 - computed DPS at least 20 (Attack Damage x Attack Speed)
  • -!ad>=7 - exclude items that match

Use a full id (!minecraft:generic.attack_damage>=7) or an alias (see Aliases below).

2) Item stats with !

! isn't limited to attributes. These read the item itself, so they work on items with no attributes at all.

Filter Reads
!durability / !maxdamage total durability
!damage current damage on the stack
!remaining durability left
!maxstack / !stacksize max stack size
!enchantability enchantment value
!repaircost accumulated anvil cost
!nutrition / !food / !hunger hunger restored, 0 if inedible
!saturation saturation restored
!burntime / !fuel furnace burn time in ticks
!enchantments enchantment count
!ench:<id> level of one enchantment, 0 if absent

Examples:

  • !maxstack=1 - items that don't stack
  • !durability>=1500 - high-durability gear
  • !nutrition>=6 !saturation>0.8 - genuinely good food
  • !burntime>=1600 - fuels better than coal
  • !ench:sharpness>=4 - Sharpness IV or better
  • !ench:minecraft:mending - anything with Mending
  • -!enchantments>0 - exclude everything enchanted

Notes:

  • Enchantment ids default to minecraft, so !ench:looting and !ench:minecraft:looting match the same thing. Modded ids need the namespace.
  • A stat name with no comparator means "nonzero", so !burntime is every fuel.
  • These read Minecraft's own data, not tooltip text, so language and tooltip-reformatting mods don't affect them.

3) Comparators

Comparator Meaning Example
>= <= > < ordered comparison !ad>=7
= or : equal !maxstack=1
!= or <> not equal !maxstack!=64
~ approximately equal, within 5% or ±0.05 !as~1.6
a..b inclusive range !ad=5..10
lo<x<hi chained bounds, < exclusive and <= inclusive 5<!ad<=10

Notes:

  • Ranges only work with = / :. !ad>=5..10 is rejected rather than half-applied.
  • Chained bounds put the stat name mid-token, so quote multi-word tooltip labels: 3<#"entity reach"<9.
  • - negates the whole token, so -!ad=5..10 excludes items inside the range.

4) Numeric Tooltip Filtering

Don't know an alias and don't want to check the config? Add a comparator and a number to a normal tooltip search and JEF filters on the numbers in the tooltip line itself.

  • JEI / REI: #"entity reach">=3
  • EMI: $"entity reach">=3
  • #"armor negation">=30 - tooltips containing "armor negation" and a number at least 30
  • -#"crit chance">=15 - exclude matching items

Notes:

  • Text matching is case insensitive.
  • A numeric comparison needs a number. An incomplete one like #"attack damage"> falls back to a plain text search.
  • On JEI, a numeric comparison works behind either prefix, so #"attack damage">=7 works on every JEI build regardless of which prefix that build uses for tooltips.

This is mod-agnostic: if a mod prints a stat as tooltip text, JEF can usually filter it with no dedicated compat.

Tooltip vs attribute: !ad / !as / !dps read item attributes, so your tooltip may show higher numbers under Strength or similar effects. To filter the displayed number instead, use #"attack damage">=20.

Aliases

JEF builds an alias index at runtime from the attribute registry. It always includes the full attribute id, plus aliases generated from ids, translated names, and a few short conveniences like ad and as.

File Purpose
config/jef-aliases.generated.properties full alias map, overwritten at runtime, don't edit
config/jef-aliases.properties your overrides, created once if missing, authoritative when present

Single overrides can also go in config/jef.json under manualAliases:

{ "manualAliases": ["entityreach=attributeslib:entity_reach"] }

Config

Option Default Effect
autoAliasesEnabled true auto-discover attributes and generate aliases
autoFromIds true generate aliases from registry ids
autoFromTranslations true generate aliases from translated names in the client language
enableShortAliases true generate short aliases like ad, as, kbres
enableAbbreviationAliases false generate abbreviations from words; off because it causes collisions
aliasFileEnabled true read and write the alias properties files
logAliases false log the resolved alias map at startup
showDpsTooltip false add a DPS: <value> line to item tooltips
usePlayerContextCombat false include your current buffs in !ad / !as / !akb / !dps so filtering matches tooltips that already do

Just Enough Filtering (JEF)

Have you ever wanted to find out what the strongest weapons, tools, and armor were in your modpack, but didn't want to painstakingly read through all the tooltips? Then this is the mod for you! JEF offers additional search-bar filtering options within JEI to easily find the items with your desired attributes.

What JEI Already Offers

JEI already has several built-in "prefix" searches. The most important ones are:

  • @modname — filter by mod
  • #text — search tooltip text
  • $tag — search tags
  • %tab — search a specific creative tab
  • ^color — search by color
  • &namespace:path — search by item id or resource location

JEI also supports the following:

  • Spaces = AND
  • | = OR
  • -token = exclude token
  • Quotes for multi-word tokens, e.g. `#"attack damage"

What JEF Offers

JEF adds the additional attribute filtering prefix, "!", allowing you to filter items by their attribute values.

Examples:

  • !ad>7 — filters by items with an Attack Damage of at least 7
  • !as<=2.4 — filters by items with an Attack Speed of at most 2.4
  • !akb>0 — filters by items with Attack Knockback greater than 0
  • !dps>=20 — filters by items with a computed DPS of at least 20
  • -!ad>7 — excludes items that match the attribute expression (items with an Attack Damage of at least 7)

To filter by a specific item attribute, you can use full attribute ids: !minecraft:generic.attack_damage>=7, or you can use aliases (see "Aliases below). Supported comparators include the following: >=, <=, >, <, =.

Aliases

JEF automatically builds an alias index at runtime from the attribute registry, creating an editable config list of full atribute ids (e.g. minecraft:generic.attack_damge) and their auto-generated aliases from ids and translated names. On the client, JEF writes these files:

  • config/jef.aliases.generated.properties — this is the full alias map, and is automatically overwritten at runtime, and should not be touched.
  • config/jef-aliases.properties — this is the authoritative list of aliases that you can edit to change what attributes map to what aliases.

Both files use the format: namespace:path=alias1,alias2,alias3 I.E.: attribute id = comma-separated list of aliases

You can also add overrides in the Forge client config aliases.manual by putting entries such as: entityreach=attributeslib:entity_reach

Tooltip Filtering

What do you do if you don't know the alias for something and don't want to check the config? That's what plaintext tooltip filtering is for. You can use the # tooltip search operator to search for a token within a tooltip, followed by a comparator and value to filter directly from the numbers within tooltips.

Examples:

  • #"entity reach">=3 — filters for items with tooltips that contain the text, "entity reach" (case insensitive) and a number greater than or equal to 3.
  • #"armor negation">=30 — filters for items with tooltips that contain the text, "armor negation" and a number greater than or equal to 30
  • -#"crit chance">=15 — excludes items with a tooltip that match the attribute expression.

Configs

config/jef-client.toml offers some useful options for configuring the mod:

  • autoEnabled — true by default, allows the mod to auto-discover attributes and generate aliases from ids and translations
  • autoFromIds — true by default, allows the mod to generate aliases from attribute registry ids (namespace:path)
  • autoFromTranslations — true by default, allows the mod to generate aliases from translated attribute names (client language)
  • enableShortAliases — true by default, allows the mod to generate convenient, short aliases like ad/as/kbres
  • enableAbbreviations — false by default as it can cause collisions, allows the mod to generate abbreviation aliases from words
  • debugLog — false by default, allows the mod to log the resolved alias map to the console at startup
  • showDps — false by default, allows the mod to add a computed DPS tooltip to items
  • usePlayerContextCombat — false by default, allows the mod to take player buffs into account rather than just using base item attribute values. In certain modded environments, tooltips will take these buffs into account (Attack Strength tooltip displays a higher number when the player has strength). This option makes it so that filtering and tooltips won't display discrepancies in those environments.