Skip to content

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 ​

KeyDescriptionDefault
mod_prioritiesList of mod IDs ordered by priority. The first mod has the highest priority.see below
priority_overridesObject mapping tags to a mod ID that should be preferred for this tag.{}
stone_variantsList of stone variants used to tell ores apart.see below
tagsList of item tags to unify. Supports placeholders.see below
ignored_tagsList of tags to exclude from the unification. Placeholders are not supported.[]
ignored_itemsList of item IDs to exclude from the unification. Supports regular expressions.[]
ignored_recipe_typesList of recipe types to exclude from the unification. Supports regular expressions.["cucumber:shaped_tag"]
ignored_recipe_idsList of recipe IDs to exclude from the unification. Supports regular expressions.[]
recipe_viewer_hidingWhether variant items of this config are hidden in recipe viewers.true
loot_unificationWhether loot tables are unified with the tags of this config.false
ignored_loot_tablesList 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:

json
[
    "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.

json
{
    "priority_overrides": {
        "c:ingots/osmium": "mekanism",
        "c:dusts/sulfur": "thermal"
    }
}

stone_variants ​

See Stone Variants below.

Default:

json
["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:

json
[
    "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:

  1. If the item or block is part of a c:ores_in_ground/<variant> tag and the variant is listed in stone_variants, this variant is used.
  2. 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, so blue_nether is matched before nether.
  3. 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.json

This 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_unification only for ores
  • disable recipe_viewer_hiding for 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_tags to 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 tags are 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:

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:

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):

json
{
    "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": []
}