# Version of the specs, only for internal usage if this format should ever change drastically
_specver: 2

# modpack related settings, changes the supposed to change the visual appearance of the launcher
modpack:
    # Name of the mod pack, that is displayed in various places where it fits
    name: Enigmatica 10

    # Description
    description: Play with new mods and old favorites in Enigmatica 10 for Minecraft 1.21!

# settings regarding the installation of the modpack
install:
    # version of minecraft, needs the exact version
    mcVersion: 1.21.1

    # exact version of forge or fabric that is supposed to be used
    # if this value is a null value so ( ~, null, or "" ) then the version from the mod pack is going to be used
    loaderVersion: 21.1.218

    # If a custom installer is supposed to used, specify the url here: (Otherwise put "", ~ or null here)
    # supports variables: {{@loaderversion@}} and {{@mcversion@}}
    # For forge: "http://files.minecraftforge.net/maven/net/minecraftforge/forge/{{@mcversion@}}-{{@loaderversion@}}/forge-{{@mcversion@}}-{{@loaderversion@}}-installer.jar"
    # For Fabric: "https://maven.fabricmc.net/net/fabricmc/fabric-installer/{{@loaderversion@}}/fabric-installer-{{@loaderversion@}}.jar"
    # For NeoForge: "https://maven.neoforged.net/releases/net/neoforged/neoforge/{{@loaderversion@}}/neoforge-{{@loaderversion@}}-installer.jar"
    installerUrl: 'https://maven.neoforged.net/releases/net/neoforged/neoforge/{{@loaderversion@}}/neoforge-{{@loaderversion@}}-installer.jar'

    # Installer Arguments
    # These Arguments have to be passed to the installer
    #
    # For Fabric:
    # installerArguments:
    #   - "server"
    #   - "-downloadMinecraft"
    #
    # For Fabric if you want to use snapshot version:
    # installerArguments:
    #   - "server"
    #   - "-mcversion 20w07a"
    #   - "-downloadMinecraft"
    #
    # For Forge:
    # installerArguments:
    #   - "--installServer"
    installerArguments:
        - '--installServer'

    # Link to where the file where the modpack can be distributed
    # This supports loading from local files as well for most pack types if there is file://{PathToFile} in the beginning
    modpackUrl: https://edge.forgecdn.net/files/7496/661/Enigmatica10-1.28.0.zip

    # This is used to specify in which format the modpack is distributed, the server launcher has to handle each individually if their format differs
    # current supported formats:
    # - curseforge or curse
    # - curseid
    # - zip or zipfile
    modpackFormat: curse

    # Settings which are specific to the format used, might not be needed in some casese
    formatSpecific:
        # optional paramenter used for curse to specify a whole project to ignore (mostly if it is client side only)
        ignoreProject:
            - 231275 # Ding
            - 391382 # More Overlays Updated
            - 238372 # Neat
            - 271740 # Toast Control
            - 358191 # PackMenu
            - 513857 # OAuth
            - 521714 # PonderJS
            - 360673 # Custom Window Title
            - 401648 # BetterF3
            - 363363 # Extreme Sound Muffler
            - 901997 # No More World Settings
            - 908741 # Embeddium
            - 1049891 # ClientSort https://www.curseforge.com/minecraft/mc-mods/clientsort
            - 585406 # ProbeJS https://www.curseforge.com/minecraft/mc-mods/probejs
            - 986380 # Lighty https://www.curseforge.com/minecraft/mc-mods/lighty
            - 394468 # Sodium https://www.curseforge.com/minecraft/mc-mods/sodium
            - 455508 # Iris https://www.curseforge.com/minecraft/mc-mods/irisshaders
            - 1133580 # Smithing Template Viewer https://www.curseforge.com/minecraft/mc-mods/smithing-template-viewer

    # The base path where the server should be installed to, ~ for current path
    baseInstallPath: ~

    # a list of files which are supposed to be ignored when installing it from the client files
    # this can either use regex or glob {default glob: https://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html#getPathMatcher-java.lang.String-}
    # specify with regex:.... or glob:.... if you want to force a matching type
    ignoreFiles:
        - resources/**
        - packmenu/**
        - kubejs/assets/**
        - kubejs/client_scripts/**
        - building_gadgets_patterns/**
        - config/*-client.toml
        - defaultconfigs/*-client.toml
        - local/**

    # often a server needs more files, which are nearly useless on the client, such as tickprofiler
    # This is a list of files, each ' - ' is a new file:
    # url is the directlink to the file, destination is the path to where the file should be copied to
    additionalFiles:
        ~
        #- url: https://edge.forgecdn.net/files/2844/278/restrictedportals-1.15-1.0.jar
        #  destination: mods/restrictedportals-1.15-1.0.jar
        #- url: https://edge.forgecdn.net/files/2874/966/Morpheus-1.15.2-4.2.46.jar
        #  destination: mods/Morpheus-1.15.2-4.2.46.jar
        #- url: https://edge.forgecdn.net/files/2876/89/spark-forge.jar
        #  destination: mods/spark-forge.jar

    # For often there are config which the user wants to change, here is the place to put the local path to configs, jars or whatever
    # You can copy files or folders
    localFiles:
        #- from: setup/modpack-download.zip
        #  to: setup/test/modpack-download-copied.zip
        #- from: setup/AOF 2/.minecraft
        #  to: setup/.

    # This makes the program check the folder for whether it is supposed to use the
    checkFolder: true

    # Whether to install the Loader (Forge or Fabric) or not, should always be true/true unless you only want to install the pack
    installLoader: true

    # Sponge bootstrapper jar URL
    # Only needed if you have spongefix enabled
    spongeBootstrapper: https://github.com/simon816/SpongeBootstrap/releases/download/v0.7.1/SpongeBootstrap-0.7.1.jar

    # Time in seconds before the connection attempt to any webservice like forge/curseforge times out
    # Only increase this timer if you have problems
    connectTimeout: 30

    # Time in seconds before the read attempt to any webservice like forge/curseforge times out
    # Only increase this timer if you have problems
    readTimeout: 30

# settings regarding the launching of the pack
launch:
    # applies the launch wrapper to fix sponge for a few mods
    spongefix: false

    # Use a RAMDisk for the world folder
    # case-sensitive; use only lowercase `true` or `false`
    # NOTE: The server must have run once fully before switching to `true`!
    ramDisk: false

    # checks with the help of a few unrelated server whether the server is online
    checkOffline: false

    # specifies the max amount of ram the server is supposed to launch with
    maxRam: 5G

    # specifies the min amount of ram the server is supposed to launch with
    minRam: 2G

    # specifies whether the server is supposed to auto restart after crash
    autoRestart: true

    # after a given amount of crashes in a given time the server will stop auto restarting
    crashLimit: 10

    # Time a crash should be still accounted for in the {crashLimit}
    # syntax is either [number]h or [number]min or [number]s
    crashTimer: 60min

    # Arguments that need to go before the 'java' argument, something like linux niceness
    # This is only a string, not a list.
    preJavaArgs: ~

    # Start File Name, variables: {{@loaderversion@}} and {{@mcversion@}}
    # This has to be the name the installer spits out
    # For Forge 1.12-: "forge-{{@mcversion@}}-{{@loaderversion@}}-universal.jar"
    # For Forge 1.13+: "forge-{{@mcversion@}}-{{@loaderversion@}}.jar"
    # For Fabric: "fabric-server-launch.jar"
    startFile: 'forge-{{@mcversion@}}-{{@loaderversion@}}.jar'

    # This is the command how the server is supposed to be started
    # For <1.16 it should be
    #  - "-jar"
    #  - "{{@startFile@}}"
    #  - "nogui"
    # For >=1.17 it should be
    # - "@libraries/net/minecraftforge/forge/{{@mcversion@}}-{{@loaderversion@}}/{{@os@}}_args.txt"
    # - "nogui"
    startCommand:
        - '@libraries/net/neoforged/neoforge/{{@loaderversion@}}/{{@os@}}_args.txt'
        - 'nogui'

    # In case you have multiple javas installed you can add a absolute path to it here
    # if the value is "", null, or ~ then 'java' from PATH is going to be used
    # Example: "\"C:/Program Files/Java/jre1.8.0_201/bin/java.exe\""
    forcedJavaPath: ~

    # Java args that are supposed to be used when the server launches
    # keep in mind java args often need ' - ' in front of it to work, use clarifying parentheses to make sure it uses it correctly
    # reference: https://aikar.co/2018/07/02/tuning-the-jvm-g1gc-garbage-collector-flags-for-minecraft/
    # tested on Java 8 and 11
    javaArgs:
        - '-XX:+UseG1GC'
        - '-XX:+ParallelRefProcEnabled'
        - '-XX:MaxGCPauseMillis=200'
        - '-XX:+UnlockExperimentalVMOptions'
        - '-XX:+DisableExplicitGC'
        - '-XX:+AlwaysPreTouch'
        - '-XX:G1NewSizePercent=30'
        - '-XX:G1MaxNewSizePercent=40'
        - '-XX:G1HeapRegionSize=8M'
        - '-XX:G1ReservePercent=20'
        - '-XX:G1HeapWastePercent=5'
        - '-XX:G1MixedGCCountTarget=4'
        - '-XX:InitiatingHeapOccupancyPercent=15'
        - '-XX:G1MixedGCLiveThresholdPercent=90'
        - '-XX:G1RSetUpdatingPauseTimePercent=5'
        - '-XX:SurvivorRatio=32'
        - '-XX:+PerfDisableSharedMem'
        - '-XX:MaxTenuringThreshold=1'
        - '-Dusing.aikars.flags=https://mcflags.emc.gs'
        - '-Daikars.new.flags=true'
        - '-Dfml.readTimeout=180' # servertimeout
        - '-Dfml.queryResult=confirm' # auto /fmlconfirm
