Contextual Condition¶
Unlike Forge's recipe condition, or Fabric's resource condition, contextual condition will be tested during the crafting (or "interaction" you name it). Thus you can achieve more complex goals. For example, limit the crafting only happening in the specific biome or structure.
Contextual condition can be applied to a recipe, or a single result (aka Post Action) in a recipe.
Basic Format¶
| Name | Description | Type / Literal |
|---|---|---|
| type | type | string |
| secret | displays as "???" in player's tooltip optional | boolean |
| description | overrides the default description with a translation key optional | string |
| additional properties... |
Note
If a condition is a secret, it is still visible to players by using some technical approach.
Built-in Conditions¶
Inverted¶
Inverts another condition.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "not" |
| contextual | condition | ContextualCondition |
True for Any¶
Checks if any of the wrapped conditions is passed.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "or" |
| contextual | conditions | ContextualCondition[] |
True for All¶
Checks if all the wrapped conditions are passed.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "and" |
| contextual | conditions | ContextualCondition[] |
Random Chance¶
Generates a random number between 0.0 and 1.0, and checks if it is less than a specified value.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "chance" |
| chance | success rate as a number 0.0–1.0 | number |
Example
{
"type": "chance",
"chance": 0.5
}
Location Check¶
Checks if a location_check predicate is passed.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "location" |
| offsetX | offsets to location optional | int |
| offsetY | offsets to location optional | int |
| offsetZ | offsets to location optional | int |
| predicate | location predicate | LocationPredicate |
Example
Checks if player is in The End, and X position is between -100 and 100.
{
"type": "location",
"predicate": {
"dimension": "the_end",
"position": {
"x": {
"min": -100,
"max": 100
}
}
}
}
Special usage: you can use lychee:biome_tag option to specify biome tag.
Example
{
"type": "location",
"predicate": {
"lychee:biome_tag": "is_ocean"
}
}
Note
Fluid state predicate is not supported yet. (because I am lazy)
Weather Check¶
Checks weather.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "weather" |
| weather | weather | "clear" | "rain" | "thunder" |
Difficulty Check¶
Checks if world is in any of the listed difficulties.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "difficulty" |
| difficulty | difficulty | string | int | string[] | int[] |
Example
Recipe or post action only works when difficulty is peaceful or easy:
{
"type": "difficulty",
"difficulty": ["peaceful", 1]
}
Time Check¶
Compares the current game time (the age of the world in game ticks) against given values.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "time" |
| value | the time | IntBounds |
| period | see wiki optional | int |
See Minecraft Wiki. Only supports constant value.
Example
Recipe works every other second:
{
"type": "time",
"value": {
"min": 0,
"max": 20
},
"period": 40
}
Command Check¶
Executes a command and see if the range matches the return value.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "execute" |
| command | the command to run | string |
| value | the range optional | IntBounds |
Fall Distance Check¶
Checks entity fall distance. Mainly for block crushing recipes.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "fall_distance" |
| range | the range | DoubleBounds |
Entity Health Check¶
Checks if entity's is in a range.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "entity_health" |
| range | the range | DoubleBounds |
Example
{
"type": "lychee:block_interacting",
"item_in": {
"item": "shears"
},
"block_in": "pumpkin",
"contextual": {
"type": "entity_health",
"range": {
"min": 2.1
}
},
"post": [
{
"type": "prevent_default"
},
{
"type": "hurt",
"source": "generic",
"damage": 2
}
]
}
Requires Entity Crouching¶
Checks if entity is crouching/sneaking.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "is_sneaking" |
Direction Check¶
Checks the direction that being interacted. Only works for interaction recipes.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "direction" |
| direction | direction | string |
Allowed value for "direction": "up", "down", "north", "south", "east", "west", "side", "forward"
Check Parameter¶
Checks if a parameter exists in the context.
Format
| Name | Description | Type / Literal |
|---|---|---|
| type | type | "check_param" |
| key | parameter name | string |
Example
Checks if we can know the location in the context.
{
"type": "check_param",
"key": "origin"
}