# Configuration file

~CONFIG_VERSION: 0.3.3.2-14-g8fcebde

##########################################################################################################
# _categories
#--------------------------------------------------------------------------------------------------------#
# In this config file, every feature toggle has the name of '_enabled'.
# A feature toggle can be set to the following values. If a different value is provided, the setting will be reverted to the default setting on next start.
# * false: Disable the feature
# * true: Enable the feature if it doesn't cause an incompatibility
# * force: Enable feature unconditionally (for special use cases)
# 
# For convenience, the '_categories' category contains toggles that can be used to disable all features in a category.
##########################################################################################################

_categories {
    # Set this to false to disable all features in the 'bugfixes' category. [default: true]
    B:enableBugfixes=true

    # Set this to false to disable all features in the 'diagnostics' category. [default: true]
    B:enableDiagnostics=true

    # Set this to false to disable all features in the 'optimizations' category. [default: true]
    B:enableOptimizations=true

    # Set this to false to disable all features in the 'tweaks' category. [default: true]
    B:enableTweaks=true
}


bugfixes {

    fix_display_list_delete {
        # Fixes graphical glitches that happen after recovering from a game crash, caused by world renderer display lists getting deleted but never reallocated. From 1.12. [default: true]
        S:_enabled=true
    }

    fix_double_eat {
        # Fixes an extra food item sometimes getting silently consumed (MC-849) [default: true]
        S:_enabled=true
    }

    fix_entity_tracking {
        # Backports most of https://github.com/MinecraftForge/MinecraftForge/pull/5160, a patch that fixes minecarts duplicating and vanishing. [default: true]
        S:_enabled=true
    }

    fix_forge_chat_link_crash {
        # Fixes crash when certain invalid URLs appear in chat.
        # Compatibility note: Not compatible with `fixUrlDetection` in Hodgepodge 1.6.14 and higher, which does the same (this feature will be disabled). [default: true]
        S:_enabled=true
    }

    fix_heightmap_range {
        # Fixes heightmap calculation not including the top layer of 16x16x16 regions, causing lighting errors (MC-7508)
        # Compatibility note: Not compatible with LUMINA, which ostensibly accomplishes the same thing (this feature will be disabled). [default: true]
        S:_enabled=true
    }

    fix_intel_rendering {
        # Fixes rendering bug that causes the entire screen to get filled with a single color when using Intel drivers. Thanks to PheonixVX and TheMasterCaver for identifying the reason. [default: true]
        S:_enabled=true

        # Fix the rendering issue in an alternate, more intrusive way, which is how the fix was originally prescribed. Try enabling this if the issue still happens. [default: false]
        B:useAlternateIntelRenderingFix=false
    }

    fix_small_entity_swim {
        # Fixes bug in entity swimming code resulting in small entities (ones with hitboxes less than 0.8 units tall, such as DMod's foxes) being prone to drowning. [default: true]
        S:_enabled=true
    }

    forge_fix_logger_class_loading_error {
        # Fixes the NoClassDefFoundError that can occur when FML logs an exception originating from a coremod, losing the original exception in the process. This ostensibly happens due to a bug in the version of log4j that 1.7.10 ships with. [default: true]
        S:_enabled=true
    }

    gui_click_sound {
        # Fixes click sounds not playing in guis with scroll bars (e.g. the video settings screen). [default: true]
        S:_enabled=true
    }

    restore_travel_sound {
        # Restore interdimensional travel sound (travel.ogg). Fixes MC-233, fixed in 1.9 [default: true]
        S:_enabled=true
    }

    use_spawn_type_for_mob_cap {
        # Use the spawn type of mobs to determine which mob cap they should count towards, rather than their class. Fixes aquatic mobs spawning endlessly with certain mods. [default: false]
        S:_enabled=true
    }

}


diagnostics {

    detect_data_watcher_id_conflicts {
        # Emit warning when a mod registers a typed DataWatcher object in an already occupied ID slot (vanilla only warns in the typeless registration method). [default: true]
        S:_enabled=true

        # Keep track of all registration stack traces, and print which ones conflict. Off by default because it adds some overhead to DataWatcher object registration. [default: false]
        B:detectDataWatcherIdConflictCulprit=false
    }

    enhance_map_storage_errors {
        # Makes MapStorage's errors more informative. [default: true]
        S:_enabled=true
    }

}


optimizations {

    exclude_library_transformation {
        # Exclude libraries from being transformed. Speeds up startup slightly. This will break any mods that try to transform these libraries, though that's fairly unlikely. [default: true]
        S:_enabled=true

        # Packages that should be added as class transformer exclusions.
        # (This list will be reset every time the config is loaded if the first element is ':resetOnLoad') [default: [:resetOnLoad], [com.google.gson.], [joptsimple.], [io.netty.], [gnu.trove.], [kotlin.]]
        S:excludeLibraryTransformationPackages <
            :resetOnLoad
            com.google.gson.
            joptsimple.
            io.netty.
            gnu.trove.
            kotlin.
         >
    }

    fast_default_resource_pack {
        # Cache the folders contained in DefaultResourcePacks. Makes the biggest difference in dev environments and on slow file systems (looking at you Windows). [default: true]
        S:_enabled=true
    }

    fast_folder_resource_pack {
        # Cache the file paths contained in folder resource packs. Eliminates the immense slowdown they add to the loading of large modpacks. [default: true]
        S:_enabled=true
    }

    forge_fast_deobfuscation_remapper {
        # Reduces the unnecessary work FMLDeobfuscationRemapper does when we are in a deobfuscated (i.e. development) environment. [default: true]
        S:_enabled=true
    }

    forge_fast_progress_bar {
        # Don't update progress bar on steps. Only active if splash is disabled. [default: true]
        S:_enabled=true
    }

    forge_fast_step_message_strip {
        # Don't strip unusual characters from bar step messages. Only active if splash is disabled. [default: true]
        S:_enabled=true
    }

    forge_fast_wildcard_transformers {
        # Makes Forge's wildcard class transformers (FluidIdTransformer and SideTransformer) more efficient. Might break mods that interact with the transformer list. [default: true]
        S:_enabled=true
    }

    forge_mod_discoverer_skip_known_libraries {
        # Skip over known libraries during Forge mod discovery. From Forge 1.12 (added in 1.9) [default: true]
        S:_enabled=true
    }

    jar_discoverer_cache {
        # Cache jar discoverer results (and fix a memory leak as a nice bonus).
        # Compatibility note: Not compatible with `jarDiscovererMemoryLeakFix` in FoamFix, which is a subset of this fix (we will attempt to disable their feature - if this fails, this feature will be disabled). [default: true]
        S:_enabled=true

        # Maximum age (in runs) of elements in cache. If an element hasn't been used for more than this many runs, it will be discarded. Set to -1 for no limit. [range: -1 ~ 2147483647, default: 8]
        I:jarDiscovererCacheMaxAge=8
    }

    optimize_get_pending_block_updates {
        # Optimizes WorldServer#getPendingBlockUpdates. Speeds up chunk unloading.
        # Compatibility note: Not compatible with OptiFine, which does the same thing (this feature will be disabled). [default: true]
        S:_enabled=false
    }

    tcp_no_delay {
        # Sets TCP_NODELAY to true, reducing network latency in multiplayer. Works on server as well as client. From Minecraft 1.12 (added in 1.8.1). [default: true]
        S:_enabled=true
    }

    transformer_cache {
        # Enable class transformer cache. [default: true]
        S:_enabled=true

        # The type of transformer caching to use.
        # * LITE: Cache individual transformations of select transformers. Reduces startup time. Safe.
        # * FULL: Cache the entire transformer chain. Reduces startup time further, but breaks with many mods. [default: LITE]
        S:transformerCacheMode=LITE

        ##########################################################################################################
        # full
        #--------------------------------------------------------------------------------------------------------#
        # Options for the full caching class transformer. (only appliable if it's enabled)
        ##########################################################################################################

        full {
            # Sometimes caching classes can cause problems. Classes in this list will not be cached.
            #  [default: net.eq2online.macros.permissions.MacroModPermissions]
            S:badClasses=net.eq2online.macros.permissions.MacroModPermissions

            # Comma-separated list of transformers for which the view of the transformer chain should be restored.
            # 
            # The caching class transformer replaces the transformer chain with just itself. This creates conflicts with certain other transformers which also access the transformer chain, which can result in the game crashing.
            # To solve this, our transformer will restore the view of the transformer chain while these transformers are running.
            # 
            # How to find bad transformers? If you see another transformer's name in your crash log, or see its name in one of the iterator stack traces printed in debug mode, adding it to this list may solve the problem.
            #  [default: org.spongepowered.asm.mixin.transformer.Proxy,appeng.transformer.asm.ApiRepairer,com.mumfrey.liteloader.transformers.ClassOverlayTransformer+]
            S:badTransformers=org.spongepowered.asm.mixin.transformer.Proxy,appeng.transformer.asm.ApiRepairer,com.mumfrey.liteloader.transformers.ClassOverlayTransformer+

            # Comma-separated list of mod files to ignore modifications of when deciding if a cache rebuild should be triggered.
            # If your cache keeps getting rebuilt even though you haven't changed any mods, look for deranged mod files and add them to this list. [default: CMD files.jar]
            S:modFilesToIgnore=CMD files.jar

            # Cached class bytecode is removed from memory after being used, but the most recent N are kept around because the same class is often transformed more than once. This option sets the value of that N.
            # (Set to -1 to keep class bytecode in RAM forever) [range: -1 ~ 2147483647, default: 512]
            I:recentCacheSize=512

            # * 0: Only print the essential messages.
            # * 1: Print when the cache gets saved.
            # * 2: Debug mode. Turn this on to log a bunch of stuff that can help find the cause of a crash. [range: 0 ~ 2, default: 1]
            I:verbosity=1
        }

        ##########################################################################################################
        # lite
        #--------------------------------------------------------------------------------------------------------#
        # Options for the lite caching class transformer. (only appliable if it's enabled)
        ##########################################################################################################

        lite {
            # Initialize later using a safer method. Might improve compatibility at the cost of not caching early transformations. [default: false]
            B:lateLiteTransformerCache=false

            # Maximum size (in MB) of cache. If the cache grows larger than this, the least recently used entries will be discarded. Set to -1 for no limit. [range: -1 ~ 2147483647, default: 128]
            I:liteTransformerCacheMaxSizeMB=128

            # Canonical class names of the transformers that should be cached. [default: [cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer], [codechicken.core.asm.MCPDeobfuscationTransformer], [net.minecraftforge.classloading.FluidIdTransformer], [cpw.mods.fml.common.asm.transformers.SideTransformer], [cpw.mods.fml.common.asm.transformers.TerminalTransformer]]
            S:transformersToCache <
                cpw.mods.fml.common.asm.transformers.DeobfuscationTransformer
                codechicken.core.asm.MCPDeobfuscationTransformer
                net.minecraftforge.classloading.FluidIdTransformer
                cpw.mods.fml.common.asm.transformers.SideTransformer
                cpw.mods.fml.common.asm.transformers.TerminalTransformer
             >

            # Only store the difference made by a transformation rather than the entire result.
            # Greatly reduces cache size (by ~40-70%) but makes transformation slightly (~25%) slower in the cached case and ~50-100% slower when the cache is first created.
            # Disable this if you want to maximize speed at the cost of increased disk and memory usage. [default: true]
            B:useDiffsInTransformerCache=true
        }

    }

    mods {

        fc_optimize_texture_upload {
            # Removes the call to GL11#getInteger in FastCraft's texture upload handler during texture stitching and uses a cached value instead. Fixes the slowness of texture stitching that happens when OptiFine and FastCraft are both present, and mipmapping is enabled. [default: true]
            S:_enabled=true
        }

        of_optimize_world_renderer {
            # Replaces the reflection OptiFine uses to access Forge methods in WorldRenderer#updateRenderer with direct calls to those methods. Small speedup during chunk updates. [default: true]
            S:_enabled=true
        }

    }

}


tweaks {

    clamp_far_plane_distance {
        # If enabled, the distance of the view fustrum's far plane will be clamped above `minFarPlaneDistance`. Setting it to 180 or higher fixes clipping in OptiFine's custom skybox that happens when using lower render distances. [default: true]
        S:_enabled=true

        # See `clampFarPlaneDistance`. [range: 0.0 ~ 3.4028235E38, default: 180.0]
        S:minFarPlaneDistance=180.0
    }

    crash_handler {
        # Lets you survive crashes without the game exiting, usually.
        # Compatibility note: Not compatible BetterCrashes and CrashGuard, which do the same thing (this feature will be disabled). [default: true]
        S:_enabled=true
    }

    disable_fog {
        # Disables fog. Simple as. [default: false]
        S:_enabled=false
    }

    extend_sprint_time_limit {
        # In vanilla, the player can't sprint for longer than 30 seconds. This tweak increases this limit to be virtually infinite. Fixes MC-4839, fixed in 1.9 [default: true]
        S:_enabled=true
    }

    force_uncap_framerate {
        # EXPERIMENTAL: Uncaps framerate even when framelimiter is enabled. The framerate limit will only be used to decide how much time to spend updating chunks each frame. Vanilla Beta 1.7.3 behavior. It seems to make things worse though, at least with OptiFine. [default: false]
        S:_enabled=false
    }

    light_fix_stare {
        # Causes lighting updates around the block the player is looking at. A workaround for lighting errors that lets you fix them by staring at them. Useful in the Nether. [default: true]
        S:_enabled=true
    }

    main_menu_continue_button {
        # Add a button to the main menu that loads the last played world. (Button ID: -2026964516) [default: false]
        S:_enabled=false
    }

    tweak_cloud_height_check {
        # If enabled, the condition used to decide whether to render opaque or transparent clouds will be set based on the value of `cloudHeightCheckMode`.
        # Compatibility note: Not compatible with NotFine, which has a setting to control the same thing (this feature will be disabled). [default: true]
        S:_enabled=true

        # Lets you tweak the condition used to decide whether to render opaque or transparent clouds.
        # * VARIABLE_CORRECTED: Keep vanilla behavior of rendering clouds as opaque when the player is below them and transparent otherwise, but with the turning point corrected to match the cloud height even when the world provider has a different cloud height than 128. Also provides a fix for OptiFine's bug where clouds disappear when the player is between Y=128 and the cloud height level when they are raised.
        # * ALWAYS_TRANSPARENT: Always render clouds as transparent (how it is in b1.7.3 and 1.15+)
        # * ALWAYS_OPAQUE: Always render clouds as opaque [default: VARIABLE_CORRECTED]
        S:cloudHeightCheckMode=VARIABLE_CORRECTED
    }

    uncap_create_world_gui_text_field_length {
        # Uncap max length for world name and world seed in the world creation GUI. (By default, it's capped at 32.) [default: false]
        S:_enabled=true
    }

    mods {

        of_fix_update_renderers_return_value {
            # Fixes OptiFine's implementation of updateRenderers returning the opposite value of what it should (probably a bug). Only effective when framerate limiter is enabled. Speeds up chunk updates significantly, and increases framerate when there aren't many chunk updates. However, during heavy chunk updating (e.g. when loading a world) it decreases the framerate as a side effect of not being as lazy. [default: false]
            S:_enabled=true
        }

        of_unlock_custom_sky_min_render_distance {
            # Allows custom sky rendering in OptiFine D6 when using a render distance lower than 8. [default: true]
            S:_enabled=true
        }

    }

}


