#    This file contains a list of all available settings and their default value for minetest.conf

#    By default, all the settings are commented and not functional.
#    Uncomment settings by removing the preceding #.

#    minetest.conf is read by default from:
#    ../minetest.conf
#    ../../minetest.conf
#    Any other path can be chosen by passing the path as a parameter
#    to the program, eg. "luanti.exe --config ../minetest.conf.example".

#    Further documentation:
#    https://docs.luanti.org/

#
# Controls
#

## General

#    Smooths rotation of camera, also called look or mouse smoothing. 0 to disable.
#    type: float min: 0 max: 100
# camera_smoothing = 0.0

#    Smooths rotation of camera when in cinematic mode, 0 to disable. Enter cinematic mode by using the key set in Controls.
#    type: float min: 0 max: 100
# cinematic_camera_smoothing = 0.05

#    If enabled, you can place nodes at the position (feet + eye level) where you stand.
#    This is helpful when working with nodeboxes in small areas.
#    type: bool
# enable_build_where_you_stand = false

#    If enabled, "Aux1" key instead of "Sneak" key is used for climbing down and
#    descending.
#    type: bool
# aux1_descends = false

#    Double-tapping the jump key toggles fly mode.
#    type: bool
# doubletap_jump = false

#    If disabled, "Aux1" key is used to fly fast if both fly and fast mode are
#    enabled.
#    type: bool
# always_fly_fast = true

#    If enabled, the "Sneak" key will toggle when pressed.
#    This functionality is ignored when fly is enabled.
#    type: bool
# toggle_sneak_key = false

#    If enabled, the "Aux1" key will toggle when pressed.
#    type: bool
# toggle_aux1_key = false

#    The time in seconds it takes between repeated node placements when holding
#    the place button.
#    type: float min: 0.16 max: 2
# repeat_place_time = 0.25

#    The minimum time in seconds it takes between digging nodes when holding
#    the dig button.
#    type: float min: 0 max: 2
# repeat_dig_time = 0.0

#    Automatically jump up single-node obstacles.
#    type: bool
# autojump = false

#    Prevent digging and placing from repeating when holding the respective buttons.
#    Enable this when you dig or place too often by accident.
#    On touchscreens, this only affects digging.
#    type: bool
# safe_dig_and_place = false

#    Enable a confirmation dialog before closing.
#    type: bool
# enable_esc_dialog = true

## Keyboard and Mouse

#    Invert vertical mouse movement.
#    type: bool
# invert_mouse = false

#    Mouse sensitivity multiplier.
#    type: float min: 0.001 max: 10
# mouse_sensitivity = 0.2

#    Keyboard-controlled camera rotation speed, in degrees per second.
#    type: float min: 0.001 max: 720
# keyboard_camera_speed = 170.0

#    Enable mouse wheel (scroll) for item selection in hotbar.
#    type: bool
# enable_hotbar_mouse_wheel = true

#    Invert mouse wheel (scroll) direction for item selection in hotbar.
#    type: bool
# invert_hotbar_mouse_wheel = false

### Keybindings

#    Move forward
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_forward = SYSTEM_SCANCODE_26

#    Will also disable autoforward, when active.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_backward = SYSTEM_SCANCODE_22

#    Move left
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_left = SYSTEM_SCANCODE_4

#    Move right
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_right = SYSTEM_SCANCODE_7

#    Jump
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_jump = SYSTEM_SCANCODE_44

#    Also used for climbing down and descending in water if aux1_descends is disabled.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_sneak = SYSTEM_SCANCODE_225

#    Key for digging, punching or using something.
#    (Note: The actual meaning might vary on a per-game basis.)
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_dig = KEY_LBUTTON

#    Key for placing an item/block or for using something.
#    (Note: The actual meaning might vary on a per-game basis.)
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_place = KEY_RBUTTON

#    Open inventory
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_inventory = SYSTEM_SCANCODE_12

#    Key for moving fast in fast mode.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_aux1 = SYSTEM_SCANCODE_8

#    Open chat
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_chat = SYSTEM_SCANCODE_23

#    Key for opening the chat window to type commands.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_cmd = SYSTEM_SCANCODE_56

#    Key for opening the chat window to type local commands.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_cmd_local = SYSTEM_SCANCODE_55

#    Toggle unlimited view range
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_rangeselect =

#    Toggle fly
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_freemove = SYSTEM_SCANCODE_14

#    Toggle pitchmove
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_pitchmove =

#    Toggle fast
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_fastmove = SYSTEM_SCANCODE_13

#    Toggle noclip
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_noclip = SYSTEM_SCANCODE_11

#    Hotbar: select next item
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_hotbar_next = SYSTEM_SCANCODE_17

#    Hotbar: select previous item
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_hotbar_previous = SYSTEM_SCANCODE_5

#    Mute
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_mute = SYSTEM_SCANCODE_16

#    Increase volume
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_increase_volume =

#    Decrease volume
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_decrease_volume =

#    Toggle automatic forward
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_autoforward =

#    Toggle cinematic mode
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_cinematic =

#    Toggle minimap
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_minimap = SYSTEM_SCANCODE_25

#    Screenshot
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_screenshot = SYSTEM_SCANCODE_69

#    Toggle fullscreen
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_fullscreen = SYSTEM_SCANCODE_68

#    Drop item
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_drop = SYSTEM_SCANCODE_20

#    Zoom
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_zoom = SYSTEM_SCANCODE_29

#    Look left
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_camera_yaw_left =

#    Look right
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_camera_yaw_right =

#    Look up
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_camera_pitch_up =

#    Look down
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_camera_pitch_down =

#    Toggle HUD
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_hud = SYSTEM_SCANCODE_58

#    Toggle chat log
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_chat = SYSTEM_SCANCODE_59

#    Toggle large chat console
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_console = SYSTEM_SCANCODE_67

#    Toggle fog
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_fog = SYSTEM_SCANCODE_60

#    Toggle debug info
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_debug = SYSTEM_SCANCODE_62

#    Key for toggling the display of the profiler. Used for development.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_profiler = SYSTEM_SCANCODE_63

#    Key for toggling the display of mapblock boundaries.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_block_bounds =

#    Toggle camera mode
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_camera_mode = SYSTEM_SCANCODE_6

#    Increase view range
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_increase_viewing_range_min = SYSTEM_SCANCODE_46

#    Decrease view range
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_decrease_viewing_range_min = SYSTEM_SCANCODE_45

#    Modifier key bind for closing your world.
#    Requires ESC + the selected key to work.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_close_world =

#    Hotbar slot 1
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot1 = SYSTEM_SCANCODE_30

#    Hotbar slot 2
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot2 = SYSTEM_SCANCODE_31

#    Hotbar slot 3
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot3 = SYSTEM_SCANCODE_32

#    Hotbar slot 4
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot4 = SYSTEM_SCANCODE_33

#    Hotbar slot 5
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot5 = SYSTEM_SCANCODE_34

#    Hotbar slot 6
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot6 = SYSTEM_SCANCODE_35

#    Hotbar slot 7
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot7 = SYSTEM_SCANCODE_36

#    Hotbar slot 8
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot8 = SYSTEM_SCANCODE_37

#    Hotbar slot 9
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot9 = SYSTEM_SCANCODE_38

#    Hotbar slot 10
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot10 = SYSTEM_SCANCODE_39

#    Hotbar slot 11
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot11 =

#    Hotbar slot 12
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot12 =

#    Hotbar slot 13
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot13 =

#    Hotbar slot 14
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot14 =

#    Hotbar slot 15
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot15 =

#    Hotbar slot 16
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot16 =

#    Hotbar slot 17
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot17 =

#    Hotbar slot 18
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot18 =

#    Hotbar slot 19
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot19 =

#    Hotbar slot 20
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot20 =

#    Hotbar slot 21
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot21 =

#    Hotbar slot 22
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot22 =

#    Hotbar slot 23
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot23 =

#    Hotbar slot 24
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot24 =

#    Hotbar slot 25
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot25 =

#    Hotbar slot 26
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot26 =

#    Hotbar slot 27
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot27 =

#    Hotbar slot 28
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot28 =

#    Hotbar slot 29
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot29 =

#    Hotbar slot 30
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot30 =

#    Hotbar slot 31
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot31 =

#    Hotbar slot 32
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_slot32 =

## Touchscreen

#    Enables the touchscreen controls, allowing you to play the game with a touchscreen.
#    "auto" means that the touchscreen controls will be enabled and disabled
#    automatically depending on the last used input method.
#    type: enum values: auto, true, false
# touch_controls = auto

#    The kind of digging/placing controls used.
#
#    * Tap
#    Long/short tap anywhere on the screen to interact.
#    Interaction happens at finger position.
#
#    * Tap with crosshair
#    Long/short tap anywhere on the screen to interact.
#    Interaction happens at crosshair position.
#
#    * Buttons with crosshair
#    Use dedicated dig/place buttons to interact.
#    Interaction happens at crosshair position.
#    type: enum values: tap, tap_crosshair, buttons_crosshair
# touch_interaction_style = tap

#    The gesture for punching players/entities.
#    This can be overridden by games and mods.
#
#    * Short tap
#    Easy to use and well-known from other games that shall not be named.
#
#    * Long tap
#    Known from the classic Luanti mobile controls.
#    Combat is more or less impossible.
#    type: enum values: short_tap, long_tap
# touch_punch_gesture = short_tap

#    Touchscreen sensitivity multiplier.
#    type: float min: 0.001 max: 10
# touchscreen_sensitivity = 0.2

#    The length in pixels after which a touch interaction is considered movement.
#    type: int min: 0 max: 100
# touchscreen_threshold = 20

#    The delay in milliseconds after which a touch interaction is considered a long tap.
#    type: int min: 100 max: 1000
# touch_long_tap_delay = 400

#    Fixes the position of virtual joystick.
#    If disabled, virtual joystick will center to first-touch's position.
#    type: bool
# fixed_virtual_joystick = false

#    Use virtual joystick to trigger "Aux1" button.
#    If enabled, virtual joystick will also tap "Aux1" button when out of main circle.
#    type: bool
# virtual_joystick_triggers_aux1 = false

#
# Graphics and Audio
#

## Graphics

### Screen

#    Width component of the initial window size.
#    type: int min: 1 max: 65535
# screen_w = 1024

#    Height component of the initial window size.
#    type: int min: 1 max: 65535
# screen_h = 600

#    Whether the window is maximized.
#    type: bool
# window_maximized = false

#    Save window size automatically when modified.
#    If true, screen size is saved in screen_w and screen_h, and whether the window
#    is maximized is stored in window_maximized.
#    type: bool
# autosave_screensize = true

#    Fullscreen mode.
#    type: bool
# fullscreen = false

#    Open the pause menu when the window's focus is lost. Does not pause if a formspec is
#    open.
#    type: bool
# pause_on_lost_focus = false

### FPS

#    If FPS would go higher than this, limit it by sleeping
#    to not waste CPU power for no benefit.
#    type: int min: 1 max: 4294967295
# fps_max = 60

#    Vertical screen synchronization.
#    Note: A restart is required after changing this!
#    Your system may still force VSync and ignore this setting.
#    type: bool
# vsync = false

#    Maximum FPS when the window is not focused.
#    type: int min: 1 max: 4294967295
# fps_max_unfocused = 10

#    View distance in nodes.
#    type: int min: 20 max: 4000
# viewing_range = 190

#    Undersampling is similar to using a lower screen resolution, but it applies
#    to the game world only, keeping the GUI intact.
#    It should give a significant performance boost at the cost of less detailed image.
#    Higher values result in a less detailed image.
#    Note: Undersampling is currently not supported if the "3d_mode" setting is set
#    to a non-default value.
#    type: int min: 1 max: 8
# undersampling = 1

### 3D

#    3D support.
#    Currently supported:
#    -    none: no 3D output
#    -    anaglyph: cyan/magenta color 3D
#    -    topbottom: split screen top/bottom
#    -    sidebyside: split screen side-by-side
#    -    crossview: cross-eyed 3D
#    type: enum values: none, anaglyph, topbottom, sidebyside, crossview
# 3d_mode = none

#    Strength of 3D mode parallax.
#    type: float min: -0.087 max: 0.087
# 3d_paralax_strength = 0.025

### Bobbing

#    Arm inertia, gives a more realistic movement of
#    the arm when the camera moves.
#    type: bool
# arm_inertia = true

#    Enable view bobbing and amount of view bobbing.
#    For example: 0 for no view bobbing; 1.0 for normal; 2.0 for double.
#    type: float min: 0 max: 7.9
# view_bobbing_amount = 1.0

### Damage

#    Flashing of the screen when taking damage.
#    type: bool
# hurt_flash_enabled = true

### Camera

#    Field of view in degrees.
#    type: int min: 45 max: 160
# fov = 72

#    Alters the light curve by applying 'gamma correction' to it.
#    Higher values make middle and lower light levels brighter.
#    Value '1.0' leaves the light curve unaltered.
#    This only has significant effect on daylight and artificial
#    light, it has very little effect on natural night light.
#    type: float min: 0.33 max: 3
# display_gamma = 1.0

#    The strength (darkness) of node ambient-occlusion shading.
#    Lower is darker, Higher is lighter. The valid range of values for this
#    setting is 0.25 to 4.0 inclusive. If the value is out of range it will be
#    set to the nearest valid value.
#    type: float min: 0.25 max: 4
# ambient_occlusion_gamma = 1.8

### Screenshots

#    Path to save screenshots at. Can be an absolute or relative path.
#    The folder will be created if it doesn't already exist.
#    type: path
# screenshot_path = screenshots

#    Format of screenshots.
#    type: enum values: png, jpg
# screenshot_format = png

#    Screenshot quality. Only used for JPEG format.
#    1 means worst quality; 100 means best quality.
#    Use 0 for default quality.
#    type: int min: 0 max: 100
# screenshot_quality = 0

### Node and Entity Highlighting

#    Method used to highlight selected object.
#    type: enum values: box, halo, none
# node_highlighting = box

#    Show entity selection boxes
#    A restart is required after changing this.
#    type: bool
# show_entity_selectionbox = false

#    Selection box border color (R,G,B).
#    type: string
# selectionbox_color = (0,0,0)

#    Width of the selection box lines around nodes.
#    type: int min: 1 max: 5
# selectionbox_width = 2

#    Crosshair color (R,G,B).
#    Also controls the object crosshair color
#    type: string
# crosshair_color = (255,255,255)

#    Crosshair alpha (opaqueness, between 0 and 255).
#    This also applies to the object crosshair.
#    type: int min: 0 max: 255
# crosshair_alpha = 255

### Fog

#    Whether to fog out the end of the visible area.
#    type: bool
# enable_fog = true

#    Make fog and sky colors depend on daytime (dawn/sunset) and view direction.
#    type: bool
# directional_colored_fog = true

#    Fraction of the visible distance at which fog starts to be rendered
#    type: float min: 0 max: 0.99
# fog_start = 0.4

### Clouds

#    Allow clouds to look 3D instead of flat.
#    type: bool
# enable_3d_clouds = true

#    Use smooth cloud shading.
#    type: bool
# soft_clouds = false

### Filtering and Antialiasing

#    Use mipmaps when scaling textures. May slightly increase performance,
#    especially when using a high-resolution texture pack.
#    Gamma-correct downscaling is not supported.
#    type: bool
# mip_map = false

#    Use bilinear filtering when scaling textures.
#    type: bool
# bilinear_filter = false

#    Use trilinear filtering when scaling textures.
#    If both bilinear and trilinear filtering are enabled, trilinear filtering
#    is applied.
#    type: bool
# trilinear_filter = false

#    Use anisotropic filtering when looking at textures from an angle.
#    This provides a significant improvement when used together with mipmapping.
#    type: bool
# anisotropic_filter = false

#    Select the antialiasing method to apply.
#
#    * None - No antialiasing (default)
#
#    * FSAA - Hardware-provided full-screen antialiasing
#    A.K.A multi-sample antialiasing (MSAA)
#    Smoothens out block edges but does not affect the insides of textures.
#
#    If Post Processing is disabled, changing FSAA requires a restart.
#    Also, if Post Processing is disabled, FSAA will not work together with
#    undersampling or a non-default "3d_mode" setting.
#
#    * SSAA - Super-sampling antialiasing
#    Renders higher-resolution image of the scene, then scales down to reduce
#    the aliasing effects. This is the slowest and the most accurate method.
#    type: enum values: none, fsaa, ssaa
# antialiasing = none

#    Defines the size of the sampling grid for FSAA and SSAA antialiasing methods.
#    Value of 2 means taking 2x2 = 4 samples.
#    type: enum values: 2, 4, 8, 16
# fsaa = 2

#    Applies a post-processing filter to detect and smoothen high-contrast edges.
#    Provides balance between speed and image quality.
#    fxaa can used in combination with the other anti-aliasing methods
#    type: bool
# fxaa = false

### Occlusion Culling

#    Type of occlusion_culler
#
#    "loops" is the legacy algorithm with nested loops and O(n³) complexity
#    "bfs" is the new algorithm based on breadth-first-search and side culling
#
#    This setting should only be changed if you have performance problems.
#    type: enum values: bfs, loops
# occlusion_culler = bfs

#    Use raytraced occlusion culling in the new culler.
#    This flag enables use of raytraced occlusion culling test for
#    client mesh sizes smaller than 4x4x4 map blocks.
#    type: bool
# enable_raytraced_culling = true

## Effects

#    Allows liquids to be translucent.
#    type: bool
# translucent_liquids = true

#    Leaves style:
#    -   Fancy:  all faces visible
#    -   Simple: only outer faces
#    -   Opaque: disable transparency
#    type: enum values: fancy, simple, opaque
# leaves_style = fancy

#    Connects glass if supported by node.
#    type: bool
# connected_glass = false

#    Enable smooth lighting with simple ambient occlusion.
#    type: bool
# smooth_lighting = true

#    Enables tradeoffs that reduce CPU load or increase rendering performance
#    at the expense of minor visual glitches that do not impact game playability.
#    type: bool
# performance_tradeoffs = false

### Waving Nodes

#    Set to true to enable waving leaves.
#    type: bool
# enable_waving_leaves = false

#    Set to true to enable waving plants.
#    type: bool
# enable_waving_plants = false

#    Set to true to enable waving liquids (like water).
#    type: bool
# enable_waving_water = false

#    The maximum height of the surface of waving liquids.
#    4.0 = Wave height is two nodes.
#    0.0 = Wave doesn't move at all.
#    Default is 1.0 (1/2 node).
#    type: float min: 0 max: 4
# water_wave_height = 1.0

#    Length of liquid waves.
#    type: float min: 0.1
# water_wave_length = 20.0

#    How fast liquid waves will move. Higher = faster.
#    If negative, liquid waves will move backwards.
#    type: float
# water_wave_speed = 5.0

### Dynamic shadows

#    Set to true to enable Shadow Mapping.
#    type: bool
# enable_dynamic_shadows = false

#    Set the shadow strength gamma.
#    Adjusts the intensity of in-game dynamic shadows.
#    Lower value means lighter shadows, higher value means darker shadows.
#    type: float min: 0.1 max: 10
# shadow_strength_gamma = 1.0

#    Maximum distance to render shadows.
#    type: float min: 10 max: 1000
# shadow_map_max_distance = 140.0

#    Texture size to render the shadow map on.
#    This must be a power of two.
#    Bigger numbers create better shadows but it is also more expensive.
#    type: int min: 128 max: 8192
# shadow_map_texture_size = 2048

#    Sets shadow texture quality to 32 bits.
#    On false, 16 bits texture will be used.
#    This can cause much more artifacts in the shadow.
#    type: bool
# shadow_map_texture_32bit = true

#    Define shadow filtering quality.
#    This simulates the soft shadows effect by applying a PCF or Poisson disk
#    but also uses more resources.
#    type: enum values: 0, 1, 2
# shadow_filters = 1

#    Enable colored shadows for transculent nodes.
#    This is expensive.
#    type: bool
# shadow_map_color = false

#    Set the soft shadow radius size.
#    Lower values mean sharper shadows, bigger values mean softer shadows.
#    Minimum value: 1.0; maximum value: 15.0
#    type: float min: 1 max: 15
# shadow_soft_radius = 5.0

#    Set the default tilt of Sun/Moon orbit in degrees.
#    Games may change orbit tilt via API.
#    Value of 0 means no tilt / vertical orbit.
#    type: float min: -60 max: 60
# shadow_sky_body_orbit_tilt = 0.0

### Post Processing

#    Enables the post processing pipeline.
#    type: bool
# enable_post_processing = true

#    Enables Hable's 'Uncharted 2' filmic tone mapping.
#    Simulates the tone curve of photographic film and how this approximates the
#    appearance of high dynamic range images. Mid-range contrast is slightly
#    enhanced, highlights and shadows are gradually compressed.
#    type: bool
# tone_mapping = false

#    Enable automatic exposure correction
#    When enabled, the post-processing engine will
#    automatically adjust to the brightness of the scene,
#    simulating the behavior of human eye.
#    type: bool
# enable_auto_exposure = false

#    Set the exposure compensation in EV units.
#    Value of 0.0 (default) means no exposure compensation.
#    Range: from -1 to 1.0
#    type: float min: -1 max: 1
# exposure_compensation = 0.0

#    Apply dithering to reduce color banding artifacts.
#    Dithering significantly increases the size of losslessly-compressed
#    screenshots and it works incorrectly if the display or operating system
#    performs additional dithering or if the color channels are not quantized
#    to 8 bits.
#    With OpenGL ES, dithering only works if the shader supports high
#    floating-point precision and it may have a higher performance impact.
#    type: bool
# debanding = true

#    Set to true to enable bloom effect.
#    Bright colors will bleed over the neighboring objects.
#    type: bool
# enable_bloom = false

#    Set to true to enable volumetric lighting effect (a.k.a. "Godrays").
#    type: bool
# enable_volumetric_lighting = false

### Other Effects

#    Simulate translucency when looking at foliage in the sunlight.
#    type: bool
# enable_translucent_foliage = false

#    When enabled, liquid reflections are simulated.
#    type: bool
# enable_water_reflections = false

## Audio

#    Volume of all sounds.
#    Requires the sound system to be enabled.
#    type: float min: 0 max: 1
# sound_volume = 0.8

#    Volume multiplier when the window is unfocused.
#    type: float min: 0 max: 1
# sound_volume_unfocused = 0.3

#    Whether to mute sounds. You can unmute sounds at any time.
#    In-game, you can toggle the mute state with the mute key or by using the
#    pause menu.
#    type: bool
# mute_sound = false

## User Interfaces

#    Set the language. By default, the system language is used.
#    A restart is required after changing this.
#    type: enum values: , be, bg, ca, cs, da, de, el, en, eo, es, et, eu, fi, fr, gd, gl, hu, id, it, ja, jbo, kk, ko, lt, lv, ms, nb, nl, nn, pl, pt, pt_BR, ro, ru, sk, sl, sr_Cyrl, sr_Latn, sv, sw, tr, uk, vi, zh_CN, zh_TW
# language =

### GUI

#    When enabled, the GUI is optimized to be more usable on touchscreens.
#    Whether this is enabled by default depends on your hardware form-factor.
#    type: bool
# touch_gui = false

#    Scale GUI by a user specified value.
#    Use a nearest-neighbor-anti-alias filter to scale the GUI.
#    This will smooth over some of the rough edges, and blend
#    pixels when scaling down, at the cost of blurring some
#    edge pixels when images are scaled by non-integer sizes.
#    type: float min: 0.5 max: 20
# gui_scaling = 1.0

#    Enables smooth scrolling.
#    type: bool
# smooth_scrolling = true

#    Enables animation of inventory items.
#    type: bool
# inventory_items_animations = false

#    Formspec full-screen background opacity (between 0 and 255).
#    type: int min: 0 max: 255
# formspec_fullscreen_bg_opacity = 140

#    Formspec full-screen background color (R,G,B).
#    type: string
# formspec_fullscreen_bg_color = (0,0,0)

#    When gui_scaling_filter is true, all GUI images need to be
#    filtered in software, but some images are generated directly
#    to hardware (e.g. render-to-texture for nodes in inventory).
#    type: bool
# gui_scaling_filter = false

#    Delay showing tooltips, stated in milliseconds.
#    type: int min: 0
# tooltip_show_delay = 400

#    Append the full item name to the tooltip of item stacks.
#    type: bool
# tooltip_append_itemname = false

#    Use a cloud animation for the main menu background.
#    type: bool
# menu_clouds = true

#    Choose theme colors for the main menu background.
#    type: enum values: dark, light
# menu_theme = light

### HUD

#    Modifies the size of the HUD elements.
#    type: float min: 0.5 max: 20
# hud_scaling = 1.0

#    Whether name tag backgrounds should be shown by default.
#    Mods may still set a background.
#    type: bool
# show_nametag_backgrounds = true

#    Whether to show the client debug info (has the same effect as hitting F5).
#    type: bool
# show_debug = false

#    Radius to use when the block bounds HUD feature is set to near blocks.
#    type: int min: 0 max: 1000
# show_block_bounds_radius_near = 4

#    Maximum proportion of current window to be used for hotbar.
#    Useful if there's something to be displayed right or left of hotbar.
#    type: float min: 0.001 max: 1
# hud_hotbar_max_width = 1.0

### Chat

#    Maximum number of recent chat messages to show
#    type: int min: 2 max: 20
# recent_chat_messages = 6

#    In-game chat console height, between 0.1 (10%) and 1.0 (100%).
#    type: float min: 0.1 max: 1
# console_height = 0.6

#    In-game chat console background color (R,G,B).
#    type: string
# console_color = (0,0,0)

#    In-game chat console background alpha (opaqueness, between 0 and 255).
#    type: int min: 0 max: 255
# console_alpha = 200

#    Optional override for chat weblink color.
#    type: string
# chat_weblink_color = #8888FF

#    Font size of the recent chat text and chat prompt in point (pt).
#    Value 0 will use the default font size.
#    type: int min: 0 max: 72
# chat_font_size = 0

### Content Repository

#    The URL for the content repository
#    type: string
# contentdb_url = https://content.luanti.org

#    If enabled and you have ContentDB packages installed, Luanti may contact ContentDB to
#    check for package updates when opening the mainmenu.
#    type: bool
# contentdb_enable_updates_indicator = true

#    Comma-separated list of flags to hide in the content repository.
#    "nonfree" can be used to hide packages which do not qualify as 'free software',
#    as defined by the Free Software Foundation.
#    You can also specify content ratings.
#    These flags are independent from Luanti versions,
#    so see a full list at https://content.luanti.org/help/content_flags/
#    type: string
# contentdb_flag_blacklist = nonfree, desktop_default

#    Maximum number of concurrent downloads. Downloads exceeding this limit will be queued.
#    This should be lower than curl_parallel_limit.
#    type: int min: 1
# contentdb_max_concurrent_downloads = 3

#
# Client and Server
#

## Client

#    Save the map received by the client on disk.
#    type: bool
# enable_local_map_saving = false

#    URL to the server list displayed in the Multiplayer Tab.
#    type: string
# serverlist_url = https://servers.luanti.org

#    If enabled, server account registration is separate from login in the UI.
#    If disabled, connecting to a server will automatically register a new account.
#    type: bool
# enable_split_login_register = true

#    URL to JSON file which provides information about the newest Luanti release.
#    If this is empty the engine will never check for updates.
#    type: string
# update_information_url = https://www.luanti.org/release_info.json

## Server

#    Name of the player.
#    When running a server, a client connecting with this name is admin.
#    When starting from the main menu, this is overridden.
#    type: string
# name =

### Serverlist and MOTD

#    Name of the server, to be displayed when players join and in the serverlist.
#    type: string
# server_name = Luanti server

#    Description of server, to be displayed when players join and in the serverlist.
#    type: string
# server_description = mine here

#    Domain name of server, to be displayed in the serverlist.
#    type: string
# server_address = game.example.net

#    Homepage of server, to be displayed in the serverlist.
#    type: string
# server_url = https://game.example.net

#    Automatically report to the serverlist.
#    type: bool
# server_announce = false

#    Send names of online players to the serverlist. If disabled only the player count is revealed.
#    type: bool
# server_announce_send_players = true

#    Announce to this serverlist.
#    type: string
# serverlist_url = https://servers.luanti.org

#    Message of the day displayed to players connecting.
#    type: string
# motd =

#    Maximum number of players that can be connected simultaneously.
#    type: int min: 0 max: 65535
# max_users = 15

#    If this is set, players will always (re)spawn at the given position.
#    type: string
# static_spawnpoint =

### Networking

#    Network port to listen (UDP).
#    This value will be overridden when starting from the main menu.
#    type: int min: 1 max: 65535
# port = 30000

#    The network interface that the server listens on.
#    type: string
# bind_address =

#    Enable to disallow old clients from connecting.
#    Older clients are compatible in the sense that they will not crash when connecting
#    to new servers, but they may not support all new features that you are expecting.
#    type: bool
# strict_protocol_version_checking = false

#    Define the oldest clients allowed to connect.
#    Older clients are compatible in the sense that they will not crash when connecting
#    to new servers, but they may not support all new features that you are expecting.
#    This allows for more fine-grained control than strict_protocol_version_checking.
#    Luanti still enforces its own internal minimum, and enabling
#    strict_protocol_version_checking will effectively override this.
#    type: int min: 1 max: 65535
# protocol_version_min = 1

#    Specifies URL from which client fetches media instead of using UDP.
#    $filename should be accessible from $remote_media$filename via cURL
#    (obviously, remote_media should end with a slash).
#    Files that are not present will be fetched the usual way.
#    type: string
# remote_media =

#    Enable IPv6 support for server.
#    Note that clients will be able to connect with both IPv4 and IPv6.
#    Ignored if bind_address is set.
#    type: bool
# ipv6_server = true

## Server Security

#    New users need to input this password.
#    type: string
# default_password =

#    If enabled, players cannot join without a password or change theirs to an empty password.
#    type: bool
# disallow_empty_password = false

#    The privileges that new users automatically get.
#    See /privs in game for a full list on your server and mod configuration.
#    type: string
# default_privs = interact, shout

#    Privileges that players with basic_privs can grant
#    type: string
# basic_privs = interact, shout

#    Server anticheat configuration.
#    Flags are positive. Uncheck the flag to disable corresponding anticheat module.
#    type: flags possible values: digging, interaction, movement
# anticheat_flags = digging,interaction,movement

#    Tolerance of movement cheat detector.
#    Increase the value if players experience stuttery movement.
#    type: float min: 1
# anticheat_movement_tolerance = 1.0

### Client-side Modding

#    Restricts the access of certain client-side functions on servers.
#    Combine the byteflags below to restrict client-side features, or set to 0
#    for no restrictions:
#    LOAD_CLIENT_MODS: 1 (disable loading client-provided mods)
#    CHAT_MESSAGES: 2 (disable send_chat_message call client-side)
#    READ_ITEMDEFS: 4 (disable get_item_def call client-side)
#    READ_NODEDEFS: 8 (disable get_node_def call client-side)
#    LOOKUP_NODES_LIMIT: 16 (limits get_node call client-side to
#    csm_restriction_noderange)
#    READ_PLAYERINFO: 32 (disable get_player_names call client-side)
#    type: int min: 0 max: 63
# csm_restriction_flags = 62

#    If the CSM restriction for node range is enabled, get_node calls are limited
#    to this distance from the player to the node.
#    type: int min: 0 max: 4294967295
# csm_restriction_noderange = 0

### Chat

#    Remove color codes from incoming chat messages
#    Use this to stop players from being able to use color in their messages
#    type: bool
# strip_color_codes = true

#    Set the maximum length of a chat message (in characters) sent by clients.
#    type: int min: 10 max: 65535
# chat_message_max_size = 500

#    Number of messages a player may send per 10 seconds.
#    type: float min: 1
# chat_message_limit_per_10sec = 8.0

#    Kick players who sent more than X messages per 10 seconds.
#    type: int min: 1 max: 65535
# chat_message_limit_trigger_kick = 50

## Server Gameplay

#    Controls length of day/night cycle.
#    Examples:
#    72 = 20min, 360 = 4min, 1 = 24hour, 0 = day/night/whatever stays unchanged.
#    type: int min: 0
# time_speed = 72

#    Time of day when a new world is started, in millihours (0-23999).
#    type: int min: 0 max: 23999
# world_start_time = 6125

#    Time in seconds for item entity (dropped items) to live.
#    Setting it to -1 disables the feature.
#    type: int min: -1
# item_entity_ttl = 900

#    Specifies the default stack size of nodes, items and tools.
#    Note that mods or games may explicitly set a stack for certain (or all) items.
#    type: int min: 1 max: 65535
# default_stack_max = 99

### Physics

#    Horizontal and vertical acceleration on ground or when climbing,
#    in nodes per second per second.
#    type: float min: 0
# movement_acceleration_default = 3.0

#    Horizontal acceleration in air when jumping or falling,
#    in nodes per second per second.
#    type: float min: 0
# movement_acceleration_air = 2.0

#    Horizontal and vertical acceleration in fast mode,
#    in nodes per second per second.
#    type: float min: 0
# movement_acceleration_fast = 10.0

#    Walking and flying speed, in nodes per second.
#    type: float min: 0
# movement_speed_walk = 4.0

#    Sneaking speed, in nodes per second.
#    type: float min: 0
# movement_speed_crouch = 1.35

#    Walking, flying and climbing speed in fast mode, in nodes per second.
#    type: float min: 0
# movement_speed_fast = 20.0

#    Vertical climbing speed, in nodes per second.
#    type: float min: 0
# movement_speed_climb = 3.0

#    Initial vertical speed when jumping, in nodes per second.
#    type: float min: 0
# movement_speed_jump = 6.5

#    How much you are slowed down when moving inside a liquid.
#    Decrease this to increase liquid resistance to movement.
#    type: float min: 0.001
# movement_liquid_fluidity = 1.0

#    Maximum liquid resistance. Controls deceleration when entering liquid at
#    high speed.
#    type: float
# movement_liquid_fluidity_smooth = 0.5

#    Controls sinking speed in liquid when idling. Negative values will cause
#    you to rise instead.
#    type: float
# movement_liquid_sink = 10.0

#    Acceleration of gravity, in nodes per second per second.
#    type: float
# movement_gravity = 9.81

#
# Mapgen
#

#    A chosen map seed for a new map, leave empty for random.
#    Will be overridden when creating a new world in the main menu.
#    type: string
# fixed_map_seed =

#    Name of map generator to be used when creating a new world.
#    Creating a world in the main menu will override this.
#    Current mapgens in a highly unstable state:
#    -    The optional floatlands of v7 (disabled by default).
#    type: enum values: v7, valleys, carpathian, v5, flat, fractal, singlenode, v6
# mg_name = v7

#    Water surface level of the world.
#    type: int min: -31000 max: 31000
# water_level = 1

#    From how far blocks are generated for clients, stated in mapblocks (16 nodes).
#    type: int min: 1 max: 32767
# max_block_generate_distance = 10

#    Limit of map generation, in nodes, in all 6 directions from (0, 0, 0).
#    Only mapchunks completely within the mapgen limit are generated.
#    Value is stored per-world.
#    type: int min: 0 max: 31007
# mapgen_limit = 31007

#    Global map generation attributes.
#    In Mapgen v6 the 'decorations' flag controls all decorations except trees
#    and jungle grass, in all other mapgens this flag controls all decorations.
#    type: flags possible values: caves, dungeons, light, decorations, biomes, ores
# mg_flags = caves,dungeons,light,decorations,biomes,ores

## Biome API

#    Temperature variation for biomes.
#    type: noise_params_2d
# mg_biome_np_heat = {
#    offset      = 50,
#    scale       = 50,
#    spread      = (1000, 1000, 1000),
#    seed        = 5349,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Small-scale temperature variation for blending biomes on borders.
#    type: noise_params_2d
# mg_biome_np_heat_blend = {
#    offset      = 0,
#    scale       = 1.5,
#    spread      = (8, 8, 8),
#    seed        = 13,
#    octaves     = 2,
#    persistence = 1.0,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Humidity variation for biomes.
#    type: noise_params_2d
# mg_biome_np_humidity = {
#    offset      = 50,
#    scale       = 50,
#    spread      = (1000, 1000, 1000),
#    seed        = 842,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Small-scale humidity variation for blending biomes on borders.
#    type: noise_params_2d
# mg_biome_np_humidity_blend = {
#    offset      = 0,
#    scale       = 1.5,
#    spread      = (8, 8, 8),
#    seed        = 90003,
#    octaves     = 2,
#    persistence = 1.0,
#    lacunarity  = 2.0,
#    flags       = eased
# }

## Mapgen V5

#    Map generation attributes specific to Mapgen v5.
#    type: flags possible values: caverns
# mgv5_spflags = caverns

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgv5_cave_width = 0.09

#    Y of upper limit of large caves.
#    type: int min: -31000 max: 31000
# mgv5_large_cave_depth = -256

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgv5_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgv5_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgv5_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgv5_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgv5_large_cave_flooded = 0.5

#    Y-level of cavern upper limit.
#    type: int min: -31000 max: 31000
# mgv5_cavern_limit = -256

#    Y-distance over which caverns expand to full size.
#    type: int min: 0 max: 32767
# mgv5_cavern_taper = 256

#    Defines full size of caverns, smaller values create larger caverns.
#    type: float
# mgv5_cavern_threshold = 0.7

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv5_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv5_dungeon_ymax = 31000

### Noises

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgv5_np_filler_depth = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (150, 150, 150),
#    seed        = 261,
#    octaves     = 4,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of terrain vertical scale.
#    When noise is < -0.55 terrain is near-flat.
#    type: noise_params_2d
# mgv5_np_factor = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (250, 250, 250),
#    seed        = 920381,
#    octaves     = 3,
#    persistence = 0.45,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Y-level of average terrain surface.
#    type: noise_params_2d
# mgv5_np_height = {
#    offset      = 0,
#    scale       = 10,
#    spread      = (250, 250, 250),
#    seed        = 84174,
#    octaves     = 4,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgv5_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgv5_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining giant caverns.
#    type: noise_params_3d
# mgv5_np_cavern = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (384, 128, 384),
#    seed        = 723,
#    octaves     = 5,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining terrain.
#    type: noise_params_3d
# mgv5_np_ground = {
#    offset      = 0,
#    scale       = 40,
#    spread      = (80, 80, 80),
#    seed        = 983240,
#    octaves     = 4,
#    persistence = 0.55,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgv5_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

## Mapgen V6

#    Map generation attributes specific to Mapgen v6.
#    The 'snowbiomes' flag enables the new 5 biome system.
#    When the 'snowbiomes' flag is enabled jungles are automatically enabled and
#    the 'jungles' flag is ignored.
#    The 'temples' flag disables generation of desert temples. Normal dungeons will appear instead.
#    type: flags possible values: jungles, biomeblend, mudflow, snowbiomes, flat, trees, temples
# mgv6_spflags = jungles,biomeblend,mudflow,snowbiomes,noflat,trees,temples

#    Deserts occur when np_biome exceeds this value.
#    When the 'snowbiomes' flag is enabled, this is ignored.
#    type: float
# mgv6_freq_desert = 0.45

#    Sandy beaches occur when np_beach exceeds this value.
#    type: float
# mgv6_freq_beach = 0.15

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv6_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv6_dungeon_ymax = 31000

### Noises

#    Y-level of lower terrain and seabed.
#    type: noise_params_2d
# mgv6_np_terrain_base = {
#    offset      = -4,
#    scale       = 20,
#    spread      = (250, 250, 250),
#    seed        = 82341,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Y-level of higher terrain that creates cliffs.
#    type: noise_params_2d
# mgv6_np_terrain_higher = {
#    offset      = 20,
#    scale       = 16,
#    spread      = (500, 500, 500),
#    seed        = 85039,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Varies steepness of cliffs.
#    type: noise_params_2d
# mgv6_np_steepness = {
#    offset      = 0.85,
#    scale       = 0.5,
#    spread      = (125, 125, 125),
#    seed        = -932,
#    octaves     = 5,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines distribution of higher terrain.
#    type: noise_params_2d
# mgv6_np_height_select = {
#    offset      = 0.5,
#    scale       = 1,
#    spread      = (250, 250, 250),
#    seed        = 4213,
#    octaves     = 5,
#    persistence = 0.69,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Varies depth of biome surface nodes.
#    type: noise_params_2d
# mgv6_np_mud = {
#    offset      = 4,
#    scale       = 2,
#    spread      = (200, 200, 200),
#    seed        = 91013,
#    octaves     = 3,
#    persistence = 0.55,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines areas with sandy beaches.
#    type: noise_params_2d
# mgv6_np_beach = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (250, 250, 250),
#    seed        = 59420,
#    octaves     = 3,
#    persistence = 0.50,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Temperature variation for biomes.
#    type: noise_params_2d
# mgv6_np_biome = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (500, 500, 500),
#    seed        = 9130,
#    octaves     = 3,
#    persistence = 0.50,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of number of caves.
#    type: noise_params_2d
# mgv6_np_cave = {
#    offset      = 6,
#    scale       = 6,
#    spread      = (250, 250, 250),
#    seed        = 34329,
#    octaves     = 3,
#    persistence = 0.50,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Humidity variation for biomes.
#    type: noise_params_2d
# mgv6_np_humidity = {
#    offset      = 0.5,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 72384,
#    octaves     = 3,
#    persistence = 0.50,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines tree areas and tree density.
#    type: noise_params_2d
# mgv6_np_trees = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (125, 125, 125),
#    seed        = 2,
#    octaves     = 4,
#    persistence = 0.66,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines areas where trees have apples.
#    type: noise_params_2d
# mgv6_np_apple_trees = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (100, 100, 100),
#    seed        = 342902,
#    octaves     = 3,
#    persistence = 0.45,
#    lacunarity  = 2.0,
#    flags       = eased
# }

## Mapgen V7

#    Map generation attributes specific to Mapgen v7.
#    'ridges': Rivers.
#    'floatlands': Floating land masses in the atmosphere.
#    'caverns': Giant caves deep underground.
#    type: flags possible values: mountains, ridges, floatlands, caverns
# mgv7_spflags = mountains,ridges,nofloatlands,caverns

#    Y of mountain density gradient zero level. Used to shift mountains vertically.
#    type: int min: -31000 max: 31000
# mgv7_mount_zero_level = 0

#    Lower Y limit of floatlands.
#    type: int min: -31000 max: 31000
# mgv7_floatland_ymin = 1024

#    Upper Y limit of floatlands.
#    type: int min: -31000 max: 31000
# mgv7_floatland_ymax = 4096

#    Y-distance over which floatlands taper from full density to nothing.
#    Tapering starts at this distance from the Y limit.
#    For a solid floatland layer, this controls the height of hills/mountains.
#    Must be less than or equal to half the distance between the Y limits.
#    type: int min: 0 max: 32767
# mgv7_floatland_taper = 256

#    Exponent of the floatland tapering. Alters the tapering behavior.
#    Value = 1.0 creates a uniform, linear tapering.
#    Values > 1.0 create a smooth tapering suitable for the default separated
#    floatlands.
#    Values < 1.0 (for example 0.25) create a more defined surface level with
#    flatter lowlands, suitable for a solid floatland layer.
#    type: float
# mgv7_float_taper_exp = 2.0

#    Adjusts the density of the floatland layer.
#    Increase value to increase density. Can be positive or negative.
#    Value = 0.0: 50% of volume is floatland.
#    Value = 2.0 (can be higher depending on 'mgv7_np_floatland', always test
#    to be sure) creates a solid floatland layer.
#    type: float
# mgv7_floatland_density = -0.6

#    Surface level of optional water placed on a solid floatland layer.
#    Water is disabled by default and will only be placed if this value is set
#    to above 'mgv7_floatland_ymax' - 'mgv7_floatland_taper' (the start of the
#    upper tapering).
#    ***WARNING, POTENTIAL DANGER TO WORLDS AND SERVER PERFORMANCE***:
#    When enabling water placement, floatlands must be configured and tested
#    to be a solid layer by setting 'mgv7_floatland_density' to 2.0 (or other
#    required value depending on 'mgv7_np_floatland'), to avoid
#    server-intensive extreme water flow and to avoid vast flooding of the
#    world surface below.
#    type: int min: -31000 max: 31000
# mgv7_floatland_ywater = -31000

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgv7_cave_width = 0.09

#    Y of upper limit of large caves.
#    type: int min: -31000 max: 31000
# mgv7_large_cave_depth = -33

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgv7_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgv7_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgv7_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgv7_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgv7_large_cave_flooded = 0.5

#    Y-level of cavern upper limit.
#    type: int min: -31000 max: 31000
# mgv7_cavern_limit = -256

#    Y-distance over which caverns expand to full size.
#    type: int min: 0 max: 32767
# mgv7_cavern_taper = 256

#    Defines full size of caverns, smaller values create larger caverns.
#    type: float
# mgv7_cavern_threshold = 0.7

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv7_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgv7_dungeon_ymax = 31000

### Noises

#    Y-level of higher terrain that creates cliffs.
#    type: noise_params_2d
# mgv7_np_terrain_base = {
#    offset      = 4,
#    scale       = 70,
#    spread      = (600, 600, 600),
#    seed        = 82341,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Y-level of lower terrain and seabed.
#    type: noise_params_2d
# mgv7_np_terrain_alt = {
#    offset      = 4,
#    scale       = 25,
#    spread      = (600, 600, 600),
#    seed        = 5934,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Varies roughness of terrain.
#    Defines the 'persistence' value for terrain_base and terrain_alt noises.
#    type: noise_params_2d
# mgv7_np_terrain_persist = {
#    offset      = 0.6,
#    scale       = 0.1,
#    spread      = (2000, 2000, 2000),
#    seed        = 539,
#    octaves     = 3,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines distribution of higher terrain and steepness of cliffs.
#    type: noise_params_2d
# mgv7_np_height_select = {
#    offset      = -8,
#    scale       = 16,
#    spread      = (500, 500, 500),
#    seed        = 4213,
#    octaves     = 6,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgv7_np_filler_depth = {
#    offset      = 0,
#    scale       = 1.2,
#    spread      = (150, 150, 150),
#    seed        = 261,
#    octaves     = 3,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of maximum mountain height (in nodes).
#    type: noise_params_2d
# mgv7_np_mount_height = {
#    offset      = 256,
#    scale       = 112,
#    spread      = (1000, 1000, 1000),
#    seed        = 72449,
#    octaves     = 3,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Defines large-scale river channel structure.
#    type: noise_params_2d
# mgv7_np_ridge_uwater = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (1000, 1000, 1000),
#    seed        = 85039,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    3D noise defining mountain structure and height.
#    Also defines structure of floatland mountain terrain.
#    type: noise_params_3d
# mgv7_np_mountain = {
#    offset      = -0.6,
#    scale       = 1,
#    spread      = (250, 350, 250),
#    seed        = 5333,
#    octaves     = 5,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining structure of river canyon walls.
#    type: noise_params_3d
# mgv7_np_ridge = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (100, 100, 100),
#    seed        = 6467,
#    octaves     = 4,
#    persistence = 0.75,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining structure of floatlands.
#    If altered from the default, the noise 'scale' (0.7 by default) may need
#    to be adjusted, as floatland tapering functions best when this noise has
#    a value range of approximately -2.0 to 2.0.
#    type: noise_params_3d
# mgv7_np_floatland = {
#    offset      = 0,
#    scale       = 0.7,
#    spread      = (384, 96, 384),
#    seed        = 1009,
#    octaves     = 4,
#    persistence = 0.75,
#    lacunarity  = 1.618,
#    flags       =
# }

#    3D noise defining giant caverns.
#    type: noise_params_3d
# mgv7_np_cavern = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (384, 128, 384),
#    seed        = 723,
#    octaves     = 5,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgv7_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgv7_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgv7_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

## Mapgen Carpathian

#    Map generation attributes specific to Mapgen Carpathian.
#    type: flags possible values: caverns, rivers
# mgcarpathian_spflags = caverns,norivers

#    Defines the base ground level.
#    type: float
# mgcarpathian_base_level = 12.0

#    Defines the width of the river channel.
#    type: float
# mgcarpathian_river_width = 0.05

#    Defines the depth of the river channel.
#    type: float
# mgcarpathian_river_depth = 24.0

#    Defines the width of the river valley.
#    type: float
# mgcarpathian_valley_width = 0.25

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgcarpathian_cave_width = 0.09

#    Y of upper limit of large caves.
#    type: int min: -31000 max: 31000
# mgcarpathian_large_cave_depth = -33

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgcarpathian_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgcarpathian_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgcarpathian_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgcarpathian_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgcarpathian_large_cave_flooded = 0.5

#    Y-level of cavern upper limit.
#    type: int min: -31000 max: 31000
# mgcarpathian_cavern_limit = -256

#    Y-distance over which caverns expand to full size.
#    type: int min: 0 max: 32767
# mgcarpathian_cavern_taper = 256

#    Defines full size of caverns, smaller values create larger caverns.
#    type: float
# mgcarpathian_cavern_threshold = 0.7

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgcarpathian_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgcarpathian_dungeon_ymax = 31000

### Noises

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgcarpathian_np_filler_depth = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (128, 128, 128),
#    seed        = 261,
#    octaves     = 3,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    First of 4 2D noises that together define hill/mountain range height.
#    type: noise_params_2d
# mgcarpathian_np_height1 = {
#    offset      = 0,
#    scale       = 5,
#    spread      = (251, 251, 251),
#    seed        = 9613,
#    octaves     = 5,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Second of 4 2D noises that together define hill/mountain range height.
#    type: noise_params_2d
# mgcarpathian_np_height2 = {
#    offset      = 0,
#    scale       = 5,
#    spread      = (383, 383, 383),
#    seed        = 1949,
#    octaves     = 5,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Third of 4 2D noises that together define hill/mountain range height.
#    type: noise_params_2d
# mgcarpathian_np_height3 = {
#    offset      = 0,
#    scale       = 5,
#    spread      = (509, 509, 509),
#    seed        = 3211,
#    octaves     = 5,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Fourth of 4 2D noises that together define hill/mountain range height.
#    type: noise_params_2d
# mgcarpathian_np_height4 = {
#    offset      = 0,
#    scale       = 5,
#    spread      = (631, 631, 631),
#    seed        = 1583,
#    octaves     = 5,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the size/occurrence of rolling hills.
#    type: noise_params_2d
# mgcarpathian_np_hills_terrain = {
#    offset      = 1,
#    scale       = 1,
#    spread      = (1301, 1301, 1301),
#    seed        = 1692,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the size/occurrence of ridged mountain ranges.
#    type: noise_params_2d
# mgcarpathian_np_ridge_terrain = {
#    offset      = 1,
#    scale       = 1,
#    spread      = (1889, 1889, 1889),
#    seed        = 3568,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the size/occurrence of step mountain ranges.
#    type: noise_params_2d
# mgcarpathian_np_step_terrain = {
#    offset      = 1,
#    scale       = 1,
#    spread      = (1889, 1889, 1889),
#    seed        = 4157,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the shape/size of rolling hills.
#    type: noise_params_2d
# mgcarpathian_np_hills = {
#    offset      = 0,
#    scale       = 3,
#    spread      = (257, 257, 257),
#    seed        = 6604,
#    octaves     = 6,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the shape/size of ridged mountains.
#    type: noise_params_2d
# mgcarpathian_np_ridge_mnt = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (743, 743, 743),
#    seed        = 5520,
#    octaves     = 6,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that controls the shape/size of step mountains.
#    type: noise_params_2d
# mgcarpathian_np_step_mnt = {
#    offset      = 0,
#    scale       = 8,
#    spread      = (509, 509, 509),
#    seed        = 2590,
#    octaves     = 6,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    2D noise that locates the river valleys and channels.
#    type: noise_params_2d
# mgcarpathian_np_rivers = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (1000, 1000, 1000),
#    seed        = 85039,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    3D noise for mountain overhangs, cliffs, etc. Usually small variations.
#    type: noise_params_3d
# mgcarpathian_np_mnt_var = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (499, 499, 499),
#    seed        = 2490,
#    octaves     = 5,
#    persistence = 0.55,
#    lacunarity  = 2.0,
#    flags       =
# }

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgcarpathian_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgcarpathian_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining giant caverns.
#    type: noise_params_3d
# mgcarpathian_np_cavern = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (384, 128, 384),
#    seed        = 723,
#    octaves     = 5,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgcarpathian_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

## Mapgen Flat

#    Map generation attributes specific to Mapgen Flat.
#    Occasional lakes and hills can be added to the flat world.
#    type: flags possible values: lakes, hills, caverns
# mgflat_spflags = nolakes,nohills,nocaverns

#    Y of flat ground.
#    type: int min: -31000 max: 31000
# mgflat_ground_level = 8

#    Y of upper limit of large caves.
#    type: int min: -31000 max: 31000
# mgflat_large_cave_depth = -33

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgflat_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgflat_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgflat_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgflat_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgflat_large_cave_flooded = 0.5

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgflat_cave_width = 0.09

#    Terrain noise threshold for lakes.
#    Controls proportion of world area covered by lakes.
#    Adjust towards 0.0 for a larger proportion.
#    type: float
# mgflat_lake_threshold = -0.45

#    Controls steepness/depth of lake depressions.
#    type: float
# mgflat_lake_steepness = 48.0

#    Terrain noise threshold for hills.
#    Controls proportion of world area covered by hills.
#    Adjust towards 0.0 for a larger proportion.
#    type: float
# mgflat_hill_threshold = 0.45

#    Controls steepness/height of hills.
#    type: float
# mgflat_hill_steepness = 64.0

#    Y-level of cavern upper limit.
#    type: int min: -31000 max: 31000
# mgflat_cavern_limit = -256

#    Y-distance over which caverns expand to full size.
#    type: int min: 0 max: 32767
# mgflat_cavern_taper = 256

#    Defines full size of caverns, smaller values create larger caverns.
#    type: float
# mgflat_cavern_threshold = 0.7

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgflat_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgflat_dungeon_ymax = 31000

### Noises

#    Defines location and terrain of optional hills and lakes.
#    type: noise_params_2d
# mgflat_np_terrain = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (600, 600, 600),
#    seed        = 7244,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgflat_np_filler_depth = {
#    offset      = 0,
#    scale       = 1.2,
#    spread      = (150, 150, 150),
#    seed        = 261,
#    octaves     = 3,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgflat_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgflat_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise defining giant caverns.
#    type: noise_params_3d
# mgflat_np_cavern = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (384, 128, 384),
#    seed        = 723,
#    octaves     = 5,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgflat_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

## Mapgen Fractal

#    Map generation attributes specific to Mapgen Fractal.
#    'terrain' enables the generation of non-fractal terrain:
#    ocean, islands and underground.
#    type: flags possible values: terrain
# mgfractal_spflags = terrain

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgfractal_cave_width = 0.09

#    Y of upper limit of large caves.
#    type: int min: -31000 max: 31000
# mgfractal_large_cave_depth = -33

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgfractal_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgfractal_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgfractal_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgfractal_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgfractal_large_cave_flooded = 0.5

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgfractal_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgfractal_dungeon_ymax = 31000

#    Selects one of 18 fractal types.
#    1 = 4D "Roundy" Mandelbrot set.
#    2 = 4D "Roundy" Julia set.
#    3 = 4D "Squarry" Mandelbrot set.
#    4 = 4D "Squarry" Julia set.
#    5 = 4D "Mandy Cousin" Mandelbrot set.
#    6 = 4D "Mandy Cousin" Julia set.
#    7 = 4D "Variation" Mandelbrot set.
#    8 = 4D "Variation" Julia set.
#    9 = 3D "Mandelbrot/Mandelbar" Mandelbrot set.
#    10 = 3D "Mandelbrot/Mandelbar" Julia set.
#    11 = 3D "Christmas Tree" Mandelbrot set.
#    12 = 3D "Christmas Tree" Julia set.
#    13 = 3D "Mandelbulb" Mandelbrot set.
#    14 = 3D "Mandelbulb" Julia set.
#    15 = 3D "Cosine Mandelbulb" Mandelbrot set.
#    16 = 3D "Cosine Mandelbulb" Julia set.
#    17 = 4D "Mandelbulb" Mandelbrot set.
#    18 = 4D "Mandelbulb" Julia set.
#    type: int min: 1 max: 18
# mgfractal_fractal = 1

#    Iterations of the recursive function.
#    Increasing this increases the amount of fine detail, but also
#    increases processing load.
#    At iterations = 20 this mapgen has a similar load to mapgen V7.
#    type: int min: 1 max: 65535
# mgfractal_iterations = 11

#    (X,Y,Z) scale of fractal in nodes.
#    Actual fractal size will be 2 to 3 times larger.
#    These numbers can be made very large, the fractal does
#    not have to fit inside the world.
#    Increase these to 'zoom' into the detail of the fractal.
#    Default is for a vertically-squashed shape suitable for
#    an island, set all 3 numbers equal for the raw shape.
#    type: v3f
# mgfractal_scale = (4096.0, 1024.0, 4096.0)

#    (X,Y,Z) offset of fractal from world center in units of 'scale'.
#    Can be used to move a desired point to (0, 0) to create a
#    suitable spawn point, or to allow 'zooming in' on a desired
#    point by increasing 'scale'.
#    The default is tuned for a suitable spawn point for Mandelbrot
#    sets with default parameters, it may need altering in other
#    situations.
#    Range roughly -2 to 2. Multiply by 'scale' for offset in nodes.
#    type: v3f
# mgfractal_offset = (1.79, 0.0, 0.0)

#    W coordinate of the generated 3D slice of a 4D fractal.
#    Determines which 3D slice of the 4D shape is generated.
#    Alters the shape of the fractal.
#    Has no effect on 3D fractals.
#    Range roughly -2 to 2.
#    type: float
# mgfractal_slice_w = 0.0

#    Julia set only.
#    X component of hypercomplex constant.
#    Alters the shape of the fractal.
#    Range roughly -2 to 2.
#    type: float
# mgfractal_julia_x = 0.33

#    Julia set only.
#    Y component of hypercomplex constant.
#    Alters the shape of the fractal.
#    Range roughly -2 to 2.
#    type: float
# mgfractal_julia_y = 0.33

#    Julia set only.
#    Z component of hypercomplex constant.
#    Alters the shape of the fractal.
#    Range roughly -2 to 2.
#    type: float
# mgfractal_julia_z = 0.33

#    Julia set only.
#    W component of hypercomplex constant.
#    Alters the shape of the fractal.
#    Has no effect on 3D fractals.
#    Range roughly -2 to 2.
#    type: float
# mgfractal_julia_w = 0.33

### Noises

#    Y-level of seabed.
#    type: noise_params_2d
# mgfractal_np_seabed = {
#    offset      = -14,
#    scale       = 9,
#    spread      = (600, 600, 600),
#    seed        = 41900,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgfractal_np_filler_depth = {
#    offset      = 0,
#    scale       = 1.2,
#    spread      = (150, 150, 150),
#    seed        = 261,
#    octaves     = 3,
#    persistence = 0.7,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgfractal_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgfractal_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgfractal_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

## Mapgen Valleys

#    Map generation attributes specific to Mapgen Valleys.
#    'altitude_chill': Reduces heat with altitude.
#    'humid_rivers': Increases humidity around rivers.
#    'vary_river_depth': If enabled, low humidity and high heat causes rivers
#    to become shallower and occasionally dry.
#    'altitude_dry': Reduces humidity with altitude.
#    type: flags possible values: altitude_chill, humid_rivers, vary_river_depth, altitude_dry
# mgvalleys_spflags = altitude_chill,humid_rivers,vary_river_depth,altitude_dry

#    The vertical distance over which heat drops by 20 if 'altitude_chill' is
#    enabled. Also, the vertical distance over which humidity drops by 10 if
#    'altitude_dry' is enabled.
#    type: int min: 0 max: 65535
# mgvalleys_altitude_chill = 90

#    Depth below which you'll find large caves.
#    type: int min: -31000 max: 31000
# mgvalleys_large_cave_depth = -33

#    Minimum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgvalleys_small_cave_num_min = 0

#    Maximum limit of random number of small caves per mapchunk.
#    type: int min: 0 max: 256
# mgvalleys_small_cave_num_max = 0

#    Minimum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgvalleys_large_cave_num_min = 0

#    Maximum limit of random number of large caves per mapchunk.
#    type: int min: 0 max: 64
# mgvalleys_large_cave_num_max = 2

#    Proportion of large caves that contain liquid.
#    type: float min: 0 max: 1
# mgvalleys_large_cave_flooded = 0.5

#    Depth below which you'll find giant caverns.
#    type: int min: -31000 max: 31000
# mgvalleys_cavern_limit = -256

#    Y-distance over which caverns expand to full size.
#    type: int min: 0 max: 32767
# mgvalleys_cavern_taper = 192

#    Defines full size of caverns, smaller values create larger caverns.
#    type: float
# mgvalleys_cavern_threshold = 0.6

#    How deep to make rivers.
#    type: int min: 0 max: 65535
# mgvalleys_river_depth = 4

#    How wide to make rivers.
#    type: int min: 0 max: 65535
# mgvalleys_river_size = 5

#    Controls width of tunnels, a smaller value creates wider tunnels.
#    Value >= 10.0 completely disables generation of tunnels and avoids the
#    intensive noise calculations.
#    type: float
# mgvalleys_cave_width = 0.09

#    Lower Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgvalleys_dungeon_ymin = -31000

#    Upper Y limit of dungeons.
#    type: int min: -31000 max: 31000
# mgvalleys_dungeon_ymax = 63

### Noises

#    First of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgvalleys_np_cave1 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (61, 61, 61),
#    seed        = 52534,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Second of two 3D noises that together define tunnels.
#    type: noise_params_3d
# mgvalleys_np_cave2 = {
#    offset      = 0,
#    scale       = 12,
#    spread      = (67, 67, 67),
#    seed        = 10325,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Variation of biome filler depth.
#    type: noise_params_2d
# mgvalleys_np_filler_depth = {
#    offset      = 0,
#    scale       = 1.2,
#    spread      = (256, 256, 256),
#    seed        = 1605,
#    octaves     = 3,
#    persistence = 0.5,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    3D noise defining giant caverns.
#    type: noise_params_3d
# mgvalleys_np_cavern = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (768, 256, 768),
#    seed        = 59033,
#    octaves     = 6,
#    persistence = 0.63,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Defines large-scale river channel structure.
#    type: noise_params_2d
# mgvalleys_np_rivers = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (256, 256, 256),
#    seed        = -6050,
#    octaves     = 5,
#    persistence = 0.6,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Base terrain height.
#    type: noise_params_2d
# mgvalleys_np_terrain_height = {
#    offset      = -10,
#    scale       = 50,
#    spread      = (1024, 1024, 1024),
#    seed        = 5202,
#    octaves     = 6,
#    persistence = 0.4,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Raises terrain to make valleys around the rivers.
#    type: noise_params_2d
# mgvalleys_np_valley_depth = {
#    offset      = 5,
#    scale       = 4,
#    spread      = (512, 512, 512),
#    seed        = -1914,
#    octaves     = 1,
#    persistence = 1.0,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Slope and fill work together to modify the heights.
#    type: noise_params_3d
# mgvalleys_np_inter_valley_fill = {
#    offset      = 0,
#    scale       = 1,
#    spread      = (256, 512, 256),
#    seed        = 1993,
#    octaves     = 6,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

#    Amplifies the valleys.
#    type: noise_params_2d
# mgvalleys_np_valley_profile = {
#    offset      = 0.6,
#    scale       = 0.5,
#    spread      = (512, 512, 512),
#    seed        = 777,
#    octaves     = 1,
#    persistence = 1.0,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    Slope and fill work together to modify the heights.
#    type: noise_params_2d
# mgvalleys_np_inter_valley_slope = {
#    offset      = 0.5,
#    scale       = 0.5,
#    spread      = (128, 128, 128),
#    seed        = 746,
#    octaves     = 1,
#    persistence = 1.0,
#    lacunarity  = 2.0,
#    flags       = eased
# }

#    3D noise that determines number of dungeons per mapchunk.
#    type: noise_params_3d
# mgvalleys_np_dungeons = {
#    offset      = 0.9,
#    scale       = 0.5,
#    spread      = (500, 500, 500),
#    seed        = 0,
#    octaves     = 2,
#    persistence = 0.8,
#    lacunarity  = 2.0,
#    flags       =
# }

#
# Advanced
#

## Developer Options

#    Enable Lua modding support on client.
#    This support is experimental and API can change.
#    type: bool
# enable_client_modding = false

#    Where to enable server-sent client-side modding (SSCSM).
#    Warning: Experimental.
#    type: enum values: nowhere, singleplayer, localhost, lan, everywhere
# enable_sscsm = nowhere

#    Replaces the default main menu with a custom one.
#    type: string
# main_menu_script =

### Mod Security

#    Prevent mods from doing insecure things like running shell commands.
#    type: bool
# secure.enable_security = true

#    Comma-separated list of trusted mods that are allowed to access insecure
#    functions even when mod security is on (via request_insecure_environment()).
#    type: string
# secure.trusted_mods =

#    Comma-separated list of mods that are allowed to access HTTP APIs, which
#    allow them to upload and download data to/from the internet.
#    type: string
# secure.http_mods =

### Debugging

#    Level of logging to be written to debug.txt:
#    -    <nothing> (no logging)
#    -    none (messages with no level)
#    -    error
#    -    warning
#    -    action
#    -    info
#    -    verbose
#    -    trace
#    type: enum values: , none, error, warning, action, info, verbose, trace
# debug_log_level = action

#    If the file size of debug.txt exceeds the number of megabytes specified in
#    this setting when it is opened, the file is moved to debug.txt.1,
#    deleting an older debug.txt.1 if it exists.
#    debug.txt is only moved if this setting is positive.
#    type: int min: 1
# debug_log_size_max = 50

#    Minimal level of logging to be written to chat.
#    type: enum values: , none, error, warning, action, info, verbose, trace
# chat_log_level = error

#    Handling for deprecated Lua API calls:
#    -    none: Do not log deprecated calls
#    -    log: mimic and log backtrace of deprecated call (default).
#    -    error: abort on usage of deprecated call (suggested for mod developers).
#    type: enum values: none, log, error
# deprecated_lua_api_handling = log

#    Enable random user input (only used for testing).
#    type: bool
# random_input = false

#    Enable random mod loading (mainly used for testing).
#    type: bool
# random_mod_load_order = false

#    Enable mod channels support.
#    type: bool
# enable_mod_channels = false

### Mod Profiler

#    Load the game profiler to collect game profiling data.
#    Provides a /profiler command to access the compiled profile.
#    Useful for mod developers and server operators.
#    type: bool
# profiler.load = false

#    Disable if you only want to instrument with Tracy.
#    type: bool
# profiler.measure = true

#    Capture Tracy zones with the profiler's instrumentation.
#    You need to build with Tracy to use this, see doc/developing/profiling.md
#    for details.
#    type: bool
# profiler.tracy = false

#    The default format in which profiles are being saved,
#    when calling `/profiler save [format]` without format.
#    type: enum values: txt, csv, lua, json, json_pretty
# profiler.default_report_format = txt

#    The file path relative to your world path in which profiles will be saved to.
#    type: string
# profiler.report_path =

#    Instrument the methods of entities on registration.
#    type: bool
# instrument.entity = true

#    Instrument the action function of Active Block Modifiers on registration.
#    type: bool
# instrument.abm = true

#    Instrument the action function of Loading Block Modifiers on registration.
#    type: bool
# instrument.lbm = true

#    Instrument chat commands on registration.
#    type: bool
# instrument.chatcommand = true

#    Instrument global callback functions on registration.
#    (anything you pass to a core.register_*() function)
#    type: bool
# instrument.global_callback = true

#    Instrument builtin.
#    This is usually only needed by core/builtin contributors
#    type: bool
# instrument.builtin = false

#    Have the profiler instrument itself:
#    * Instrument an empty function.
#    This estimates the overhead, that instrumentation is adding (+1 function call).
#    * Instrument the sampler being used to update the statistics.
#    type: bool
# instrument.profiler = false

### Engine Profiler

#    Print the engine's profiling data in regular intervals (in seconds).
#    0 = disable. Useful for developers.
#    type: int min: 0
# profiler_print_interval = 0

## Advanced

### Graphics

#    Enables debug and error-checking in the OpenGL driver.
#    type: bool
# opengl_debug = false

#    Path to shader directory. If no path is defined, default location will be used.
#    type: path
# shader_path =

#    The rendering back-end.
#    Note: A restart is required after changing this!
#    By default OpenGL3 is preferred on desktop, or OGLES2 on Android.
#    type: enum values: , opengl, opengl3, ogles2
# video_driver =

#    Distance in nodes at which transparency depth sorting is enabled.
#    Use this to limit the performance impact of transparency depth sorting.
#    Set to 0 to disable it entirely.
#    type: int min: 0 max: 128
# transparency_sorting_distance = 16

#    Draw transparency sorted triangles grouped by their mesh buffers.
#    This breaks transparency sorting between mesh buffers, but avoids situations
#    where transparency sorting would be very slow otherwise.
#    type: bool
# transparency_sorting_group_by_buffers = true

#    Radius of cloud area stated in number of 64 node cloud squares.
#    Values larger than 26 will start to produce sharp cutoffs at cloud area corners.
#    type: int min: 8 max: 62
# cloud_radius = 12

#    Delay between mesh updates on the client in ms. Increasing this will slow
#    down the rate of mesh updates, which can help reduce jitter.
#    type: int min: 0 max: 25
# mesh_generation_interval = 0

#    Number of threads to use for mesh generation.
#    Value of 0 (default) will let Luanti automatically choose the number of threads.
#    type: int min: 0 max: 8
# mesh_generation_threads = 0

#    All mesh buffers with less than this number of vertices will be merged
#    during map rendering. This improves rendering performance.
#    type: int min: 0 max: 1000
# mesh_buffer_min_vertices = 300

#    True = 256
#    False = 128
#    Usable to make minimap smoother on slower machines.
#    type: bool
# minimap_double_scan_height = true

#    Textures on a node may be aligned either to the node or to the world.
#    The former mode suits better things like machines, furniture, etc., while
#    the latter makes stairs and microblocks fit surroundings better.
#    However, as this possibility is new, thus may not be used by older servers,
#    this option allows enforcing it for certain node types. Note though that
#    that is considered EXPERIMENTAL and may not work properly.
#    type: enum values: disable, enable, force_solid, force_nodebox
# world_aligned_mode = enable

#    World-aligned textures may be scaled to span several nodes. However,
#    the server may not send the scale you want, especially if you use
#    a specially-designed texture pack; with this option, the client tries
#    to determine the scale automatically based on the texture size.
#    See also texture_min_size.
#    Warning: This option is EXPERIMENTAL!
#    type: enum values: disable, enable, force
# autoscale_mode = disable

#    Caps the maximum number of layers used with array textures (if supported).
#    This is only useful for debugging.
#    type: int min: 0 max: 65535
# array_texture_max = 65535

#    When using bilinear/trilinear filtering, low-resolution textures
#    can be blurred, so this option automatically upscales them to preserve
#    crisp pixels. This defines the minimum texture size for the upscaled textures;
#    higher values look sharper, but require more memory.
#    This setting is ONLY applied if any of the mentioned filters are enabled.
#    This is also used as the base node texture size for world-aligned
#    texture autoscaling.
#    type: int min: 192 max: 16384
# texture_min_size = 192

#    Side length of a cube of map blocks that the client will consider together
#    when generating meshes.
#    Larger values increase the utilization of the GPU by reducing the number of
#    draw calls, benefiting especially high-end GPUs.
#    Systems with a low-end GPU (or no GPU) would benefit from smaller values.
#    type: int min: 1 max: 16
# client_mesh_chunk = 1

#    Decide the color depth of the texture used for the post-processing pipeline.
#    Reducing this can improve performance, but some effects (e.g. debanding)
#    require more than 8 bits to work.
#    type: enum values: 8, 10, 16
# post_processing_texture_bits = 16

#    Enable Poisson disk filtering.
#    On true uses Poisson disk to make "soft shadows". Otherwise uses PCF filtering.
#    type: bool
# shadow_poisson_filter = true

#    Spread a complete update of the shadow map over a given number of frames.
#    Higher values might make shadows laggy, lower values
#    will consume more resources.
#    type: int min: 1 max: 32
# shadow_update_frames = 16

#    Set to true to render debugging breakdown of the bloom effect.
#    In debug mode, the screen is split into 4 quadrants:
#    top-left - processed base image, top-right - final image
#    bottom-left - raw base image, bottom-right - bloom texture.
#    type: bool
# enable_bloom_debug = false

### Sound

#    Comma-separated list of AL and ALC extensions that should not be used.
#    Useful for testing. See al_extensions.[h,cpp] for details.
#    type: string
# sound_extensions_blacklist =

### Font

#    Font bold by default
#    type: bool
# font_bold = false

#    Font italic by default
#    type: bool
# font_italic = false

#    Shadow offset (in pixels) for all fonts. If 0, then no shadow will be drawn.
#    type: int min: 0 max: 255
# font_shadow = 1

#    Opaqueness (alpha) of the shadow behind the font.
#    type: int min: 0 max: 255
# font_shadow_alpha = 127

#    Font size of the default font where 1 unit = 1 pixel at 96 DPI
#    type: int min: 5 max: 72
# font_size = 16

#    For pixel-style fonts that do not scale well, this ensures that font sizes used
#    with this font will always be divisible by this value, in pixels. For instance,
#    a pixel font 16 pixels tall should have this set to 16, so it will only ever be
#    sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
#    type: int min: 1
# font_size_divisible_by = 1

#    Path to the default font. Must be a TrueType font.
#    The fallback font will be used if the font cannot be loaded.
#    type: filepath
# font_path = fonts/Arimo-Regular.ttf

#    Bold font path
#    type: filepath
# font_path_bold = fonts/Arimo-Bold.ttf

#    Italic font path
#    type: filepath
# font_path_italic = fonts/Arimo-Italic.ttf

#    Bold and italic font path
#    type: filepath
# font_path_bold_italic = fonts/Arimo-BoldItalic.ttf

#    Font size of the monospace font where 1 unit = 1 pixel at 96 DPI
#    type: int min: 5 max: 72
# mono_font_size = 16

#    For pixel-style fonts that do not scale well, this ensures that font sizes used
#    with this font will always be divisible by this value, in pixels. For instance,
#    a pixel font 16 pixels tall should have this set to 16, so it will only ever be
#    sized 16, 32, 48, etc., so a mod requesting a size of 25 will get 32.
#    type: int min: 1
# mono_font_size_divisible_by = 1

#    Path to the monospace font. Must be a TrueType font.
#    This font is used for e.g. the console and profiler screen.
#    type: filepath
# mono_font_path = fonts/Cousine-Regular.ttf

#    Bold monospace font path
#    type: filepath
# mono_font_path_bold = fonts/Cousine-Bold.ttf

#    Italic monospace font path
#    type: filepath
# mono_font_path_italic = fonts/Cousine-Italic.ttf

#    Bold and italic monospace font path
#    type: filepath
# mono_font_path_bold_italic = fonts/Cousine-BoldItalic.ttf

#    Path of the fallback font. Must be a TrueType font.
#    This font will be used for certain languages or if the default font is unavailable.
#    type: filepath
# fallback_font_path = fonts/DroidSansFallbackFull.ttf

### Lighting

#    Gradient of light curve at minimum light level.
#    Controls the contrast of the lowest light levels.
#    type: float min: 0 max: 3
# lighting_alpha = 0.0

#    Gradient of light curve at maximum light level.
#    Controls the contrast of the highest light levels.
#    type: float min: 0 max: 3
# lighting_beta = 1.5

#    Strength of light curve boost.
#    The 3 'boost' parameters define a range of the light
#    curve that is boosted in brightness.
#    type: float min: 0 max: 0.4
# lighting_boost = 0.2

#    Center of light curve boost range.
#    Where 0.0 is minimum light level, 1.0 is maximum light level.
#    type: float min: 0 max: 1
# lighting_boost_center = 0.5

#    Spread of light curve boost range.
#    Controls the width of the range to be boosted.
#    Standard deviation of the light curve boost Gaussian.
#    type: float min: 0 max: 0.4
# lighting_boost_spread = 0.2

### Networking

#    Enable IPv6 support (for both client and server).
#    Required for IPv6 connections to work at all.
#    type: bool
# enable_ipv6 = true

#    Prometheus listener address.
#    If Luanti is compiled with Prometheus support, this setting
#    enables the metrics listener for Prometheus on that address.
#    By default you can fetch metrics from http://127.0.0.1:30000/metrics.
#    An empty value disables the metrics listener.
#    type: string
# prometheus_listener_address = 127.0.0.1:30000

#    Maximum size of the client's outgoing chat queue.
#    0 to disable queueing and -1 to make the queue size unlimited.
#    type: int min: -1 max: 32767
# max_out_chat_queue_size = 20

#    Timeout for client to remove unused map data from memory, in seconds.
#    type: float min: 0
# client_unload_unused_data_timeout = 600.0

#    Maximum number of mapblocks for client to be kept in memory.
#    Note that there is an internal dynamic minimum number of blocks that
#    won't be deleted, depending on the current view range.
#    Set to -1 for no limit.
#    type: int min: -1 max: 2147483647
# client_mapblock_limit = 7500

#    Maximum number of blocks that are simultaneously sent per client.
#    The maximum total count is calculated dynamically:
#    max_total = ceil((#clients + max_users) * per_client / 4)
#    type: int min: 1
# max_simultaneous_block_sends_per_client = 40

#    To save bandwidth, block transfers are slowed down when a player is building something.
#    This determines how long the throttling lasts after placing a node.
#    type: float min: 0
# full_block_send_enable_min_time_from_building = 2.0

#    Maximum number of packets sent per send step in the low-level networking code.
#    You generally don't need to change this, however busy servers may benefit from a higher number.
#    type: int min: 1 max: 65535
# max_packets_per_iteration = 1024

#    Compression level to use when sending mapblocks to the client.
#    -1 - use default compression level
#    0 - least compression, fastest
#    9 - best compression, slowest
#    type: int min: -1 max: 9
# map_compression_level_net = -1

### Server

#    Format of player chat messages. The following strings are valid placeholders:
#    @name, @message, @timestamp (optional)
#    type: string
# chat_message_format = <@name> @message

#    If the execution of a chat command takes longer than this specified time in
#    seconds, add the time information to the chat command message
#    type: float min: 0
# chatcommand_msg_time_threshold = 0.1

#    A message to be displayed to all clients when the server shuts down.
#    type: string
# kick_msg_shutdown = Server shutting down.

#    A message to be displayed to all clients when the server crashes.
#    type: string
# kick_msg_crash = This server has experienced an internal error. You will now be disconnected.

#    Whether to ask clients to reconnect after a (Lua) crash.
#    Set this to true if your server is set up to restart automatically.
#    type: bool
# ask_reconnect_on_crash = false

#    If enabled, node and inventory actions are recorded for rollback.
#    This option is only read on server start. Note that the engine will not
#    automatically clean old entries from the rollback database.
#    type: bool
# enable_rollback_recording = false

### Server/Env Performance

#    Length of a server tick (the interval at which everything is generally updated),
#    stated in seconds.
#    Does not apply to sessions hosted from the client menu.
#    This is a lower bound, i.e. server steps may not be shorter than this, but
#    they are often longer.
#    type: float min: 0 max: 1
# dedicated_server_step = 0.09

#    Whether players are shown to clients without any range limit.
#    Deprecated, use the setting player_transfer_distance instead.
#    type: bool
# unlimited_player_transfer_distance = true

#    Defines the maximal player transfer distance in blocks (0 = unlimited).
#    type: int min: 0 max: 65535
# player_transfer_distance = 0

#    From how far clients know about objects, stated in mapblocks (16 nodes).
#
#    Setting this larger than active_block_range will also cause the server
#    to maintain active objects up to this distance in the direction the
#    player is looking. (This can avoid mobs suddenly disappearing from view)
#    type: int min: 1 max: 65535
# active_object_send_range_blocks = 8

#    The radius of the volume of blocks around every player that is subject to the
#    active block stuff, stated in mapblocks (16 nodes).
#    In active blocks objects are loaded and ABMs run.
#    This is also the minimum range in which active objects (mobs) are maintained.
#    This should be configured together with active_object_send_range_blocks.
#    type: int min: 1 max: 65535
# active_block_range = 4

#    From how far blocks are sent to clients, stated in mapblocks (16 nodes).
#    type: int min: 1 max: 65535
# max_block_send_distance = 12

#    Default maximum number of forceloaded mapblocks.
#    Set this to -1 to disable the limit.
#    type: int min: -1
# max_forceloaded_blocks = 16

#    Interval of saving important changes in the world, stated in seconds.
#    type: float min: 0.001
# server_map_save_interval = 5.3

#    How long the server will wait before unloading unused mapblocks, stated in seconds.
#    Higher value is smoother, but will use more RAM.
#    type: int min: 0 max: 4294967295
# server_unload_unused_data_timeout = 29

#    Maximum number of statically stored objects in a block.
#    type: int min: 256 max: 65535
# max_objects_per_block = 256

#    Length of time between active block management cycles, stated in seconds.
#    type: float min: 0
# active_block_mgmt_interval = 2.0

#    Length of time between Active Block Modifier (ABM) execution cycles, stated in seconds.
#    type: float min: 0.1 max: 30
# abm_interval = 1.0

#    The time budget allowed for ABMs to execute on each step
#    (as a fraction of the ABM Interval)
#    type: float min: 0.1 max: 0.9
# abm_time_budget = 0.2

#    Length of time between NodeTimer execution cycles, stated in seconds.
#    type: float min: 0.1 max: 1
# nodetimer_interval = 0.2

#    Max liquids processed per step.
#    type: int min: 1 max: 4294967295
# liquid_loop_max = 100000

#    The time (in seconds) that the liquids queue may grow beyond processing
#    capacity until an attempt is made to decrease its size by dumping old queue
#    items.  A value of 0 disables the functionality.
#    type: int min: 0 max: 65535
# liquid_queue_purge_time = 0

#    Liquid update interval in seconds.
#    type: float min: 0.001
# liquid_update = 1.0

#    At this distance the server will aggressively optimize which blocks are sent to
#    clients.
#    Small values potentially improve performance a lot, at the expense of visible
#    rendering glitches (some blocks might not be rendered correctly in caves).
#    Setting this to a value greater than max_block_send_distance disables this
#    optimization.
#    Stated in MapBlocks (16 nodes).
#    type: int min: 2 max: 2047
# block_send_optimize_distance = 4

#    If enabled, the server will perform map block occlusion culling based on
#    on the eye position of the player. This can reduce the number of blocks
#    sent to the client by 50-80%. Clients will no longer receive most
#    invisible blocks, so that the utility of noclip mode is reduced.
#    type: bool
# server_side_occlusion_culling = true

#    At this distance the server will perform a simpler and cheaper occlusion check.
#    Smaller values potentially improve performance, at the expense of temporarily visible
#    rendering glitches (missing blocks).
#    This is especially useful for very large viewing range (upwards of 500).
#    Stated in MapBlocks (16 nodes).
#    type: int min: 2 max: 2047
# block_cull_optimize_distance = 25

### Mapgen

#    Size of mapchunks generated by mapgen, stated in mapblocks (16 nodes).
#    WARNING: There is no benefit, and there are several dangers, in
#    increasing this value above 5.
#    Reducing this value increases cave and dungeon density.
#    Altering this value is for special usage, leaving it unchanged is
#    recommended.
#    type: int min: 1 max: 10
# chunksize = 5

#    Dump the mapgen debug information.
#    type: bool
# enable_mapgen_debug_info = false

#    Maximum number of blocks that can be queued for loading.
#    type: int min: 1 max: 1000000
# emergequeue_limit_total = 1024

#    Maximum number of blocks to be queued that are to be loaded from file.
#    This limit is enforced per player.
#    type: int min: 1 max: 1000000
# emergequeue_limit_diskonly = 128

#    Maximum number of blocks to be queued that are to be generated.
#    This limit is enforced per player.
#    type: int min: 1 max: 1000000
# emergequeue_limit_generate = 128

#    Number of emerge threads (responsible for map generation and loading) to use.
#    If 0 then the engine will automatically choose a suitable value depending
#    on the hardware and type of map generator.
#    WARNING: There are known bugs in the default map generators (v6, v7, ...)
#    when using more than 1 thread. The automatic choice will avoid this.
#    type: int min: 0 max: 32767
# num_emerge_threads = 0

### cURL

#    Maximum time an interactive request (e.g. server list fetch) may take, stated in milliseconds.
#    type: int min: 1000 max: 2147483647
# curl_timeout = 20000

#    Set proxy to use by cURL. This is an URI just like the *_proxy environment variables.
#    Note that this will not apply to Luanti's in-game protocol.
#    type: string
# secure.curl_proxy =

#    Limits number of parallel HTTP requests. Affects:
#    -    Media fetch if server uses remote_media setting.
#    -    Serverlist download and server announcement.
#    -    Downloads performed by main menu (e.g. mod manager).
#    Only has an effect if compiled with cURL.
#    type: int min: 1 max: 2147483647
# curl_parallel_limit = 8

#    Maximum time a file download (e.g. a mod download) may take, stated in milliseconds.
#    type: int min: 5000 max: 2147483647
# curl_file_download_timeout = 300000

### Client Debugging

#    Key for toggling the camera update. Only usable with 'debug' privilege.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_toggle_update_camera =

#    Key for switching to the previous entry in Quicktune.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_quicktune_prev =

#    Key for switching to the next entry in Quicktune.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_quicktune_next =

#    Key for decrementing the selected value in Quicktune.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_quicktune_dec =

#    Key for incrementing the selected value in Quicktune.
#    See https://docs.luanti.org/for-players/controls/
#    type: key
# keymap_quicktune_inc =

### Miscellaneous

#    Clickable weblinks (middle-click or Ctrl+left-click) enabled in chat console output.
#    type: bool
# clickable_chat_weblinks = true

#    If enabled, invalid world data won't cause the server to shut down.
#    Only enable this if you know what you are doing.
#    type: bool
# ignore_world_load_errors = false

#    Adjust the detected display density, used for scaling UI elements.
#    type: float min: 0.5 max: 5
# display_density_factor = 1

#    Windows systems only: Start Luanti with the command line window in the background.
#    Contains the same information as the file debug.txt (default name).
#    type: bool
# enable_console = false

#    Number of extra blocks that can be loaded by /clearobjects at once.
#    This is a trade-off between SQLite transaction overhead and
#    memory consumption (4096=100MB, as a rule of thumb).
#    type: int min: 0 max: 4294967295
# max_clearobjects_extra_loaded_blocks = 4096

#    World directory (everything in the world is stored here).
#    Not needed if starting from the main menu.
#    type: path
# map-dir =

#    See https://www.sqlite.org/pragma.html#pragma_synchronous
#    type: enum values: 0, 1, 2
# sqlite_synchronous = 2

#    Compression level to use when saving mapblocks to disk.
#    -1 - use default compression level
#    0 - least compression, fastest
#    9 - best compression, slowest
#    type: int min: -1 max: 9
# map_compression_level_disk = -1

#    Enable usage of remote media server (if provided by server).
#    Remote servers offer a significantly faster way to download media (e.g. textures)
#    when connecting to the server.
#    type: bool
# enable_remote_media_server = true

#    File in client/serverlist/ that contains your favorite servers displayed in the
#    Multiplayer Tab.
#    type: string
# serverlist_file = favoriteservers.json

## Gamepads

#    Enable joysticks. Requires a restart to take effect
#    type: bool
# enable_joysticks = false

#    The identifier of the joystick to use
#    type: int min: 0 max: 255
# joystick_id = 0

#    The type of joystick
#    type: enum values: auto, generic, xbox, ps5, dragonrise_gamecube
# joystick_type = auto

#    The time in seconds it takes between repeated events
#    when holding down a joystick button combination.
#    type: float min: 0.001
# repeat_joystick_button_time = 0.17

#    The dead zone of the joystick
#    type: int min: 0 max: 65535
# joystick_deadzone = 2048

#    The sensitivity of the joystick axes for moving the
#    in-game view frustum around.
#    type: float min: 0.001
# joystick_frustum_sensitivity = 170.0

## Hide: Temporary Settings

#    Path to texture directory. All textures are first searched from here.
#    type: path
# texture_path =

#    Enables minimap.
#    type: bool
# enable_minimap = true

#    Shape of the minimap. Enabled = round, disabled = square.
#    type: bool
# minimap_shape_round = true

#    Address to connect to.
#    Leave this blank to start a local server.
#    Note that the address field in the main menu overrides this setting.
#    type: string
# address =

#    Port to connect to (UDP).
#    Note that the port field in the main menu overrides this setting.
#    type: int min: 1 max: 65535
# remote_port = 30000

#    Enable players getting damage and dying.
#    type: bool
# enable_damage = false

#    Enable creative mode for all players
#    type: bool
# creative_mode = false

#    Whether to allow players to damage and kill each other.
#    type: bool
# enable_pvp = true

#    Player is able to fly without being affected by gravity.
#    This requires the "fly" privilege on the server.
#    type: bool
# free_move = false

#    If enabled, makes move directions relative to the player's pitch when flying or swimming.
#    type: bool
# pitch_move = false

#    Fast movement (via the "Aux1" key).
#    This requires the "fast" privilege on the server.
#    type: bool
# fast_move = false

#    If enabled together with fly mode, player is able to fly through solid nodes.
#    This requires the "noclip" privilege on the server.
#    type: bool
# noclip = false

#    Continuous forward movement, toggled by autoforward key.
#    Press the autoforward key again or the backwards movement to disable.
#    type: bool
# continuous_forward = false

#    This can be bound to a key to toggle camera smoothing when looking around.
#    Useful for recording videos
#    type: bool
# cinematic = false

#    Affects mods and texture packs in the Content and Select Mods menus, as well as
#    setting names.
#    Controlled by a checkbox in the settings menu.
#    type: bool
# show_technical_names = false

#    Controlled by a checkbox in the settings menu.
#    type: bool
# show_advanced = false

