Download Excavated Variants — Minecraft Mods — MetaMods
Excavated Variants

Excavated Variants

Active

Downloads

20

Last update

1 year ago

Versions

1.18.1 — 1.21.1
Client and server
Fabric
Forge
Neoforge
Quilt
World generators

Excavated Variants

NeoForge version requires: Dynamic Asset Generator

Fabric/Quilt version requires: Dynamic Asset Generator and Fabric API/Quilted Fabric API

This mod automatically creates various ore variants that correspond to different types of stone in the game. If you use mods that add new types of stone or ores, Excavated Variants will generate corresponding block variants for each ore and stone type combination.

Main Features

The mod not only adds new ore variants but also configures their generation in the world. You can modify the created variants through configuration files. Some mods are already included in the default settings, while others require manual addition.

Troubleshooting

If you encounter difficulties:

  • If world or game loading is slow, try enabling stronger resource and data caching in Dynamic Asset Generator settings
  • If the game crashes on startup or ore textures become pink and black, there might be a configuration issue - try deleting and resetting the settings
  • If compatibility with the mods listed below is missing, delete configuration files to return to default settings

Compatibility

Default configuration includes ore variants for the following mods (in addition to vanilla stones and ores):

  • Quark
  • Create
  • Oh The Biomes You'll Go
  • Tech Reborn
  • Immersive Engineering
  • Blockus
  • Better End
  • Better Nether
  • Promenade
  • Twigs
  • Unearthed
  • Bewitchment
  • Mekanism
  • Mystical Agriculture
  • And many more!

Configuration Format

The main settings file config/excavated_variants.json contains several options:

  • attempt_worldgen_replacement: Enables/disables ore generation changes; without this option, ores won't be replaced during world creation
  • add_conversion_recipes: Determines whether to add recipes to convert variants back to the base ore

Other configuration is loaded through the globalresources folder. You can add new configuration files directly, but if you want to extract built-in settings for editing, open the defaultresources.json file. It should look something like this:

{
  "extract": {
    "excavated_variants": "unextracted"
  }
}

Change unextracted to extract and launch the game once. Now the default settings will be available for editing in the globalresources folder.

Important: If you just want to add more settings, you don't need (and shouldn't) do this. You can add new configuration files without extracting existing ones.

Data Types in Configuration

Settings define four main data types:

  • Ground Types: Represent classes of ores and stones. Used to determine which new ore/stone combinations (variants) should be created. For example: excavated_variants:overworld is a category shared by normal Minecraft stone, deepslate, and overworld ores

  • Ores: Types of blocks that can exist in any number of different stones. During world generation, they are replaced with variants matching neighboring stones. For example: excavated_variants:minecraft/iron_ore represents both normal and deepslate iron ore, as well as any other generated variants

  • Stones: Blocks within which ores generate. For example: excavated_variants:minecraft/granite represents granite and contains information about which new variants to generate based on granite

  • Modifiers: Used to modify variant properties. Can add tags, change block properties, prevent variant creation, and more

Except when changed by modifiers, variants are generated for all ore/stone combinations that share a ground type and don't already have a variant.

Ground Types

Placed in globalresources/[folder/pack]/globaldata/[namespace]/excavated_variants/ground_type. These are JSON files with the following structure:

  • (nothing): don't actually contain any data yet! Just use an empty JSON file: {}

Ores

Placed in globalresources/[folder/pack]/globaldata/[namespace]/excavated_variants/ore. These are JSON files with the following structure:

  • types: list of ground types where this ore can generate. For example: ["excavated_variants:overworld"]
  • translations: object with locales as keys (such as en_us) and translated ore names as values. Translations will be prepended by the stone name, unless the translation contains %s, in which case the stone name will be inserted at that location
  • tags: list of tags that variants of this ore will be added to, as both block and item tags
  • blocks: map representing pairings of ore variants with stones. Each key is the identifier of a block representing an ore variant. Values take one of two forms:
    • string representing the identifier of a stone. For example: "excavated_variants:minecraft/granite". This variant is assumed to exist if the mod whose namespace ID matches the block ID is present
    • object with the following fields:
      • stone: string representing the identifier of a stone. For example: "excavated_variants:minecraft/granite"
      • required_mods: list of mod IDs that must be present for this variant to be generated. For example: ["spelunkery", "create"]
      • generating: (optional, defaults to true) whether this variant can be used as a parent for new, generated variants

Stones

Placed in globalresources/[folder/pack]/globaldata/[namespace]/excavated_variants/stone. These are JSON files with the following structure:

  • types: list of ground types where this stone can generate. For example: ["excavated_variants:overworld"]
  • translations: object with locales as keys (such as en_us) and translated stone names as values
  • block: identifier of the block corresponding to this stone. For example: "minecraft:granite"
  • ore_tags: list of tags that ore variants for this stone will be added to, as both block and item tags

Modifiers

Placed in globalresources/[folder/pack]/globaldata/[namespace]/excavated_variants/modifier. These are JSON files with the following structure:

  • tags: (optional) list of tags that will be added to variants matching the filter. Can be block or item tags in the format "namespace:[blocks/items]/path"
  • flags: (optional) list of flags from the following set that will be applied to matching variants:
    • "original_without_silk": the variant should drop whatever its original block would drop, unless silk touch is used. This flag is irrelevant for ore blocks that drop "raw ore chunks" or similar, and is only relevant when the original block drops itself
    • "original_always": the variant should always drop whatever its original block would drop, even if silk touch is used
    • "disable": the variant should not be generated or recognized by the mod
    • "non_generating": the variant should not be used as a parent for new variants, but the mod is still aware of it
  • properties: (optional) object with the following fields that modifies the properties of generated blocks:
    • destroy_time: time required to break the block
    • explosion_resistance: block's resistance to explosions
    • xp: amount of experience dropped by the block. Can take the same type of integer range as seen in vanilla datapacks
  • filter: describes which variants this modifier applies to

Filters

Modifier filters can take the form of either a string or an object. As an object, they have at least one field type, which describes the filter type. Available types:

  • all matches everything
  • empty matches nothing
  • not matches everything not matched by its "filter" field
  • and matches everything matched by all members of its "filters" field
  • or matches everything matched by at least one member of its "filters" field

As a string, they take one of the following forms:

  • : matches everything
  • ~: matches nothing
  • ~[filter]: matches everything not matched by [filter]
  • ground_type@[namespace]:[path]: matches all variants with the given ground type
  • stone@[namespace]:[path]: matches all variants with the given stone
  • ore@[namespace]:[path]: matches all variants with the given ore
  • mod@[mod_id]: matches everything, but only if a mod with the given ID is present
  • generated: matches all variants that are generated by the mod
  • block@[namespace]:[path]: matches all variants with the given block ID. The specified namespace and path can use as a wildcard to match one or more characters
Project members
lukebemish

lukebemish

Developer

Created: 8 Feb 2022

ID: 3020