# Configuration file

Config {
    # If set to False, parameters from this config will not be used. [default: true]
    B:enabled=true
}


Geode {
    # List of descendants (deposits/geodes) that will attempt to be generated after this (parent) one.
    # Format: threshold% -> descendant, chance% [:group]
    #   <threshold> - minimum percentage of the parent's size that must be reached to begin generating this descendant
    #   <descendant> - ID of the descendant in the following format: deposit:name or geode:name
    #   <chance> - chance of generating the descendant (from 0 to 100%)
    #   <group> - group name (optional parameter). Can contain only letters, digits or underscores [a-zA-Z0-9_].
    # All listed descendants will attempt to be generated in random order.
    # Group descendants to achieve logical "or" behaviour (only one descendant from each group will be generated).
    # Starting position will be chosen within the chunk where the parent's size has reached the threshold value.
    # Examples:
    #    90% -> deposit:diamond, 10%
    #    80% -> deposit:iron, 40% :metals
    #    70% -> geode:amethyst, 20%
    S:descendants <
     >

    # Determines how much noise will be applied to the final shape of the geode [range: 0.0 ~ 10.0, default: 0.9]
    S:noiseMultiplier=0.9

    # Rarity (in chunks). The higher the value, the rarer the generation will be.
    # Example: a value of 1000 means that generation will occur approximately once every 1000 chunks.
    #  [range: 0 ~ 256000, default: 2400]
    I:rarity=2400

    # List of blocks that can be replaced with this ore.
    S:replaceableBlocks <
        #minecraft:stone_ore_replaceables
        #minecraft:deepslate_ore_replaceables
        #minecraft:replaceable
        water:*
        lava:*
     >

    ##########################################################################################################
    # Dimensions
    #--------------------------------------------------------------------------------------------------------#
    # List of dimensions which this ore can be generated in.
    # Dimension is specified by its registry name (e.g: minecraft:overworld, minecraft:the_nether, minecraft:the_end, etc.)
    # Each dimension must be on a separate line without any delimiters.
    # If the whitelist is set, the blacklist will be ignored.
    ##########################################################################################################

    Dimensions {
        S:blackList <
         >
        S:whiteList <
            minecraft:overworld
         >
    }

    ##########################################################################################################
    # Biomes
    #--------------------------------------------------------------------------------------------------------#
    # List of biomes which this ore can be generated in.
    # Biome is specified by its registry name (case-insensitive) or by its tag with '#' prefix.
    # Examples: minecraft:forest, #snowy
    # Each biome must be on a separate line without any delimiters.
    # If the whitelist is set, the blacklist will be ignored.
    ##########################################################################################################

    Biomes {
        S:blackList <
         >
        S:whiteList <
         >
    }

    ##########################################################################################################
    # Altitude
    #--------------------------------------------------------------------------------------------------------#
    # Altitude which this ore can be generated at.
    ##########################################################################################################

    Altitude {
        #  [range: -2147483648 ~ 2147483647, default: 30]
        I:max=30

        #  [range: -2147483648 ~ 2147483647, default: -58]
        I:min=-58
    }

    Miscellaneous {
        # Whether or not the ore blocks can be exposed to air. [default: true]
        B:exposed=true

        # Maximum number of attempts to generate this ore, picking different starting points, until all conditions are met. [range: 1 ~ 1024, default: 16]
        I:maxAttempts=16

        # Ratio of height to width.
        # Values greater than 1 will result in tall shapes, whilst values less than 1 will result in flat shapes.
        #  [range: 0.0 ~ 10.0, default: 1.0]
        S:proportions=1.0

        # If enabled, each ore block will be checked against the given altitude and biome restrictions, rather than the first one. [default: false]
        B:strictBounds=false

        # If enabled, the starting point will be checked only against replaceable blocks, ignoring custom replacements. [default: false]
        B:strictStart=false
    }

    ##########################################################################################################
    # Indicator
    #--------------------------------------------------------------------------------------------------------#
    # Above-ground indicator for this geode (e.g., a rare flower or a combination of circles of different flowers)
    ##########################################################################################################

    Indicator {
        # Circles of indicators and their radiuses.
        # Syntax: indicatorId [, circleRadius]
        # The order of the circles is always shuffled.
        # The circles with the same radius will be randomly selected.
        # If the radius is not defined, it will be selected from the minimum available, starting from 1.
        # Examples:
        #   minecraft:cornflower, 2
        #   minecraft:orange_tulip, 4
        # 
        S:circles <
            minecraft:allium, 3
            minecraft:lily_of_the_valley, 6
         >

        # Percentage of the indicator shape that will be visible. [range: 0.0 ~ 100.0, default: 60.0]
        S:continuity=60.0

        # Maximum displacement of the indicator shape elements. [range: 0 ~ 16, default: 1]
        I:distortion=1

        # ID of a block (for a single-block indicator), a placed_feature or ID of a structure to bind this geode to. [default: ]
        S:id=

        # Percentage of the deposit full size required to create an above-ground indicator.
        # If the indicator is a structure - the chance of generating a geode under it. [range: 0.0 ~ 100.0, default: 30.0]
        S:threshold=30.0
    }

    ##########################################################################################################
    # Filling
    #--------------------------------------------------------------------------------------------------------#
    # Geode internal filling
    # 
    #   <placements> - list of blocks and their weights the filling will consist of.
    #      Syntax:
    #           Block: blockId
    #           Block with weight: blockId, weight
    #           Replacement: targetId -> replacementId
    #           Replacement with weight: targetId -> replacementId, weight
    # 
    #   <radius> - radius (in blocks) of the filling.
    # 
    ##########################################################################################################

    Filling {
        #  
        S:placements <
            air
            water -> water
            lava -> lava
         >

        Radius {
            #  [range: 0 ~ 64, default: 12]
            I:max=12

            #  [range: 0 ~ 64, default: 6]
            I:min=6
        }

    }

    ##########################################################################################################
    # Layers
    #--------------------------------------------------------------------------------------------------------#
    # Geode wall layers
    # 
    #   <placements> - list of blocks and their weights the geode layer will consist of.
    #      Syntax:
    #           Block: blockId
    #           Block with weight: blockId, weight
    #           Replacement: targetId -> replacementId
    #           Replacement with weight: targetId -> replacementId, weight
    # 
    #   <thickness> - thickness (in blocks) of the layer.
    # 
    ##########################################################################################################

    Layers {

        InnerWall {
            #  
            S:placements <
                amethyst_block, 12
                budding_amethyst, 1
             >

            thickness {
                #  [range: 0 ~ 32, default: 4]
                I:max=4

                #  [range: 0 ~ 32, default: 1]
                I:min=1
            }

        }

        MiddleWall {
            #  
            S:placements <
                calcite
             >

            thickness {
                #  [range: 0 ~ 32, default: 3]
                I:max=3

                #  [range: 0 ~ 32, default: 1]
                I:min=1
            }

        }

        OuterWall {
            #  
            S:placements <
                smooth_basalt
             >

            thickness {
                #  [range: 0 ~ 32, default: 2]
                I:max=2

                #  [range: 0 ~ 32, default: 1]
                I:min=1
            }

        }

    }

    ##########################################################################################################
    # Crystals
    #--------------------------------------------------------------------------------------------------------#
    # Geode crystals that appear on the inner wall layer of the geode.
    # 
    #   <placements> - list of crystals and their chances of appearing (in percent).
    #      Syntax:
    #           groundId -> crystalId, chance
    # 
    ##########################################################################################################

    Crystals {
        #  
        S:placements <
            budding_amethyst -> amethyst_cluster, 25
            budding_amethyst -> large_amethyst_bud, 45
            budding_amethyst -> medium_amethyst_bud, 65
            budding_amethyst -> small_amethyst_bud, 85
         >
    }

    ##########################################################################################################
    # Crack
    #--------------------------------------------------------------------------------------------------------#
    # 
    #   <placements> - list of blocks and their weights the crack will consist of.
    #      Syntax:
    #           Block: blockId
    #           Block with weight: blockId, weight
    #           Replacement: targetId -> replacementId
    #           Replacement with weight: targetId -> replacementId, weight
    # 
    #   <chance> - chance (in percent) of generating a crack.
    # 
    #   <radius> - radius (in blocks) of the crack.
    # 
    ##########################################################################################################

    Crack {
        #  [range: 0.0 ~ 100.0, default: 95.0]
        S:chance=95.0

        #  
        S:placements <
            air
            water -> water
            lava -> lava
         >

        Radius {
            #  [range: 0 ~ 64, default: 20]
            I:max=20

            #  [range: 0 ~ 64, default: 8]
            I:min=8
        }

    }

}


