4.3 KiB
Advanced Conditions
Respackopts uses "conditions" for deciding what files to load.
Respackopts conditions are usually a simple string with a pack and entry name
(IE <pack id>:<entry name>
or <entry name>
),
however, respackopts provides various additional features to enhance their functionality.
This page will go over everything you can do with conditions
(Boolean) logic
Any JSON object will be treated as a logical condition. This behavior allows defining resources that are only used when a set of conditions are met, not just one. Be aware that nesting logic operations is supported and recommended for advanced setups The following expressions are supported:
Example | Explaination |
---|---|
{"not": "examplePack:condition1"} |
True if the contained condition is false |
{"and": ["examplePack:condition1", "examplePack:condition2"]} |
True if all contained conditions are true |
{"or": ["examplePack:condition1", "examplePack:condition2"]} |
True if any contained condition is true |
{"nor": ["examplePack:condition1", "examplePack:condition2"]} |
True if none of the contained conditions are true |
{"xor": ["examplePack:condition1", "examplePack:condition2"]} |
True if the number of contained conditions which are true is an odd number |
{"eq": ["examplePack:condition1", "examplePack:condition2"]} |
True if all contained conditions have the same value (equivalent to {"or": [{"and": [...]}, {"nor": [...]}]} ) |
Built-in conditions
Respackopts provides some conditions by default, you can use them in any pack.
Condition | Explaination |
---|---|
modversion:<mod>:<predicate> |
True if the specified mod is loaded (use the mod ID) and the version fits the predicate. Example: modversion:minecraft:>=1.7.10 , modversion:continuity:* |
Fabric Resource Conditions Interop
Fabric API provides a system called resource conditions, which is similar to respackopts own system. To improve compatibility, respackopts allows accessing fabric resource conditions and respackopts conditions from one another.
Fabric Resource Conditions from Respackopts
A json object containing a singular entry whose key is fabric:load_conditions
will be treated as a Fabric Resource Condition.
Example:
{
"condition": {
"fabric:load_conditions": {
"condition": "fabric:not",
"value": {
"condition": "fabric:all_mods_loaded",
"values": [
"a"
]
}
}
}
}
Respackopts conditions from Fabric
You may access respackopts conditions from Fabric API Resource Condition blocks by specifying a condition with the ID
config
. Its value will be treated as a respackopts condition.
Please be aware that fabric resource conditions are not tied to resource packs and entry IDs must therefore be specified fully.
(Using someTexture
instead of examplePack:someTexture
is impossible)
Example:
{
"type": "minecraft:crafting_shapeless",
"ingredients": [
{
"item": "minecraft:stick"
}
],
"result": {
"item": "minecraft:diamond"
},
"fabric:conditions": [
{
"condition": "fabric:not",
"value": {
"condition": "respackopts:config",
"value": {
"and": [
"examplePack:someTexture"
]
}
}
}
]
}