Unification Config
Unification configs define which tags are unified and which mods are preferred. They are the most important configs of Almost Unified.
Location: config/almostunified/unification/<name>.json
Each JSON file in the unification folder is a separate unification config. If the folder is empty, Almost Unified creates a default config called materials.json.
Options
| Key | Description | Default |
|---|---|---|
mod_priorities | List of mod IDs ordered by priority. The first mod has the highest priority. | see below |
priority_overrides | Object mapping tags to a mod ID that should be preferred for this tag. | {} |
stone_variants | List of stone variants used to tell ores apart. | see below |
tags | List of item tags to unify. Supports placeholders. | see below |
ignored_tags | List of tags to exclude from the unification. Placeholders are not supported. | [] |
ignored_items | List of item IDs to exclude from the unification. Supports regular expressions. | [] |
ignored_recipe_types | List of recipe types to exclude from the unification. Supports regular expressions. | ["cucumber:shaped_tag"] |
ignored_recipe_ids | List of recipe IDs to exclude from the unification. Supports regular expressions. | [] |
recipe_viewer_hiding | Whether variant items of this config are hidden in recipe viewers. | true |
loot_unification | Whether loot tables are unified with the tags of this config. | false |
ignored_loot_tables | List of loot table IDs to exclude from the loot unification. Supports regular expressions. | [] |
mod_priorities
The list of mods used to choose the target item of each tag. For every tag, Almost Unified checks the mods from top to bottom and picks the item of the first mod that has an item in the tag.
Mods that are not part of this list are never chosen as the target. If no item of a tag belongs to a listed mod, the tag is not unified. Almost Unified logs a warning for listed mods that are not installed.
The default list only contains the following mods, filtered by the mods that are installed when the config is generated:
[
"minecraft",
"kubejs",
"crafttweaker",
"create",
"thermal",
"immersiveengineering",
"mekanism",
"techreborn",
"modern_industrialization",
"indrev"
]TIP
You will most likely need to add more mods to this list. Use dump_tags in the Debug Config to see which mods provide items for your tags.
priority_overrides
Overrides the target mod for specific tags. The key is the tag without #, the value is the mod ID. If the specified mod has no item in the tag, Almost Unified logs a warning and falls back to mod_priorities.
{
"priority_overrides": {
"c:ingots/osmium": "mekanism",
"c:dusts/sulfur": "thermal"
}
}stone_variants
See Stone Variants below.
Default:
["stone", "andesite", "deepslate", "diorite", "granite", "netherrack", "end_stone"]tags
The list of item tags to unify. Tags are written without #. You can use placeholders such as {material}, which will be replaced with each value defined in the placeholder config. Tags that don't exist in the game are skipped.
Default:
[
"c:dusts/{material}",
"c:gears/{material}",
"c:gems/{material}",
"c:ingots/{material}",
"c:nuggets/{material}",
"c:ores/{material}",
"c:plates/{material}",
"c:raw_materials/{material}",
"c:rods/{material}",
"c:storage_blocks/raw_{material}",
"c:storage_blocks/{material}",
"c:wires/{material}"
]ignored_tags
Tags in this list are removed from the unification after the placeholders were replaced. This is useful to exclude single tags that are generated by a placeholder, e.g. c:nuggets/copper if you want to keep the copper nuggets of all mods.
ignored_items
Items in this list are not part of any unification tag. They are never chosen as a target item, never replaced, and never hidden.
ignored_recipe_types and ignored_recipe_ids
Recipes matching these lists are not unified by this config. They are still checked for duplicates, which can be configured separately in the Duplicates Config.
The recipe type cucumber:shaped_tag is ignored by default because unifying it causes errors.
recipe_viewer_hiding
When enabled, variant items of all tags in this config are hidden in JEI, REI, and EMI. See Recipe Viewers.
loot_unification and ignored_loot_tables
When enabled, variant items in loot tables are replaced with their target items. See Loot Unification.
Stone Variants
Ore tags usually contain ores embedded in different types of stone. To avoid replacing a Deepslate Silver Ore with a regular Silver Ore, Almost Unified determines the stone variant of each ore and only chooses target items among ores of the same stone variant.
Stone variants are only used for ore tags. A tag counts as an ore tag if it matches c:ores/* or ends with _ores in the c or minecraft namespace.
The stone variant of an ore is detected in the following order:
- If the item or block is part of a
c:ores_in_ground/<variant>tag and the variant is listed instone_variants, this variant is used. - Otherwise, the item ID is checked. If the ID contains
<variant>_or ends with_<variant>, this variant is used. Longer variant names are checked first, soblue_netheris matched beforenether. - If nothing matches, the ore is treated as a regular stone ore.
The stone variant represents the regular ore. If an ore of a stone variant has no counterpart of the same variant from a listed mod, it is not replaced.
Multiple Unification Configs
You can create as many unification configs as you want by adding more JSON files to the unification folder. A new file has to contain a valid JSON object, but it doesn't need to contain all options. Even {} is enough. All missing options are filled with their defaults when the config is loaded.
Example structure:
config/almostunified/unification/
├── gems.json
├── metals.json
└── misc.jsonThis allows you to use different settings for different groups of resources:
- different
mod_priorities, e.g. prefer Mekanism for metals but Thermal for gems - different
stone_variants - enable
loot_unificationonly for ores - disable
recipe_viewer_hidingfor some tags - ignore a recipe type only for some tags
Keep the following rules in mind:
- A tag can only be part of a single unification config. If multiple configs define the same tag, only one of them uses it and a warning is logged. Use
ignored_tagsto remove tags generated by placeholders from configs that shouldn't handle them. - An item can only be part of a single unification tag, even across configs.
- Each recipe is processed by every config that doesn't ignore it. The changes of all configs are combined.
- The default
tagsare added to every new config. When you split your tags into multiple configs, make sure to remove tags from the configs that shouldn't handle them.
Example
metals.json:
{
"mod_priorities": ["minecraft", "mekanism", "thermal", "create"],
"priority_overrides": {},
"stone_variants": ["stone", "deepslate", "netherrack", "end_stone"],
"tags": [
"c:dusts/{material}",
"c:ingots/{material}",
"c:nuggets/{material}",
"c:ores/{material}",
"c:raw_materials/{material}",
"c:storage_blocks/{material}",
"c:storage_blocks/raw_{material}"
],
"ignored_tags": [],
"ignored_items": [],
"ignored_recipe_types": ["cucumber:shaped_tag"],
"ignored_recipe_ids": [],
"recipe_viewer_hiding": true,
"loot_unification": true,
"ignored_loot_tables": []
}gems.json:
{
"mod_priorities": ["minecraft", "thermal", "mekanism"],
"priority_overrides": {},
"stone_variants": ["stone", "deepslate"],
"tags": ["c:gems/{gem}"],
"ignored_tags": [],
"ignored_items": [],
"ignored_recipe_types": ["cucumber:shaped_tag"],
"ignored_recipe_ids": [],
"recipe_viewer_hiding": true,
"loot_unification": false,
"ignored_loot_tables": []
}The {gem} placeholder in this example is a custom placeholder that has to be defined in the Placeholder Config.
Default Config
The default materials.json (the mod_priorities depend on the installed mods):
{
"mod_priorities": [
"minecraft",
"kubejs",
"crafttweaker",
"create",
"thermal",
"immersiveengineering",
"mekanism"
],
"priority_overrides": {},
"stone_variants": [
"stone",
"andesite",
"deepslate",
"diorite",
"granite",
"netherrack",
"end_stone"
],
"tags": [
"c:dusts/{material}",
"c:gears/{material}",
"c:gems/{material}",
"c:ingots/{material}",
"c:nuggets/{material}",
"c:ores/{material}",
"c:plates/{material}",
"c:raw_materials/{material}",
"c:rods/{material}",
"c:storage_blocks/raw_{material}",
"c:storage_blocks/{material}",
"c:wires/{material}"
],
"ignored_tags": [],
"ignored_items": [],
"ignored_recipe_types": ["cucumber:shaped_tag"],
"ignored_recipe_ids": [],
"recipe_viewer_hiding": true,
"loot_unification": false,
"ignored_loot_tables": []
}