Recurrent Complex uses expressions (from a boolean algebra) for some of its inputs. These have special syntax, but don't worry - the built-in parser does help with finding syntax errors if it gets complicated.
Boolean Expressions Edit
A boolean expression, generally, is a formula that works with booleans (that is, variables that can either be 'true' or 'false').
Operators, by order of precedence:
- !a - Not: Inverts the value (true -> false, false -> true)
- a & b - And: Returns true if a and b are both true
- a | b - Or: Returns true if either a or b is true
- a ?? b :: c - If a, return b, otherwise returns c ('if a then b else c')
- (a) - Parentheses: Groups the variable and validates it (like in normal algebra)
Special Character: Quotes ""
If you need any of these characters inside a variable, use quotes. Example: "VariableWithAn&" | "VariableWithQuotes()" or "Variable with spaces".
Special Character: Backslash \
You can also use a backslash \ to mark the next character to be used literally instead. Example: VariableWithAn\& | VariableWithQuotes\(\) | Variable\ with\ spaces becomes VariableWithAmpersand& | VariableWithQuotes() | Variable with spaces
To use backslashes or quotes inside variable names, you can of course escape them too, e.g. VariableWithQuotes\" and VariableWithBackslash\\.
Also, note that whitespace is optional and notes the beginning of the next token. Example: Some\ Variable & Some\ Other\ Variable becomes Some Variable & Some Other Variable.
Global Values Edit
There are a few global values that can be used in all types of expressions.
true - Always evaluates to true (constant)
false - Always evaluates to false (constant)
global:a - Evaluates the global toggle a. These can be set in the config file. For example, by default, the expression global:decayTreeLeaves is used in the tree transformer to determine whether tree leaves should be decayable after spawn.
There are a lot of different types of expressions. You do not need through every single one of these - just find the type of expression you are supposed to provide in this list.
Dependency Expression Edit
A dependency expressions if a thing (e.g. structure, inventory generator) will be loaded.
- $a mod:a - Returns true if the mod with the Mod ID 'a' is currently installed / loaded.
- #a structure:a strc:a - Returns true if a structure with ID 'a' is currently loaded.
- registry:a.b reg:a.b - Finds the registry with ID 'a', and evaluates the variable 'b' in it.
$reccomplex & mod:yegamolchattels & $pandorasbox
True if the mods Recurrent Complex, Ye Gamol Chattels and Pandora's Box are all loaded.
(registry:structure.has:BigHouse | registry:structure.has:SmallHouse) & !$yegamolchattels
True if either the structure 'BigHouse' or 'SmallHouse' are loaded, but the mod Ye Gamol Chattels is not.
$yegamolchattels & !(mod:pandorasbox | registry:inventory_generation_component.has:AbandonedChest)
True if Ye Gamol Chattels is loaded, but neither Pandora's Box, nor the inventory generation component AbandondedChest are.
Biome Expression Edit
A biome expression determines if a biome is matched. Y
- a id=a - Returns true if the ID of the biome is 'a'.
- $a type=a - Returns true if the biome matches the biome dictionary type 'a'. You can find out biome types with /#biome.
- name=a - Returns true if the biome has the name 'a'.
plains | id=desert | forest
Whitelist: Matches biomes with the IDs 'Plains', 'Desert' or 'Forest'.
!(type=WATER | id=forest)
Blacklist: Matches all biomes except water-type biomes or 'Forest'.
($PLAINS | type=FOREST) & !id=plains
Matches all plains and forest - type biomes, except the biome with the ID 'Plains'
type=WATER & !($OCEAN | $SNOWY)
Matches all water - style biomes, except the oceans and snowy ones.
Dimension Expression Edit
A dimension expression determines if a dimension is matched.
- $a type=a - Returns true if the current dimension matches the dimension dictionary type 'a'
- a id=a - Returns true if the current dimension has the id 'a'.
0 | 1 | id=-1
Whitelist: Matches dimensions 0 (overworld), 1 (the End) and -1 (nether)
!(type=FINITE | id=1)
Blacklist: Matches all dimensions, except finite ones and 1 (the End)
($ENDER | type=REAL) & !id=0
Matches all ender - style and real dimensions, except 0 (overworld).
$HELL & !(type=FINITE | $UNREAL)
Matches all hell - style dimensions, except if they are finite or unreal in nature.
Block Expression / Positioned Block Expression Edit
A block expression deines if a block is matched.
- #a-b metadata=a-b - Returns true if the metadata is within the specified range (a to b)
- #a metadata=a - Returns true if the metadata is exactly the specified value
- property[a]=b - Returns true if the block has the property with name a, and its value is b.
- a id=a - Returns true if the block has the specified ID
If the expression is positioned, the following variable types are also available:
- is:a - Returns true if the block matches the criteria. 'a' can be either of: leaves, air, foliage, replaceable, liquid, water, lava
- sustains:a - Returns true if the block sustains a given plant type. 'a' can be either of: trees, mushrooms, cacti
- blocks:a - Returns true if the block matches the given thing. 'a' can be either of: movement, light
wool | id=reccomplex:generic_space | minecraft:stone
Matches all wool, negative space and stone blocks.
sustains.trees & !id=grass
Matches all blocks that sustain trees, but aren't grass.
is.foliage | is.replaceable | is.air
Matches all blocks that are either air, replaceable, or foliage. (Useful to determine non-terrain blocks).
id=wool & !(property[color]=silver | property[color]=red)
Matches all wool blocks, except those with color silver and red.
Resource Expression Edit
A resource expression deines if a resource (e.g. structure, inventory generator) is matched (e.g. should be loaded).
- $a domain=a - Returns true if the resource is loaded within the specified domain (for example, a mod ID). The $ stands free if the resource has no domain (e.g. from the structures folder).
- a id=a - Returns true if the resource has the specified ID.
MeteorSite | id=AbandonedTower | SmallPyramid
Matches only the MeteorSite, AbandonedTower, and SmallPyramid structures ('Whitelist').
!MeteorSite & !AbandonedTower & !id=SmallPyramid
Matches all structures except MeteorSite, AbandonedTower, and SmallPyramid ('Blacklist').
(domain=reccomplex | $) & !(MeteorSite | AbandonedTower)
Matches all structures added by Recurrent Complex, and structures made by the user - except MeteorSite and AbandonedTower.
Command Expression Edit
A command expression defines if a command is matched (e.g. should be executed).
- $a name=a - Returns true if the executing player / block has the specified name.
- #a canUseLevel:a - Returns true if the executing player / block has the specified permission level
name=Ivorforce | canUseLevel:3
Only Ivorforce and any player with permission level 3 and above can use the command.
!$Ivorforce & #3
Any player with permission level 3 and above can use the command, except Ivorforce.
Environment Expression Edit
An environment expression defines if a certain environment matches the given criteria (e.g. biome, village type etc.).
- biome.a - Followed by a biome expression variable.
- dimension.a dim.a - Followed by a dimension expression variable.
- dependency.a dep.a - Followed by a dependency expression variable.
- villagetype=a vtype=a - Returns true if the environment is a village with the specified type. Enter None to match environments outside villages.
- generation.a gen.a - Followed by a structure generation info expression variable (of the generation info currently in use).
biome.name=Plains & dim.id=0 & villagetype=None
Matches only plains biomes in the overworld, outside of villages.
(biome.type=Forest & dim.id=0) | (biome.type=Snowy & dim.id=-1)
Matches forests in the overworld, and snowy biomes in the nether (hah).
(vtype=0 | vtype=1) & dimension.id=0
Matches regular villages and desert villages, but only in the overworld.
Generation Info Expression Edit
A generation info expression defines if a generation info matches the given criteria.
- id=a - Returns true if the generation info has the given id.
- $a type=a - Returns true if the type id of the generation info is 'a'.
type=natural & !id=natural_4d36d9d1
Matches all 'Natural'-type generation infos, except the one with ID natural_4d36d9d1.
Registry Expression Edit
In Recurrent Complex, there are a bunch of registries that are referrable by the player - for example the structure registry or the item collection registry. This expression determines if a registry matches the given criteria.
- has:a #a - Returns true if the registry has an entry with the id 'a'.
True if the registry has the entry MeteorSite.