Skip to content

Condition Types

Conditions are Epiphany's condition types, used to determine under what player state a Module or Epiphany should auto-unlock.

INFO

This page is aimed at datapack authors, explaining the JSON fields of all built-in condition types. For registering new condition types, see Registering a New Condition.

Usage

Conditions are used in the condition field of Module / Epiphany JSON, selecting a specific type via dispatch codec:

jsonc
"condition": {
    "type": "epiphany:advancement",     // ← type determines subsequent fields
    "advancement": "minecraft:story/mine_stone"
}

The type field corresponds to one of the 28 built-in types. type is the condition type's registry ID (epiphany:<key>); third-party mods can register new keys.

Graceful Degradation on Parse Failure

If type references an unregistered condition type, JSON parsing fails and the system automatically falls back to epiphany:always (always true). This means your datapack won't crash due to a typo, but the condition will silently become always-true. Please double-check your type names carefully.

Logical Operators

epiphany:always (Always True)

Always true — has no JSON body fields. This is the default fallback when dispatch parsing fails.

jsonc
{ "type": "epiphany:always" }

epiphany:never (Always False)

Always false. Useful for "this should never auto-unlock; only commands/API can unlock it."

jsonc
{ "type": "epiphany:never" }

epiphany:and (All Must Be True)

True when all child conditions are true.

FieldTypeRequiredDescription
conditionslist of ConditionList of child conditions
jsonc
{
    "type": "epiphany:and",
    "conditions": [
        { "type": "epiphany:experience_level", "value": 30 },
        { "type": "epiphany:advancement", "advancement": "minecraft:story/mine_diamond" }
    ]
}

epiphany:or (Any Must Be True)

True when any child condition is true.

FieldTypeRequiredDescription
conditionslist of ConditionList of child conditions

epiphany:not (Negation)

Negates a child condition.

FieldTypeRequiredDescription
conditionConditionThe child condition to negate
jsonc
{
    "type": "epiphany:not",
    "condition": {
        "type": "epiphany:dimension",
        "dimension": "minecraft:the_nether"
    }
}

Conditions

epiphany:attribute (Attribute Comparison)

Evaluates the relationship between a player's current attribute value (base + all modifiers) and a given value.

FieldTypeRequiredDefaultDescription
attributeResourceLocationAttribute id, e.g., minecraft:generic.max_health
valuedoubleRight-hand comparison value
comparisonComparison>=Comparison operator
jsonc
{
    "type": "epiphany:attribute",
    "attribute": "minecraft:generic.max_health",
    "value": 30.0,
    "comparison": ">="
}

epiphany:effect (Has Status Effect)

Evaluates whether the player has a specified effect with an amplifier no less than the given minimum.

FieldTypeRequiredDefaultDescription
effectResourceLocationEffect id, e.g., minecraft:regeneration
min_amplifierint0Minimum amplifier (level − 1)
jsonc
{ "type": "epiphany:effect", "effect": "minecraft:strength", "min_amplifier": 0 }

epiphany:experience_level (Experience Level)

FieldTypeRequiredDefaultDescription
valueintRight-hand comparison value (player's experience level)
comparisonComparison>=Comparison operator

epiphany:statistic (Statistic Value)

The player's cumulative value in a vanilla Statistic.

FieldTypeRequiredDefaultDescription
statResourceLocationStatistic id, e.g., minecraft:mined:minecraft:diamond_ore
valueintRight-hand comparison value
comparisonComparison>=Comparison operator

epiphany:dimension (Current Dimension)

FieldTypeRequiredDescription
dimensionResourceLocationDimension id
jsonc
{ "type": "epiphany:dimension", "dimension": "minecraft:the_nether" }

epiphany:biome (Current Biome)

Evaluates the player's current biome.

FieldTypeRequiredDescription
biomeStringBiome id or "#tag" reference (e.g., minecraft:cherry_grove / "#minecraft:is_ocean")

Auto-Unlock & Polling

This condition is evaluated by the 10-tick polling system and is immediately satisfied when the player enters the target biome.

epiphany:structure (Inside Structure)

Evaluates whether the player is inside a specified structure (requires the chunk to have generated the structure start).

FieldTypeRequiredDescription
structureStringStructure id or "#tag", e.g., minecraft:stronghold / "#minecraft:villages"

epiphany:advancement (Advancement Earned)

FieldTypeRequiredDescription
advancementResourceLocationAdvancement id, e.g., minecraft:story/mine_stone

epiphany:item (Holds a Certain Item)

Evaluates whether the player has at least count of a specified item across their inventory + equipment + hotbar.

FieldTypeRequiredDefaultDescription
itemStringItem id or "#tag"
countint1Quantity

epiphany:item_used (Has Used an Item)

Cumulative number of times the player has used this item.

FieldTypeRequiredDefaultDescription
itemStringItem id (note: only plain id; tags are not supported)
countint1Cumulative count

epiphany:block_broken (Blocks Mined)

Cumulative number of times the player has mined this block.

FieldTypeRequiredDefaultDescription
blockStringBlock id or "#tag"
countint1Cumulative count

epiphany:kill_entity (Entities Killed)

Cumulative number of times the player has killed this entity type.

FieldTypeRequiredDefaultDescription
entityStringEntity id or "#tag"
countint1Cumulative count

FakePlayer Exclusion

Both kill_entity and block_broken exclude FakePlayers, so kills/mining contributed by automation mods (e.g., Create) are not counted in the statistics.

epiphany:aptitude (Aptitude Value)

FieldTypeRequiredDefaultDescription
valuelongRight-hand comparison value
comparisonComparison>=Comparison operator

epiphany:insight_points (Insight Points)

The player's current available Insight Points (not counting spent ones). Note: this is the current balance, not the cumulative total.

FieldTypeRequiredDefaultDescription
valueintRight-hand comparison value
comparisonComparison>=Comparison operator

epiphany:module_selected (Module Selected)

FieldTypeRequiredDescription
moduleResourceLocationModule id

epiphany:module_completed (Module Completed)

FieldTypeRequiredDescription
moduleResourceLocationModule id

epiphany:insight_selected (Insight Unlocked)

FieldTypeRequiredDescription
insightResourceLocationInsight id

epiphany:epiphany_selected (Epiphany Activated)

FieldTypeRequiredDescription
epiphanyResourceLocationEpiphany id

FTB Quests Integration (Soft Dependency)

Soft Dependency

The following 4 types require FTB Quests to be installed to actually function. When absent, they always return false, but the datapack will still load.

Since FTBQ conditions are event-driven (isEventDriven() == true), auto-unlock skips polling evaluation for these types and only checks them when the corresponding FTBQ event fires.

epiphany:ftbq_quest (Quest Completed)

FieldTypeRequiredDescription
questStringFTBQ quest hex string id

epiphany:ftbq_chapter_started (Chapter Started)

FieldTypeRequiredDescription
chapterStringFTBQ chapter hex string id

epiphany:ftbq_chapter_completed (Chapter Completed)

FieldTypeRequiredDescription
chapterStringFTBQ chapter hex string id

epiphany:ftbq_tag (Has Tag Mark)

FieldTypeRequiredDefaultDescription
tagStringFTBQ tag string
countint1Minimum tag count required

KubeJS Integration (Soft Dependency)

epiphany:kubejs_stage (Has Stage)

Evaluates whether the player has the specified KubeJS stage.

FieldTypeRequiredDescription
stageStringKubeJS stage name