LogoInfinite Dimensions

Cosmic Invocation

Cosmic Invocation is the process of generating config files for all loaded mods. In the older versions, players had to construct and activate their own Transfinite Altar to enrich the multiverse with modded content; now this process is performed automatically by a special Cosmic Altar.

In singleplayer, invocation happens on the first couple of ticks of the first world created on a new game instance (since config files are shared between all the worlds on an instance). On a server, it is performed the instant the first player joins the game.

Currently, the config files and therefore types of modded content which the invocation is able to scan for and introduce to dimensions are:

  • blocks,
  • fluids,
  • mobs,
  • sounds,
  • items,
  • particles,
  • status effects,
  • block tags,
  • structures plus some of their additional data,
  • tree features,
  • biomes,
  • (in limited capacity) surface rules for biomes.

Blocks are auto-assigned tags needed for the generator to know which parts of worldgen are they usable for ("full", "laggy" etc., see the page on configuring the mod), plus checked for different traits (being a flower, rotatable, dyeable etc.). Mobs are auto-tagged with their spawn group (monsters, underwater creatures etc.). Music is also auto-chosen from the list of sounds, although the way the game checks for that is currently imperfect (it just checks if the ID of the sound event contains the substrings "music" or "disc"). When scanning for biomes, the game ignores all the ones from Infinite Dimensions itself as to not introduce mod-generated biomes into the pool of ones to choose from when you specifically want to not generate one; a similar thing happens with structures.

All the entries in all these lists are assigned the default weight of 1.0. You're free to edit these weights as you wish after the invocation if you want to tweak the rarity of certain blocks/mobs/etc. or disable some of them from appearing in mod's dimensions altogether (set the weight to 0.0 for that).

Known issues with invocation

  • Invocation only happens once per game folder. As such, if you add new mods to the instance after you already loaded worlds on it once, invocation will not happen again. This especially stands for the default Minecraft launcher by Mojang, which by design only uses one. To force the invocation to happen again, you need to delete the file config/infinity/modular/invocation.lock and relaunch the game.
  • Repeated invocation will not touch any of the existing files, only add new ones. As such, it is useful by itself only when adding new mods to the instance. If you update one of the mods to a newer version that brings more content, or especially if you remove mods, you have to purge the /config/modular folder entirely to do a successful reinvocation.
  • Starting at version 2.1.0 of the mod, Infinite Dimensions will automatically delete all modular configs and issue reinvocation if it detects that the version of those configs (set in the invocation lock) is outdated. If you make changes to your modular configs, do a backup of them before updating the mod!

Amendments

Amendments are a system of automatically changing values in config files without changing them one-by-one. They are stored in /config/infinity/amendments.json, but can also be edited in the last tab of the mod's configuration menu (requires Mod Menu and Cloth Config).

Amendments are stored in config/infinity/amendments.json and only can affect modular configs. To change the list of active amendments, one must edit the amendments.json file making sure to increase up the amendment_version statistic at the top, then fully close and restart the game.

Amendments consist of four distinct parts governing when and how the amendment will be passed:

  • Area. This is the scope of the amendment in terms of type of game content it affects: "blocks", "fluids", "items", "structures" and "mobs" are the ones that would probably be most useful to a user, but there are other options too.
  • Mod. This cam be set to a mod ID (including "minecraft") to only select content from this mod, or to "all" to skip the mod check. If the mod of the set ID is not loaded, the amendment is skipped.
  • Selector. This governs what content within the selected mod and area is affected by the amendment, and there are several types available:
  • "all" - amend everything (useful if you want to skip some mod entirely);
  • "matching" - amend a single entry, with it's key set as a value under a key matching (i.e., "selector": "matching", "matching": "minecraft:lava");
  • "matching_any" - amend every entry in a list, provided under a key matching;
  • "matching_block_tag" - only works when area is set to "blocks" and amends all blocks under a tag. The tag ID is provided under matching without the leading # symbol.
  • "containing" - amends all entries the names of which contain a certain string of characters set under the containing field.
  • Results - what will the amendment do, the following options are available:
  • "set_value" - sets the weight of an element to a number provided under value (the default weight is 1);
  • "set_field" - useful e.g. for blocks if you want to mark them as laggy overriding the default algorithm that checks it; additional fields are field_name and field allowing you to add any field to the data amended content has;
  • "erase" - skip the entry entirely, effectively the same as setting its weight to 0.

Let's break down the first ten amendments from the default list the mod comes with. Most of them are fixes for various mod compatibility issues:

{
"area": "fluids",
"mod": "minecraft",
"selector": "matching",
"matching": "minecraft:lava",
"results": "set_value",
"value": 2.0
},
{
"area": "fluids",
"mod": "minecraft",
"selector": "matching",
"matching": "minecraft:water",
"results": "set_value",
"value": 5.0
}

The first and second amendments modify the weights the two vanilla fluids have in the distribution of all fluids, making them a bit more common in modded scenarios.

{
"area": "blocks",
"mod": "minecraft",
"selector": "matching_any",
"matching": [
"minecraft:slime_block",
"minecraft:honey_block",
"minecraft:mangrove_roots"
],
"results": "set_field",
"field_name": "laggy",
"field": true
}

The third amendment marks some vanilla blocks as laggy. These are the blocks which can overwhelm the rendering algorithm when present in large blobs due to having unculled inner faces on their model.

{
"area": "trees",
"mod": "all",
"selector": "containing",
"containing": "bees",
"results": "erase"
}

The fourth amendment forbids generation of any trees that have beehives on them (conveniently, their IDs all have the word bees in them), as large amounts of those leads to large amounts of bees present which can lag the game.

{
"area": "fluids",
"mod": "modern_industrialization",
"selector": "all",
"results": "erase"
}

The fifth amendment forbids all fluids from the Modern Industrialization mod from appearing, as they lack fluid physics and rendering due to not having been supposed to ever be placed in-world.

{
"area": "mobs",
"mod": "minecolonies",
"selector": "all",
"results": "erase"
}

The sixth amendment prevents all mobs from Minecolonies from spawning in this mod's biomes as part of the natural spawning algorithm, as these error out the game if they do due to incomplete entity data.

{
"area": "structures",
"mod": "alexscaves",
"selector": "all",
"results": "erase"
},
{
"area": "structures",
"mod": "aether",
"selector": "containing",
"containing": "dungeon",
"results": "erase"
}

The seventh and eighth amendments bans all structures from Alex's Caves (aka, the caves themselves) and Aether dungeons from generating in this mod's custom dimensions, as they sometimes throw errors when they do due to failing their inner checks when called to generate outside of their natural environment.

{
"area": "structures",
"mod": "oritech",
"selector": "containing",
"containing": "pipe",
"results": "erase"
}

The ninth amendment bans all pipe blocks from Oritech, because when these are placed during world generation, they try to update their shape and in the process poll the world for metrics which on this stage aren't yet present, resulting in a crash.

{
"area": "blocks",
"mod": "chipped",
"selector": "all",
"results": "set_value",
"value": 0.1
}

The tenth amendment reduces weights of all blocks from the Chipped mod down to 0.1, as there are thousands of them :D