Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
1---
2title: Cosmic Invocation
3hide_meta: true
4---
5
6Cosmic Invocation is the process of generating config files for all loaded mods. In the older versions,
7players had to construct and activate their own Transfinite Altar to enrich the multiverse with modded content;
8now this process is performed automatically by a special Cosmic Altar.
9
10In singleplayer, invocation happens on the first couple of ticks of the first world created on a new game instance
11(since config files are shared between all the worlds on an instance). On a server, it is performed the instant the first player
12joins the game.
13
14Currently, the config files and therefore types of modded content which the invocation is able to scan for and introduce to dimensions are:
15* blocks,
16* fluids,
17* mobs,
18* sounds,
19* items,
20* particles,
21* status effects,
22* block tags,
23* structures plus some of their additional data,
24* biomes,
25* (in limited capacity) surface rules for biomes.
26
27Blocks are auto-assigned tags needed for the generator to know which parts of worldgen are they usable for ("full", "laggy" etc.,
28see the page on [configuring the mod](Configuring-the-mod)), plus checked for different traits (being a flower, rotatable, dyeable etc.).
29Mobs are auto-tagged with their spawn group (monsters, underwater creatures etc.). Music is also auto-chosen from the list of sounds,
30although the way the game checks for that is currently imperfect (it just checks if the ID of the sound event contains the
31substrings "music" or "disc"). When scanning for biomes, the game ignores all the ones from Infinite Dimensions itself as to not
32introduce mod-generated biomes into the pool of ones to choose from when you specifically want to _not_ generate one; a similar thing happens
33with structures.
34
35All 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
36the invocation if you want to tweak the rarity of certain blocks/mobs/etc. or disable some of them from appearing in mod's dimensions
37altogether (set the weight to 0.0 for that).
38
39## Known issues with invocation
40* 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,
41invocation will not happen again. This especially stands for the default Minecraft launcher by Mojang, which by design only uses one.
42To force the invocation to happen again, you need to delete the file `config/infinity/modular/invocation.lock` and relaunch the game.
43* Repeated invocation will not touch any of the existing files, only add new ones. As such, it is useful by itself only when
44adding 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,
45you have to purge the `/config/modular` folder entirely to do a successful reinvocation.
46* Starting at version 2.1.0 of the mod, Infinite Dimensions will automatically delete all modular configs and issue reinvocation
47if it detects that the version of those configs (set in the invocation lock) is outdated. If you make changes to your modular configs,
48do a backup of them before updating the mod!
49
50## Amendments
51Amendments are a system of automatically changing values in config files without changing them one-by-one. A more proper integration (for editing them
52in GUI) will be explored later, but so far it is possible to do them by editing files.
53
54Amendments are stored in `config/infinity/amendments.json` and only can affect modular configs. To change the list of active amendments,
55one 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.
56
57Amendments consist of four distinct parts governing when and how the amendment will be passed:
58* Area. This is the scope of the amendment in terms of type of game content it affects: `"blocks"`, `"fluids"`, `"items"`, `"structures"` and `"mobs"`
59are the ones that would probably be most useful to a user, but there are other options too.
60* 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.
61If the mod of the set ID is not loaded, the amendment is skipped.
62* Selector. This governs what content within the selected mod and area is affected by the amendment, and there are several types available:
63 * `"all"` - amend everything (useful if you want to skip some mod entirely);
64 * `"matching"` - amend a single entry, with it's key set as a value under a key `matching` (i.e., `"selector": "matching", "matching": "minecraft:lava"`);
65 * `"matching_any"` - amend every entry in a list, provided under a key `matching`;
66 * `"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
67 the leading `#` symbol.
68 * `"containing"` - amends all entries the names of which contain a certain string of characters set under the `containing` field.
69* Results - what will the amendment do, the following options are available:
70 * `"set_value"` - sets the weight of an element to a number provided under `value` (the default weight is 1);
71 * `"set_field"` - useful e.g. for blocks if you want to mark them as laggy overriding the default algorithm that checks it;
72 additional fields are `field_name` and `field` allowing you to add any field to the data amended content has;
73 * `"erase"` - skip the entry entirely, effectively the same as setting its weight to 0.
74
75Let's break down the default list of ten amendments the mod comes with. Most of them are fixes for various mod compatibility issues:
76```
77 {
78 "area": "fluids",
79 "mod": "minecraft",
80 "selector": "matching",
81 "matching": "minecraft:lava",
82 "results": "set_value",
83 "value": 2.0
84 },
85 {
86 "area": "fluids",
87 "mod": "minecraft",
88 "selector": "matching",
89 "matching": "minecraft:water",
90 "results": "set_value",
91 "value": 5.0
92 }
93```
94The first and second amendments modify the weights the two vanilla fluids have in the distribution of all fluids, making them
95a bit more common in modded scenarios.
96
97```
98 {
99 "area": "blocks",
100 "mod": "minecraft",
101 "selector": "matching_any",
102 "matching": [
103 "minecraft:slime_block",
104 "minecraft:honey_block",
105 "minecraft:mangrove_roots"
106 ],
107 "results": "set_field",
108 "field_name": "laggy",
109 "field": true
110 }
111```
112The third amendment marks some vanilla blocks as laggy. These are the blocks which can overwhelm the rendering algorithm when present in large blobs
113due to having unculled inner faces on their model.
114
115```
116 {
117 "area": "trees",
118 "mod": "all",
119 "selector": "containing",
120 "containing": "bees",
121 "results": "erase"
122 }
123```
124The fourth amendment forbids generation of any trees that have beehives on them (conveniently, their IDs all have the word bees in them),
125as large amounts of those leads to large amounts of bees present which can lag the game.
126
127```
128 {
129 "area": "fluids",
130 "mod": "modern_industrialization",
131 "selector": "all",
132 "results": "erase"
133 }
134```
135The fifth amendment forbids all fluids from the Modern Industrialization mod from appearing, as they lack fluid physics and rendering due to not having
136been supposed to ever be placed in-world.
137
138```
139 {
140 "area": "mobs",
141 "mod": "minecolonies",
142 "selector": "all",
143 "results": "erase"
144 }
145```
146The sixth amendment prevents all mobs from Minecolonies from spawning in this mod's biomes as part of the natural spawning algorithm,
147as these error out the game if they do due to incomplete entity data.
148
149```
150 {
151 "area": "structures",
152 "mod": "alexscaves",
153 "selector": "all",
154 "results": "erase"
155 },
156 {
157 "area": "structures",
158 "mod": "aether",
159 "selector": "containing",
160 "containing": "dungeon",
161 "results": "erase"
162 }
163```
164The seventh and eighth amendments bans all structures from Alex's Caves (aka, the caves themselves) and Aether dungeons from generating in this mod's
165custom dimensions, as they sometimes throw errors when they do due to failing their inner checks when called to generate outside of their natural
166environment.
167
168```
169 {
170 "area": "structures",
171 "mod": "oritech",
172 "selector": "containing",
173 "containing": "pipe",
174 "results": "erase"
175 }
176```
177The ninth amendment bans all pipe blocks from Oritech, because when these are placed during world generation, they try to update their shape
178and in the process poll the world for metrics which on this stage aren't yet present, resulting in a crash.
179
180```
181 {
182 "area": "blocks",
183 "mod": "chipped",
184 "selector": "all",
185 "results": "set_value",
186 "value": 0.1
187 }
188```
189The tenth amendment reduces weights of all blocks from the Chipped mod down to 0.1, as there are thousands of them :D